From 9ff574ac0b7a7f51334a428ba01a996d6f9ec1ce Mon Sep 17 00:00:00 2001 From: phenom Date: Wed, 16 Sep 2026 14:30:58 -0400 Subject: [PATCH] Release Healer Man 0.1.46 --- DEPLOYMENT.md | 30 + PLAYTEST_NOTES.md | 76 + README.md | 10 + docs/BALANCE_LAB.md | 346 + docs/DUNGEON_REPORT_TRIAGE.md | 41 + .../DUNGEON_ROUTE_GENERATION_AUDIT.json | 3230 +++ .../WOW_BOSS_PRESSURE_REPORT.json | 21498 ++++++++++++++++ dungeon-pipeline/WOW_BOSS_PRESSURE_REPORT.md | 42 + package-lock.json | 4 +- package.json | 6 +- release-version.json | 4 +- scripts/balance-lab/runtime.ts | 635 + scripts/balance_lab.py | 1291 + .../audit-boss-party-pressure.ts | 79 + .../generate-dungeon-route-candidates.mjs | 426 + scripts/playtest-balance-lab.cjs | 129 + scripts/playtest-boss-testing.cjs | 22 +- scripts/playtest-dungeon-simulation.cjs | 99 + scripts/playtest-mouse-camera.cjs | 148 + scripts/test_balance_lab.py | 122 + server/balance-lab-jobs.mjs | 416 + server/balance-lab-jobs.test.mjs | 250 + server/database.mjs | 2 + server/database.test.mjs | 101 +- server/dungeon-simulation.mjs | 331 + server/server.mjs | 107 +- server/server.test.mjs | 21 + src/App.tsx | 2 + src/GameRuntime.tsx | 22 +- src/app/ShelvedModeRoutes.tsx | 2 - src/app/balanceLabClient.ts | 192 + src/app/dungeonSimulationClient.ts | 87 + src/app/dungeonSimulationRuntime.ts | 71 + src/app/releaseFeatures.test.ts | 16 +- src/app/releaseFeatures.ts | 9 +- src/app/shellStore.ts | 4 +- src/game/CombatBridge.tsx | 106 +- src/game/DungeonEncounterEffectBridge.tsx | 5 +- src/game/PartyBridge.tsx | 25 +- src/game/benchmark/balanceLabBuilds.test.ts | 69 + src/game/benchmark/benchmarkBuilds.ts | 206 + src/game/bossPressure.test.ts | 32 + src/game/bossPressure.ts | 151 + src/game/bossTesting.test.ts | 4 +- src/game/bossTesting.ts | 8 + src/game/combatStore.ts | 15 +- src/game/dungeonRouteRuntime.ts | 143 + src/game/dungeonRouteStore.ts | 35 + src/game/dungeonRoutes.ts | 108 + src/game/dungeonSession.ts | 10 +- src/game/dungeonSimulationStore.test.ts | 70 + src/game/dungeonSimulationStore.ts | 274 + src/game/dungeonSimulationTypes.ts | 172 + .../dungeonRouteCatalog.generated.json | 1 + src/game/inputManager.test.ts | 39 +- src/game/inputManager.ts | 40 +- src/game/partyRuntime.ts | 51 +- src/game/partyStore.ts | 86 +- .../wowWrathEncounterBatchTwoCatalog.test.ts | 26 + src/game/wowWrathEncounterBatchTwoCatalog.ts | 75 +- src/scene/DungeonSimulationSceneBridge.tsx | 458 + src/scene/DungeonSpectatorCamera.tsx | 86 + src/scene/GameScene.tsx | 17 +- src/scene/MobPopulation.tsx | 75 +- src/scene/PartyPopulation.tsx | 138 +- src/scene/WailingNaralexEvent.tsx | 3 +- src/styles.css | 252 + src/ui/BalanceLabResults.tsx | 263 + src/ui/BalanceLabScreen.tsx | 296 + src/ui/BossTestingReviewPanel.tsx | 32 +- src/ui/DungeonSimulationAdminScreen.tsx | 249 + src/ui/DungeonSimulationHud.tsx | 112 + src/ui/MainMenuScreen.tsx | 57 +- 73 files changed, 33486 insertions(+), 174 deletions(-) create mode 100644 docs/BALANCE_LAB.md create mode 100644 dungeon-pipeline/DUNGEON_ROUTE_GENERATION_AUDIT.json create mode 100644 dungeon-pipeline/WOW_BOSS_PRESSURE_REPORT.json create mode 100644 dungeon-pipeline/WOW_BOSS_PRESSURE_REPORT.md create mode 100644 scripts/balance-lab/runtime.ts create mode 100644 scripts/balance_lab.py create mode 100644 scripts/dungeon-pipeline/audit-boss-party-pressure.ts create mode 100644 scripts/dungeon-pipeline/generate-dungeon-route-candidates.mjs create mode 100644 scripts/playtest-balance-lab.cjs create mode 100644 scripts/playtest-dungeon-simulation.cjs create mode 100644 scripts/playtest-mouse-camera.cjs create mode 100644 scripts/test_balance_lab.py create mode 100644 server/balance-lab-jobs.mjs create mode 100644 server/balance-lab-jobs.test.mjs create mode 100644 server/dungeon-simulation.mjs create mode 100644 src/app/balanceLabClient.ts create mode 100644 src/app/dungeonSimulationClient.ts create mode 100644 src/app/dungeonSimulationRuntime.ts create mode 100644 src/game/benchmark/balanceLabBuilds.test.ts create mode 100644 src/game/bossPressure.test.ts create mode 100644 src/game/bossPressure.ts create mode 100644 src/game/dungeonRouteRuntime.ts create mode 100644 src/game/dungeonRouteStore.ts create mode 100644 src/game/dungeonRoutes.ts create mode 100644 src/game/dungeonSimulationStore.test.ts create mode 100644 src/game/dungeonSimulationStore.ts create mode 100644 src/game/dungeonSimulationTypes.ts create mode 100644 src/game/generated/dungeonRouteCatalog.generated.json create mode 100644 src/scene/DungeonSimulationSceneBridge.tsx create mode 100644 src/scene/DungeonSpectatorCamera.tsx create mode 100644 src/ui/BalanceLabResults.tsx create mode 100644 src/ui/BalanceLabScreen.tsx create mode 100644 src/ui/DungeonSimulationAdminScreen.tsx create mode 100644 src/ui/DungeonSimulationHud.tsx diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md index ff2bb3a1..9b146eef 100644 --- a/DEPLOYMENT.md +++ b/DEPLOYMENT.md @@ -162,6 +162,36 @@ new or changed content objects, builds the compact required-content browser bundle, and starts the combined static/API/content server. Existing content objects are reused. +### Optional GM Balance Lab server dependency + +To run Balance Lab simulations on TrueNAS instead of the local workstation, +the server container needs Python 3 in addition to the existing Node +development dependencies. Replace the service command with: + +```yaml +command: >- + sh -lc "apt-get update && apt-get install -y --no-install-recommends python3 && rm -rf /var/lib/apt/lists/* && npm ci --include=dev && npm run db:init && npm run content:publish && npm run build && npm start" +``` + +Add or change these environment values: + +```yaml +BALANCE_LAB_PYTHON: "python3" +BALANCE_LAB_MAX_CONCURRENT: "1" +BALANCE_LAB_MAX_QUEUED: "8" +``` + +The app stores job reports in +`/app/runtime-data/balance-lab/jobs//`, so the existing persistent +runtime-data mount also preserves generated reports and the GM app's run +history across container/server restarts. Each directory includes `job.json` +metadata used to rebuild the newest 100 history entries; do not exclude those +files when migrating the runtime-data dataset. An interrupted queued/running +job returns as failed after restart, while any job with a complete +`suite-report.json` returns as complete. Keep concurrency at one +unless the server has enough spare CPU for multiple full combat sweeps. All +Balance Lab routes independently require a server-authorized GM account. + After startup, test on the LAN: ```sh diff --git a/PLAYTEST_NOTES.md b/PLAYTEST_NOTES.md index 915831dd..9f5f6a47 100644 --- a/PLAYTEST_NOTES.md +++ b/PLAYTEST_NOTES.md @@ -3436,3 +3436,79 @@ Vite's existing large-chunk advisory remains informational. `playtest-artifacts/boss-spell-effects-black-stalker/results.json` and `03-empty-room.png`. Headless automation verified audio node selection and fallback behavior but did not perform a subjective loudspeaker/listening test. + +## Boss Testing random follow-up (2026-09-16) + +- The Boss Testing review shown after victory now includes **Fight another + random boss**. It excludes the boss just completed, preserves the active party + role, downloads missing content through the existing verified pack flow, and + enters the new testing room directly. Review controls remain disabled while + the next boss is being prepared. +- All 15 focused Boss Testing, preparation, review, and display-snapshot tests + passed. The production build, asset audits, and release-bundle validation + passed. +- Production Edge defeated Lady Anacondra, displayed the new victory action, + selected Varos Cloudstrider, and entered his active testing room without + returning to the menu. No browser runtime errors occurred. Evidence is in + `playtest-artifacts/boss-testing/06-victory-review.png`, + `06b-another-random-boss.png`, and `results.json`. + +## Eck the Ferocious visibility and healer pressure (2026-09-16) + +- Eck's Oracle GLB used a bind-pose-derived `groundOffset` of `11.859`, which + lifted the animated body out of the gameplay camera while the encounter ring + remained visible. The Gundrak adapter now keeps the original model but uses a + reviewed zero ground offset and a seven-unit nameplate height. +- Eck no longer repeats Spring Init and Berserk as 135% damage attacks. The + runtime now follows `boss_eck.cpp`: Bite opens at 5 seconds and repeats every + 8–12 seconds, Spit opens in 10–37 seconds and repeats every 8–12 seconds, + Spring targets one random party member every 10–24 seconds, and Berserk is a + one-time non-damaging aura at 90 seconds. The original spell IDs remain bound + so release/impact visual and sound presentation plus mechanic indicators are + preserved; Spring also retains a target-circle warning. +- The reusable `npm run dungeon:boss-pressure:audit` command compares all WoW + bosses at level 80 over 60 seconds and writes the complete ranking plus + per-attack contribution to `dungeon-pipeline/WOW_BOSS_PRESSURE_REPORT.json` + and a top-30 summary to the adjacent Markdown report. +- Production Edge rendered Eck, his nameplate, health bar, mechanic timers, and + target marker with no browser errors. Evidence is in + `playtest-artifacts/eck-final-visual/03-empty-room.png` and `results.json`. + +## Balance Lab run history and analytics (2026-09-16) + +- Server Balance Lab jobs now write private `job.json` metadata, restore the + newest 100 runs after a restart, import completed pre-history reports, and + mark interrupted work failed instead of losing it from the GM screen. +- The selected completed run now has five in-app graphs for boss-to-party + pressure, party-to-boss damage, kill time, class/spec boss damage, and + class/spec damage taken. Boss, class/spec, and party tabs retain every row and + add source, role, search, metric, and direction filtering plus wipe, defeat, + death, healing, absorb, and tuning-outlier context. +- Seven focused server job tests passed, including restart recovery, legacy + import, and interrupted-run behavior; the combined Balance Lab/server set + passed nine tests. The 8 GB TypeScript check and production Vite build passed. +- Production Edge automation submitted a real Eck simulation through the GM + UI, opened the generated JSON in the dashboard, exercised all tables and + filters, and verified the 480×900 layout with no browser errors. Evidence is + under `playtest-artifacts/balance-lab/`, especially + `04-run-analytics.png` and `05-mobile-analytics.png`. + +## Balance Lab class/spec ability breakdown (2026-09-16) + +- Each simulated member now exports the full learned, level-appropriate, + executable ability list in addition to observed combat events. Suite reports + aggregate every class/spec ability with active-run coverage, usage rate, + casts, hits, casts/minute, raw/effective damage, DPS, damage share, damage per + hit, healing, overheal, absorbs, AI categories, and cooldowns. Learned + abilities that produce no events remain visible as `available · unused`. +- The GM dashboard adds an **Abilities** tab with class/spec, source, role, + usage-state, free-text, metric, and direction filters; an unused-damage view; + a damage-contribution graph; a complete horizontally scrollable table; and a + downloadable `class_abilities_across_parties.csv` artifact. +- Six Python aggregation tests, nine server tests, the 8 GB TypeScript check, + and the production Vite build passed. Production Edge automation completed a + real Eck run, verified 11 downloadable suite artifacts, exercised the unused + ability filter, and passed desktop plus 480×900 overflow checks with no + browser errors. Evidence is in + `playtest-artifacts/balance-lab/04b-ability-breakdown.png` and + `playtest-artifacts/balance-lab/06-mobile-abilities.png`. diff --git a/README.md b/README.md index 0d20ee2c..8d6a7af5 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,16 @@ npm test npm run build ``` +Boss and party balance simulations, including exact, random, and automatic +multi-party WoW, CoA, and RoM sweeps with complete per-boss/member/ability reports, are documented in +[`docs/BALANCE_LAB.md`](docs/BALANCE_LAB.md). Start the guided tool with +`npm run balance:lab`, or use the server-powered **Balance Lab** beneath GM +Tools. The GM screen keeps previous runs across server restarts and provides +filterable in-app boss, class/spec, party, pressure, damage, and kill-time +graphs/tables. The Abilities tab retains every learned/available ability, +including zero-use rows, so missing rotations can be compared with casts, hits, +damage share, healing, and absorbs. + Manastorms, Arenas/PvP, and their GM tools are shelved in normal browser and Android builds. Their source and saved data remain intact. Use `npm run dev:shelved` or `npm run build:shelved` for maintenance builds, and diff --git a/docs/BALANCE_LAB.md b/docs/BALANCE_LAB.md new file mode 100644 index 00000000..f6135e9f --- /dev/null +++ b/docs/BALANCE_LAB.md @@ -0,0 +1,346 @@ +# Boss and party balance lab + +`scripts/balance_lab.py` runs a chosen World of Warcraft, Conquest of Azeroth, +or Runes of Magic five-player party against the authored boss catalog. It is an +interactive Python controller and report generator, not a second combat model. +The actual fights execute through `scripts/balance-lab/runtime.ts`, which imports +the game's live TypeScript combat store, party AI, abilities, talents, gear, +threat, mitigation, healing, boss scaling, and enemy attacks. + +This split is intentional. Balance formulas stay in the game runtime. Python +owns selection, repeatable run configuration, aggregation, CSV/Markdown/HTML +output, and outlier flags. Do not copy combat coefficients into the Python +script. + +## Quick start + +Install the normal project dependencies, then start the guided prompt: + +```powershell +npm run balance:lab +``` + +The prompt selects: + +1. one random party, five manual members, or an automatic multi-party sweep; +2. a WoW, CoA, or RoM party catalog; automatic mode can select all three; +3. a level from 1 through 80; +4. how many unique 1-tank/1-healer/3-damage configurations to generate per source; +5. all bosses, WoW bosses, RoM bosses, or a searchable multi-boss selection; +6. how many deterministic simulations to run for every party/boss pairing; and +7. the maximum duration of each fight. + +The active member is driven by the shared benchmark policy while the other four +use the live companion AI. The healer is the default active member. Use +`--active-slot` to change it. + +## GM app and server execution + +A server-authorized GM sees **Balance Lab** directly underneath **GM Tools** on +the main menu. That screen exposes the automatic sweep controls: party source, +level, unique parties per source, simulations per party/boss, duration, random +seed, boss category, and a searchable multi-boss picker. + +**Run on server** sends only that allow-listed configuration to the authenticated +GM API. The server places it in a one-at-a-time queue, launches the same Python +controller and live TypeScript runtime used by the command line, and writes +artifacts under: + +```text +DATA_DIR/balance-lab/jobs// +``` + +The browser polls lightweight status records; it does not execute combat ticks. +Closing the browser does not stop a running server job. Completed jobs and their +metadata remain in **Run history** across server restarts, with the newest run +selected automatically. The history shows the most recent 100 jobs and can be +searched or filtered by status. A job that was still queued or running when the +server stopped is restored as failed (it cannot safely resume a half-finished +deterministic sweep) and can be rerun. + +Each job directory contains a private `job.json` status record alongside its +report artifacts. On startup, `server/balance-lab-jobs.mjs` rebuilds history from +those records and treats a directory containing `suite-report.json` as complete. +Completed server-job directories from the pre-history implementation are +imported from `suite-report.json` plus `suite-config.json`, then receive a new +`job.json`; their requester is shown as `unknown (legacy run)` because that was +not previously recorded. +Do not add `job.json` to the artifact allow-list: it is server state, not a GM +download. The standalone `npm run balance:lab` path remains the way to spend the +local development device's CPU. + +## In-app analysis and previous runs + +Select any completed entry in **Run history**, then choose **View graphs and +filterable data**. The app reads that run's `suite-report.json` through the +authenticated artifact endpoint and caches it for the current screen session. +The dashboard includes: + +- boss damage to the whole party (incoming DTPS); +- party damage applied directly to each boss; +- average successful kill time; +- boss DPS and damage taken for every class/specialization; +- complete boss tables with pressure versus median, total incoming damage, + defeat/wipe rates, deaths, and health; +- complete class/spec tables with total and boss DPS, HPS, DTPS, absolute + damage taken, damage/healing/absorb totals, deaths, and source/role-median + tuning flags; and +- a complete Abilities tab with learned/available abilities (including zero-use + rows), exact runtime IDs, AI categories, active-run coverage, casts, hits, + casts per minute, effective/raw damage, DPS, damage share, damage per hit, + healing, overheal, absorbs, and cooldown; and +- complete party-composition tables with output, incoming pressure, outcomes, + and deaths. + +The overview graphs intentionally show at most the 15 highest visible values so +labels remain readable. They never discard report data: the Bosses, Class/spec, +and Parties tabs retain every matching row. Search, party-source, boss-source, +role, metric, and sort-direction controls filter the display without modifying +the saved report. + +Server requirements: + +- the normal checkout and development dependencies must be present because the + combat bridge uses `vite-node`; +- Python 3 must be installed, or `BALANCE_LAB_PYTHON` must name its executable; + and +- the signed-in account must have the server-issued `gm` role. + +`BALANCE_LAB_MAX_CONCURRENT` defaults to `1` and is capped at four. +`BALANCE_LAB_MAX_QUEUED` defaults to eight and is capped at 50. Raising +concurrency permits parallel server processes but can make both the game server +and simulations less responsive. Requests are capped before launch, subprocess +arguments are passed as an array without a shell, artifact names are +allow-listed, and every job and artifact endpoint authenticates the account's +server-issued GM role. + +## Repeatable command-line runs + +List exact party build IDs at a level: + +```powershell +python scripts/balance_lab.py --source wow --level 60 --list-members +``` + +List boss keys: + +```powershell +python scripts/balance_lab.py --source wow --level 60 --list-bosses +``` + +Run a random party against every authored boss: + +```powershell +python scripts/balance_lab.py --source coa --level 60 --party-mode random --party-seed 42 --seeds 1,2,3 --boss-category all +``` + +Generate 25 unique WoW parties and run five simulations per party against all +bosses: + +```powershell +python scripts/balance_lab.py ` + --source wow ` + --level 60 ` + --party-mode automatic ` + --party-configurations 25 ` + --simulations-per-party 5 ` + --boss-category all +``` + +Generate ten parties for each of WoW, CoA, and RoM, but test only RoM bosses: + +```powershell +python scripts/balance_lab.py ` + --source all ` + --level 60 ` + --party-mode automatic ` + --party-configurations 10 ` + --simulations-per-party 3 ` + --boss-category rom +``` + +Automatically test a selected group of bosses: + +```powershell +python scripts/balance_lab.py ` + --source coa ` + --party-mode automatic ` + --party-configurations 20 ` + --simulations-per-party 5 ` + --boss "gundrak/entry-29932" ` + --boss "utgarde-keep/entry-23954" +``` + +Run an exact party against Eck only: + +```powershell +python scripts/balance_lab.py ` + --source wow ` + --level 40 ` + --party-mode manual ` + --member "warrior:Protection" ` + --member "priest:Holy" ` + --member "mage:Fire" ` + --member "rogue:Combat" ` + --member "hunter:Marksmanship" ` + --active-slot 2 ` + --boss "gundrak/entry-29932" ` + --seeds 1,2,3 ` + --duration 60 +``` + +Manual selectors accept an exact generated build ID or a unique +`class-id:specialization`/`class-name:specialization` value. Repeat `--boss` to +run any selected subset. Omit it to run every boss in the selected boss +category. `--seeds 4,8,15` is an advanced exact-seed override for +`--simulations-per-party`. + +## Output + +Each run creates `artifacts/balance-lab//` unless `--output-dir` is +provided. + +| File | Contents | +| --- | --- | +| `report.html` | Searchable and sortable tables containing every selected member and every boss. | +| `report.md` | Human-readable complete party and boss tables. | +| `report.json` | Aggregated machine-readable report. | +| `raw-runs.json` | Lossless per-seed, per-boss, per-member, and per-ability runtime results. | +| `bosses.csv` | One aggregate row for every boss, ordered by party damage taken per second. | +| `party_members.csv` | One aggregate row for every selected party member. | +| `member_by_boss.csv` | Every party member against every boss. | +| `member_abilities.csv` | Every observed player/companion ability for every run. | +| `boss_abilities.csv` | Every observed boss ability for every run. | +| `runs.csv` | One row per boss and deterministic seed. | +| `config.json` | Exact rerunnable selection. | +| `catalog.json` | Party and boss choices shown to the controller. | + +No report is truncated to a top-N list. + +Automatic mode creates a complete report directory for every generated party +under `parties//` and adds these suite-level files: + +| File | Contents | +| --- | --- | +| `suite-report.html` | Searchable/sortable tables for every tested class/spec, party configuration, and boss. | +| `suite-report.md` / `suite-report.json` | Complete human- and machine-readable suite summaries. | +| `party_configurations.csv` | Every generated party, its full composition, party DPS, DTPS, deaths, and outcomes. | +| `class_specs_across_parties.csv` | Every class/spec observed across every configuration, compared with its source/role median. | +| `class_abilities_across_parties.csv` | Every learned/available and observed class/spec ability, including unused rows, usage frequency, damage contribution, healing, and absorbs. | +| `class_spec_by_boss.csv` | Every observed class/spec broken down against every boss it fought. | +| `bosses_across_parties.csv` | Every boss aggregated across all generated parties. | +| `boss_by_party.csv` | Every boss and party-configuration pairing. | +| `suite_runs.csv` | Every individual seed run with its party configuration ID. | +| `suite-config.json` | The exact automatic-generation seed, counts, filters, and generated party build IDs. | + +## Metrics and interpretation + +- Boss `incomingDtps` is effective damage received by all five members divided + by active fight time. Damage from summoned hostile actors is included. +- `averageIncomingDamage` is total healer workload and therefore includes fight + length. Read it beside DTPS, wipe rate, deaths, and time to defeat. +- Member `dps` includes damage to the boss and adds. `bossDps` includes only + direct boss damage. Suite class/spec `dtps` is damage taken per active second; + `totalDamageTaken` is the absolute healer/survivability burden across every + included run. +- Ability `activeRuns` counts simulations with at least one cast, hit, damage, + healing, overheal, or absorb event. `usageRate` divides that by every run for + that build; `damageShare` divides the ability's effective damage by the + class/spec's total effective damage. `available · unused` means the ability + was learned and executable at the tested level/talent setup but emitted no + combat event. This is a review signal, not proof of an AI defect: resurrection, + execute, interrupt, dispel, emergency, and long-cooldown abilities can be + legitimately unused when their condition never occurs. +- Companion AI currently applies several instant attacks directly and therefore + may emit hits/damage without a separate cast event. Use **Active runs** and + **Hits** as the authoritative usage indicators; use **Casts** and **Casts/min** + as additional detail, especially for the active-player benchmark controller. +- Boss pressure flags in a party report compare DTPS with the non-zero median + boss for that exact party. Suite boss flags compare across all generated + parties. Suite class/spec flags compare DPS with every observed spec from the + same source and role. `high` begins at 1.25 times the median and `very + high` at 1.5; `low` begins at 0.75 and `very low` at 0.5. +- Flags are triage signals, not automatic tuning decisions. A boss can have high + DTPS but low total damage because it dies quickly. A member can have low boss + DPS because it spends time healing, tanking, or damaging adds. + +The isolated boss room deliberately removes campaign-final health promotion so +all bosses use the same testing-room durability rule at the chosen level. +Runtime IDs include the simulation seed, which deterministically varies the +game's stable target and cooldown rolls. + +## Coverage and limitations + +The selectable roster includes every authored WoW and CoA specialization plus +every supported RoM class-role pair. Existing generated party talent plans are +used when available. Missing WoW plans are legally allocated through their +matching live talent tree; CoA builds allocate the chosen specialization tree +and class tree through the live essence/prerequisite rules. + +Headless simulation executes combat-store boss attacks and their authored +damage, healing, control, aura, summon, threat, and timing effects. It does not +mount the Three.js scene, play visuals or sounds, or run scene-owned world +objects. Encounter rules that require movement through the original dungeon, +clicking an object, or a renderer-owned trigger require a live Boss Testing +playtest in addition to this numeric audit. + +One selected member must occupy the active player slot because the production +runtime distinguishes the player from four companions. The report marks that +member. When a suspected class outlier could be policy-sensitive, rerun with a +different `--active-slot`; do not compare active and companion results without +noting that control-policy difference. + +## Code map + +- `scripts/balance_lab.py`: prompts, command-line parsing, random/manual/automatic + party selection, searchable boss selection, process orchestration, aggregates, + flags, and all party/suite report formats. +- `scripts/balance-lab/runtime.ts`: live headless fight setup, controlled clock, + exact party construction, boss execution, and lossless event attribution. +- `src/ui/BalanceLabScreen.tsx`: GM form, searchable boss selection, persistent + run-history selection, progress display, report loading, and authenticated + artifact opening/downloading. +- `src/ui/BalanceLabResults.tsx`: in-app graphs, report filters, sorting, summary + cards, and complete boss/class-spec/party tables. Add new dashboard metrics + here only after they exist in `suite-report.json`. +- `src/app/balanceLabClient.ts`: typed GM Balance Lab API client. +- `server/balance-lab-jobs.mjs`: validated job specifications, bounded + one-at-a-time process queue, progress parsing, `job.json` persistence/startup + restoration, report-summary extraction, and artifact allow-list. +- `server/server.mjs`: GM-authenticated job/status/artifact HTTP routes. +- `src/game/benchmark/benchmarkBuilds.ts`: selectable spec builds and legal + talent allocation. The older canonical cohort remains unchanged. +- `src/game/partyStore.ts`: `createConfiguredPartyMember`, the narrow factory + that preserves production stats, equipment, resources, and appearance for an + exact companion. +- `src/game/bossTesting.ts`: the authoritative all-boss catalog and isolated + room construction. + +When extending the tool, add fields to `raw-runs.json` first, aggregate them in +Python second, and document the metric here. Keep formula ownership in `src/game` +and keep reports complete rather than introducing top-N filtering. + +## Validation + +For tool changes, run at minimum: + +```powershell +python -m py_compile scripts/balance_lab.py +python -m unittest scripts.test_balance_lab +node --test server/balance-lab-jobs.test.mjs server/server.test.mjs +python scripts/balance_lab.py --source wow --level 20 --party-mode automatic --party-configurations 2 --boss "gundrak/entry-29932" --simulations-per-party 1 --duration 5 --output-dir artifacts/balance-lab-smoke +npm test -- --run src/game/benchmark src/game/partyStore.test.ts src/game/partyRuntime.test.ts +npm run build +npm run balance:lab:playtest +npm run release:check +``` + +The Playwright smoke test uses an isolated temporary database, logs in as a GM, +checks that Balance Lab is below GM Tools, runs one real Eck server simulation, + verifies all eleven suite artifacts, exercises the overview and ability graphs + plus every complete table, checks history, role, class/spec, and unused-ability + filtering, and captures desktop/mobile screenshots +under `playtest-artifacts/balance-lab/`. The server unit tests separately restart +the job service and prove that completed history is restored while interrupted +work is marked failed. Use a longer all-boss run before making production tuning +changes. diff --git a/docs/DUNGEON_REPORT_TRIAGE.md b/docs/DUNGEON_REPORT_TRIAGE.md index 39693503..667dc8fa 100644 --- a/docs/DUNGEON_REPORT_TRIAGE.md +++ b/docs/DUNGEON_REPORT_TRIAGE.md @@ -78,6 +78,47 @@ searches: npm run dungeon:boss-effects:audit ``` +For reports that one boss is unusually hard to heal, regenerate the normalized +party-pressure ranking instead of comparing native dungeon levels or relying on +memory: + +```powershell +npm run dungeon:boss-pressure:audit +``` + +This writes `dungeon-pipeline/WOW_BOSS_PRESSURE_REPORT.md` for a quick top-30 +view and `dungeon-pipeline/WOW_BOSS_PRESSURE_REPORT.json` for the complete +per-boss, per-attack breakdown. The default comparison holds every boss at +player level 80 for 60 seconds with five party members inside party-wide +effects. It intentionally reports an unmitigated direct-damage ceiling, so use +it to find bad cooldowns, duplicate spells, wrong targets, or accidental damage +effects. It does not claim exact combat-log DPS: armor, resistance, movement, +interrupts, summons, debuff amplification, and phase uptime are excluded. + +When a boss is an outlier, inspect its source script before tuning numbers. In +particular, distinguish setup/trigger spells and one-shot enrage auras from +repeatable damaging attacks, and preserve the source `initialCooldownMs`, +`repeatCooldownMs`, `maximumCasts`, and target selection. Re-run the audit after +the fix and record both the boss rank and its per-attack rows. + +### Imported animated boss is invisible + +If the encounter marker, health bar, or effects render but the creature body +does not, inspect the shipped GLB before replacing the model: + +```powershell +.\node_modules\.bin\gltf-transform.cmd inspect public/assets/game/dungeons//creatures/.glb +``` + +Compare the scene bounds with the entity's `visual.model.groundOffset`, +`labelHeight`, and `markerRadius`. Skinned bind-pose bounds can include vertices +far below the animated root. The packaging formula normally uses `-bounds.minY` +as the floor offset; for those assets that can lift the posed creature entirely +out of the gameplay camera. Add the narrowest source-reviewed runtime metadata +override in the dungeon content adapter, keep the original model URL, and add a +regression assertion for the corrected offset. Prove the result with a rendered +Boss Testing screenshot—the GLB existing on disk is not visual evidence. + The compiler reads effect, aura, target, duration, radius, and summon-creature fields from `Spell.dbc`, with `SpellDuration.dbc` and `SpellRadius.dbc` from the sibling support DBC directory. `spellSemantic()` maps source-backed controls, diff --git a/dungeon-pipeline/DUNGEON_ROUTE_GENERATION_AUDIT.json b/dungeon-pipeline/DUNGEON_ROUTE_GENERATION_AUDIT.json new file mode 100644 index 00000000..57da4aeb --- /dev/null +++ b/dungeon-pipeline/DUNGEON_ROUTE_GENERATION_AUDIT.json @@ -0,0 +1,3230 @@ +{ + "schemaVersion": 1, + "generatedAt": "2026-05-08T10:36:36-07:00", + "playerbots": { + "repository": "azerothcore/mod-playerbots", + "commit": "531282e4beb0a5abea6332479f8720518a89b1a2", + "attribution": "AzerothCore PlayerBots travel data was consulted offline as landmark and connectivity evidence; no source code, node IDs, raw node positions, or dense path rows are shipped." + }, + "policy": { + "anchors": "HealerMan entrance and required objective positions", + "geometry": "HealerMan Recast navigation GLBs", + "maximumCheckpointSegment": 7.5 + }, + "routes": [ + { + "dungeonId": "shadowfang-keep", + "mapId": 33, + "navigationTriangles": 545171, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-16242", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.796, + "navigationEndSnapDistance": 1.698, + "checkpointCount": 125, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-16254", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.698, + "navigationEndSnapDistance": 1.131, + "checkpointCount": 155, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-16256", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.131, + "navigationEndSnapDistance": 2.147, + "checkpointCount": 131, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-16257", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.147, + "navigationEndSnapDistance": 0.234, + "checkpointCount": 17, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-18714", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.234, + "navigationEndSnapDistance": 0.95, + "checkpointCount": 16, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-16237", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.95, + "navigationEndSnapDistance": 2.088, + "checkpointCount": 6, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-16255", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.088, + "navigationEndSnapDistance": 1.503, + "checkpointCount": 61, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "stormwind-stockade", + "mapId": 34, + "navigationTriangles": 3538, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-84027", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.071, + "navigationEndSnapDistance": 3.281, + "checkpointCount": 67, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-79088", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.281, + "navigationEndSnapDistance": 2.072, + "checkpointCount": 11, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-79098", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.072, + "navigationEndSnapDistance": 4.332, + "checkpointCount": 47, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-79124", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 4.332, + "navigationEndSnapDistance": 0.402, + "checkpointCount": 19, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-79116", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.402, + "navigationEndSnapDistance": 1.516, + "checkpointCount": 39, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + } + ] + }, + { + "dungeonId": "deadmines", + "mapId": 36, + "navigationTriangles": 103978, + "valid": true, + "disposition": "candidate", + "legs": [ + { + "objectiveId": "creature-79168", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.055, + "navigationEndSnapDistance": 0.685, + "checkpointCount": 169, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-79223", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.685, + "navigationEndSnapDistance": 1.357, + "checkpointCount": 130, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-79206", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.357, + "navigationEndSnapDistance": 2.261, + "checkpointCount": 199, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-79337", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.261, + "navigationEndSnapDistance": 0.595, + "checkpointCount": 209, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-79344", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.595, + "navigationEndSnapDistance": 2.47, + "checkpointCount": 90, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-79333", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.47, + "navigationEndSnapDistance": 0.886, + "checkpointCount": 137, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-79336", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.886, + "navigationEndSnapDistance": 1.077, + "checkpointCount": 12, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "wailing-caverns", + "mapId": 43, + "navigationTriangles": 45732, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-27366", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.412, + "navigationEndSnapDistance": 1.331, + "checkpointCount": 206, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-27380", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.331, + "navigationEndSnapDistance": 3.429, + "checkpointCount": 545, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-27368", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.429, + "navigationEndSnapDistance": 1.396, + "checkpointCount": 397, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-87107", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.396, + "navigationEndSnapDistance": 1.481, + "checkpointCount": 602, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-87131", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.481, + "navigationEndSnapDistance": 1.947, + "checkpointCount": 220, + "valid": true, + "issues": [] + }, + { + "objectiveId": "encounter-43005", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.947, + "navigationEndSnapDistance": 12.289, + "checkpointCount": 741, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-33974", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": false, + "navigationStartSnapDistance": 12.289, + "navigationEndSnapDistance": 4.619, + "checkpointCount": 33, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "mutanus-spawn", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": false, + "navigationStartSnapDistance": 4.619, + "navigationEndSnapDistance": 1.838, + "checkpointCount": 44, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + } + ] + }, + { + "dungeonId": "razorfen-kraul", + "mapId": 47, + "navigationTriangles": 70120, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-87346", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.337, + "navigationEndSnapDistance": 0.706, + "checkpointCount": 254, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-87357", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.706, + "navigationEndSnapDistance": 0.589, + "checkpointCount": 484, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-87400", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.589, + "navigationEndSnapDistance": 0.875, + "checkpointCount": 166, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-87386", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.875, + "navigationEndSnapDistance": 1.525, + "checkpointCount": 155, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-87487", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.525, + "navigationEndSnapDistance": 1.038, + "checkpointCount": 31, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-87486", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.038, + "navigationEndSnapDistance": 1.555, + "checkpointCount": 32, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-1975863", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.555, + "navigationEndSnapDistance": 1.449, + "checkpointCount": 332, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "blackfathom-deeps", + "mapId": 48, + "navigationTriangles": 30083, + "valid": true, + "disposition": "candidate", + "legs": [ + { + "objectiveId": "creature-25732", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.603, + "navigationEndSnapDistance": 3.186, + "checkpointCount": 281, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-26129", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": false, + "navigationStartSnapDistance": 3.186, + "navigationEndSnapDistance": 0.687, + "checkpointCount": 133, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-18743", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": false, + "navigationStartSnapDistance": 0.687, + "navigationEndSnapDistance": 0.81, + "checkpointCount": 463, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-26173", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.81, + "navigationEndSnapDistance": 1.356, + "checkpointCount": 161, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-27424", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.356, + "navigationEndSnapDistance": 2.545, + "checkpointCount": 232, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-27433", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.545, + "navigationEndSnapDistance": 4.784, + "checkpointCount": 148, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "uldaman", + "mapId": 70, + "navigationTriangles": 15618, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-27532", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.341, + "navigationEndSnapDistance": 3.024, + "checkpointCount": 17, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-54080", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.024, + "navigationEndSnapDistance": 2.712, + "checkpointCount": 21, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-27553", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.712, + "navigationEndSnapDistance": 1.761, + "checkpointCount": 303, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-27491", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.761, + "navigationEndSnapDistance": 1.841, + "checkpointCount": 302, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-27528", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.841, + "navigationEndSnapDistance": 0.662, + "checkpointCount": 12, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-33537", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.662, + "navigationEndSnapDistance": 0.101, + "checkpointCount": 27, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-29650", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.101, + "navigationEndSnapDistance": 1.886, + "checkpointCount": 40, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + } + ] + }, + { + "dungeonId": "gnomeregan", + "mapId": 90, + "navigationTriangles": 20294, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-30137", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.069, + "navigationEndSnapDistance": 3.147, + "checkpointCount": 312, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-30133", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.147, + "navigationEndSnapDistance": 8.109, + "checkpointCount": 64, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-30121", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 8.109, + "navigationEndSnapDistance": 7.171, + "checkpointCount": 50, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-30139", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 7.171, + "navigationEndSnapDistance": 2.233, + "checkpointCount": 393, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "sunken-temple", + "mapId": 109, + "navigationTriangles": 11583, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-34521", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.057, + "navigationEndSnapDistance": 10.53, + "checkpointCount": 25, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-39737", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 10.53, + "navigationEndSnapDistance": 1.992, + "checkpointCount": 32, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "encounter-492", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.992, + "navigationEndSnapDistance": 0.753, + "checkpointCount": 23, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-39842", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.753, + "navigationEndSnapDistance": 4.381, + "checkpointCount": 22, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + } + ] + }, + { + "dungeonId": "razorfen-downs", + "mapId": 129, + "navigationTriangles": 65826, + "valid": true, + "disposition": "candidate", + "legs": [ + { + "objectiveId": "encounter-434", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.372, + "navigationEndSnapDistance": 0.58, + "checkpointCount": 107, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-87187", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.58, + "navigationEndSnapDistance": 0.315, + "checkpointCount": 248, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-87242", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.315, + "navigationEndSnapDistance": 1.006, + "checkpointCount": 256, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-87209", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.006, + "navigationEndSnapDistance": 1.053, + "checkpointCount": 409, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-247108", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.053, + "navigationEndSnapDistance": 0.112, + "checkpointCount": 287, + "valid": true, + "issues": [] + }, + { + "objectiveId": "encounter-2618", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.112, + "navigationEndSnapDistance": 2.23, + "checkpointCount": 395, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "scarlet-monastery", + "mapId": 189, + "navigationTriangles": 25804, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-39934", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.71, + "navigationEndSnapDistance": 0.743, + "checkpointCount": 53, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-40088", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": false, + "navigationStartSnapDistance": 0.743, + "navigationEndSnapDistance": 0.335, + "checkpointCount": 320, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-40124", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.335, + "navigationEndSnapDistance": 4.604, + "checkpointCount": 261, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-89097", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": false, + "navigationStartSnapDistance": 4.604, + "navigationEndSnapDistance": 3.555, + "checkpointCount": 244, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-39946", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": false, + "navigationStartSnapDistance": 3.555, + "navigationEndSnapDistance": 0.848, + "checkpointCount": 266, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + } + ] + }, + { + "dungeonId": "zulfarrak", + "mapId": 209, + "navigationTriangles": 657069, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-81570", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.05, + "navigationEndSnapDistance": 2.39, + "checkpointCount": 447, + "valid": true, + "issues": [] + }, + { + "objectiveId": "encounter-594", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.39, + "navigationEndSnapDistance": 1.003, + "checkpointCount": 211, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-81519", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.003, + "navigationEndSnapDistance": 0.086, + "checkpointCount": 232, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-81524", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.086, + "navigationEndSnapDistance": 2.991, + "checkpointCount": 50, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-37996", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.991, + "navigationEndSnapDistance": 0.392, + "checkpointCount": 27, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + } + ] + }, + { + "dungeonId": "blackrock-spire", + "mapId": 229, + "navigationTriangles": 33545, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-45808", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.092, + "navigationEndSnapDistance": 1.171, + "checkpointCount": 30, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-44422", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.171, + "navigationEndSnapDistance": 1.472, + "checkpointCount": 13, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-43519", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.472, + "navigationEndSnapDistance": 3.156, + "checkpointCount": 11, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-43523", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.156, + "navigationEndSnapDistance": 0.901, + "checkpointCount": 14, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-43522", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.901, + "navigationEndSnapDistance": 1.201, + "checkpointCount": 133, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-45840", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.201, + "navigationEndSnapDistance": 1.577, + "checkpointCount": 120, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-44342", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.577, + "navigationEndSnapDistance": 0.977, + "checkpointCount": 274, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-45749", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.977, + "navigationEndSnapDistance": 5.649, + "checkpointCount": 20, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-40245", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 5.649, + "navigationEndSnapDistance": 0.912, + "checkpointCount": 97, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-45757", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.912, + "navigationEndSnapDistance": 1.326, + "checkpointCount": 32, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-137817", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.326, + "navigationEndSnapDistance": 0.36, + "checkpointCount": 39, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "encounter-277", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.36, + "navigationEndSnapDistance": 0.838, + "checkpointCount": 45, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-137968", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.838, + "navigationEndSnapDistance": 2.811, + "checkpointCount": 31, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-137969", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.811, + "navigationEndSnapDistance": 2.1, + "checkpointCount": 149, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-137971", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.1, + "navigationEndSnapDistance": 2.347, + "checkpointCount": 145, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "blackrock-depths", + "mapId": 230, + "navigationTriangles": 46606, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-47250", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.473, + "navigationEndSnapDistance": 2.246, + "checkpointCount": 139, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-47304", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.246, + "navigationEndSnapDistance": 0.665, + "checkpointCount": 203, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-46284", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.665, + "navigationEndSnapDistance": 3.017, + "checkpointCount": 61, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-47771", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.017, + "navigationEndSnapDistance": 0.968, + "checkpointCount": 329, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-47733", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.968, + "navigationEndSnapDistance": 3.66, + "checkpointCount": 279, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-47774", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.66, + "navigationEndSnapDistance": 2.158, + "checkpointCount": 158, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-47631", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.158, + "navigationEndSnapDistance": 3.709, + "checkpointCount": 125, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-45885", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.709, + "navigationEndSnapDistance": 1.122, + "checkpointCount": 237, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-45954", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.122, + "navigationEndSnapDistance": 7.082, + "checkpointCount": 24, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-45931", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 7.082, + "navigationEndSnapDistance": 5.903, + "checkpointCount": 100, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-47778", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 5.903, + "navigationEndSnapDistance": 2.014, + "checkpointCount": 236, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-47477", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.014, + "navigationEndSnapDistance": 6.196, + "checkpointCount": 338, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-47613", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 6.196, + "navigationEndSnapDistance": 1.758, + "checkpointCount": 104, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "scholomance", + "mapId": 289, + "navigationTriangles": 6886, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-48807", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.805, + "navigationEndSnapDistance": 2.532, + "checkpointCount": 14, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-48910", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.532, + "navigationEndSnapDistance": 1.189, + "checkpointCount": 23, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-48867", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.189, + "navigationEndSnapDistance": 1.807, + "checkpointCount": 25, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-48925", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.807, + "navigationEndSnapDistance": 1.069, + "checkpointCount": 19, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-48946", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.069, + "navigationEndSnapDistance": 1.646, + "checkpointCount": 19, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-48863", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.646, + "navigationEndSnapDistance": 1.681, + "checkpointCount": 19, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-48857", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.681, + "navigationEndSnapDistance": 1.463, + "checkpointCount": 111, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-48850", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.463, + "navigationEndSnapDistance": 3.68, + "checkpointCount": 238, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "stratholme", + "mapId": 329, + "navigationTriangles": 53098, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-247226", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.05, + "navigationEndSnapDistance": 0.552, + "checkpointCount": 126, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-54433", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.552, + "navigationEndSnapDistance": 3.768, + "checkpointCount": 67, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-52122", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.768, + "navigationEndSnapDistance": 0.676, + "checkpointCount": 135, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-52148", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.676, + "navigationEndSnapDistance": 0.515, + "checkpointCount": 132, + "valid": true, + "issues": [] + }, + { + "objectiveId": "encounter-478", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.515, + "navigationEndSnapDistance": 0.533, + "checkpointCount": 41, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-54238", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.533, + "navigationEndSnapDistance": 0.894, + "checkpointCount": 63, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-54239", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.894, + "navigationEndSnapDistance": 1.357, + "checkpointCount": 26, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-54240", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.357, + "navigationEndSnapDistance": 0.886, + "checkpointCount": 31, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-54237", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.886, + "navigationEndSnapDistance": 0.381, + "checkpointCount": 51, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + } + ] + }, + { + "dungeonId": "maraudon", + "mapId": 349, + "navigationTriangles": 34479, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-54445", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.584, + "navigationEndSnapDistance": 3.046, + "checkpointCount": 377, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-54474", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.046, + "navigationEndSnapDistance": 5.067, + "checkpointCount": 178, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-54579", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 5.067, + "navigationEndSnapDistance": 7.138, + "checkpointCount": 43, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-55104", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 7.138, + "navigationEndSnapDistance": 1.531, + "checkpointCount": 41, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-89018", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.531, + "navigationEndSnapDistance": 8.727, + "checkpointCount": 737, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-56538", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 8.727, + "navigationEndSnapDistance": 1.224, + "checkpointCount": 388, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-55342", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.224, + "navigationEndSnapDistance": 3.748, + "checkpointCount": 486, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-203506", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.748, + "navigationEndSnapDistance": 2.692, + "checkpointCount": 1087, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "ragefire-chasm", + "mapId": 389, + "navigationTriangles": 18137, + "valid": true, + "disposition": "candidate", + "legs": [ + { + "objectiveId": "creature-48644", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.415, + "navigationEndSnapDistance": 0.841, + "checkpointCount": 309, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-48706", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.841, + "navigationEndSnapDistance": 1.01, + "checkpointCount": 395, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-48740", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.01, + "navigationEndSnapDistance": 3.35, + "checkpointCount": 89, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-48750", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.35, + "navigationEndSnapDistance": 6.092, + "checkpointCount": 124, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "dire-maul", + "mapId": 429, + "navigationTriangles": 48905, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "encounter-156", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.988, + "navigationEndSnapDistance": 4.139, + "checkpointCount": 115, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-248429", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 4.139, + "navigationEndSnapDistance": 10.554, + "checkpointCount": 29, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-248418", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 10.554, + "navigationEndSnapDistance": 2.716, + "checkpointCount": 7, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-248299", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.716, + "navigationEndSnapDistance": 10.368, + "checkpointCount": 12, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-248034", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": false, + "navigationStartSnapDistance": 10.368, + "navigationEndSnapDistance": 10.758, + "checkpointCount": 132, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-248025", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 10.758, + "navigationEndSnapDistance": 1.556, + "checkpointCount": 163, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-248037", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.556, + "navigationEndSnapDistance": 6.94, + "checkpointCount": 34, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-248077", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": false, + "navigationStartSnapDistance": 6.94, + "navigationEndSnapDistance": 6.933, + "checkpointCount": 126, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-248079", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": false, + "navigationStartSnapDistance": 6.933, + "navigationEndSnapDistance": 0.297, + "checkpointCount": 140, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-248080", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.297, + "navigationEndSnapDistance": 3.018, + "checkpointCount": 153, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-248081", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.018, + "navigationEndSnapDistance": 3.317, + "checkpointCount": 202, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-248076", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.317, + "navigationEndSnapDistance": 14.76, + "checkpointCount": 64, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "shattered-halls", + "mapId": 540, + "navigationTriangles": 15319, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-151089", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.612, + "navigationEndSnapDistance": 3.005, + "checkpointCount": 51, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-151179", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.005, + "navigationEndSnapDistance": 12.331, + "checkpointCount": 44, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-151195", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 12.331, + "navigationEndSnapDistance": 5.237, + "checkpointCount": 28, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + } + ] + }, + { + "dungeonId": "blood-furnace", + "mapId": 542, + "navigationTriangles": 28809, + "valid": true, + "disposition": "candidate", + "legs": [ + { + "objectiveId": "creature-138123", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": false, + "navigationStartSnapDistance": 1.134, + "navigationEndSnapDistance": 4.286, + "checkpointCount": 267, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-138115", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": false, + "navigationStartSnapDistance": 4.286, + "navigationEndSnapDistance": 13.136, + "checkpointCount": 131, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-138524", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 13.136, + "navigationEndSnapDistance": 5.633, + "checkpointCount": 157, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "hellfire-ramparts", + "mapId": 543, + "navigationTriangles": 10840, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-202692", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.534, + "navigationEndSnapDistance": 4.757, + "checkpointCount": 28, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-202694", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 4.757, + "navigationEndSnapDistance": 2.285, + "checkpointCount": 220, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "steamvault", + "mapId": 545, + "navigationTriangles": 20491, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-142044", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.749, + "navigationEndSnapDistance": 4.065, + "checkpointCount": 47, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-142043", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 4.065, + "navigationEndSnapDistance": 2.21, + "checkpointCount": 292, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-142045", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": false, + "navigationStartSnapDistance": 2.21, + "navigationEndSnapDistance": 6.292, + "checkpointCount": 67, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + } + ] + }, + { + "dungeonId": "underbog", + "mapId": 546, + "navigationTriangles": 30573, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-138367", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.68, + "navigationEndSnapDistance": 1.255, + "checkpointCount": 242, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-138392", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.255, + "navigationEndSnapDistance": 18.355, + "checkpointCount": 178, + "valid": false, + "issues": [ + "endpoint-snap-distance-exceeded" + ] + }, + { + "objectiveId": "creature-138500", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": false, + "navigationStartSnapDistance": 18.355, + "navigationEndSnapDistance": 2.202, + "checkpointCount": 44, + "valid": false, + "issues": [ + "disconnected-navigation-leg", + "origin-snap-distance-exceeded" + ] + }, + { + "objectiveId": "creature-138323", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.202, + "navigationEndSnapDistance": 2.571, + "checkpointCount": 137, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "slave-pens", + "mapId": 547, + "navigationTriangles": 22696, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-79362", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": false, + "navigationStartSnapDistance": 0.49, + "navigationEndSnapDistance": 2.46, + "checkpointCount": 365, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-79339", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.46, + "navigationEndSnapDistance": 3.981, + "checkpointCount": 12, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-80260", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.981, + "navigationEndSnapDistance": 2.341, + "checkpointCount": 280, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "arcatraz", + "mapId": 552, + "navigationTriangles": 5937, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-138936", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 114.955, + "navigationEndSnapDistance": 105.144, + "checkpointCount": 159, + "valid": false, + "issues": [ + "origin-snap-distance-exceeded", + "endpoint-snap-distance-exceeded" + ] + }, + { + "objectiveId": "creature-138950", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 105.144, + "navigationEndSnapDistance": 137.761, + "checkpointCount": 140, + "valid": false, + "issues": [ + "origin-snap-distance-exceeded", + "endpoint-snap-distance-exceeded" + ] + }, + { + "objectiveId": "creature-138951", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 137.761, + "navigationEndSnapDistance": 137.78, + "checkpointCount": 28, + "valid": false, + "issues": [ + "origin-snap-distance-exceeded", + "endpoint-snap-distance-exceeded" + ] + }, + { + "objectiveId": "encounter-500", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 137.78, + "navigationEndSnapDistance": 170.228, + "checkpointCount": 242, + "valid": false, + "issues": [ + "origin-snap-distance-exceeded", + "endpoint-snap-distance-exceeded" + ] + } + ] + }, + { + "dungeonId": "botanica", + "mapId": 553, + "navigationTriangles": 23024, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-147001", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.17, + "navigationEndSnapDistance": 1.33, + "checkpointCount": 47, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-147000", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.33, + "navigationEndSnapDistance": 0.41, + "checkpointCount": 23, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-147003", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.41, + "navigationEndSnapDistance": 0.979, + "checkpointCount": 25, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-147004", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": false, + "navigationStartSnapDistance": 0.979, + "navigationEndSnapDistance": 4.461, + "checkpointCount": 40, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-147002", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": false, + "navigationStartSnapDistance": 4.461, + "navigationEndSnapDistance": 19.27, + "checkpointCount": 36, + "valid": false, + "issues": [ + "disconnected-navigation-leg", + "endpoint-snap-distance-exceeded" + ] + } + ] + }, + { + "dungeonId": "mechanar", + "mapId": 554, + "navigationTriangles": 10194, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-138822", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.248, + "navigationEndSnapDistance": 19.173, + "checkpointCount": 36, + "valid": false, + "issues": [ + "disconnected-navigation-leg", + "endpoint-snap-distance-exceeded" + ] + }, + { + "objectiveId": "creature-138824", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": false, + "navigationStartSnapDistance": 19.173, + "navigationEndSnapDistance": 1.452, + "checkpointCount": 16, + "valid": false, + "issues": [ + "disconnected-navigation-leg", + "origin-snap-distance-exceeded" + ] + }, + { + "objectiveId": "creature-138823", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": false, + "navigationStartSnapDistance": 1.452, + "navigationEndSnapDistance": 6.885, + "checkpointCount": 33, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + } + ] + }, + { + "dungeonId": "shadow-labyrinth", + "mapId": 555, + "navigationTriangles": 9231, + "valid": true, + "disposition": "candidate", + "legs": [ + { + "objectiveId": "creature-146105", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.131, + "navigationEndSnapDistance": 4.822, + "checkpointCount": 167, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-146103", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 4.822, + "navigationEndSnapDistance": 2.082, + "checkpointCount": 88, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-146106", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.082, + "navigationEndSnapDistance": 2.321, + "checkpointCount": 222, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-146104", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.321, + "navigationEndSnapDistance": 4.438, + "checkpointCount": 178, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "sethekk-halls", + "mapId": 556, + "navigationTriangles": 9052, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-138718", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.278, + "navigationEndSnapDistance": 2.279, + "checkpointCount": 168, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-138719", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.279, + "navigationEndSnapDistance": 7.509, + "checkpointCount": 32, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + } + ] + }, + { + "dungeonId": "mana-tombs", + "mapId": 557, + "navigationTriangles": 12947, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-91163", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.202, + "navigationEndSnapDistance": 1.296, + "checkpointCount": 103, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-91161", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.296, + "navigationEndSnapDistance": 0.234, + "checkpointCount": 167, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-91162", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.234, + "navigationEndSnapDistance": 2.081, + "checkpointCount": 37, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + } + ] + }, + { + "dungeonId": "auchenai-crypts", + "mapId": 558, + "navigationTriangles": 11974, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-83388", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.061, + "navigationEndSnapDistance": 4.406, + "checkpointCount": 24, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-83453", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 4.406, + "navigationEndSnapDistance": 1.53, + "checkpointCount": 214, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "magisters-terrace", + "mapId": 585, + "navigationTriangles": 14702, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-96875", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.717, + "navigationEndSnapDistance": 3.008, + "checkpointCount": 33, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-96876", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.008, + "navigationEndSnapDistance": 5.219, + "checkpointCount": 134, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-96762", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 5.219, + "navigationEndSnapDistance": 5.667, + "checkpointCount": 56, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + } + ] + }, + { + "dungeonId": "black-morass", + "mapId": 269, + "navigationTriangles": 122696, + "valid": true, + "disposition": "candidate", + "legs": [ + { + "objectiveId": "encounter-287", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.065, + "navigationEndSnapDistance": 2.109, + "checkpointCount": 117, + "valid": true, + "issues": [] + }, + { + "objectiveId": "encounter-289", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.109, + "navigationEndSnapDistance": 5.91, + "checkpointCount": 77, + "valid": true, + "issues": [] + }, + { + "objectiveId": "encounter-291", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 5.91, + "navigationEndSnapDistance": 2.002, + "checkpointCount": 79, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "escape-from-durnholde", + "mapId": 560, + "navigationTriangles": 967781, + "valid": true, + "disposition": "candidate", + "legs": [ + { + "objectiveId": "encounter-285", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.53, + "navigationEndSnapDistance": 1.318, + "checkpointCount": 314, + "valid": true, + "issues": [] + }, + { + "objectiveId": "encounter-283", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.318, + "navigationEndSnapDistance": 2.94, + "checkpointCount": 59, + "valid": true, + "issues": [] + }, + { + "objectiveId": "encounter-281", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.94, + "navigationEndSnapDistance": 1.868, + "checkpointCount": 202, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "utgarde-keep", + "mapId": 574, + "navigationTriangles": 434783, + "valid": true, + "disposition": "candidate", + "legs": [ + { + "objectiveId": "creature-126025", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.359, + "navigationEndSnapDistance": 4.242, + "checkpointCount": 273, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-126024", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 4.242, + "navigationEndSnapDistance": 3.405, + "checkpointCount": 322, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-126026", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.405, + "navigationEndSnapDistance": 4.534, + "checkpointCount": 312, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "utgarde-pinnacle", + "mapId": 575, + "navigationTriangles": 842326, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "encounter-577", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": false, + "navigationStartSnapDistance": 2, + "navigationEndSnapDistance": 2.772, + "checkpointCount": 24, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-126102", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.772, + "navigationEndSnapDistance": 3.63, + "checkpointCount": 24, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-126103", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.63, + "navigationEndSnapDistance": 0.992, + "checkpointCount": 41, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-126255", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.992, + "navigationEndSnapDistance": 5.257, + "checkpointCount": 32, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + } + ] + }, + { + "dungeonId": "the-nexus", + "mapId": 576, + "navigationTriangles": 15741, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-4764", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.561, + "navigationEndSnapDistance": 2.774, + "checkpointCount": 164, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-126480", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.774, + "navigationEndSnapDistance": 3, + "checkpointCount": 17, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-126599", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3, + "navigationEndSnapDistance": 8.343, + "checkpointCount": 55, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-126663", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 8.343, + "navigationEndSnapDistance": 3.257, + "checkpointCount": 298, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-126663", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.257, + "navigationEndSnapDistance": 3.257, + "checkpointCount": 1, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-126453", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.257, + "navigationEndSnapDistance": 1.86, + "checkpointCount": 246, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "the-oculus", + "mapId": 578, + "navigationTriangles": 249392, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-100172", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.28, + "navigationEndSnapDistance": 11.762, + "checkpointCount": 18, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-100235", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 11.762, + "navigationEndSnapDistance": 8.038, + "checkpointCount": 46, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-100220", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 8.038, + "navigationEndSnapDistance": 3.273, + "checkpointCount": 27, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-1971378", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.273, + "navigationEndSnapDistance": 53.823, + "checkpointCount": 27, + "valid": false, + "issues": [ + "disconnected-navigation-leg", + "endpoint-snap-distance-exceeded" + ] + } + ] + }, + { + "dungeonId": "culling-of-stratholme", + "mapId": 595, + "navigationTriangles": 406563, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "encounter-293", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.414, + "navigationEndSnapDistance": 1.516, + "checkpointCount": 113, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "encounter-294", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.516, + "navigationEndSnapDistance": 1.212, + "checkpointCount": 66, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "encounter-295", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.212, + "navigationEndSnapDistance": 0.484, + "checkpointCount": 35, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "encounter-296", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.484, + "navigationEndSnapDistance": 0.737, + "checkpointCount": 109, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "halls-of-stone", + "mapId": 599, + "navigationTriangles": 74793, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-126790", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 4.152, + "navigationEndSnapDistance": 3.584, + "checkpointCount": 22, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-126789", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.584, + "navigationEndSnapDistance": 17.468, + "checkpointCount": 29, + "valid": false, + "issues": [ + "disconnected-navigation-leg", + "endpoint-snap-distance-exceeded" + ] + }, + { + "objectiveId": "encounter-567", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 17.468, + "navigationEndSnapDistance": 2.298, + "checkpointCount": 28, + "valid": false, + "issues": [ + "disconnected-navigation-leg", + "origin-snap-distance-exceeded" + ] + }, + { + "objectiveId": "creature-126792", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.298, + "navigationEndSnapDistance": 8.567, + "checkpointCount": 54, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + } + ] + }, + { + "dungeonId": "draktharon-keep", + "mapId": 600, + "navigationTriangles": 364577, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-127422", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.023, + "navigationEndSnapDistance": 4.37, + "checkpointCount": 42, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-127424", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 4.37, + "navigationEndSnapDistance": 0.98, + "checkpointCount": 19, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-127507", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.98, + "navigationEndSnapDistance": 2.375, + "checkpointCount": 104, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-200143", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.375, + "navigationEndSnapDistance": 2.207, + "checkpointCount": 45, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + } + ] + }, + { + "dungeonId": "azjol-nerub", + "mapId": 601, + "navigationTriangles": 29405, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-127214", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.634, + "navigationEndSnapDistance": 3.086, + "checkpointCount": 111, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-127401", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.086, + "navigationEndSnapDistance": 23.384, + "checkpointCount": 21, + "valid": false, + "issues": [ + "disconnected-navigation-leg", + "endpoint-snap-distance-exceeded" + ] + }, + { + "objectiveId": "creature-132273", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": false, + "navigationStartSnapDistance": 23.384, + "navigationEndSnapDistance": 1.284, + "checkpointCount": 73, + "valid": false, + "issues": [ + "disconnected-navigation-leg", + "origin-snap-distance-exceeded" + ] + } + ] + }, + { + "dungeonId": "halls-of-lightning", + "mapId": 602, + "navigationTriangles": 292705, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-126981", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.225, + "navigationEndSnapDistance": 4.486, + "checkpointCount": 138, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-126982", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 4.486, + "navigationEndSnapDistance": 6.269, + "checkpointCount": 15, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-126873", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 6.269, + "navigationEndSnapDistance": 0.656, + "checkpointCount": 178, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-126985", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.656, + "navigationEndSnapDistance": 6.294, + "checkpointCount": 189, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "gundrak", + "mapId": 604, + "navigationTriangles": 24827, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-127042", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.755, + "navigationEndSnapDistance": 3.243, + "checkpointCount": 28, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "encounter-385", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.243, + "navigationEndSnapDistance": 4.811, + "checkpointCount": 6, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-127043", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 4.811, + "navigationEndSnapDistance": 4.391, + "checkpointCount": 24, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-127044", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 4.391, + "navigationEndSnapDistance": 1.748, + "checkpointCount": 23, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "encounter-389", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.748, + "navigationEndSnapDistance": 0.895, + "checkpointCount": 49, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + } + ] + }, + { + "dungeonId": "violet-hold", + "mapId": 608, + "navigationTriangles": 5795, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-102383", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.152, + "navigationEndSnapDistance": 1.779, + "checkpointCount": 14, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-102384", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.779, + "navigationEndSnapDistance": 4.646, + "checkpointCount": 89, + "valid": true, + "issues": [] + }, + { + "objectiveId": "encounter-545", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 4.646, + "navigationEndSnapDistance": 2.494, + "checkpointCount": 55, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "ahnkahet-old-kingdom", + "mapId": 619, + "navigationTriangles": 402335, + "valid": false, + "disposition": "rejected-needs-work", + "legs": [ + { + "objectiveId": "creature-131952", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 0.58, + "navigationEndSnapDistance": 1.473, + "checkpointCount": 55, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + }, + { + "objectiveId": "creature-131951", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.473, + "navigationEndSnapDistance": 30.754, + "checkpointCount": 24, + "valid": false, + "issues": [ + "disconnected-navigation-leg", + "endpoint-snap-distance-exceeded" + ] + }, + { + "objectiveId": "creature-131953", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 30.754, + "navigationEndSnapDistance": 16.092, + "checkpointCount": 29, + "valid": false, + "issues": [ + "disconnected-navigation-leg", + "origin-snap-distance-exceeded", + "endpoint-snap-distance-exceeded" + ] + }, + { + "objectiveId": "creature-132298", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 16.092, + "navigationEndSnapDistance": 2.999, + "checkpointCount": 43, + "valid": false, + "issues": [ + "disconnected-navigation-leg", + "origin-snap-distance-exceeded" + ] + }, + { + "objectiveId": "creature-202410", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.999, + "navigationEndSnapDistance": 1.414, + "checkpointCount": 66, + "valid": false, + "issues": [ + "disconnected-navigation-leg" + ] + } + ] + }, + { + "dungeonId": "forge-of-souls", + "mapId": 632, + "navigationTriangles": 26452, + "valid": true, + "disposition": "candidate", + "legs": [ + { + "objectiveId": "creature-201707", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.078, + "navigationEndSnapDistance": 7.245, + "checkpointCount": 377, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-201736", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 7.245, + "navigationEndSnapDistance": 6.475, + "checkpointCount": 214, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "trial-of-the-champion", + "mapId": 650, + "navigationTriangles": 128834, + "valid": true, + "disposition": "candidate", + "legs": [ + { + "objectiveId": "encounter-33400", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.505, + "navigationEndSnapDistance": 4.271, + "checkpointCount": 14, + "valid": true, + "issues": [] + }, + { + "objectiveId": "encounter-33401", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 4.271, + "navigationEndSnapDistance": 2.589, + "checkpointCount": 26, + "valid": true, + "issues": [] + }, + { + "objectiveId": "encounter-33402", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.589, + "navigationEndSnapDistance": 1.338, + "checkpointCount": 27, + "valid": true, + "issues": [] + }, + { + "objectiveId": "encounter-338", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.338, + "navigationEndSnapDistance": 4.973, + "checkpointCount": 3, + "valid": true, + "issues": [] + }, + { + "objectiveId": "encounter-340", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 4.973, + "navigationEndSnapDistance": 0.826, + "checkpointCount": 19, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "pit-of-saron", + "mapId": 658, + "navigationTriangles": 250921, + "valid": true, + "disposition": "candidate", + "legs": [ + { + "objectiveId": "creature-201992", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.096, + "navigationEndSnapDistance": 2.01, + "checkpointCount": 234, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-202042", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 2.01, + "navigationEndSnapDistance": 3.454, + "checkpointCount": 152, + "valid": true, + "issues": [] + }, + { + "objectiveId": "encounter-837", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.454, + "navigationEndSnapDistance": 2.159, + "checkpointCount": 246, + "valid": true, + "issues": [] + } + ] + }, + { + "dungeonId": "halls-of-reflection", + "mapId": 668, + "navigationTriangles": 444731, + "valid": true, + "disposition": "candidate", + "legs": [ + { + "objectiveId": "creature-1971983", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 3.538, + "navigationEndSnapDistance": 1.015, + "checkpointCount": 58, + "valid": true, + "issues": [] + }, + { + "objectiveId": "creature-1971984", + "playerbotsLandmarksAvailable": true, + "playerbotsTopologyConnected": true, + "navigationStartSnapDistance": 1.015, + "navigationEndSnapDistance": 2.204, + "checkpointCount": 28, + "valid": true, + "issues": [] + } + ] + } + ] +} diff --git a/dungeon-pipeline/WOW_BOSS_PRESSURE_REPORT.json b/dungeon-pipeline/WOW_BOSS_PRESSURE_REPORT.json new file mode 100644 index 00000000..4919e5b1 --- /dev/null +++ b/dungeon-pipeline/WOW_BOSS_PRESSURE_REPORT.json @@ -0,0 +1,21498 @@ +{ + "schemaVersion": 1, + "generatedAt": "2026-09-16T14:26:06.076Z", + "assumptions": { + "playerLevel": 80, + "enemyLevelOffset": 2, + "durationSeconds": 60, + "partySize": 5, + "partyLayout": "all five actors inside nearby-party effects", + "metric": "unmitigated direct damage from the live boss attack catalog", + "excludes": [ + "armor and resistance", + "avoidable movement and interrupts", + "summoned creature damage", + "damage-amplifying debuffs", + "healing and absorbs", + "mutually exclusive phase uptime" + ] + }, + "bosses": 273, + "medianPartyDamagePerSecond": 1470.0084000000002, + "eck": { + "rank": 97, + "pressureVsMedian": 2.428412005712908, + "key": "gundrak/entry-29932", + "dungeonId": "gundrak", + "dungeonTitle": "Gundrak", + "boss": "Eck the Ferocious", + "serverEntry": 29932, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4233.6, + "partyDamage": 214187.16282352942, + "partyDamagePerSecond": 3569.7860470588234, + "tankDamage": 194015.304, + "randomTargetDamage": 20171.858823529412, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4233.6, + "partyDamage": 130289.04000000001 + }, + { + "id": "spell-55837", + "name": "Eck Spring Init", + "spellId": 55837, + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-55813", + "name": "Eck Bite", + "spellId": 55813, + "target": "primary", + "school": "physical", + "expectedCasts": 6.5, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 37149.840000000004 + }, + { + "id": "spell-55814", + "name": "Eck Spit", + "spellId": 55814, + "target": "primary", + "school": "nature", + "expectedCasts": 4.65, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 26576.424000000006 + }, + { + "id": "spell-55815", + "name": "Eck Spring", + "spellId": 55815, + "target": "random-party", + "school": "physical", + "expectedCasts": 3.5294117647058822, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 20171.858823529412 + }, + { + "id": "spell-55816", + "name": "Eck Berserk", + "spellId": 55816, + "target": "self", + "school": "physical", + "expectedCasts": 0, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + "entries": [ + { + "rank": 1, + "pressureVsMedian": 21.271220197549233, + "key": "ahnkahet-old-kingdom/entry-29311", + "dungeonId": "ahnkahet-old-kingdom", + "dungeonTitle": "Ahn'kahet: The Old Kingdom", + "boss": "Herald Volazj", + "serverEntry": 29311, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 5080.320000000001, + "partyDamage": 1876132.3421188223, + "partyDamagePerSecond": 31268.872368647037, + "tankDamage": 1545671.0956205695, + "randomTargetDamage": 0, + "groupwideDamage": 330461.2464982526, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 25.8125, + "targetsPerCast": 1, + "damagePerTarget": 5080.320000000001, + "partyDamage": 131135.76 + }, + { + "id": "spell-57496", + "name": "Insanity", + "spellId": 57496, + "target": "primary", + "school": "physical", + "expectedCasts": 15.865202196704942, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 108810.41043235149 + }, + { + "id": "spell-57941", + "name": "Mind Flay", + "spellId": 57941, + "target": "random-party", + "school": "shadow", + "expectedCasts": 15.865202196704942, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-57942", + "name": "Shadow Bolt Volley", + "spellId": 57942, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 15.865202196704942, + "targetsPerCast": 5, + "damagePerTarget": 4165.8624, + "partyDamage": 330461.2464982526 + }, + { + "id": "spell-57949", + "name": "Shiver", + "spellId": 57949, + "target": "primary", + "school": "shadow", + "expectedCasts": 15.865202196704942, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 108810.41043235149 + }, + { + "id": "spell-60291", + "name": "Volazj Whisper: Aggro", + "spellId": 60291, + "target": "primary", + "school": "physical", + "expectedCasts": 15.865202196704942, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 108810.41043235149 + }, + { + "id": "spell-60296", + "name": "Volazj Whisper: Death 01", + "spellId": 60296, + "target": "primary", + "school": "physical", + "expectedCasts": 15.865202196704942, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 108810.41043235149 + }, + { + "id": "spell-60297", + "name": "Volazj Whisper: Death 02", + "spellId": 60297, + "target": "primary", + "school": "physical", + "expectedCasts": 15.865202196704942, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 108810.41043235149 + }, + { + "id": "spell-60293", + "name": "Volazj Whisper: Slay 01", + "spellId": 60293, + "target": "primary", + "school": "physical", + "expectedCasts": 15.865202196704942, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 108810.41043235149 + }, + { + "id": "spell-60294", + "name": "Volazj Whisper: Slay 02", + "spellId": 60294, + "target": "primary", + "school": "physical", + "expectedCasts": 15.865202196704942, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 108810.41043235149 + }, + { + "id": "spell-60295", + "name": "Volazj Whisper: Slay 03", + "spellId": 60295, + "target": "primary", + "school": "physical", + "expectedCasts": 15.865202196704942, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 108810.41043235149 + }, + { + "id": "spell-57508", + "name": "Insanity", + "spellId": 57508, + "target": "primary", + "school": "shadow", + "expectedCasts": 15.865202196704942, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 108810.41043235149 + }, + { + "id": "spell-57509", + "name": "Insanity", + "spellId": 57509, + "target": "primary", + "school": "shadow", + "expectedCasts": 15.865202196704942, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 108810.41043235149 + }, + { + "id": "spell-57510", + "name": "Insanity", + "spellId": 57510, + "target": "primary", + "school": "shadow", + "expectedCasts": 15.865202196704942, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 108810.41043235149 + }, + { + "id": "spell-57511", + "name": "Insanity", + "spellId": 57511, + "target": "primary", + "school": "shadow", + "expectedCasts": 15.865202196704942, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 108810.41043235149 + }, + { + "id": "spell-57512", + "name": "Insanity", + "spellId": 57512, + "target": "primary", + "school": "shadow", + "expectedCasts": 15.865202196704942, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 108810.41043235149 + } + ] + }, + { + "rank": 2, + "pressureVsMedian": 18.370273833330778, + "key": "utgarde-keep/entry-23954", + "dungeonId": "utgarde-keep", + "dungeonTitle": "Utgarde Keep", + "boss": "Ingvar the Plunderer", + "serverEntry": 23954, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4233.6, + "partyDamage": 1620267.4107177868, + "partyDamagePerSecond": 27004.456845296445, + "tankDamage": 620325.9077549408, + "randomTargetDamage": 80451.78687747037, + "groupwideDamage": 919489.7160853755, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4233.6, + "partyDamage": 130289.04000000001 + }, + { + "id": "spell-42857", + "name": "Scourge Resurrection", + "spellId": 42857, + "target": "primary", + "school": "shadow", + "expectedCasts": 14.076416337285902, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 80451.78687747037 + }, + { + "id": "spell-42862", + "name": "Scourge Resurrection", + "spellId": 42862, + "target": "primary", + "school": "physical", + "expectedCasts": 15.8875, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 90802.782 + }, + { + "id": "spell-42704", + "name": "Scourge Resurrection", + "spellId": 42704, + "target": "primary", + "school": "physical", + "expectedCasts": 20.85, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 119165.25600000002 + }, + { + "id": "spell-42708", + "name": "Staggering Roar", + "spellId": 42708, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 14.076416337285902, + "targetsPerCast": 5, + "damagePerTarget": 3471.552, + "partyDamage": 244335.05644268775 + }, + { + "id": "spell-42729", + "name": "Dreadful Roar", + "spellId": 42729, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 14.076416337285902, + "targetsPerCast": 5, + "damagePerTarget": 3471.552, + "partyDamage": 244335.05644268775 + }, + { + "id": "spell-42724", + "name": "Cleave", + "spellId": 42724, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 24.82, + "targetsPerCast": 5, + "damagePerTarget": 3471.552, + "partyDamage": 430819.6032 + }, + { + "id": "spell-42730", + "name": "Woe Strike", + "spellId": 42730, + "target": "primary", + "school": "physical", + "expectedCasts": 14.076416337285902, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 80451.78687747037 + }, + { + "id": "spell-42669", + "name": "Smash", + "spellId": 42669, + "target": "primary", + "school": "physical", + "expectedCasts": 20.85, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 119165.25600000002 + }, + { + "id": "spell-42723", + "name": "Dark Smash", + "spellId": 42723, + "target": "random-party", + "school": "shadow", + "expectedCasts": 14.076416337285902, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 80451.78687747037 + }, + { + "id": "spell-48193", + "name": "Enrage", + "spellId": 48193, + "target": "self", + "school": "physical", + "expectedCasts": 6.955, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-42749", + "name": "Throw Axe", + "spellId": 42749, + "target": "self", + "school": "physical", + "expectedCasts": 14.076416337285902, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 3, + "pressureVsMedian": 16.919806428696184, + "key": "trial-of-the-champion/entry-35571", + "dungeonId": "trial-of-the-champion", + "dungeonTitle": "Trial of the Champion", + "boss": "Runok Wildmane", + "serverEntry": 35571, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4193.280000000001, + "partyDamage": 1492335.4545934435, + "partyDamagePerSecond": 24872.257576557393, + "tankDamage": 1405463.1889880472, + "randomTargetDamage": 86872.26560539631, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 32.34210526315789, + "targetsPerCast": 1, + "damagePerTarget": 4193.280000000001, + "partyDamage": 135619.50315789474 + }, + { + "id": "spell-64553", + "name": "[DND] Defend Aura (05 seconds)", + "spellId": 64553, + "target": "primary", + "school": "physical", + "expectedCasts": 15.345940737171766, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 86872.26560539631 + }, + { + "id": "spell-67865", + "name": "Trample", + "spellId": 67865, + "target": "primary", + "school": "physical", + "expectedCasts": 15.345940737171766, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 86872.26560539631 + }, + { + "id": "spell-67867", + "name": "Trampled", + "spellId": 67867, + "target": "random-party", + "school": "physical", + "expectedCasts": 15.345940737171766, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-63784", + "name": "Bladestorm", + "spellId": 63784, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 15.345940737171766, + "targetsPerCast": 5, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-63010", + "name": "Charge", + "spellId": 63010, + "target": "primary", + "school": "physical", + "expectedCasts": 15.345940737171766, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 86872.26560539631 + }, + { + "id": "spell-68504", + "name": "Shield-Breaker", + "spellId": 68504, + "target": "self", + "school": "physical", + "expectedCasts": 15.345940737171766, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-68505", + "name": "Thrust", + "spellId": 68505, + "target": "primary", + "school": "physical", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 140504.23296000005 + }, + { + "id": "spell-66042", + "name": "Fireball", + "spellId": 66042, + "target": "primary", + "school": "fire", + "expectedCasts": 15.345940737171766, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 86872.26560539631 + }, + { + "id": "spell-66044", + "name": "Blast Wave", + "spellId": 66044, + "target": "random-party", + "school": "fire", + "expectedCasts": 15.345940737171766, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 86872.26560539631 + }, + { + "id": "spell-66045", + "name": "Haste", + "spellId": 66045, + "target": "self", + "school": "arcane", + "expectedCasts": 15.345940737171766, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-66043", + "name": "Polymorph", + "spellId": 66043, + "target": "random-party", + "school": "arcane", + "expectedCasts": 15.345940737171766, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-67529", + "name": "Chain Lightning", + "spellId": 67529, + "target": "primary", + "school": "nature", + "expectedCasts": 15.345940737171766, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 86872.26560539631 + }, + { + "id": "spell-67530", + "name": "Earth Shield", + "spellId": 67530, + "target": "self", + "school": "nature", + "expectedCasts": 15.345940737171766, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-67528", + "name": "Healing Wave", + "spellId": 67528, + "target": "lowest-health-friendly", + "school": "nature", + "expectedCasts": 15.345940737171766, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-67534", + "name": "Hex of Mending", + "spellId": 67534, + "target": "random-party", + "school": "nature", + "expectedCasts": 15.345940737171766, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-66083", + "name": "Lightning Arrows", + "spellId": 66083, + "target": "primary", + "school": "nature", + "expectedCasts": 15.345940737171766, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 86872.26560539631 + }, + { + "id": "spell-65868", + "name": "Shoot", + "spellId": 65868, + "target": "primary", + "school": "physical", + "expectedCasts": 15.345940737171766, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 86872.26560539631 + }, + { + "id": "spell-66081", + "name": "Multi-Shot", + "spellId": 66081, + "target": "primary", + "school": "physical", + "expectedCasts": 15.345940737171766, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 86872.26560539631 + }, + { + "id": "spell-67709", + "name": "Eviscerate", + "spellId": 67709, + "target": "primary", + "school": "physical", + "expectedCasts": 15.345940737171766, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 86872.26560539631 + }, + { + "id": "spell-67706", + "name": "Fan of Knives", + "spellId": 67706, + "target": "primary", + "school": "physical", + "expectedCasts": 15.345940737171766, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 86872.26560539631 + }, + { + "id": "spell-67701", + "name": "Poison Bottle", + "spellId": 67701, + "target": "primary", + "school": "nature", + "expectedCasts": 15.345940737171766, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 86872.26560539631 + }, + { + "id": "spell-68783", + "name": "Mortal Strike", + "spellId": 68783, + "target": "primary", + "school": "physical", + "expectedCasts": 15.345940737171766, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 86872.26560539631 + }, + { + "id": "spell-67540", + "name": "Intercept", + "spellId": 67540, + "target": "primary", + "school": "physical", + "expectedCasts": 15.345940737171766, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 86872.26560539631 + } + ] + }, + { + "rank": 4, + "pressureVsMedian": 15.455676491647148, + "key": "trial-of-the-champion/entry-35572", + "dungeonId": "trial-of-the-champion", + "dungeonTitle": "Trial of the Champion", + "boss": "Mokra the Skullcrusher", + "serverEntry": 35572, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4233.6, + "partyDamage": 1363198.4562242304, + "partyDamagePerSecond": 22719.97427040384, + "tankDamage": 1285739.9073540785, + "randomTargetDamage": 77458.54887015178, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 32.34210526315789, + "targetsPerCast": 1, + "damagePerTarget": 4233.6, + "partyDamage": 136923.53684210527 + }, + { + "id": "spell-64553", + "name": "[DND] Defend Aura (05 seconds)", + "spellId": 64553, + "target": "primary", + "school": "physical", + "expectedCasts": 13.552698145025294, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 77458.54887015178 + }, + { + "id": "spell-67865", + "name": "Trample", + "spellId": 67865, + "target": "primary", + "school": "physical", + "expectedCasts": 13.552698145025294, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 77458.54887015178 + }, + { + "id": "spell-67867", + "name": "Trampled", + "spellId": 67867, + "target": "random-party", + "school": "physical", + "expectedCasts": 13.552698145025294, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-63784", + "name": "Bladestorm", + "spellId": 63784, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 13.552698145025294, + "targetsPerCast": 5, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-63010", + "name": "Charge", + "spellId": 63010, + "target": "primary", + "school": "physical", + "expectedCasts": 13.552698145025294, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 77458.54887015178 + }, + { + "id": "spell-68504", + "name": "Shield-Breaker", + "spellId": 68504, + "target": "self", + "school": "physical", + "expectedCasts": 13.552698145025294, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-68505", + "name": "Thrust", + "spellId": 68505, + "target": "primary", + "school": "physical", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 141855.23520000002 + }, + { + "id": "spell-66042", + "name": "Fireball", + "spellId": 66042, + "target": "primary", + "school": "fire", + "expectedCasts": 13.552698145025294, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 77458.54887015178 + }, + { + "id": "spell-66044", + "name": "Blast Wave", + "spellId": 66044, + "target": "random-party", + "school": "fire", + "expectedCasts": 13.552698145025294, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 77458.54887015178 + }, + { + "id": "spell-66045", + "name": "Haste", + "spellId": 66045, + "target": "self", + "school": "arcane", + "expectedCasts": 13.552698145025294, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-66043", + "name": "Polymorph", + "spellId": 66043, + "target": "random-party", + "school": "arcane", + "expectedCasts": 13.552698145025294, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-67529", + "name": "Chain Lightning", + "spellId": 67529, + "target": "primary", + "school": "nature", + "expectedCasts": 13.552698145025294, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 77458.54887015178 + }, + { + "id": "spell-67530", + "name": "Earth Shield", + "spellId": 67530, + "target": "self", + "school": "nature", + "expectedCasts": 13.552698145025294, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-67528", + "name": "Healing Wave", + "spellId": 67528, + "target": "lowest-health-friendly", + "school": "nature", + "expectedCasts": 13.552698145025294, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-67534", + "name": "Hex of Mending", + "spellId": 67534, + "target": "random-party", + "school": "nature", + "expectedCasts": 13.552698145025294, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-66083", + "name": "Lightning Arrows", + "spellId": 66083, + "target": "primary", + "school": "nature", + "expectedCasts": 13.552698145025294, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 77458.54887015178 + }, + { + "id": "spell-65868", + "name": "Shoot", + "spellId": 65868, + "target": "primary", + "school": "physical", + "expectedCasts": 13.552698145025294, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 77458.54887015178 + }, + { + "id": "spell-66081", + "name": "Multi-Shot", + "spellId": 66081, + "target": "primary", + "school": "physical", + "expectedCasts": 13.552698145025294, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 77458.54887015178 + }, + { + "id": "spell-67709", + "name": "Eviscerate", + "spellId": 67709, + "target": "primary", + "school": "physical", + "expectedCasts": 13.552698145025294, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 77458.54887015178 + }, + { + "id": "spell-67706", + "name": "Fan of Knives", + "spellId": 67706, + "target": "primary", + "school": "physical", + "expectedCasts": 13.552698145025294, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 77458.54887015178 + }, + { + "id": "spell-67701", + "name": "Poison Bottle", + "spellId": 67701, + "target": "primary", + "school": "nature", + "expectedCasts": 13.552698145025294, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 77458.54887015178 + }, + { + "id": "spell-68783", + "name": "Mortal Strike", + "spellId": 68783, + "target": "primary", + "school": "physical", + "expectedCasts": 13.552698145025294, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 77458.54887015178 + }, + { + "id": "spell-67540", + "name": "Intercept", + "spellId": 67540, + "target": "primary", + "school": "physical", + "expectedCasts": 13.552698145025294, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 77458.54887015178 + } + ] + }, + { + "rank": 5, + "pressureVsMedian": 15.11682983887182, + "key": "trial-of-the-champion/entry-35569", + "dungeonId": "trial-of-the-champion", + "dungeonTitle": "Trial of the Champion", + "boss": "Eressea Dawnsinger", + "serverEntry": 35569, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4193.280000000001, + "partyDamage": 1333312.0106707334, + "partyDamagePerSecond": 22221.866844512224, + "tankDamage": 1257798.5624883878, + "randomTargetDamage": 75513.44818234564, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 32.34210526315789, + "targetsPerCast": 1, + "damagePerTarget": 4193.280000000001, + "partyDamage": 135619.50315789474 + }, + { + "id": "spell-64553", + "name": "[DND] Defend Aura (05 seconds)", + "spellId": 64553, + "target": "primary", + "school": "physical", + "expectedCasts": 13.339411520928305, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 75513.44818234564 + }, + { + "id": "spell-67865", + "name": "Trample", + "spellId": 67865, + "target": "primary", + "school": "physical", + "expectedCasts": 13.339411520928305, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 75513.44818234564 + }, + { + "id": "spell-67867", + "name": "Trampled", + "spellId": 67867, + "target": "random-party", + "school": "physical", + "expectedCasts": 13.339411520928305, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-63784", + "name": "Bladestorm", + "spellId": 63784, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 13.339411520928305, + "targetsPerCast": 5, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-63010", + "name": "Charge", + "spellId": 63010, + "target": "primary", + "school": "physical", + "expectedCasts": 13.339411520928305, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 75513.44818234564 + }, + { + "id": "spell-68504", + "name": "Shield-Breaker", + "spellId": 68504, + "target": "self", + "school": "physical", + "expectedCasts": 13.339411520928305, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-68505", + "name": "Thrust", + "spellId": 68505, + "target": "primary", + "school": "physical", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 140504.23296000005 + }, + { + "id": "spell-66042", + "name": "Fireball", + "spellId": 66042, + "target": "primary", + "school": "fire", + "expectedCasts": 13.339411520928305, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 75513.44818234564 + }, + { + "id": "spell-66044", + "name": "Blast Wave", + "spellId": 66044, + "target": "random-party", + "school": "fire", + "expectedCasts": 13.339411520928305, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 75513.44818234564 + }, + { + "id": "spell-66045", + "name": "Haste", + "spellId": 66045, + "target": "self", + "school": "arcane", + "expectedCasts": 13.339411520928305, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-66043", + "name": "Polymorph", + "spellId": 66043, + "target": "random-party", + "school": "arcane", + "expectedCasts": 13.339411520928305, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-67529", + "name": "Chain Lightning", + "spellId": 67529, + "target": "primary", + "school": "nature", + "expectedCasts": 13.339411520928305, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 75513.44818234564 + }, + { + "id": "spell-67530", + "name": "Earth Shield", + "spellId": 67530, + "target": "self", + "school": "nature", + "expectedCasts": 13.339411520928305, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-67528", + "name": "Healing Wave", + "spellId": 67528, + "target": "lowest-health-friendly", + "school": "nature", + "expectedCasts": 13.339411520928305, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-67534", + "name": "Hex of Mending", + "spellId": 67534, + "target": "random-party", + "school": "nature", + "expectedCasts": 13.339411520928305, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-66083", + "name": "Lightning Arrows", + "spellId": 66083, + "target": "primary", + "school": "nature", + "expectedCasts": 13.339411520928305, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 75513.44818234564 + }, + { + "id": "spell-65868", + "name": "Shoot", + "spellId": 65868, + "target": "primary", + "school": "physical", + "expectedCasts": 13.339411520928305, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 75513.44818234564 + }, + { + "id": "spell-66081", + "name": "Multi-Shot", + "spellId": 66081, + "target": "primary", + "school": "physical", + "expectedCasts": 13.339411520928305, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 75513.44818234564 + }, + { + "id": "spell-67709", + "name": "Eviscerate", + "spellId": 67709, + "target": "primary", + "school": "physical", + "expectedCasts": 13.339411520928305, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 75513.44818234564 + }, + { + "id": "spell-67706", + "name": "Fan of Knives", + "spellId": 67706, + "target": "primary", + "school": "physical", + "expectedCasts": 13.339411520928305, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 75513.44818234564 + }, + { + "id": "spell-67701", + "name": "Poison Bottle", + "spellId": 67701, + "target": "primary", + "school": "nature", + "expectedCasts": 13.339411520928305, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 75513.44818234564 + }, + { + "id": "spell-68783", + "name": "Mortal Strike", + "spellId": 68783, + "target": "primary", + "school": "physical", + "expectedCasts": 13.339411520928305, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 75513.44818234564 + }, + { + "id": "spell-67540", + "name": "Intercept", + "spellId": 67540, + "target": "primary", + "school": "physical", + "expectedCasts": 13.339411520928305, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 75513.44818234564 + } + ] + }, + { + "rank": 6, + "pressureVsMedian": 13.712217295828237, + "key": "auchenai-crypts/entry-18373", + "dungeonId": "auchenai-crypts", + "dungeonTitle": "Auchindoun: Auchenai Crypts", + "boss": "Exarch Maladaar", + "serverEntry": 18373, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 5765.76, + "partyDamage": 1209424.4764495678, + "partyDamagePerSecond": 20157.074607492796, + "tankDamage": 1106226.1552046111, + "randomTargetDamage": 103198.32124495678, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 5765.76, + "partyDamage": 177441.264 + }, + { + "id": "spell-32421", + "name": "Soul Scream", + "spellId": 32421, + "target": "random-party", + "school": "shadow", + "expectedCasts": 13.258130918073281, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-32422", + "name": "Ribbon of Souls", + "spellId": 32422, + "target": "primary", + "school": "shadow", + "expectedCasts": 13.258130918073281, + "targetsPerCast": 1, + "damagePerTarget": 7783.776000000001, + "partyDamage": 103198.32124495678 + }, + { + "id": "spell-32346", + "name": "Stolen Soul", + "spellId": 32346, + "target": "primary", + "school": "shadow", + "expectedCasts": 13.258130918073281, + "targetsPerCast": 1, + "damagePerTarget": 7783.776000000001, + "partyDamage": 103198.32124495678 + }, + { + "id": "spell-37335", + "name": "Mortal Strike", + "spellId": 37335, + "target": "primary", + "school": "physical", + "expectedCasts": 13.258130918073281, + "targetsPerCast": 1, + "damagePerTarget": 7783.776000000001, + "partyDamage": 103198.32124495678 + }, + { + "id": "spell-37369", + "name": "Hammer of Justice", + "spellId": 37369, + "target": "random-party", + "school": "holy", + "expectedCasts": 13.258130918073281, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-37368", + "name": "Freezing Trap", + "spellId": 37368, + "target": "primary", + "school": "frost", + "expectedCasts": 13.258130918073281, + "targetsPerCast": 1, + "damagePerTarget": 7783.776000000001, + "partyDamage": 103198.32124495678 + }, + { + "id": "spell-37331", + "name": "Hemorrhage", + "spellId": 37331, + "target": "primary", + "school": "physical", + "expectedCasts": 13.258130918073281, + "targetsPerCast": 1, + "damagePerTarget": 7783.776000000001, + "partyDamage": 103198.32124495678 + }, + { + "id": "spell-37330", + "name": "Mind Flay", + "spellId": 37330, + "target": "random-party", + "school": "shadow", + "expectedCasts": 13.258130918073281, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-37332", + "name": "Frost Shock", + "spellId": 37332, + "target": "random-party", + "school": "frost", + "expectedCasts": 13.258130918073281, + "targetsPerCast": 1, + "damagePerTarget": 7783.776000000001, + "partyDamage": 103198.32124495678 + }, + { + "id": "spell-37329", + "name": "Fireball", + "spellId": 37329, + "target": "primary", + "school": "fire", + "expectedCasts": 13.258130918073281, + "targetsPerCast": 1, + "damagePerTarget": 7783.776000000001, + "partyDamage": 103198.32124495678 + }, + { + "id": "spell-37334", + "name": "Curse of Agony", + "spellId": 37334, + "target": "primary", + "school": "shadow", + "expectedCasts": 13.258130918073281, + "targetsPerCast": 1, + "damagePerTarget": 7783.776000000001, + "partyDamage": 103198.32124495678 + }, + { + "id": "spell-37328", + "name": "Moonfire", + "spellId": 37328, + "target": "primary", + "school": "arcane", + "expectedCasts": 13.258130918073281, + "targetsPerCast": 1, + "damagePerTarget": 7783.776000000001, + "partyDamage": 103198.32124495678 + }, + { + "id": "spell-58839", + "name": "Plague Strike", + "spellId": 58839, + "target": "primary", + "school": "physical", + "expectedCasts": 13.258130918073281, + "targetsPerCast": 1, + "damagePerTarget": 7783.776000000001, + "partyDamage": 103198.32124495678 + }, + { + "id": "spell-32424", + "name": "Summon Avatar", + "spellId": 32424, + "target": "self", + "school": "physical", + "expectedCasts": 13.258130918073281, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 7, + "pressureVsMedian": 12.47414004852956, + "key": "slave-pens/entry-17942", + "dungeonId": "slave-pens", + "dungeonTitle": "Coilfang: The Slave Pens", + "boss": "Quagmirran", + "serverEntry": 17942, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 5640.320000000001, + "partyDamage": 1100225.4392468918, + "partyDamagePerSecond": 18337.09065411486, + "tankDamage": 442468.45219182956, + "randomTargetDamage": 0, + "groupwideDamage": 657756.9870550622, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 20.85, + "targetsPerCast": 1, + "damagePerTarget": 5640.320000000001, + "partyDamage": 117600.67200000002 + }, + { + "id": "spell-40504", + "name": "Cleave", + "spellId": 40504, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 14.22158081705151, + "targetsPerCast": 5, + "damagePerTarget": 4625.0624, + "partyDamage": 328878.4935275311 + }, + { + "id": "spell-32055", + "name": "Uppercut", + "spellId": 32055, + "target": "primary", + "school": "physical", + "expectedCasts": 14.22158081705151, + "targetsPerCast": 1, + "damagePerTarget": 7614.432000000002, + "partyDamage": 108289.26006394319 + }, + { + "id": "spell-38153", + "name": "Acid Spray", + "spellId": 38153, + "target": "primary", + "school": "physical", + "expectedCasts": 14.22158081705151, + "targetsPerCast": 1, + "damagePerTarget": 7614.432000000002, + "partyDamage": 108289.26006394319 + }, + { + "id": "spell-34780", + "name": "Poison Bolt Volley", + "spellId": 34780, + "target": "nearby-party", + "school": "nature", + "expectedCasts": 14.22158081705151, + "targetsPerCast": 5, + "damagePerTarget": 4625.0624, + "partyDamage": 328878.4935275311 + }, + { + "id": "spell-38163", + "name": "Acid Spray", + "spellId": 38163, + "target": "primary", + "school": "nature", + "expectedCasts": 14.22158081705151, + "targetsPerCast": 1, + "damagePerTarget": 7614.432000000002, + "partyDamage": 108289.26006394319 + } + ] + }, + { + "rank": 8, + "pressureVsMedian": 11.660390915349138, + "key": "black-morass/entry-17881", + "dungeonId": "black-morass", + "dungeonTitle": "The Black Morass", + "boss": "Aeonus", + "serverEntry": 17881, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 6110.72, + "partyDamage": 1028452.3555708154, + "partyDamagePerSecond": 17140.872592846925, + "tankDamage": 396228.6335450644, + "randomTargetDamage": 0, + "groupwideDamage": 632223.722025751, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 6110.72, + "partyDamage": 188057.408 + }, + { + "id": "spell-37853", + "name": "Corrupt Medivh", + "spellId": 37853, + "target": "primary", + "school": "shadow", + "expectedCasts": 12.617245415528677, + "targetsPerCast": 1, + "damagePerTarget": 8249.472000000002, + "partyDamage": 104085.6127725322 + }, + { + "id": "spell-40504", + "name": "Cleave", + "spellId": 40504, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 12.617245415528677, + "targetsPerCast": 5, + "damagePerTarget": 5010.7904, + "partyDamage": 316111.8610128755 + }, + { + "id": "spell-31473", + "name": "Sand Breath", + "spellId": 31473, + "target": "nearby-party", + "school": "arcane", + "expectedCasts": 12.617245415528677, + "targetsPerCast": 5, + "damagePerTarget": 5010.7904, + "partyDamage": 316111.8610128755 + }, + { + "id": "spell-31422", + "name": "Time Stop", + "spellId": 31422, + "target": "random-party", + "school": "arcane", + "expectedCasts": 12.617245415528677, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-37605", + "name": "Enrage", + "spellId": 37605, + "target": "self", + "school": "shadow", + "expectedCasts": 12.617245415528677, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-31550", + "name": "Banish Dragon Helper", + "spellId": 31550, + "target": "primary", + "school": "physical", + "expectedCasts": 12.617245415528677, + "targetsPerCast": 1, + "damagePerTarget": 8249.472000000002, + "partyDamage": 104085.6127725322 + } + ] + }, + { + "rank": 9, + "pressureVsMedian": 11.19870397094993, + "key": "draktharon-keep/entry-26632", + "dungeonId": "draktharon-keep", + "dungeonTitle": "Drak'Tharon Keep", + "boss": "The Prophet Tharon'ja", + "serverEntry": 26632, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4193.280000000001, + "partyDamage": 987731.3343845853, + "partyDamagePerSecond": 16462.188906409756, + "tankDamage": 441441.2991845852, + "randomTargetDamage": 0, + "groupwideDamage": 546290.0352, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4193.280000000001, + "partyDamage": 129048.19200000001 + }, + { + "id": "spell-53242", + "name": "Clear Gift of Tharon'ja", + "spellId": 53242, + "target": "primary", + "school": "physical", + "expectedCasts": 13.025444264943458, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 73736.10215185786 + }, + { + "id": "spell-49356", + "name": "Decay Flesh", + "spellId": 49356, + "target": "random-party", + "school": "shadow", + "expectedCasts": 20.85, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-49527", + "name": "Curse of Life", + "spellId": 49527, + "target": "primary", + "school": "shadow", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 140504.23296000005 + }, + { + "id": "spell-49528", + "name": "Shadow Volley", + "spellId": 49528, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 10.925, + "targetsPerCast": 5, + "damagePerTarget": 3438.4896000000003, + "partyDamage": 187827.49440000003 + }, + { + "id": "spell-49544", + "name": "Eye Beam", + "spellId": 49544, + "target": "primary", + "school": "nature", + "expectedCasts": 6.413636363636364, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 36307.13367272729 + }, + { + "id": "spell-49537", + "name": "Lightning Breath", + "spellId": 49537, + "target": "nearby-party", + "school": "nature", + "expectedCasts": 20.85, + "targetsPerCast": 5, + "damagePerTarget": 3438.4896000000003, + "partyDamage": 358462.5408 + }, + { + "id": "spell-49548", + "name": "Poison Cloud", + "spellId": 49548, + "target": "primary", + "school": "nature", + "expectedCasts": 10.925, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 61845.638400000025 + } + ] + }, + { + "rank": 10, + "pressureVsMedian": 10.955841277958688, + "key": "halls-of-lightning/entry-28586", + "dungeonId": "halls-of-lightning", + "dungeonTitle": "Halls of Lightning", + "boss": "General Bjarngrim", + "serverEntry": 28586, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4233.6, + "partyDamage": 966310.7224599605, + "partyDamagePerSecond": 16105.178707666008, + "tankDamage": 791167.1880743705, + "randomTargetDamage": 0, + "groupwideDamage": 175143.53438559, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4233.6, + "partyDamage": 130289.04000000001 + }, + { + "id": "spell-53792", + "name": "Battle Stance", + "spellId": 53792, + "target": "primary", + "school": "physical", + "expectedCasts": 10.090215234315371, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 57669.21254159671 + }, + { + "id": "spell-52092", + "name": "Temporary Electrical Charge", + "spellId": 52092, + "target": "primary", + "school": "arcane", + "expectedCasts": 10.090215234315371, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 57669.21254159671 + }, + { + "id": "spell-53790", + "name": "Defensive Stance", + "spellId": 53790, + "target": "primary", + "school": "physical", + "expectedCasts": 10.090215234315371, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 57669.21254159671 + }, + { + "id": "spell-41105", + "name": "Defensive Aura", + "spellId": 41105, + "target": "self", + "school": "physical", + "expectedCasts": 10.090215234315371, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-53791", + "name": "Berserker Stance", + "spellId": 53791, + "target": "primary", + "school": "physical", + "expectedCasts": 10.090215234315371, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 57669.21254159671 + }, + { + "id": "spell-41107", + "name": "Berserker Aura", + "spellId": 41107, + "target": "self", + "school": "physical", + "expectedCasts": 10.090215234315371, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-41106", + "name": "Battle Aura", + "spellId": 41106, + "target": "self", + "school": "physical", + "expectedCasts": 10.090215234315371, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-52098", + "name": "Charge Up", + "spellId": 52098, + "target": "primary", + "school": "nature", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 141855.23520000002 + }, + { + "id": "spell-36096", + "name": "Spell Reflection", + "spellId": 36096, + "target": "self", + "school": "arcane", + "expectedCasts": 10.090215234315371, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-12555", + "name": "Pummel", + "spellId": 12555, + "target": "primary", + "school": "physical", + "expectedCasts": 10.090215234315371, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 57669.21254159671 + }, + { + "id": "spell-52029", + "name": "Knock Away", + "spellId": 52029, + "target": "primary", + "school": "physical", + "expectedCasts": 10.090215234315371, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 57669.21254159671 + }, + { + "id": "spell-52022", + "name": "Ironform", + "spellId": 52022, + "target": "primary", + "school": "physical", + "expectedCasts": 10.090215234315371, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-16856", + "name": "Mortal Strike", + "spellId": 16856, + "target": "primary", + "school": "physical", + "expectedCasts": 10.090215234315371, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 57669.21254159671 + }, + { + "id": "spell-52027", + "name": "Whirlwind", + "spellId": 52027, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 10.090215234315371, + "targetsPerCast": 5, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-58769", + "name": "Intercept", + "spellId": 58769, + "target": "primary", + "school": "physical", + "expectedCasts": 10.090215234315371, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 57669.21254159671 + }, + { + "id": "spell-15284", + "name": "Cleave", + "spellId": 15284, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 10.090215234315371, + "targetsPerCast": 5, + "damagePerTarget": 3471.552, + "partyDamage": 175143.53438559 + }, + { + "id": "spell-52026", + "name": "Slam", + "spellId": 52026, + "target": "primary", + "school": "physical", + "expectedCasts": 10.090215234315371, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 57669.21254159671 + } + ] + }, + { + "rank": 11, + "pressureVsMedian": 10.562994953892831, + "key": "the-oculus/entry-27447", + "dungeonId": "the-oculus", + "dungeonTitle": "The Oculus", + "boss": "Varos Cloudstrider", + "serverEntry": 27447, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 5080.320000000001, + "partyDamage": 931661.4786828046, + "partyDamagePerSecond": 15527.691311380077, + "tankDamage": 931661.4786828046, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 25.8125, + "targetsPerCast": 1, + "damagePerTarget": 5080.320000000001, + "partyDamage": 131135.76 + }, + { + "id": "spell-51054", + "name": "Amplify Magic", + "spellId": 51054, + "target": "primary", + "school": "arcane", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 170226.28224000003 + }, + { + "id": "spell-51002", + "name": "Call Azure Ring Captain", + "spellId": 51002, + "target": "primary", + "school": "physical", + "expectedCasts": 12.91, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 88542.35712000002 + }, + { + "id": "spell-51006", + "name": "Call Azure Ring Captain", + "spellId": 51006, + "target": "primary", + "school": "physical", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 40893.40080000001 + }, + { + "id": "spell-51007", + "name": "Call Azure Ring Captain", + "spellId": 51007, + "target": "primary", + "school": "physical", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 40893.40080000001 + }, + { + "id": "spell-51008", + "name": "Call Azure Ring Captain", + "spellId": 51008, + "target": "primary", + "school": "physical", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 40893.40080000001 + }, + { + "id": "spell-51019", + "name": "Arcane Beam Periodic", + "spellId": 51019, + "target": "primary", + "school": "physical", + "expectedCasts": 11.463890353189246, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 78624.31244280444 + }, + { + "id": "spell-61407", + "name": "Energize Cores", + "spellId": 61407, + "target": "primary", + "school": "arcane", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 170226.28224000003 + }, + { + "id": "spell-50785", + "name": "Energize Cores", + "spellId": 50785, + "target": "primary", + "school": "arcane", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 170226.28224000003 + } + ] + }, + { + "rank": 12, + "pressureVsMedian": 10.139829913908398, + "key": "the-nexus/entry-26731", + "dungeonId": "the-nexus", + "dungeonTitle": "The Nexus", + "boss": "Grand Magus Telestra", + "serverEntry": 26731, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4193.280000000001, + "partyDamage": 894338.1088809975, + "partyDamagePerSecond": 14905.635148016625, + "tankDamage": 683754.9773902532, + "randomTargetDamage": 0, + "groupwideDamage": 210583.13149074427, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4193.280000000001, + "partyDamage": 129048.19200000001 + }, + { + "id": "spell-61400", + "name": "Wear Christmas Hat, Red, Self (DND)", + "spellId": 61400, + "target": "primary", + "school": "physical", + "expectedCasts": 12.248583301851152, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 69338.34817378166 + }, + { + "id": "spell-47711", + "name": "Telestra Clone Dies (Fire)", + "spellId": 47711, + "target": "primary", + "school": "fire", + "expectedCasts": 12.248583301851152, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 69338.34817378166 + }, + { + "id": "spell-47713", + "name": "Telestra Clone Dies (Arcane)", + "spellId": 47713, + "target": "primary", + "school": "fire", + "expectedCasts": 12.248583301851152, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 69338.34817378166 + }, + { + "id": "spell-47712", + "name": "Telestra Clone Dies (Frost)", + "spellId": 47712, + "target": "primary", + "school": "fire", + "expectedCasts": 12.248583301851152, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 69338.34817378166 + }, + { + "id": "spell-46308", + "name": "Burning Winds", + "spellId": 46308, + "target": "primary", + "school": "fire", + "expectedCasts": 12.248583301851152, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 69338.34817378166 + }, + { + "id": "spell-47773", + "name": "Firebomb", + "spellId": 47773, + "target": "primary", + "school": "fire", + "expectedCasts": 12.248583301851152, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 69338.34817378166 + }, + { + "id": "spell-47772", + "name": "Ice Nova", + "spellId": 47772, + "target": "nearby-party", + "school": "frost", + "expectedCasts": 12.248583301851152, + "targetsPerCast": 5, + "damagePerTarget": 3438.4896000000003, + "partyDamage": 210583.13149074427 + }, + { + "id": "spell-47756", + "name": "Gravity Well", + "spellId": 47756, + "target": "primary", + "school": "physical", + "expectedCasts": 12.248583301851152, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 69338.34817378166 + }, + { + "id": "spell-47714", + "name": "Telestra Spawns Back In", + "spellId": 47714, + "target": "primary", + "school": "physical", + "expectedCasts": 12.248583301851152, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 69338.34817378166 + } + ] + }, + { + "rank": 13, + "pressureVsMedian": 8.700769586872205, + "key": "ahnkahet-old-kingdom/entry-29310", + "dungeonId": "ahnkahet-old-kingdom", + "dungeonTitle": "Ahn'kahet: The Old Kingdom", + "boss": "Jedoga Shadowseeker", + "serverEntry": 29310, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 5032.160000000001, + "partyDamage": 767412.2627500003, + "partyDamagePerSecond": 12790.204379166673, + "tankDamage": 767412.2627500003, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 25.8125, + "targetsPerCast": 1, + "damagePerTarget": 5032.160000000001, + "partyDamage": 129892.63000000002 + }, + { + "id": "spell-56102", + "name": "Sphere Visual", + "spellId": 56102, + "target": "primary", + "school": "physical", + "expectedCasts": 13.40625, + "targetsPerCast": 1, + "damagePerTarget": 6793.416000000001, + "partyDamage": 91074.23325000002 + }, + { + "id": "spell-60425", + "name": "Hover Fall", + "spellId": 60425, + "target": "primary", + "school": "physical", + "expectedCasts": 13.40625, + "targetsPerCast": 1, + "damagePerTarget": 6793.416000000001, + "partyDamage": 91074.23325000002 + }, + { + "id": "spell-56219", + "name": "Gift of the Herald", + "spellId": 56219, + "target": "primary", + "school": "physical", + "expectedCasts": 13.40625, + "targetsPerCast": 1, + "damagePerTarget": 6793.416000000001, + "partyDamage": 91074.23325000002 + }, + { + "id": "spell-56327", + "name": "Random Lightning Visual", + "spellId": 56327, + "target": "primary", + "school": "physical", + "expectedCasts": 13.40625, + "targetsPerCast": 1, + "damagePerTarget": 6793.416000000001, + "partyDamage": 91074.23325000002 + }, + { + "id": "spell-56855", + "name": "Cyclone Strike", + "spellId": 56855, + "target": "primary", + "school": "physical", + "expectedCasts": 13.40625, + "targetsPerCast": 1, + "damagePerTarget": 6793.416000000001, + "partyDamage": 91074.23325000002 + }, + { + "id": "spell-56891", + "name": "Lightning Bolt", + "spellId": 56891, + "target": "primary", + "school": "nature", + "expectedCasts": 13.40625, + "targetsPerCast": 1, + "damagePerTarget": 6793.416000000001, + "partyDamage": 91074.23325000002 + }, + { + "id": "spell-56926", + "name": "Thundershock", + "spellId": 56926, + "target": "primary", + "school": "nature", + "expectedCasts": 13.40625, + "targetsPerCast": 1, + "damagePerTarget": 6793.416000000001, + "partyDamage": 91074.23325000002 + } + ] + }, + { + "rank": 14, + "pressureVsMedian": 8.340691538905492, + "key": "the-oculus/entry-27654", + "dungeonId": "the-oculus", + "dungeonTitle": "The Oculus", + "boss": "Drakos the Interrogator", + "serverEntry": 27654, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 5080.320000000001, + "partyDamage": 735653.19744, + "partyDamagePerSecond": 12260.886624, + "tankDamage": 301362.04224000004, + "randomTargetDamage": 0, + "groupwideDamage": 434291.1552, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 25.8125, + "targetsPerCast": 1, + "damagePerTarget": 5080.320000000001, + "partyDamage": 131135.76 + }, + { + "id": "spell-51336", + "name": "Magic Pull", + "spellId": 51336, + "target": "primary", + "school": "physical", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 170226.28224000003 + }, + { + "id": "spell-50774", + "name": "Thundering Stomp", + "spellId": 50774, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 20.85, + "targetsPerCast": 5, + "damagePerTarget": 4165.8624, + "partyDamage": 434291.1552 + } + ] + }, + { + "rank": 15, + "pressureVsMedian": 8.30559228140816, + "key": "draktharon-keep/entry-27483", + "dungeonId": "draktharon-keep", + "dungeonTitle": "Drak'Tharon Keep", + "boss": "King Dred", + "serverEntry": 27483, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4233.6, + "partyDamage": 732557.4252387097, + "partyDamagePerSecond": 12209.29042064516, + "tankDamage": 492908.3516903226, + "randomTargetDamage": 0, + "groupwideDamage": 239649.0735483871, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4233.6, + "partyDamage": 130289.04000000001 + }, + { + "id": "spell-22686", + "name": "Bellowing Roar", + "spellId": 22686, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 13.806451612903226, + "targetsPerCast": 5, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-48849", + "name": "Fearsome Roar", + "spellId": 48849, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 13.806451612903226, + "targetsPerCast": 5, + "damagePerTarget": 3471.552, + "partyDamage": 239649.0735483871 + }, + { + "id": "spell-48878", + "name": "Piercing Slash", + "spellId": 48878, + "target": "primary", + "school": "physical", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-48873", + "name": "Mangling Slash", + "spellId": 48873, + "target": "primary", + "school": "physical", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 141855.23520000002 + }, + { + "id": "spell-48920", + "name": "Grievous Bite", + "spellId": 48920, + "target": "primary", + "school": "physical", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 141855.23520000002 + }, + { + "id": "spell-59416", + "name": "Raptor Call", + "spellId": 59416, + "target": "primary", + "school": "physical", + "expectedCasts": 13.806451612903226, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 78908.84129032258 + } + ] + }, + { + "rank": 16, + "pressureVsMedian": 8.205002795798402, + "key": "utgarde-pinnacle/entry-26861", + "dungeonId": "utgarde-pinnacle", + "dungeonTitle": "Utgarde Pinnacle", + "boss": "King Ymiron", + "serverEntry": 26861, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4233.6, + "partyDamage": 723685.3819108282, + "partyDamagePerSecond": 12061.423031847136, + "tankDamage": 723685.3819108282, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4233.6, + "partyDamage": 130289.04000000001 + }, + { + "id": "spell-48307", + "name": "Channel Ymiron -> Spirit", + "spellId": 48307, + "target": "primary", + "school": "physical", + "expectedCasts": 11.536093418259023, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 65932.9268789809 + }, + { + "id": "spell-51750", + "name": "Screams of the Dead", + "spellId": 51750, + "target": "random-party", + "school": "physical", + "expectedCasts": 11.536093418259023, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-39199", + "name": "Flames", + "spellId": 39199, + "target": "primary", + "school": "physical", + "expectedCasts": 11.536093418259023, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 65932.9268789809 + }, + { + "id": "spell-48294", + "name": "Bane", + "spellId": 48294, + "target": "primary", + "school": "shadow", + "expectedCasts": 11.536093418259023, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 65932.9268789809 + }, + { + "id": "spell-48291", + "name": "Fetid Rot", + "spellId": 48291, + "target": "primary", + "school": "nature", + "expectedCasts": 11.536093418259023, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 65932.9268789809 + }, + { + "id": "spell-48292", + "name": "Dark Slash", + "spellId": 48292, + "target": "primary", + "school": "shadow", + "expectedCasts": 11.536093418259023, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 65932.9268789809 + }, + { + "id": "spell-48316", + "name": "Channel Spirit -> Ymiron", + "spellId": 48316, + "target": "primary", + "school": "physical", + "expectedCasts": 11.536093418259023, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 65932.9268789809 + }, + { + "id": "spell-48380", + "name": "Spirit Fount", + "spellId": 48380, + "target": "primary", + "school": "shadow", + "expectedCasts": 11.536093418259023, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 65932.9268789809 + }, + { + "id": "spell-48423", + "name": "Spirit Strike", + "spellId": 48423, + "target": "primary", + "school": "physical", + "expectedCasts": 11.536093418259023, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 65932.9268789809 + }, + { + "id": "spell-48529", + "name": "Spirit Burst", + "spellId": 48529, + "target": "primary", + "school": "shadow", + "expectedCasts": 11.536093418259023, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 65932.9268789809 + } + ] + }, + { + "rank": 17, + "pressureVsMedian": 8.028989392242176, + "key": "trial-of-the-champion/entry-35451", + "dungeonId": "trial-of-the-champion", + "dungeonTitle": "Trial of the Champion", + "boss": "The Black Knight", + "serverEntry": 35451, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 3810.2400000000002, + "partyDamage": 708160.9110064136, + "partyDamagePerSecond": 11802.681850106894, + "tankDamage": 708160.9110064136, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 34.083333333333336, + "targetsPerCast": 1, + "damagePerTarget": 3810.2400000000002, + "partyDamage": 129865.68000000002 + }, + { + "id": "spell-67751", + "name": "Ghoul Explode", + "spellId": 67751, + "target": "primary", + "school": "physical", + "expectedCasts": 9.616698017653016, + "targetsPerCast": 1, + "damagePerTarget": 5143.8240000000005, + "partyDamage": 49466.602063956016 + }, + { + "id": "spell-67691", + "name": "Feign Death", + "spellId": 67691, + "target": "random-party", + "school": "physical", + "expectedCasts": 9.616698017653016, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-67715", + "name": "Raise Dead Jaeren Sunsworn", + "spellId": 67715, + "target": "self", + "school": "physical", + "expectedCasts": 9.616698017653016, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-67705", + "name": "Raise Dead Arelas Brightstar", + "spellId": 67705, + "target": "self", + "school": "physical", + "expectedCasts": 9.616698017653016, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-67693", + "name": "Black Knight Res", + "spellId": 67693, + "target": "primary", + "school": "physical", + "expectedCasts": 9.616698017653016, + "targetsPerCast": 1, + "damagePerTarget": 5143.8240000000005, + "partyDamage": 49466.602063956016 + }, + { + "id": "spell-67761", + "name": "Army of the Dead", + "spellId": 67761, + "target": "primary", + "school": "shadow", + "expectedCasts": 9.616698017653016, + "targetsPerCast": 1, + "damagePerTarget": 5143.8240000000005, + "partyDamage": 49466.602063956016 + }, + { + "id": "spell-67724", + "name": "Plague Strike", + "spellId": 67724, + "target": "primary", + "school": "physical", + "expectedCasts": 9.507142857142858, + "targetsPerCast": 1, + "damagePerTarget": 5143.8240000000005, + "partyDamage": 48903.06960000001 + }, + { + "id": "spell-67718", + "name": "Icy Touch", + "spellId": 67718, + "target": "primary", + "school": "frost", + "expectedCasts": 18.014285714285716, + "targetsPerCast": 1, + "damagePerTarget": 5143.8240000000005, + "partyDamage": 92662.31520000001 + }, + { + "id": "spell-67745", + "name": "Death's Respite", + "spellId": 67745, + "target": "random-party", + "school": "shadow", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-67725", + "name": "Obliterate", + "spellId": 67725, + "target": "primary", + "school": "physical", + "expectedCasts": 6.413636363636364, + "targetsPerCast": 1, + "damagePerTarget": 5143.8240000000005, + "partyDamage": 32990.61665454546 + }, + { + "id": "spell-67778", + "name": "Desecration", + "spellId": 67778, + "target": "primary", + "school": "shadow", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 5143.8240000000005, + "partyDamage": 127669.71168000001 + }, + { + "id": "spell-67808", + "name": "Death's Bite", + "spellId": 67808, + "target": "primary", + "school": "shadow", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 5143.8240000000005, + "partyDamage": 127669.71168000001 + }, + { + "id": "spell-67823", + "name": "Marked For Death", + "spellId": 67823, + "target": "primary", + "school": "shadow", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 18, + "pressureVsMedian": 7.524249257832659, + "key": "halls-of-stone/entry-27977", + "dungeonId": "halls-of-stone", + "dungeonTitle": "Halls of Stone", + "boss": "Krystallus", + "serverEntry": 27977, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4233.6, + "partyDamage": 663642.5767624666, + "partyDamagePerSecond": 11060.709612707777, + "tankDamage": 439553.89516246656, + "randomTargetDamage": 0, + "groupwideDamage": 224088.6816, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4233.6, + "partyDamage": 130289.04000000001 + }, + { + "id": "spell-50812", + "name": "Stoned", + "spellId": 50812, + "target": "random-party", + "school": "physical", + "expectedCasts": 12.403676752202221, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-50843", + "name": "Boulder Toss", + "spellId": 50843, + "target": "primary", + "school": "physical", + "expectedCasts": 12.403676752202221, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 70891.4779624665 + }, + { + "id": "spell-59750", + "name": "Ground Spike", + "spellId": 59750, + "target": "primary", + "school": "nature", + "expectedCasts": 8.44375, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 48259.071 + }, + { + "id": "spell-50868", + "name": "Stomp", + "spellId": 50868, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 12.91, + "targetsPerCast": 5, + "damagePerTarget": 3471.552, + "partyDamage": 224088.6816 + }, + { + "id": "spell-50827", + "name": "Ground Slam", + "spellId": 50827, + "target": "primary", + "school": "nature", + "expectedCasts": 8.44375, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 48259.071 + }, + { + "id": "spell-50810", + "name": "Shatter", + "spellId": 50810, + "target": "primary", + "school": "physical", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 141855.23520000002 + } + ] + }, + { + "rank": 19, + "pressureVsMedian": 7.352599589759151, + "key": "the-oculus/entry-27655", + "dungeonId": "the-oculus", + "dungeonTitle": "The Oculus", + "boss": "Mage-Lord Urom", + "serverEntry": 27655, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 5032.160000000001, + "partyDamage": 648502.9895269505, + "partyDamagePerSecond": 10808.383158782508, + "tankDamage": 272829.5957085107, + "randomTargetDamage": 64585.976400000014, + "groupwideDamage": 311087.4174184398, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 25.8125, + "targetsPerCast": 1, + "damagePerTarget": 5032.160000000001, + "partyDamage": 129892.63000000002 + }, + { + "id": "spell-51602", + "name": "Evocation", + "spellId": 51602, + "target": "primary", + "school": "arcane", + "expectedCasts": 15.078014184397164, + "targetsPerCast": 1, + "damagePerTarget": 6793.416000000001, + "partyDamage": 102431.22280851066 + }, + { + "id": "spell-51110", + "name": "Empowered Arcane Explosion", + "spellId": 51110, + "target": "nearby-party", + "school": "arcane", + "expectedCasts": 15.078014184397164, + "targetsPerCast": 5, + "damagePerTarget": 4126.3712000000005, + "partyDamage": 311087.4174184398 + }, + { + "id": "spell-51103", + "name": "Frostbomb", + "spellId": 51103, + "target": "random-party", + "school": "frost", + "expectedCasts": 9.507142857142858, + "targetsPerCast": 1, + "damagePerTarget": 6793.416000000001, + "partyDamage": 64585.976400000014 + }, + { + "id": "spell-51121", + "name": "Time Bomb", + "spellId": 51121, + "target": "primary", + "school": "arcane", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 6793.416000000001, + "partyDamage": 40505.74290000001 + } + ] + }, + { + "rank": 20, + "pressureVsMedian": 7.150334307325334, + "key": "underbog/entry-17826", + "dungeonId": "underbog", + "dungeonTitle": "Coilfang: The Underbog", + "boss": "Swamplord Musel'ek", + "serverEntry": 17826, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 3336.4800000000005, + "partyDamage": 630663.0896745855, + "partyDamagePerSecond": 10511.051494576424, + "tankDamage": 630663.0896745855, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 34.083333333333336, + "targetsPerCast": 1, + "damagePerTarget": 3336.4800000000005, + "partyDamage": 113718.36000000003 + }, + { + "id": "spell-22907", + "name": "Shoot", + "spellId": 22907, + "target": "primary", + "school": "physical", + "expectedCasts": 14.346033168982519, + "targetsPerCast": 1, + "damagePerTarget": 4504.2480000000005, + "partyDamage": 64618.09120932318 + }, + { + "id": "spell-18813", + "name": "Knock Away", + "spellId": 18813, + "target": "primary", + "school": "physical", + "expectedCasts": 14.346033168982519, + "targetsPerCast": 1, + "damagePerTarget": 4504.2480000000005, + "partyDamage": 64618.09120932318 + }, + { + "id": "spell-34974", + "name": "Multi-Shot", + "spellId": 34974, + "target": "primary", + "school": "physical", + "expectedCasts": 14.346033168982519, + "targetsPerCast": 1, + "damagePerTarget": 4504.2480000000005, + "partyDamage": 64618.09120932318 + }, + { + "id": "spell-31946", + "name": "Throw Freezing Trap", + "spellId": 31946, + "target": "primary", + "school": "physical", + "expectedCasts": 14.346033168982519, + "targetsPerCast": 1, + "damagePerTarget": 4504.2480000000005, + "partyDamage": 64618.09120932318 + }, + { + "id": "spell-31615", + "name": "Hunter's Mark", + "spellId": 31615, + "target": "primary", + "school": "arcane", + "expectedCasts": 14.346033168982519, + "targetsPerCast": 1, + "damagePerTarget": 4504.2480000000005, + "partyDamage": 64618.09120932318 + }, + { + "id": "spell-31623", + "name": "Aimed Shot", + "spellId": 31623, + "target": "primary", + "school": "physical", + "expectedCasts": 14.346033168982519, + "targetsPerCast": 1, + "damagePerTarget": 4504.2480000000005, + "partyDamage": 64618.09120932318 + }, + { + "id": "spell-31566", + "name": "Raptor Strike", + "spellId": 31566, + "target": "primary", + "school": "physical", + "expectedCasts": 14.346033168982519, + "targetsPerCast": 1, + "damagePerTarget": 4504.2480000000005, + "partyDamage": 64618.09120932318 + }, + { + "id": "spell-31567", + "name": "Deterrence", + "spellId": 31567, + "target": "primary", + "school": "physical", + "expectedCasts": 14.346033168982519, + "targetsPerCast": 1, + "damagePerTarget": 4504.2480000000005, + "partyDamage": 64618.09120932318 + } + ] + }, + { + "rank": 21, + "pressureVsMedian": 7.112812556910699, + "key": "sethekk-halls/entry-18473", + "dungeonId": "sethekk-halls", + "dungeonTitle": "Auchindoun: Sethekk Halls", + "boss": "Talon King Ikiss", + "serverEntry": 18473, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 3755.3600000000006, + "partyDamage": 627353.6523770525, + "partyDamagePerSecond": 10455.894206284207, + "tankDamage": 242343.0031392699, + "randomTargetDamage": 0, + "groupwideDamage": 385010.6492377826, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 3755.3600000000006, + "partyDamage": 115571.20400000001 + }, + { + "id": "spell-38194", + "name": "Blink", + "spellId": 38194, + "target": "primary", + "school": "nature", + "expectedCasts": 12.502800849913077, + "targetsPerCast": 1, + "damagePerTarget": 5069.736000000001, + "partyDamage": 63385.89956963494 + }, + { + "id": "spell-9438", + "name": "Arcane Bubble", + "spellId": 9438, + "target": "primary", + "school": "arcane", + "expectedCasts": 12.502800849913077, + "targetsPerCast": 1, + "damagePerTarget": 5069.736000000001, + "partyDamage": 63385.89956963494 + }, + { + "id": "spell-38197", + "name": "Arcane Explosion", + "spellId": 38197, + "target": "nearby-party", + "school": "arcane", + "expectedCasts": 12.502800849913077, + "targetsPerCast": 5, + "damagePerTarget": 3079.3952000000004, + "partyDamage": 192505.3246188913 + }, + { + "id": "spell-38151", + "name": "Mana Shield", + "spellId": 38151, + "target": "self", + "school": "arcane", + "expectedCasts": 12.502800849913077, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-35059", + "name": "Arcane Volley", + "spellId": 35059, + "target": "nearby-party", + "school": "arcane", + "expectedCasts": 12.502800849913077, + "targetsPerCast": 5, + "damagePerTarget": 3079.3952000000004, + "partyDamage": 192505.3246188913 + }, + { + "id": "spell-38245", + "name": "Polymorph", + "spellId": 38245, + "target": "random-party", + "school": "arcane", + "expectedCasts": 12.502800849913077, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-35032", + "name": "Slow", + "spellId": 35032, + "target": "random-party", + "school": "arcane", + "expectedCasts": 12.502800849913077, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 22, + "pressureVsMedian": 7.093923910196128, + "key": "gundrak/entry-29304", + "dungeonId": "gundrak", + "dungeonTitle": "Gundrak", + "boss": "Slad'ran", + "serverEntry": 29304, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4233.6, + "partyDamage": 625687.6642169493, + "partyDamagePerSecond": 10428.127736949154, + "tankDamage": 194868.06101694918, + "randomTargetDamage": 0, + "groupwideDamage": 430819.6032, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4233.6, + "partyDamage": 130289.04000000001 + }, + { + "id": "spell-55081", + "name": "Poison Nova", + "spellId": 55081, + "target": "nearby-party", + "school": "nature", + "expectedCasts": 24.82, + "targetsPerCast": 5, + "damagePerTarget": 3471.552, + "partyDamage": 430819.6032 + }, + { + "id": "spell-48287", + "name": "Powerful Bite", + "spellId": 48287, + "target": "primary", + "school": "physical", + "expectedCasts": 11.299204427533725, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-54970", + "name": "Venom Bolt", + "spellId": 54970, + "target": "primary", + "school": "nature", + "expectedCasts": 11.299204427533725, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 64579.02101694916 + } + ] + }, + { + "rank": 23, + "pressureVsMedian": 6.921484473763862, + "key": "draktharon-keep/entry-26631", + "dungeonId": "draktharon-keep", + "dungeonTitle": "Drak'Tharon Keep", + "boss": "Novos the Summoner", + "serverEntry": 26631, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4193.280000000001, + "partyDamage": 610478.4190141475, + "partyDamagePerSecond": 10174.640316902458, + "tankDamage": 334289.4993060314, + "randomTargetDamage": 68413.76910201045, + "groupwideDamage": 207775.15060610574, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4193.280000000001, + "partyDamage": 129048.19200000001 + }, + { + "id": "spell-52106", + "name": "Beam Channel", + "spellId": 52106, + "target": "primary", + "school": "physical", + "expectedCasts": 12.085256887565153, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 68413.76910201045 + }, + { + "id": "spell-49034", + "name": "Blizzard", + "spellId": 49034, + "target": "nearby-party", + "school": "frost", + "expectedCasts": 12.085256887565153, + "targetsPerCast": 5, + "damagePerTarget": 3438.4896000000003, + "partyDamage": 207775.15060610574 + }, + { + "id": "spell-50089", + "name": "Wrath of Misery", + "spellId": 50089, + "target": "primary", + "school": "shadow", + "expectedCasts": 12.085256887565153, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 68413.76910201045 + }, + { + "id": "spell-49198", + "name": "Arcane Blast", + "spellId": 49198, + "target": "primary", + "school": "arcane", + "expectedCasts": 12.085256887565153, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 68413.76910201045 + }, + { + "id": "spell-47346", + "name": "Arcane Field", + "spellId": 47346, + "target": "random-party", + "school": "arcane", + "expectedCasts": 12.085256887565153, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-49037", + "name": "Frostbolt", + "spellId": 49037, + "target": "random-party", + "school": "frost", + "expectedCasts": 12.085256887565153, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 68413.76910201045 + } + ] + }, + { + "rank": 24, + "pressureVsMedian": 6.625099578112198, + "key": "the-oculus/entry-27656", + "dungeonId": "the-oculus", + "dungeonTitle": "The Oculus", + "boss": "Ley-Guardian Eregos", + "serverEntry": 27656, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4193.280000000001, + "partyDamage": 584337.1218396833, + "partyDamagePerSecond": 9738.952030661389, + "tankDamage": 362382.6181596832, + "randomTargetDamage": 0, + "groupwideDamage": 221954.50368000002, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4193.280000000001, + "partyDamage": 129048.19200000001 + }, + { + "id": "spell-51162", + "name": "Planar Shift", + "spellId": 51162, + "target": "random-party", + "school": "arcane", + "expectedCasts": 10.435905561717636, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-49838", + "name": "Stop Time", + "spellId": 49838, + "target": "random-party", + "school": "arcane", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-50804", + "name": "Arcane Barrage", + "spellId": 50804, + "target": "primary", + "school": "arcane", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 140504.23296000005 + }, + { + "id": "spell-51153", + "name": "Arcane Volley", + "spellId": 51153, + "target": "nearby-party", + "school": "arcane", + "expectedCasts": 12.91, + "targetsPerCast": 5, + "damagePerTarget": 3438.4896000000003, + "partyDamage": 221954.50368000002 + }, + { + "id": "spell-51170", + "name": "Enraged Assault", + "spellId": 51170, + "target": "primary", + "school": "arcane", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 33753.28320000001 + }, + { + "id": "spell-59379", + "name": "Planar Distortion", + "spellId": 59379, + "target": "primary", + "school": "arcane", + "expectedCasts": 10.435905561717636, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 59076.909999683114 + } + ] + }, + { + "rank": 25, + "pressureVsMedian": 6.587009311536826, + "key": "gundrak/entry-29306", + "dungeonId": "gundrak", + "dungeonTitle": "Gundrak", + "boss": "Gal'darah", + "serverEntry": 29306, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4233.6, + "partyDamage": 580977.5411302411, + "partyDamagePerSecond": 9682.959018837351, + "tankDamage": 354250.81050030387, + "randomTargetDamage": 0, + "groupwideDamage": 226726.7306299372, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4233.6, + "partyDamage": 130289.04000000001 + }, + { + "id": "spell-54956", + "name": "Impaling Charge", + "spellId": 54956, + "target": "primary", + "school": "physical", + "expectedCasts": 13.061980960097225, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 74653.92350010129 + }, + { + "id": "spell-55285", + "name": "Enrage", + "spellId": 55285, + "target": "self", + "school": "physical", + "expectedCasts": 13.061980960097225, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-55292", + "name": "Stomp", + "spellId": 55292, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 13.061980960097225, + "targetsPerCast": 5, + "damagePerTarget": 3471.552, + "partyDamage": 226726.7306299372 + }, + { + "id": "spell-55218", + "name": "Stampede", + "spellId": 55218, + "target": "self", + "school": "physical", + "expectedCasts": 13.061980960097225, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-55276", + "name": "Puncture", + "spellId": 55276, + "target": "primary", + "school": "physical", + "expectedCasts": 13.061980960097225, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 74653.92350010129 + }, + { + "id": "spell-55250", + "name": "Whirling Slash", + "spellId": 55250, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 13.061980960097225, + "targetsPerCast": 5, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-55220", + "name": "Stampede", + "spellId": 55220, + "target": "primary", + "school": "physical", + "expectedCasts": 13.061980960097225, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 74653.92350010129 + } + ] + }, + { + "rank": 26, + "pressureVsMedian": 6.585141706412178, + "key": "the-nexus/entry-26796", + "dungeonId": "the-nexus", + "dungeonTitle": "The Nexus", + "boss": "Commander Stoutbeard", + "serverEntry": 26796, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4233.6, + "partyDamage": 580812.8174169742, + "partyDamagePerSecond": 9680.213623616237, + "tankDamage": 219731.26051660517, + "randomTargetDamage": 89442.22051660517, + "groupwideDamage": 271639.3363837639, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4233.6, + "partyDamage": 130289.04000000001 + }, + { + "id": "spell-31403", + "name": "Battle Shout", + "spellId": 31403, + "target": "primary", + "school": "physical", + "expectedCasts": 15.649446494464945, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 89442.22051660517 + }, + { + "id": "spell-19134", + "name": "Frightening Shout", + "spellId": 19134, + "target": "random-party", + "school": "physical", + "expectedCasts": 15.649446494464945, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-38618", + "name": "Whirlwind", + "spellId": 38618, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 15.649446494464945, + "targetsPerCast": 5, + "damagePerTarget": 3471.552, + "partyDamage": 271639.3363837639 + }, + { + "id": "spell-60067", + "name": "Charge", + "spellId": 60067, + "target": "random-party", + "school": "physical", + "expectedCasts": 15.649446494464945, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 89442.22051660517 + } + ] + }, + { + "rank": 27, + "pressureVsMedian": 6.531829111810442, + "key": "pit-of-saron/entry-36494", + "dungeonId": "pit-of-saron", + "dungeonTitle": "Pit of Saron", + "boss": "Forgemaster Garfrost", + "serverEntry": 36494, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4233.6, + "partyDamage": 576110.6197035534, + "partyDamagePerSecond": 9601.84366172589, + "tankDamage": 536360.2909035534, + "randomTargetDamage": 39750.3288, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4233.6, + "partyDamage": 130289.04000000001 + }, + { + "id": "spell-70326", + "name": "Permafrost", + "spellId": 70326, + "target": "primary", + "school": "physical", + "expectedCasts": 13.091370558375635, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 74821.89563451777 + }, + { + "id": "spell-68771", + "name": "Thundering Stomp", + "spellId": 68771, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 13.091370558375635, + "targetsPerCast": 5, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-68774", + "name": "Forge Frozen Blade", + "spellId": 68774, + "target": "primary", + "school": "frost", + "expectedCasts": 13.091370558375635, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 74821.89563451777 + }, + { + "id": "spell-68785", + "name": "Forge Frostborn Mace", + "spellId": 68785, + "target": "primary", + "school": "frost", + "expectedCasts": 13.091370558375635, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 74821.89563451777 + }, + { + "id": "spell-68788", + "name": "Throw Saronite", + "spellId": 68788, + "target": "primary", + "school": "physical", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 141855.23520000002 + }, + { + "id": "spell-68778", + "name": "Chilling Wave", + "spellId": 68778, + "target": "primary", + "school": "frost", + "expectedCasts": 6.955, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 39750.3288 + }, + { + "id": "spell-70381", + "name": "Deep Freeze", + "spellId": 70381, + "target": "random-party", + "school": "frost", + "expectedCasts": 6.955, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 39750.3288 + } + ] + }, + { + "rank": 28, + "pressureVsMedian": 6.503411989675964, + "key": "shadow-labyrinth/entry-18708", + "dungeonId": "shadow-labyrinth", + "dungeonTitle": "Auchindoun: Shadow Labyrinth", + "boss": "Murmur", + "serverEntry": 18708, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 3290.5600000000004, + "partyDamage": 573604.2152090629, + "partyDamagePerSecond": 9560.070253484382, + "tankDamage": 372364.274331617, + "randomTargetDamage": 49848.42572193617, + "groupwideDamage": 151391.51515550978, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 22.267857142857142, + "targetsPerCast": 1, + "damagePerTarget": 3290.5600000000004, + "partyDamage": 73273.72 + }, + { + "id": "spell-33332", + "name": "Suppression Blast", + "spellId": 33332, + "target": "random-party", + "school": "holy", + "expectedCasts": 11.22142121524202, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-33331", + "name": "Murmur's Wrath", + "spellId": 33331, + "target": "primary", + "school": "holy", + "expectedCasts": 11.22142121524202, + "targetsPerCast": 1, + "damagePerTarget": 4442.256000000001, + "partyDamage": 49848.42572193617 + }, + { + "id": "spell-33923", + "name": "Sonic Boom", + "spellId": 33923, + "target": "primary", + "school": "nature", + "expectedCasts": 11.22142121524202, + "targetsPerCast": 1, + "damagePerTarget": 4442.256000000001, + "partyDamage": 49848.42572193617 + }, + { + "id": "spell-38795", + "name": "Sonic Boom", + "spellId": 38795, + "target": "random-party", + "school": "nature", + "expectedCasts": 11.22142121524202, + "targetsPerCast": 1, + "damagePerTarget": 4442.256000000001, + "partyDamage": 49848.42572193617 + }, + { + "id": "spell-33711", + "name": "Murmur's Touch", + "spellId": 33711, + "target": "primary", + "school": "nature", + "expectedCasts": 11.22142121524202, + "targetsPerCast": 1, + "damagePerTarget": 4442.256000000001, + "partyDamage": 49848.42572193617 + }, + { + "id": "spell-33689", + "name": "Magnetic Pull", + "spellId": 33689, + "target": "primary", + "school": "physical", + "expectedCasts": 11.22142121524202, + "targetsPerCast": 1, + "damagePerTarget": 4442.256000000001, + "partyDamage": 49848.42572193617 + }, + { + "id": "spell-33657", + "name": "Resonance", + "spellId": 33657, + "target": "primary", + "school": "nature", + "expectedCasts": 11.22142121524202, + "targetsPerCast": 1, + "damagePerTarget": 4442.256000000001, + "partyDamage": 49848.42572193617 + }, + { + "id": "spell-39365", + "name": "Thundering Storm", + "spellId": 39365, + "target": "nearby-party", + "school": "nature", + "expectedCasts": 11.22142121524202, + "targetsPerCast": 5, + "damagePerTarget": 2698.2592, + "partyDamage": 151391.51515550978 + }, + { + "id": "spell-38797", + "name": "Sonic Shock", + "spellId": 38797, + "target": "primary", + "school": "arcane", + "expectedCasts": 11.22142121524202, + "targetsPerCast": 1, + "damagePerTarget": 4442.256000000001, + "partyDamage": 49848.42572193617 + } + ] + }, + { + "rank": 29, + "pressureVsMedian": 6.502603579592448, + "key": "gundrak/entry-29573", + "dungeonId": "gundrak", + "dungeonTitle": "Gundrak", + "boss": "Drakkari Elemental", + "serverEntry": 29573, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4193.280000000001, + "partyDamage": 573532.9130322582, + "partyDamagePerSecond": 9558.881883870969, + "tankDamage": 349927.102451613, + "randomTargetDamage": 0, + "groupwideDamage": 223605.8105806452, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4193.280000000001, + "partyDamage": 129048.19200000001 + }, + { + "id": "spell-54991", + "name": "Face Me", + "spellId": 54991, + "target": "primary", + "school": "physical", + "expectedCasts": 13.006048387096774, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 73626.30348387099 + }, + { + "id": "spell-54878", + "name": "Merge", + "spellId": 54878, + "target": "primary", + "school": "physical", + "expectedCasts": 13.006048387096774, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 73626.30348387099 + }, + { + "id": "spell-54801", + "name": "Surge", + "spellId": 54801, + "target": "primary", + "school": "physical", + "expectedCasts": 13.006048387096774, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 73626.30348387099 + }, + { + "id": "spell-54849", + "name": "Mojo Volley", + "spellId": 54849, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 13.006048387096774, + "targetsPerCast": 5, + "damagePerTarget": 3438.4896000000003, + "partyDamage": 223605.8105806452 + } + ] + }, + { + "rank": 30, + "pressureVsMedian": 6.369998382617938, + "key": "halls-of-lightning/entry-28923", + "dungeonId": "halls-of-lightning", + "dungeonTitle": "Halls of Lightning", + "boss": "Loken", + "serverEntry": 28923, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4233.6, + "partyDamage": 561837.067826087, + "partyDamagePerSecond": 9363.951130434783, + "tankDamage": 344739.2869565218, + "randomTargetDamage": 0, + "groupwideDamage": 217097.7808695652, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4233.6, + "partyDamage": 130289.04000000001 + }, + { + "id": "spell-52663", + "name": "Random Lightning Visual", + "spellId": 52663, + "target": "primary", + "school": "physical", + "expectedCasts": 12.507246376811594, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 71483.41565217392 + }, + { + "id": "spell-59414", + "name": "Pulsing Shockwave Aura", + "spellId": 59414, + "target": "primary", + "school": "nature", + "expectedCasts": 12.507246376811594, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-52961", + "name": "Pulsing Shockwave", + "spellId": 52961, + "target": "primary", + "school": "physical", + "expectedCasts": 12.507246376811594, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 71483.41565217392 + }, + { + "id": "spell-52960", + "name": "Lightning Nova", + "spellId": 52960, + "target": "nearby-party", + "school": "nature", + "expectedCasts": 12.507246376811594, + "targetsPerCast": 5, + "damagePerTarget": 3471.552, + "partyDamage": 217097.7808695652 + }, + { + "id": "spell-52921", + "name": "Arc Lightning", + "spellId": 52921, + "target": "primary", + "school": "nature", + "expectedCasts": 12.507246376811594, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 71483.41565217392 + } + ] + }, + { + "rank": 31, + "pressureVsMedian": 6.3691655768110085, + "key": "blood-furnace/entry-17377", + "dungeonId": "blood-furnace", + "dungeonTitle": "Hellfire Citadel: The Blood Furnace", + "boss": "Keli'dan the Breaker", + "serverEntry": 17377, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 2449.44, + "partyDamage": 561763.6139341817, + "partyDamagePerSecond": 9362.726898903029, + "tankDamage": 171706.57696007023, + "randomTargetDamage": 0, + "groupwideDamage": 390057.03697411146, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 2449.44, + "partyDamage": 75381.516 + }, + { + "id": "spell-30935", + "name": "Evocation", + "spellId": 30935, + "target": "primary", + "school": "arcane", + "expectedCasts": 9.709960508995174, + "targetsPerCast": 1, + "damagePerTarget": 3306.744, + "partyDamage": 32108.35365335674 + }, + { + "id": "spell-28599", + "name": "Shadow Bolt Volley", + "spellId": 28599, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 9.709960508995174, + "targetsPerCast": 5, + "damagePerTarget": 2008.5408, + "partyDamage": 97514.25924352786 + }, + { + "id": "spell-30938", + "name": "Corruption", + "spellId": 30938, + "target": "primary", + "school": "shadow", + "expectedCasts": 9.709960508995174, + "targetsPerCast": 1, + "damagePerTarget": 3306.744, + "partyDamage": 32108.35365335674 + }, + { + "id": "spell-30940", + "name": "Burning Nova", + "spellId": 30940, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 9.709960508995174, + "targetsPerCast": 5, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-37370", + "name": "Vortex", + "spellId": 37370, + "target": "primary", + "school": "physical", + "expectedCasts": 9.709960508995174, + "targetsPerCast": 1, + "damagePerTarget": 3306.744, + "partyDamage": 32108.35365335674 + }, + { + "id": "spell-33132", + "name": "Fire Nova", + "spellId": 33132, + "target": "nearby-party", + "school": "fire", + "expectedCasts": 9.709960508995174, + "targetsPerCast": 5, + "damagePerTarget": 2008.5408, + "partyDamage": 97514.25924352786 + }, + { + "id": "spell-40070", + "name": "Shadow Bolt Volley", + "spellId": 40070, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 9.709960508995174, + "targetsPerCast": 5, + "damagePerTarget": 2008.5408, + "partyDamage": 97514.25924352786 + }, + { + "id": "spell-33775", + "name": "Fire Nova", + "spellId": 33775, + "target": "nearby-party", + "school": "fire", + "expectedCasts": 9.709960508995174, + "targetsPerCast": 5, + "damagePerTarget": 2008.5408, + "partyDamage": 97514.25924352786 + } + ] + }, + { + "rank": 32, + "pressureVsMedian": 6.245727930966645, + "key": "mechanar/entry-19221", + "dungeonId": "mechanar", + "dungeonTitle": "Tempest Keep: The Mechanar", + "boss": "Nethermancer Sepethrea", + "serverEntry": 19221, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 2676.8, + "partyDamage": 550876.3513581353, + "partyDamagePerSecond": 9181.272522635589, + "tankDamage": 393430.35885253246, + "randomTargetDamage": 0, + "groupwideDamage": 157445.99250560286, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 2676.8, + "partyDamage": 82378.52 + }, + { + "id": "spell-45196", + "name": "Frost Attack", + "spellId": 45196, + "target": "primary", + "school": "frost", + "expectedCasts": 14.346033168982519, + "targetsPerCast": 1, + "damagePerTarget": 3613.6800000000003, + "partyDamage": 51841.973142088755 + }, + { + "id": "spell-35314", + "name": "Arcane Blast", + "spellId": 35314, + "target": "primary", + "school": "arcane", + "expectedCasts": 14.346033168982519, + "targetsPerCast": 1, + "damagePerTarget": 3613.6800000000003, + "partyDamage": 51841.973142088755 + }, + { + "id": "spell-35250", + "name": "Dragon's Breath", + "spellId": 35250, + "target": "nearby-party", + "school": "fire", + "expectedCasts": 14.346033168982519, + "targetsPerCast": 5, + "damagePerTarget": 2194.976, + "partyDamage": 157445.99250560286 + }, + { + "id": "spell-35277", + "name": "Quell Raging Flames", + "spellId": 35277, + "target": "primary", + "school": "physical", + "expectedCasts": 14.346033168982519, + "targetsPerCast": 1, + "damagePerTarget": 3613.6800000000003, + "partyDamage": 51841.973142088755 + }, + { + "id": "spell-35281", + "name": "Raging Flames", + "spellId": 35281, + "target": "primary", + "school": "fire", + "expectedCasts": 14.346033168982519, + "targetsPerCast": 1, + "damagePerTarget": 3613.6800000000003, + "partyDamage": 51841.973142088755 + }, + { + "id": "spell-18950", + "name": "Invisibility and Stealth Detection", + "spellId": 18950, + "target": "primary", + "school": "physical", + "expectedCasts": 14.346033168982519, + "targetsPerCast": 1, + "damagePerTarget": 3613.6800000000003, + "partyDamage": 51841.973142088755 + }, + { + "id": "spell-35268", + "name": "Inferno", + "spellId": 35268, + "target": "random-party", + "school": "physical", + "expectedCasts": 14.346033168982519, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-35283", + "name": "Inferno", + "spellId": 35283, + "target": "primary", + "school": "fire", + "expectedCasts": 14.346033168982519, + "targetsPerCast": 1, + "damagePerTarget": 3613.6800000000003, + "partyDamage": 51841.973142088755 + } + ] + }, + { + "rank": 33, + "pressureVsMedian": 6.201690454625973, + "key": "halls-of-stone/entry-27975", + "dungeonId": "halls-of-stone", + "dungeonTitle": "Halls of Stone", + "boss": "Maiden of Grief", + "serverEntry": 27975, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4233.6, + "partyDamage": 546992.22375, + "partyDamagePerSecond": 9116.5370625, + "tankDamage": 268337.9475, + "randomTargetDamage": 69024.45375000002, + "groupwideDamage": 209629.8225, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4233.6, + "partyDamage": 130289.04000000001 + }, + { + "id": "spell-50752", + "name": "Storm of Grief", + "spellId": 50752, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 12.077008928571429, + "targetsPerCast": 5, + "damagePerTarget": 3471.552, + "partyDamage": 209629.8225 + }, + { + "id": "spell-50760", + "name": "Shock of Sorrow", + "spellId": 50760, + "target": "random-party", + "school": "shadow", + "expectedCasts": 12.077008928571429, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 69024.45375000002 + }, + { + "id": "spell-50761", + "name": "Pillar of Woe", + "spellId": 50761, + "target": "primary", + "school": "shadow", + "expectedCasts": 12.077008928571429, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 69024.45375000002 + }, + { + "id": "spell-59723", + "name": "Parting Sorrow", + "spellId": 59723, + "target": "primary", + "school": "shadow", + "expectedCasts": 12.077008928571429, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 69024.45375000002 + } + ] + }, + { + "rank": 34, + "pressureVsMedian": 5.964020276163694, + "key": "utgarde-pinnacle/entry-26687", + "dungeonId": "utgarde-pinnacle", + "dungeonTitle": "Utgarde Pinnacle", + "boss": "Gortok Palehoof", + "serverEntry": 26687, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 5080.320000000001, + "partyDamage": 526029.594223857, + "partyDamagePerSecond": 8767.159903730952, + "tankDamage": 287931.84123594326, + "randomTargetDamage": 0, + "groupwideDamage": 238097.75298791382, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 25.8125, + "targetsPerCast": 1, + "damagePerTarget": 5080.320000000001, + "partyDamage": 131135.76 + }, + { + "id": "spell-16245", + "name": "Freeze Anim", + "spellId": 16245, + "target": "random-party", + "school": "physical", + "expectedCasts": 11.430898581187598, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-48256", + "name": "Withering Roar", + "spellId": 48256, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 11.430898581187598, + "targetsPerCast": 5, + "damagePerTarget": 4165.8624, + "partyDamage": 238097.75298791382 + }, + { + "id": "spell-48261", + "name": "Impale", + "spellId": 48261, + "target": "primary", + "school": "physical", + "expectedCasts": 11.430898581187598, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 78398.04061797164 + }, + { + "id": "spell-48260", + "name": "Arcing Smash", + "spellId": 48260, + "target": "primary", + "school": "physical", + "expectedCasts": 11.430898581187598, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 78398.04061797164 + } + ] + }, + { + "rank": 35, + "pressureVsMedian": 5.837107775019924, + "key": "ahnkahet-old-kingdom/entry-29308", + "dungeonId": "ahnkahet-old-kingdom", + "dungeonTitle": "Ahn'kahet: The Old Kingdom", + "boss": "Prince Taldaram", + "serverEntry": 29308, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 5032.160000000001, + "partyDamage": 514835.847659076, + "partyDamagePerSecond": 8580.5974609846, + "tankDamage": 514835.847659076, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 25.8125, + "targetsPerCast": 1, + "damagePerTarget": 5032.160000000001, + "partyDamage": 129892.63000000002 + }, + { + "id": "spell-55964", + "name": "Vanish", + "spellId": 55964, + "target": "random-party", + "school": "physical", + "expectedCasts": 14.166040238779571, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-55966", + "name": "Shadowstep", + "spellId": 55966, + "target": "primary", + "school": "physical", + "expectedCasts": 14.166040238779571, + "targetsPerCast": 1, + "damagePerTarget": 6793.416000000001, + "partyDamage": 96235.80441476898 + }, + { + "id": "spell-55959", + "name": "Embrace of the Vampyr", + "spellId": 55959, + "target": "random-party", + "school": "shadow", + "expectedCasts": 14.166040238779571, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-60425", + "name": "Hover Fall", + "spellId": 60425, + "target": "primary", + "school": "physical", + "expectedCasts": 14.166040238779571, + "targetsPerCast": 1, + "damagePerTarget": 6793.416000000001, + "partyDamage": 96235.80441476898 + }, + { + "id": "spell-55931", + "name": "Conjure Flame Sphere", + "spellId": 55931, + "target": "primary", + "school": "fire", + "expectedCasts": 14.166040238779571, + "targetsPerCast": 1, + "damagePerTarget": 6793.416000000001, + "partyDamage": 96235.80441476898 + }, + { + "id": "spell-55968", + "name": "Bloodthirst", + "spellId": 55968, + "target": "primary", + "school": "physical", + "expectedCasts": 14.166040238779571, + "targetsPerCast": 1, + "damagePerTarget": 6793.416000000001, + "partyDamage": 96235.80441476898 + } + ] + }, + { + "rank": 36, + "pressureVsMedian": 5.781543940300726, + "key": "pit-of-saron/entry-36476", + "dungeonId": "pit-of-saron", + "dungeonTitle": "Pit of Saron", + "boss": "Ick", + "serverEntry": 36476, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 3175.2000000000003, + "partyDamage": 509935.08943267004, + "partyDamagePerSecond": 8498.918157211167, + "tankDamage": 393371.8307389342, + "randomTargetDamage": 0, + "groupwideDamage": 116563.25869373581, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 40.7, + "targetsPerCast": 1, + "damagePerTarget": 3175.2000000000003, + "partyDamage": 129230.64000000001 + }, + { + "id": "spell-68987", + "name": "Pursuit", + "spellId": 68987, + "target": "primary", + "school": "physical", + "expectedCasts": 8.95378656337652, + "targetsPerCast": 1, + "damagePerTarget": 4286.52, + "partyDamage": 38380.585179644724 + }, + { + "id": "spell-69024", + "name": "Toxic Waste", + "spellId": 69024, + "target": "primary", + "school": "nature", + "expectedCasts": 20.85, + "targetsPerCast": 1, + "damagePerTarget": 4286.52, + "partyDamage": 89373.94200000001 + }, + { + "id": "spell-69021", + "name": "Mighty Kick", + "spellId": 69021, + "target": "primary", + "school": "physical", + "expectedCasts": 6.955, + "targetsPerCast": 1, + "damagePerTarget": 4286.52, + "partyDamage": 29812.746600000002 + }, + { + "id": "spell-69028", + "name": "Shadow Bolt", + "spellId": 69028, + "target": "primary", + "school": "shadow", + "expectedCasts": 6.955, + "targetsPerCast": 1, + "damagePerTarget": 4286.52, + "partyDamage": 29812.746600000002 + }, + { + "id": "spell-68989", + "name": "Poison Nova", + "spellId": 68989, + "target": "nearby-party", + "school": "nature", + "expectedCasts": 8.95378656337652, + "targetsPerCast": 5, + "damagePerTarget": 2603.664, + "partyDamage": 116563.25869373581 + }, + { + "id": "spell-69012", + "name": "Explosive Barrage", + "spellId": 69012, + "target": "primary", + "school": "arcane", + "expectedCasts": 8.95378656337652, + "targetsPerCast": 1, + "damagePerTarget": 4286.52, + "partyDamage": 38380.585179644724 + }, + { + "id": "spell-69263", + "name": "Explosive Barrage", + "spellId": 69263, + "target": "primary", + "school": "arcane", + "expectedCasts": 8.95378656337652, + "targetsPerCast": 1, + "damagePerTarget": 4286.52, + "partyDamage": 38380.585179644724 + } + ] + }, + { + "rank": 37, + "pressureVsMedian": 5.58417407175873, + "key": "the-nexus/entry-26723", + "dungeonId": "the-nexus", + "dungeonTitle": "The Nexus", + "boss": "Keristrasza", + "serverEntry": 26723, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4193.280000000001, + "partyDamage": 492526.9675528522, + "partyDamagePerSecond": 8208.782792547536, + "tankDamage": 277920.31758006243, + "randomTargetDamage": 112096.67877278972, + "groupwideDamage": 102509.97120000001, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4193.280000000001, + "partyDamage": 129048.19200000001 + }, + { + "id": "spell-48094", + "name": "Intense Cold", + "spellId": 48094, + "target": "primary", + "school": "physical", + "expectedCasts": 13.388183898481381, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 75789.54510006243 + }, + { + "id": "spell-47854", + "name": "Frozen Prison", + "spellId": 47854, + "target": "random-party", + "school": "physical", + "expectedCasts": 13.388183898481381, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-8599", + "name": "Enrage", + "spellId": 8599, + "target": "self", + "school": "physical", + "expectedCasts": 13.388183898481381, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-48096", + "name": "Crystalfire Breath", + "spellId": 48096, + "target": "nearby-party", + "school": "frost", + "expectedCasts": 5.9625, + "targetsPerCast": 5, + "damagePerTarget": 3438.4896000000003, + "partyDamage": 102509.97120000001 + }, + { + "id": "spell-50155", + "name": "Tail Sweep", + "spellId": 50155, + "target": "primary", + "school": "physical", + "expectedCasts": 12.91, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 73082.58048000002 + }, + { + "id": "spell-48179", + "name": "Crystallize", + "spellId": 48179, + "target": "random-party", + "school": "frost", + "expectedCasts": 13.388183898481381, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 75789.54510006243 + }, + { + "id": "spell-47698", + "name": "Crystal Chains", + "spellId": 47698, + "target": "random-party", + "school": "frost", + "expectedCasts": 6.413636363636364, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 36307.13367272729 + } + ] + }, + { + "rank": 38, + "pressureVsMedian": 5.505633965634974, + "key": "black-morass/entry-17879", + "dungeonId": "black-morass", + "dungeonTitle": "The Black Morass", + "boss": "Chrono Lord Deja", + "serverEntry": 17879, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 3541.4400000000005, + "partyDamage": 485599.6906085235, + "partyDamagePerSecond": 8093.3281768087245, + "tankDamage": 485599.6906085235, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 3541.4400000000005, + "partyDamage": 108987.816 + }, + { + "id": "spell-31457", + "name": "Arcane Blast", + "spellId": 31457, + "target": "primary", + "school": "arcane", + "expectedCasts": 15.754707631318137, + "targetsPerCast": 1, + "damagePerTarget": 4780.944000000001, + "partyDamage": 75322.37492170469 + }, + { + "id": "spell-31467", + "name": "Time Lapse", + "spellId": 31467, + "target": "random-party", + "school": "arcane", + "expectedCasts": 15.754707631318137, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-31472", + "name": "Arcane Discharge", + "spellId": 31472, + "target": "primary", + "school": "arcane", + "expectedCasts": 15.754707631318137, + "targetsPerCast": 1, + "damagePerTarget": 4780.944000000001, + "partyDamage": 75322.37492170469 + }, + { + "id": "spell-38540", + "name": "Attraction", + "spellId": 38540, + "target": "primary", + "school": "arcane", + "expectedCasts": 15.754707631318137, + "targetsPerCast": 1, + "damagePerTarget": 4780.944000000001, + "partyDamage": 75322.37492170469 + }, + { + "id": "spell-31550", + "name": "Banish Dragon Helper", + "spellId": 31550, + "target": "primary", + "school": "physical", + "expectedCasts": 15.754707631318137, + "targetsPerCast": 1, + "damagePerTarget": 4780.944000000001, + "partyDamage": 75322.37492170469 + }, + { + "id": "spell-38539", + "name": "Arcane Discharge", + "spellId": 38539, + "target": "primary", + "school": "arcane", + "expectedCasts": 15.754707631318137, + "targetsPerCast": 1, + "damagePerTarget": 4780.944000000001, + "partyDamage": 75322.37492170469 + } + ] + }, + { + "rank": 39, + "pressureVsMedian": 5.439725653550785, + "key": "azjol-nerub/entry-28921", + "dungeonId": "azjol-nerub", + "dungeonTitle": "Azjol-Nerub", + "boss": "Hadronox", + "serverEntry": 28921, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4233.6, + "partyDamage": 479786.5442649087, + "partyDamagePerSecond": 7996.442404415145, + "tankDamage": 303965.71389851294, + "randomTargetDamage": 0, + "groupwideDamage": 175820.83036639582, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4233.6, + "partyDamage": 130289.04000000001 + }, + { + "id": "spell-53030", + "name": "Leech Poison", + "spellId": 53030, + "target": "nearby-party", + "school": "nature", + "expectedCasts": 10.12923501456385, + "targetsPerCast": 5, + "damagePerTarget": 3471.552, + "partyDamage": 175820.83036639582 + }, + { + "id": "spell-53418", + "name": "Pierce Armor", + "spellId": 53418, + "target": "primary", + "school": "physical", + "expectedCasts": 10.12923501456385, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-53400", + "name": "Acid Cloud", + "spellId": 53400, + "target": "primary", + "school": "nature", + "expectedCasts": 10.12923501456385, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 57892.22463283765 + }, + { + "id": "spell-53406", + "name": "Web Grab", + "spellId": 53406, + "target": "primary", + "school": "physical", + "expectedCasts": 10.12923501456385, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 57892.22463283765 + }, + { + "id": "spell-53177", + "name": "Web Front Doors", + "spellId": 53177, + "target": "primary", + "school": "physical", + "expectedCasts": 10.12923501456385, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 57892.22463283765 + } + ] + }, + { + "rank": 40, + "pressureVsMedian": 5.198726164697399, + "key": "arcatraz/entry-20885", + "dungeonId": "arcatraz", + "dungeonTitle": "Tempest Keep: The Arcatraz", + "boss": "Dalliah the Doomsayer", + "serverEntry": 20885, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 3196.4800000000005, + "partyDamage": 458530.2678842976, + "partyDamagePerSecond": 7642.17113140496, + "tankDamage": 255722.08092464757, + "randomTargetDamage": 0, + "groupwideDamage": 202808.18695965, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 38.21875, + "targetsPerCast": 1, + "damagePerTarget": 3196.4800000000005, + "partyDamage": 122165.47000000002 + }, + { + "id": "spell-36173", + "name": "Gift of the Doomsayer", + "spellId": 36173, + "target": "primary", + "school": "shadow", + "expectedCasts": 15.474963539134663, + "targetsPerCast": 1, + "damagePerTarget": 4315.2480000000005, + "partyDamage": 66778.30546232378 + }, + { + "id": "spell-36142", + "name": "Whirlwind", + "spellId": 36142, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 15.474963539134663, + "targetsPerCast": 5, + "damagePerTarget": 2621.1136, + "partyDamage": 202808.18695965 + }, + { + "id": "spell-36144", + "name": "Heal", + "spellId": 36144, + "target": "lowest-health-friendly", + "school": "holy", + "expectedCasts": 15.474963539134663, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-39016", + "name": "Shadow Wave", + "spellId": 39016, + "target": "primary", + "school": "shadow", + "expectedCasts": 15.474963539134663, + "targetsPerCast": 1, + "damagePerTarget": 4315.2480000000005, + "partyDamage": 66778.30546232378 + } + ] + }, + { + "rank": 41, + "pressureVsMedian": 5.0789317938591365, + "key": "utgarde-keep/wrath-batch-three-entry-23980", + "dungeonId": "utgarde-keep", + "dungeonTitle": "Utgarde Keep", + "boss": "Ingvar the Plunderer (Undead)", + "serverEntry": 23980, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4460.4, + "partyDamage": 447964.344, + "partyDamagePerSecond": 7466.0724, + "tankDamage": 199089.95399999997, + "randomTargetDamage": 11915.64, + "groupwideDamage": 236958.75, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4460.4, + "partyDamage": 137268.80999999997 + }, + { + "id": "dreadful-roar-42729", + "name": "Dreadful Roar", + "spellId": 42729, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 3.5714285714285716, + "targetsPerCast": 5, + "damagePerTarget": 3122.2799999999997, + "partyDamage": 55755 + }, + { + "id": "woe-strike-42730", + "name": "Woe Strike", + "spellId": 42730, + "target": "primary", + "school": "physical", + "expectedCasts": 12.6, + "targetsPerCast": 1, + "damagePerTarget": 4906.44, + "partyDamage": 61821.14399999999 + }, + { + "id": "dark-smash-42723", + "name": "Dark Smash", + "spellId": 42723, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 6.5, + "targetsPerCast": 5, + "damagePerTarget": 5575.5, + "partyDamage": 181203.75 + }, + { + "id": "shadow-axe-42749", + "name": "Shadow Axe", + "spellId": 42749, + "target": "random-party", + "school": "physical", + "expectedCasts": 2.428571428571429, + "targetsPerCast": 1, + "damagePerTarget": 4906.44, + "partyDamage": 11915.64 + } + ] + }, + { + "rank": 42, + "pressureVsMedian": 5.045237391263923, + "key": "ahnkahet-old-kingdom/entry-30258", + "dungeonId": "ahnkahet-old-kingdom", + "dungeonTitle": "Ahn'kahet: The Old Kingdom", + "boss": "Amanitar", + "serverEntry": 30258, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4233.6, + "partyDamage": 444992.4807091232, + "partyDamagePerSecond": 7416.5413451520535, + "tankDamage": 286675.4123769262, + "randomTargetDamage": 0, + "groupwideDamage": 158317.06833219694, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4233.6, + "partyDamage": 130289.04000000001 + }, + { + "id": "spell-57095", + "name": "Entangling Roots", + "spellId": 57095, + "target": "random-party", + "school": "nature", + "expectedCasts": 9.120823673803354, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-57094", + "name": "Bash", + "spellId": 57094, + "target": "primary", + "school": "physical", + "expectedCasts": 9.120823673803354, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 52128.79079230874 + }, + { + "id": "spell-57088", + "name": "Venom Bolt Volley", + "spellId": 57088, + "target": "nearby-party", + "school": "nature", + "expectedCasts": 9.120823673803354, + "targetsPerCast": 5, + "damagePerTarget": 3471.552, + "partyDamage": 158317.06833219694 + }, + { + "id": "spell-57055", + "name": "Mini", + "spellId": 57055, + "target": "primary", + "school": "nature", + "expectedCasts": 9.120823673803354, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 52128.79079230874 + }, + { + "id": "spell-57283", + "name": "Remove Mushroom Power", + "spellId": 57283, + "target": "primary", + "school": "nature", + "expectedCasts": 9.120823673803354, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 52128.79079230874 + } + ] + }, + { + "rank": 43, + "pressureVsMedian": 4.974650501364028, + "key": "arcatraz/entry-20886", + "dungeonId": "arcatraz", + "dungeonTitle": "Tempest Keep: The Arcatraz", + "boss": "Wrath-Scryer Soccothrates", + "serverEntry": 20886, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 3759.84, + "partyDamage": 438766.68144416, + "partyDamagePerSecond": 7312.778024069334, + "tankDamage": 374155.160355328, + "randomTargetDamage": 64611.52108883199, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 3759.84, + "partyDamage": 115709.076 + }, + { + "id": "spell-36051", + "name": "Fel Immolation", + "spellId": 36051, + "target": "primary", + "school": "fire", + "expectedCasts": 12.729367736852472, + "targetsPerCast": 1, + "damagePerTarget": 5075.784000000001, + "partyDamage": 64611.52108883199 + }, + { + "id": "spell-36512", + "name": "Knock Away", + "spellId": 36512, + "target": "random-party", + "school": "physical", + "expectedCasts": 12.729367736852472, + "targetsPerCast": 1, + "damagePerTarget": 5075.784000000001, + "partyDamage": 64611.52108883199 + }, + { + "id": "spell-35754", + "name": "Charge", + "spellId": 35754, + "target": "primary", + "school": "physical", + "expectedCasts": 12.729367736852472, + "targetsPerCast": 1, + "damagePerTarget": 5075.784000000001, + "partyDamage": 64611.52108883199 + }, + { + "id": "spell-35769", + "name": "Felfire", + "spellId": 35769, + "target": "primary", + "school": "fire", + "expectedCasts": 12.729367736852472, + "targetsPerCast": 1, + "damagePerTarget": 5075.784000000001, + "partyDamage": 64611.52108883199 + }, + { + "id": "spell-35759", + "name": "Felfire Shock", + "spellId": 35759, + "target": "primary", + "school": "fire", + "expectedCasts": 12.729367736852472, + "targetsPerCast": 1, + "damagePerTarget": 5075.784000000001, + "partyDamage": 64611.52108883199 + } + ] + }, + { + "rank": 44, + "pressureVsMedian": 4.970647644813849, + "key": "halls-of-lightning/entry-28587", + "dungeonId": "halls-of-lightning", + "dungeonTitle": "Halls of Lightning", + "boss": "Volkhan", + "serverEntry": 28587, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4233.6, + "partyDamage": 438413.62747899455, + "partyDamagePerSecond": 7306.8937913165755, + "tankDamage": 239362.31711865004, + "randomTargetDamage": 0, + "groupwideDamage": 199051.31036034453, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4233.6, + "partyDamage": 130289.04000000001 + }, + { + "id": "spell-52238", + "name": "Temper", + "spellId": 52238, + "target": "primary", + "school": "physical", + "expectedCasts": 11.46756899279311, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 65541.28511865003 + }, + { + "id": "spell-52387", + "name": "Heat", + "spellId": 52387, + "target": "primary", + "school": "fire", + "expectedCasts": 7.616666666666666, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 43531.992000000006 + }, + { + "id": "spell-52237", + "name": "Shattering Stomp", + "spellId": 52237, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 11.46756899279311, + "targetsPerCast": 5, + "damagePerTarget": 3471.552, + "partyDamage": 199051.31036034453 + } + ] + }, + { + "rank": 45, + "pressureVsMedian": 4.911736031177434, + "key": "gundrak/entry-29305", + "dungeonId": "gundrak", + "dungeonTitle": "Gundrak", + "boss": "Moorabi", + "serverEntry": 29305, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 2116.8, + "partyDamage": 433217.59346480947, + "partyDamagePerSecond": 7220.293224413491, + "tankDamage": 195186.85541788858, + "randomTargetDamage": 31220.154000000006, + "groupwideDamage": 206810.58404692082, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 48.64, + "targetsPerCast": 1, + "damagePerTarget": 2116.8, + "partyDamage": 102961.15200000002 + }, + { + "id": "spell-55163", + "name": "Mojo Frenzy", + "spellId": 55163, + "target": "self", + "school": "physical", + "expectedCasts": 11.914589442815249, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-55101", + "name": "Quake", + "spellId": 55101, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 11.914589442815249, + "targetsPerCast": 5, + "damagePerTarget": 1735.776, + "partyDamage": 103405.29202346041 + }, + { + "id": "spell-55142", + "name": "Ground Tremor", + "spellId": 55142, + "target": "random-party", + "school": "physical", + "expectedCasts": 10.925, + "targetsPerCast": 1, + "damagePerTarget": 2857.6800000000003, + "partyDamage": 31220.154000000006 + }, + { + "id": "spell-55100", + "name": "Numbing Roar", + "spellId": 55100, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 11.914589442815249, + "targetsPerCast": 5, + "damagePerTarget": 1735.776, + "partyDamage": 103405.29202346041 + }, + { + "id": "spell-55106", + "name": "Numbing Shout", + "spellId": 55106, + "target": "primary", + "school": "physical", + "expectedCasts": 11.914589442815249, + "targetsPerCast": 1, + "damagePerTarget": 2857.6800000000003, + "partyDamage": 34048.083958944284 + }, + { + "id": "spell-55102", + "name": "Determined Gore", + "spellId": 55102, + "target": "primary", + "school": "physical", + "expectedCasts": 11.914589442815249, + "targetsPerCast": 1, + "damagePerTarget": 2857.6800000000003, + "partyDamage": 34048.083958944284 + }, + { + "id": "spell-55104", + "name": "Determined Stab", + "spellId": 55104, + "target": "primary", + "school": "physical", + "expectedCasts": 8.44375, + "targetsPerCast": 1, + "damagePerTarget": 2857.6800000000003, + "partyDamage": 24129.5355 + } + ] + }, + { + "rank": 46, + "pressureVsMedian": 4.906573135911378, + "key": "shadow-labyrinth/entry-18667", + "dungeonId": "shadow-labyrinth", + "dungeonTitle": "Auchindoun: Shadow Labyrinth", + "boss": "Blackheart the Inciter", + "serverEntry": 18667, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 3363.36, + "partyDamage": 432762.223500244, + "partyDamagePerSecond": 7212.703725004068, + "tankDamage": 218586.6103113714, + "randomTargetDamage": 0, + "groupwideDamage": 214175.61318887264, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 23.055555555555557, + "targetsPerCast": 1, + "damagePerTarget": 3363.36, + "partyDamage": 77544.13333333335 + }, + { + "id": "spell-33676", + "name": "Incite Chaos", + "spellId": 33676, + "target": "primary", + "school": "physical", + "expectedCasts": 15.531478770131772, + "targetsPerCast": 1, + "damagePerTarget": 4540.536, + "partyDamage": 70521.23848901903 + }, + { + "id": "spell-33722", + "name": "Laugh", + "spellId": 33722, + "target": "random-party", + "school": "physical", + "expectedCasts": 15.531478770131772, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-33684", + "name": "Incite Chaos", + "spellId": 33684, + "target": "random-party", + "school": "physical", + "expectedCasts": 15.531478770131772, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-33709", + "name": "Charge", + "spellId": 33709, + "target": "primary", + "school": "physical", + "expectedCasts": 15.531478770131772, + "targetsPerCast": 1, + "damagePerTarget": 4540.536, + "partyDamage": 70521.23848901903 + }, + { + "id": "spell-33707", + "name": "War Stomp", + "spellId": 33707, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 15.531478770131772, + "targetsPerCast": 5, + "damagePerTarget": 2757.9552, + "partyDamage": 214175.61318887264 + } + ] + }, + { + "rank": 47, + "pressureVsMedian": 4.532141533980383, + "key": "ahnkahet-old-kingdom/entry-29309", + "dungeonId": "ahnkahet-old-kingdom", + "dungeonTitle": "Ahn'kahet: The Old Kingdom", + "boss": "Elder Nadox", + "serverEntry": 29309, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 5032.160000000001, + "partyDamage": 399737.1674964029, + "partyDamagePerSecond": 6662.2861249400485, + "tankDamage": 399737.1674964029, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 25.8125, + "targetsPerCast": 1, + "damagePerTarget": 5032.160000000001, + "partyDamage": 129892.63000000002 + }, + { + "id": "spell-59465", + "name": "Brood Rage", + "spellId": 59465, + "target": "primary", + "school": "shadow", + "expectedCasts": 13.24049331963001, + "targetsPerCast": 1, + "damagePerTarget": 6793.416000000001, + "partyDamage": 89948.17916546763 + }, + { + "id": "spell-56130", + "name": "Brood Plague", + "spellId": 56130, + "target": "primary", + "school": "nature", + "expectedCasts": 13.24049331963001, + "targetsPerCast": 1, + "damagePerTarget": 6793.416000000001, + "partyDamage": 89948.17916546763 + }, + { + "id": "spell-26662", + "name": "Berserk", + "spellId": 26662, + "target": "primary", + "school": "physical", + "expectedCasts": 13.24049331963001, + "targetsPerCast": 1, + "damagePerTarget": 6793.416000000001, + "partyDamage": 89948.17916546763 + } + ] + }, + { + "rank": 48, + "pressureVsMedian": 4.437562642499186, + "key": "halls-of-reflection/entry-38113", + "dungeonId": "halls-of-reflection", + "dungeonTitle": "Halls of Reflection", + "boss": "Marwyn", + "serverEntry": 38113, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4233.6, + "partyDamage": 391395.2616, + "partyDamagePerSecond": 6523.254360000001, + "tankDamage": 391395.2616, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4233.6, + "partyDamage": 130289.04000000001 + }, + { + "id": "spell-72360", + "name": "Obliterate", + "spellId": 72360, + "target": "primary", + "school": "physical", + "expectedCasts": 20.85, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 119165.25600000002 + }, + { + "id": "spell-72362", + "name": "Well of Corruption", + "spellId": 72362, + "target": "primary", + "school": "shadow", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 34077.834 + }, + { + "id": "spell-72363", + "name": "Corrupted Flesh", + "spellId": 72363, + "target": "primary", + "school": "shadow", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 34077.834 + }, + { + "id": "spell-72368", + "name": "Shared Suffering", + "spellId": 72368, + "target": "primary", + "school": "shadow", + "expectedCasts": 12.91, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 73785.2976 + } + ] + }, + { + "rank": 49, + "pressureVsMedian": 4.395300141142051, + "key": "violet-hold/entry-31134", + "dungeonId": "violet-hold", + "dungeonTitle": "Violet Hold", + "boss": "Cyanigosa", + "serverEntry": 31134, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4193.280000000001, + "partyDamage": 387667.6876800001, + "partyDamagePerSecond": 6461.128128000001, + "tankDamage": 387667.6876800001, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4193.280000000001, + "partyDamage": 129048.19200000001 + }, + { + "id": "spell-58694", + "name": "Arcane Vacuum", + "spellId": 58694, + "target": "primary", + "school": "arcane", + "expectedCasts": 20.85, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 118030.34880000005 + }, + { + "id": "spell-58693", + "name": "Blizzard", + "spellId": 58693, + "target": "nearby-party", + "school": "frost", + "expectedCasts": 12.91, + "targetsPerCast": 5, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-59374", + "name": "Mana Destruction", + "spellId": 59374, + "target": "primary", + "school": "arcane", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 33753.28320000001 + }, + { + "id": "spell-58690", + "name": "Tail Sweep", + "spellId": 58690, + "target": "primary", + "school": "physical", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 33753.28320000001 + }, + { + "id": "spell-58688", + "name": "Uncontrollable Energy", + "spellId": 58688, + "target": "primary", + "school": "arcane", + "expectedCasts": 12.91, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 73082.58048000002 + } + ] + }, + { + "rank": 50, + "pressureVsMedian": 4.373585065228199, + "key": "violet-hold/entry-29315", + "dungeonId": "violet-hold", + "dungeonTitle": "Violet Hold", + "boss": "Erekem", + "serverEntry": 29315, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4193.280000000001, + "partyDamage": 385752.4070400001, + "partyDamagePerSecond": 6429.206784000001, + "tankDamage": 385752.4070400001, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4193.280000000001, + "partyDamage": 129048.19200000001 + }, + { + "id": "spell-54479", + "name": "Earth Shield", + "spellId": 54479, + "target": "self", + "school": "nature", + "expectedCasts": 5.9625, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-54516", + "name": "Bloodlust", + "spellId": 54516, + "target": "random-party", + "school": "nature", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-59463", + "name": "Break Bonds", + "spellId": 59463, + "target": "primary", + "school": "physical", + "expectedCasts": 7.616666666666666, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 43117.40160000001 + }, + { + "id": "spell-54481", + "name": "Chain Heal", + "spellId": 54481, + "target": "lowest-health-friendly", + "school": "nature", + "expectedCasts": 20.85, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-54511", + "name": "Earth Shock", + "spellId": 54511, + "target": "primary", + "school": "nature", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 140504.23296000005 + }, + { + "id": "spell-53044", + "name": "Lightning Bolt", + "spellId": 53044, + "target": "primary", + "school": "nature", + "expectedCasts": 12.91, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 73082.58048000002 + }, + { + "id": "spell-51876", + "name": "Stormstrike", + "spellId": 51876, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 20.85, + "targetsPerCast": 5, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 51, + "pressureVsMedian": 4.3181647083935895, + "key": "mana-tombs/entry-18344", + "dungeonId": "mana-tombs", + "dungeonTitle": "Auchindoun: Mana-Tombs", + "boss": "Nexus-Prince Shaffar", + "serverEntry": 18344, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 2470.7200000000003, + "partyDamage": 380864.30363532767, + "partyDamagePerSecond": 6347.738393922128, + "tankDamage": 177022.33661538464, + "randomTargetDamage": 50492.96430769232, + "groupwideDamage": 153349.00271225075, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 2470.7200000000003, + "partyDamage": 76036.40800000001 + }, + { + "id": "spell-32371", + "name": "Summon Ethereal Becon", + "spellId": 32371, + "target": "self", + "school": "physical", + "expectedCasts": 15.138176638176638, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-32364", + "name": "Frostbolt", + "spellId": 32364, + "target": "random-party", + "school": "frost", + "expectedCasts": 15.138176638176638, + "targetsPerCast": 1, + "damagePerTarget": 3335.4720000000007, + "partyDamage": 50492.96430769232 + }, + { + "id": "spell-32363", + "name": "Fireball", + "spellId": 32363, + "target": "primary", + "school": "fire", + "expectedCasts": 15.138176638176638, + "targetsPerCast": 1, + "damagePerTarget": 3335.4720000000007, + "partyDamage": 50492.96430769232 + }, + { + "id": "spell-32365", + "name": "Frost Nova", + "spellId": 32365, + "target": "nearby-party", + "school": "frost", + "expectedCasts": 15.138176638176638, + "targetsPerCast": 5, + "damagePerTarget": 2025.9904000000001, + "partyDamage": 153349.00271225075 + }, + { + "id": "spell-34605", + "name": "Blink", + "spellId": 34605, + "target": "primary", + "school": "nature", + "expectedCasts": 15.138176638176638, + "targetsPerCast": 1, + "damagePerTarget": 3335.4720000000007, + "partyDamage": 50492.96430769232 + } + ] + }, + { + "rank": 52, + "pressureVsMedian": 4.267416529048406, + "key": "forge-of-souls/entry-36497", + "dungeonId": "forge-of-souls", + "dungeonTitle": "The Forge of Souls", + "boss": "Bronjahm", + "serverEntry": 36497, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4193.280000000001, + "partyDamage": 376388.2886400001, + "partyDamagePerSecond": 6273.138144000001, + "tankDamage": 376388.2886400001, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4193.280000000001, + "partyDamage": 129048.19200000001 + }, + { + "id": "spell-70043", + "name": "Shadow Bolt", + "spellId": 70043, + "target": "primary", + "school": "shadow", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 140504.23296000005 + }, + { + "id": "spell-68950", + "name": "Fear", + "spellId": 68950, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 8.44375, + "targetsPerCast": 5, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-68793", + "name": "Magic's Bane", + "spellId": 68793, + "target": "primary", + "school": "physical", + "expectedCasts": 12.91, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 73082.58048000002 + }, + { + "id": "spell-68839", + "name": "Corrupt Soul", + "spellId": 68839, + "target": "primary", + "school": "shadow", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 33753.28320000001 + }, + { + "id": "spell-68872", + "name": "Soulstorm", + "spellId": 68872, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 10.204018547140649, + "targetsPerCast": 5, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 53, + "pressureVsMedian": 4.177049702573127, + "key": "trial-of-the-champion/wrath-event-black-knight-phase-3", + "dungeonId": "trial-of-the-champion", + "dungeonTitle": "Trial of the Champion", + "boss": "The Black Knight", + "serverEntry": 35451, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4014.3599999999997, + "partyDamage": 368417.8889999999, + "partyDamagePerSecond": 6140.298149999999, + "tankDamage": 123541.92899999999, + "randomTargetDamage": 0, + "groupwideDamage": 244875.95999999993, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4014.3599999999997, + "partyDamage": 123541.92899999999 + }, + { + "id": "death-bite-67808", + "name": "Death's Bite", + "spellId": 67808, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 20.333333333333332, + "targetsPerCast": 5, + "damagePerTarget": 2408.6159999999995, + "partyDamage": 244875.95999999993 + }, + { + "id": "marked-for-death-67823", + "name": "Marked for Death", + "spellId": 67823, + "target": "random-party", + "school": "shadow", + "expectedCasts": 7.555555555555555, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 54, + "pressureVsMedian": 4.149231941688738, + "key": "halls-of-lightning/entry-28546", + "dungeonId": "halls-of-lightning", + "dungeonTitle": "Halls of Lightning", + "boss": "Ionar", + "serverEntry": 28546, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4233.6, + "partyDamage": 365964.3484698453, + "partyDamagePerSecond": 6099.405807830755, + "tankDamage": 365964.3484698453, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4233.6, + "partyDamage": 130289.04000000001 + }, + { + "id": "spell-52770", + "name": "Disperse", + "spellId": 52770, + "target": "primary", + "school": "nature", + "expectedCasts": 10.401641932428165, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 59449.12823492264 + }, + { + "id": "spell-52663", + "name": "Random Lightning Visual", + "spellId": 52663, + "target": "primary", + "school": "physical", + "expectedCasts": 10.401641932428165, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 59449.12823492264 + }, + { + "id": "spell-52780", + "name": "Ball Lightning", + "spellId": 52780, + "target": "primary", + "school": "nature", + "expectedCasts": 9.507142857142858, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 54336.74400000001 + }, + { + "id": "spell-52658", + "name": "Static Overload", + "spellId": 52658, + "target": "primary", + "school": "nature", + "expectedCasts": 10.925, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 62440.30800000001 + } + ] + }, + { + "rank": 55, + "pressureVsMedian": 4.145094470283409, + "key": "botanica/entry-17977", + "dungeonId": "botanica", + "dungeonTitle": "Tempest Keep: The Botanica", + "boss": "Warp Splinter", + "serverEntry": 17977, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 2820.1600000000003, + "partyDamage": 365599.4214066097, + "partyDamagePerSecond": 6093.323690110162, + "tankDamage": 86790.424, + "randomTargetDamage": 0, + "groupwideDamage": 278808.9974066097, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 2820.1600000000003, + "partyDamage": 86790.424 + }, + { + "id": "spell-36705", + "name": "Arcane Volley", + "spellId": 36705, + "target": "nearby-party", + "school": "arcane", + "expectedCasts": 12.056442629038248, + "targetsPerCast": 5, + "damagePerTarget": 2312.5312, + "partyDamage": 139404.49870330485 + }, + { + "id": "spell-34716", + "name": "Stomp", + "spellId": 34716, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 12.056442629038248, + "targetsPerCast": 5, + "damagePerTarget": 2312.5312, + "partyDamage": 139404.49870330485 + } + ] + }, + { + "rank": 56, + "pressureVsMedian": 4.115022485585797, + "key": "pit-of-saron/entry-36658", + "dungeonId": "pit-of-saron", + "dungeonTitle": "Pit of Saron", + "boss": "Scourgelord Tyrannus", + "serverEntry": 36658, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4233.6, + "partyDamage": 362947.05720000004, + "partyDamagePerSecond": 6049.117620000001, + "tankDamage": 362947.05720000004, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4233.6, + "partyDamage": 130289.04000000001 + }, + { + "id": "spell-69155", + "name": "Forceful Smash", + "spellId": 69155, + "target": "primary", + "school": "physical", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 141855.23520000002 + }, + { + "id": "spell-69167", + "name": "Unholy Power", + "spellId": 69167, + "target": "random-party", + "school": "physical", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-69172", + "name": "Overlord's Brand", + "spellId": 69172, + "target": "primary", + "school": "physical", + "expectedCasts": 15.8875, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 90802.782 + } + ] + }, + { + "rank": 57, + "pressureVsMedian": 4.0830966680190395, + "key": "utgarde-pinnacle/entry-26668", + "dungeonId": "utgarde-pinnacle", + "dungeonTitle": "Utgarde Pinnacle", + "boss": "Svala Sorrowgrave", + "serverEntry": 26668, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4233.6, + "partyDamage": 360131.184, + "partyDamagePerSecond": 6002.1864000000005, + "tankDamage": 220676.40000000002, + "randomTargetDamage": 0, + "groupwideDamage": 139454.784, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4233.6, + "partyDamage": 130289.04000000001 + }, + { + "id": "svala-sinister-strike", + "name": "Sinister Strike", + "spellId": 15667, + "target": "primary", + "school": "physical", + "expectedCasts": 15.25, + "targetsPerCast": 1, + "damagePerTarget": 5927.04, + "partyDamage": 90387.36 + }, + { + "id": "svala-call-flames", + "name": "Call Flames", + "spellId": 48258, + "target": "nearby-party", + "school": "fire", + "expectedCasts": 5.9, + "targetsPerCast": 5, + "damagePerTarget": 3471.552, + "partyDamage": 102410.784 + }, + { + "id": "svala-ritual-of-the-sword", + "name": "Ritual of the Sword", + "spellId": 48331, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 1, + "targetsPerCast": 5, + "damagePerTarget": 7408.800000000001, + "partyDamage": 37044.00000000001 + } + ] + }, + { + "rank": 58, + "pressureVsMedian": 4.07659224092177, + "key": "azjol-nerub/entry-29120", + "dungeonId": "azjol-nerub", + "dungeonTitle": "Azjol-Nerub", + "boss": "Anub'arak", + "serverEntry": 29120, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4233.6, + "partyDamage": 359557.4902517896, + "partyDamagePerSecond": 5992.624837529827, + "tankDamage": 359557.4902517896, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4233.6, + "partyDamage": 130289.04000000001 + }, + { + "id": "spell-34098", + "name": "ClearAllDebuffs", + "spellId": 34098, + "target": "primary", + "school": "physical", + "expectedCasts": 11.995199409158051, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 68556.88289512557 + }, + { + "id": "spell-53421", + "name": "Submerge", + "spellId": 53421, + "target": "random-party", + "school": "physical", + "expectedCasts": 11.995199409158051, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-53467", + "name": "Leeching Swarm", + "spellId": 53467, + "target": "primary", + "school": "nature", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 34077.834 + }, + { + "id": "spell-53456", + "name": "Impale", + "spellId": 53456, + "target": "primary", + "school": "physical", + "expectedCasts": 11.995199409158051, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 68556.88289512557 + }, + { + "id": "spell-53520", + "name": "Carrion Beetles", + "spellId": 53520, + "target": "primary", + "school": "physical", + "expectedCasts": 10.161538461538461, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 58076.850461538466 + }, + { + "id": "spell-42716", + "name": "Self Root Forever (No Visual)", + "spellId": 42716, + "target": "random-party", + "school": "physical", + "expectedCasts": 11.995199409158051, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-53472", + "name": "Pound", + "spellId": 53472, + "target": "random-party", + "school": "physical", + "expectedCasts": 19.045454545454547, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-53500", + "name": "Emerge", + "spellId": 53500, + "target": "random-party", + "school": "physical", + "expectedCasts": 12.91, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 59, + "pressureVsMedian": 3.86822397491651, + "key": "culling-of-stratholme/entry-26532", + "dungeonId": "culling-of-stratholme", + "dungeonTitle": "The Culling of Stratholme", + "boss": "Chrono-Lord Epoch", + "serverEntry": 26532, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4193.280000000001, + "partyDamage": 341179.3041725196, + "partyDamagePerSecond": 5686.32173620866, + "tankDamage": 341179.3041725196, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4193.280000000001, + "partyDamage": 129048.19200000001 + }, + { + "id": "spell-52737", + "name": "Time Step", + "spellId": 52737, + "target": "primary", + "school": "physical", + "expectedCasts": 9.006184458187684, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 50983.36177251951 + }, + { + "id": "spell-52772", + "name": "Curse of Exertion", + "spellId": 52772, + "target": "primary", + "school": "physical", + "expectedCasts": 7.616666666666666, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 43117.40160000001 + }, + { + "id": "spell-52771", + "name": "Wounding Strike", + "spellId": 52771, + "target": "primary", + "school": "physical", + "expectedCasts": 20.85, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 118030.34880000005 + }, + { + "id": "spell-58848", + "name": "Time Stop", + "spellId": 58848, + "target": "random-party", + "school": "arcane", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-52766", + "name": "Time Warp", + "spellId": 52766, + "target": "random-party", + "school": "arcane", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 60, + "pressureVsMedian": 3.8368160753367127, + "key": "forge-of-souls/entry-36502", + "dungeonId": "forge-of-souls", + "dungeonTitle": "The Forge of Souls", + "boss": "Devourer of Souls", + "serverEntry": 36502, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4233.6, + "partyDamage": 338409.11160000006, + "partyDamagePerSecond": 5640.151860000001, + "tankDamage": 338409.11160000006, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4233.6, + "partyDamage": 130289.04000000001 + }, + { + "id": "spell-68982", + "name": "Phantom Blast", + "spellId": 68982, + "target": "primary", + "school": "shadow", + "expectedCasts": 12.91, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 73785.2976 + }, + { + "id": "spell-68899", + "name": "Wailing Souls", + "spellId": 68899, + "target": "random-party", + "school": "physical", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-69051", + "name": "Mirrored Soul", + "spellId": 69051, + "target": "primary", + "school": "shadow", + "expectedCasts": 7.616666666666666, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 43531.992000000006 + }, + { + "id": "spell-68820", + "name": "Well of Souls", + "spellId": 68820, + "target": "primary", + "school": "physical", + "expectedCasts": 15.8875, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 90802.782 + }, + { + "id": "spell-68939", + "name": "Unleashed Souls", + "spellId": 68939, + "target": "random-party", + "school": "shadow", + "expectedCasts": 12.91, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 61, + "pressureVsMedian": 3.8335811447244916, + "key": "shadow-labyrinth/entry-18732", + "dungeonId": "shadow-labyrinth", + "dungeonTitle": "Auchindoun: Shadow Labyrinth", + "boss": "Grandmaster Vorpil", + "serverEntry": 18732, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 2470.7200000000003, + "partyDamage": 338123.7890895971, + "partyDamagePerSecond": 5635.396484826619, + "tankDamage": 76036.40800000001, + "randomTargetDamage": 0, + "groupwideDamage": 262087.38108959713, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 2470.7200000000003, + "partyDamage": 76036.40800000001 + }, + { + "id": "spell-33841", + "name": "Shadow Bolt Volley", + "spellId": 33841, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 12.936259771497294, + "targetsPerCast": 5, + "damagePerTarget": 2025.9904000000001, + "partyDamage": 131043.69054479856 + }, + { + "id": "spell-33563", + "name": "Draw Shadows", + "spellId": 33563, + "target": "random-party", + "school": "arcane", + "expectedCasts": 12.936259771497294, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-33617", + "name": "Rain of Fire", + "spellId": 33617, + "target": "nearby-party", + "school": "fire", + "expectedCasts": 12.936259771497294, + "targetsPerCast": 5, + "damagePerTarget": 2025.9904000000001, + "partyDamage": 131043.69054479856 + }, + { + "id": "spell-38791", + "name": "Banish", + "spellId": 38791, + "target": "random-party", + "school": "shadow", + "expectedCasts": 12.936259771497294, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 62, + "pressureVsMedian": 3.832797879397533, + "key": "culling-of-stratholme/entry-26530", + "dungeonId": "culling-of-stratholme", + "dungeonTitle": "The Culling of Stratholme", + "boss": "Salramm the Fleshcrafter", + "serverEntry": 26530, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4193.280000000001, + "partyDamage": 338054.70469299366, + "partyDamagePerSecond": 5634.245078216561, + "tankDamage": 338054.70469299366, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4193.280000000001, + "partyDamage": 129048.19200000001 + }, + { + "id": "spell-52480", + "name": "Explode Ghoul", + "spellId": 52480, + "target": "primary", + "school": "fire", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 33753.28320000001 + }, + { + "id": "spell-57725", + "name": "Shadow Bolt", + "spellId": 57725, + "target": "primary", + "school": "shadow", + "expectedCasts": 9.507142857142858, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 53819.25120000002 + }, + { + "id": "spell-52708", + "name": "Steal Flesh", + "spellId": 52708, + "target": "primary", + "school": "shadow", + "expectedCasts": 10.72562469377756, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 60716.98914649683 + }, + { + "id": "spell-58845", + "name": "Curse of Twisted Flesh", + "spellId": 58845, + "target": "primary", + "school": "shadow", + "expectedCasts": 10.72562469377756, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 60716.98914649683 + } + ] + }, + { + "rank": 63, + "pressureVsMedian": 3.788217352597071, + "key": "utgarde-pinnacle/entry-26693", + "dungeonId": "utgarde-pinnacle", + "dungeonTitle": "Utgarde Pinnacle", + "boss": "Skadi the Ruthless", + "serverEntry": 26693, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 5080.320000000001, + "partyDamage": 334122.6797606074, + "partyDamagePerSecond": 5568.711329343457, + "tankDamage": 266460.3731737383, + "randomTargetDamage": 67662.30658686915, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 25.8125, + "targetsPerCast": 1, + "damagePerTarget": 5080.320000000001, + "partyDamage": 131135.76 + }, + { + "id": "spell-49308", + "name": "Utgarde Pinnacle Guantlet Reset Check", + "spellId": 49308, + "target": "primary", + "school": "physical", + "expectedCasts": 9.86556498436802, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 67662.30658686915 + }, + { + "id": "spell-50234", + "name": "Crush", + "spellId": 50234, + "target": "random-party", + "school": "physical", + "expectedCasts": 9.86556498436802, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 67662.30658686915 + }, + { + "id": "spell-50255", + "name": "Poisoned Spear", + "spellId": 50255, + "target": "primary", + "school": "physical", + "expectedCasts": 9.86556498436802, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 67662.30658686915 + }, + { + "id": "spell-50228", + "name": "Whirlwind", + "spellId": 50228, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 9.86556498436802, + "targetsPerCast": 5, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 64, + "pressureVsMedian": 3.748077572864074, + "key": "the-nexus/entry-26794", + "dungeonId": "the-nexus", + "dungeonTitle": "The Nexus", + "boss": "Ormorok the Tree-Shaper", + "serverEntry": 26794, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 5080.320000000001, + "partyDamage": 330582.33095770807, + "partyDamagePerSecond": 5509.705515961801, + "tankDamage": 330582.33095770807, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 25.8125, + "targetsPerCast": 1, + "damagePerTarget": 5080.320000000001, + "partyDamage": 131135.76 + }, + { + "id": "spell-48017", + "name": "Frenzy", + "spellId": 48017, + "target": "self", + "school": "physical", + "expectedCasts": 14.540245566166439, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-48016", + "name": "Trample", + "spellId": 48016, + "target": "primary", + "school": "physical", + "expectedCasts": 14.540245566166439, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 99723.28547885404 + }, + { + "id": "spell-47981", + "name": "Spell Reflection", + "spellId": 47981, + "target": "self", + "school": "physical", + "expectedCasts": 14.540245566166439, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-47958", + "name": "Crystal Spikes", + "spellId": 47958, + "target": "primary", + "school": "physical", + "expectedCasts": 14.540245566166439, + "targetsPerCast": 1, + "damagePerTarget": 6858.432000000002, + "partyDamage": 99723.28547885404 + } + ] + }, + { + "rank": 65, + "pressureVsMedian": 3.681114034966999, + "key": "sethekk-halls/entry-18472", + "dungeonId": "sethekk-halls", + "dungeonTitle": "Auchindoun: Sethekk Halls", + "boss": "Darkweaver Syth", + "serverEntry": 18472, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 2571.5200000000004, + "partyDamage": 324676.113165563, + "partyDamagePerSecond": 5411.268552759383, + "tankDamage": 275568.5961324504, + "randomTargetDamage": 49107.51703311259, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 2571.5200000000004, + "partyDamage": 79138.528 + }, + { + "id": "spell-15039", + "name": "Flame Shock", + "spellId": 15039, + "target": "primary", + "school": "fire", + "expectedCasts": 14.14569536423841, + "targetsPerCast": 1, + "damagePerTarget": 3471.552000000001, + "partyDamage": 49107.51703311259 + }, + { + "id": "spell-33534", + "name": "Arcane Shock", + "spellId": 33534, + "target": "primary", + "school": "arcane", + "expectedCasts": 14.14569536423841, + "targetsPerCast": 1, + "damagePerTarget": 3471.552000000001, + "partyDamage": 49107.51703311259 + }, + { + "id": "spell-12548", + "name": "Frost Shock", + "spellId": 12548, + "target": "random-party", + "school": "frost", + "expectedCasts": 14.14569536423841, + "targetsPerCast": 1, + "damagePerTarget": 3471.552000000001, + "partyDamage": 49107.51703311259 + }, + { + "id": "spell-33620", + "name": "Shadow Shock", + "spellId": 33620, + "target": "primary", + "school": "shadow", + "expectedCasts": 14.14569536423841, + "targetsPerCast": 1, + "damagePerTarget": 3471.552000000001, + "partyDamage": 49107.51703311259 + }, + { + "id": "spell-15659", + "name": "Chain Lightning", + "spellId": 15659, + "target": "primary", + "school": "nature", + "expectedCasts": 14.14569536423841, + "targetsPerCast": 1, + "damagePerTarget": 3471.552000000001, + "partyDamage": 49107.51703311259 + } + ] + }, + { + "rank": 66, + "pressureVsMedian": 3.6464689801316403, + "key": "mechanar/entry-19219", + "dungeonId": "mechanar", + "dungeonTitle": "Tempest Keep: The Mechanar", + "boss": "Mechano-Lord Capacitus", + "serverEntry": 19219, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 3759.84, + "partyDamage": 321620.4018679767, + "partyDamagePerSecond": 5360.340031132945, + "tankDamage": 321620.4018679767, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 3759.84, + "partyDamage": 115709.076 + }, + { + "id": "spell-35161", + "name": "Head Crack", + "spellId": 35161, + "target": "primary", + "school": "physical", + "expectedCasts": 10.141848326680995, + "targetsPerCast": 1, + "damagePerTarget": 5075.784000000001, + "partyDamage": 51477.83146699417 + }, + { + "id": "spell-26662", + "name": "Berserk", + "spellId": 26662, + "target": "primary", + "school": "physical", + "expectedCasts": 10.141848326680995, + "targetsPerCast": 1, + "damagePerTarget": 5075.784000000001, + "partyDamage": 51477.83146699417 + }, + { + "id": "spell-39096", + "name": "Polarity Shift", + "spellId": 39096, + "target": "primary", + "school": "nature", + "expectedCasts": 10.141848326680995, + "targetsPerCast": 1, + "damagePerTarget": 5075.784000000001, + "partyDamage": 51477.83146699417 + }, + { + "id": "spell-35159", + "name": "Reflective Damage Shield", + "spellId": 35159, + "target": "self", + "school": "arcane", + "expectedCasts": 5.9625, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-35158", + "name": "Reflective Magic Shield", + "spellId": 35158, + "target": "self", + "school": "arcane", + "expectedCasts": 5.9625, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-35057", + "name": "Netherbomb", + "spellId": 35057, + "target": "primary", + "school": "arcane", + "expectedCasts": 10.141848326680995, + "targetsPerCast": 1, + "damagePerTarget": 5075.784000000001, + "partyDamage": 51477.83146699417 + } + ] + }, + { + "rank": 67, + "pressureVsMedian": 3.6218346152984138, + "key": "black-morass/entry-17880", + "dungeonId": "black-morass", + "dungeonTitle": "The Black Morass", + "boss": "Temporus", + "serverEntry": 17880, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4700.64, + "partyDamage": 319447.6384739662, + "partyDamagePerSecond": 5324.127307899437, + "tankDamage": 319447.6384739662, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4700.64, + "partyDamage": 144662.196 + }, + { + "id": "spell-31458", + "name": "Hasten", + "spellId": 31458, + "target": "self", + "school": "arcane", + "expectedCasts": 9.181068828135732, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-31464", + "name": "Mortal Wound", + "spellId": 31464, + "target": "primary", + "school": "physical", + "expectedCasts": 9.181068828135732, + "targetsPerCast": 1, + "damagePerTarget": 6345.8640000000005, + "partyDamage": 58261.81415798874 + }, + { + "id": "spell-31475", + "name": "Wing Buffet", + "spellId": 31475, + "target": "primary", + "school": "physical", + "expectedCasts": 9.181068828135732, + "targetsPerCast": 1, + "damagePerTarget": 6345.8640000000005, + "partyDamage": 58261.81415798874 + }, + { + "id": "spell-38592", + "name": "Spell Reflection", + "spellId": 38592, + "target": "self", + "school": "physical", + "expectedCasts": 9.181068828135732, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-31550", + "name": "Banish Dragon Helper", + "spellId": 31550, + "target": "primary", + "school": "physical", + "expectedCasts": 9.181068828135732, + "targetsPerCast": 1, + "damagePerTarget": 6345.8640000000005, + "partyDamage": 58261.81415798874 + } + ] + }, + { + "rank": 68, + "pressureVsMedian": 3.6126610009577482, + "key": "steamvault/entry-17796", + "dungeonId": "steamvault", + "dungeonTitle": "Coilfang: The Steamvault", + "boss": "Mekgineer Steamrigger", + "serverEntry": 17796, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 3759.84, + "partyDamage": 318638.5210656179, + "partyDamagePerSecond": 5310.642017760299, + "tankDamage": 318638.5210656179, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 3759.84, + "partyDamage": 115709.076 + }, + { + "id": "spell-31485", + "name": "Super Shrink Ray", + "spellId": 31485, + "target": "primary", + "school": "physical", + "expectedCasts": 13.3266404471124, + "targetsPerCast": 1, + "damagePerTarget": 5075.784000000001, + "partyDamage": 67643.14835520598 + }, + { + "id": "spell-31486", + "name": "Saw Blade", + "spellId": 31486, + "target": "primary", + "school": "physical", + "expectedCasts": 13.3266404471124, + "targetsPerCast": 1, + "damagePerTarget": 5075.784000000001, + "partyDamage": 67643.14835520598 + }, + { + "id": "spell-35107", + "name": "Electrified Net", + "spellId": 35107, + "target": "random-party", + "school": "physical", + "expectedCasts": 13.3266404471124, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-26662", + "name": "Berserk", + "spellId": 26662, + "target": "primary", + "school": "physical", + "expectedCasts": 13.3266404471124, + "targetsPerCast": 1, + "damagePerTarget": 5075.784000000001, + "partyDamage": 67643.14835520598 + } + ] + }, + { + "rank": 69, + "pressureVsMedian": 3.5527919664605796, + "key": "the-nexus/entry-26763", + "dungeonId": "the-nexus", + "dungeonTitle": "The Nexus", + "boss": "Anomalus", + "serverEntry": 26763, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4193.280000000001, + "partyDamage": 313358.04204897425, + "partyDamagePerSecond": 5222.634034149571, + "tankDamage": 313358.04204897425, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4193.280000000001, + "partyDamage": 129048.19200000001 + }, + { + "id": "spell-47745", + "name": "Close Rifts", + "spellId": 47745, + "target": "primary", + "school": "arcane", + "expectedCasts": 10.852746525479814, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 61436.616682991415 + }, + { + "id": "spell-47748", + "name": "Rift Shield", + "spellId": 47748, + "target": "self", + "school": "arcane", + "expectedCasts": 10.852746525479814, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-47751", + "name": "Spark", + "spellId": 47751, + "target": "primary", + "school": "arcane", + "expectedCasts": 10.852746525479814, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 61436.616682991415 + }, + { + "id": "spell-57063", + "name": "Arcane Attraction", + "spellId": 57063, + "target": "primary", + "school": "arcane", + "expectedCasts": 10.852746525479814, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 61436.616682991415 + }, + { + "id": "spell-47743", + "name": "Create Rift", + "spellId": 47743, + "target": "self", + "school": "arcane", + "expectedCasts": 10.852746525479814, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 70, + "pressureVsMedian": 3.534171932327111, + "key": "shattered-halls/entry-16807", + "dungeonId": "shattered-halls", + "dungeonTitle": "Hellfire Citadel: The Shattered Halls", + "boss": "Grand Warlock Nethekurse", + "serverEntry": 16807, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 2470.7200000000003, + "partyDamage": 311715.7456539051, + "partyDamagePerSecond": 5195.262427565085, + "tankDamage": 122825.68826952529, + "randomTargetDamage": 46789.280269525276, + "groupwideDamage": 142100.7771148545, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 2470.7200000000003, + "partyDamage": 76036.40800000001 + }, + { + "id": "spell-30502", + "name": "Dark Spin", + "spellId": 30502, + "target": "primary", + "school": "physical", + "expectedCasts": 14.02778385473638, + "targetsPerCast": 1, + "damagePerTarget": 3335.4720000000007, + "partyDamage": 46789.280269525276 + }, + { + "id": "spell-30500", + "name": "Death Coil", + "spellId": 30500, + "target": "random-party", + "school": "shadow", + "expectedCasts": 14.02778385473638, + "targetsPerCast": 1, + "damagePerTarget": 3335.4720000000007, + "partyDamage": 46789.280269525276 + }, + { + "id": "spell-30496", + "name": "Lesser Shadow Fissure", + "spellId": 30496, + "target": "self", + "school": "shadow", + "expectedCasts": 14.02778385473638, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-30495", + "name": "Shadow Cleave", + "spellId": 30495, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 14.02778385473638, + "targetsPerCast": 5, + "damagePerTarget": 2025.9904000000001, + "partyDamage": 142100.7771148545 + }, + { + "id": "spell-30744", + "name": "Lesser Shadow Fissure", + "spellId": 30744, + "target": "self", + "school": "shadow", + "expectedCasts": 14.02778385473638, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 71, + "pressureVsMedian": 3.506975303029769, + "key": "violet-hold/entry-29316", + "dungeonId": "violet-hold", + "dungeonTitle": "Violet Hold", + "boss": "Moragg", + "serverEntry": 29316, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4233.6, + "partyDamage": 309316.9892427784, + "partyDamagePerSecond": 5155.283154046307, + "tankDamage": 309316.9892427784, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4233.6, + "partyDamage": 130289.04000000001 + }, + { + "id": "spell-54442", + "name": "Ray of Suffering", + "spellId": 54442, + "target": "primary", + "school": "shadow", + "expectedCasts": 9.207001102535832, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 52621.3258213892 + }, + { + "id": "spell-54438", + "name": "Ray of Pain", + "spellId": 54438, + "target": "primary", + "school": "shadow", + "expectedCasts": 9.207001102535832, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 52621.3258213892 + }, + { + "id": "spell-54527", + "name": "Corrosive Saliva", + "spellId": 54527, + "target": "primary", + "school": "physical", + "expectedCasts": 15.8875, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-54396", + "name": "Optic Link", + "spellId": 54396, + "target": "primary", + "school": "shadow", + "expectedCasts": 12.91, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 73785.2976 + } + ] + }, + { + "rank": 72, + "pressureVsMedian": 3.496483607163538, + "key": "magisters-terrace/entry-24723", + "dungeonId": "magisters-terrace", + "dungeonTitle": "Magister's Terrace", + "boss": "Selin Fireheart", + "serverEntry": 24723, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1441.44, + "partyDamage": 308391.61637956207, + "partyDamagePerSecond": 5139.8602729927015, + "tankDamage": 70473.30175182482, + "randomTargetDamage": 0, + "groupwideDamage": 237918.3146277372, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 1441.44, + "partyDamage": 44360.316 + }, + { + "id": "spell-44294", + "name": "Drain Life", + "spellId": 44294, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 13.419186652763296, + "targetsPerCast": 5, + "damagePerTarget": 1181.9808, + "partyDamage": 79306.10487591241 + }, + { + "id": "spell-44314", + "name": "Fel Explosion", + "spellId": 44314, + "target": "nearby-party", + "school": "fire", + "expectedCasts": 13.419186652763296, + "targetsPerCast": 5, + "damagePerTarget": 1181.9808, + "partyDamage": 79306.10487591241 + }, + { + "id": "spell-46153", + "name": "Drain Mana", + "spellId": 46153, + "target": "nearby-party", + "school": "arcane", + "expectedCasts": 13.419186652763296, + "targetsPerCast": 5, + "damagePerTarget": 1181.9808, + "partyDamage": 79306.10487591241 + }, + { + "id": "spell-44320", + "name": "Mana Rage", + "spellId": 44320, + "target": "random-party", + "school": "physical", + "expectedCasts": 13.419186652763296, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-44374", + "name": "Fel Crystal Cosmetic", + "spellId": 44374, + "target": "primary", + "school": "physical", + "expectedCasts": 13.419186652763296, + "targetsPerCast": 1, + "damagePerTarget": 1945.9440000000002, + "partyDamage": 26112.98575182482 + } + ] + }, + { + "rank": 73, + "pressureVsMedian": 3.467215585819095, + "key": "botanica/entry-17978", + "dungeonId": "botanica", + "dungeonTitle": "Tempest Keep: The Botanica", + "boss": "Thorngrin the Tender", + "serverEntry": 17978, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 3418.2400000000002, + "partyDamage": 305810.16214589943, + "partyDamagePerSecond": 5096.836035764991, + "tankDamage": 238938.88676393294, + "randomTargetDamage": 66871.27538196648, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 3418.2400000000002, + "partyDamage": 105196.336 + }, + { + "id": "spell-34661", + "name": "Sacrifice", + "spellId": 34661, + "target": "random-party", + "school": "shadow", + "expectedCasts": 14.491164476665157, + "targetsPerCast": 1, + "damagePerTarget": 4614.624000000001, + "partyDamage": 66871.27538196648 + }, + { + "id": "spell-34659", + "name": "Hellfire", + "spellId": 34659, + "target": "primary", + "school": "fire", + "expectedCasts": 14.491164476665157, + "targetsPerCast": 1, + "damagePerTarget": 4614.624000000001, + "partyDamage": 66871.27538196648 + }, + { + "id": "spell-34670", + "name": "Enrage", + "spellId": 34670, + "target": "self", + "school": "physical", + "expectedCasts": 14.491164476665157, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-39132", + "name": "Hellfire", + "spellId": 39132, + "target": "primary", + "school": "fire", + "expectedCasts": 14.491164476665157, + "targetsPerCast": 1, + "damagePerTarget": 4614.624000000001, + "partyDamage": 66871.27538196648 + } + ] + }, + { + "rank": 74, + "pressureVsMedian": 3.4097121046439227, + "key": "escape-from-durnholde/entry-18096", + "dungeonId": "escape-from-durnholde", + "dungeonTitle": "The Escape From Durnholde", + "boss": "Epoch Hunter", + "serverEntry": 18096, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 2362.0800000000004, + "partyDamage": 300738.3261244948, + "partyDamagePerSecond": 5012.305435408246, + "tankDamage": 197809.87857720297, + "randomTargetDamage": 0, + "groupwideDamage": 102928.44754729184, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 40.7, + "targetsPerCast": 1, + "damagePerTarget": 2362.0800000000004, + "partyDamage": 96136.65600000002 + }, + { + "id": "spell-31914", + "name": "Sand Breath", + "spellId": 31914, + "target": "nearby-party", + "school": "arcane", + "expectedCasts": 10.628132578819725, + "targetsPerCast": 5, + "damagePerTarget": 1936.9056000000003, + "partyDamage": 102928.44754729184 + }, + { + "id": "spell-31916", + "name": "Impending Death", + "spellId": 31916, + "target": "primary", + "school": "shadow", + "expectedCasts": 10.628132578819725, + "targetsPerCast": 1, + "damagePerTarget": 3188.808000000001, + "partyDamage": 33891.07419240098 + }, + { + "id": "spell-33834", + "name": "Magic Disruption Aura", + "spellId": 33834, + "target": "primary", + "school": "shadow", + "expectedCasts": 10.628132578819725, + "targetsPerCast": 1, + "damagePerTarget": 3188.808000000001, + "partyDamage": 33891.07419240098 + }, + { + "id": "spell-31475", + "name": "Wing Buffet", + "spellId": 31475, + "target": "primary", + "school": "physical", + "expectedCasts": 10.628132578819725, + "targetsPerCast": 1, + "damagePerTarget": 3188.808000000001, + "partyDamage": 33891.07419240098 + } + ] + }, + { + "rank": 75, + "pressureVsMedian": 3.3843935304496675, + "key": "utgarde-keep/entry-24201", + "dungeonId": "utgarde-keep", + "dungeonTitle": "Utgarde Keep", + "boss": "Dalronn the Controller", + "serverEntry": 24201, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 5032.160000000001, + "partyDamage": 298505.21512000007, + "partyDamagePerSecond": 4975.086918666668, + "tankDamage": 298505.21512000007, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 25.8125, + "targetsPerCast": 1, + "damagePerTarget": 5032.160000000001, + "partyDamage": 129892.63000000002 + }, + { + "id": "spell-43649", + "name": "Shadow Bolt", + "spellId": 43649, + "target": "primary", + "school": "shadow", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 6793.416000000001, + "partyDamage": 168612.58512000003 + }, + { + "id": "spell-43650", + "name": "Debilitate", + "spellId": 43650, + "target": "random-party", + "school": "shadow", + "expectedCasts": 20.85, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 76, + "pressureVsMedian": 3.203360204875799, + "key": "magisters-terrace/entry-24744", + "dungeonId": "magisters-terrace", + "dungeonTitle": "Magister's Terrace", + "boss": "Vexallus", + "serverEntry": 24744, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 3295.0400000000004, + "partyDamage": 282537.98456358875, + "partyDamagePerSecond": 4708.966409393146, + "tankDamage": 282537.98456358875, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 3295.0400000000004, + "partyDamage": 101404.85600000001 + }, + { + "id": "spell-44352", + "name": "Overload", + "spellId": 44352, + "target": "random-party", + "school": "arcane", + "expectedCasts": 10.179898258054571, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-44335", + "name": "Energy Feedback", + "spellId": 44335, + "target": "primary", + "school": "arcane", + "expectedCasts": 10.179898258054571, + "targetsPerCast": 1, + "damagePerTarget": 4448.304000000001, + "partyDamage": 45283.282140897194 + }, + { + "id": "spell-44318", + "name": "Chain Lightning", + "spellId": 44318, + "target": "primary", + "school": "nature", + "expectedCasts": 10.179898258054571, + "targetsPerCast": 1, + "damagePerTarget": 4448.304000000001, + "partyDamage": 45283.282140897194 + }, + { + "id": "spell-44319", + "name": "Arcane Shock", + "spellId": 44319, + "target": "primary", + "school": "arcane", + "expectedCasts": 10.179898258054571, + "targetsPerCast": 1, + "damagePerTarget": 4448.304000000001, + "partyDamage": 45283.282140897194 + }, + { + "id": "spell-44328", + "name": "Energy Feedback", + "spellId": 44328, + "target": "primary", + "school": "arcane", + "expectedCasts": 10.179898258054571, + "targetsPerCast": 1, + "damagePerTarget": 4448.304000000001, + "partyDamage": 45283.282140897194 + } + ] + }, + { + "rank": 77, + "pressureVsMedian": 3.1636258346684594, + "key": "halls-of-stone/entry-27978", + "dungeonId": "halls-of-stone", + "dungeonTitle": "Halls of Stone", + "boss": "Sjonnir The Ironshaper", + "serverEntry": 27978, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 2540.1600000000003, + "partyDamage": 279033.3930851788, + "partyDamagePerSecond": 4650.556551419647, + "tankDamage": 279033.3930851788, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 48.64, + "targetsPerCast": 1, + "damagePerTarget": 2540.1600000000003, + "partyDamage": 123553.38240000002 + }, + { + "id": "spell-28747", + "name": "Frenzy", + "spellId": 28747, + "target": "self", + "school": "physical", + "expectedCasts": 11.334953141270391, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-51849", + "name": "Lightning Ring", + "spellId": 51849, + "target": "primary", + "school": "physical", + "expectedCasts": 11.334953141270391, + "targetsPerCast": 1, + "damagePerTarget": 3429.216000000001, + "partyDamage": 38870.00267129469 + }, + { + "id": "spell-50831", + "name": "Lightning Shield", + "spellId": 50831, + "target": "self", + "school": "nature", + "expectedCasts": 11.334953141270391, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-50830", + "name": "Chain Lightning", + "spellId": 50830, + "target": "primary", + "school": "nature", + "expectedCasts": 11.334953141270391, + "targetsPerCast": 1, + "damagePerTarget": 3429.216000000001, + "partyDamage": 38870.00267129469 + }, + { + "id": "spell-50834", + "name": "Static Charge", + "spellId": 50834, + "target": "primary", + "school": "nature", + "expectedCasts": 11.334953141270391, + "targetsPerCast": 1, + "damagePerTarget": 3429.216000000001, + "partyDamage": 38870.00267129469 + }, + { + "id": "spell-50840", + "name": "Lightning Ring", + "spellId": 50840, + "target": "primary", + "school": "physical", + "expectedCasts": 11.334953141270391, + "targetsPerCast": 1, + "damagePerTarget": 3429.216000000001, + "partyDamage": 38870.00267129469 + } + ] + }, + { + "rank": 78, + "pressureVsMedian": 3.1340861725688094, + "key": "trial-of-the-champion/wrath-event-mounted-mokra", + "dungeonId": "trial-of-the-champion", + "dungeonTitle": "Trial of the Champion", + "boss": "Mounted Mokra the Skullcrusher", + "serverEntry": 35572, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4460.4, + "partyDamage": 276427.98, + "partyDamagePerSecond": 4607.133, + "tankDamage": 190793.60999999996, + "randomTargetDamage": 85634.37, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4460.4, + "partyDamage": 137268.80999999997 + }, + { + "id": "mounted-charge-63010", + "name": "Mounted Charge", + "spellId": 63010, + "target": "random-party", + "school": "physical", + "expectedCasts": 11.80952380952381, + "targetsPerCast": 1, + "damagePerTarget": 5129.459999999999, + "partyDamage": 60576.479999999996 + }, + { + "id": "shield-breaker-68504", + "name": "Shield Breaker", + "spellId": 68504, + "target": "random-party", + "school": "physical", + "expectedCasts": 8.642857142857142, + "targetsPerCast": 1, + "damagePerTarget": 2899.2599999999998, + "partyDamage": 25057.889999999996 + }, + { + "id": "thrust-68505", + "name": "Thrust", + "spellId": 68505, + "target": "primary", + "school": "physical", + "expectedCasts": 15, + "targetsPerCast": 1, + "damagePerTarget": 3568.3199999999997, + "partyDamage": 53524.799999999996 + } + ] + }, + { + "rank": 79, + "pressureVsMedian": 3.1042377328300583, + "key": "trial-of-the-champion/wrath-event-mounted-eressea", + "dungeonId": "trial-of-the-champion", + "dungeonTitle": "Trial of the Champion", + "boss": "Mounted Eressea Dawnsinger", + "serverEntry": 35569, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4417.92, + "partyDamage": 273795.33257142856, + "partyDamagePerSecond": 4563.255542857142, + "tankDamage": 188976.528, + "randomTargetDamage": 84818.80457142857, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4417.92, + "partyDamage": 135961.48799999998 + }, + { + "id": "mounted-charge-63010", + "name": "Mounted Charge", + "spellId": 63010, + "target": "random-party", + "school": "physical", + "expectedCasts": 11.80952380952381, + "targetsPerCast": 1, + "damagePerTarget": 5080.607999999999, + "partyDamage": 59999.561142857136 + }, + { + "id": "shield-breaker-68504", + "name": "Shield Breaker", + "spellId": 68504, + "target": "random-party", + "school": "physical", + "expectedCasts": 8.642857142857142, + "targetsPerCast": 1, + "damagePerTarget": 2871.648, + "partyDamage": 24819.24342857143 + }, + { + "id": "thrust-68505", + "name": "Thrust", + "spellId": 68505, + "target": "primary", + "school": "physical", + "expectedCasts": 15, + "targetsPerCast": 1, + "damagePerTarget": 3534.3360000000002, + "partyDamage": 53015.04 + } + ] + }, + { + "rank": 80, + "pressureVsMedian": 3.1042377328300583, + "key": "trial-of-the-champion/wrath-event-mounted-runok", + "dungeonId": "trial-of-the-champion", + "dungeonTitle": "Trial of the Champion", + "boss": "Mounted Runok Wildmane", + "serverEntry": 35571, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4417.92, + "partyDamage": 273795.33257142856, + "partyDamagePerSecond": 4563.255542857142, + "tankDamage": 188976.528, + "randomTargetDamage": 84818.80457142857, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4417.92, + "partyDamage": 135961.48799999998 + }, + { + "id": "mounted-charge-63010", + "name": "Mounted Charge", + "spellId": 63010, + "target": "random-party", + "school": "physical", + "expectedCasts": 11.80952380952381, + "targetsPerCast": 1, + "damagePerTarget": 5080.607999999999, + "partyDamage": 59999.561142857136 + }, + { + "id": "shield-breaker-68504", + "name": "Shield Breaker", + "spellId": 68504, + "target": "random-party", + "school": "physical", + "expectedCasts": 8.642857142857142, + "targetsPerCast": 1, + "damagePerTarget": 2871.648, + "partyDamage": 24819.24342857143 + }, + { + "id": "thrust-68505", + "name": "Thrust", + "spellId": 68505, + "target": "primary", + "school": "physical", + "expectedCasts": 15, + "targetsPerCast": 1, + "damagePerTarget": 3534.3360000000002, + "partyDamage": 53015.04 + } + ] + }, + { + "rank": 81, + "pressureVsMedian": 3.0810911348113024, + "key": "steamvault/entry-17798", + "dungeonId": "steamvault", + "dungeonTitle": "Coilfang: The Steamvault", + "boss": "Warlord Kalithresh", + "serverEntry": 17798, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 3055.36, + "partyDamage": 271753.79096028884, + "partyDamagePerSecond": 4529.229849338148, + "tankDamage": 271753.79096028884, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 3055.36, + "partyDamage": 94028.704 + }, + { + "id": "spell-31534", + "name": "Spell Reflection", + "spellId": 31534, + "target": "self", + "school": "physical", + "expectedCasts": 5.9625, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-39061", + "name": "Impale", + "spellId": 39061, + "target": "primary", + "school": "physical", + "expectedCasts": 10.771906793567444, + "targetsPerCast": 1, + "damagePerTarget": 4124.736000000001, + "partyDamage": 44431.27174007221 + }, + { + "id": "spell-16172", + "name": "Head Crack", + "spellId": 16172, + "target": "primary", + "school": "physical", + "expectedCasts": 10.771906793567444, + "targetsPerCast": 1, + "damagePerTarget": 4124.736000000001, + "partyDamage": 44431.27174007221 + }, + { + "id": "spell-31543", + "name": "Warlord's Rage", + "spellId": 31543, + "target": "primary", + "school": "physical", + "expectedCasts": 10.771906793567444, + "targetsPerCast": 1, + "damagePerTarget": 4124.736000000001, + "partyDamage": 44431.27174007221 + }, + { + "id": "spell-36453", + "name": "Warlord's Rage", + "spellId": 36453, + "target": "primary", + "school": "physical", + "expectedCasts": 10.771906793567444, + "targetsPerCast": 1, + "damagePerTarget": 4124.736000000001, + "partyDamage": 44431.27174007221 + } + ] + }, + { + "rank": 82, + "pressureVsMedian": 3.000307168818032, + "key": "underbog/entry-18105", + "dungeonId": "underbog", + "dungeonTitle": "Coilfang: The Underbog", + "boss": "Ghaz'an", + "serverEntry": 18105, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 2255.6800000000003, + "partyDamage": 264628.6044445635, + "partyDamagePerSecond": 4410.476740742725, + "tankDamage": 157052.24102945905, + "randomTargetDamage": 0, + "groupwideDamage": 107576.36341510447, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 38.21875, + "targetsPerCast": 1, + "damagePerTarget": 2255.6800000000003, + "partyDamage": 86209.27 + }, + { + "id": "spell-15716", + "name": "Enrage", + "spellId": 15716, + "target": "self", + "school": "physical", + "expectedCasts": 11.632029994643814, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-34268", + "name": "Acid Breath", + "spellId": 34268, + "target": "nearby-party", + "school": "nature", + "expectedCasts": 11.632029994643814, + "targetsPerCast": 5, + "damagePerTarget": 1849.6576000000002, + "partyDamage": 107576.36341510447 + }, + { + "id": "spell-34290", + "name": "Acid Spit", + "spellId": 34290, + "target": "primary", + "school": "nature", + "expectedCasts": 11.632029994643814, + "targetsPerCast": 1, + "damagePerTarget": 3045.1680000000006, + "partyDamage": 35421.48551472952 + }, + { + "id": "spell-34267", + "name": "Tail Sweep", + "spellId": 34267, + "target": "primary", + "school": "physical", + "expectedCasts": 11.632029994643814, + "targetsPerCast": 1, + "damagePerTarget": 3045.1680000000006, + "partyDamage": 35421.48551472952 + } + ] + }, + { + "rank": 83, + "pressureVsMedian": 2.9643971339759507, + "key": "shattered-halls/entry-16809", + "dungeonId": "shattered-halls", + "dungeonTitle": "Hellfire Citadel: The Shattered Halls", + "boss": "Warbringer O'mrogg", + "serverEntry": 16809, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 2632.0000000000005, + "partyDamage": 261461.32127283444, + "partyDamagePerSecond": 4357.6886878805735, + "tankDamage": 171230.56063641724, + "randomTargetDamage": 90230.76063641722, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 2632.0000000000005, + "partyDamage": 80999.80000000002 + }, + { + "id": "spell-30633", + "name": "Thunderclap", + "spellId": 30633, + "target": "random-party", + "school": "nature", + "expectedCasts": 12.69711255156158, + "targetsPerCast": 1, + "damagePerTarget": 3553.2000000000007, + "partyDamage": 45115.38031820861 + }, + { + "id": "spell-30618", + "name": "Beatdown", + "spellId": 30618, + "target": "primary", + "school": "physical", + "expectedCasts": 12.69711255156158, + "targetsPerCast": 1, + "damagePerTarget": 3553.2000000000007, + "partyDamage": 45115.38031820861 + }, + { + "id": "spell-30584", + "name": "Fear", + "spellId": 30584, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 12.69711255156158, + "targetsPerCast": 5, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-30598", + "name": "Burning Maul", + "spellId": 30598, + "target": "primary", + "school": "physical", + "expectedCasts": 12.69711255156158, + "targetsPerCast": 1, + "damagePerTarget": 3553.2000000000007, + "partyDamage": 45115.38031820861 + }, + { + "id": "spell-30600", + "name": "Blast Wave", + "spellId": 30600, + "target": "random-party", + "school": "fire", + "expectedCasts": 12.69711255156158, + "targetsPerCast": 1, + "damagePerTarget": 3553.2000000000007, + "partyDamage": 45115.38031820861 + } + ] + }, + { + "rank": 84, + "pressureVsMedian": 2.9595795364409234, + "key": "magisters-terrace/entry-24664", + "dungeonId": "magisters-terrace", + "dungeonTitle": "Magister's Terrace", + "boss": "Kael'thas Sunstrider", + "serverEntry": 24664, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1956.64, + "partyDamage": 261036.40674217587, + "partyDamagePerSecond": 4350.606779036264, + "tankDamage": 261036.40674217587, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 1956.64, + "partyDamage": 60215.596 + }, + { + "id": "spell-44224", + "name": "Gravity Lapse - Does something", + "spellId": 44224, + "target": "primary", + "school": "physical", + "expectedCasts": 10.860904123199205, + "targetsPerCast": 1, + "damagePerTarget": 2641.4640000000004, + "partyDamage": 28688.68724888227 + }, + { + "id": "spell-44251", + "name": "Gravity Lapse Beam Visual Periodic - Channel", + "spellId": 44251, + "target": "primary", + "school": "physical", + "expectedCasts": 10.860904123199205, + "targetsPerCast": 1, + "damagePerTarget": 2641.4640000000004, + "partyDamage": 28688.68724888227 + }, + { + "id": "spell-44233", + "name": "Power Feedback", + "spellId": 44233, + "target": "random-party", + "school": "arcane", + "expectedCasts": 10.860904123199205, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-44189", + "name": "Fireball", + "spellId": 44189, + "target": "primary", + "school": "fire", + "expectedCasts": 10.860904123199205, + "targetsPerCast": 1, + "damagePerTarget": 2641.4640000000004, + "partyDamage": 28688.68724888227 + }, + { + "id": "spell-44194", + "name": "Phoenix", + "spellId": 44194, + "target": "self", + "school": "physical", + "expectedCasts": 10.860904123199205, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-46165", + "name": "Shock Barrier", + "spellId": 46165, + "target": "self", + "school": "physical", + "expectedCasts": 10.860904123199205, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-36819", + "name": "Pyroblast", + "spellId": 36819, + "target": "primary", + "school": "fire", + "expectedCasts": 10.860904123199205, + "targetsPerCast": 1, + "damagePerTarget": 2641.4640000000004, + "partyDamage": 28688.68724888227 + }, + { + "id": "spell-44232", + "name": "Clear Flight", + "spellId": 44232, + "target": "primary", + "school": "physical", + "expectedCasts": 10.860904123199205, + "targetsPerCast": 1, + "damagePerTarget": 2641.4640000000004, + "partyDamage": 28688.68724888227 + }, + { + "id": "spell-44219", + "name": "Gravity Lapse - TP Player 1", + "spellId": 44219, + "target": "primary", + "school": "arcane", + "expectedCasts": 10.860904123199205, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-44226", + "name": "Gravity Lapse - Knockup + dot", + "spellId": 44226, + "target": "primary", + "school": "arcane", + "expectedCasts": 10.860904123199205, + "targetsPerCast": 1, + "damagePerTarget": 2641.4640000000004, + "partyDamage": 28688.68724888227 + }, + { + "id": "spell-44227", + "name": "Gravity Lapse - Flight + Flight Speed", + "spellId": 44227, + "target": "primary", + "school": "physical", + "expectedCasts": 10.860904123199205, + "targetsPerCast": 1, + "damagePerTarget": 2641.4640000000004, + "partyDamage": 28688.68724888227 + } + ] + }, + { + "rank": 85, + "pressureVsMedian": 2.926583564283451, + "key": "arcatraz/entry-20870", + "dungeonId": "arcatraz", + "dungeonTitle": "Tempest Keep: The Arcatraz", + "boss": "Zereketh the Unbound", + "serverEntry": 20870, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 2470.7200000000003, + "partyDamage": 258126.1453679168, + "partyDamagePerSecond": 4302.102422798614, + "tankDamage": 148336.74489608462, + "randomTargetDamage": 0, + "groupwideDamage": 109789.40047183217, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 2470.7200000000003, + "partyDamage": 76036.40800000001 + }, + { + "id": "spell-36119", + "name": "Void Zone", + "spellId": 36119, + "target": "self", + "school": "shadow", + "expectedCasts": 10.838096811498431, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-36127", + "name": "Shadow Nova", + "spellId": 36127, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 10.838096811498431, + "targetsPerCast": 5, + "damagePerTarget": 2025.9904000000001, + "partyDamage": 109789.40047183217 + }, + { + "id": "spell-36123", + "name": "Seed of Corruption", + "spellId": 36123, + "target": "primary", + "school": "shadow", + "expectedCasts": 10.838096811498431, + "targetsPerCast": 1, + "damagePerTarget": 3335.4720000000007, + "partyDamage": 36150.16844804231 + }, + { + "id": "spell-32863", + "name": "Seed of Corruption", + "spellId": 32863, + "target": "primary", + "school": "shadow", + "expectedCasts": 10.838096811498431, + "targetsPerCast": 1, + "damagePerTarget": 3335.4720000000007, + "partyDamage": 36150.16844804231 + } + ] + }, + { + "rank": 86, + "pressureVsMedian": 2.8655104827972417, + "key": "culling-of-stratholme/entry-26533", + "dungeonId": "culling-of-stratholme", + "dungeonTitle": "The Culling of Stratholme", + "boss": "Mal'Ganis", + "serverEntry": 26533, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4193.280000000001, + "partyDamage": 252739.46880000006, + "partyDamagePerSecond": 4212.324480000001, + "tankDamage": 252739.46880000006, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4193.280000000001, + "partyDamage": 129048.19200000001 + }, + { + "id": "spell-52720", + "name": "Carrion Swarm", + "spellId": 52720, + "target": "primary", + "school": "shadow", + "expectedCasts": 10.925, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 61845.638400000025 + }, + { + "id": "spell-52722", + "name": "Mind Blast", + "spellId": 52722, + "target": "primary", + "school": "shadow", + "expectedCasts": 10.925, + "targetsPerCast": 1, + "damagePerTarget": 5660.928000000002, + "partyDamage": 61845.638400000025 + }, + { + "id": "spell-52721", + "name": "Sleep", + "spellId": 52721, + "target": "random-party", + "school": "shadow", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-52723", + "name": "Vampiric Touch", + "spellId": 52723, + "target": "self", + "school": "shadow", + "expectedCasts": 5.9625, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 87, + "pressureVsMedian": 2.8163358787231787, + "key": "auchenai-crypts/entry-18371", + "dungeonId": "auchenai-crypts", + "dungeonTitle": "Auchindoun: Auchenai Crypts", + "boss": "Shirrak the Dead Watcher", + "serverEntry": 18371, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 2470.7200000000003, + "partyDamage": 248402.24393666728, + "partyDamagePerSecond": 4140.037398944454, + "tankDamage": 248402.24393666728, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 2470.7200000000003, + "partyDamage": 76036.40800000001 + }, + { + "id": "spell-32264", + "name": "Inhibit Magic", + "spellId": 32264, + "target": "primary", + "school": "shadow", + "expectedCasts": 10.335319015519675, + "targetsPerCast": 1, + "damagePerTarget": 3335.4720000000007, + "partyDamage": 34473.16718733345 + }, + { + "id": "spell-32265", + "name": "Attract Magic", + "spellId": 32265, + "target": "primary", + "school": "physical", + "expectedCasts": 10.335319015519675, + "targetsPerCast": 1, + "damagePerTarget": 3335.4720000000007, + "partyDamage": 34473.16718733345 + }, + { + "id": "spell-36383", + "name": "Carnivorous Bite", + "spellId": 36383, + "target": "primary", + "school": "physical", + "expectedCasts": 10.335319015519675, + "targetsPerCast": 1, + "damagePerTarget": 3335.4720000000007, + "partyDamage": 34473.16718733345 + }, + { + "id": "spell-32300", + "name": "Focus Fire", + "spellId": 32300, + "target": "primary", + "school": "fire", + "expectedCasts": 10.335319015519675, + "targetsPerCast": 1, + "damagePerTarget": 3335.4720000000007, + "partyDamage": 34473.16718733345 + }, + { + "id": "spell-32302", + "name": "Fiery Blast", + "spellId": 32302, + "target": "primary", + "school": "fire", + "expectedCasts": 10.335319015519675, + "targetsPerCast": 1, + "damagePerTarget": 3335.4720000000007, + "partyDamage": 34473.16718733345 + } + ] + }, + { + "rank": 88, + "pressureVsMedian": 2.7860023122568176, + "key": "slave-pens/entry-17991", + "dungeonId": "slave-pens", + "dungeonTitle": "Coilfang: The Slave Pens", + "boss": "Rokmar the Crackler", + "serverEntry": 17991, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 3055.36, + "partyDamage": 245726.8080862167, + "partyDamagePerSecond": 4095.4468014369454, + "tankDamage": 245726.8080862167, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 3055.36, + "partyDamage": 94028.704 + }, + { + "id": "spell-34970", + "name": "Frenzy", + "spellId": 34970, + "target": "self", + "school": "physical", + "expectedCasts": 12.259217243335224, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-31956", + "name": "Grievous Wound", + "spellId": 31956, + "target": "primary", + "school": "physical", + "expectedCasts": 12.259217243335224, + "targetsPerCast": 1, + "damagePerTarget": 4124.736000000001, + "partyDamage": 50566.034695405564 + }, + { + "id": "spell-31948", + "name": "Ensnaring Moss", + "spellId": 31948, + "target": "primary", + "school": "physical", + "expectedCasts": 12.259217243335224, + "targetsPerCast": 1, + "damagePerTarget": 4124.736000000001, + "partyDamage": 50566.034695405564 + }, + { + "id": "spell-35008", + "name": "Water Spit", + "spellId": 35008, + "target": "primary", + "school": "frost", + "expectedCasts": 12.259217243335224, + "targetsPerCast": 1, + "damagePerTarget": 4124.736000000001, + "partyDamage": 50566.034695405564 + } + ] + }, + { + "rank": 89, + "pressureVsMedian": 2.742137562265248, + "key": "azjol-nerub/entry-28684", + "dungeonId": "azjol-nerub", + "dungeonTitle": "Azjol-Nerub", + "boss": "Krik'thir the Gatewatcher", + "serverEntry": 28684, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 3548.1600000000003, + "partyDamage": 241857.91502912628, + "partyDamagePerSecond": 4030.965250485438, + "tankDamage": 175526.26951456314, + "randomTargetDamage": 66331.64551456312, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 3548.1600000000003, + "partyDamage": 109194.62400000001 + }, + { + "id": "spell-28747", + "name": "Frenzy", + "spellId": 28747, + "target": "self", + "school": "physical", + "expectedCasts": 13.84789644012945, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-52440", + "name": "Swarm", + "spellId": 52440, + "target": "primary", + "school": "physical", + "expectedCasts": 13.84789644012945, + "targetsPerCast": 1, + "damagePerTarget": 4790.0160000000005, + "partyDamage": 66331.64551456312 + }, + { + "id": "spell-52586", + "name": "Mind Flay", + "spellId": 52586, + "target": "random-party", + "school": "shadow", + "expectedCasts": 13.84789644012945, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-52592", + "name": "Curse of Fatigue", + "spellId": 52592, + "target": "random-party", + "school": "shadow", + "expectedCasts": 13.84789644012945, + "targetsPerCast": 1, + "damagePerTarget": 4790.0160000000005, + "partyDamage": 66331.64551456312 + } + ] + }, + { + "rank": 90, + "pressureVsMedian": 2.707255098984392, + "key": "botanica/entry-17976", + "dungeonId": "botanica", + "dungeonTitle": "Tempest Keep: The Botanica", + "boss": "Commander Sarannis", + "serverEntry": 17976, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 3900.9600000000005, + "partyDamage": 238781.26418699333, + "partyDamagePerSecond": 3979.6877364498887, + "tankDamage": 238781.26418699333, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 3900.9600000000005, + "partyDamage": 120052.04400000001 + }, + { + "id": "spell-34794", + "name": "Arcane Resonance", + "spellId": 34794, + "target": "primary", + "school": "arcane", + "expectedCasts": 11.27255476970847, + "targetsPerCast": 1, + "damagePerTarget": 5266.296000000001, + "partyDamage": 59364.61009349665 + }, + { + "id": "spell-34799", + "name": "Arcane Devastation", + "spellId": 34799, + "target": "primary", + "school": "arcane", + "expectedCasts": 11.27255476970847, + "targetsPerCast": 1, + "damagePerTarget": 5266.296000000001, + "partyDamage": 59364.61009349665 + } + ] + }, + { + "rank": 91, + "pressureVsMedian": 2.616517865550817, + "key": "mechanar/entry-19220", + "dungeonId": "mechanar", + "dungeonTitle": "Tempest Keep: The Mechanar", + "boss": "Pathaleon the Calculator", + "serverEntry": 19220, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1482.88, + "partyDamage": 230778.19446658628, + "partyDamagePerSecond": 3846.3032411097715, + "tankDamage": 162307.8011831122, + "randomTargetDamage": 0, + "groupwideDamage": 68470.39328347407, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 48.64, + "targetsPerCast": 1, + "damagePerTarget": 1482.88, + "partyDamage": 72127.2832 + }, + { + "id": "spell-34426", + "name": "Greater Invisibility", + "spellId": 34426, + "target": "primary", + "school": "arcane", + "expectedCasts": 11.261933482681371, + "targetsPerCast": 1, + "damagePerTarget": 2001.8880000000004, + "partyDamage": 22545.12949577805 + }, + { + "id": "spell-35301", + "name": "Suicide", + "spellId": 35301, + "target": "primary", + "school": "physical", + "expectedCasts": 11.261933482681371, + "targetsPerCast": 1, + "damagePerTarget": 2001.8880000000004, + "partyDamage": 22545.12949577805 + }, + { + "id": "spell-36992", + "name": "Frenzy", + "spellId": 36992, + "target": "self", + "school": "physical", + "expectedCasts": 11.261933482681371, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-36021", + "name": "Mana Tap", + "spellId": 36021, + "target": "primary", + "school": "arcane", + "expectedCasts": 11.261933482681371, + "targetsPerCast": 1, + "damagePerTarget": 2001.8880000000004, + "partyDamage": 22545.12949577805 + }, + { + "id": "spell-36022", + "name": "Arcane Torrent", + "spellId": 36022, + "target": "random-party", + "school": "arcane", + "expectedCasts": 11.261933482681371, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-35280", + "name": "Domination", + "spellId": 35280, + "target": "random-party", + "school": "shadow", + "expectedCasts": 11.261933482681371, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-35289", + "name": "Disgruntled Anger", + "spellId": 35289, + "target": "primary", + "school": "physical", + "expectedCasts": 11.261933482681371, + "targetsPerCast": 1, + "damagePerTarget": 2001.8880000000004, + "partyDamage": 22545.12949577805 + }, + { + "id": "spell-15453", + "name": "Arcane Explosion", + "spellId": 15453, + "target": "nearby-party", + "school": "arcane", + "expectedCasts": 11.261933482681371, + "targetsPerCast": 5, + "damagePerTarget": 1215.9616, + "partyDamage": 68470.39328347407 + } + ] + }, + { + "rank": 92, + "pressureVsMedian": 2.5993396193580196, + "key": "halls-of-reflection/entry-38112", + "dungeonId": "halls-of-reflection", + "dungeonTitle": "Halls of Reflection", + "boss": "Falric", + "serverEntry": 38112, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 3810.2400000000002, + "partyDamage": 229263.0644945455, + "partyDamagePerSecond": 3821.0510749090918, + "tankDamage": 229263.0644945455, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 34.083333333333336, + "targetsPerCast": 1, + "damagePerTarget": 3810.2400000000002, + "partyDamage": 129865.68000000002 + }, + { + "id": "spell-72422", + "name": "Quivering Strike", + "spellId": 72422, + "target": "primary", + "school": "physical", + "expectedCasts": 12.91, + "targetsPerCast": 1, + "damagePerTarget": 5143.8240000000005, + "partyDamage": 66406.76784 + }, + { + "id": "spell-72426", + "name": "Impending Despair", + "spellId": 72426, + "target": "primary", + "school": "shadow", + "expectedCasts": 6.413636363636364, + "targetsPerCast": 1, + "damagePerTarget": 5143.8240000000005, + "partyDamage": 32990.61665454546 + }, + { + "id": "spell-72435", + "name": "Defiling Horror", + "spellId": 72435, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 15.8875, + "targetsPerCast": 5, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 93, + "pressureVsMedian": 2.5941801950210888, + "key": "underbog/entry-17882", + "dungeonId": "underbog", + "dungeonTitle": "Coilfang: The Underbog", + "boss": "The Black Stalker", + "serverEntry": 17882, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 3953.6000000000004, + "partyDamage": 228808.00066767834, + "partyDamagePerSecond": 3813.466677794639, + "tankDamage": 228808.00066767834, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 3953.6000000000004, + "partyDamage": 121672.04000000001 + }, + { + "id": "spell-31704", + "name": "Levitate", + "spellId": 31704, + "target": "random-party", + "school": "physical", + "expectedCasts": 10.036418816388467, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-31717", + "name": "Chain Lightning", + "spellId": 31717, + "target": "primary", + "school": "nature", + "expectedCasts": 10.036418816388467, + "targetsPerCast": 1, + "damagePerTarget": 5337.360000000001, + "partyDamage": 53567.98033383916 + }, + { + "id": "spell-31715", + "name": "Static Charge", + "spellId": 31715, + "target": "primary", + "school": "nature", + "expectedCasts": 10.036418816388467, + "targetsPerCast": 1, + "damagePerTarget": 5337.360000000001, + "partyDamage": 53567.98033383916 + }, + { + "id": "spell-20279", + "name": "Summon Player", + "spellId": 20279, + "target": "primary", + "school": "physical", + "expectedCasts": 10.036418816388467, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 94, + "pressureVsMedian": 2.5805473509426005, + "key": "escape-from-durnholde/entry-17848", + "dungeonId": "escape-from-durnholde", + "dungeonTitle": "The Escape From Durnholde", + "boss": "Lieutenant Drake", + "serverEntry": 17848, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1643.0400000000002, + "partyDamage": 227605.57694900228, + "partyDamagePerSecond": 3793.4262824833713, + "tankDamage": 93496.35328603107, + "randomTargetDamage": 53249.25057206209, + "groupwideDamage": 80859.9730909091, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 40.7, + "targetsPerCast": 1, + "damagePerTarget": 1643.0400000000002, + "partyDamage": 66871.72800000002 + }, + { + "id": "spell-31909", + "name": "Whirlwind", + "spellId": 31909, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 12.003325942350333, + "targetsPerCast": 5, + "damagePerTarget": 1347.2928000000002, + "partyDamage": 80859.9730909091 + }, + { + "id": "spell-33789", + "name": "Frightening Shout", + "spellId": 33789, + "target": "random-party", + "school": "physical", + "expectedCasts": 12.003325942350333, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-31911", + "name": "Mortal Strike", + "spellId": 31911, + "target": "primary", + "school": "physical", + "expectedCasts": 12.003325942350333, + "targetsPerCast": 1, + "damagePerTarget": 2218.1040000000003, + "partyDamage": 26624.625286031045 + }, + { + "id": "spell-9080", + "name": "Hamstring", + "spellId": 9080, + "target": "random-party", + "school": "physical", + "expectedCasts": 12.003325942350333, + "targetsPerCast": 1, + "damagePerTarget": 2218.1040000000003, + "partyDamage": 26624.625286031045 + }, + { + "id": "spell-33792", + "name": "Exploding Shot", + "spellId": 33792, + "target": "random-party", + "school": "fire", + "expectedCasts": 12.003325942350333, + "targetsPerCast": 1, + "damagePerTarget": 2218.1040000000003, + "partyDamage": 26624.625286031045 + } + ] + }, + { + "rank": 95, + "pressureVsMedian": 2.435271903965743, + "key": "trial-of-the-champion/wrath-event-black-knight-phase-1", + "dungeonId": "trial-of-the-champion", + "dungeonTitle": "Trial of the Champion", + "boss": "The Black Knight", + "serverEntry": 35451, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4014.3599999999997, + "partyDamage": 214792.20930681817, + "partyDamagePerSecond": 3579.870155113636, + "tankDamage": 196727.58930681818, + "randomTargetDamage": 18064.62, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4014.3599999999997, + "partyDamage": 123541.92899999999 + }, + { + "id": "plague-strike-67724", + "name": "Plague Strike", + "spellId": 67724, + "target": "primary", + "school": "physical", + "expectedCasts": 5.7272727272727275, + "targetsPerCast": 1, + "damagePerTarget": 3412.2059999999997, + "partyDamage": 19542.634363636364 + }, + { + "id": "icy-touch-67718", + "name": "Icy Touch", + "spellId": 67718, + "target": "primary", + "school": "frost", + "expectedCasts": 10.954545454545455, + "targetsPerCast": 1, + "damagePerTarget": 3010.7699999999995, + "partyDamage": 32981.616818181814 + }, + { + "id": "death-respite-67745", + "name": "Death's Respite", + "spellId": 67745, + "target": "random-party", + "school": "shadow", + "expectedCasts": 4.285714285714286, + "targetsPerCast": 1, + "damagePerTarget": 4215.0779999999995, + "partyDamage": 18064.62 + }, + { + "id": "obliterate-67725", + "name": "Obliterate", + "spellId": 67725, + "target": "primary", + "school": "physical", + "expectedCasts": 3.8125, + "targetsPerCast": 1, + "damagePerTarget": 5419.3859999999995, + "partyDamage": 20661.409125 + } + ] + }, + { + "rank": 96, + "pressureVsMedian": 2.4340973484655075, + "key": "trial-of-the-champion/wrath-event-black-knight-phase-2", + "dungeonId": "trial-of-the-champion", + "dungeonTitle": "Trial of the Champion", + "boss": "The Black Knight", + "serverEntry": 35451, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4014.3599999999997, + "partyDamage": 214688.6129197214, + "partyDamagePerSecond": 3578.1435486620235, + "tankDamage": 196727.58930681818, + "randomTargetDamage": 17961.02361290322, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4014.3599999999997, + "partyDamage": 123541.92899999999 + }, + { + "id": "plague-strike-67724", + "name": "Plague Strike", + "spellId": 67724, + "target": "primary", + "school": "physical", + "expectedCasts": 5.7272727272727275, + "targetsPerCast": 1, + "damagePerTarget": 3412.2059999999997, + "partyDamage": 19542.634363636364 + }, + { + "id": "icy-touch-67718", + "name": "Icy Touch", + "spellId": 67718, + "target": "primary", + "school": "frost", + "expectedCasts": 10.954545454545455, + "targetsPerCast": 1, + "damagePerTarget": 3010.7699999999995, + "partyDamage": 32981.616818181814 + }, + { + "id": "obliterate-67725", + "name": "Obliterate", + "spellId": 67725, + "target": "primary", + "school": "physical", + "expectedCasts": 3.8125, + "targetsPerCast": 1, + "damagePerTarget": 5419.3859999999995, + "partyDamage": 20661.409125 + }, + { + "id": "desecration-67778", + "name": "Desecration", + "spellId": 67778, + "target": "random-party", + "school": "shadow", + "expectedCasts": 4.709677419354838, + "targetsPerCast": 1, + "damagePerTarget": 3813.6419999999994, + "partyDamage": 17961.02361290322 + } + ] + }, + { + "rank": 97, + "pressureVsMedian": 2.428412005712908, + "key": "gundrak/entry-29932", + "dungeonId": "gundrak", + "dungeonTitle": "Gundrak", + "boss": "Eck the Ferocious", + "serverEntry": 29932, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4233.6, + "partyDamage": 214187.16282352942, + "partyDamagePerSecond": 3569.7860470588234, + "tankDamage": 194015.304, + "randomTargetDamage": 20171.858823529412, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4233.6, + "partyDamage": 130289.04000000001 + }, + { + "id": "spell-55837", + "name": "Eck Spring Init", + "spellId": 55837, + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-55813", + "name": "Eck Bite", + "spellId": 55813, + "target": "primary", + "school": "physical", + "expectedCasts": 6.5, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 37149.840000000004 + }, + { + "id": "spell-55814", + "name": "Eck Spit", + "spellId": 55814, + "target": "primary", + "school": "nature", + "expectedCasts": 4.65, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 26576.424000000006 + }, + { + "id": "spell-55815", + "name": "Eck Spring", + "spellId": 55815, + "target": "random-party", + "school": "physical", + "expectedCasts": 3.5294117647058822, + "targetsPerCast": 1, + "damagePerTarget": 5715.360000000001, + "partyDamage": 20171.858823529412 + }, + { + "id": "spell-55816", + "name": "Eck Berserk", + "spellId": 55816, + "target": "self", + "school": "physical", + "expectedCasts": 0, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 98, + "pressureVsMedian": 2.4146084244421635, + "key": "dire-maul/entry-11488", + "dungeonId": "dire-maul", + "dungeonTitle": "Dire Maul", + "boss": "Illyanna Ravenoak", + "serverEntry": 11488, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1105.44, + "partyDamage": 212969.67999844477, + "partyDamagePerSecond": 3549.4946666407463, + "tankDamage": 131061.47186304307, + "randomTargetDamage": 23835.197291521526, + "groupwideDamage": 58073.010843880176, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 1105.44, + "partyDamage": 34019.916 + }, + { + "id": "smart-11488-0-shoot", + "name": "Shoot", + "spellId": 16100, + "target": "primary", + "school": "physical", + "expectedCasts": 30.875, + "targetsPerCast": 1, + "damagePerTarget": 1492.3440000000003, + "partyDamage": 46076.12100000001 + }, + { + "id": "smart-11488-1-volley", + "name": "Volley", + "spellId": 22908, + "target": "random-party", + "school": "arcane", + "expectedCasts": 5.2, + "targetsPerCast": 1, + "damagePerTarget": 906.4608, + "partyDamage": 4713.59616 + }, + { + "id": "smart-11488-2-multi-shot", + "name": "Multi-Shot", + "spellId": 20735, + "target": "primary", + "school": "physical", + "expectedCasts": 5.2, + "targetsPerCast": 1, + "damagePerTarget": 1492.3440000000003, + "partyDamage": 7760.188800000002 + }, + { + "id": "smart-11488-3-concussive-shot", + "name": "Concussive Shot", + "spellId": 22914, + "target": "random-party", + "school": "arcane", + "expectedCasts": 3.6, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-11488-4-immolation-trap", + "name": "Immolation Trap", + "spellId": 22910, + "target": "primary", + "school": "fire", + "expectedCasts": 3.325, + "targetsPerCast": 1, + "damagePerTarget": 1492.3440000000003, + "partyDamage": 4962.043800000001 + }, + { + "id": "spell-5116", + "name": "Concussive Shot", + "spellId": 5116, + "target": "random-party", + "school": "physical", + "expectedCasts": 12.813132315016862, + "targetsPerCast": 1, + "damagePerTarget": 1492.3440000000003, + "partyDamage": 19121.601131521526 + }, + { + "id": "spell-20904", + "name": "Aimed Shot", + "spellId": 20904, + "target": "primary", + "school": "physical", + "expectedCasts": 12.813132315016862, + "targetsPerCast": 1, + "damagePerTarget": 1492.3440000000003, + "partyDamage": 19121.601131521526 + }, + { + "id": "spell-14290", + "name": "Multi-Shot", + "spellId": 14290, + "target": "primary", + "school": "physical", + "expectedCasts": 12.813132315016862, + "targetsPerCast": 1, + "damagePerTarget": 1492.3440000000003, + "partyDamage": 19121.601131521526 + }, + { + "id": "spell-14295", + "name": "Volley", + "spellId": 14295, + "target": "nearby-party", + "school": "arcane", + "expectedCasts": 12.813132315016862, + "targetsPerCast": 5, + "damagePerTarget": 906.4608, + "partyDamage": 58073.010843880176 + } + ] + }, + { + "rank": 99, + "pressureVsMedian": 2.359502724008956, + "key": "underbog/entry-17770", + "dungeonId": "underbog", + "dungeonTitle": "Coilfang: The Underbog", + "boss": "Hungarfen", + "serverEntry": 17770, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4700.64, + "partyDamage": 208109.32944696283, + "partyDamagePerSecond": 3468.488824116047, + "tankDamage": 208109.32944696283, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4700.64, + "partyDamage": 144662.196 + }, + { + "id": "spell-31673", + "name": "Foul Spores", + "spellId": 31673, + "target": "random-party", + "school": "shadow", + "expectedCasts": 9.99818676337262, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-31692", + "name": "Summon Underbog Mushroom", + "spellId": 31692, + "target": "self", + "school": "physical", + "expectedCasts": 9.99818676337262, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-38739", + "name": "Acid Geyser", + "spellId": 38739, + "target": "primary", + "school": "nature", + "expectedCasts": 9.99818676337262, + "targetsPerCast": 1, + "damagePerTarget": 6345.8640000000005, + "partyDamage": 63447.133446962835 + } + ] + }, + { + "rank": 100, + "pressureVsMedian": 2.2911949074576716, + "key": "culling-of-stratholme/entry-26529", + "dungeonId": "culling-of-stratholme", + "dungeonTitle": "The Culling of Stratholme", + "boss": "Meathook", + "serverEntry": 26529, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 3386.88, + "partyDamage": 202084.5456, + "partyDamagePerSecond": 3368.07576, + "tankDamage": 202084.5456, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 38.21875, + "targetsPerCast": 1, + "damagePerTarget": 3386.88, + "partyDamage": 129442.32 + }, + { + "id": "spell-52666", + "name": "Disease Expulsion", + "spellId": 52666, + "target": "primary", + "school": "nature", + "expectedCasts": 15.8875, + "targetsPerCast": 1, + "damagePerTarget": 4572.2880000000005, + "partyDamage": 72642.2256 + }, + { + "id": "spell-58841", + "name": "Frenzy", + "spellId": 58841, + "target": "self", + "school": "physical", + "expectedCasts": 5.9625, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-52696", + "name": "Constricting Chains", + "spellId": 52696, + "target": "random-party", + "school": "physical", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 101, + "pressureVsMedian": 2.2292572613870782, + "key": "draktharon-keep/entry-26630", + "dungeonId": "draktharon-keep", + "dungeonTitle": "Drak'Tharon Keep", + "boss": "Trollgore", + "serverEntry": 26630, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 2116.8, + "partyDamage": 196621.61400000006, + "partyDamagePerSecond": 3277.026900000001, + "tankDamage": 196621.61400000006, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 48.64, + "targetsPerCast": 1, + "damagePerTarget": 2116.8, + "partyDamage": 102961.15200000002 + }, + { + "id": "spell-49637", + "name": "Infected Wound", + "spellId": 49637, + "target": "primary", + "school": "nature", + "expectedCasts": 10.925, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-49639", + "name": "Crush", + "spellId": 49639, + "target": "primary", + "school": "physical", + "expectedCasts": 20.85, + "targetsPerCast": 1, + "damagePerTarget": 2857.6800000000003, + "partyDamage": 59582.62800000001 + }, + { + "id": "spell-49380", + "name": "Consume", + "spellId": 49380, + "target": "primary", + "school": "shadow", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 2857.6800000000003, + "partyDamage": 17038.917 + }, + { + "id": "spell-49555", + "name": "Corpse Explode", + "spellId": 49555, + "target": "primary", + "school": "nature", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 2857.6800000000003, + "partyDamage": 17038.917 + } + ] + }, + { + "rank": 102, + "pressureVsMedian": 2.1683714229834106, + "key": "utgarde-keep/entry-23953", + "dungeonId": "utgarde-keep", + "dungeonTitle": "Utgarde Keep", + "boss": "Prince Keleseth", + "serverEntry": 23953, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 5032.160000000001, + "partyDamage": 191251.452366334, + "partyDamagePerSecond": 3187.524206105567, + "tankDamage": 191251.452366334, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 25.8125, + "targetsPerCast": 1, + "damagePerTarget": 5032.160000000001, + "partyDamage": 129892.63000000002 + }, + { + "id": "spell-43667", + "name": "Shadow Bolt", + "spellId": 43667, + "target": "primary", + "school": "shadow", + "expectedCasts": 9.032101429727543, + "targetsPerCast": 1, + "damagePerTarget": 6793.416000000001, + "partyDamage": 61358.82236633398 + }, + { + "id": "spell-48400", + "name": "Frost Tomb", + "spellId": 48400, + "target": "random-party", + "school": "frost", + "expectedCasts": 9.032101429727543, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-42672", + "name": "Frost Tomb", + "spellId": 42672, + "target": "random-party", + "school": "frost", + "expectedCasts": 9.032101429727543, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 103, + "pressureVsMedian": 2.149197331792609, + "key": "blackrock-spire/entry-10363", + "dungeonId": "blackrock-spire", + "dungeonTitle": "Blackrock Spire", + "boss": "General Drakkisath", + "serverEntry": 10363, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 822.08, + "partyDamage": 189560.28785956337, + "partyDamagePerSecond": 3159.3381309927227, + "tankDamage": 64969.59896, + "randomTargetDamage": 19270.979929257646, + "groupwideDamage": 105319.70897030568, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 822.08, + "partyDamage": 25299.512 + }, + { + "id": "spell-16419", + "name": "Flamestrike", + "spellId": 16419, + "target": "primary", + "school": "fire", + "expectedCasts": 10.925, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 12124.652400000003 + }, + { + "id": "spell-15284", + "name": "Cleave", + "spellId": 15284, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 8.44375, + "targetsPerCast": 5, + "damagePerTarget": 674.1056, + "partyDamage": 28459.8958 + }, + { + "id": "spell-16805", + "name": "Conflagration", + "spellId": 16805, + "target": "random-party", + "school": "fire", + "expectedCasts": 6.955, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-15548", + "name": "Thunderclap", + "spellId": 15548, + "target": "random-party", + "school": "nature", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 6617.230200000002 + }, + { + "id": "spell-12097", + "name": "Pierce Armor", + "spellId": 12097, + "target": "primary", + "school": "physical", + "expectedCasts": 12.91, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-16789", + "name": "Rage", + "spellId": 16789, + "target": "primary", + "school": "physical", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 27545.434560000005 + }, + { + "id": "spell-23462", + "name": "Fire Nova", + "spellId": 23462, + "target": "nearby-party", + "school": "fire", + "expectedCasts": 11.40174672489083, + "targetsPerCast": 5, + "damagePerTarget": 674.1056, + "partyDamage": 38429.906585152836 + }, + { + "id": "spell-20691", + "name": "Cleave", + "spellId": 20691, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 11.40174672489083, + "targetsPerCast": 5, + "damagePerTarget": 674.1056, + "partyDamage": 38429.906585152836 + }, + { + "id": "spell-23023", + "name": "Conflagration", + "spellId": 23023, + "target": "random-party", + "school": "fire", + "expectedCasts": 11.40174672489083, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-23931", + "name": "Thunderclap", + "spellId": 23931, + "target": "random-party", + "school": "nature", + "expectedCasts": 11.40174672489083, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 12653.749729257645 + } + ] + }, + { + "rank": 104, + "pressureVsMedian": 2.1343240970817026, + "key": "blackrock-depths/entry-9938", + "dungeonId": "blackrock-depths", + "dungeonTitle": "Blackrock Depths", + "boss": "Magmus", + "serverEntry": 9938, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 986.7200000000001, + "partyDamage": 188248.46106195112, + "partyDamagePerSecond": 3137.474351032519, + "tankDamage": 65791.05200617139, + "randomTargetDamage": 0, + "groupwideDamage": 122457.40905577973, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 25.8125, + "targetsPerCast": 1, + "damagePerTarget": 986.7200000000001, + "partyDamage": 25469.710000000003 + }, + { + "id": "spell-24375", + "name": "War Stomp", + "spellId": 24375, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 15.13482079278424, + "targetsPerCast": 5, + "damagePerTarget": 809.1104, + "partyDamage": 61228.704527889866 + }, + { + "id": "spell-13900", + "name": "Fiery Burst", + "spellId": 13900, + "target": "primary", + "school": "fire", + "expectedCasts": 15.13482079278424, + "targetsPerCast": 1, + "damagePerTarget": 1332.0720000000003, + "partyDamage": 20160.671003085692 + }, + { + "id": "spell-15593", + "name": "War Stomp", + "spellId": 15593, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 15.13482079278424, + "targetsPerCast": 5, + "damagePerTarget": 809.1104, + "partyDamage": 61228.704527889866 + }, + { + "id": "spell-15668", + "name": "Fiery Burst", + "spellId": 15668, + "target": "primary", + "school": "fire", + "expectedCasts": 15.13482079278424, + "targetsPerCast": 1, + "damagePerTarget": 1332.0720000000003, + "partyDamage": 20160.671003085692 + } + ] + }, + { + "rank": 105, + "pressureVsMedian": 2.0645285223493373, + "key": "shattered-halls/entry-16808", + "dungeonId": "shattered-halls", + "dungeonTitle": "Hellfire Citadel: The Shattered Halls", + "boss": "Warchief Kargath Bladefist", + "serverEntry": 16808, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 2537.92, + "partyDamage": 182092.4561935868, + "partyDamagePerSecond": 3034.8742698931137, + "tankDamage": 137860.3174735868, + "randomTargetDamage": 44232.13872000001, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 34.083333333333336, + "targetsPerCast": 1, + "damagePerTarget": 2537.92, + "partyDamage": 86500.77333333335 + }, + { + "id": "spell-12328", + "name": "Sweeping Strikes", + "spellId": 12328, + "target": "primary", + "school": "physical", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 3426.1920000000005, + "partyDamage": 20428.669800000003 + }, + { + "id": "spell-25821", + "name": "Charge", + "spellId": 25821, + "target": "random-party", + "school": "physical", + "expectedCasts": 12.91, + "targetsPerCast": 1, + "damagePerTarget": 3426.1920000000005, + "partyDamage": 44232.13872000001 + }, + { + "id": "spell-30739", + "name": "Blade Dance", + "spellId": 30739, + "target": "primary", + "school": "physical", + "expectedCasts": 9.027770288487464, + "targetsPerCast": 1, + "damagePerTarget": 3426.1920000000005, + "partyDamage": 30930.874340253446 + } + ] + }, + { + "rank": 106, + "pressureVsMedian": 2.0522551640838174, + "key": "botanica/entry-17980", + "dungeonId": "botanica", + "dungeonTitle": "Tempest Keep: The Botanica", + "boss": "Laj", + "serverEntry": 17980, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 3525.76, + "partyDamage": 181009.9398087954, + "partyDamagePerSecond": 3016.8323301465903, + "tankDamage": 181009.9398087954, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 3525.76, + "partyDamage": 108505.264 + }, + { + "id": "spell-34309", + "name": "Damage Immunity: Shadow", + "spellId": 34309, + "target": "self", + "school": "physical", + "expectedCasts": 15.232791586998088, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-34697", + "name": "Allergic Reaction", + "spellId": 34697, + "target": "primary", + "school": "nature", + "expectedCasts": 15.232791586998088, + "targetsPerCast": 1, + "damagePerTarget": 4759.776000000001, + "partyDamage": 72504.67580879542 + } + ] + }, + { + "rank": 107, + "pressureVsMedian": 1.900092104967837, + "key": "steamvault/entry-17797", + "dungeonId": "steamvault", + "dungeonTitle": "Coilfang: The Steamvault", + "boss": "Hydromancer Thespia", + "serverEntry": 17797, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 2676.8, + "partyDamage": 167589.08130458416, + "partyDamagePerSecond": 2793.1513550764025, + "tankDamage": 167589.08130458416, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 2676.8, + "partyDamage": 82378.52 + }, + { + "id": "spell-25033", + "name": "Lightning Cloud", + "spellId": 25033, + "target": "primary", + "school": "nature", + "expectedCasts": 11.78999818807755, + "targetsPerCast": 1, + "damagePerTarget": 3613.6800000000003, + "partyDamage": 42605.28065229209 + }, + { + "id": "spell-31481", + "name": "Lung Burst", + "spellId": 31481, + "target": "primary", + "school": "physical", + "expectedCasts": 11.78999818807755, + "targetsPerCast": 1, + "damagePerTarget": 3613.6800000000003, + "partyDamage": 42605.28065229209 + }, + { + "id": "spell-31718", + "name": "Enveloping Winds", + "spellId": 31718, + "target": "random-party", + "school": "nature", + "expectedCasts": 11.78999818807755, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-25189", + "name": "Enveloping Winds", + "spellId": 25189, + "target": "random-party", + "school": "nature", + "expectedCasts": 11.78999818807755, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 108, + "pressureVsMedian": 1.8805700406580796, + "key": "botanica/entry-17975", + "dungeonId": "botanica", + "dungeonTitle": "Tempest Keep: The Botanica", + "boss": "High Botanist Freywinn", + "serverEntry": 17975, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 2470.7200000000003, + "partyDamage": 165867.22539334313, + "partyDamagePerSecond": 2764.453756555719, + "tankDamage": 165867.22539334313, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 2470.7200000000003, + "partyDamage": 76036.40800000001 + }, + { + "id": "spell-34759", + "name": "Plant White Seedling", + "spellId": 34759, + "target": "self", + "school": "nature", + "expectedCasts": 13.465982834414906, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-34761", + "name": "Plant Green Seedling", + "spellId": 34761, + "target": "self", + "school": "nature", + "expectedCasts": 13.465982834414906, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-34762", + "name": "Plant Blue Seedling", + "spellId": 34762, + "target": "self", + "school": "nature", + "expectedCasts": 13.465982834414906, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-34763", + "name": "Plant Red Seedling", + "spellId": 34763, + "target": "self", + "school": "nature", + "expectedCasts": 13.465982834414906, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-34550", + "name": "Tranquility", + "spellId": 34550, + "target": "primary", + "school": "nature", + "expectedCasts": 13.465982834414906, + "targetsPerCast": 1, + "damagePerTarget": 3335.4720000000007, + "partyDamage": 44915.40869667156 + }, + { + "id": "spell-34551", + "name": "Tree Form", + "spellId": 34551, + "target": "primary", + "school": "physical", + "expectedCasts": 13.465982834414906, + "targetsPerCast": 1, + "damagePerTarget": 3335.4720000000007, + "partyDamage": 44915.40869667156 + }, + { + "id": "spell-34557", + "name": "Summon Frayer Protector", + "spellId": 34557, + "target": "self", + "school": "nature", + "expectedCasts": 13.465982834414906, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 109, + "pressureVsMedian": 1.860828986422684, + "key": "scarlet-monastery/entry-3975", + "dungeonId": "scarlet-monastery", + "dungeonTitle": "Scarlet Monastery", + "boss": "Herod", + "serverEntry": 3975, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1116.64, + "partyDamage": 164126.0544602899, + "partyDamagePerSecond": 2735.4342410048316, + "tankDamage": 47176.365040000004, + "randomTargetDamage": 0, + "groupwideDamage": 116949.68942028985, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 1116.64, + "partyDamage": 27715.004800000002 + }, + { + "id": "smart-3975-1-cleave", + "name": "Cleave", + "spellId": 15496, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 7.875, + "targetsPerCast": 5, + "damagePerTarget": 915.6448, + "partyDamage": 36053.514 + }, + { + "id": "smart-3975-2-whirlwind", + "name": "Whirlwind", + "spellId": 8989, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 2.2857142857142856, + "targetsPerCast": 5, + "damagePerTarget": 915.6448, + "partyDamage": 10464.511999999999 + }, + { + "id": "smart-3975-4-frenzy", + "name": "Frenzy", + "spellId": 8269, + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-6268", + "name": "Rushing Charge", + "spellId": 6268, + "target": "primary", + "school": "physical", + "expectedCasts": 12.91, + "targetsPerCast": 1, + "damagePerTarget": 1507.4640000000002, + "partyDamage": 19461.36024 + }, + { + "id": "spell-30619", + "name": "Mortal Cleave", + "spellId": 30619, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 15.384057971014492, + "targetsPerCast": 5, + "damagePerTarget": 915.6448, + "partyDamage": 70431.66342028986 + }, + { + "id": "spell-8599", + "name": "Enrage", + "spellId": 8599, + "target": "self", + "school": "physical", + "expectedCasts": 15.384057971014492, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 110, + "pressureVsMedian": 1.8396882454029342, + "key": "blackrock-spire/entry-9816", + "dungeonId": "blackrock-spire", + "dungeonTitle": "Blackrock Spire", + "boss": "Pyroguard Emberseer", + "serverEntry": 9816, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 822.08, + "partyDamage": 162261.43044741452, + "partyDamagePerSecond": 2704.357174123575, + "tankDamage": 125438.41204741453, + "randomTargetDamage": 0, + "groupwideDamage": 36823.0184, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 822.08, + "partyDamage": 25299.512 + }, + { + "id": "spell-16047", + "name": "Emberseer Full Strength", + "spellId": 16047, + "target": "primary", + "school": "physical", + "expectedCasts": 10.051527587779297, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 11155.26572913817 + }, + { + "id": "spell-16048", + "name": "Emberseer Growing", + "spellId": 16048, + "target": "primary", + "school": "physical", + "expectedCasts": 10.051527587779297, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 11155.26572913817 + }, + { + "id": "spell-15281", + "name": "Encage Emberseer", + "spellId": 15281, + "target": "primary", + "school": "physical", + "expectedCasts": 10.051527587779297, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 11155.26572913817 + }, + { + "id": "spell-15282", + "name": "Encaged Emberseer", + "spellId": 15282, + "target": "primary", + "school": "physical", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 27545.434560000005 + }, + { + "id": "spell-16245", + "name": "Freeze Anim", + "spellId": 16245, + "target": "random-party", + "school": "physical", + "expectedCasts": 10.051527587779297, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-13376", + "name": "Fire Shield", + "spellId": 13376, + "target": "self", + "school": "fire", + "expectedCasts": 20.85, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-23462", + "name": "Fire Nova", + "spellId": 23462, + "target": "nearby-party", + "school": "fire", + "expectedCasts": 10.925, + "targetsPerCast": 5, + "damagePerTarget": 674.1056, + "partyDamage": 36823.0184 + }, + { + "id": "spell-23341", + "name": "Flame Buffet", + "spellId": 23341, + "target": "primary", + "school": "fire", + "expectedCasts": 20.85, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 23139.496800000004 + }, + { + "id": "spell-17274", + "name": "Pyroblast", + "spellId": 17274, + "target": "primary", + "school": "fire", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 6617.230200000002 + }, + { + "id": "spell-15580", + "name": "Strike", + "spellId": 15580, + "target": "primary", + "school": "physical", + "expectedCasts": 8.44375, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 9370.941300000002 + } + ] + }, + { + "rank": 111, + "pressureVsMedian": 1.8343371237073818, + "key": "hellfire-ramparts/entry-17308", + "dungeonId": "hellfire-ramparts", + "dungeonTitle": "Hellfire Citadel: Ramparts", + "boss": "Omor the Unscarred", + "serverEntry": 17308, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 2882.88, + "partyDamage": 161789.45881690143, + "partyDamagePerSecond": 2696.4909802816906, + "tankDamage": 161789.45881690143, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 2882.88, + "partyDamage": 88720.632 + }, + { + "id": "spell-31901", + "name": "Demonic Shield", + "spellId": 31901, + "target": "self", + "school": "physical", + "expectedCasts": 5.9625, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-30695", + "name": "Treacherous Aura", + "spellId": 30695, + "target": "primary", + "school": "shadow", + "expectedCasts": 9.387323943661972, + "targetsPerCast": 1, + "damagePerTarget": 3891.8880000000004, + "partyDamage": 36534.41340845071 + }, + { + "id": "spell-30686", + "name": "Shadow Bolt", + "spellId": 30686, + "target": "primary", + "school": "shadow", + "expectedCasts": 9.387323943661972, + "targetsPerCast": 1, + "damagePerTarget": 3891.8880000000004, + "partyDamage": 36534.41340845071 + } + ] + }, + { + "rank": 112, + "pressureVsMedian": 1.82367110309145, + "key": "hellfire-ramparts/entry-17306", + "dungeonId": "hellfire-ramparts", + "dungeonTitle": "Hellfire Citadel: Ramparts", + "boss": "Watchkeeper Gargolmar", + "serverEntry": 17306, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1692.3200000000002, + "partyDamage": 160848.71042290187, + "partyDamagePerSecond": 2680.811840381698, + "tankDamage": 160848.71042290187, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 48.64, + "targetsPerCast": 1, + "damagePerTarget": 1692.3200000000002, + "partyDamage": 82314.44480000001 + }, + { + "id": "spell-22857", + "name": "Retaliation", + "spellId": 22857, + "target": "primary", + "school": "physical", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 2284.6320000000005, + "partyDamage": 13622.118300000004 + }, + { + "id": "spell-30641", + "name": "Mortal Wound", + "spellId": 30641, + "target": "primary", + "school": "physical", + "expectedCasts": 9.470839260312944, + "targetsPerCast": 1, + "damagePerTarget": 2284.6320000000005, + "partyDamage": 21637.38244096729 + }, + { + "id": "spell-34645", + "name": "Surge", + "spellId": 34645, + "target": "primary", + "school": "physical", + "expectedCasts": 9.470839260312944, + "targetsPerCast": 1, + "damagePerTarget": 2284.6320000000005, + "partyDamage": 21637.38244096729 + }, + { + "id": "spell-32154", + "name": "Overpower", + "spellId": 32154, + "target": "primary", + "school": "physical", + "expectedCasts": 9.470839260312944, + "targetsPerCast": 1, + "damagePerTarget": 2284.6320000000005, + "partyDamage": 21637.38244096729 + } + ] + }, + { + "rank": 113, + "pressureVsMedian": 1.8048185645288375, + "key": "blackrock-spire/entry-10429", + "dungeonId": "blackrock-spire", + "dungeonTitle": "Blackrock Spire", + "boss": "Warchief Rend Blackhand", + "serverEntry": 10429, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1833.4400000000003, + "partyDamage": 159185.90702, + "partyDamagePerSecond": 2653.0984503333334, + "tankDamage": 62083.71610000001, + "randomTargetDamage": 0, + "groupwideDamage": 97102.19092, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 25.8125, + "targetsPerCast": 1, + "damagePerTarget": 1833.4400000000003, + "partyDamage": 47325.670000000006 + }, + { + "id": "spell-13736", + "name": "Whirlwind", + "spellId": 13736, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 5.9625, + "targetsPerCast": 5, + "damagePerTarget": 1503.4208, + "partyDamage": 44820.7326 + }, + { + "id": "spell-15284", + "name": "Cleave", + "spellId": 15284, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 6.955, + "targetsPerCast": 5, + "damagePerTarget": 1503.4208, + "partyDamage": 52281.45832 + }, + { + "id": "spell-16856", + "name": "Mortal Strike", + "spellId": 16856, + "target": "primary", + "school": "physical", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 2475.1440000000007, + "partyDamage": 14758.046100000005 + } + ] + }, + { + "rank": 114, + "pressureVsMedian": 1.7256895314258665, + "key": "blood-furnace/entry-17381", + "dungeonId": "blood-furnace", + "dungeonTitle": "Hellfire Citadel: The Blood Furnace", + "boss": "The Maker", + "serverEntry": 17381, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 3525.76, + "partyDamage": 152206.68641928528, + "partyDamagePerSecond": 2536.778106988088, + "tankDamage": 152206.68641928528, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 3525.76, + "partyDamage": 87509.3632 + }, + { + "id": "spell-30925", + "name": "Exploding Beaker", + "spellId": 30925, + "target": "primary", + "school": "nature", + "expectedCasts": 13.592514273630789, + "targetsPerCast": 1, + "damagePerTarget": 4759.776000000001, + "partyDamage": 64697.323219285274 + }, + { + "id": "spell-30923", + "name": "Domination", + "spellId": 30923, + "target": "random-party", + "school": "shadow", + "expectedCasts": 13.592514273630789, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 115, + "pressureVsMedian": 1.7197664463892683, + "key": "blood-furnace/entry-17380", + "dungeonId": "blood-furnace", + "dungeonTitle": "Hellfire Citadel: The Blood Furnace", + "boss": "Broggok", + "serverEntry": 17380, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1918.5600000000002, + "partyDamage": 151684.26733382247, + "partyDamagePerSecond": 2528.0711222303744, + "tankDamage": 151684.26733382247, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 1918.5600000000002, + "partyDamage": 59043.684 + }, + { + "id": "spell-30914", + "name": "Poison", + "spellId": 30914, + "target": "primary", + "school": "nature", + "expectedCasts": 11.922597212032281, + "targetsPerCast": 1, + "damagePerTarget": 2590.0560000000005, + "partyDamage": 30880.19444460749 + }, + { + "id": "spell-30913", + "name": "Slime Spray", + "spellId": 30913, + "target": "primary", + "school": "nature", + "expectedCasts": 11.922597212032281, + "targetsPerCast": 1, + "damagePerTarget": 2590.0560000000005, + "partyDamage": 30880.19444460749 + }, + { + "id": "spell-30917", + "name": "Poison Bolt", + "spellId": 30917, + "target": "primary", + "school": "nature", + "expectedCasts": 11.922597212032281, + "targetsPerCast": 1, + "damagePerTarget": 2590.0560000000005, + "partyDamage": 30880.19444460749 + }, + { + "id": "spell-30916", + "name": "Poison Cloud", + "spellId": 30916, + "target": "self", + "school": "physical", + "expectedCasts": 11.922597212032281, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 116, + "pressureVsMedian": 1.6966704181594832, + "key": "dire-maul/entry-14323", + "dungeonId": "dire-maul", + "dungeonTitle": "Dire Maul", + "boss": "Guard Slip'kik", + "serverEntry": 14323, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1174.88, + "partyDamage": 149647.18600355717, + "partyDamagePerSecond": 2494.119766725953, + "tankDamage": 51407.77815384616, + "randomTargetDamage": 24334.532219653185, + "groupwideDamage": 73904.87563005781, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 1174.88, + "partyDamage": 36156.932 + }, + { + "id": "smart-14323-2-strike", + "name": "Strike", + "spellId": 15580, + "target": "primary", + "school": "physical", + "expectedCasts": 9.615384615384615, + "targetsPerCast": 1, + "damagePerTarget": 1586.0880000000002, + "partyDamage": 15250.846153846154 + }, + { + "id": "smart-14323-3-frenzy", + "name": "Frenzy", + "spellId": 8269, + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-14323-5-call-for-help", + "name": "Call for Help", + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-17307", + "name": "Knockout", + "spellId": 17307, + "target": "random-party", + "school": "physical", + "expectedCasts": 15.342485549132949, + "targetsPerCast": 1, + "damagePerTarget": 1586.0880000000002, + "partyDamage": 24334.532219653185 + }, + { + "id": "spell-20691", + "name": "Cleave", + "spellId": 20691, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 15.342485549132949, + "targetsPerCast": 5, + "damagePerTarget": 963.4016, + "partyDamage": 73904.87563005781 + } + ] + }, + { + "rank": 117, + "pressureVsMedian": 1.551327410273234, + "key": "blackrock-spire/entry-10430", + "dungeonId": "blackrock-spire", + "dungeonTitle": "Blackrock Spire", + "boss": "The Beast", + "serverEntry": 10430, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 822.08, + "partyDamage": 136827.85945511403, + "partyDamagePerSecond": 2280.4643242519005, + "tankDamage": 136827.85945511403, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 822.08, + "partyDamage": 25299.512 + }, + { + "id": "spell-16785", + "name": "Flamebreak", + "spellId": 16785, + "target": "primary", + "school": "fire", + "expectedCasts": 13.123371335504887, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 14564.42249511401 + }, + { + "id": "spell-15570", + "name": "Immolate", + "spellId": 15570, + "target": "primary", + "school": "fire", + "expectedCasts": 20.85, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 23139.496800000004 + }, + { + "id": "spell-14100", + "name": "Terrifying Roar", + "spellId": 14100, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 13.123371335504887, + "targetsPerCast": 5, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-16636", + "name": "Berserker Charge", + "spellId": 16636, + "target": "primary", + "school": "physical", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 27545.434560000005 + }, + { + "id": "spell-16788", + "name": "Fireball", + "spellId": 16788, + "target": "primary", + "school": "fire", + "expectedCasts": 20.85, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 23139.496800000004 + }, + { + "id": "spell-16144", + "name": "Fire Blast", + "spellId": 16144, + "target": "primary", + "school": "fire", + "expectedCasts": 20.85, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 23139.496800000004 + } + ] + }, + { + "rank": 118, + "pressureVsMedian": 1.4771915589053775, + "key": "trial-of-the-champion/entry-30188", + "dungeonId": "trial-of-the-champion", + "dungeonTitle": "Trial of the Champion", + "boss": "Argent Champion", + "serverEntry": 30188, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4233.6, + "partyDamage": 130289.04000000001, + "partyDamagePerSecond": 2171.484, + "tankDamage": 130289.04000000001, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 4233.6, + "partyDamage": 130289.04000000001 + }, + { + "id": "spell-53625", + "name": "Heroic Leap", + "spellId": 53625, + "target": "self", + "school": "physical", + "expectedCasts": 15.308024987986546, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 119, + "pressureVsMedian": 1.4596064634318435, + "key": "dire-maul/entry-14321", + "dungeonId": "dire-maul", + "dungeonTitle": "Dire Maul", + "boss": "Guard Fengus", + "serverEntry": 14321, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1174.88, + "partyDamage": 128738.02571634616, + "partyDamagePerSecond": 2145.633761939103, + "tankDamage": 70562.97709134615, + "randomTargetDamage": 0, + "groupwideDamage": 58175.048625, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 1174.88, + "partyDamage": 36156.932 + }, + { + "id": "smart-14321-2-strike", + "name": "Strike", + "spellId": 15580, + "target": "primary", + "school": "physical", + "expectedCasts": 9.615384615384615, + "targetsPerCast": 1, + "damagePerTarget": 1586.0880000000002, + "partyDamage": 15250.846153846154 + }, + { + "id": "smart-14321-3-frenzy", + "name": "Frenzy", + "spellId": 8269, + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-14321-5-call-for-help", + "name": "Call for Help", + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-15655", + "name": "Shield Slam", + "spellId": 15655, + "target": "self", + "school": "physical", + "expectedCasts": 12.077008928571429, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-22572", + "name": "Bruising Blow", + "spellId": 22572, + "target": "primary", + "school": "physical", + "expectedCasts": 12.077008928571429, + "targetsPerCast": 1, + "damagePerTarget": 1586.0880000000002, + "partyDamage": 19155.1989375 + }, + { + "id": "spell-20691", + "name": "Cleave", + "spellId": 20691, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 12.077008928571429, + "targetsPerCast": 5, + "damagePerTarget": 963.4016, + "partyDamage": 58175.048625 + } + ] + }, + { + "rank": 120, + "pressureVsMedian": 1.4115943441914052, + "key": "stratholme/entry-10813", + "dungeonId": "stratholme", + "dungeonTitle": "Stratholme", + "boss": "Balnazzar", + "serverEntry": 10813, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1989.1200000000001, + "partyDamage": 124503.33260123144, + "partyDamagePerSecond": 2075.055543353857, + "tankDamage": 124503.33260123144, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 1989.1200000000001, + "partyDamage": 61215.168 + }, + { + "id": "spell-17287", + "name": "Mind Blast", + "spellId": 17287, + "target": "primary", + "school": "shadow", + "expectedCasts": 11.784136182542557, + "targetsPerCast": 1, + "damagePerTarget": 2685.3120000000004, + "partyDamage": 31644.082300615722 + }, + { + "id": "spell-17399", + "name": "Shadow Shock", + "spellId": 17399, + "target": "primary", + "school": "shadow", + "expectedCasts": 11.784136182542557, + "targetsPerCast": 1, + "damagePerTarget": 2685.3120000000004, + "partyDamage": 31644.082300615722 + }, + { + "id": "spell-12098", + "name": "Sleep", + "spellId": 12098, + "target": "random-party", + "school": "shadow", + "expectedCasts": 11.784136182542557, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-13704", + "name": "Psychic Scream", + "spellId": 13704, + "target": "random-party", + "school": "shadow", + "expectedCasts": 11.784136182542557, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 121, + "pressureVsMedian": 1.4024572129918924, + "key": "razorfen-downs/entry-7355", + "dungeonId": "razorfen-downs", + "dungeonTitle": "Razorfen Downs", + "boss": "Tuten'kash", + "serverEntry": 7355, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1762.88, + "partyDamage": 123697.43302432029, + "partyDamagePerSecond": 2061.6238837386713, + "tankDamage": 123697.43302432029, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 1762.88, + "partyDamage": 54252.632 + }, + { + "id": "smart-7355-1-curse-of-tuten-kash", + "name": "Curse of Tuten'kash", + "spellId": 12255, + "target": "primary", + "school": "shadow", + "expectedCasts": 2.3466666666666667, + "targetsPerCast": 1, + "damagePerTarget": 2379.8880000000004, + "partyDamage": 5584.8038400000005 + }, + { + "id": "smart-7355-2-web-spray", + "name": "Web Spray", + "spellId": 12252, + "target": "random-party", + "school": "physical", + "expectedCasts": 3.8, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-3391", + "name": "Thrash", + "spellId": 3391, + "target": "primary", + "school": "physical", + "expectedCasts": 13.416597164303587, + "targetsPerCast": 1, + "damagePerTarget": 2379.8880000000004, + "partyDamage": 31929.99859216014 + }, + { + "id": "spell-12251", + "name": "Virulent Poison", + "spellId": 12251, + "target": "primary", + "school": "nature", + "expectedCasts": 13.416597164303587, + "targetsPerCast": 1, + "damagePerTarget": 2379.8880000000004, + "partyDamage": 31929.99859216014 + } + ] + }, + { + "rank": 122, + "pressureVsMedian": 1.3076177223976329, + "key": "blackrock-spire/entry-9237", + "dungeonId": "blackrock-spire", + "dungeonTitle": "Blackrock Spire", + "boss": "War Master Voone", + "serverEntry": 9237, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 822.08, + "partyDamage": 115332.54215480333, + "partyDamagePerSecond": 1922.2090359133888, + "tankDamage": 72860.90245160111, + "randomTargetDamage": 22374.8665032022, + "groupwideDamage": 20096.7732, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 822.08, + "partyDamage": 25299.512 + }, + { + "id": "spell-15618", + "name": "Snap Kick", + "spellId": 15618, + "target": "random-party", + "school": "physical", + "expectedCasts": 10.080512351326623, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 11187.4332516011 + }, + { + "id": "spell-15284", + "name": "Cleave", + "spellId": 15284, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 5.9625, + "targetsPerCast": 5, + "damagePerTarget": 674.1056, + "partyDamage": 20096.7732 + }, + { + "id": "spell-10966", + "name": "Uppercut", + "spellId": 10966, + "target": "primary", + "school": "physical", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 6617.230200000002 + }, + { + "id": "spell-16856", + "name": "Mortal Strike", + "spellId": 16856, + "target": "primary", + "school": "physical", + "expectedCasts": 10.080512351326623, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 11187.4332516011 + }, + { + "id": "spell-15615", + "name": "Pummel", + "spellId": 15615, + "target": "primary", + "school": "physical", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 6617.230200000002 + }, + { + "id": "spell-16075", + "name": "Throw Axe", + "spellId": 16075, + "target": "random-party", + "school": "physical", + "expectedCasts": 10.080512351326623, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 11187.4332516011 + }, + { + "id": "spell-3391", + "name": "Thrash", + "spellId": 3391, + "target": "primary", + "school": "physical", + "expectedCasts": 20.85, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 23139.496800000004 + } + ] + }, + { + "rank": 123, + "pressureVsMedian": 1.305318340220262, + "key": "blackrock-spire/entry-9568", + "dungeonId": "blackrock-spire", + "dungeonTitle": "Blackrock Spire", + "boss": "Overlord Wyrmthalak", + "serverEntry": 9568, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 822.08, + "partyDamage": 115129.7354878706, + "partyDamagePerSecond": 1918.8289247978432, + "tankDamage": 78306.7170878706, + "randomTargetDamage": 0, + "groupwideDamage": 36823.0184, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 822.08, + "partyDamage": 25299.512 + }, + { + "id": "spell-11130", + "name": "Knock Away", + "spellId": 11130, + "target": "primary", + "school": "physical", + "expectedCasts": 11.471250219799543, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 12730.885263935294 + }, + { + "id": "spell-23511", + "name": "Demoralizing Shout", + "spellId": 23511, + "target": "primary", + "school": "physical", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 27545.434560000005 + }, + { + "id": "spell-15284", + "name": "Cleave", + "spellId": 15284, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 10.925, + "targetsPerCast": 5, + "damagePerTarget": 674.1056, + "partyDamage": 36823.0184 + }, + { + "id": "spell-20686", + "name": "Knock Away", + "spellId": 20686, + "target": "primary", + "school": "physical", + "expectedCasts": 11.471250219799543, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 12730.885263935294 + } + ] + }, + { + "rank": 124, + "pressureVsMedian": 1.2756798835770518, + "key": "mana-tombs/entry-18341", + "dungeonId": "mana-tombs", + "dungeonTitle": "Auchindoun: Mana-Tombs", + "boss": "Pandemonius", + "serverEntry": 18341, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1635.2, + "partyDamage": 112515.6086741573, + "partyDamagePerSecond": 1875.2601445692883, + "tankDamage": 112515.6086741573, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 48.64, + "targetsPerCast": 1, + "damagePerTarget": 1635.2, + "partyDamage": 79536.128 + }, + { + "id": "spell-32358", + "name": "Dark Shell", + "spellId": 32358, + "target": "self", + "school": "shadow", + "expectedCasts": 14.939606741573034, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-32325", + "name": "Void Blast", + "spellId": 32325, + "target": "primary", + "school": "shadow", + "expectedCasts": 14.939606741573034, + "targetsPerCast": 1, + "damagePerTarget": 2207.52, + "partyDamage": 32979.480674157305 + } + ] + }, + { + "rank": 125, + "pressureVsMedian": 1.248153691783712, + "key": "dire-maul/entry-14327", + "dungeonId": "dire-maul", + "dungeonTitle": "Dire Maul", + "boss": "Lethtendris", + "serverEntry": 14327, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1105.44, + "partyDamage": 110087.78468478407, + "partyDamagePerSecond": 1834.7964114130677, + "tankDamage": 77765.64958983456, + "randomTargetDamage": 9324.888872727275, + "groupwideDamage": 22997.246222222224, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 1105.44, + "partyDamage": 34019.916 + }, + { + "id": "smart-14327-0-void-bolt", + "name": "Void Bolt", + "spellId": 22709, + "target": "primary", + "school": "shadow", + "expectedCasts": 11.727272727272727, + "targetsPerCast": 1, + "damagePerTarget": 1492.3440000000003, + "partyDamage": 17501.125090909092 + }, + { + "id": "smart-14327-1-shadow-bolt-volley", + "name": "Shadow Bolt Volley", + "spellId": 14887, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 5.074074074074074, + "targetsPerCast": 5, + "damagePerTarget": 906.4608, + "partyDamage": 22997.246222222224 + }, + { + "id": "smart-14327-2-immolate", + "name": "Immolate", + "spellId": 20787, + "target": "random-party", + "school": "fire", + "expectedCasts": 3.6666666666666665, + "targetsPerCast": 1, + "damagePerTarget": 1492.3440000000003, + "partyDamage": 5471.928000000001 + }, + { + "id": "smart-14327-3-enlarge", + "name": "Enlarge", + "spellId": 22710, + "target": "primary", + "school": "shadow", + "expectedCasts": 2.6333333333333333, + "targetsPerCast": 1, + "damagePerTarget": 1492.3440000000003, + "partyDamage": 3929.839200000001 + }, + { + "id": "smart-14327-4-curse-of-thorns", + "name": "Curse of Thorns", + "spellId": 16247, + "target": "primary", + "school": "shadow", + "expectedCasts": 2.581818181818182, + "targetsPerCast": 1, + "damagePerTarget": 1492.3440000000003, + "partyDamage": 3852.960872727274 + }, + { + "id": "smart-14327-5-curse-of-tongues", + "name": "Curse of Tongues", + "spellId": 13338, + "target": "random-party", + "school": "shadow", + "expectedCasts": 2.581818181818182, + "targetsPerCast": 1, + "damagePerTarget": 1492.3440000000003, + "partyDamage": 3852.960872727274 + }, + { + "id": "spell-11668", + "name": "Immolate", + "spellId": 11668, + "target": "primary", + "school": "fire", + "expectedCasts": 12.371013939278212, + "targetsPerCast": 1, + "damagePerTarget": 1492.3440000000003, + "partyDamage": 18461.808426198208 + } + ] + }, + { + "rank": 126, + "pressureVsMedian": 1.240901529402738, + "key": "mana-tombs/entry-18343", + "dungeonId": "mana-tombs", + "dungeonTitle": "Auchindoun: Mana-Tombs", + "boss": "Tavarok", + "serverEntry": 18343, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1635.2, + "partyDamage": 109448.1403076923, + "partyDamagePerSecond": 1824.1356717948718, + "tankDamage": 109448.1403076923, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 48.64, + "targetsPerCast": 1, + "damagePerTarget": 1635.2, + "partyDamage": 79536.128 + }, + { + "id": "spell-33919", + "name": "Earthquake", + "spellId": 33919, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 13.550052687038988, + "targetsPerCast": 5, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-32361", + "name": "Crystal Prison", + "spellId": 32361, + "target": "random-party", + "school": "nature", + "expectedCasts": 13.550052687038988, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-8374", + "name": "Arcing Smash", + "spellId": 8374, + "target": "primary", + "school": "physical", + "expectedCasts": 13.550052687038988, + "targetsPerCast": 1, + "damagePerTarget": 2207.52, + "partyDamage": 29912.01230769231 + } + ] + }, + { + "rank": 127, + "pressureVsMedian": 1.1751172887788912, + "key": "maraudon/entry-12237", + "dungeonId": "maraudon", + "dungeonTitle": "Maraudon", + "boss": "Meshlok the Harvester", + "serverEntry": 12237, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1762.88, + "partyDamage": 103645.93712941177, + "partyDamagePerSecond": 1727.4322854901961, + "tankDamage": 79241.456, + "randomTargetDamage": 0, + "groupwideDamage": 24404.481129411764, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 1762.88, + "partyDamage": 54252.632 + }, + { + "id": "smart-12237-1-strike", + "name": "Strike", + "spellId": 13446, + "target": "primary", + "school": "physical", + "expectedCasts": 10.5, + "targetsPerCast": 1, + "damagePerTarget": 2379.8880000000004, + "partyDamage": 24988.824000000004 + }, + { + "id": "smart-12237-2-war-stomp", + "name": "War Stomp", + "spellId": 15593, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 3.376470588235294, + "targetsPerCast": 5, + "damagePerTarget": 1445.5616, + "partyDamage": 24404.481129411764 + } + ] + }, + { + "rank": 128, + "pressureVsMedian": 1.0752578389424545, + "key": "sunken-temple/entry-8443", + "dungeonId": "sunken-temple", + "dungeonTitle": "Sunken Temple", + "boss": "Avatar of Hakkar", + "serverEntry": 8443, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1762.88, + "partyDamage": 94838.28332467533, + "partyDamagePerSecond": 1580.6380554112554, + "tankDamage": 94838.28332467533, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 1762.88, + "partyDamage": 54252.632 + }, + { + "id": "smart-8443-7-lash", + "name": "Lash", + "spellId": 6607, + "target": "random-party", + "school": "physical", + "expectedCasts": 4.516129032258064, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-8443-8-curse-of-tongues", + "name": "Curse of Tongues", + "spellId": 12889, + "target": "primary", + "school": "shadow", + "expectedCasts": 3.7777777777777777, + "targetsPerCast": 1, + "damagePerTarget": 2379.8880000000004, + "partyDamage": 8990.688000000002 + }, + { + "id": "smart-8443-9-cause-insanity", + "name": "Cause Insanity", + "spellId": 12888, + "target": "random-party", + "school": "shadow", + "expectedCasts": 2.3076923076923075, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-10893", + "name": "Shadow Word: Pain", + "spellId": 10893, + "target": "primary", + "school": "shadow", + "expectedCasts": 13.275819418676562, + "targetsPerCast": 1, + "damagePerTarget": 2379.8880000000004, + "partyDamage": 31594.963324675333 + } + ] + }, + { + "rank": 129, + "pressureVsMedian": 1.0732529436741252, + "key": "dire-maul/entry-14326", + "dungeonId": "dire-maul", + "dungeonTitle": "Dire Maul", + "boss": "Guard Mol'dar", + "serverEntry": 14326, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1174.88, + "partyDamage": 94661.45055154145, + "partyDamagePerSecond": 1577.6908425256909, + "tankDamage": 51407.77815384616, + "randomTargetDamage": 0, + "groupwideDamage": 43253.67239769529, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 1174.88, + "partyDamage": 36156.932 + }, + { + "id": "smart-14326-2-strike", + "name": "Strike", + "spellId": 15580, + "target": "primary", + "school": "physical", + "expectedCasts": 9.615384615384615, + "targetsPerCast": 1, + "damagePerTarget": 1586.0880000000002, + "partyDamage": 15250.846153846154 + }, + { + "id": "smart-14326-3-frenzy", + "name": "Frenzy", + "spellId": 8269, + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-14326-5-call-for-help", + "name": "Call for Help", + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-15655", + "name": "Shield Slam", + "spellId": 15655, + "target": "self", + "school": "physical", + "expectedCasts": 8.9793648666756, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-20691", + "name": "Cleave", + "spellId": 20691, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 8.9793648666756, + "targetsPerCast": 5, + "damagePerTarget": 963.4016, + "partyDamage": 43253.67239769529 + } + ] + }, + { + "rank": 130, + "pressureVsMedian": 1.0721355096530094, + "key": "razorfen-kraul/entry-4842", + "dungeonId": "razorfen-kraul", + "dungeonTitle": "Razorfen Kraul", + "boss": "Earthcaller Halmgar", + "serverEntry": 4842, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1657.6000000000001, + "partyDamage": 94562.89230769231, + "partyDamagePerSecond": 1576.0482051282052, + "tankDamage": 94562.89230769231, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 1657.6000000000001, + "partyDamage": 51012.64 + }, + { + "id": "smart-4842-2-lightning-bolt", + "name": "Lightning Bolt", + "spellId": 9532, + "target": "primary", + "school": "nature", + "expectedCasts": 19.46153846153846, + "targetsPerCast": 1, + "damagePerTarget": 2237.76, + "partyDamage": 43550.25230769231 + }, + { + "id": "smart-4842-3-earthbind-totem", + "name": "Earthbind Totem", + "spellId": 2484, + "target": "self", + "school": "physical", + "expectedCasts": 2.0727272727272728, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 131, + "pressureVsMedian": 1.068744891952625, + "key": "slave-pens/entry-17941", + "dungeonId": "slave-pens", + "dungeonTitle": "Coilfang: The Slave Pens", + "boss": "Mennu the Betrayer", + "serverEntry": 17941, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1433.6000000000001, + "partyDamage": 94263.83811764707, + "partyDamagePerSecond": 1571.0639686274512, + "tankDamage": 94263.83811764707, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 48.64, + "targetsPerCast": 1, + "damagePerTarget": 1433.6000000000001, + "partyDamage": 69730.304 + }, + { + "id": "spell-34980", + "name": "Mennu's Healing Ward", + "spellId": 34980, + "target": "lowest-health-friendly", + "school": "physical", + "expectedCasts": 12.676470588235293, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-35010", + "name": "Lightning Bolt", + "spellId": 35010, + "target": "primary", + "school": "nature", + "expectedCasts": 12.676470588235293, + "targetsPerCast": 1, + "damagePerTarget": 1935.3600000000004, + "partyDamage": 24533.53411764706 + }, + { + "id": "spell-31991", + "name": "Corrupted Nova Totem", + "spellId": 31991, + "target": "self", + "school": "fire", + "expectedCasts": 12.676470588235293, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-31981", + "name": "Tainted Earthgrab Totem", + "spellId": 31981, + "target": "self", + "school": "physical", + "expectedCasts": 12.676470588235293, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-31985", + "name": "Tainted Stoneskin Totem", + "spellId": 31985, + "target": "self", + "school": "nature", + "expectedCasts": 12.676470588235293, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 132, + "pressureVsMedian": 1.0548579943688703, + "key": "shadowfang-keep/entry-4275", + "dungeonId": "shadowfang-keep", + "dungeonTitle": "Shadowfang Keep", + "boss": "Archmage Arugal", + "serverEntry": 4275, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1260.0000000000002, + "partyDamage": 93039.00675176355, + "partyDamagePerSecond": 1550.6501125293923, + "tankDamage": 88195.20675176353, + "randomTargetDamage": 4843.800000000001, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 1260.0000000000002, + "partyDamage": 38776.50000000001 + }, + { + "id": "smart-4275-3-void-bolt", + "name": "Void Bolt", + "spellId": 7588, + "target": "primary", + "school": "shadow", + "expectedCasts": 19.384615384615383, + "targetsPerCast": 1, + "damagePerTarget": 1701.0000000000005, + "partyDamage": 32973.23076923077 + }, + { + "id": "smart-4275-4-thundershock", + "name": "Thundershock", + "spellId": 7803, + "target": "random-party", + "school": "nature", + "expectedCasts": 2.8476190476190477, + "targetsPerCast": 1, + "damagePerTarget": 1701.0000000000005, + "partyDamage": 4843.800000000001 + }, + { + "id": "smart-4275-5-arugal-s-curse", + "name": "Arugal's Curse", + "spellId": 7621, + "target": "random-party", + "school": "shadow", + "expectedCasts": 2.8476190476190477, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-22709", + "name": "Void Bolt", + "spellId": 22709, + "target": "primary", + "school": "shadow", + "expectedCasts": 9.668122270742359, + "targetsPerCast": 1, + "damagePerTarget": 1701.0000000000005, + "partyDamage": 16445.475982532756 + } + ] + }, + { + "rank": 133, + "pressureVsMedian": 1.036233013312529, + "key": "dire-maul/entry-11487", + "dungeonId": "dire-maul", + "dungeonTitle": "Dire Maul", + "boss": "Magister Kalendris", + "serverEntry": 11487, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1105.44, + "partyDamage": 91396.27403560378, + "partyDamagePerSecond": 1523.2712339267298, + "tankDamage": 82143.74123560378, + "randomTargetDamage": 9252.532800000003, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 1105.44, + "partyDamage": 34019.916 + }, + { + "id": "smart-11487-0-shadowform", + "name": "Shadowform", + "spellId": 22917, + "target": "self", + "school": "shadow", + "expectedCasts": 1.4666666666666668, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-11487-1-mind-blast", + "name": "Mind Blast", + "spellId": 15587, + "target": "primary", + "school": "shadow", + "expectedCasts": 4.65625, + "targetsPerCast": 1, + "damagePerTarget": 1492.3440000000003, + "partyDamage": 6948.726750000002 + }, + { + "id": "smart-11487-2-mind-flay", + "name": "Mind Flay", + "spellId": 22919, + "target": "random-party", + "school": "shadow", + "expectedCasts": 10.166666666666666, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-11487-3-shadow-word-pain", + "name": "Shadow Word: Pain", + "spellId": 15654, + "target": "random-party", + "school": "shadow", + "expectedCasts": 6.2, + "targetsPerCast": 1, + "damagePerTarget": 1492.3440000000003, + "partyDamage": 9252.532800000003 + }, + { + "id": "smart-11487-4-dominate-mind", + "name": "Dominate Mind", + "spellId": 7645, + "target": "random-party", + "school": "shadow", + "expectedCasts": 2.4333333333333336, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-17146", + "name": "Shadow Word: Pain", + "spellId": 17146, + "target": "primary", + "school": "shadow", + "expectedCasts": 13.795444778685003, + "targetsPerCast": 1, + "damagePerTarget": 1492.3440000000003, + "partyDamage": 20587.549242801895 + }, + { + "id": "spell-17287", + "name": "Mind Blast", + "spellId": 17287, + "target": "primary", + "school": "shadow", + "expectedCasts": 13.795444778685003, + "targetsPerCast": 1, + "damagePerTarget": 1492.3440000000003, + "partyDamage": 20587.549242801895 + } + ] + }, + { + "rank": 134, + "pressureVsMedian": 1.0341171268261835, + "key": "dire-maul/entry-11501", + "dungeonId": "dire-maul", + "dungeonTitle": "Dire Maul", + "boss": "King Gordok", + "serverEntry": 11501, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1410.0800000000002, + "partyDamage": 91209.65178110132, + "partyDamagePerSecond": 1520.1608630183553, + "tankDamage": 72314.57978110132, + "randomTargetDamage": 0, + "groupwideDamage": 18895.071999999996, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 1410.0800000000002, + "partyDamage": 43395.212 + }, + { + "id": "smart-11501-1-mortal-strike", + "name": "Mortal Strike", + "spellId": 15708, + "target": "primary", + "school": "physical", + "expectedCasts": 5.695652173913044, + "targetsPerCast": 1, + "damagePerTarget": 1903.6080000000004, + "partyDamage": 10842.289043478264 + }, + { + "id": "smart-11501-2-sunder-armor", + "name": "Sunder Armor", + "spellId": 15572, + "target": "primary", + "school": "physical", + "expectedCasts": 6.894736842105263, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-11501-3-war-stomp", + "name": "War Stomp", + "spellId": 16727, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 3.268292682926829, + "targetsPerCast": 5, + "damagePerTarget": 1156.2656, + "partyDamage": 18895.071999999996 + }, + { + "id": "spell-22886", + "name": "Berserker Charge", + "spellId": 22886, + "target": "primary", + "school": "physical", + "expectedCasts": 9.496219146811242, + "targetsPerCast": 1, + "damagePerTarget": 1903.6080000000004, + "partyDamage": 18077.07873762306 + } + ] + }, + { + "rank": 135, + "pressureVsMedian": 1.0218353873890365, + "key": "blackrock-depths/entry-9041", + "dungeonId": "blackrock-depths", + "dungeonTitle": "Blackrock Depths", + "boss": "Warder Stilgiss", + "serverEntry": 9041, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 773.9200000000001, + "partyDamage": 90126.39617274827, + "partyDamagePerSecond": 1502.1066028791379, + "tankDamage": 45083.96064516129, + "randomTargetDamage": 0, + "groupwideDamage": 45042.435527586975, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 773.9200000000001, + "partyDamage": 23817.388000000003 + }, + { + "id": "warder-stilgiss-frostbolt", + "name": "Frostbolt", + "spellId": 12675, + "target": "primary", + "school": "frost", + "expectedCasts": 20.35483870967742, + "targetsPerCast": 1, + "damagePerTarget": 1044.7920000000001, + "partyDamage": 21266.572645161294 + }, + { + "id": "warder-stilgiss-frost-nova", + "name": "Frost Nova", + "spellId": 12674, + "target": "nearby-party", + "school": "frost", + "expectedCasts": 14.195213826722801, + "targetsPerCast": 5, + "damagePerTarget": 634.6144, + "partyDamage": 45042.435527586975 + }, + { + "id": "smart-9041-6-frost-ward", + "name": "Frost Ward", + "spellId": 15044, + "target": "self", + "school": "frost", + "expectedCasts": 1.837037037037037, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-12556", + "name": "Frost Armor", + "spellId": 12556, + "target": "self", + "school": "frost", + "expectedCasts": 14.195213826722801, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 136, + "pressureVsMedian": 1.0009137541807749, + "key": "razorfen-downs/entry-7356", + "dungeonId": "razorfen-downs", + "dungeonTitle": "Razorfen Downs", + "boss": "Plaguemaw the Rotting", + "serverEntry": 7356, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1762.88, + "partyDamage": 88281.09757927647, + "partyDamagePerSecond": 1471.3516263212744, + "tankDamage": 88281.09757927647, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 1762.88, + "partyDamage": 54252.632 + }, + { + "id": "smart-7356-0-putrid-stench", + "name": "Putrid Stench", + "spellId": 12946, + "target": "random-party", + "school": "physical", + "expectedCasts": 3.6315789473684212, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-11441", + "name": "Withered Touch", + "spellId": 11441, + "target": "primary", + "school": "physical", + "expectedCasts": 14.298347476552031, + "targetsPerCast": 1, + "damagePerTarget": 2379.8880000000004, + "partyDamage": 34028.46557927647 + } + ] + }, + { + "rank": 137, + "pressureVsMedian": 1, + "key": "shadow-labyrinth/entry-18731", + "dungeonId": "shadow-labyrinth", + "dungeonTitle": "Auchindoun: Shadow Labyrinth", + "boss": "Ambassador Hellmaw", + "serverEntry": 18731, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 4230.240000000001, + "partyDamage": 88200.50400000002, + "partyDamagePerSecond": 1470.0084000000002, + "tankDamage": 88200.50400000002, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 20.85, + "targetsPerCast": 1, + "damagePerTarget": 4230.240000000001, + "partyDamage": 88200.50400000002 + }, + { + "id": "spell-38791", + "name": "Banish", + "spellId": 38791, + "target": "random-party", + "school": "shadow", + "expectedCasts": 11.693122643203449, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-33551", + "name": "Corrosive Acid", + "spellId": 33551, + "target": "self", + "school": "nature", + "expectedCasts": 11.693122643203449, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-33547", + "name": "Fear", + "spellId": 33547, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 11.693122643203449, + "targetsPerCast": 5, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-34970", + "name": "Frenzy", + "spellId": 34970, + "target": "self", + "school": "physical", + "expectedCasts": 11.693122643203449, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 138, + "pressureVsMedian": 0.9496002309859516, + "key": "scholomance/entry-10504", + "dungeonId": "scholomance", + "dungeonTitle": "Scholomance", + "boss": "Lord Alexei Barov", + "serverEntry": 10504, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 822.08, + "partyDamage": 83755.21897147736, + "partyDamagePerSecond": 1395.9203161912892, + "tankDamage": 46103.7443617421, + "randomTargetDamage": 0, + "groupwideDamage": 37651.47460973526, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 822.08, + "partyDamage": 25299.512 + }, + { + "id": "smart-10504-1-immolate", + "name": "Immolate", + "spellId": 20294, + "target": "primary", + "school": "fire", + "expectedCasts": 4, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 4439.232000000001 + }, + { + "id": "smart-10504-2-veil-of-shadow", + "name": "Veil of Shadow", + "spellId": 17820, + "target": "primary", + "school": "shadow", + "expectedCasts": 3.575, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 3967.563600000001 + }, + { + "id": "spell-11668", + "name": "Immolate", + "spellId": 11668, + "target": "primary", + "school": "fire", + "expectedCasts": 11.170794192997437, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 12397.436761742103 + }, + { + "id": "spell-11700", + "name": "Drain Life", + "spellId": 11700, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 11.170794192997437, + "targetsPerCast": 5, + "damagePerTarget": 674.1056, + "partyDamage": 37651.47460973526 + }, + { + "id": "spell-18116", + "name": "Kirtonos Gargoyle Passive", + "spellId": 18116, + "target": "primary", + "school": "physical", + "expectedCasts": 11.170794192997437, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 139, + "pressureVsMedian": 0.9486475756961475, + "key": "blackrock-spire/entry-10263", + "dungeonId": "blackrock-spire", + "dungeonTitle": "Blackrock Spire", + "boss": "Burning Felguard", + "serverEntry": 10263, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 945.2800000000001, + "partyDamage": 83671.19429477837, + "partyDamagePerSecond": 1394.5199049129728, + "tankDamage": 40478.122573913046, + "randomTargetDamage": 43193.07172086532, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 26.891304347826086, + "targetsPerCast": 1, + "damagePerTarget": 945.2800000000001, + "partyDamage": 25419.812173913044 + }, + { + "id": "smart-10263-2-thunderclap", + "name": "Thunderclap", + "spellId": 15548, + "target": "random-party", + "school": "nature", + "expectedCasts": 4.142857142857142, + "targetsPerCast": 1, + "damagePerTarget": 1276.1280000000002, + "partyDamage": 5286.816 + }, + { + "id": "smart-10263-3-strike", + "name": "Strike", + "spellId": 15580, + "target": "primary", + "school": "physical", + "expectedCasts": 11.8, + "targetsPerCast": 1, + "damagePerTarget": 1276.1280000000002, + "partyDamage": 15058.310400000002 + }, + { + "id": "spell-16046", + "name": "Blast Wave", + "spellId": 16046, + "target": "random-party", + "school": "fire", + "expectedCasts": 14.852058618283321, + "targetsPerCast": 1, + "damagePerTarget": 1276.1280000000002, + "partyDamage": 18953.12786043266 + }, + { + "id": "spell-15588", + "name": "Thunderclap", + "spellId": 15588, + "target": "random-party", + "school": "nature", + "expectedCasts": 14.852058618283321, + "targetsPerCast": 1, + "damagePerTarget": 1276.1280000000002, + "partyDamage": 18953.12786043266 + } + ] + }, + { + "rank": 140, + "pressureVsMedian": 0.9166206163962372, + "key": "stratholme/entry-10516", + "dungeonId": "stratholme", + "dungeonTitle": "Stratholme", + "boss": "The Unforgiven", + "serverEntry": 10516, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 869.1200000000001, + "partyDamage": 80846.4003429388, + "partyDamagePerSecond": 1347.4400057156465, + "tankDamage": 26747.168, + "randomTargetDamage": 0, + "groupwideDamage": 54099.23234293879, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 869.1200000000001, + "partyDamage": 26747.168 + }, + { + "id": "smart-10516-2-summon-10387", + "name": "The Unforgiven - On Aggro - Summon Creature", + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-10516-3-summon-10387", + "name": "The Unforgiven - On Aggro - Summon Creature", + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-10516-4-summon-10387", + "name": "The Unforgiven - On Aggro - Summon Creature", + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-10516-5-summon-10387", + "name": "The Unforgiven - On Aggro - Summon Creature", + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-14907", + "name": "Frost Nova", + "spellId": 14907, + "target": "nearby-party", + "school": "frost", + "expectedCasts": 15.181948082876875, + "targetsPerCast": 5, + "damagePerTarget": 712.6784, + "partyDamage": 54099.23234293879 + } + ] + }, + { + "rank": 141, + "pressureVsMedian": 0.898851969293644, + "key": "arcatraz/entry-20912", + "dungeonId": "arcatraz", + "dungeonTitle": "Tempest Keep: The Arcatraz", + "boss": "Harbinger Skyriss", + "serverEntry": 20912, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1647.5200000000002, + "partyDamage": 79279.19671309194, + "partyDamagePerSecond": 1321.3199452181989, + "tankDamage": 79279.19671309194, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 1647.5200000000002, + "partyDamage": 50702.42800000001 + }, + { + "id": "spell-36931", + "name": "Summon 66% Illusion", + "spellId": 36931, + "target": "self", + "school": "shadow", + "expectedCasts": 12.848388380421806, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-36932", + "name": "Summon 33% Illusion", + "spellId": 36932, + "target": "self", + "school": "shadow", + "expectedCasts": 12.848388380421806, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-36924", + "name": "Mind Rend", + "spellId": 36924, + "target": "random-party", + "school": "shadow", + "expectedCasts": 12.848388380421806, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-39415", + "name": "Fear", + "spellId": 39415, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 12.848388380421806, + "targetsPerCast": 5, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-37162", + "name": "Domination", + "spellId": 37162, + "target": "random-party", + "school": "shadow", + "expectedCasts": 12.848388380421806, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-39020", + "name": "Mana Burn", + "spellId": 39020, + "target": "primary", + "school": "shadow", + "expectedCasts": 12.848388380421806, + "targetsPerCast": 1, + "damagePerTarget": 2224.1520000000005, + "partyDamage": 28576.768713091926 + } + ] + }, + { + "rank": 142, + "pressureVsMedian": 0.8924467746082629, + "key": "blackrock-spire/entry-9736", + "dungeonId": "blackrock-spire", + "dungeonTitle": "Blackrock Spire", + "boss": "Quartermaster Zigris", + "serverEntry": 9736, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 822.08, + "partyDamage": 78714.2553136232, + "partyDamagePerSecond": 1311.9042552270535, + "tankDamage": 52844.946560000004, + "randomTargetDamage": 25869.30875362319, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 822.08, + "partyDamage": 25299.512 + }, + { + "id": "spell-15504", + "name": "Drink Healing Potion", + "spellId": 15504, + "target": "lowest-health-friendly", + "school": "holy", + "expectedCasts": 11.654857756307031, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-16497", + "name": "Stun Bomb", + "spellId": 16497, + "target": "random-party", + "school": "fire", + "expectedCasts": 11.654857756307031, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 12934.654376811595 + }, + { + "id": "spell-15609", + "name": "Hooked Net", + "spellId": 15609, + "target": "random-party", + "school": "physical", + "expectedCasts": 11.654857756307031, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 12934.654376811595 + }, + { + "id": "spell-16496", + "name": "Shoot", + "spellId": 16496, + "target": "primary", + "school": "physical", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 27545.434560000005 + } + ] + }, + { + "rank": 143, + "pressureVsMedian": 0.8898908453326073, + "key": "sunken-temple/entry-5709", + "dungeonId": "sunken-temple", + "dungeonTitle": "Sunken Temple", + "boss": "Shade of Eranikus", + "serverEntry": 5709, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 564.48, + "partyDamage": 78488.82106332203, + "partyDamagePerSecond": 1308.1470177220338, + "tankDamage": 27996.984203434036, + "randomTargetDamage": 0, + "groupwideDamage": 50491.83685988799, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 564.48, + "partyDamage": 17371.872 + }, + { + "id": "smart-5709-3-war-stomp", + "name": "War Stomp", + "spellId": 11876, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 2.7199999999999998, + "targetsPerCast": 5, + "damagePerTarget": 462.8736, + "partyDamage": 6295.080959999999 + }, + { + "id": "smart-5709-4-deep-slumber", + "name": "Deep Slumber", + "spellId": 12890, + "target": "random-party", + "school": "shadow", + "expectedCasts": 3.152173913043478, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-5709-5-acid-breath", + "name": "Acid Breath", + "spellId": 12884, + "target": "nearby-party", + "school": "nature", + "expectedCasts": 5.153846153846154, + "targetsPerCast": 5, + "damagePerTarget": 462.8736, + "partyDamage": 11927.896615384616 + }, + { + "id": "spell-3391", + "name": "Thrash", + "spellId": 3391, + "target": "primary", + "school": "physical", + "expectedCasts": 13.94283851336666, + "targetsPerCast": 1, + "damagePerTarget": 762.0480000000001, + "partyDamage": 10625.112203434037 + }, + { + "id": "spell-12891", + "name": "Acid Breath", + "spellId": 12891, + "target": "nearby-party", + "school": "nature", + "expectedCasts": 13.94283851336666, + "targetsPerCast": 5, + "damagePerTarget": 462.8736, + "partyDamage": 32268.859284503375 + } + ] + }, + { + "rank": 144, + "pressureVsMedian": 0.8780801629880272, + "key": "stratholme/entry-10435", + "dungeonId": "stratholme", + "dungeonTitle": "Stratholme", + "boss": "Magistrate Barthilas", + "serverEntry": 10435, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 986.7200000000001, + "partyDamage": 77447.11292794615, + "partyDamagePerSecond": 1290.7852154657692, + "tankDamage": 56620.0118909091, + "randomTargetDamage": 0, + "groupwideDamage": 20827.10103703704, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 25.8125, + "targetsPerCast": 1, + "damagePerTarget": 986.7200000000001, + "partyDamage": 25469.710000000003 + }, + { + "id": "smart-10435-0-furious-anger", + "name": "Furious Anger", + "spellId": 16791, + "target": "primary", + "school": "physical", + "expectedCasts": 15, + "targetsPerCast": 1, + "damagePerTarget": 1332.0720000000003, + "partyDamage": 19981.080000000005 + }, + { + "id": "smart-10435-1-crowd-pummel", + "name": "Crowd Pummel", + "spellId": 10887, + "target": "primary", + "school": "physical", + "expectedCasts": 4.151515151515151, + "targetsPerCast": 1, + "damagePerTarget": 1332.0720000000003, + "partyDamage": 5530.117090909092 + }, + { + "id": "smart-10435-2-mighty-blow", + "name": "Mighty Blow", + "spellId": 14099, + "target": "primary", + "school": "physical", + "expectedCasts": 4.233333333333333, + "targetsPerCast": 1, + "damagePerTarget": 1332.0720000000003, + "partyDamage": 5639.104800000002 + }, + { + "id": "smart-10435-3-draining-blow", + "name": "Draining Blow", + "spellId": 16793, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 5.148148148148148, + "targetsPerCast": 5, + "damagePerTarget": 809.1104, + "partyDamage": 20827.10103703704 + } + ] + }, + { + "rank": 145, + "pressureVsMedian": 0.8540340430084084, + "key": "blackrock-spire/entry-10264", + "dungeonId": "blackrock-spire", + "dungeonTitle": "Blackrock Spire", + "boss": "Solakar Flamewreath", + "serverEntry": 10264, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 822.08, + "partyDamage": 75326.23302649929, + "partyDamagePerSecond": 1255.4372171083216, + "tankDamage": 25299.512, + "randomTargetDamage": 0, + "groupwideDamage": 50026.7210264993, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 822.08, + "partyDamage": 25299.512 + }, + { + "id": "spell-16727", + "name": "War Stomp", + "spellId": 16727, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 14.842398884239888, + "targetsPerCast": 5, + "damagePerTarget": 674.1056, + "partyDamage": 50026.7210264993 + } + ] + }, + { + "rank": 146, + "pressureVsMedian": 0.8430617216377899, + "key": "stratholme/entry-10811", + "dungeonId": "stratholme", + "dungeonTitle": "Stratholme", + "boss": "Archivist Galford", + "serverEntry": 10811, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 773.9200000000001, + "partyDamage": 74358.46875156078, + "partyDamagePerSecond": 1239.307812526013, + "tankDamage": 27474.160000000003, + "randomTargetDamage": 0, + "groupwideDamage": 46884.30875156077, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 773.9200000000001, + "partyDamage": 23817.388000000003 + }, + { + "id": "smart-10811-0-burning-winds", + "name": "Burning Winds", + "spellId": 17293, + "target": "random-party", + "school": "fire", + "expectedCasts": 4.142857142857142, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-10811-1-fire-nova", + "name": "Fire Nova", + "spellId": 17366, + "target": "nearby-party", + "school": "fire", + "expectedCasts": 5.7727272727272725, + "targetsPerCast": 5, + "damagePerTarget": 634.6144, + "partyDamage": 18317.279272727275 + }, + { + "id": "smart-10811-2-pyroblast", + "name": "Pyroblast", + "spellId": 17274, + "target": "primary", + "school": "fire", + "expectedCasts": 3.5, + "targetsPerCast": 1, + "damagePerTarget": 1044.7920000000001, + "partyDamage": 3656.7720000000004 + }, + { + "id": "spell-23462", + "name": "Fire Nova", + "spellId": 23462, + "target": "nearby-party", + "school": "fire", + "expectedCasts": 9.002956591855934, + "targetsPerCast": 5, + "damagePerTarget": 634.6144, + "partyDamage": 28567.029478833494 + } + ] + }, + { + "rank": 147, + "pressureVsMedian": 0.8219055874790119, + "key": "maraudon/entry-12236", + "dungeonId": "maraudon", + "dungeonTitle": "Maraudon", + "boss": "Lord Vyletongue", + "serverEntry": 12236, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 564.48, + "partyDamage": 72492.48705606494, + "partyDamagePerSecond": 1208.2081176010824, + "tankDamage": 49462.560000000005, + "randomTargetDamage": 0, + "groupwideDamage": 23029.927056064935, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 564.48, + "partyDamage": 17371.872 + }, + { + "id": "smart-12236-1-shoot", + "name": "Shoot", + "spellId": 16100, + "target": "primary", + "school": "physical", + "expectedCasts": 31, + "targetsPerCast": 1, + "damagePerTarget": 762.0480000000001, + "partyDamage": 23623.488000000005 + }, + { + "id": "smart-12236-2-multi-shot", + "name": "Multi-Shot", + "spellId": 21390, + "target": "primary", + "school": "physical", + "expectedCasts": 7.111111111111111, + "targetsPerCast": 1, + "damagePerTarget": 762.0480000000001, + "partyDamage": 5419.008000000001 + }, + { + "id": "smart-12236-3-blink", + "name": "Blink", + "spellId": 21655, + "target": "primary", + "school": "nature", + "expectedCasts": 4, + "targetsPerCast": 1, + "damagePerTarget": 762.0480000000001, + "partyDamage": 3048.1920000000005 + }, + { + "id": "smart-12236-4-smoke-bomb", + "name": "Smoke Bomb", + "spellId": 7964, + "target": "random-party", + "school": "physical", + "expectedCasts": 4.133333333333333, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-21080", + "name": "Putrid Breath", + "spellId": 21080, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 9.950849240943935, + "targetsPerCast": 5, + "damagePerTarget": 462.8736, + "partyDamage": 23029.927056064935 + }, + { + "id": "spell-8817", + "name": "Smoke Bomb", + "spellId": 8817, + "target": "random-party", + "school": "physical", + "expectedCasts": 9.950849240943935, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 148, + "pressureVsMedian": 0.8065547652652868, + "key": "razorfen-downs/entry-7354", + "dungeonId": "razorfen-downs", + "dungeonTitle": "Razorfen Downs", + "boss": "Ragglesnout", + "serverEntry": 7354, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1186.0800000000002, + "partyDamage": 71138.5368, + "partyDamagePerSecond": 1185.64228, + "tankDamage": 65552.1, + "randomTargetDamage": 5586.436800000001, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 1186.0800000000002, + "partyDamage": 36501.612 + }, + { + "id": "smart-7354-1-shadow-bolt", + "name": "Shadow Bolt", + "spellId": 12471, + "target": "primary", + "school": "shadow", + "expectedCasts": 18.142857142857142, + "targetsPerCast": 1, + "damagePerTarget": 1601.2080000000003, + "partyDamage": 29050.488000000005 + }, + { + "id": "smart-7354-2-shadow-word-pain", + "name": "Shadow Word: Pain", + "spellId": 11639, + "target": "random-party", + "school": "shadow", + "expectedCasts": 3.488888888888889, + "targetsPerCast": 1, + "damagePerTarget": 1601.2080000000003, + "partyDamage": 5586.436800000001 + }, + { + "id": "smart-7354-3-dominate-mind", + "name": "Dominate Mind", + "spellId": 7645, + "target": "random-party", + "school": "shadow", + "expectedCasts": 3.8, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-7354-4-heal", + "name": "Heal", + "spellId": 12039, + "target": "lowest-health-friendly", + "school": "holy", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-15859", + "name": "Dominate Mind", + "spellId": 15859, + "target": "random-party", + "school": "shadow", + "expectedCasts": 14.746537396121884, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 149, + "pressureVsMedian": 0.7927286115200769, + "key": "dire-maul/entry-11496", + "dungeonId": "dire-maul", + "dungeonTitle": "Dire Maul", + "boss": "Immol'thar", + "serverEntry": 11496, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1174.88, + "partyDamage": 69919.06307129099, + "partyDamagePerSecond": 1165.31771785485, + "tankDamage": 63846.61187129099, + "randomTargetDamage": 6072.451200000001, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 1174.88, + "partyDamage": 36156.932 + }, + { + "id": "smart-11496-3-trample", + "name": "Trample", + "spellId": 5568, + "target": "primary", + "school": "physical", + "expectedCasts": 5.565217391304348, + "targetsPerCast": 1, + "damagePerTarget": 1586.0880000000002, + "partyDamage": 8826.92452173913 + }, + { + "id": "smart-11496-4-infected-bite", + "name": "Infected Bite", + "spellId": 16128, + "target": "primary", + "school": "nature", + "expectedCasts": 5.32, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-11496-5-portal-of-immol-thar", + "name": "Portal of Immol'thar", + "spellId": 22950, + "target": "random-party", + "school": "arcane", + "expectedCasts": 3.8285714285714287, + "targetsPerCast": 1, + "damagePerTarget": 1586.0880000000002, + "partyDamage": 6072.451200000001 + }, + { + "id": "smart-11496-6-eye-of-immol-thar", + "name": "Eye of Immol'thar", + "spellId": 22899, + "target": "self", + "school": "shadow", + "expectedCasts": 3.72972972972973, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-11496-7-frenzy", + "name": "Frenzy", + "spellId": 8269, + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-15550", + "name": "Trample", + "spellId": 15550, + "target": "primary", + "school": "physical", + "expectedCasts": 11.892628498262301, + "targetsPerCast": 1, + "damagePerTarget": 1586.0880000000002, + "partyDamage": 18862.75534955186 + } + ] + }, + { + "rank": 150, + "pressureVsMedian": 0.7472602302242757, + "key": "blackrock-depths/entry-9033", + "dungeonId": "blackrock-depths", + "dungeonTitle": "Blackrock Depths", + "boss": "General Angerforge", + "serverEntry": 9033, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 740.32, + "partyDamage": 65908.72892493715, + "partyDamagePerSecond": 1098.4788154156192, + "tankDamage": 31191.68663333334, + "randomTargetDamage": 5959.113300000001, + "groupwideDamage": 28757.92899160381, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 34.083333333333336, + "targetsPerCast": 1, + "damagePerTarget": 740.32, + "partyDamage": 25232.573333333337 + }, + { + "id": "spell-14099", + "name": "Mighty Blow", + "spellId": 14099, + "target": "primary", + "school": "physical", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 999.4320000000001, + "partyDamage": 5959.113300000001 + }, + { + "id": "spell-9080", + "name": "Hamstring", + "spellId": 9080, + "target": "random-party", + "school": "physical", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 999.4320000000001, + "partyDamage": 5959.113300000001 + }, + { + "id": "spell-20691", + "name": "Cleave", + "spellId": 20691, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 9.47445567098335, + "targetsPerCast": 5, + "damagePerTarget": 607.0624, + "partyDamage": 28757.92899160381 + } + ] + }, + { + "rank": 151, + "pressureVsMedian": 0.6973648757945621, + "key": "stratholme/entry-10438", + "dungeonId": "stratholme", + "dungeonTitle": "Stratholme", + "boss": "Maleki the Pallid", + "serverEntry": 10438, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 553.2800000000001, + "partyDamage": 61507.93351697778, + "partyDamagePerSecond": 1025.132225282963, + "tankDamage": 19641.440000000002, + "randomTargetDamage": 15931.949090909095, + "groupwideDamage": 25934.544426068678, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 553.2800000000001, + "partyDamage": 17027.192000000003 + }, + { + "id": "smart-10438-0-frostbolt", + "name": "Frostbolt", + "spellId": 17503, + "target": "random-party", + "school": "frost", + "expectedCasts": 19.181818181818183, + "targetsPerCast": 1, + "damagePerTarget": 746.9280000000001, + "partyDamage": 14327.437090909094 + }, + { + "id": "smart-10438-1-ice-tomb", + "name": "Ice Tomb", + "spellId": 16869, + "target": "random-party", + "school": "frost", + "expectedCasts": 2.8, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-10438-2-drain-life", + "name": "Drain Life", + "spellId": 17238, + "target": "random-party", + "school": "shadow", + "expectedCasts": 3.5365853658536586, + "targetsPerCast": 1, + "damagePerTarget": 453.68960000000004, + "partyDamage": 1604.5120000000002 + }, + { + "id": "smart-10438-3-banshee-curse", + "name": "Banshee Curse", + "spellId": 16867, + "target": "primary", + "school": "shadow", + "expectedCasts": 3.5, + "targetsPerCast": 1, + "damagePerTarget": 746.9280000000001, + "partyDamage": 2614.2480000000005 + }, + { + "id": "spell-17243", + "name": "Drain Mana", + "spellId": 17243, + "target": "nearby-party", + "school": "arcane", + "expectedCasts": 11.432725998598459, + "targetsPerCast": 5, + "damagePerTarget": 453.68960000000004, + "partyDamage": 25934.544426068678 + } + ] + }, + { + "rank": 152, + "pressureVsMedian": 0.6939596708798027, + "key": "blackrock-depths/entry-9017", + "dungeonId": "blackrock-depths", + "dungeonTitle": "Blackrock Depths", + "boss": "Lord Incendius", + "serverEntry": 9017, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 822.08, + "partyDamage": 61207.59272727273, + "partyDamagePerSecond": 1020.1265454545454, + "tankDamage": 35086.00072727273, + "randomTargetDamage": 0, + "groupwideDamage": 26121.592, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 822.08, + "partyDamage": 25299.512 + }, + { + "id": "smart-9017-0-curse-of-the-elemental-lord", + "name": "Curse of the Elemental Lord", + "spellId": 26977, + "target": "self", + "school": "fire", + "expectedCasts": 3, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-9017-1-fiery-burst", + "name": "Fiery Burst", + "spellId": 13900, + "target": "primary", + "school": "fire", + "expectedCasts": 5.636363636363637, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 6255.281454545456 + }, + { + "id": "smart-9017-2-fire-storm", + "name": "Fire Storm", + "spellId": 13899, + "target": "nearby-party", + "school": "fire", + "expectedCasts": 7.75, + "targetsPerCast": 5, + "damagePerTarget": 674.1056, + "partyDamage": 26121.592 + }, + { + "id": "smart-9017-3-mighty-blow", + "name": "Mighty Blow", + "spellId": 14099, + "target": "primary", + "school": "physical", + "expectedCasts": 3.1818181818181817, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 3531.2072727272734 + } + ] + }, + { + "rank": 153, + "pressureVsMedian": 0.6608026126826259, + "key": "stratholme/entry-10997", + "dungeonId": "stratholme", + "dungeonTitle": "Stratholme", + "boss": "Cannon Master Willey", + "serverEntry": 10997, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 822.08, + "partyDamage": 58283.1234831244, + "partyDamagePerSecond": 971.3853913854067, + "tankDamage": 58283.1234831244, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 822.08, + "partyDamage": 25299.512 + }, + { + "id": "smart-10997-0-knock-away", + "name": "Knock Away", + "spellId": 10101, + "target": "primary", + "school": "physical", + "expectedCasts": 4.75, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 5271.588000000001 + }, + { + "id": "smart-10997-2-summon-crimson-rifleman", + "name": "Summon Crimson Rifleman", + "spellId": 17279, + "target": "self", + "school": "arcane", + "expectedCasts": 3.725, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-16615", + "name": "Add Lightning Dam - Weap 03", + "spellId": 16615, + "target": "primary", + "school": "physical", + "expectedCasts": 12.485053037608486, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 13856.0117415622 + }, + { + "id": "spell-11729", + "name": "Create Healthstone", + "spellId": 11729, + "target": "primary", + "school": "shadow", + "expectedCasts": 12.485053037608486, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 13856.0117415622 + } + ] + }, + { + "rank": 154, + "pressureVsMedian": 0.6286101339237126, + "key": "scholomance/entry-10508", + "dungeonId": "scholomance", + "dungeonTitle": "Scholomance", + "boss": "Ras Frostwhisper", + "serverEntry": 10508, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 773.9200000000001, + "partyDamage": 55443.730631578954, + "partyDamagePerSecond": 924.0621771929825, + "tankDamage": 23817.388000000003, + "randomTargetDamage": 0, + "groupwideDamage": 31626.342631578947, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 773.9200000000001, + "partyDamage": 23817.388000000003 + }, + { + "id": "smart-10508-1-fear", + "name": "Fear", + "spellId": 12096, + "target": "random-party", + "school": "shadow", + "expectedCasts": 3.45, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-10508-2-frostbolt-volley", + "name": "Frostbolt Volley", + "spellId": 8398, + "target": "nearby-party", + "school": "frost", + "expectedCasts": 6.842105263157895, + "targetsPerCast": 5, + "damagePerTarget": 634.6144, + "partyDamage": 21710.49263157895 + }, + { + "id": "smart-10508-3-freeze", + "name": "Freeze", + "spellId": 18763, + "target": "random-party", + "school": "frost", + "expectedCasts": 3.575, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-10508-4-chill-nova", + "name": "Chill Nova", + "spellId": 18099, + "target": "nearby-party", + "school": "frost", + "expectedCasts": 3.125, + "targetsPerCast": 5, + "damagePerTarget": 634.6144, + "partyDamage": 9915.85 + } + ] + }, + { + "rank": 155, + "pressureVsMedian": 0.5991456302789381, + "key": "blackrock-depths/entry-9156", + "dungeonId": "blackrock-depths", + "dungeonTitle": "Blackrock Depths", + "boss": "Ambassador Flamelash", + "serverEntry": 9156, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 822.08, + "partyDamage": 52844.946560000004, + "partyDamagePerSecond": 880.7491093333334, + "tankDamage": 52844.946560000004, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 822.08, + "partyDamage": 25299.512 + }, + { + "id": "spell-13342", + "name": "Fire Blast", + "spellId": 13342, + "target": "primary", + "school": "fire", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 27545.434560000005 + } + ] + }, + { + "rank": 156, + "pressureVsMedian": 0.5973413905421939, + "key": "dire-maul/entry-14506", + "dungeonId": "dire-maul", + "dungeonTitle": "Dire Maul", + "boss": "Lord Hel'nurath", + "serverEntry": 14506, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1105.44, + "partyDamage": 52685.81170588235, + "partyDamagePerSecond": 878.0968617647057, + "tankDamage": 52685.81170588235, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 1105.44, + "partyDamage": 34019.916 + }, + { + "id": "smart-14506-0-shadow-word-pain", + "name": "Shadow Word: Pain", + "spellId": 17146, + "target": "primary", + "school": "shadow", + "expectedCasts": 3.25531914893617, + "targetsPerCast": 1, + "damagePerTarget": 1492.3440000000003, + "partyDamage": 4858.0560000000005 + }, + { + "id": "smart-14506-1-veil-of-shadow", + "name": "Veil of Shadow", + "spellId": 23224, + "target": "primary", + "school": "shadow", + "expectedCasts": 3.7941176470588234, + "targetsPerCast": 1, + "damagePerTarget": 1492.3440000000003, + "partyDamage": 5662.128705882354 + }, + { + "id": "smart-14506-2-knock-away", + "name": "Knock Away", + "spellId": 18670, + "target": "primary", + "school": "physical", + "expectedCasts": 5.458333333333333, + "targetsPerCast": 1, + "damagePerTarget": 1492.3440000000003, + "partyDamage": 8145.711000000001 + }, + { + "id": "smart-14506-3-sleep", + "name": "Sleep", + "spellId": 20989, + "target": "random-party", + "school": "shadow", + "expectedCasts": 4.161290322580645, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 157, + "pressureVsMedian": 0.5953088538376174, + "key": "stratholme/entry-10436", + "dungeonId": "stratholme", + "dungeonTitle": "Stratholme", + "boss": "Baroness Anastari", + "serverEntry": 10436, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 773.9200000000001, + "partyDamage": 52506.5409441402, + "partyDamagePerSecond": 875.10901573567, + "tankDamage": 52506.5409441402, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 773.9200000000001, + "partyDamage": 23817.388000000003 + }, + { + "id": "spell-17244", + "name": "Possess", + "spellId": 17244, + "target": "random-party", + "school": "shadow", + "expectedCasts": 9.153066812705367, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-17246", + "name": "Possessed", + "spellId": 17246, + "target": "primary", + "school": "physical", + "expectedCasts": 9.153066812705367, + "targetsPerCast": 1, + "damagePerTarget": 1044.7920000000001, + "partyDamage": 9563.050981380067 + }, + { + "id": "spell-17250", + "name": "Possess", + "spellId": 17250, + "target": "random-party", + "school": "physical", + "expectedCasts": 9.153066812705367, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-16565", + "name": "Banshee Wail", + "spellId": 16565, + "target": "primary", + "school": "shadow", + "expectedCasts": 9.153066812705367, + "targetsPerCast": 1, + "damagePerTarget": 1044.7920000000001, + "partyDamage": 9563.050981380067 + }, + { + "id": "spell-16867", + "name": "Banshee Curse", + "spellId": 16867, + "target": "primary", + "school": "shadow", + "expectedCasts": 9.153066812705367, + "targetsPerCast": 1, + "damagePerTarget": 1044.7920000000001, + "partyDamage": 9563.050981380067 + }, + { + "id": "spell-18327", + "name": "Silence", + "spellId": 18327, + "target": "random-party", + "school": "nature", + "expectedCasts": 9.153066812705367, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 158, + "pressureVsMedian": 0.5919034392471134, + "key": "deadmines/entry-646", + "dungeonId": "deadmines", + "dungeonTitle": "The Deadmines", + "boss": "Mr. Smite", + "serverEntry": 646, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 575.6800000000001, + "partyDamage": 52206.18166092879, + "partyDamagePerSecond": 870.1030276821465, + "tankDamage": 32916.871900928796, + "randomTargetDamage": 19289.309760000004, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 575.6800000000001, + "partyDamage": 17716.552 + }, + { + "id": "spell-6432", + "name": "Smite Stomp", + "spellId": 6432, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 9.779301194161876, + "targetsPerCast": 5, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-6435", + "name": "Smite Slam", + "spellId": 6435, + "target": "random-party", + "school": "physical", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 777.1680000000001, + "partyDamage": 19289.309760000004 + }, + { + "id": "spell-3391", + "name": "Thrash", + "spellId": 3391, + "target": "primary", + "school": "physical", + "expectedCasts": 9.779301194161876, + "targetsPerCast": 1, + "damagePerTarget": 777.1680000000001, + "partyDamage": 7600.159950464398 + }, + { + "id": "spell-6264", + "name": "Nimble Reflexes", + "spellId": 6264, + "target": "primary", + "school": "physical", + "expectedCasts": 9.779301194161876, + "targetsPerCast": 1, + "damagePerTarget": 777.1680000000001, + "partyDamage": 7600.159950464398 + } + ] + }, + { + "rank": 159, + "pressureVsMedian": 0.5764776116519759, + "key": "stormwind-stockade/entry-1696", + "dungeonId": "stormwind-stockade", + "dungeonTitle": "Stormwind Stockade", + "boss": "Targorr the Dread", + "serverEntry": 1696, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 399.84000000000003, + "partyDamage": 50845.61589242055, + "partyDamagePerSecond": 847.4269315403425, + "tankDamage": 50845.61589242055, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 399.84000000000003, + "partyDamage": 12305.076000000001 + }, + { + "id": "smart-1696-0-dual-wield", + "name": "Dual Wield", + "spellId": 674, + "target": "primary", + "school": "physical", + "expectedCasts": 60, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 32387.040000000008 + }, + { + "id": "smart-1696-1-enrage", + "name": "Enrage", + "spellId": 8599, + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-3391", + "name": "Thrash", + "spellId": 3391, + "target": "primary", + "school": "physical", + "expectedCasts": 11.399930143206428, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 6153.499892420539 + } + ] + }, + { + "rank": 160, + "pressureVsMedian": 0.5670894896473607, + "key": "dire-maul/entry-11490", + "dungeonId": "dire-maul", + "dungeonTitle": "Dire Maul", + "boss": "Zevrim Thornhoof", + "serverEntry": 11490, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1174.88, + "partyDamage": 50017.5788, + "partyDamagePerSecond": 833.6263133333334, + "tankDamage": 43717.2848, + "randomTargetDamage": 6300.294000000001, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 1174.88, + "partyDamage": 36156.932 + }, + { + "id": "smart-11490-0-intense-pain", + "name": "Intense Pain", + "spellId": 22478, + "target": "primary", + "school": "shadow", + "expectedCasts": 4.766666666666667, + "targetsPerCast": 1, + "damagePerTarget": 1586.0880000000002, + "partyDamage": 7560.352800000001 + }, + { + "id": "smart-11490-1-sacrifice", + "name": "Sacrifice", + "spellId": 22651, + "target": "random-party", + "school": "shadow", + "expectedCasts": 3.9722222222222223, + "targetsPerCast": 1, + "damagePerTarget": 1586.0880000000002, + "partyDamage": 6300.294000000001 + } + ] + }, + { + "rank": 161, + "pressureVsMedian": 0.5624836662740935, + "key": "wailing-caverns/verdan-the-everliving", + "dungeonId": "wailing-caverns", + "dungeonTitle": "Wailing Caverns", + "boss": "Verdan the Everliving", + "serverEntry": 5775, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 2754, + "partyDamage": 49611.34285714286, + "partyDamagePerSecond": 826.8557142857143, + "tankDamage": 49611.34285714286, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 18.014285714285716, + "targetsPerCast": 1, + "damagePerTarget": 2754, + "partyDamage": 49611.34285714286 + }, + { + "id": "spell-8142", + "name": "Grasping Vines", + "spellId": 8142, + "target": "primary", + "school": "nature", + "expectedCasts": 5.869565217391305, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 162, + "pressureVsMedian": 0.5585210512653784, + "key": "blackrock-depths/entry-9018", + "dungeonId": "blackrock-depths", + "dungeonTitle": "Blackrock Depths", + "boss": "High Interrogator Gerstahn", + "serverEntry": 9018, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 773.9200000000001, + "partyDamage": 49261.838216216216, + "partyDamagePerSecond": 821.030636936937, + "tankDamage": 49261.838216216216, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 773.9200000000001, + "partyDamage": 23817.388000000003 + }, + { + "id": "spell-14032", + "name": "Shadow Word: Pain", + "spellId": 14032, + "target": "primary", + "school": "shadow", + "expectedCasts": 12.176801801801801, + "targetsPerCast": 1, + "damagePerTarget": 1044.7920000000001, + "partyDamage": 12722.225108108109 + }, + { + "id": "spell-14033", + "name": "Mana Burn", + "spellId": 14033, + "target": "primary", + "school": "shadow", + "expectedCasts": 12.176801801801801, + "targetsPerCast": 1, + "damagePerTarget": 1044.7920000000001, + "partyDamage": 12722.225108108109 + }, + { + "id": "spell-13704", + "name": "Psychic Scream", + "spellId": 13704, + "target": "random-party", + "school": "shadow", + "expectedCasts": 12.176801801801801, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-12040", + "name": "Shadow Shield", + "spellId": 12040, + "target": "self", + "school": "shadow", + "expectedCasts": 12.176801801801801, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 163, + "pressureVsMedian": 0.5554798115024268, + "key": "maraudon/entry-12258", + "dungeonId": "maraudon", + "dungeonTitle": "Maraudon", + "boss": "Razorlash", + "serverEntry": 12258, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 564.48, + "partyDamage": 48993.599336339044, + "partyDamagePerSecond": 816.559988938984, + "tankDamage": 32535.871336339045, + "randomTargetDamage": 0, + "groupwideDamage": 16457.728000000003, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 564.48, + "partyDamage": 17371.872 + }, + { + "id": "smart-12258-0-cleave", + "name": "Cleave", + "spellId": 40504, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 7.111111111111111, + "targetsPerCast": 5, + "damagePerTarget": 462.8736, + "partyDamage": 16457.728000000003 + }, + { + "id": "spell-12787", + "name": "Thrash", + "spellId": 12787, + "target": "primary", + "school": "physical", + "expectedCasts": 9.949504057709648, + "targetsPerCast": 1, + "damagePerTarget": 762.0480000000001, + "partyDamage": 7581.999668169523 + }, + { + "id": "spell-15976", + "name": "Puncture", + "spellId": 15976, + "target": "primary", + "school": "physical", + "expectedCasts": 9.949504057709648, + "targetsPerCast": 1, + "damagePerTarget": 762.0480000000001, + "partyDamage": 7581.999668169523 + } + ] + }, + { + "rank": 164, + "pressureVsMedian": 0.5524706525486521, + "key": "dire-maul/entry-13280", + "dungeonId": "dire-maul", + "dungeonTitle": "Dire Maul", + "boss": "Hydrospawn", + "serverEntry": 13280, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1105.44, + "partyDamage": 48728.19, + "partyDamagePerSecond": 812.1365000000001, + "tankDamage": 48728.19, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 1105.44, + "partyDamage": 34019.916 + }, + { + "id": "smart-13280-0-riptide", + "name": "Riptide", + "spellId": 22419, + "target": "primary", + "school": "frost", + "expectedCasts": 4.892857142857142, + "targetsPerCast": 1, + "damagePerTarget": 1492.3440000000003, + "partyDamage": 7301.826000000001 + }, + { + "id": "smart-13280-1-submersion", + "name": "Submersion", + "spellId": 22420, + "target": "primary", + "school": "frost", + "expectedCasts": 4.962962962962963, + "targetsPerCast": 1, + "damagePerTarget": 1492.3440000000003, + "partyDamage": 7406.448000000001 + }, + { + "id": "smart-13280-2-summon-hydroling", + "name": "Summon Hydroling", + "spellId": 22714, + "target": "self", + "school": "holy", + "expectedCasts": 1.9, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-13280-3-massive-geyser", + "name": "Massive Geyser", + "spellId": 22421, + "target": "random-party", + "school": "physical", + "expectedCasts": 2.84, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 165, + "pressureVsMedian": 0.5447826014145628, + "key": "blackrock-depths/entry-9056", + "dungeonId": "blackrock-depths", + "dungeonTitle": "Blackrock Depths", + "boss": "Fineous Darkvire", + "serverEntry": 9056, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 773.9200000000001, + "partyDamage": 48050.10001519556, + "partyDamagePerSecond": 800.8350002532593, + "tankDamage": 48050.10001519556, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 773.9200000000001, + "partyDamage": 23817.388000000003 + }, + { + "id": "smart-9056-0-devotion-aura", + "name": "Devotion Aura", + "spellId": 8258, + "target": "primary", + "school": "holy", + "expectedCasts": 1, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-9056-1-holy-light", + "name": "Holy Light", + "spellId": 15493, + "target": "lowest-health-friendly", + "school": "holy", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-9056-3-holy-strike", + "name": "Holy Strike", + "spellId": 13953, + "target": "primary", + "school": "holy", + "expectedCasts": 8.862068965517242, + "targetsPerCast": 1, + "damagePerTarget": 1044.7920000000001, + "partyDamage": 9259.018758620692 + }, + { + "id": "smart-9056-5-seal-of-reckoning", + "name": "Seal of Reckoning", + "spellId": 15346, + "target": "primary", + "school": "holy", + "expectedCasts": 1, + "targetsPerCast": 1, + "damagePerTarget": 1044.7920000000001, + "partyDamage": 1044.7920000000001 + }, + { + "id": "spell-11978", + "name": "Kick", + "spellId": 11978, + "target": "primary", + "school": "physical", + "expectedCasts": 13.331745703044108, + "targetsPerCast": 1, + "damagePerTarget": 1044.7920000000001, + "partyDamage": 13928.901256574862 + } + ] + }, + { + "rank": 166, + "pressureVsMedian": 0.5388767917974118, + "key": "blackrock-depths/entry-9319", + "dungeonId": "blackrock-depths", + "dungeonTitle": "Blackrock Depths", + "boss": "Houndmaster Grebmar", + "serverEntry": 9319, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 822.08, + "partyDamage": 47529.20463043479, + "partyDamagePerSecond": 792.1534105072465, + "tankDamage": 47529.20463043479, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 822.08, + "partyDamage": 25299.512 + }, + { + "id": "smart-9319-0-demoralizing-shout", + "name": "Demoralizing Shout", + "spellId": 13730, + "target": "primary", + "school": "physical", + "expectedCasts": 3.260869565217391, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 3618.9391304347832 + }, + { + "id": "smart-9319-2-bloodlust", + "name": "Bloodlust", + "spellId": 21049, + "target": "primary", + "school": "nature", + "expectedCasts": 1, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 1109.8080000000002 + }, + { + "id": "spell-15615", + "name": "Pummel", + "spellId": 15615, + "target": "primary", + "school": "physical", + "expectedCasts": 15.769345238095237, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 17500.9455 + } + ] + }, + { + "rank": 167, + "pressureVsMedian": 0.5287127682578655, + "key": "maraudon/entry-13601", + "dungeonId": "maraudon", + "dungeonTitle": "Maraudon", + "boss": "Tinkerer Gizlock", + "serverEntry": 13601, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 564.48, + "partyDamage": 46632.73263157895, + "partyDamagePerSecond": 777.2122105263157, + "tankDamage": 42907.16463157895, + "randomTargetDamage": 3725.5680000000007, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 564.48, + "partyDamage": 17371.872 + }, + { + "id": "smart-13601-1-shoot", + "name": "Shoot", + "spellId": 16100, + "target": "primary", + "school": "physical", + "expectedCasts": 31, + "targetsPerCast": 1, + "damagePerTarget": 762.0480000000001, + "partyDamage": 23623.488000000005 + }, + { + "id": "smart-13601-2-bomb", + "name": "Bomb", + "spellId": 9143, + "target": "random-party", + "school": "fire", + "expectedCasts": 4.888888888888889, + "targetsPerCast": 1, + "damagePerTarget": 762.0480000000001, + "partyDamage": 3725.5680000000007 + }, + { + "id": "smart-13601-3-flash-bomb", + "name": "Flash Bomb", + "spellId": 29419, + "target": "random-party", + "school": "physical", + "expectedCasts": 3.7714285714285714, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-13601-4-goblin-dragon-gun", + "name": "Goblin Dragon Gun", + "spellId": 21833, + "target": "primary", + "school": "fire", + "expectedCasts": 2.5087719298245617, + "targetsPerCast": 1, + "damagePerTarget": 762.0480000000001, + "partyDamage": 1911.804631578948 + } + ] + }, + { + "rank": 168, + "pressureVsMedian": 0.5285893128229744, + "key": "stormwind-stockade/entry-1666", + "dungeonId": "stormwind-stockade", + "dungeonTitle": "Stormwind Stockade", + "boss": "Kam Deepfury", + "serverEntry": 1666, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 399.84000000000003, + "partyDamage": 46621.84380000001, + "partyDamagePerSecond": 777.0307300000002, + "tankDamage": 46621.84380000001, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 399.84000000000003, + "partyDamage": 12305.076000000001 + }, + { + "id": "smart-1666-0-defensive-stance", + "name": "Defensive Stance", + "spellId": 7164, + "target": "primary", + "school": "physical", + "expectedCasts": 60, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 32387.040000000008 + }, + { + "id": "smart-1666-1-shield-slam", + "name": "Shield Slam", + "spellId": 8242, + "target": "self", + "school": "physical", + "expectedCasts": 5.230769230769231, + "targetsPerCast": 0, + "damagePerTarget": 539.7840000000001, + "partyDamage": 0 + }, + { + "id": "smart-1666-2-improved-blocking", + "name": "Improved Blocking", + "spellId": 3419, + "target": "primary", + "school": "physical", + "expectedCasts": 3.575, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 1929.7278000000006 + } + ] + }, + { + "rank": 169, + "pressureVsMedian": 0.5279302026681516, + "key": "zulfarrak/entry-7795", + "dungeonId": "zulfarrak", + "dungeonTitle": "Zul'Farrak", + "boss": "Hydromancer Velratha", + "serverEntry": 7795, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 379.68000000000006, + "partyDamage": 46563.70995215312, + "partyDamagePerSecond": 776.0618325358853, + "tankDamage": 18039.023712918664, + "randomTargetDamage": 9226.224000000002, + "groupwideDamage": 19298.46223923445, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 379.68000000000006, + "partyDamage": 11684.652000000002 + }, + { + "id": "smart-7795-0-frostbolt", + "name": "Frostbolt", + "spellId": 10180, + "target": "random-party", + "school": "frost", + "expectedCasts": 18, + "targetsPerCast": 1, + "damagePerTarget": 512.5680000000001, + "partyDamage": 9226.224000000002 + }, + { + "id": "smart-7795-1-healing-wave", + "name": "Healing Wave", + "spellId": 12491, + "target": "lowest-health-friendly", + "school": "nature", + "expectedCasts": 61, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-12739", + "name": "Shadow Bolt", + "spellId": 12739, + "target": "primary", + "school": "shadow", + "expectedCasts": 12.397129186602871, + "targetsPerCast": 1, + "damagePerTarget": 512.5680000000001, + "partyDamage": 6354.371712918662 + }, + { + "id": "spell-15245", + "name": "Shadow Bolt Volley", + "spellId": 15245, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 12.397129186602871, + "targetsPerCast": 5, + "damagePerTarget": 311.3376, + "partyDamage": 19298.46223923445 + } + ] + }, + { + "rank": 170, + "pressureVsMedian": 0.5214127780741685, + "key": "stormwind-stockade/entry-1717", + "dungeonId": "stormwind-stockade", + "dungeonTitle": "Stormwind Stockade", + "boss": "Hamhock", + "serverEntry": 1717, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 376.32000000000005, + "partyDamage": 45988.869818181825, + "partyDamagePerSecond": 766.4811636363637, + "tankDamage": 45988.869818181825, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 376.32000000000005, + "partyDamage": 11581.248000000001 + }, + { + "id": "smart-1717-0-chain-lightning", + "name": "Chain Lightning", + "spellId": 421, + "target": "primary", + "school": "nature", + "expectedCasts": 11.727272727272727, + "targetsPerCast": 1, + "damagePerTarget": 508.0320000000001, + "partyDamage": 5957.829818181819 + }, + { + "id": "smart-1717-1-bloodlust", + "name": "Bloodlust", + "spellId": 6742, + "target": "primary", + "school": "nature", + "expectedCasts": 56, + "targetsPerCast": 1, + "damagePerTarget": 508.0320000000001, + "partyDamage": 28449.792000000005 + } + ] + }, + { + "rank": 171, + "pressureVsMedian": 0.520566522410181, + "key": "scholomance/entry-11622", + "dungeonId": "scholomance", + "dungeonTitle": "Scholomance", + "boss": "Rattlegore", + "serverEntry": 11622, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 773.9200000000001, + "partyDamage": 45914.22964210527, + "partyDamagePerSecond": 765.2371607017544, + "tankDamage": 34570.497242105266, + "randomTargetDamage": 0, + "groupwideDamage": 11343.7324, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 773.9200000000001, + "partyDamage": 23817.388000000003 + }, + { + "id": "smart-11622-0-knock-away", + "name": "Knock Away", + "spellId": 10101, + "target": "primary", + "school": "physical", + "expectedCasts": 3.45, + "targetsPerCast": 1, + "damagePerTarget": 1044.7920000000001, + "partyDamage": 3604.5324000000005 + }, + { + "id": "smart-11622-1-strike", + "name": "Strike", + "spellId": 18368, + "target": "primary", + "school": "physical", + "expectedCasts": 6.842105263157895, + "targetsPerCast": 1, + "damagePerTarget": 1044.7920000000001, + "partyDamage": 7148.576842105264 + }, + { + "id": "smart-11622-2-war-stomp", + "name": "War Stomp", + "spellId": 16727, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 3.575, + "targetsPerCast": 5, + "damagePerTarget": 634.6144, + "partyDamage": 11343.7324 + }, + { + "id": "spell-18116", + "name": "Kirtonos Gargoyle Passive", + "spellId": 18116, + "target": "primary", + "school": "physical", + "expectedCasts": 11.960795140806184, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 172, + "pressureVsMedian": 0.5112982843961147, + "key": "zulfarrak/entry-7267", + "dungeonId": "zulfarrak", + "dungeonTitle": "Zul'Farrak", + "boss": "Chief Ukorz Sandscalp", + "serverEntry": 7267, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 564.48, + "partyDamage": 45096.76637807266, + "partyDamagePerSecond": 751.6127729678776, + "tankDamage": 28767.614378072656, + "randomTargetDamage": 0, + "groupwideDamage": 16329.152, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 564.48, + "partyDamage": 17371.872 + }, + { + "id": "smart-7267-1-berserker-stance", + "name": "Berserker Stance", + "spellId": 7366, + "target": "primary", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 1, + "damagePerTarget": 762.0480000000001, + "partyDamage": 762.0480000000001 + }, + { + "id": "smart-7267-2-cleave", + "name": "Cleave", + "spellId": 15496, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 7.055555555555555, + "targetsPerCast": 5, + "damagePerTarget": 462.8736, + "partyDamage": 16329.152 + }, + { + "id": "smart-7267-3-frenzy", + "name": "Frenzy", + "spellId": 8269, + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-11837", + "name": "Wide Slash", + "spellId": 11837, + "target": "primary", + "school": "physical", + "expectedCasts": 13.9541005003263, + "targetsPerCast": 1, + "damagePerTarget": 762.0480000000001, + "partyDamage": 10633.694378072658 + }, + { + "id": "spell-34409", + "name": "Frenzy", + "spellId": 34409, + "target": "self", + "school": "physical", + "expectedCasts": 13.9541005003263, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 173, + "pressureVsMedian": 0.501303802073512, + "key": "ragefire-chasm/entry-11519", + "dungeonId": "ragefire-chasm", + "dungeonTitle": "Ragefire Chasm", + "boss": "Bazzalan", + "serverEntry": 11519, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 517.44, + "partyDamage": 44215.24800000001, + "partyDamagePerSecond": 736.9208000000001, + "tankDamage": 44215.24800000001, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 517.44, + "partyDamage": 15924.216 + }, + { + "id": "smart-11519-0-deadly-poison", + "name": "Deadly Poison", + "spellId": 2818, + "target": "primary", + "school": "nature", + "expectedCasts": 30, + "targetsPerCast": 1, + "damagePerTarget": 698.5440000000001, + "partyDamage": 20956.320000000003 + }, + { + "id": "smart-11519-1-sinister-strike", + "name": "Sinister Strike", + "spellId": 14873, + "target": "primary", + "school": "physical", + "expectedCasts": 10.5, + "targetsPerCast": 1, + "damagePerTarget": 698.5440000000001, + "partyDamage": 7334.712000000001 + } + ] + }, + { + "rank": 174, + "pressureVsMedian": 0.5007420063419744, + "key": "dire-maul/entry-14325", + "dungeonId": "dire-maul", + "dungeonTitle": "Dire Maul", + "boss": "Captain Kromcrush", + "serverEntry": 14325, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1174.88, + "partyDamage": 44165.69733333334, + "partyDamagePerSecond": 736.0949555555557, + "tankDamage": 37743.020000000004, + "randomTargetDamage": 6422.677333333334, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 1174.88, + "partyDamage": 36156.932 + }, + { + "id": "smart-14325-1-mortal-cleave", + "name": "Mortal Cleave", + "spellId": 22859, + "target": "random-party", + "school": "physical", + "expectedCasts": 6.666666666666667, + "targetsPerCast": 1, + "damagePerTarget": 963.4016, + "partyDamage": 6422.677333333334 + }, + { + "id": "smart-14325-2-frightening-shout", + "name": "Frightening Shout", + "spellId": 19134, + "target": "random-party", + "school": "physical", + "expectedCasts": 3.735294117647059, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-14325-3-call-reavers", + "name": "Call Reavers", + "spellId": 22860, + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-14325-5-retaliation", + "name": "Retaliation", + "spellId": 22857, + "target": "primary", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 1, + "damagePerTarget": 1586.0880000000002, + "partyDamage": 1586.0880000000002 + }, + { + "id": "spell-5246", + "name": "Intimidating Shout", + "spellId": 5246, + "target": "random-party", + "school": "physical", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 175, + "pressureVsMedian": 0.47883975194052686, + "key": "uldaman/entry-7228", + "dungeonId": "uldaman", + "dungeonTitle": "Uldaman", + "boss": "Ironaya", + "serverEntry": 7228, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 817.6, + "partyDamage": 42233.907456389454, + "partyDamagePerSecond": 703.8984576064909, + "tankDamage": 29416.82510344828, + "randomTargetDamage": 0, + "groupwideDamage": 12817.082352941177, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 21.53448275862069, + "targetsPerCast": 1, + "damagePerTarget": 817.6, + "partyDamage": 17606.59310344828 + }, + { + "id": "smart-7228-0-arcing-smash", + "name": "Arcing Smash", + "spellId": 8374, + "target": "primary", + "school": "physical", + "expectedCasts": 7.5, + "targetsPerCast": 1, + "damagePerTarget": 1103.76, + "partyDamage": 8278.2 + }, + { + "id": "smart-7228-1-knock-away", + "name": "Knock Away", + "spellId": 10101, + "target": "primary", + "school": "physical", + "expectedCasts": 3.2, + "targetsPerCast": 1, + "damagePerTarget": 1103.76, + "partyDamage": 3532.032 + }, + { + "id": "smart-7228-2-war-stomp", + "name": "War Stomp", + "spellId": 11876, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 3.823529411764706, + "targetsPerCast": 5, + "damagePerTarget": 670.432, + "partyDamage": 12817.082352941177 + } + ] + }, + { + "rank": 176, + "pressureVsMedian": 0.4681755997044652, + "key": "uldaman/entry-6910", + "dungeonId": "uldaman", + "dungeonTitle": "Uldaman", + "boss": "Revelosh", + "serverEntry": 6910, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 530.88, + "partyDamage": 41293.32385443609, + "partyDamagePerSecond": 688.2220642406014, + "tankDamage": 37595.21377443609, + "randomTargetDamage": 3698.11008, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 530.88, + "partyDamage": 16337.831999999999 + }, + { + "id": "smart-6910-0-lightning-bolt", + "name": "Lightning Bolt", + "spellId": 15801, + "target": "primary", + "school": "nature", + "expectedCasts": 18, + "targetsPerCast": 1, + "damagePerTarget": 716.688, + "partyDamage": 12900.384 + }, + { + "id": "smart-6910-1-chain-lightning", + "name": "Chain Lightning", + "spellId": 16006, + "target": "random-party", + "school": "nature", + "expectedCasts": 5.16, + "targetsPerCast": 1, + "damagePerTarget": 716.688, + "partyDamage": 3698.11008 + }, + { + "id": "spell-15117", + "name": "Chain Lightning", + "spellId": 15117, + "target": "primary", + "school": "nature", + "expectedCasts": 11.660580021482277, + "targetsPerCast": 1, + "damagePerTarget": 716.688, + "partyDamage": 8356.99777443609 + } + ] + }, + { + "rank": 177, + "pressureVsMedian": 0.45672084346211045, + "key": "maraudon/entry-13282", + "dungeonId": "maraudon", + "dungeonTitle": "Maraudon", + "boss": "Noxxion", + "serverEntry": 13282, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 564.48, + "partyDamage": 40283.00858066325, + "partyDamagePerSecond": 671.3834763443875, + "tankDamage": 28355.111965278636, + "randomTargetDamage": 0, + "groupwideDamage": 11927.896615384616, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 564.48, + "partyDamage": 17371.872 + }, + { + "id": "smart-13282-0-toxic-volley", + "name": "Toxic Volley", + "spellId": 21687, + "target": "nearby-party", + "school": "nature", + "expectedCasts": 5.153846153846154, + "targetsPerCast": 5, + "damagePerTarget": 462.8736, + "partyDamage": 11927.896615384616 + }, + { + "id": "smart-13282-1-uppercut", + "name": "Uppercut", + "spellId": 10966, + "target": "primary", + "school": "physical", + "expectedCasts": 4.730769230769231, + "targetsPerCast": 1, + "damagePerTarget": 762.0480000000001, + "partyDamage": 3605.0732307692315 + }, + { + "id": "smart-13282-2-summon-noxxion-s-spawns", + "name": "Summon Noxxion's Spawns", + "spellId": 21707, + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-21547", + "name": "Spore Cloud", + "spellId": 21547, + "target": "primary", + "school": "nature", + "expectedCasts": 9.682023618603296, + "targetsPerCast": 1, + "damagePerTarget": 762.0480000000001, + "partyDamage": 7378.166734509406 + } + ] + }, + { + "rank": 178, + "pressureVsMedian": 0.4493193372228348, + "key": "zulfarrak/entry-7271", + "dungeonId": "zulfarrak", + "dungeonTitle": "Zul'Farrak", + "boss": "Witch Doctor Zum'rah", + "serverEntry": 7271, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 530.88, + "partyDamage": 39630.191999999995, + "partyDamagePerSecond": 660.5031999999999, + "tankDamage": 29135.832, + "randomTargetDamage": 0, + "groupwideDamage": 10494.359999999999, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 530.88, + "partyDamage": 16337.831999999999 + }, + { + "id": "smart-7271-1-shadow-bolt-volley", + "name": "Shadow Bolt Volley", + "spellId": 15245, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 4.821428571428571, + "targetsPerCast": 5, + "damagePerTarget": 435.3216, + "partyDamage": 10494.359999999999 + }, + { + "id": "smart-7271-2-shadow-bolt", + "name": "Shadow Bolt", + "spellId": 12739, + "target": "primary", + "school": "shadow", + "expectedCasts": 17.857142857142858, + "targetsPerCast": 1, + "damagePerTarget": 716.688, + "partyDamage": 12798 + }, + { + "id": "smart-7271-3-ward-of-zum-rah", + "name": "Ward of Zum'rah", + "spellId": 11086, + "target": "self", + "school": "physical", + "expectedCasts": 2.712121212121212, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-7271-4-healing-wave", + "name": "Healing Wave", + "spellId": 12491, + "target": "lowest-health-friendly", + "school": "nature", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 179, + "pressureVsMedian": 0.43386930324518724, + "key": "escape-from-durnholde/entry-17862", + "dungeonId": "escape-from-durnholde", + "dungeonTitle": "The Escape From Durnholde", + "boss": "Captain Skarloc", + "serverEntry": 17862, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 463.68000000000006, + "partyDamage": 38267.491216354356, + "partyDamagePerSecond": 637.7915202725726, + "tankDamage": 38267.491216354356, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 40.7, + "targetsPerCast": 1, + "damagePerTarget": 463.68000000000006, + "partyDamage": 18871.776000000005 + }, + { + "id": "spell-8258", + "name": "Devotion Aura", + "spellId": 8258, + "target": "self", + "school": "holy", + "expectedCasts": 15.492577269408615, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-29427", + "name": "Holy Light", + "spellId": 29427, + "target": "lowest-health-friendly", + "school": "holy", + "expectedCasts": 15.492577269408615, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-29380", + "name": "Cleanse", + "spellId": 29380, + "target": "primary", + "school": "holy", + "expectedCasts": 15.492577269408615, + "targetsPerCast": 1, + "damagePerTarget": 625.9680000000001, + "partyDamage": 9697.857608177173 + }, + { + "id": "spell-13005", + "name": "Hammer of Justice", + "spellId": 13005, + "target": "random-party", + "school": "holy", + "expectedCasts": 15.492577269408615, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-31904", + "name": "Holy Shield", + "spellId": 31904, + "target": "self", + "school": "holy", + "expectedCasts": 15.492577269408615, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-38385", + "name": "Consecration", + "spellId": 38385, + "target": "primary", + "school": "holy", + "expectedCasts": 15.492577269408615, + "targetsPerCast": 1, + "damagePerTarget": 625.9680000000001, + "partyDamage": 9697.857608177173 + } + ] + }, + { + "rank": 180, + "pressureVsMedian": 0.43318035507872554, + "key": "blackrock-depths/entry-9019", + "dungeonId": "blackrock-depths", + "dungeonTitle": "Blackrock Depths", + "boss": "Emperor Dagran Thaurissan", + "serverEntry": 9019, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 822.08, + "partyDamage": 38206.72564084256, + "partyDamagePerSecond": 636.7787606807093, + "tankDamage": 38206.72564084256, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 822.08, + "partyDamage": 25299.512 + }, + { + "id": "spell-17492", + "name": "Hand of Thaurissan", + "spellId": 17492, + "target": "primary", + "school": "fire", + "expectedCasts": 11.630132095680114, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 12907.21364084256 + }, + { + "id": "spell-15636", + "name": "Avatar of Flame", + "spellId": 15636, + "target": "self", + "school": "fire", + "expectedCasts": 11.630132095680114, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 181, + "pressureVsMedian": 0.4326388998758917, + "key": "blackrock-spire/entry-10220", + "dungeonId": "blackrock-spire", + "dungeonTitle": "Blackrock Spire", + "boss": "Halycon", + "serverEntry": 10220, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 452.48, + "partyDamage": 38158.96901905919, + "partyDamagePerSecond": 635.9828169843198, + "tankDamage": 38158.96901905919, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 48.64, + "targetsPerCast": 1, + "damagePerTarget": 452.48, + "partyDamage": 22008.627200000003 + }, + { + "id": "spell-16509", + "name": "Rend", + "spellId": 16509, + "target": "primary", + "school": "physical", + "expectedCasts": 8.44375, + "targetsPerCast": 1, + "damagePerTarget": 610.8480000000001, + "partyDamage": 5157.8478000000005 + }, + { + "id": "spell-3391", + "name": "Thrash", + "spellId": 3391, + "target": "primary", + "school": "physical", + "expectedCasts": 6.955, + "targetsPerCast": 1, + "damagePerTarget": 610.8480000000001, + "partyDamage": 4248.447840000001 + }, + { + "id": "spell-13738", + "name": "Rend", + "spellId": 13738, + "target": "primary", + "school": "physical", + "expectedCasts": 11.040465351542741, + "targetsPerCast": 1, + "damagePerTarget": 610.8480000000001, + "partyDamage": 6744.046179059181 + } + ] + }, + { + "rank": 182, + "pressureVsMedian": 0.4214355146995532, + "key": "blackrock-depths/entry-8983", + "dungeonId": "blackrock-depths", + "dungeonTitle": "Blackrock Depths", + "boss": "Golem Lord Argelmach", + "serverEntry": 8983, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 773.9200000000001, + "partyDamage": 37170.8248, + "partyDamagePerSecond": 619.5137466666667, + "tankDamage": 37170.8248, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 773.9200000000001, + "partyDamage": 23817.388000000003 + }, + { + "id": "smart-8983-0-lightning-shield", + "name": "Lightning Shield", + "spellId": 15507, + "target": "self", + "school": "nature", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-8983-1-chain-lightning", + "name": "Chain Lightning", + "spellId": 15305, + "target": "primary", + "school": "nature", + "expectedCasts": 4.066666666666666, + "targetsPerCast": 1, + "damagePerTarget": 1044.7920000000001, + "partyDamage": 4248.8208 + }, + { + "id": "smart-8983-2-shock", + "name": "Shock", + "spellId": 15605, + "target": "primary", + "school": "nature", + "expectedCasts": 8.714285714285715, + "targetsPerCast": 1, + "damagePerTarget": 1044.7920000000001, + "partyDamage": 9104.616000000002 + } + ] + }, + { + "rank": 183, + "pressureVsMedian": 0.4179115801877957, + "key": "blackrock-depths/entry-9025", + "dungeonId": "blackrock-depths", + "dungeonTitle": "Blackrock Depths", + "boss": "Lord Roccor", + "serverEntry": 9025, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 822.08, + "partyDamage": 36860.012, + "partyDamagePerSecond": 614.3335333333333, + "tankDamage": 30848.552, + "randomTargetDamage": 6011.460000000002, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 822.08, + "partyDamage": 25299.512 + }, + { + "id": "smart-9025-0-flame-shock", + "name": "Flame Shock", + "spellId": 13729, + "target": "primary", + "school": "fire", + "expectedCasts": 5, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 5549.040000000001 + }, + { + "id": "smart-9025-1-earth-shock", + "name": "Earth Shock", + "spellId": 13728, + "target": "random-party", + "school": "nature", + "expectedCasts": 5.416666666666667, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 6011.460000000002 + }, + { + "id": "smart-9025-2-ground-tremor", + "name": "Ground Tremor", + "spellId": 6524, + "target": "random-party", + "school": "physical", + "expectedCasts": 4.88, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 184, + "pressureVsMedian": 0.4151347579601133, + "key": "deadmines/entry-647", + "dungeonId": "deadmines", + "dungeonTitle": "The Deadmines", + "boss": "Captain Greenskin", + "serverEntry": 647, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 720.1600000000001, + "partyDamage": 36615.094880000004, + "partyDamagePerSecond": 610.2515813333334, + "tankDamage": 17874.3712, + "randomTargetDamage": 2560.1688000000004, + "groupwideDamage": 16180.554880000002, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 24.82, + "targetsPerCast": 1, + "damagePerTarget": 720.1600000000001, + "partyDamage": 17874.3712 + }, + { + "id": "smart-647-0-cleave", + "name": "Cleave", + "spellId": 40505, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 5.48, + "targetsPerCast": 5, + "damagePerTarget": 590.5312, + "partyDamage": 16180.554880000002 + }, + { + "id": "smart-647-1-poisoned-harpoon", + "name": "Poisoned Harpoon", + "spellId": 5208, + "target": "random-party", + "school": "nature", + "expectedCasts": 2.6333333333333333, + "targetsPerCast": 1, + "damagePerTarget": 972.2160000000001, + "partyDamage": 2560.1688000000004 + } + ] + }, + { + "rank": 185, + "pressureVsMedian": 0.4143865154798778, + "key": "wailing-caverns/lord-pythas", + "dungeonId": "wailing-caverns", + "dungeonTitle": "Wailing Caverns", + "boss": "Lord Pythas", + "serverEntry": 3670, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 533, + "partyDamage": 36549.099516129034, + "partyDamagePerSecond": 609.1516586021505, + "tankDamage": 28554.099516129034, + "randomTargetDamage": 0, + "groupwideDamage": 7995, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 533, + "partyDamage": 16403.075 + }, + { + "id": "spell-9532", + "name": "Lightning Bolt", + "spellId": 9532, + "target": "primary", + "school": "nature", + "expectedCasts": 20.35483870967742, + "targetsPerCast": 1, + "damagePerTarget": 596.96, + "partyDamage": 12151.024516129033 + }, + { + "id": "spell-8040", + "name": "Druid's Slumber", + "spellId": 8040, + "target": "random-party", + "school": "nature", + "expectedCasts": 4.366666666666667, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-5187", + "name": "Healing Touch", + "spellId": 5187, + "target": "lowest-health-friendly", + "school": "nature", + "expectedCasts": 5, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-8147", + "name": "Thunder Clap", + "spellId": 8147, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 3.3333333333333335, + "targetsPerCast": 5, + "damagePerTarget": 479.7, + "partyDamage": 7995 + } + ] + }, + { + "rank": 186, + "pressureVsMedian": 0.4111413499128573, + "key": "scholomance/entry-10503", + "dungeonId": "scholomance", + "dungeonTitle": "Scholomance", + "boss": "Jandice Barov", + "serverEntry": 10503, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 773.9200000000001, + "partyDamage": 36262.87427755437, + "partyDamagePerSecond": 604.3812379592396, + "tankDamage": 36262.87427755437, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 773.9200000000001, + "partyDamage": 23817.388000000003 + }, + { + "id": "smart-10503-0-curse-of-blood", + "name": "Curse of Blood", + "spellId": 16098, + "target": "primary", + "school": "shadow", + "expectedCasts": 2.7666666666666666, + "targetsPerCast": 1, + "damagePerTarget": 1044.7920000000001, + "partyDamage": 2890.5912000000003 + }, + { + "id": "smart-10503-1-banish", + "name": "Banish", + "spellId": 8994, + "target": "random-party", + "school": "shadow", + "expectedCasts": 2.74, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-10503-2-summon-illusions", + "name": "Summon Illusions", + "spellId": 17773, + "target": "self", + "school": "shadow", + "expectedCasts": 1.8, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-24673", + "name": "Curse of Blood", + "spellId": 24673, + "target": "primary", + "school": "shadow", + "expectedCasts": 9.145260566270004, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-18270", + "name": "Dark Plague", + "spellId": 18270, + "target": "primary", + "school": "nature", + "expectedCasts": 9.145260566270004, + "targetsPerCast": 1, + "damagePerTarget": 1044.7920000000001, + "partyDamage": 9554.89507755437 + }, + { + "id": "spell-18116", + "name": "Kirtonos Gargoyle Passive", + "spellId": 18116, + "target": "primary", + "school": "physical", + "expectedCasts": 9.145260566270004, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 187, + "pressureVsMedian": 0.40152818030725945, + "key": "uldaman/entry-2748", + "dungeonId": "uldaman", + "dungeonTitle": "Uldaman", + "boss": "Archaedas", + "serverEntry": 2748, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 824.32, + "partyDamage": 35414.987873303166, + "partyDamagePerSecond": 590.2497978883861, + "tankDamage": 19704.418461538462, + "randomTargetDamage": 0, + "groupwideDamage": 15710.569411764705, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 23.903846153846153, + "targetsPerCast": 1, + "damagePerTarget": 824.32, + "partyDamage": 19704.418461538462 + }, + { + "id": "archaedas-awaken-earthen-custodian", + "name": "Awaken Earthen Custodian", + "spellId": 10259, + "target": "self", + "school": "physical", + "expectedCasts": 6, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "archaedas-ground-tremor", + "name": "Ground Tremor", + "spellId": 6524, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 4.235294117647059, + "targetsPerCast": 5, + "damagePerTarget": 741.888, + "partyDamage": 15710.569411764705 + }, + { + "id": "archaedas-awaken-earthen-guardians", + "name": "Awaken Earthen Guardians", + "spellId": 10252, + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "archaedas-awaken-vault-warders", + "name": "Awaken Vault Warders", + "spellId": 10258, + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 188, + "pressureVsMedian": 0.40092482011213904, + "key": "zulfarrak/entry-7273", + "dungeonId": "zulfarrak", + "dungeonTitle": "Zul'Farrak", + "boss": "Gahz'rilla", + "serverEntry": 7273, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 822.08, + "partyDamage": 35361.7712, + "partyDamagePerSecond": 589.3628533333334, + "tankDamage": 28148.0192, + "randomTargetDamage": 7213.752000000001, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 822.08, + "partyDamage": 25299.512 + }, + { + "id": "smart-7273-3-icicle", + "name": "Icicle", + "spellId": 11131, + "target": "random-party", + "school": "frost", + "expectedCasts": 6.5, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 7213.752000000001 + }, + { + "id": "smart-7273-4-freeze-solid", + "name": "Freeze Solid", + "spellId": 11836, + "target": "random-party", + "school": "frost", + "expectedCasts": 3.6, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-7273-5-gahz-rilla-slam", + "name": "Gahz'rilla Slam", + "spellId": 11902, + "target": "primary", + "school": "physical", + "expectedCasts": 2.5666666666666664, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 2848.5072000000005 + } + ] + }, + { + "rank": 189, + "pressureVsMedian": 0.3970034974904571, + "key": "scholomance/entry-10502", + "dungeonId": "scholomance", + "dungeonTitle": "Scholomance", + "boss": "Lady Illucia Barov", + "serverEntry": 10502, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 773.9200000000001, + "partyDamage": 35015.90856842106, + "partyDamagePerSecond": 583.598476140351, + "tankDamage": 30974.213200000002, + "randomTargetDamage": 4041.695368421053, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 773.9200000000001, + "partyDamage": 23817.388000000003 + }, + { + "id": "smart-10502-0-fear", + "name": "Fear", + "spellId": 12542, + "target": "random-party", + "school": "shadow", + "expectedCasts": 4.5, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-10502-1-shadow-shock", + "name": "Shadow Shock", + "spellId": 19460, + "target": "primary", + "school": "shadow", + "expectedCasts": 6.85, + "targetsPerCast": 1, + "damagePerTarget": 1044.7920000000001, + "partyDamage": 7156.8252 + }, + { + "id": "smart-10502-2-silence", + "name": "Silence", + "spellId": 15487, + "target": "random-party", + "school": "shadow", + "expectedCasts": 4.233333333333333, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-10502-3-curse-of-agony", + "name": "Curse of Agony", + "spellId": 18266, + "target": "random-party", + "school": "shadow", + "expectedCasts": 3.8684210526315788, + "targetsPerCast": 1, + "damagePerTarget": 1044.7920000000001, + "partyDamage": 4041.695368421053 + }, + { + "id": "spell-18116", + "name": "Kirtonos Gargoyle Passive", + "spellId": 18116, + "target": "primary", + "school": "physical", + "expectedCasts": 9.820915419937787, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-6215", + "name": "Fear", + "spellId": 6215, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 9.820915419937787, + "targetsPerCast": 5, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 190, + "pressureVsMedian": 0.3908658721845503, + "key": "uldaman/entry-4854", + "dungeonId": "uldaman", + "dungeonTitle": "Uldaman", + "boss": "Grimlok", + "serverEntry": 4854, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 530.88, + "partyDamage": 34474.56692307692, + "partyDamagePerSecond": 574.5761153846154, + "tankDamage": 30057.287999999997, + "randomTargetDamage": 4417.278923076923, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 530.88, + "partyDamage": 16337.831999999999 + }, + { + "id": "smart-4854-2-lightning-bolt", + "name": "Lightning Bolt", + "spellId": 9532, + "target": "primary", + "school": "nature", + "expectedCasts": 18.142857142857142, + "targetsPerCast": 1, + "damagePerTarget": 716.688, + "partyDamage": 13002.768 + }, + { + "id": "smart-4854-3-chain-bolt", + "name": "Chain Bolt", + "spellId": 8292, + "target": "random-party", + "school": "nature", + "expectedCasts": 3.625, + "targetsPerCast": 1, + "damagePerTarget": 716.688, + "partyDamage": 2597.994 + }, + { + "id": "smart-4854-4-shrink", + "name": "Shrink", + "spellId": 11892, + "target": "random-party", + "school": "shadow", + "expectedCasts": 2.5384615384615383, + "targetsPerCast": 1, + "damagePerTarget": 716.688, + "partyDamage": 1819.284923076923 + }, + { + "id": "smart-4854-5-tremor-totem", + "name": "Tremor Totem", + "spellId": 8143, + "target": "self", + "school": "physical", + "expectedCasts": 3.75, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-4854-6-bloodlust", + "name": "Bloodlust", + "spellId": 6742, + "target": "primary", + "school": "nature", + "expectedCasts": 1, + "targetsPerCast": 1, + "damagePerTarget": 716.688, + "partyDamage": 716.688 + } + ] + }, + { + "rank": 191, + "pressureVsMedian": 0.368563227257749, + "key": "ragefire-chasm/entry-11520", + "dungeonId": "ragefire-chasm", + "dungeonTitle": "Ragefire Chasm", + "boss": "Taragaman the Hungerer", + "serverEntry": 11520, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 564.48, + "partyDamage": 32507.462400000004, + "partyDamagePerSecond": 541.7910400000001, + "tankDamage": 22401.3888, + "randomTargetDamage": 0, + "groupwideDamage": 10106.073600000002, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 564.48, + "partyDamage": 17371.872 + }, + { + "id": "smart-11520-0-uppercut", + "name": "Uppercut", + "spellId": 18072, + "target": "primary", + "school": "physical", + "expectedCasts": 6.6, + "targetsPerCast": 1, + "damagePerTarget": 762.0480000000001, + "partyDamage": 5029.5168 + }, + { + "id": "smart-11520-1-fire-nova", + "name": "Fire Nova", + "spellId": 11970, + "target": "nearby-party", + "school": "fire", + "expectedCasts": 4.366666666666667, + "targetsPerCast": 5, + "damagePerTarget": 462.8736, + "partyDamage": 10106.073600000002 + } + ] + }, + { + "rank": 192, + "pressureVsMedian": 0.3592305730273417, + "key": "stratholme/entry-11032", + "dungeonId": "stratholme", + "dungeonTitle": "Stratholme", + "boss": "Malor the Zealous", + "serverEntry": 11032, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 773.9200000000001, + "partyDamage": 31684.31759322034, + "partyDamagePerSecond": 528.0719598870057, + "tankDamage": 26721.555593220342, + "randomTargetDamage": 4962.762000000001, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 773.9200000000001, + "partyDamage": 23817.388000000003 + }, + { + "id": "smart-11032-0-ground-smash", + "name": "Ground Smash", + "spellId": 12734, + "target": "random-party", + "school": "physical", + "expectedCasts": 4.75, + "targetsPerCast": 1, + "damagePerTarget": 1044.7920000000001, + "partyDamage": 4962.762000000001 + }, + { + "id": "smart-11032-1-head-crack", + "name": "Head Crack", + "spellId": 16172, + "target": "primary", + "school": "physical", + "expectedCasts": 2.7796610169491522, + "targetsPerCast": 1, + "damagePerTarget": 1044.7920000000001, + "partyDamage": 2904.167593220339 + }, + { + "id": "smart-11032-2-holy-light", + "name": "Holy Light", + "spellId": 15493, + "target": "lowest-health-friendly", + "school": "holy", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-11032-3-lay-on-hands", + "name": "Lay on Hands", + "spellId": 10310, + "target": "lowest-health-friendly", + "school": "holy", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-17233", + "name": "Lay on Hands", + "spellId": 17233, + "target": "lowest-health-friendly", + "school": "holy", + "expectedCasts": 12.282682834406973, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 193, + "pressureVsMedian": 0.3558741569095795, + "key": "maraudon/entry-12225", + "dungeonId": "maraudon", + "dungeonTitle": "Maraudon", + "boss": "Celebras the Cursed", + "serverEntry": 12225, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 530.88, + "partyDamage": 31388.28, + "partyDamagePerSecond": 523.138, + "tankDamage": 31388.28, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 530.88, + "partyDamage": 16337.831999999999 + }, + { + "id": "smart-12225-0-wrath", + "name": "Wrath", + "spellId": 21807, + "target": "primary", + "school": "nature", + "expectedCasts": 21, + "targetsPerCast": 1, + "damagePerTarget": 716.688, + "partyDamage": 15050.448 + }, + { + "id": "smart-12225-1-twisted-tranquility", + "name": "Twisted Tranquility", + "spellId": 21793, + "target": "random-party", + "school": "nature", + "expectedCasts": 2.5441176470588234, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-12225-2-corrupt-forces-of-nature", + "name": "Corrupt Forces of Nature", + "spellId": 21968, + "target": "self", + "school": "nature", + "expectedCasts": 2.357142857142857, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-12225-3-entangling-roots", + "name": "Entangling Roots", + "spellId": 12747, + "target": "random-party", + "school": "nature", + "expectedCasts": 4.4, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 194, + "pressureVsMedian": 0.3528646502972363, + "key": "uldaman/entry-7291", + "dungeonId": "uldaman", + "dungeonTitle": "Uldaman", + "boss": "Galgann Firehammer", + "serverEntry": 7291, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 530.88, + "partyDamage": 31122.839999999997, + "partyDamagePerSecond": 518.7139999999999, + "tankDamage": 16337.831999999999, + "randomTargetDamage": 7166.879999999999, + "groupwideDamage": 7618.128, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 530.88, + "partyDamage": 16337.831999999999 + }, + { + "id": "smart-7291-1-amplify-flames", + "name": "Amplify Flames", + "spellId": 9482, + "target": "random-party", + "school": "fire", + "expectedCasts": 3.75, + "targetsPerCast": 1, + "damagePerTarget": 716.688, + "partyDamage": 2687.58 + }, + { + "id": "smart-7291-2-fire-nova", + "name": "Fire Nova", + "spellId": 11969, + "target": "nearby-party", + "school": "fire", + "expectedCasts": 3.5, + "targetsPerCast": 5, + "damagePerTarget": 435.3216, + "partyDamage": 7618.128 + }, + { + "id": "smart-7291-3-flame-lash", + "name": "Flame Lash", + "spellId": 3356, + "target": "random-party", + "school": "fire", + "expectedCasts": 3.25, + "targetsPerCast": 1, + "damagePerTarget": 716.688, + "partyDamage": 2329.236 + }, + { + "id": "smart-7291-4-flame-shock", + "name": "Flame Shock", + "spellId": 8053, + "target": "random-party", + "school": "fire", + "expectedCasts": 3, + "targetsPerCast": 1, + "damagePerTarget": 716.688, + "partyDamage": 2150.064 + } + ] + }, + { + "rank": 195, + "pressureVsMedian": 0.3516189431298487, + "key": "stratholme/entry-10437", + "dungeonId": "stratholme", + "dungeonTitle": "Stratholme", + "boss": "Nerub'enkan", + "serverEntry": 10437, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 822.08, + "partyDamage": 31012.968, + "partyDamagePerSecond": 516.8828, + "tankDamage": 31012.968, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 822.08, + "partyDamage": 25299.512 + }, + { + "id": "smart-10437-0-encasing-webs", + "name": "Encasing Webs", + "spellId": 4962, + "target": "random-party", + "school": "physical", + "expectedCasts": 4.151515151515151, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-10437-1-pierce-armor", + "name": "Pierce Armor", + "spellId": 6016, + "target": "primary", + "school": "physical", + "expectedCasts": 4.566666666666666, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-10437-2-crypt-scarabs", + "name": "Crypt Scarabs", + "spellId": 31602, + "target": "primary", + "school": "physical", + "expectedCasts": 5.148148148148148, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 5713.456000000001 + }, + { + "id": "smart-10437-3-raise-undead-scarab", + "name": "Raise Undead Scarab", + "spellId": 17235, + "target": "self", + "school": "physical", + "expectedCasts": 3.5, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 196, + "pressureVsMedian": 0.34819002848328395, + "key": "blackrock-spire/entry-10596", + "dungeonId": "blackrock-spire", + "dungeonTitle": "Blackrock Spire", + "boss": "Mother Smolderweb", + "serverEntry": 10596, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 617.12, + "partyDamage": 30710.536000000004, + "partyDamagePerSecond": 511.8422666666667, + "tankDamage": 30710.536000000004, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 40.7, + "targetsPerCast": 1, + "damagePerTarget": 617.12, + "partyDamage": 25116.784000000003 + }, + { + "id": "smart-10596-0-mother-s-milk", + "name": "Mother's Milk", + "spellId": 16468, + "target": "primary", + "school": "nature", + "expectedCasts": 6.714285714285714, + "targetsPerCast": 1, + "damagePerTarget": 833.1120000000001, + "partyDamage": 5593.752 + }, + { + "id": "smart-10596-1-crystallize", + "name": "Crystallize", + "spellId": 16104, + "target": "random-party", + "school": "arcane", + "expectedCasts": 3.6666666666666665, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 197, + "pressureVsMedian": 0.33992229499990245, + "key": "maraudon/entry-12201", + "dungeonId": "maraudon", + "dungeonTitle": "Maraudon", + "boss": "Princess Theradras", + "serverEntry": 12201, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 564.48, + "partyDamage": 29981.317739828082, + "partyDamagePerSecond": 499.6886289971347, + "tankDamage": 26802.48893982808, + "randomTargetDamage": 3178.8288000000002, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 564.48, + "partyDamage": 17371.872 + }, + { + "id": "smart-12201-1-boulder", + "name": "Boulder", + "spellId": 21832, + "target": "random-party", + "school": "physical", + "expectedCasts": 4.171428571428571, + "targetsPerCast": 1, + "damagePerTarget": 762.0480000000001, + "partyDamage": 3178.8288000000002 + }, + { + "id": "smart-12201-2-dust-field", + "name": "Dust Field", + "spellId": 21909, + "target": "random-party", + "school": "nature", + "expectedCasts": 2.5, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-12201-3-repulsive-gaze", + "name": "Repulsive Gaze", + "spellId": 21869, + "target": "random-party", + "school": "physical", + "expectedCasts": 3.5, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-3391", + "name": "Thrash", + "spellId": 3391, + "target": "primary", + "school": "physical", + "expectedCasts": 12.375358166189113, + "targetsPerCast": 1, + "damagePerTarget": 762.0480000000001, + "partyDamage": 9430.616939828082 + } + ] + }, + { + "rank": 198, + "pressureVsMedian": 0.33714778772692733, + "key": "scarlet-monastery/entry-4543", + "dungeonId": "scarlet-monastery", + "dungeonTitle": "Scarlet Monastery", + "boss": "Bloodmage Thalnos", + "serverEntry": 4543, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 376.32000000000005, + "partyDamage": 29736.604800000005, + "partyDamagePerSecond": 495.6100800000001, + "tankDamage": 20718.566400000003, + "randomTargetDamage": 3772.137600000001, + "groupwideDamage": 5245.9008, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 376.32000000000005, + "partyDamage": 11581.248000000001 + }, + { + "id": "smart-4543-3-shadow-bolt", + "name": "Shadow Bolt", + "spellId": 9613, + "target": "primary", + "school": "shadow", + "expectedCasts": 17.985714285714284, + "targetsPerCast": 1, + "damagePerTarget": 508.0320000000001, + "partyDamage": 9137.3184 + }, + { + "id": "smart-4543-4-flamestrike", + "name": "Flamestrike", + "spellId": 8814, + "target": "random-party", + "school": "fire", + "expectedCasts": 3.65, + "targetsPerCast": 1, + "damagePerTarget": 508.0320000000001, + "partyDamage": 1854.3168000000003 + }, + { + "id": "smart-4543-5-flame-shock", + "name": "Flame Shock", + "spellId": 8053, + "target": "random-party", + "school": "fire", + "expectedCasts": 3.775, + "targetsPerCast": 1, + "damagePerTarget": 508.0320000000001, + "partyDamage": 1917.8208000000004 + }, + { + "id": "smart-4543-6-fire-nova", + "name": "Fire Nova", + "spellId": 12470, + "target": "nearby-party", + "school": "fire", + "expectedCasts": 3.4, + "targetsPerCast": 5, + "damagePerTarget": 308.5824, + "partyDamage": 5245.9008 + } + ] + }, + { + "rank": 199, + "pressureVsMedian": 0.33529423299510325, + "key": "scholomance/entry-10505", + "dungeonId": "scholomance", + "dungeonTitle": "Scholomance", + "boss": "Instructor Malicia", + "serverEntry": 10505, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 773.9200000000001, + "partyDamage": 29573.12033846154, + "partyDamagePerSecond": 492.885338974359, + "tankDamage": 25715.4268, + "randomTargetDamage": 3857.693538461539, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 773.9200000000001, + "partyDamage": 23817.388000000003 + }, + { + "id": "smart-10505-0-call-of-the-grave", + "name": "Call of the Grave", + "spellId": 12020, + "target": "primary", + "school": "shadow", + "expectedCasts": 1.8166666666666667, + "targetsPerCast": 1, + "damagePerTarget": 1044.7920000000001, + "partyDamage": 1898.0388000000003 + }, + { + "id": "smart-10505-1-corruption", + "name": "Corruption", + "spellId": 18376, + "target": "random-party", + "school": "shadow", + "expectedCasts": 3.6923076923076925, + "targetsPerCast": 1, + "damagePerTarget": 1044.7920000000001, + "partyDamage": 3857.693538461539 + }, + { + "id": "smart-10505-2-renew", + "name": "Renew", + "spellId": 8362, + "target": "lowest-health-friendly", + "school": "holy", + "expectedCasts": 61, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-10505-3-flash-heal", + "name": "Flash Heal", + "spellId": 17843, + "target": "lowest-health-friendly", + "school": "holy", + "expectedCasts": 61, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-10505-4-heal", + "name": "Heal", + "spellId": 15586, + "target": "lowest-health-friendly", + "school": "holy", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-10505-5-slow", + "name": "Slow", + "spellId": 13747, + "target": "random-party", + "school": "arcane", + "expectedCasts": 2.672727272727273, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 200, + "pressureVsMedian": 0.33288426671818433, + "key": "tinkertech-showdown/entry-663012", + "dungeonId": "tinkertech-showdown", + "dungeonTitle": "Tinkertech Showdown", + "boss": "Mechatron", + "serverEntry": 663012, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 185.76000000000002, + "partyDamage": 29360.56009821429, + "partyDamagePerSecond": 489.3426683035715, + "tankDamage": 5716.764, + "randomTargetDamage": 3656.8452375000006, + "groupwideDamage": 19986.95086071429, + "attacks": [ + { + "id": "basic-attack", + "name": "Piston Slam", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 185.76000000000002, + "partyDamage": 5716.764 + }, + { + "id": "rocket-257438-normal", + "name": "Rocket", + "spellId": 257438, + "target": "random-party", + "school": "fire", + "expectedCasts": 8.44375, + "targetsPerCast": 1, + "damagePerTarget": 195.04800000000003, + "partyDamage": 1646.9365500000001 + }, + { + "id": "gatling-missile-barrage-257459-normal", + "name": "Gatling Missile Barrage", + "spellId": 257459, + "target": "nearby-party", + "school": "fire", + "expectedCasts": 5.253571428571429, + "targetsPerCast": 5, + "damagePerTarget": 170.89920000000004, + "partyDamage": 4489.155771428573 + }, + { + "id": "incineration-beam-257470-normal", + "name": "Incineration Beam", + "spellId": 257470, + "target": "nearby-party", + "school": "fire", + "expectedCasts": 3.9775, + "targetsPerCast": 5, + "damagePerTarget": 232.20000000000002, + "partyDamage": 4617.8775000000005 + }, + { + "id": "electrified-zone-257472-normal", + "name": "Electrified Zone", + "spellId": 257472, + "target": "random-party", + "school": "nature", + "expectedCasts": 4.721875, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "rocket-257438-overdrive", + "name": "Rocket", + "spellId": 257438, + "target": "random-party", + "school": "fire", + "expectedCasts": 10.3046875, + "targetsPerCast": 1, + "damagePerTarget": 195.04800000000003, + "partyDamage": 2009.9086875000003 + }, + { + "id": "gatling-missile-barrage-257459-overdrive", + "name": "Gatling Missile Barrage", + "spellId": 257459, + "target": "nearby-party", + "school": "fire", + "expectedCasts": 6.316964285714286, + "targetsPerCast": 5, + "damagePerTarget": 170.89920000000004, + "partyDamage": 5397.820714285715 + }, + { + "id": "incineration-beam-257470-overdrive", + "name": "Incineration Beam", + "spellId": 257470, + "target": "nearby-party", + "school": "fire", + "expectedCasts": 4.721875, + "targetsPerCast": 5, + "damagePerTarget": 232.20000000000002, + "partyDamage": 5482.096875 + }, + { + "id": "electrified-zone-257472-overdrive", + "name": "Electrified Zone", + "spellId": 257472, + "target": "random-party", + "school": "nature", + "expectedCasts": 5.65234375, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 201, + "pressureVsMedian": 0.3328825422584887, + "key": "ragefire-chasm/entry-11517", + "dungeonId": "ragefire-chasm", + "dungeonTitle": "Ragefire Chasm", + "boss": "Oggleflint", + "serverEntry": 11517, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 517.44, + "partyDamage": 29360.408000000003, + "partyDamagePerSecond": 489.34013333333337, + "tankDamage": 15924.216, + "randomTargetDamage": 0, + "groupwideDamage": 13436.192000000001, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 517.44, + "partyDamage": 15924.216 + }, + { + "id": "smart-11517-0-cleave", + "name": "Cleave", + "spellId": 40505, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 6.333333333333333, + "targetsPerCast": 5, + "damagePerTarget": 424.30080000000004, + "partyDamage": 13436.192000000001 + } + ] + }, + { + "rank": 202, + "pressureVsMedian": 0.3266842840263135, + "key": "scholomance/entry-11261", + "dungeonId": "scholomance", + "dungeonTitle": "Scholomance", + "boss": "Doctor Theolen Krastinov", + "serverEntry": 11261, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 617.12, + "partyDamage": 28813.718500000003, + "partyDamagePerSecond": 480.2286416666667, + "tankDamage": 28813.718500000003, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 40.7, + "targetsPerCast": 1, + "damagePerTarget": 617.12, + "partyDamage": 25116.784000000003 + }, + { + "id": "smart-11261-0-backhand", + "name": "Backhand", + "spellId": 18103, + "target": "random-party", + "school": "physical", + "expectedCasts": 5.478260869565218, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-11261-1-rend", + "name": "Rend", + "spellId": 16509, + "target": "primary", + "school": "physical", + "expectedCasts": 4.4375, + "targetsPerCast": 1, + "damagePerTarget": 833.1120000000001, + "partyDamage": 3696.9345000000003 + }, + { + "id": "smart-11261-2-frenzy", + "name": "Frenzy", + "spellId": 8269, + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 203, + "pressureVsMedian": 0.32657819733093585, + "key": "deadmines/entry-642", + "dungeonId": "deadmines", + "dungeonTitle": "The Deadmines", + "boss": "Sneed's Shredder", + "serverEntry": 642, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 775.0400000000001, + "partyDamage": 28804.3616, + "partyDamagePerSecond": 480.07269333333335, + "tankDamage": 28804.3616, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 775.0400000000001, + "partyDamage": 23851.856 + }, + { + "id": "smart-642-0-terrify", + "name": "Terrify", + "spellId": 7399, + "target": "random-party", + "school": "shadow", + "expectedCasts": 4.533333333333333, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-642-1-distracting-pain", + "name": "Distracting Pain", + "spellId": 3603, + "target": "primary", + "school": "physical", + "expectedCasts": 4.733333333333333, + "targetsPerCast": 1, + "damagePerTarget": 1046.304, + "partyDamage": 4952.5056 + } + ] + }, + { + "rank": 204, + "pressureVsMedian": 0.32374077495213666, + "key": "wailing-caverns/lord-serpentis", + "dungeonId": "wailing-caverns", + "dungeonTitle": "Wailing Caverns", + "boss": "Lord Serpentis", + "serverEntry": 3673, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 533, + "partyDamage": 28554.099516129034, + "partyDamagePerSecond": 475.9016586021506, + "tankDamage": 28554.099516129034, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 533, + "partyDamage": 16403.075 + }, + { + "id": "spell-9532", + "name": "Lightning Bolt", + "spellId": 9532, + "target": "primary", + "school": "nature", + "expectedCasts": 20.35483870967742, + "targetsPerCast": 1, + "damagePerTarget": 596.96, + "partyDamage": 12151.024516129033 + }, + { + "id": "spell-8040", + "name": "Druid's Slumber", + "spellId": 8040, + "target": "random-party", + "school": "nature", + "expectedCasts": 4.366666666666667, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-6778", + "name": "Healing Touch", + "spellId": 6778, + "target": "lowest-health-friendly", + "school": "nature", + "expectedCasts": 5, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 205, + "pressureVsMedian": 0.31483759775340964, + "key": "scholomance/entry-10901", + "dungeonId": "scholomance", + "dungeonTitle": "Scholomance", + "boss": "Lorekeeper Polkelt", + "serverEntry": 10901, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 822.08, + "partyDamage": 27768.8348, + "partyDamagePerSecond": 462.81391333333335, + "tankDamage": 27768.8348, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 822.08, + "partyDamage": 25299.512 + }, + { + "id": "smart-10901-0-volatile-infection", + "name": "Volatile Infection", + "spellId": 18149, + "target": "primary", + "school": "nature", + "expectedCasts": 2.225, + "targetsPerCast": 1, + "damagePerTarget": 1109.8080000000002, + "partyDamage": 2469.3228000000004 + }, + { + "id": "smart-10901-1-corrosive-acid", + "name": "Corrosive Acid", + "spellId": 8245, + "target": "self", + "school": "nature", + "expectedCasts": 3.3333333333333335, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-10901-2-noxious-catalyst", + "name": "Noxious Catalyst", + "spellId": 18151, + "target": "self", + "school": "nature", + "expectedCasts": 2.45, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-18116", + "name": "Kirtonos Gargoyle Passive", + "spellId": 18116, + "target": "primary", + "school": "physical", + "expectedCasts": 10.28727386150967, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 206, + "pressureVsMedian": 0.3122339866716593, + "key": "forgotten-mine/entry-254272", + "dungeonId": "forgotten-mine", + "dungeonTitle": "Forgotten Mine", + "boss": "Geolord Vek", + "serverEntry": 254272, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 185.76000000000002, + "partyDamage": 27539.194990369637, + "partyDamagePerSecond": 458.9865831728273, + "tankDamage": 5716.764, + "randomTargetDamage": 2075.948214545455, + "groupwideDamage": 19746.482775824174, + "attacks": [ + { + "id": "basic-attack", + "name": "Stone Fist", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 185.76000000000002, + "partyDamage": 5716.764 + }, + { + "id": "stone-shield-354002", + "name": "Stone Shield", + "spellId": 354002, + "target": "self", + "school": "nature", + "expectedCasts": 3, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "stonebreaker-354000", + "name": "Stonebreaker", + "spellId": 354000, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 10.161538461538461, + "targetsPerCast": 5, + "damagePerTarget": 213.624, + "partyDamage": 10853.74246153846 + }, + { + "id": "quake-354001", + "name": "Quake", + "spellId": 354001, + "target": "nearby-party", + "school": "nature", + "expectedCasts": 4.308333333333334, + "targetsPerCast": 5, + "damagePerTarget": 152.3232, + "partyDamage": 3281.2956000000004 + }, + { + "id": "geode-barrage-354015", + "name": "Geode Barrage", + "spellId": 354015, + "target": "random-party", + "school": "nature", + "expectedCasts": 6.413636363636364, + "targetsPerCast": 1, + "damagePerTarget": 189.47520000000003, + "partyDamage": 1215.225032727273 + }, + { + "id": "raise-geospike-354004", + "name": "Geospike", + "spellId": 354004, + "target": "self", + "school": "nature", + "expectedCasts": 4.4, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "resonance-354013", + "name": "Resonance", + "spellId": 354013, + "target": "nearby-party", + "school": "nature", + "expectedCasts": 5.253571428571429, + "targetsPerCast": 5, + "damagePerTarget": 213.624, + "partyDamage": 5611.444714285715 + }, + { + "id": "ruptured-earth-354017", + "name": "Ruptured Earth", + "spellId": 354017, + "target": "random-party", + "school": "nature", + "expectedCasts": 3.706818181818182, + "targetsPerCast": 1, + "damagePerTarget": 232.20000000000002, + "partyDamage": 860.723181818182 + } + ] + }, + { + "rank": 207, + "pressureVsMedian": 0.31006085448631493, + "key": "scarlet-monastery/entry-3977", + "dungeonId": "scarlet-monastery", + "dungeonTitle": "Scarlet Monastery", + "boss": "High Inquisitor Whitemane", + "serverEntry": 3977, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 486.08000000000004, + "partyDamage": 27347.52363636364, + "partyDamagePerSecond": 455.79206060606066, + "tankDamage": 27347.52363636364, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 486.08000000000004, + "partyDamage": 14959.112000000001 + }, + { + "id": "smart-3977-5-holy-smite", + "name": "Holy Smite", + "spellId": 9481, + "target": "primary", + "school": "holy", + "expectedCasts": 18.87878787878788, + "targetsPerCast": 1, + "damagePerTarget": 656.2080000000001, + "partyDamage": 12388.411636363639 + }, + { + "id": "smart-3977-7-dominate-mind", + "name": "Dominate Mind", + "spellId": 14515, + "target": "random-party", + "school": "shadow", + "expectedCasts": 1.6, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-22187", + "name": "Power Word: Shield", + "spellId": 22187, + "target": "self", + "school": "holy", + "expectedCasts": 9.224002209639552, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-9256", + "name": "Deep Sleep", + "spellId": 9256, + "target": "random-party", + "school": "shadow", + "expectedCasts": 9.224002209639552, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-12039", + "name": "Heal", + "spellId": 12039, + "target": "lowest-health-friendly", + "school": "holy", + "expectedCasts": 9.224002209639552, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 208, + "pressureVsMedian": 0.3093812449146953, + "key": "stormwind-stockade/entry-1663", + "dungeonId": "stormwind-stockade", + "dungeonTitle": "Stormwind Stockade", + "boss": "Dextren Ward", + "serverEntry": 1663, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 479.36000000000007, + "partyDamage": 27287.58172962357, + "partyDamagePerSecond": 454.79302882705946, + "tankDamage": 27287.58172962357, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 25.8125, + "targetsPerCast": 1, + "damagePerTarget": 479.36000000000007, + "partyDamage": 12373.480000000001 + }, + { + "id": "smart-1663-1-frightening-shout", + "name": "Frightening Shout", + "spellId": 19134, + "target": "random-party", + "school": "physical", + "expectedCasts": 3.8484848484848486, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-1663-2-strike", + "name": "Strike", + "spellId": 11976, + "target": "primary", + "school": "physical", + "expectedCasts": 12.3, + "targetsPerCast": 1, + "damagePerTarget": 647.1360000000001, + "partyDamage": 7959.772800000002 + }, + { + "id": "spell-5246", + "name": "Intimidating Shout", + "spellId": 5246, + "target": "random-party", + "school": "physical", + "expectedCasts": 5.9625, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-2457", + "name": "Battle Stance", + "spellId": 2457, + "target": "primary", + "school": "physical", + "expectedCasts": 10.74631751227496, + "targetsPerCast": 1, + "damagePerTarget": 647.1360000000001, + "partyDamage": 6954.328929623569 + } + ] + }, + { + "rank": 209, + "pressureVsMedian": 0.3079449069814839, + "key": "blackfathom-deeps/entry-4831", + "dungeonId": "blackfathom-deeps", + "dungeonTitle": "Blackfathom Deeps", + "boss": "Lady Sarevess", + "serverEntry": 4831, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 376.32000000000005, + "partyDamage": 27160.896000000004, + "partyDamagePerSecond": 452.68160000000006, + "tankDamage": 27160.896000000004, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 376.32000000000005, + "partyDamage": 11581.248000000001 + }, + { + "id": "smart-4831-2-shoot", + "name": "Shoot", + "spellId": 6660, + "target": "primary", + "school": "physical", + "expectedCasts": 25, + "targetsPerCast": 1, + "damagePerTarget": 508.0320000000001, + "partyDamage": 12700.800000000003 + }, + { + "id": "smart-4831-3-forked-lightning", + "name": "Forked Lightning", + "spellId": 8435, + "target": "primary", + "school": "nature", + "expectedCasts": 5.666666666666667, + "targetsPerCast": 1, + "damagePerTarget": 508.0320000000001, + "partyDamage": 2878.848000000001 + }, + { + "id": "smart-4831-5-slow", + "name": "Slow", + "spellId": 246, + "target": "random-party", + "school": "nature", + "expectedCasts": 5.7272727272727275, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 210, + "pressureVsMedian": 0.3061013359558918, + "key": "deadmines/entry-644", + "dungeonId": "deadmines", + "dungeonTitle": "The Deadmines", + "boss": "Rhahk'Zor", + "serverEntry": 644, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 1028.16, + "partyDamage": 26998.29210638298, + "partyDamagePerSecond": 449.97153510638304, + "tankDamage": 20161.575, + "randomTargetDamage": 6836.71710638298, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 19.609375, + "targetsPerCast": 1, + "damagePerTarget": 1028.16, + "partyDamage": 20161.575 + }, + { + "id": "smart-644-1-rhahk-zor-slam", + "name": "Rhahk'Zor Slam", + "spellId": 6304, + "target": "random-party", + "school": "physical", + "expectedCasts": 4.925531914893617, + "targetsPerCast": 1, + "damagePerTarget": 1388.0160000000003, + "partyDamage": 6836.71710638298 + } + ] + }, + { + "rank": 211, + "pressureVsMedian": 0.30387334294597684, + "key": "blackrock-depths/entry-9016", + "dungeonId": "blackrock-depths", + "dungeonTitle": "Blackrock Depths", + "boss": "Bael'Gar", + "serverEntry": 9016, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 986.7200000000001, + "partyDamage": 26801.782000000003, + "partyDamagePerSecond": 446.69636666666673, + "tankDamage": 25469.710000000003, + "randomTargetDamage": 1332.0720000000003, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 25.8125, + "targetsPerCast": 1, + "damagePerTarget": 986.7200000000001, + "partyDamage": 25469.710000000003 + }, + { + "id": "smart-9016-0-magma-splash", + "name": "Magma Splash", + "spellId": 13880, + "target": "self", + "school": "fire", + "expectedCasts": 5.333333333333333, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-9016-1-summon-spawn-of-bael-gar", + "name": "Summon Spawn of Bael'Gar", + "spellId": 13895, + "target": "random-party", + "school": "fire", + "expectedCasts": 1, + "targetsPerCast": 1, + "damagePerTarget": 1332.0720000000003, + "partyDamage": 1332.0720000000003 + } + ] + }, + { + "rank": 212, + "pressureVsMedian": 0.30212078484877264, + "key": "shadowfang-keep/entry-4274", + "dungeonId": "shadowfang-keep", + "dungeonTitle": "Shadowfang Keep", + "boss": "Fenrus the Devourer", + "serverEntry": 4274, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 775.0400000000001, + "partyDamage": 26647.205492537312, + "partyDamagePerSecond": 444.12009154228855, + "tankDamage": 23851.856, + "randomTargetDamage": 2795.3494925373134, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 775.0400000000001, + "partyDamage": 23851.856 + }, + { + "id": "smart-4274-0-toxic-saliva", + "name": "Toxic Saliva", + "spellId": 7125, + "target": "random-party", + "school": "nature", + "expectedCasts": 2.671641791044776, + "targetsPerCast": 1, + "damagePerTarget": 1046.304, + "partyDamage": 2795.3494925373134 + } + ] + }, + { + "rank": 213, + "pressureVsMedian": 0.30098185031751223, + "key": "scarlet-monastery/entry-3974", + "dungeonId": "scarlet-monastery", + "dungeonTitle": "Scarlet Monastery", + "boss": "Houndmaster Loksey", + "serverEntry": 3974, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 530.88, + "partyDamage": 26546.75089285714, + "partyDamagePerSecond": 442.44584821428566, + "tankDamage": 26546.75089285714, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 530.88, + "partyDamage": 16337.831999999999 + }, + { + "id": "smart-3974-1-bloodlust", + "name": "Bloodlust", + "spellId": 6742, + "target": "primary", + "school": "nature", + "expectedCasts": 3.75, + "targetsPerCast": 1, + "damagePerTarget": 716.688, + "partyDamage": 2687.58 + }, + { + "id": "spell-6192", + "name": "Battle Shout", + "spellId": 6192, + "target": "primary", + "school": "physical", + "expectedCasts": 10.494579081632653, + "targetsPerCast": 1, + "damagePerTarget": 716.688, + "partyDamage": 7521.338892857142 + } + ] + }, + { + "rank": 214, + "pressureVsMedian": 0.2994852231780303, + "key": "sunken-temple/entry-5710", + "dungeonId": "sunken-temple", + "dungeonTitle": "Sunken Temple", + "boss": "Jammal'an the Prophet", + "serverEntry": 5710, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 530.88, + "partyDamage": 26414.747624854754, + "partyDamagePerSecond": 440.2457937475792, + "tankDamage": 23154.97317324185, + "randomTargetDamage": 3259.7744516129032, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 530.88, + "partyDamage": 16337.831999999999 + }, + { + "id": "smart-5710-0-earthgrab-totem", + "name": "Earthgrab Totem", + "spellId": 8376, + "target": "self", + "school": "physical", + "expectedCasts": 2.7666666666666666, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-5710-1-flamestrike", + "name": "Flamestrike", + "spellId": 12468, + "target": "random-party", + "school": "fire", + "expectedCasts": 4.548387096774194, + "targetsPerCast": 1, + "damagePerTarget": 716.688, + "partyDamage": 3259.7744516129032 + }, + { + "id": "smart-5710-2-healing-wave", + "name": "Healing Wave", + "spellId": 12492, + "target": "lowest-health-friendly", + "school": "nature", + "expectedCasts": 61, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-5710-3-hex-of-jammal-an", + "name": "Hex of Jammal'an", + "spellId": 12479, + "target": "random-party", + "school": "shadow", + "expectedCasts": 2.2, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-5710-8-call-for-help", + "name": "Call for Help", + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-10893", + "name": "Shadow Word: Pain", + "spellId": 10893, + "target": "primary", + "school": "shadow", + "expectedCasts": 9.512006861063465, + "targetsPerCast": 1, + "damagePerTarget": 716.688, + "partyDamage": 6817.141173241853 + }, + { + "id": "spell-12480", + "name": "Hex of Jammal'an", + "spellId": 12480, + "target": "random-party", + "school": "shadow", + "expectedCasts": 9.512006861063465, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 215, + "pressureVsMedian": 0.29944503199137595, + "key": "wailing-caverns/lady-anacondra", + "dungeonId": "wailing-caverns", + "dungeonTitle": "Wailing Caverns", + "boss": "Lady Anacondra", + "serverEntry": 3671, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 493, + "partyDamage": 26411.202741935485, + "partyDamagePerSecond": 440.1867123655914, + "tankDamage": 26411.202741935485, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 493, + "partyDamage": 15172.074999999999 + }, + { + "id": "spell-9532", + "name": "Lightning Bolt", + "spellId": 9532, + "target": "primary", + "school": "nature", + "expectedCasts": 20.35483870967742, + "targetsPerCast": 1, + "damagePerTarget": 552.1600000000001, + "partyDamage": 11239.127741935486 + }, + { + "id": "spell-8040", + "name": "Druid's Slumber", + "spellId": 8040, + "target": "random-party", + "school": "nature", + "expectedCasts": 4.366666666666667, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-5187", + "name": "Healing Touch", + "spellId": 5187, + "target": "lowest-health-friendly", + "school": "nature", + "expectedCasts": 5, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-8148", + "name": "Thorns", + "spellId": 8148, + "target": "self", + "school": "nature", + "expectedCasts": 2.45, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 216, + "pressureVsMedian": 0.29928400409140515, + "key": "wailing-caverns/mutanus-the-devourer", + "dungeonId": "wailing-caverns", + "dungeonTitle": "Wailing Caverns", + "boss": "Mutanus the Devourer", + "serverEntry": 3654, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 504, + "partyDamage": 26397, + "partyDamagePerSecond": 439.95, + "tankDamage": 15510.599999999999, + "randomTargetDamage": 0, + "groupwideDamage": 10886.4, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 504, + "partyDamage": 15510.599999999999 + }, + { + "id": "spell-7967", + "name": "Naralex's Nightmare", + "spellId": 7967, + "target": "random-party", + "school": "shadow", + "expectedCasts": 2.419939577039275, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-7399", + "name": "Terrify", + "spellId": 7399, + "target": "primary", + "school": "shadow", + "expectedCasts": 3.3488372093023258, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-8150", + "name": "Thundercrack", + "spellId": 8150, + "target": "nearby-party", + "school": "nature", + "expectedCasts": 4.114285714285714, + "targetsPerCast": 5, + "damagePerTarget": 529.2, + "partyDamage": 10886.4 + } + ] + }, + { + "rank": 217, + "pressureVsMedian": 0.296099459596026, + "key": "gnomeregan/entry-6229", + "dungeonId": "gnomeregan", + "dungeonTitle": "Gnomeregan", + "boss": "Crowd Pummeler 9-60", + "serverEntry": 6229, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 399.84000000000003, + "partyDamage": 26116.121570497136, + "partyDamagePerSecond": 435.26869284161893, + "tankDamage": 26116.121570497136, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 399.84000000000003, + "partyDamage": 12305.076000000001 + }, + { + "id": "smart-6229-1-crowd-pummel", + "name": "Crowd Pummel", + "spellId": 10887, + "target": "primary", + "school": "physical", + "expectedCasts": 4.161290322580645, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 2246.1979354838713 + }, + { + "id": "smart-6229-2-trample", + "name": "Trample", + "spellId": 5568, + "target": "primary", + "school": "physical", + "expectedCasts": 4.533333333333333, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 2447.0208000000002 + }, + { + "id": "smart-6229-3-arcing-smash", + "name": "Arcing Smash", + "spellId": 8374, + "target": "primary", + "school": "physical", + "expectedCasts": 6.6, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 3562.5744000000004 + }, + { + "id": "spell-16169", + "name": "Arcing Smash", + "spellId": 16169, + "target": "primary", + "school": "physical", + "expectedCasts": 10.291621157746919, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 5555.2524350132635 + } + ] + }, + { + "rank": 218, + "pressureVsMedian": 0.2954437365718607, + "key": "deadmines/entry-639", + "dungeonId": "deadmines", + "dungeonTitle": "The Deadmines", + "boss": "Edwin VanCleef", + "serverEntry": 639, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 432.32000000000005, + "partyDamage": 26058.286469281345, + "partyDamagePerSecond": 434.3047744880224, + "tankDamage": 26058.286469281345, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 40.7, + "targetsPerCast": 1, + "damagePerTarget": 432.32000000000005, + "partyDamage": 17595.424000000003 + }, + { + "id": "smart-639-4-vancleef-s-allies", + "name": "VanCleef's Allies", + "spellId": 5200, + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-3391", + "name": "Thrash", + "spellId": 3391, + "target": "primary", + "school": "physical", + "expectedCasts": 14.50034005894355, + "targetsPerCast": 1, + "damagePerTarget": 583.6320000000001, + "partyDamage": 8462.862469281343 + } + ] + }, + { + "rank": 219, + "pressureVsMedian": 0.2933890937393104, + "key": "razorfen-downs/entry-7357", + "dungeonId": "razorfen-downs", + "dungeonTitle": "Razorfen Downs", + "boss": "Mordresh Fire Eye", + "serverEntry": 7357, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 268.8, + "partyDamage": 25877.06593591042, + "partyDamagePerSecond": 431.2844322651737, + "tankDamage": 15278.695384615385, + "randomTargetDamage": 0, + "groupwideDamage": 10598.370551295036, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 268.8, + "partyDamage": 8272.32 + }, + { + "id": "smart-7357-5-call-for-help", + "name": "Call for Help", + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-7357-6-fireball", + "name": "Fireball", + "spellId": 12466, + "target": "primary", + "school": "fire", + "expectedCasts": 19.307692307692307, + "targetsPerCast": 1, + "damagePerTarget": 362.88000000000005, + "partyDamage": 7006.375384615385 + }, + { + "id": "spell-12470", + "name": "Fire Nova", + "spellId": 12470, + "target": "nearby-party", + "school": "fire", + "expectedCasts": 9.616698017653016, + "targetsPerCast": 5, + "damagePerTarget": 220.416, + "partyDamage": 10598.370551295036 + } + ] + }, + { + "rank": 220, + "pressureVsMedian": 0.28916008678708166, + "key": "maraudon/entry-12203", + "dungeonId": "maraudon", + "dungeonTitle": "Maraudon", + "boss": "Landslide", + "serverEntry": 12203, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 564.48, + "partyDamage": 25504.065391304346, + "partyDamagePerSecond": 425.0677565217391, + "tankDamage": 25504.065391304346, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 564.48, + "partyDamage": 17371.872 + }, + { + "id": "smart-12203-0-landslide", + "name": "Landslide", + "spellId": 21808, + "target": "random-party", + "school": "physical", + "expectedCasts": 2.5166666666666666, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-12203-1-knock-away", + "name": "Knock Away", + "spellId": 10101, + "target": "primary", + "school": "physical", + "expectedCasts": 4.888888888888889, + "targetsPerCast": 1, + "damagePerTarget": 762.0480000000001, + "partyDamage": 3725.5680000000007 + }, + { + "id": "smart-12203-2-trample", + "name": "Trample", + "spellId": 5568, + "target": "primary", + "school": "physical", + "expectedCasts": 5.782608695652174, + "targetsPerCast": 1, + "damagePerTarget": 762.0480000000001, + "partyDamage": 4406.625391304348 + } + ] + }, + { + "rank": 221, + "pressureVsMedian": 0.2868409005916791, + "key": "blackrock-spire/entry-9218", + "dungeonId": "blackrock-spire", + "dungeonTitle": "Blackrock Spire", + "boss": "Spirestone Battle Lord", + "serverEntry": 9218, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 822.08, + "partyDamage": 25299.512, + "partyDamagePerSecond": 421.6585333333333, + "tankDamage": 25299.512, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 822.08, + "partyDamage": 25299.512 + } + ] + }, + { + "rank": 222, + "pressureVsMedian": 0.2868409005916791, + "key": "blackrock-spire/entry-9219", + "dungeonId": "blackrock-spire", + "dungeonTitle": "Blackrock Spire", + "boss": "Spirestone Butcher", + "serverEntry": 9219, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 822.08, + "partyDamage": 25299.512, + "partyDamagePerSecond": 421.6585333333333, + "tankDamage": 25299.512, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 822.08, + "partyDamage": 25299.512 + } + ] + }, + { + "rank": 223, + "pressureVsMedian": 0.28550387046502046, + "key": "blackrock-depths/entry-9024", + "dungeonId": "blackrock-depths", + "dungeonTitle": "Blackrock Depths", + "boss": "Pyromancer Loregrain", + "serverEntry": 9024, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 553.2800000000001, + "partyDamage": 25181.585268965522, + "partyDamagePerSecond": 419.69308781609203, + "tankDamage": 17027.192000000003, + "randomTargetDamage": 8154.393268965519, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 553.2800000000001, + "partyDamage": 17027.192000000003 + }, + { + "id": "smart-9024-0-flame-shock", + "name": "Flame Shock", + "spellId": 15616, + "target": "random-party", + "school": "fire", + "expectedCasts": 4.517241379310345, + "targetsPerCast": 1, + "damagePerTarget": 746.9280000000001, + "partyDamage": 3374.054068965518 + }, + { + "id": "smart-9024-1-molten-blast", + "name": "Molten Blast", + "spellId": 15095, + "target": "random-party", + "school": "fire", + "expectedCasts": 6.4, + "targetsPerCast": 1, + "damagePerTarget": 746.9280000000001, + "partyDamage": 4780.339200000001 + }, + { + "id": "smart-9024-2-scorching-totem", + "name": "Scorching Totem", + "spellId": 15038, + "target": "self", + "school": "fire", + "expectedCasts": 3.32, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-9024-3-fire-ward", + "name": "Fire Ward", + "spellId": 15041, + "target": "self", + "school": "fire", + "expectedCasts": 2.48, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 224, + "pressureVsMedian": 0.28476916639841426, + "key": "blackrock-spire/entry-10376", + "dungeonId": "blackrock-spire", + "dungeonTitle": "Blackrock Spire", + "boss": "Crystal Fang", + "serverEntry": 10376, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 617.12, + "partyDamage": 25116.784000000003, + "partyDamagePerSecond": 418.6130666666667, + "tankDamage": 25116.784000000003, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 40.7, + "targetsPerCast": 1, + "damagePerTarget": 617.12, + "partyDamage": 25116.784000000003 + } + ] + }, + { + "rank": 225, + "pressureVsMedian": 0.2844944231576308, + "key": "blackrock-spire/entry-9236", + "dungeonId": "blackrock-spire", + "dungeonTitle": "Blackrock Spire", + "boss": "Shadow Hunter Vosh'gajin", + "serverEntry": 9236, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 502.88000000000005, + "partyDamage": 25092.55150769231, + "partyDamagePerSecond": 418.20919179487186, + "tankDamage": 25092.55150769231, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 46.80769230769231, + "targetsPerCast": 1, + "damagePerTarget": 502.88000000000005, + "partyDamage": 23538.65230769231 + }, + { + "id": "smart-9236-0-curse-of-blood", + "name": "Curse of Blood", + "spellId": 16098, + "target": "primary", + "school": "shadow", + "expectedCasts": 2.2888888888888888, + "targetsPerCast": 1, + "damagePerTarget": 678.8880000000001, + "partyDamage": 1553.8992000000003 + }, + { + "id": "smart-9236-1-hex", + "name": "Hex", + "spellId": 16097, + "target": "random-party", + "school": "nature", + "expectedCasts": 4.466666666666667, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 226, + "pressureVsMedian": 0.28309028710312123, + "key": "scarlet-monastery/entry-6487", + "dungeonId": "scarlet-monastery", + "dungeonTitle": "Scarlet Monastery", + "boss": "Arcanist Doan", + "serverEntry": 6487, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 379.68000000000006, + "partyDamage": 24968.706, + "partyDamagePerSecond": 416.14509999999996, + "tankDamage": 12709.788, + "randomTargetDamage": 0, + "groupwideDamage": 12258.918, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 379.68000000000006, + "partyDamage": 11684.652000000002 + }, + { + "id": "smart-6487-1-arcane-explosion", + "name": "Arcane Explosion", + "spellId": 9433, + "target": "nearby-party", + "school": "arcane", + "expectedCasts": 7.875, + "targetsPerCast": 5, + "damagePerTarget": 311.3376, + "partyDamage": 12258.918 + }, + { + "id": "smart-6487-2-silence", + "name": "Silence", + "spellId": 8988, + "target": "random-party", + "school": "nature", + "expectedCasts": 3.575, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-6487-3-polymorph", + "name": "Polymorph", + "spellId": 13323, + "target": "random-party", + "school": "arcane", + "expectedCasts": 3.7, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-6487-4-arcane-bubble", + "name": "Arcane Bubble", + "spellId": 9438, + "target": "primary", + "school": "arcane", + "expectedCasts": 1, + "targetsPerCast": 1, + "damagePerTarget": 512.5680000000001, + "partyDamage": 512.5680000000001 + }, + { + "id": "smart-6487-5-detonation", + "name": "Detonation", + "spellId": 9435, + "target": "primary", + "school": "fire", + "expectedCasts": 1, + "targetsPerCast": 1, + "damagePerTarget": 512.5680000000001, + "partyDamage": 512.5680000000001 + } + ] + }, + { + "rank": 227, + "pressureVsMedian": 0.282180599993641, + "key": "zulfarrak/entry-8127", + "dungeonId": "zulfarrak", + "dungeonTitle": "Zul'Farrak", + "boss": "Antu'sul", + "serverEntry": 8127, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 530.88, + "partyDamage": 24888.471138461537, + "partyDamagePerSecond": 414.80785230769226, + "tankDamage": 21139.6416, + "randomTargetDamage": 3748.8295384615385, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 530.88, + "partyDamage": 16337.831999999999 + }, + { + "id": "smart-8127-0-earthgrab-totem", + "name": "Earthgrab Totem", + "spellId": 8376, + "target": "self", + "school": "physical", + "expectedCasts": 4.235294117647059, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-8127-1-healing-ward", + "name": "Healing Ward", + "spellId": 11899, + "target": "lowest-health-friendly", + "school": "physical", + "expectedCasts": 3.764705882352941, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-8127-2-antu-sul-s-minion", + "name": "Antu'sul's Minion", + "spellId": 11894, + "target": "self", + "school": "shadow", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-8127-4-chain-lightning", + "name": "Chain Lightning", + "spellId": 16006, + "target": "random-party", + "school": "nature", + "expectedCasts": 5.230769230769231, + "targetsPerCast": 1, + "damagePerTarget": 716.688, + "partyDamage": 3748.8295384615385 + }, + { + "id": "smart-8127-5-earth-shock", + "name": "Earth Shock", + "spellId": 15501, + "target": "primary", + "school": "nature", + "expectedCasts": 6.7, + "targetsPerCast": 1, + "damagePerTarget": 716.688, + "partyDamage": 4801.8096000000005 + }, + { + "id": "smart-8127-11-healing-wave-of-antu-sul", + "name": "Healing Wave of Antu'sul", + "spellId": 11895, + "target": "lowest-health-friendly", + "school": "holy", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 228, + "pressureVsMedian": 0.2757566826046342, + "key": "wailing-caverns/lord-cobrahn", + "dungeonId": "wailing-caverns", + "dungeonTitle": "Wailing Caverns", + "boss": "Lord Cobrahn", + "serverEntry": 3669, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 454, + "partyDamage": 24321.878387096775, + "partyDamagePerSecond": 405.36463978494623, + "tankDamage": 24321.878387096775, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 454, + "partyDamage": 13971.849999999999 + }, + { + "id": "spell-9532", + "name": "Lightning Bolt", + "spellId": 9532, + "target": "primary", + "school": "nature", + "expectedCasts": 20.35483870967742, + "targetsPerCast": 1, + "damagePerTarget": 508.4800000000001, + "partyDamage": 10350.028387096776 + }, + { + "id": "spell-8040", + "name": "Druid's Slumber", + "spellId": 8040, + "target": "random-party", + "school": "nature", + "expectedCasts": 4.366666666666667, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-5187", + "name": "Healing Touch", + "spellId": 5187, + "target": "lowest-health-friendly", + "school": "nature", + "expectedCasts": 5, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-7965", + "name": "Cobrahn Serpent Form", + "spellId": 7965, + "target": "self", + "school": "nature", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 229, + "pressureVsMedian": 0.2738693154760887, + "key": "razorfen-kraul/entry-4421", + "dungeonId": "razorfen-kraul", + "dungeonTitle": "Razorfen Kraul", + "boss": "Charlga Razorflank", + "serverEntry": 4421, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 376.32000000000005, + "partyDamage": 24155.41165512603, + "partyDamagePerSecond": 402.5901942521005, + "tankDamage": 24155.41165512603, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 376.32000000000005, + "partyDamage": 11581.248000000001 + }, + { + "id": "smart-4421-0-chain-bolt", + "name": "Chain Bolt", + "spellId": 8292, + "target": "primary", + "school": "nature", + "expectedCasts": 11.545454545454545, + "targetsPerCast": 1, + "damagePerTarget": 508.0320000000001, + "partyDamage": 5865.4603636363645 + }, + { + "id": "smart-4421-1-purity", + "name": "Purity", + "spellId": 8361, + "target": "primary", + "school": "holy", + "expectedCasts": 3.8285714285714287, + "targetsPerCast": 1, + "damagePerTarget": 508.0320000000001, + "partyDamage": 1945.0368000000005 + }, + { + "id": "smart-4421-2-renew", + "name": "Renew", + "spellId": 6077, + "target": "lowest-health-friendly", + "school": "holy", + "expectedCasts": 3.8285714285714287, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-8358", + "name": "Mana Spike", + "spellId": 8358, + "target": "primary", + "school": "holy", + "expectedCasts": 9.37670558447039, + "targetsPerCast": 1, + "damagePerTarget": 508.0320000000001, + "partyDamage": 4763.666491489662 + } + ] + }, + { + "rank": 230, + "pressureVsMedian": 0.270427661048286, + "key": "shadowfang-keep/entry-3927", + "dungeonId": "shadowfang-keep", + "dungeonTitle": "Shadowfang Keep", + "boss": "Wolf Master Nandos", + "serverEntry": 3927, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 775.0400000000001, + "partyDamage": 23851.856, + "partyDamagePerSecond": 397.53093333333334, + "tankDamage": 23851.856, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 775.0400000000001, + "partyDamage": 23851.856 + }, + { + "id": "smart-3927-0-call-lupine-horror", + "name": "Call Lupine Horror", + "spellId": 7489, + "target": "self", + "school": "shadow", + "expectedCasts": 1.7333333333333334, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-3927-1-call-bleak-worg", + "name": "Call Bleak Worg", + "spellId": 7487, + "target": "self", + "school": "shadow", + "expectedCasts": 1.4, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 231, + "pressureVsMedian": 0.26926741371001695, + "key": "sunken-temple/entry-8580", + "dungeonId": "sunken-temple", + "dungeonTitle": "Sunken Temple", + "boss": "Atal'alarion", + "serverEntry": 8580, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 845.6000000000001, + "partyDamage": 23749.521600000007, + "partyDamagePerSecond": 395.8253600000001, + "tankDamage": 23749.521600000007, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 20.85, + "targetsPerCast": 1, + "damagePerTarget": 845.6000000000001, + "partyDamage": 17630.760000000006 + }, + { + "id": "smart-8580-4-sweeping-slam", + "name": "Sweeping Slam", + "spellId": 12887, + "target": "primary", + "school": "physical", + "expectedCasts": 5.36, + "targetsPerCast": 1, + "damagePerTarget": 1141.5600000000002, + "partyDamage": 6118.761600000002 + }, + { + "id": "smart-8580-5-ground-tremor", + "name": "Ground Tremor", + "spellId": 6524, + "target": "random-party", + "school": "physical", + "expectedCasts": 4.266666666666667, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 232, + "pressureVsMedian": 0.2688129024034172, + "key": "razorfen-downs/entry-8567", + "dungeonId": "razorfen-downs", + "dungeonTitle": "Razorfen Downs", + "boss": "Glutton", + "serverEntry": 8567, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 558.8800000000001, + "partyDamage": 23709.433473684214, + "partyDamagePerSecond": 395.15722456140355, + "tankDamage": 23709.433473684214, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 22.267857142857142, + "targetsPerCast": 1, + "damagePerTarget": 558.8800000000001, + "partyDamage": 12445.060000000001 + }, + { + "id": "smart-8567-5-frenzy", + "name": "Frenzy", + "spellId": 12795, + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-16345", + "name": "Disease Cloud", + "spellId": 16345, + "target": "primary", + "school": "nature", + "expectedCasts": 14.929824561403509, + "targetsPerCast": 1, + "damagePerTarget": 754.4880000000002, + "partyDamage": 11264.373473684213 + } + ] + }, + { + "rank": 233, + "pressureVsMedian": 0.2633420849316758, + "key": "razorfen-downs/entry-7358", + "dungeonId": "razorfen-downs", + "dungeonTitle": "Razorfen Downs", + "boss": "Amnennar the Coldbringer", + "serverEntry": 7358, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 376.32000000000005, + "partyDamage": 23226.904615384618, + "partyDamagePerSecond": 387.11507692307697, + "tankDamage": 14082.328615384617, + "randomTargetDamage": 9144.576000000001, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 376.32000000000005, + "partyDamage": 11581.248000000001 + }, + { + "id": "smart-7358-3-amnennar-s-wrath", + "name": "Amnennar's Wrath", + "spellId": 13009, + "target": "primary", + "school": "physical", + "expectedCasts": 4.923076923076923, + "targetsPerCast": 1, + "damagePerTarget": 508.0320000000001, + "partyDamage": 2501.080615384616 + }, + { + "id": "smart-7358-4-frostbolt", + "name": "Frostbolt", + "spellId": 15530, + "target": "random-party", + "school": "frost", + "expectedCasts": 18, + "targetsPerCast": 1, + "damagePerTarget": 508.0320000000001, + "partyDamage": 9144.576000000001 + }, + { + "id": "smart-7358-9-summon-frost-spectres", + "name": "Summon Frost Spectres", + "spellId": 12642, + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 234, + "pressureVsMedian": 0.2620079631290996, + "key": "deadmines/entry-645", + "dungeonId": "deadmines", + "dungeonTitle": "The Deadmines", + "boss": "Cookie", + "serverEntry": 645, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 575.6800000000001, + "partyDamage": 23109.2344, + "partyDamagePerSecond": 385.15390666666667, + "tankDamage": 23109.2344, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 575.6800000000001, + "partyDamage": 17716.552 + }, + { + "id": "smart-645-0-acid-splash", + "name": "Acid Splash", + "spellId": 6306, + "target": "primary", + "school": "nature", + "expectedCasts": 3.488888888888889, + "targetsPerCast": 1, + "damagePerTarget": 777.1680000000001, + "partyDamage": 2711.4528000000005 + }, + { + "id": "smart-645-1-cookie-s-cooking", + "name": "Cookie's Cooking", + "spellId": 5174, + "target": "primary", + "school": "holy", + "expectedCasts": 3.45, + "targetsPerCast": 1, + "damagePerTarget": 777.1680000000001, + "partyDamage": 2681.2296000000006 + } + ] + }, + { + "rank": 235, + "pressureVsMedian": 0.25178522789393587, + "key": "razorfen-kraul/entry-6168", + "dungeonId": "razorfen-kraul", + "dungeonTitle": "Razorfen Kraul", + "boss": "Roogug", + "serverEntry": 6168, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 376.32000000000005, + "partyDamage": 22207.584000000003, + "partyDamagePerSecond": 370.12640000000005, + "tankDamage": 22207.584000000003, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 376.32000000000005, + "partyDamage": 11581.248000000001 + }, + { + "id": "smart-6168-0-lightning-bolt", + "name": "Lightning Bolt", + "spellId": 9532, + "target": "primary", + "school": "nature", + "expectedCasts": 20.916666666666668, + "targetsPerCast": 1, + "damagePerTarget": 508.0320000000001, + "partyDamage": 10626.336000000003 + } + ] + }, + { + "rank": 236, + "pressureVsMedian": 0.2434037373266292, + "key": "razorfen-kraul/entry-4428", + "dungeonId": "razorfen-kraul", + "dungeonTitle": "Razorfen Kraul", + "boss": "Death Speaker Jargba", + "serverEntry": 4428, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 376.32000000000005, + "partyDamage": 21468.33230769231, + "partyDamagePerSecond": 357.8055384615385, + "tankDamage": 21468.33230769231, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 376.32000000000005, + "partyDamage": 11581.248000000001 + }, + { + "id": "smart-4428-0-shadow-bolt", + "name": "Shadow Bolt", + "spellId": 9613, + "target": "primary", + "school": "shadow", + "expectedCasts": 19.46153846153846, + "targetsPerCast": 1, + "damagePerTarget": 508.0320000000001, + "partyDamage": 9887.084307692308 + }, + { + "id": "smart-4428-1-dominate-mind", + "name": "Dominate Mind", + "spellId": 14515, + "target": "random-party", + "school": "shadow", + "expectedCasts": 2.716666666666667, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 237, + "pressureVsMedian": 0.24314541420123675, + "key": "gnomeregan/entry-7079", + "dungeonId": "gnomeregan", + "dungeonTitle": "Gnomeregan", + "boss": "Viscous Fallout", + "serverEntry": 7079, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 399.84000000000003, + "partyDamage": 21445.54807783784, + "partyDamagePerSecond": 357.42580129729737, + "tankDamage": 15198.318240000002, + "randomTargetDamage": 0, + "groupwideDamage": 6247.229837837839, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 399.84000000000003, + "partyDamage": 12305.076000000001 + }, + { + "id": "smart-7079-0-toxic-volley", + "name": "Toxic Volley", + "spellId": 21687, + "target": "nearby-party", + "school": "nature", + "expectedCasts": 3.810810810810811, + "targetsPerCast": 5, + "damagePerTarget": 327.8688, + "partyDamage": 6247.229837837839 + }, + { + "id": "smart-7079-2-corrosive-ooze", + "name": "Corrosive Ooze", + "spellId": 9459, + "target": "primary", + "school": "nature", + "expectedCasts": 5.36, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 2893.242240000001 + } + ] + }, + { + "rank": 238, + "pressureVsMedian": 0.2420745141529594, + "key": "blackfathom-deeps/entry-12902", + "dungeonId": "blackfathom-deeps", + "dungeonTitle": "Blackfathom Deeps", + "boss": "Lorgus Jett", + "serverEntry": 12902, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 376.32000000000005, + "partyDamage": 21351.094153846156, + "partyDamagePerSecond": 355.85156923076926, + "tankDamage": 21351.094153846156, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 376.32000000000005, + "partyDamage": 11581.248000000001 + }, + { + "id": "smart-12902-2-lightning-bolt", + "name": "Lightning Bolt", + "spellId": 12167, + "target": "primary", + "school": "nature", + "expectedCasts": 19.23076923076923, + "targetsPerCast": 1, + "damagePerTarget": 508.0320000000001, + "partyDamage": 9769.846153846156 + } + ] + }, + { + "rank": 239, + "pressureVsMedian": 0.2420607938694101, + "key": "frozen-reach/entry-97700", + "dungeonId": "frozen-reach", + "dungeonTitle": "Frozen Reach", + "boss": "Alva", + "serverEntry": 97700, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 185.76000000000002, + "partyDamage": 21349.884017922082, + "partyDamagePerSecond": 355.8314002987014, + "tankDamage": 4171.156363636364, + "randomTargetDamage": 4741.306174285714, + "groupwideDamage": 12437.421480000003, + "attacks": [ + { + "id": "auto-shot-255347", + "name": "Auto Shot", + "spellId": 255347, + "target": "primary", + "school": "physical", + "expectedCasts": 28.068181818181817, + "targetsPerCast": 1, + "damagePerTarget": 148.60800000000003, + "partyDamage": 4171.156363636364 + }, + { + "id": "rain-of-arrows-255349", + "name": "Rain of Arrows", + "spellId": 255349, + "target": "random-party", + "school": "physical", + "expectedCasts": 5.5, + "targetsPerCast": 1, + "damagePerTarget": 157.89600000000002, + "partyDamage": 868.4280000000001 + }, + { + "id": "unbridled-arrows-255352", + "name": "Unbridled Arrows", + "spellId": 255352, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 3.5, + "targetsPerCast": 5, + "damagePerTarget": 133.74720000000002, + "partyDamage": 2340.5760000000005 + }, + { + "id": "blast-arrow-255358", + "name": "Blast Arrow", + "spellId": 255358, + "target": "random-party", + "school": "fire", + "expectedCasts": 3, + "targetsPerCast": 1, + "damagePerTarget": 195.04800000000003, + "partyDamage": 585.1440000000001 + }, + { + "id": "blast-arrow-trigger-255363", + "name": "Blast Arrow Ground Trigger", + "spellId": 255363, + "target": "self", + "school": "fire", + "expectedCasts": 4.466666666666667, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "cluster-shot-255401", + "name": "Cluster Shot", + "spellId": 255401, + "target": "random-party", + "school": "physical", + "expectedCasts": 4.308333333333334, + "targetsPerCast": 1, + "damagePerTarget": 176.472, + "partyDamage": 760.3002000000001 + }, + { + "id": "explosive-trap-255421", + "name": "Throw Explosive Trap", + "spellId": 255421, + "target": "self", + "school": "fire", + "expectedCasts": 3, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "vengeful-bolt-255394", + "name": "Vengeful Bolt", + "spellId": 255394, + "target": "random-party", + "school": "shadow", + "expectedCasts": 9.507142857142858, + "targetsPerCast": 1, + "damagePerTarget": 176.472, + "partyDamage": 1677.7445142857146 + }, + { + "id": "shadow-veil-lance-255397", + "name": "Shadow Veil Lance", + "spellId": 255397, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 5.9625, + "targetsPerCast": 5, + "damagePerTarget": 204.33600000000004, + "partyDamage": 6091.767000000002 + }, + { + "id": "sphere-grief-wrath-255393", + "name": "Sphere of Grief and Wrath", + "spellId": 255393, + "target": "random-party", + "school": "shadow", + "expectedCasts": 3.9775, + "targetsPerCast": 1, + "damagePerTarget": 213.624, + "partyDamage": 849.6894599999999 + }, + { + "id": "alvas-grief-255410", + "name": "Alva's Grief", + "spellId": 255410, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 6.955, + "targetsPerCast": 5, + "damagePerTarget": 115.17120000000001, + "partyDamage": 4005.07848 + }, + { + "id": "alvas-wrath-255419", + "name": "Alva's Wrath", + "spellId": 255419, + "target": "self", + "school": "shadow", + "expectedCasts": 3.382, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 240, + "pressureVsMedian": 0.22287872640727766, + "key": "uldaman/entry-7023", + "dungeonId": "uldaman", + "dungeonTitle": "Uldaman", + "boss": "Obsidian Sentinel", + "serverEntry": 7023, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 564.48, + "partyDamage": 19658.016, + "partyDamagePerSecond": 327.6336, + "tankDamage": 19658.016, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 564.48, + "partyDamage": 17371.872 + }, + { + "id": "smart-7023-0-reflection", + "name": "Reflection", + "spellId": 9906, + "target": "self", + "school": "physical", + "expectedCasts": 3.7, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-7023-1-splintered-obsidian", + "name": "Splintered Obsidian", + "spellId": 10072, + "target": "primary", + "school": "physical", + "expectedCasts": 3, + "targetsPerCast": 1, + "damagePerTarget": 762.0480000000001, + "partyDamage": 2286.1440000000002 + }, + { + "id": "smart-7023-2-summon-obsidian-shard", + "name": "Summon Obsidian Shard", + "spellId": 10061, + "target": "self", + "school": "physical", + "expectedCasts": 2.8, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 241, + "pressureVsMedian": 0.22146939180919933, + "key": "stormwind-stockade/entry-1716", + "dungeonId": "stormwind-stockade", + "dungeonTitle": "Stormwind Stockade", + "boss": "Bazil Thredd", + "serverEntry": 1716, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 399.84000000000003, + "partyDamage": 19533.711978144856, + "partyDamagePerSecond": 325.5618663024143, + "tankDamage": 19533.711978144856, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 399.84000000000003, + "partyDamage": 12305.076000000001 + }, + { + "id": "smart-1716-2-smoke-bomb", + "name": "Smoke Bomb", + "spellId": 7964, + "target": "random-party", + "school": "physical", + "expectedCasts": 3.470731707317073, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-1716-3-battle-shout", + "name": "Battle Shout", + "spellId": 9128, + "target": "primary", + "school": "physical", + "expectedCasts": 2.9333333333333336, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 1583.3664000000003 + }, + { + "id": "spell-29651", + "name": "Dual Wield", + "spellId": 29651, + "target": "primary", + "school": "physical", + "expectedCasts": 10.45838627700127, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 5645.269578144855 + } + ] + }, + { + "rank": 242, + "pressureVsMedian": 0.2178699455050733, + "key": "razorfen-kraul/entry-4422", + "dungeonId": "razorfen-kraul", + "dungeonTitle": "Razorfen Kraul", + "boss": "Agathelos the Raging", + "serverEntry": 4422, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 399.84000000000003, + "partyDamage": 19216.239, + "partyDamagePerSecond": 320.27065000000005, + "tankDamage": 16555.875, + "randomTargetDamage": 2660.3640000000005, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 399.84000000000003, + "partyDamage": 12305.076000000001 + }, + { + "id": "smart-4422-1-rampage", + "name": "Rampage", + "spellId": 8285, + "target": "random-party", + "school": "physical", + "expectedCasts": 4.928571428571429, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 2660.3640000000005 + }, + { + "id": "smart-4422-2-left-for-dead", + "name": "Left for Dead", + "spellId": 8555, + "target": "primary", + "school": "physical", + "expectedCasts": 7.875, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 4250.799000000001 + }, + { + "id": "smart-4422-3-enrage", + "name": "Enrage", + "spellId": 30485, + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 243, + "pressureVsMedian": 0.2052414790215112, + "key": "blackrock-spire/wow-classic-batch-three-entry-10339", + "dungeonId": "blackrock-spire", + "dungeonTitle": "Blackrock Spire", + "boss": "Gyth", + "serverEntry": 10339, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 202.95999999999998, + "partyDamage": 18102.401891402715, + "partyDamagePerSecond": 301.70669819004524, + "tankDamage": 6912.280352941176, + "randomTargetDamage": 0, + "groupwideDamage": 11190.121538461539, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 202.95999999999998, + "partyDamage": 6246.093999999999 + }, + { + "id": "corrosive-acid-16359", + "name": "Corrosive Acid", + "spellId": 16359, + "target": "nearby-party", + "school": "nature", + "expectedCasts": 4.6923076923076925, + "targetsPerCast": 5, + "damagePerTarget": 131.92399999999998, + "partyDamage": 3095.14 + }, + { + "id": "freeze-16350", + "name": "Freeze", + "spellId": 16350, + "target": "nearby-party", + "school": "frost", + "expectedCasts": 4.6923076923076925, + "targetsPerCast": 5, + "damagePerTarget": 162.368, + "partyDamage": 3809.403076923077 + }, + { + "id": "flame-breath-16390", + "name": "Flame Breath", + "spellId": 16390, + "target": "nearby-party", + "school": "fire", + "expectedCasts": 4.6923076923076925, + "targetsPerCast": 5, + "damagePerTarget": 182.664, + "partyDamage": 4285.578461538462 + }, + { + "id": "knock-away-10101", + "name": "Knock Away", + "spellId": 10101, + "target": "primary", + "school": "physical", + "expectedCasts": 3.6470588235294117, + "targetsPerCast": 1, + "damagePerTarget": 182.664, + "partyDamage": 666.1863529411764 + } + ] + }, + { + "rank": 244, + "pressureVsMedian": 0.20285598368009322, + "key": "wailing-caverns/skum", + "dungeonId": "wailing-caverns", + "dungeonTitle": "Wailing Caverns", + "boss": "Skum", + "serverEntry": 3674, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 420, + "partyDamage": 17892, + "partyDamagePerSecond": 298.2, + "tankDamage": 17892, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 420, + "partyDamage": 12925.5 + }, + { + "id": "spell-6254", + "name": "Chained Bolt", + "spellId": 6254, + "target": "primary", + "school": "nature", + "expectedCasts": 10.75, + "targetsPerCast": 1, + "damagePerTarget": 462.00000000000006, + "partyDamage": 4966.500000000001 + } + ] + }, + { + "rank": 245, + "pressureVsMedian": 0.20158646712494976, + "key": "gnomeregan/entry-6235", + "dungeonId": "gnomeregan", + "dungeonTitle": "Gnomeregan", + "boss": "Electrocutioner 6000", + "serverEntry": 6235, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 399.84000000000003, + "partyDamage": 17780.028000000002, + "partyDamagePerSecond": 296.33380000000005, + "tankDamage": 16134.972000000002, + "randomTargetDamage": 1645.0560000000003, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 399.84000000000003, + "partyDamage": 12305.076000000001 + }, + { + "id": "smart-6235-1-shock", + "name": "Shock", + "spellId": 11084, + "target": "random-party", + "school": "nature", + "expectedCasts": 3.0476190476190474, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 1645.0560000000003 + }, + { + "id": "smart-6235-2-megavolt", + "name": "Megavolt", + "spellId": 11082, + "target": "primary", + "school": "nature", + "expectedCasts": 3.380952380952381, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 1824.9840000000004 + }, + { + "id": "smart-6235-3-chain-bolt", + "name": "Chain Bolt", + "spellId": 11085, + "target": "primary", + "school": "nature", + "expectedCasts": 3.7142857142857144, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 2004.9120000000005 + } + ] + }, + { + "rank": 246, + "pressureVsMedian": 0.199349200997763, + "key": "uldaman/entry-7206", + "dungeonId": "uldaman", + "dungeonTitle": "Uldaman", + "boss": "Ancient Stone Keeper", + "serverEntry": 7206, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 789.6, + "partyDamage": 17582.7, + "partyDamagePerSecond": 293.045, + "tankDamage": 17582.7, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 22.267857142857142, + "targetsPerCast": 1, + "damagePerTarget": 789.6, + "partyDamage": 17582.7 + }, + { + "id": "smart-7206-0-sand-storms", + "name": "Sand Storms", + "spellId": 10132, + "target": "random-party", + "school": "physical", + "expectedCasts": 3.75, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-7206-1-sand-storms", + "name": "Sand Storms", + "spellId": 10094, + "target": "self", + "school": "physical", + "expectedCasts": 3.75, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 247, + "pressureVsMedian": 0.19289223109201284, + "key": "gnomeregan/entry-7800", + "dungeonId": "gnomeregan", + "dungeonTitle": "Gnomeregan", + "boss": "Mekgineer Thermaplugg", + "serverEntry": 7800, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 399.84000000000003, + "partyDamage": 17013.192000000003, + "partyDamagePerSecond": 283.55320000000006, + "tankDamage": 17013.192000000003, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 399.84000000000003, + "partyDamage": 12305.076000000001 + }, + { + "id": "smart-7800-3-knock-away", + "name": "Knock Away", + "spellId": 10101, + "target": "primary", + "school": "physical", + "expectedCasts": 5.222222222222222, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 2818.8720000000008 + }, + { + "id": "smart-7800-7-activate-bomb-a", + "name": "Activate Bomb A", + "spellId": 11511, + "target": "primary", + "school": "physical", + "expectedCasts": 3.5, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 1889.2440000000004 + } + ] + }, + { + "rank": 248, + "pressureVsMedian": 0.19100184189423683, + "key": "razorfen-kraul/entry-4420", + "dungeonId": "razorfen-kraul", + "dungeonTitle": "Razorfen Kraul", + "boss": "Overlord Ramtusk", + "serverEntry": 4420, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 399.84000000000003, + "partyDamage": 16846.458720000002, + "partyDamagePerSecond": 280.77431200000007, + "tankDamage": 13888.442400000002, + "randomTargetDamage": 2958.0163200000006, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 399.84000000000003, + "partyDamage": 12305.076000000001 + }, + { + "id": "smart-4420-0-call-for-help", + "name": "Call for Help", + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-4420-1-battle-shout", + "name": "Battle Shout", + "spellId": 9128, + "target": "primary", + "school": "physical", + "expectedCasts": 2.9333333333333336, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 1583.3664000000003 + }, + { + "id": "smart-4420-2-thunderclap", + "name": "Thunderclap", + "spellId": 15548, + "target": "random-party", + "school": "nature", + "expectedCasts": 5.48, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 2958.0163200000006 + } + ] + }, + { + "rank": 249, + "pressureVsMedian": 0.18801943842372185, + "key": "blackfathom-deeps/entry-4832", + "dungeonId": "blackfathom-deeps", + "dungeonTitle": "Blackfathom Deeps", + "boss": "Twilight Lord Kelris", + "serverEntry": 4832, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 376.32000000000005, + "partyDamage": 16583.409230769234, + "partyDamagePerSecond": 276.3901538461539, + "tankDamage": 16583.409230769234, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 376.32000000000005, + "partyDamage": 11581.248000000001 + }, + { + "id": "smart-4832-3-sleep", + "name": "Sleep", + "spellId": 8399, + "target": "random-party", + "school": "shadow", + "expectedCasts": 3.632911392405063, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-4832-5-mind-blast", + "name": "Mind Blast", + "spellId": 15587, + "target": "primary", + "school": "shadow", + "expectedCasts": 9.846153846153847, + "targetsPerCast": 1, + "damagePerTarget": 508.0320000000001, + "partyDamage": 5002.161230769232 + } + ] + }, + { + "rank": 250, + "pressureVsMedian": 0.18138598105253936, + "key": "blackfathom-deeps/entry-4887", + "dungeonId": "blackfathom-deeps", + "dungeonTitle": "Blackfathom Deeps", + "boss": "Ghamoo-ra", + "serverEntry": 4887, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 399.84000000000003, + "partyDamage": 15998.334947368423, + "partyDamagePerSecond": 266.63891578947374, + "tankDamage": 15998.334947368423, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 399.84000000000003, + "partyDamage": 12305.076000000001 + }, + { + "id": "smart-4887-0-trample", + "name": "Trample", + "spellId": 5568, + "target": "primary", + "school": "physical", + "expectedCasts": 6.842105263157895, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 3693.2589473684216 + } + ] + }, + { + "rank": 251, + "pressureVsMedian": 0.1807920730974787, + "key": "blackfathom-deeps/entry-4829", + "dungeonId": "blackfathom-deeps", + "dungeonTitle": "Blackfathom Deeps", + "boss": "Aku'mai", + "serverEntry": 4829, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 399.84000000000003, + "partyDamage": 15945.951966402463, + "partyDamagePerSecond": 265.76586610670773, + "tankDamage": 15945.951966402463, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 399.84000000000003, + "partyDamage": 12305.076000000001 + }, + { + "id": "smart-4829-0-poison-cloud", + "name": "Poison Cloud", + "spellId": 3815, + "target": "primary", + "school": "nature", + "expectedCasts": 3.1121495327102804, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 1679.8885233644862 + }, + { + "id": "smart-4829-1-frenzied-rage", + "name": "Frenzied Rage", + "spellId": 3490, + "target": "primary", + "school": "physical", + "expectedCasts": 3.632911392405063, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 1960.987443037975 + } + ] + }, + { + "rank": 252, + "pressureVsMedian": 0.17761346125641184, + "key": "ragefire-chasm/entry-11518", + "dungeonId": "ragefire-chasm", + "dungeonTitle": "Ragefire Chasm", + "boss": "Jergosh the Invoker", + "serverEntry": 11518, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 379.68000000000006, + "partyDamage": 15665.596800000001, + "partyDamagePerSecond": 261.09328, + "tankDamage": 15665.596800000001, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 379.68000000000006, + "partyDamage": 11684.652000000002 + }, + { + "id": "smart-11518-0-curse-of-weakness", + "name": "Curse of Weakness", + "spellId": 18267, + "target": "primary", + "school": "shadow", + "expectedCasts": 2.966666666666667, + "targetsPerCast": 1, + "damagePerTarget": 512.5680000000001, + "partyDamage": 1520.6184000000003 + }, + { + "id": "smart-11518-1-immolate", + "name": "Immolate", + "spellId": 20800, + "target": "primary", + "school": "fire", + "expectedCasts": 4.8, + "targetsPerCast": 1, + "damagePerTarget": 512.5680000000001, + "partyDamage": 2460.3264000000004 + } + ] + }, + { + "rank": 253, + "pressureVsMedian": 0.17741930363572528, + "key": "shadowfang-keep/entry-4278", + "dungeonId": "shadowfang-keep", + "dungeonTitle": "Shadowfang Keep", + "boss": "Commander Springvale", + "serverEntry": 4278, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 508.4800000000001, + "partyDamage": 15648.472000000002, + "partyDamagePerSecond": 260.8078666666667, + "tankDamage": 15648.472000000002, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 508.4800000000001, + "partyDamage": 15648.472000000002 + }, + { + "id": "smart-4278-0-hammer-of-justice", + "name": "Hammer of Justice", + "spellId": 5588, + "target": "random-party", + "school": "holy", + "expectedCasts": 4, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-4278-1-holy-light", + "name": "Holy Light", + "spellId": 1026, + "target": "lowest-health-friendly", + "school": "holy", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-4278-2-divine-shield", + "name": "Divine Shield", + "spellId": 33581, + "target": "self", + "school": "holy", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 254, + "pressureVsMedian": 0.17152466088472168, + "key": "shadowfang-keep/entry-3887", + "dungeonId": "shadowfang-keep", + "dungeonTitle": "Shadowfang Keep", + "boss": "Baron Silverlaine", + "serverEntry": 3887, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 399.84000000000003, + "partyDamage": 15128.56153846154, + "partyDamagePerSecond": 252.14269230769233, + "tankDamage": 15128.56153846154, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 399.84000000000003, + "partyDamage": 12305.076000000001 + }, + { + "id": "smart-3887-1-veil-of-shadow", + "name": "Veil of Shadow", + "spellId": 7068, + "target": "primary", + "school": "shadow", + "expectedCasts": 5.230769230769231, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 2823.485538461539 + } + ] + }, + { + "rank": 255, + "pressureVsMedian": 0.16954465097689986, + "key": "hellfire-ramparts/tbc-event-entry-17536", + "dungeonId": "hellfire-ramparts", + "dungeonTitle": "Hellfire Citadel: Ramparts", + "boss": "Nazan", + "serverEntry": 17536, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 202.95999999999998, + "partyDamage": 14953.923666666662, + "partyDamagePerSecond": 249.23206111111102, + "tankDamage": 6246.093999999999, + "randomTargetDamage": 2191.968, + "groupwideDamage": 6515.861666666665, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 202.95999999999998, + "partyDamage": 6246.093999999999 + }, + { + "id": "fireball-33793", + "name": "Fireball", + "spellId": 33793, + "target": "random-party", + "school": "fire", + "expectedCasts": 12, + "targetsPerCast": 1, + "damagePerTarget": 182.664, + "partyDamage": 2191.968 + }, + { + "id": "cone-of-fire-30926", + "name": "Cone of Fire", + "spellId": 30926, + "target": "nearby-party", + "school": "fire", + "expectedCasts": 5.583333333333333, + "targetsPerCast": 5, + "damagePerTarget": 233.40399999999997, + "partyDamage": 6515.861666666665 + } + ] + }, + { + "rank": 256, + "pressureVsMedian": 0.158099096576591, + "key": "shadowfang-keep/entry-3914", + "dungeonId": "shadowfang-keep", + "dungeonTitle": "Shadowfang Keep", + "boss": "Rethilgore", + "serverEntry": 3914, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 399.84000000000003, + "partyDamage": 13944.420000000002, + "partyDamagePerSecond": 232.40700000000004, + "tankDamage": 12305.076000000001, + "randomTargetDamage": 1639.344, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 399.84000000000003, + "partyDamage": 12305.076000000001 + }, + { + "id": "smart-3914-0-soul-drain", + "name": "Soul Drain", + "spellId": 7295, + "target": "random-party", + "school": "shadow", + "expectedCasts": 5, + "targetsPerCast": 1, + "damagePerTarget": 327.8688, + "partyDamage": 1639.344 + } + ] + }, + { + "rank": 257, + "pressureVsMedian": 0.157872431205155, + "key": "shadowfang-keep/entry-4279", + "dungeonId": "shadowfang-keep", + "dungeonTitle": "Shadowfang Keep", + "boss": "Odo the Blindwatcher", + "serverEntry": 4279, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 399.84000000000003, + "partyDamage": 13924.428, + "partyDamagePerSecond": 232.0738, + "tankDamage": 13924.428, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 399.84000000000003, + "partyDamage": 12305.076000000001 + }, + { + "id": "smart-4279-0-call-for-help", + "name": "Call for Help", + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "smart-4279-1-howling-rage", + "name": "Howling Rage", + "spellId": 7481, + "target": "primary", + "school": "shadow", + "expectedCasts": 1, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 539.7840000000001 + }, + { + "id": "smart-4279-2-howling-rage", + "name": "Howling Rage", + "spellId": 7483, + "target": "primary", + "school": "shadow", + "expectedCasts": 1, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 539.7840000000001 + }, + { + "id": "smart-4279-3-howling-rage", + "name": "Howling Rage", + "spellId": 7484, + "target": "primary", + "school": "shadow", + "expectedCasts": 1, + "targetsPerCast": 1, + "damagePerTarget": 539.7840000000001, + "partyDamage": 539.7840000000001 + } + ] + }, + { + "rank": 258, + "pressureVsMedian": 0.1510312271104164, + "key": "mana-tombs/tbc-batch-two-entry-22930", + "dungeonId": "mana-tombs", + "dungeonTitle": "Auchindoun: Mana-Tombs", + "boss": "Yor", + "serverEntry": 22930, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 202.95999999999998, + "partyDamage": 13321.03035087719, + "partyDamagePerSecond": 222.01717251461983, + "tankDamage": 6246.093999999999, + "randomTargetDamage": 0, + "groupwideDamage": 7074.936350877192, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 202.95999999999998, + "partyDamage": 6246.093999999999 + }, + { + "id": "double-breath-38361", + "name": "Double Breath", + "spellId": 38361, + "target": "nearby-party", + "school": "fire", + "expectedCasts": 3.1333333333333333, + "targetsPerCast": 5, + "damagePerTarget": 233.40399999999997, + "partyDamage": 3656.662666666666 + }, + { + "id": "stomp-36405", + "name": "Stomp", + "spellId": 36405, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 3.3684210526315788, + "targetsPerCast": 5, + "damagePerTarget": 202.95999999999998, + "partyDamage": 3418.273684210526 + } + ] + }, + { + "rank": 259, + "pressureVsMedian": 0.13951253611884123, + "key": "deadmines/entry-1763", + "dungeonId": "deadmines", + "dungeonTitle": "The Deadmines", + "boss": "Gilnid", + "serverEntry": 1763, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 399.84000000000003, + "partyDamage": 12305.076000000001, + "partyDamagePerSecond": 205.08460000000002, + "tankDamage": 12305.076000000001, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 399.84000000000003, + "partyDamage": 12305.076000000001 + }, + { + "id": "smart-1763-0-molten-metal", + "name": "Molten Metal", + "spellId": 5213, + "target": "random-party", + "school": "fire", + "expectedCasts": 3.825, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 260, + "pressureVsMedian": 0.13217651454690102, + "key": "blackfathom-deeps/entry-6243", + "dungeonId": "blackfathom-deeps", + "dungeonTitle": "Blackfathom Deeps", + "boss": "Gelihast", + "serverEntry": 6243, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 239.68000000000004, + "partyDamage": 11658.035200000002, + "partyDamagePerSecond": 194.3005866666667, + "tankDamage": 11658.035200000002, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 48.64, + "targetsPerCast": 1, + "damagePerTarget": 239.68000000000004, + "partyDamage": 11658.035200000002 + }, + { + "id": "smart-6243-0-net", + "name": "Net", + "spellId": 6533, + "target": "random-party", + "school": "physical", + "expectedCasts": 8.928571428571429, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 261, + "pressureVsMedian": 0.13148839335546839, + "key": "hellfire-ramparts/tbc-event-entry-17537", + "dungeonId": "hellfire-ramparts", + "dungeonTitle": "Hellfire Citadel: Ramparts", + "boss": "Vazruden", + "serverEntry": 17537, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 202.95999999999998, + "partyDamage": 11597.342564102564, + "partyDamagePerSecond": 193.28904273504273, + "tankDamage": 11597.342564102564, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 46.80769230769231, + "targetsPerCast": 1, + "damagePerTarget": 202.95999999999998, + "partyDamage": 9500.08923076923 + }, + { + "id": "revenge-19130", + "name": "Revenge", + "spellId": 19130, + "target": "primary", + "school": "physical", + "expectedCasts": 10.333333333333334, + "targetsPerCast": 1, + "damagePerTarget": 202.95999999999998, + "partyDamage": 2097.253333333333 + } + ] + }, + { + "rank": 262, + "pressureVsMedian": 0.1313059163471447, + "key": "razorfen-kraul/entry-4424", + "dungeonId": "razorfen-kraul", + "dungeonTitle": "Razorfen Kraul", + "boss": "Aggem Thorncurse", + "serverEntry": 4424, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 376.32000000000005, + "partyDamage": 11581.248000000001, + "partyDamagePerSecond": 193.02080000000004, + "tankDamage": 11581.248000000001, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 376.32000000000005, + "partyDamage": 11581.248000000001 + }, + { + "id": "smart-4424-0-summon-boar-spirit", + "name": "Summon Boar Spirit", + "spellId": 8286, + "target": "self", + "school": "physical", + "expectedCasts": 3, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 263, + "pressureVsMedian": 0.1269643311788785, + "key": "utgarde-keep/wrath-batch-three-entry-27389", + "dungeonId": "utgarde-keep", + "dungeonTitle": "Utgarde Keep", + "boss": "Dalronn the Controller (Ghost)", + "serverEntry": 27389, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 202.95999999999998, + "partyDamage": 11198.318, + "partyDamagePerSecond": 186.63863333333333, + "tankDamage": 6246.093999999999, + "randomTargetDamage": 4952.224, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 202.95999999999998, + "partyDamage": 6246.093999999999 + }, + { + "id": "shadow-bolt-43649", + "name": "Shadow Bolt", + "spellId": 43649, + "target": "random-party", + "school": "shadow", + "expectedCasts": 30.5, + "targetsPerCast": 1, + "damagePerTarget": 162.368, + "partyDamage": 4952.224 + }, + { + "id": "debilitate-43650", + "name": "Debilitate", + "spellId": 43650, + "target": "random-party", + "school": "shadow", + "expectedCasts": 8.333333333333332, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 264, + "pressureVsMedian": 0.1245647643918225, + "key": "wailing-caverns/deviate-faerie-dragon", + "dungeonId": "wailing-caverns", + "dungeonTitle": "Wailing Caverns", + "boss": "Deviate Faerie Dragon", + "serverEntry": 5912, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 357, + "partyDamage": 10986.675, + "partyDamagePerSecond": 183.11124999999998, + "tankDamage": 10986.675, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 357, + "partyDamage": 10986.675 + } + ] + }, + { + "rank": 265, + "pressureVsMedian": 0.1245647643918225, + "key": "wailing-caverns/kresh", + "dungeonId": "wailing-caverns", + "dungeonTitle": "Wailing Caverns", + "boss": "Kresh", + "serverEntry": 3653, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 357, + "partyDamage": 10986.675, + "partyDamagePerSecond": 183.11124999999998, + "tankDamage": 10986.675, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 357, + "partyDamage": 10986.675 + } + ] + }, + { + "rank": 266, + "pressureVsMedian": 0.12207300844409251, + "key": "halls-of-stone/entry-837414411", + "dungeonId": "halls-of-stone", + "dungeonTitle": "Halls of Stone", + "boss": "Tribunal of Ages", + "serverEntry": 837414411, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 192.64000000000001, + "partyDamage": 10766.900869565217, + "partyDamagePerSecond": 179.44834782608694, + "tankDamage": 5180.340869565218, + "randomTargetDamage": 0, + "groupwideDamage": 5586.5599999999995, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 26.891304347826086, + "targetsPerCast": 1, + "damagePerTarget": 192.64000000000001, + "partyDamage": 5180.340869565218 + }, + { + "id": "tribunal-glare", + "name": "Glare of the Tribunal", + "spellId": 50988, + "target": "nearby-party", + "school": "arcane", + "expectedCasts": 9.666666666666666, + "targetsPerCast": 5, + "damagePerTarget": 115.584, + "partyDamage": 5586.5599999999995 + }, + { + "id": "tribunal-dark-matter", + "name": "Dark Matter", + "spellId": 51012, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 0, + "targetsPerCast": 5, + "damagePerTarget": 211.90400000000002, + "partyDamage": 0 + }, + { + "id": "tribunal-searing-gaze", + "name": "Searing Gaze", + "spellId": 51136, + "target": "nearby-party", + "school": "fire", + "expectedCasts": 0, + "targetsPerCast": 5, + "damagePerTarget": 183.008, + "partyDamage": 0 + }, + { + "id": "tribunal-summon-protectors", + "name": "Summon Dark Rune Protectors", + "target": "self", + "school": "physical", + "expectedCasts": 1.2461538461538462, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "tribunal-summon-stormcallers", + "name": "Summon Dark Rune Stormcallers", + "target": "self", + "school": "nature", + "expectedCasts": 0, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "tribunal-summon-custodian", + "name": "Summon Iron Golem Custodian", + "target": "self", + "school": "physical", + "expectedCasts": 0, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 267, + "pressureVsMedian": 0.1178688204095291, + "key": "auchenai-crypts/tbc-batch-two-entry-18478", + "dungeonId": "auchenai-crypts", + "dungeonTitle": "Auchindoun: Auchenai Crypts", + "boss": "Avatar of the Martyred", + "serverEntry": 18478, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 202.95999999999998, + "partyDamage": 10396.089366005956, + "partyDamagePerSecond": 173.26815610009925, + "tankDamage": 10396.089366005956, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 43.81092739036664, + "targetsPerCast": 1, + "damagePerTarget": 202.95999999999998, + "partyDamage": 8891.865823148813 + }, + { + "id": "mortal-strike-16856", + "name": "Mortal Strike", + "spellId": 16856, + "target": "primary", + "school": "physical", + "expectedCasts": 3.7057142857142855, + "targetsPerCast": 1, + "damagePerTarget": 405.91999999999996, + "partyDamage": 1504.2235428571425 + }, + { + "id": "sunder-armor-16145", + "name": "Sunder Armor", + "spellId": 16145, + "target": "primary", + "school": "physical", + "expectedCasts": 5.657534246575342, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 268, + "pressureVsMedian": 0.11682789477030647, + "key": "trial-of-the-champion/wrath-event-eadric", + "dungeonId": "trial-of-the-champion", + "dungeonTitle": "Trial of the Champion", + "boss": "Eadric the Pure", + "serverEntry": 35119, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 202.95999999999998, + "partyDamage": 10304.279199999997, + "partyDamagePerSecond": 171.73798666666661, + "tankDamage": 6246.093999999999, + "randomTargetDamage": 633.2351999999998, + "groupwideDamage": 3424.95, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 202.95999999999998, + "partyDamage": 6246.093999999999 + }, + { + "id": "vengeance-66865", + "name": "Vengeance", + "spellId": 66865, + "target": "self", + "school": "holy", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "radiance-66935", + "name": "Radiance", + "spellId": 66935, + "target": "nearby-party", + "school": "holy", + "expectedCasts": 3.75, + "targetsPerCast": 5, + "damagePerTarget": 182.664, + "partyDamage": 3424.95 + }, + { + "id": "hammer-of-justice-and-righteous-66863-66867", + "name": "Hammer of Justice + Hammer of the Righteous", + "spellId": 66867, + "target": "random-party", + "school": "holy", + "expectedCasts": 2.4, + "targetsPerCast": 1, + "damagePerTarget": 263.84799999999996, + "partyDamage": 633.2351999999998 + } + ] + }, + { + "rank": 269, + "pressureVsMedian": 0.11300419931084896, + "key": "utgarde-keep/wrath-batch-three-entry-27390", + "dungeonId": "utgarde-keep", + "dungeonTitle": "Utgarde Keep", + "boss": "Skarvald the Constructor (Ghost)", + "serverEntry": 27390, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 202.95999999999998, + "partyDamage": 9967.027333333332, + "partyDamagePerSecond": 166.1171222222222, + "tankDamage": 8191.127333333332, + "randomTargetDamage": 1775.8999999999996, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 202.95999999999998, + "partyDamage": 6246.093999999999 + }, + { + "id": "charge-43651", + "name": "Charge", + "spellId": 43651, + "target": "random-party", + "school": "physical", + "expectedCasts": 8.333333333333332, + "targetsPerCast": 1, + "damagePerTarget": 213.10799999999998, + "partyDamage": 1775.8999999999996 + }, + { + "id": "stone-strike-48583", + "name": "Stone Strike", + "spellId": 48583, + "target": "primary", + "school": "physical", + "expectedCasts": 7.666666666666667, + "targetsPerCast": 1, + "damagePerTarget": 253.7, + "partyDamage": 1945.0333333333333 + } + ] + }, + { + "rank": 270, + "pressureVsMedian": 0.10018093061496076, + "key": "sethekk-halls/tbc-event-entry-23035", + "dungeonId": "sethekk-halls", + "dungeonTitle": "Auchindoun: Sethekk Halls", + "boss": "Anzu", + "serverEntry": 23035, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 202.95999999999998, + "partyDamage": 8836.00857142857, + "partyDamagePerSecond": 147.2668095238095, + "tankDamage": 8836.00857142857, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 43.535714285714285, + "targetsPerCast": 1, + "damagePerTarget": 202.95999999999998, + "partyDamage": 8836.00857142857 + }, + { + "id": "paralyzing-screech-40184", + "name": "Paralyzing Screech", + "spellId": 40184, + "target": "nearby-party", + "school": "shadow", + "expectedCasts": 3, + "targetsPerCast": 5, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "spell-bomb-40303", + "name": "Spell Bomb", + "spellId": 40303, + "target": "random-party", + "school": "physical", + "expectedCasts": 3.7160493827160495, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "cyclone-of-feathers-40321", + "name": "Cyclone of Feathers", + "spellId": 40321, + "target": "random-party", + "school": "shadow", + "expectedCasts": 3.122448979591837, + "targetsPerCast": 1, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 271, + "pressureVsMedian": 0.09848796328873582, + "key": "blackrock-spire/wow-classic-batch-three-entry-10584", + "dungeonId": "blackrock-spire", + "dungeonTitle": "Blackrock Spire", + "boss": "Urok Doomhowl", + "serverEntry": 10584, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 202.95999999999998, + "partyDamage": 8686.687999999998, + "partyDamagePerSecond": 144.7781333333333, + "tankDamage": 8686.687999999998, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 202.95999999999998, + "partyDamage": 6246.093999999999 + }, + { + "id": "rend-16509", + "name": "Rend", + "spellId": 16509, + "target": "primary", + "school": "physical", + "expectedCasts": 5.611111111111111, + "targetsPerCast": 1, + "damagePerTarget": 131.92399999999998, + "partyDamage": 740.2402222222221 + }, + { + "id": "strike-15580", + "name": "Strike", + "spellId": 15580, + "target": "primary", + "school": "physical", + "expectedCasts": 6.444444444444445, + "targetsPerCast": 1, + "damagePerTarget": 263.84799999999996, + "partyDamage": 1700.3537777777776 + }, + { + "id": "intimidating-roar-16508", + "name": "Intimidating Roar", + "spellId": 16508, + "target": "nearby-party", + "school": "physical", + "expectedCasts": 1.7647058823529411, + "targetsPerCast": 5, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + }, + { + "rank": 272, + "pressureVsMedian": 0.07081698762174872, + "key": "gnomeregan/wow-classic-batch-three-entry-7361", + "dungeonId": "gnomeregan", + "dungeonTitle": "Gnomeregan", + "boss": "Grubbis", + "serverEntry": 7361, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 202.95999999999998, + "partyDamage": 6246.093999999999, + "partyDamagePerSecond": 104.10156666666666, + "tankDamage": 6246.093999999999, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "basic-attack", + "name": "Basic Attack", + "target": "primary", + "school": "physical", + "expectedCasts": 30.775, + "targetsPerCast": 1, + "damagePerTarget": 202.95999999999998, + "partyDamage": 6246.093999999999 + } + ] + }, + { + "rank": 273, + "pressureVsMedian": 0, + "key": "slave-pens/tbc-batch-two-entry-25740", + "dungeonId": "slave-pens", + "dungeonTitle": "Coilfang: The Slave Pens", + "boss": "Ahune", + "serverEntry": 25740, + "playerLevel": 80, + "enemyLevel": 80, + "windowSeconds": 60, + "attackDamage": 202.95999999999998, + "partyDamage": 0, + "partyDamagePerSecond": 0, + "tankDamage": 0, + "randomTargetDamage": 0, + "groupwideDamage": 0, + "attacks": [ + { + "id": "ahunes-shield-45954", + "name": "Ahune's Shield", + "spellId": 45954, + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + }, + { + "id": "ahune-spanky-hands-46146", + "name": "[PH] Ahune Spanky Hands", + "spellId": 46146, + "target": "self", + "school": "physical", + "expectedCasts": 1, + "targetsPerCast": 0, + "damagePerTarget": 0, + "partyDamage": 0 + } + ] + } + ] +} diff --git a/dungeon-pipeline/WOW_BOSS_PRESSURE_REPORT.md b/dungeon-pipeline/WOW_BOSS_PRESSURE_REPORT.md new file mode 100644 index 00000000..4949914f --- /dev/null +++ b/dungeon-pipeline/WOW_BOSS_PRESSURE_REPORT.md @@ -0,0 +1,42 @@ +# WoW boss party-pressure audit + +Generated 2026-09-16T14:26:06.076Z. This is a deterministic comparison at player level 80: 5 grouped party members, 60 seconds, and live boss attack definitions. It is a pressure ceiling, not a combat-log prediction: mitigation, movement, interrupts, summons, debuff amplification, and phase uptime are excluded. + +| Rank | Boss | Dungeon | Party DPS | Tank DPS | Random DPS | Groupwide DPS | vs median | +| ---: | --- | --- | ---: | ---: | ---: | ---: | ---: | +| 1 | Herald Volazj | Ahn'kahet: The Old Kingdom | 31,269 | 25,761 | 0 | 5,508 | 21.3x | +| 2 | Ingvar the Plunderer | Utgarde Keep | 27,004 | 10,339 | 1,341 | 15,325 | 18.4x | +| 3 | Runok Wildmane | Trial of the Champion | 24,872 | 23,424 | 1,448 | 0 | 16.9x | +| 4 | Mokra the Skullcrusher | Trial of the Champion | 22,720 | 21,429 | 1,291 | 0 | 15.5x | +| 5 | Eressea Dawnsinger | Trial of the Champion | 22,222 | 20,963 | 1,259 | 0 | 15.1x | +| 6 | Exarch Maladaar | Auchindoun: Auchenai Crypts | 20,157 | 18,437 | 1,720 | 0 | 13.7x | +| 7 | Quagmirran | Coilfang: The Slave Pens | 18,337 | 7,374 | 0 | 10,963 | 12.5x | +| 8 | Aeonus | The Black Morass | 17,141 | 6,604 | 0 | 10,537 | 11.7x | +| 9 | The Prophet Tharon'ja | Drak'Tharon Keep | 16,462 | 7,357 | 0 | 9,105 | 11.2x | +| 10 | General Bjarngrim | Halls of Lightning | 16,105 | 13,186 | 0 | 2,919 | 11.0x | +| 11 | Varos Cloudstrider | The Oculus | 15,528 | 15,528 | 0 | 0 | 10.6x | +| 12 | Grand Magus Telestra | The Nexus | 14,906 | 11,396 | 0 | 3,510 | 10.1x | +| 13 | Jedoga Shadowseeker | Ahn'kahet: The Old Kingdom | 12,790 | 12,790 | 0 | 0 | 8.7x | +| 14 | Drakos the Interrogator | The Oculus | 12,261 | 5,023 | 0 | 7,238 | 8.3x | +| 15 | King Dred | Drak'Tharon Keep | 12,209 | 8,215 | 0 | 3,994 | 8.3x | +| 16 | King Ymiron | Utgarde Pinnacle | 12,061 | 12,061 | 0 | 0 | 8.2x | +| 17 | The Black Knight | Trial of the Champion | 11,803 | 11,803 | 0 | 0 | 8.0x | +| 18 | Krystallus | Halls of Stone | 11,061 | 7,326 | 0 | 3,735 | 7.5x | +| 19 | Mage-Lord Urom | The Oculus | 10,808 | 4,547 | 1,076 | 5,185 | 7.4x | +| 20 | Swamplord Musel'ek | Coilfang: The Underbog | 10,511 | 10,511 | 0 | 0 | 7.2x | +| 21 | Talon King Ikiss | Auchindoun: Sethekk Halls | 10,456 | 4,039 | 0 | 6,417 | 7.1x | +| 22 | Slad'ran | Gundrak | 10,428 | 3,248 | 0 | 7,180 | 7.1x | +| 23 | Novos the Summoner | Drak'Tharon Keep | 10,175 | 5,571 | 1,140 | 3,463 | 6.9x | +| 24 | Ley-Guardian Eregos | The Oculus | 9,739 | 6,040 | 0 | 3,699 | 6.6x | +| 25 | Gal'darah | Gundrak | 9,683 | 5,904 | 0 | 3,779 | 6.6x | +| 26 | Commander Stoutbeard | The Nexus | 9,680 | 3,662 | 1,491 | 4,527 | 6.6x | +| 27 | Forgemaster Garfrost | Pit of Saron | 9,602 | 8,939 | 663 | 0 | 6.5x | +| 28 | Murmur | Auchindoun: Shadow Labyrinth | 9,560 | 6,206 | 831 | 2,523 | 6.5x | +| 29 | Drakkari Elemental | Gundrak | 9,559 | 5,832 | 0 | 3,727 | 6.5x | +| 30 | Loken | Halls of Lightning | 9,364 | 5,746 | 0 | 3,618 | 6.4x | + +## Eck the Ferocious + +Eck ranks **97 of 273** at **3,570 raw party DPS** (**2.4x** the median). His corrected schedule contains one 2-second melee swing, Bite every 8–12 seconds, Spit every 8–12 seconds after its delayed opener, Spring every 10–24 seconds against a random party member, and a non-damaging Berserk at 90 seconds. + +The complete machine-readable ranking and per-attack breakdown are in `dungeon-pipeline/WOW_BOSS_PRESSURE_REPORT.json`. diff --git a/package-lock.json b/package-lock.json index f0d1283d..1836c7a7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "healer-man", - "version": "0.1.45", + "version": "0.1.46", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "healer-man", - "version": "0.1.45", + "version": "0.1.46", "dependencies": { "@capacitor/android": "8.4.1", "@capacitor/core": "8.4.1", diff --git a/package.json b/package.json index bc1c824e..571253ab 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "healer-man", "private": true, - "version": "0.1.45", + "version": "0.1.46", "type": "module", "scripts": { "dev": "vite --host 0.0.0.0", @@ -57,6 +57,8 @@ "dungeon:five-player:verify": "node scripts/dungeon-pipeline/verify-five-player-dungeon-imports.mjs", "dungeon:wow:audit": "vite-node scripts/dungeon-pipeline/audit-wow-dungeon-content.mjs", "dungeon:boss-effects:audit": "node scripts/dungeon-pipeline/audit-boss-spell-effects.mjs", + "dungeon:boss-pressure:audit": "vite-node scripts/dungeon-pipeline/audit-boss-party-pressure.ts", + "dungeon:routes:generate": "node scripts/dungeon-pipeline/generate-dungeon-route-candidates.mjs", "dungeon:wow:functionality:audit": "vite-node scripts/dungeon-pipeline/audit-wow-dungeon-functionality.ts", "dungeon:wow:stairs:audit": "node --max-old-space-size=8192 scripts/dungeon-pipeline/audit-wow-stairs.ts", "dungeon:wow:stairs:refresh": "node --max-old-space-size=8192 scripts/dungeon-pipeline/audit-wow-stairs.ts --write", @@ -114,6 +116,8 @@ "assets:ktx2:refresh-metadata": "node scripts/asset-pipeline/refresh-ktx2-metadata.mjs", "assets:performance:audit": "node scripts/asset-pipeline/audit-environment-performance.mjs", "balance:benchmark": "vite-node scripts/combat-benchmark/run.ts", + "balance:lab": "python scripts/balance_lab.py", + "balance:lab:playtest": "node scripts/playtest-balance-lab.cjs", "balance:smoke": "vite-node scripts/combat-benchmark/run.ts --class mage --role damage --scenario damage-single-burst --seeds 1 --duration-scale 0.2", "prebuild": "npm run loot:generate && npm run web:prepare && npm run assets:ktx2:audit && npm run assets:performance:audit", "build": "node --max-old-space-size=8192 node_modules/typescript/bin/tsc -b && node --max-old-space-size=8192 node_modules/vite/bin/vite.js build", diff --git a/release-version.json b/release-version.json index cf38d6c6..849ad41e 100644 --- a/release-version.json +++ b/release-version.json @@ -1,4 +1,4 @@ { - "versionName": "0.1.45", - "versionCode": 1045 + "versionName": "0.1.46", + "versionCode": 1046 } diff --git a/scripts/balance-lab/runtime.ts b/scripts/balance-lab/runtime.ts new file mode 100644 index 00000000..b9bcb142 --- /dev/null +++ b/scripts/balance-lab/runtime.ts @@ -0,0 +1,635 @@ +import { mkdir, readFile, writeFile } from "node:fs/promises"; +import { dirname, resolve } from "node:path"; +import { createInterface } from "node:readline"; +import { + CLASSES, + classById, + contentCategoryForClass, + type ClassId, +} from "../../src/app/characterCatalog"; +import type { ContentCategoryId } from "../../src/app/contentCategories"; +import { + abilitiesForClass, + abilityAtLevel, + isAbilityUnlocked, + preloadAbilityCatalogsForClasses, +} from "../../src/game/abilityCatalog"; +import { aiHintsForAbility } from "../../src/game/abilityRules"; +import { PLAYER_AGGRO_ID } from "../../src/game/aggro"; +import { installCombatClock } from "../../src/game/combatClock"; +import { subscribeCombatEvents } from "../../src/game/combatEvents"; +import { resetCombatSpatialProvider } from "../../src/game/combatSpatial"; +import { useCombatStore } from "../../src/game/combatStore"; +import { dungeonEnemyScaling } from "../../src/game/dungeonBossScaling"; +import { requireDungeonDefinition } from "../../src/game/dungeonRegistry"; +import { + BOSS_TESTING_CATALOG, + createBossTestingRoom, + type TestableBoss, +} from "../../src/game/bossTesting"; +import { clearMobRuntimeRegistry, setMobPosition } from "../../src/game/mobRuntimeRegistry"; +import { + advanceDungeonPartyCombat, + partyCombatRangeBand, + resetPartyRuntimeClock, +} from "../../src/game/partyRuntime"; +import { + clearPartyRuntimeRegistry, + registerPartyRuntimePosition, + updatePartyRuntimeTargetVisibility, +} from "../../src/game/partyRuntimeRegistry"; +import { + createConfiguredPartyMember, + usePartyStore, + type PartyMember, +} from "../../src/game/partyStore"; +import { specializationsForClass } from "../../src/game/specializationCatalog"; +import { BenchmarkController } from "../../src/game/benchmark/benchmarkController"; +import { + loadSelectableBenchmarkBuilds, + selectableBenchmarkBuildCatalog, +} from "../../src/game/benchmark/benchmarkBuilds"; +import type { + BenchmarkBuildDefinition, + BenchmarkScenarioDefinition, +} from "../../src/game/benchmark/benchmarkTypes"; + +type BossCategory = "all" | "wow" | "rom"; +type PartyCatalogSource = ContentCategoryId | "all"; + +interface BalanceLabConfig { + readonly schemaVersion: 1; + readonly source: ContentCategoryId; + readonly level: number; + readonly durationSeconds: number; + readonly seeds: readonly number[]; + readonly partyBuildIds: readonly string[]; + readonly activeSlot: number; + readonly bossCategory: BossCategory; + readonly bossKeys?: readonly string[]; +} + +interface MutableAbilityMetrics { + casts: number; + rawDamage: number; + effectiveDamage: number; + rawHealing: number; + effectiveHealing: number; + overheal: number; + absorbs: number; + hits: number; +} + +interface MutableMemberMetrics { + readonly slot: number; + readonly actorId: string; + readonly build: BenchmarkBuildDefinition; + damage: number; + rawDamage: number; + bossDamage: number; + healing: number; + rawHealing: number; + overheal: number; + absorbs: number; + damageTaken: number; + rawDamageTaken: number; + absorbedDamageTaken: number; + deathEvents: number; + casts: number; + minimumHealthPercent: number; + readonly abilities: Map; +} + +const scenario = (durationMs: number): BenchmarkScenarioDefinition => ({ + id: "balance-lab-boss", + version: 1, + name: "Balance lab boss", + description: "A selected five-member party against one isolated authored boss.", + family: "mechanics", + roles: ["damage", "tank", "healer"], + durationMs, + tickMs: 100, + hostileTargets: 1, + partyLayout: "melee", + attacks: [], +}); + +function argument(name: string): string | null { + const index = process.argv.indexOf(name); + return index >= 0 ? process.argv[index + 1] ?? null : null; +} + +function requiredArgument(name: string): string { + const value = argument(name); + if (!value) throw new Error(`Missing required ${name} argument.`); + return value; +} + +function safeNumber(value: unknown, fallback: number): number { + const parsed = Number(value); + return Number.isFinite(parsed) ? parsed : fallback; +} + +function classIdsForSource(source: PartyCatalogSource): readonly ClassId[] { + return CLASSES + .map((definition) => definition.id) + .filter((classId) => source === "all" || contentCategoryForClass(classId) === source); +} + +function bossCatalogRows() { + return BOSS_TESTING_CATALOG.map((boss) => ({ + key: boss.key, + name: boss.name, + dungeonId: boss.dungeonId, + dungeonTitle: boss.dungeonTitle, + category: boss.category, + })); +} + +async function writeJson(path: string, value: unknown): Promise { + const absolute = resolve(path); + await mkdir(dirname(absolute), { recursive: true }); + await writeFile(absolute, `${JSON.stringify(value, null, 2)}\n`, "utf8"); +} + +function catalogPayload(source: PartyCatalogSource, level: number) { + if (!["wow", "coa", "rom", "all"].includes(source)) throw new Error(`Unknown party source: ${source}`); + const builds = selectableBenchmarkBuildCatalog(level, classIdsForSource(source)); + return { + schemaVersion: 1, + level: builds[0]?.level ?? level, + source, + builds: builds.map((build) => ({ + id: build.id, + source: build.source, + classId: build.classId, + className: classById(build.classId).name, + role: build.role, + specialization: build.orientation, + label: `${classById(build.classId).name} — ${build.orientation} (${build.role})`, + })), + bosses: bossCatalogRows(), + }; +} + +async function writeCatalog(): Promise { + const level = Math.trunc(safeNumber(argument("--level"), 60)); + const source = (argument("--source") ?? "wow") as PartyCatalogSource; + await writeJson(requiredArgument("--output"), catalogPayload(source, level)); +} + +function selectedBosses(config: BalanceLabConfig): readonly TestableBoss[] { + const requested = new Set(config.bossKeys ?? []); + const rows = BOSS_TESTING_CATALOG.filter((boss) => ( + (config.bossCategory === "all" || boss.category === config.bossCategory) + && (!requested.size || requested.has(boss.key)) + )); + if (!rows.length) throw new Error("No bosses matched the requested boss filters."); + if (requested.size) { + const found = new Set(rows.map((boss) => boss.key)); + const missing = [...requested].filter((key) => !found.has(key)); + if (missing.length) throw new Error(`Unknown or category-excluded boss keys: ${missing.join(", ")}`); + } + return rows; +} + +function configuredCompanion( + build: BenchmarkBuildDefinition, + slot: number, + level: number, + seed: string, +): PartyMember { + const specialization = specializationsForClass(build.classId) + .find((definition) => definition.displayName === build.orientation); + return createConfiguredPartyMember({ + name: `${classById(build.classId).name} ${build.orientation}`, + classId: build.classId, + secondaryClassId: build.secondaryClassId, + specialization: build.orientation, + specializationId: specialization?.id ?? null, + talentTreeId: specialization?.id ?? "", + talentRanks: build.talentRanks, + role: build.role, + }, level, slot, seed); +} + +function blankAbility(): MutableAbilityMetrics { + return { + casts: 0, + rawDamage: 0, + effectiveDamage: 0, + rawHealing: 0, + effectiveHealing: 0, + overheal: 0, + absorbs: 0, + hits: 0, + }; +} + +function abilityMetrics(member: MutableMemberMetrics, abilityId: string | undefined): MutableAbilityMetrics { + const key = abilityId ?? "unknown"; + const existing = member.abilities.get(key); + if (existing) return existing; + const created = blankAbility(); + member.abilities.set(key, created); + return created; +} + +function currentHealth(actorId: string): readonly [number, number] { + const combat = useCombatStore.getState(); + if (actorId === PLAYER_AGGRO_ID) return [combat.health, combat.maxHealth]; + const member = usePartyStore.getState().members.find((candidate) => candidate.id === actorId); + return [member?.health ?? 0, member?.maxHealth ?? 1]; +} + +function availableAbilities(build: BenchmarkBuildDefinition) { + return abilitiesForClass(build.classId) + .filter((ability) => !ability.passive && isAbilityUnlocked(ability, build.level)) + .map((ability) => { + const learnedRank = ability.talentEntryId === undefined + ? undefined + : build.talentRanks[`coa-entry-${ability.talentEntryId}`] ?? 0; + if (ability.talentEntryId !== undefined && !learnedRank) return null; + const ranked = abilityAtLevel(ability, build.level, learnedRank); + if (ranked.effects.every((effect) => effect.kind === "unsupported" || effect.kind === "scripted")) return null; + return { + abilityId: ranked.id, + abilityName: ranked.name, + icon: ranked.icon, + categories: aiHintsForAbility(ranked).categories, + cooldownSeconds: ranked.cooldownMs / 1_000, + }; + }) + .filter((ability) => ability !== null) + .sort((left, right) => left.abilityName.localeCompare(right.abilityName)); +} + +function serializedMember( + metrics: MutableMemberMetrics, + activeSeconds: number, +) { + const [health, maxHealth] = currentHealth(metrics.actorId); + return { + slot: metrics.slot, + activePlayer: metrics.actorId === PLAYER_AGGRO_ID, + actorId: metrics.actorId, + buildId: metrics.build.id, + classId: metrics.build.classId, + className: classById(metrics.build.classId).name, + specialization: metrics.build.orientation, + role: metrics.build.role, + damage: metrics.damage, + rawDamage: metrics.rawDamage, + bossDamage: metrics.bossDamage, + dps: metrics.damage / Math.max(0.1, activeSeconds), + bossDps: metrics.bossDamage / Math.max(0.1, activeSeconds), + healing: metrics.healing, + rawHealing: metrics.rawHealing, + overheal: metrics.overheal, + hps: metrics.healing / Math.max(0.1, activeSeconds), + absorbs: metrics.absorbs, + damageTaken: metrics.damageTaken, + rawDamageTaken: metrics.rawDamageTaken, + absorbedDamageTaken: metrics.absorbedDamageTaken, + dtps: metrics.damageTaken / Math.max(0.1, activeSeconds), + deathEvents: metrics.deathEvents, + alive: health > 0, + finalHealth: health, + maxHealth, + minimumHealthPercent: metrics.minimumHealthPercent, + casts: metrics.casts, + availableAbilities: availableAbilities(metrics.build), + abilities: [...metrics.abilities.entries()] + .map(([abilityId, ability]) => ({ abilityId, ...ability })) + .sort((left, right) => right.effectiveDamage - left.effectiveDamage + || right.effectiveHealing - left.effectiveHealing + || left.abilityId.localeCompare(right.abilityId)), + }; +} + +async function runBoss( + config: BalanceLabConfig, + builds: readonly BenchmarkBuildDefinition[], + boss: TestableBoss, + seed: number, +) { + const sourceDungeon = requireDungeonDefinition(boss.dungeonId); + const testingRoom = createBossTestingRoom(sourceDungeon, boss).definition; + const entity = testingRoom.entities[boss.entityId]; + if (!entity) throw new Error(`Boss entity ${boss.key} is missing from its testing room.`); + const bossActorId = `${boss.spawn.id}:balance-${seed}`; + const activeBuild = builds[config.activeSlot]; + const durationMs = Math.max(1_000, Math.min(600_000, Math.round(config.durationSeconds * 1_000))); + const specialization = specializationsForClass(activeBuild.classId) + .find((definition) => definition.displayName === activeBuild.orientation); + const scaling = dungeonEnemyScaling( + testingRoom, + entity, + bossActorId, + activeBuild.level, + testingRoom.defaultDifficultyId, + 1, + activeBuild.source, + ); + + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + resetCombatSpatialProvider(); + let now = 1_000_000; + const restoreClock = installCombatClock(() => now); + const companions = builds + .map((build, slot) => ({ build, slot })) + .filter(({ slot }) => slot !== config.activeSlot) + .map(({ build, slot }) => configuredCompanion(build, slot, activeBuild.level, `${seed}:${boss.key}`)); + const actorIds = builds.map((_, slot) => ( + slot === config.activeSlot + ? PLAYER_AGGRO_ID + : companions.find((member) => member.id.includes(`-${slot}-`))?.id ?? "" + )); + const memberMetrics = builds.map((build, slot): MutableMemberMetrics => ({ + slot, + actorId: actorIds[slot], + build, + damage: 0, + rawDamage: 0, + bossDamage: 0, + healing: 0, + rawHealing: 0, + overheal: 0, + absorbs: 0, + damageTaken: 0, + rawDamageTaken: 0, + absorbedDamageTaken: 0, + deathEvents: 0, + casts: 0, + minimumHealthPercent: 1, + abilities: new Map(), + })); + const byActorId = new Map(memberMetrics.map((metrics) => [metrics.actorId, metrics])); + const bossAbilities = new Map(); + const stopEvents = subscribeCombatEvents((event) => { + const source = byActorId.get(event.sourceActorId); + const target = byActorId.get(event.targetActorId); + if (event.kind === "cast" && source) { + source.casts += 1; + abilityMetrics(source, event.abilityId).casts += 1; + } else if (event.kind === "damage") { + if (source && !target) { + source.rawDamage += event.rawAmount; + source.damage += event.effectiveAmount; + if (event.targetActorId === bossActorId) source.bossDamage += event.effectiveAmount; + const ability = abilityMetrics(source, event.abilityId); + ability.rawDamage += event.rawAmount; + ability.effectiveDamage += event.effectiveAmount; + ability.hits += 1; + } + if (target && !source) { + target.rawDamageTaken += event.rawAmount; + target.damageTaken += event.effectiveAmount; + target.absorbedDamageTaken += event.absorbed; + const key = event.abilityId ?? "unknown"; + const ability = bossAbilities.get(key) ?? blankAbility(); + ability.rawDamage += event.rawAmount; + ability.effectiveDamage += event.effectiveAmount; + ability.absorbs += event.absorbed; + ability.hits += 1; + bossAbilities.set(key, ability); + } + } else if (event.kind === "healing" && source) { + source.rawHealing += event.rawAmount; + source.healing += event.effectiveAmount; + source.overheal += event.overheal; + const ability = abilityMetrics(source, event.abilityId); + ability.rawHealing += event.rawAmount; + ability.effectiveHealing += event.effectiveAmount; + ability.overheal += event.overheal; + ability.hits += 1; + } else if (event.kind === "absorb" && source) { + source.absorbs += event.effectiveAmount; + abilityMetrics(source, event.abilityId).absorbs += event.effectiveAmount; + } else if (event.kind === "death" && target) { + target.deathEvents += 1; + } + }); + + let elapsedMs = 0; + let outcome: "defeated" | "wipe" | "timeout" = "timeout"; + try { + const combat = useCombatStore.getState(); + combat.initializeCharacter({ + classId: activeBuild.classId, + secondaryClassId: activeBuild.secondaryClassId, + specializationId: specialization?.id, + role: activeBuild.role, + level: activeBuild.level, + talentRanks: activeBuild.talentRanks, + inventory: activeBuild.inventory, + equipment: activeBuild.equipment, + }); + combat.setPlayerPosition([-2, 0, 0]); + usePartyStore.setState({ + seed: `${seed}:${boss.key}`, + playerRole: activeBuild.role, + partySize: 5, + categoryId: config.source, + members: companions, + command: "defend", + selectedMemberId: null, + selfSelected: false, + routeBlocked: false, + activeMobId: null, + objectiveBossId: null, + memberTargetIds: {}, + }); + combat.synchronizeActors(); + combat.registerMob(bossActorId, { + name: entity.name, + boss: true, + serverEntry: entity.combat?.serverEntry, + ...scaling, + attacks: entity.combat?.attacks, + xpReward: 0, + }); + setMobPosition(bossActorId, [0, 0, 0]); + for (const member of companions) { + registerPartyRuntimePosition(member.id, [-partyCombatRangeBand(member).preferred, 0, 0]); + updatePartyRuntimeTargetVisibility(member.id, bossActorId, true); + } + combat.selectMob(bossActorId); + const tank = memberMetrics.find((member) => member.build.role === "tank") ?? memberMetrics[0]; + combat.damageMob(bossActorId, 1, now, { + actorId: tank.actorId, + role: "tank", + abilityId: "balance-lab-pull", + }, "physical"); + const controller = new BenchmarkController(); + const runScenario = scenario(durationMs); + for (elapsedMs = 100; elapsedMs <= durationMs; elapsedMs += 100) { + now = 1_000_000 + elapsedMs; + combat.tick(0.1, now); + combat.advanceMobCombat(now); + advanceDungeonPartyCombat(now); + controller.act(now, activeBuild.role, runScenario, false); + for (const metrics of memberMetrics) { + const [health, maxHealth] = currentHealth(metrics.actorId); + metrics.minimumHealthPercent = Math.min( + metrics.minimumHealthPercent, + maxHealth > 0 ? Math.max(0, health / maxHealth) : 0, + ); + } + const state = useCombatStore.getState(); + if (state.mobs[bossActorId]?.dead) { + outcome = "defeated"; + break; + } + if (memberMetrics.every((metrics) => currentHealth(metrics.actorId)[0] <= 0)) { + outcome = "wipe"; + break; + } + } + const activeSeconds = Math.min(durationMs, elapsedMs) / 1_000; + const mob = useCombatStore.getState().mobs[bossActorId]; + const members = memberMetrics.map((metrics) => serializedMember(metrics, activeSeconds)); + const incomingDamage = members.reduce((total, member) => total + member.damageTaken, 0); + const rawIncomingDamage = members.reduce((total, member) => total + member.rawDamageTaken, 0); + const partyDamage = members.reduce((total, member) => total + member.damage, 0); + const bossDamage = members.reduce((total, member) => total + member.bossDamage, 0); + return { + bossKey: boss.key, + bossName: boss.name, + bossCategory: boss.category, + dungeonId: boss.dungeonId, + dungeonTitle: boss.dungeonTitle, + seed, + outcome, + elapsedSeconds: activeSeconds, + timeToDefeatSeconds: outcome === "defeated" ? activeSeconds : null, + bossLevel: scaling.level, + bossMaxHealth: scaling.maxHealth, + bossRemainingHealth: mob?.health ?? 0, + partyDamage, + bossDamage, + partyDps: partyDamage / Math.max(0.1, activeSeconds), + bossDpsTaken: bossDamage / Math.max(0.1, activeSeconds), + incomingDamage, + rawIncomingDamage, + incomingDtps: incomingDamage / Math.max(0.1, activeSeconds), + deaths: members.filter((member) => !member.alive).length, + deathEvents: members.reduce((total, member) => total + member.deathEvents, 0), + bossAttacks: mob?.attackRevision ?? 0, + members, + bossAbilities: [...bossAbilities.entries()] + .map(([abilityId, ability]) => ({ abilityId, ...ability })) + .sort((left, right) => right.effectiveDamage - left.effectiveDamage + || left.abilityId.localeCompare(right.abilityId)), + }; + } finally { + stopEvents(); + restoreClock(); + clearMobRuntimeRegistry(); + clearPartyRuntimeRegistry(); + resetPartyRuntimeClock(); + resetCombatSpatialProvider(); + } +} + +async function simulateConfig(config: BalanceLabConfig, output: string): Promise { + if (config.schemaVersion !== 1) throw new Error(`Unsupported config schema: ${config.schemaVersion}`); + if (config.partyBuildIds.length !== 5) throw new Error("A balance-lab party must contain exactly five builds."); + if (!Number.isInteger(config.activeSlot) || config.activeSlot < 0 || config.activeSlot >= 5) { + throw new Error("activeSlot must be an integer from 0 through 4."); + } + if (!config.seeds.length) throw new Error("At least one simulation seed is required."); + const catalog = selectableBenchmarkBuildCatalog(config.level, classIdsForSource(config.source)); + const catalogById = new Map(catalog.map((build) => [build.id, build])); + const selectedClassIds = [...new Set(config.partyBuildIds.map((id) => { + const entry = catalogById.get(id); + if (!entry) throw new Error(`Unknown ${config.source} party build: ${id}`); + return entry.classId; + }))]; + const availableBuilds = await loadSelectableBenchmarkBuilds(config.level, selectedClassIds); + const byId = new Map(availableBuilds.map((build) => [build.id, build])); + const builds = config.partyBuildIds.map((id) => { + const build = byId.get(id); + if (!build) throw new Error(`Unknown ${config.source} party build: ${id}`); + return build; + }); + await preloadAbilityCatalogsForClasses(builds.map((build) => build.classId)); + const bosses = selectedBosses(config); + const runs = []; + let completed = 0; + const total = bosses.length * config.seeds.length; + for (const boss of bosses) { + for (const seed of config.seeds) { + runs.push(await runBoss(config, builds, boss, seed)); + completed += 1; + if (completed === 1 || completed === total || completed % 10 === 0) { + process.stderr.write(`[balance-lab] ${completed}/${total} ${boss.name} seed ${seed}\n`); + } + } + } + await writeJson(output, { + schemaVersion: 1, + generatedAt: new Date().toISOString(), + engine: "live-typescript-runtime", + config: { + ...config, + level: builds[0]?.level ?? config.level, + }, + party: builds.map((build, slot) => ({ + slot, + activePlayer: slot === config.activeSlot, + buildId: build.id, + classId: build.classId, + className: classById(build.classId).name, + specialization: build.orientation, + role: build.role, + })), + bossCount: bosses.length, + runCount: runs.length, + runs, + }); +} + +async function simulate(): Promise { + const config = JSON.parse(await readFile(resolve(requiredArgument("--config")), "utf8")) as BalanceLabConfig; + await simulateConfig(config, requiredArgument("--output")); +} + +async function serveSession(): Promise { + const level = Math.trunc(safeNumber(argument("--level"), 60)); + const source = (argument("--source") ?? "wow") as PartyCatalogSource; + process.stdout.write(`${JSON.stringify(catalogPayload(source, level))}\n`); + const lines = createInterface({ input: process.stdin, crlfDelay: Infinity }); + for await (const line of lines) { + if (!line.trim()) continue; + const request = JSON.parse(line) as { + readonly close?: boolean; + readonly config?: string; + readonly output?: string; + }; + if (request.close) { + process.stdout.write(`${JSON.stringify({ ok: true, closed: true })}\n`); + lines.close(); + return; + } + if (!request.config || !request.output) throw new Error("A session simulation requires config and output paths."); + const config = JSON.parse(await readFile(resolve(request.config), "utf8")) as BalanceLabConfig; + await simulateConfig(config, request.output); + process.stdout.write(`${JSON.stringify({ ok: true })}\n`); + } +} + +async function main(): Promise { + const command = process.argv[2]; + if (command === "catalog") await writeCatalog(); + else if (command === "simulate") await simulate(); + else if (command === "session") await serveSession(); + else throw new Error("Usage: vite-node scripts/balance-lab/runtime.ts [options]"); +} + +main().catch((error) => { + console.error(error instanceof Error ? error.stack ?? error.message : error); + process.exitCode = 1; +}); diff --git a/scripts/balance_lab.py b/scripts/balance_lab.py new file mode 100644 index 00000000..fe836061 --- /dev/null +++ b/scripts/balance_lab.py @@ -0,0 +1,1291 @@ +#!/usr/bin/env python3 +"""Interactive controller and report generator for live Healer Man boss simulations.""" + +from __future__ import annotations + +import argparse +import csv +import html +import json +import math +import os +import random +import re +import statistics +import subprocess +import sys +from collections import defaultdict +from datetime import datetime +from pathlib import Path +from typing import Any, Iterable, Sequence + + +ROOT = Path(__file__).resolve().parents[1] +RUNTIME = ROOT / "scripts" / "balance-lab" / "runtime.ts" + + +def write_text(path: Path, value: str) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(value.rstrip() + "\n", encoding="utf-8", newline="\n") + + +def write_json(path: Path, value: Any) -> None: + write_text(path, json.dumps(value, indent=2, ensure_ascii=False)) + + +def vite_node_command() -> Path: + suffix = ".cmd" if os.name == "nt" else "" + executable = ROOT / "node_modules" / ".bin" / f"vite-node{suffix}" + if not executable.exists(): + raise SystemExit("vite-node is unavailable. Run 'npm install' in the HealerMan project first.") + return executable + + +class RuntimeSession: + def __init__(self, source: str, level: int, workspace: Path) -> None: + command = [ + str(vite_node_command()), + str(RUNTIME), + "session", + "--source", + source, + "--level", + str(level), + ] + self.process = subprocess.Popen( + command, + cwd=ROOT, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + text=True, + encoding="utf-8", + ) + assert self.process.stdout is not None + catalog_line = self.process.stdout.readline() + if not catalog_line: + code = self.process.wait() + raise SystemExit(code or "The live balance runtime ended before returning its catalog.") + self.catalog = json.loads(catalog_line) + write_json(workspace / "catalog.json", self.catalog) + + def simulate(self, config: Path, output: Path) -> None: + if self.process.stdin is None or self.process.stdout is None: + raise SystemExit("The live balance runtime has no input/output channel.") + request = {"config": str(config), "output": str(output)} + self.process.stdin.write(json.dumps(request, separators=(",", ":")) + "\n") + self.process.stdin.flush() + response_line = self.process.stdout.readline() + code = self.process.poll() + if code: + raise SystemExit(code) + if not response_line or not json.loads(response_line).get("ok"): + raise SystemExit("The live balance runtime did not confirm completion.") + + def close(self) -> None: + if self.process.poll() is not None: + return + if self.process.stdin is not None and self.process.stdout is not None: + try: + self.process.stdin.write('{"close":true}\n') + self.process.stdin.flush() + self.process.stdout.readline() + except (BrokenPipeError, OSError): + pass + self.process.stdin.close() + try: + self.process.wait(timeout=5) + except subprocess.TimeoutExpired: + self.process.terminate() + self.process.wait(timeout=5) + + +def normalized(value: str) -> str: + return "".join(character for character in value.casefold() if character.isalnum()) + + +def console_text(value: str) -> str: + return value.replace("—", "-").replace("…", "...").replace("×", "x") + + +def build_aliases(build: dict[str, Any]) -> set[str]: + class_id = build["classId"] + class_name = build["className"] + role = build["role"] + specialization = build["specialization"] + return { + normalized(build["id"]), + normalized(f"{class_id}:{specialization}"), + normalized(f"{class_name}:{specialization}"), + normalized(f"{class_id}:{role}:{specialization}"), + normalized(f"{class_name}:{role}:{specialization}"), + normalized(build["label"]), + } + + +def resolve_build(selector: str, builds: Sequence[dict[str, Any]]) -> dict[str, Any]: + needle = normalized(selector) + matches = [build for build in builds if needle in build_aliases(build)] + if len(matches) == 1: + return matches[0] + if not matches: + raise SystemExit(f"No party member matches '{selector}'. Use --list-members to see valid choices.") + labels = ", ".join(match["label"] for match in matches) + raise SystemExit(f"Party member selector '{selector}' is ambiguous: {labels}") + + +def resolve_boss(selector: str, bosses: Sequence[dict[str, Any]]) -> dict[str, Any]: + needle = normalized(selector) + matches = [boss for boss in bosses if needle in { + normalized(boss["key"]), + normalized(boss["name"]), + normalized(f"{boss['dungeonTitle']}:{boss['name']}"), + }] + if len(matches) == 1: + return matches[0] + if not matches: + raise SystemExit(f"No boss matches '{selector}'. Use --list-bosses to see valid keys.") + labels = ", ".join(f"{match['key']} ({match['name']})" for match in matches) + raise SystemExit(f"Boss selector '{selector}' is ambiguous: {labels}") + + +def random_party(builds: Sequence[dict[str, Any]], seed: int) -> list[dict[str, Any]]: + generator = random.Random(seed) + by_role: dict[str, list[dict[str, Any]]] = defaultdict(list) + for build in builds: + by_role[build["role"]].append(build) + if not by_role["tank"] or not by_role["healer"] or len(by_role["damage"]) < 3: + raise SystemExit("This source does not expose enough tank, healer, and damage builds for a 1/1/3 party.") + damage = generator.sample(by_role["damage"], 3) + return [generator.choice(by_role["tank"]), generator.choice(by_role["healer"]), *damage] + + +def automatic_parties( + builds: Sequence[dict[str, Any]], + sources: Sequence[str], + configurations_per_source: int, + seed: int, +) -> list[dict[str, Any]]: + offsets = {"wow": 100_000, "coa": 200_000, "rom": 300_000} + configurations: list[dict[str, Any]] = [] + for source in sources: + source_builds = [build for build in builds if build["source"] == source] + seen: set[tuple[str, str, tuple[str, ...]]] = set() + attempts = 0 + while len(seen) < configurations_per_source: + attempts += 1 + if attempts > max(1_000, configurations_per_source * 100): + raise SystemExit( + f"Could not generate {configurations_per_source} unique {source} parties. " + "Request fewer party configurations." + ) + party = random_party(source_builds, seed + offsets[source] + attempts - 1) + signature = (party[0]["id"], party[1]["id"], tuple(sorted(member["id"] for member in party[2:]))) + if signature in seen: + continue + seen.add(signature) + configurations.append({ + "id": f"{source}-party-{len(seen):03d}", + "source": source, + "party": party, + "activeSlot": next( + (index for index, member in enumerate(party) if member["role"] == "healer"), + 0, + ), + }) + return configurations + + +def search_bosses(query: str, bosses: Sequence[dict[str, Any]]) -> list[dict[str, Any]]: + needle = normalized(query) + return [boss for boss in bosses if needle in normalized( + f"{boss['key']} {boss['name']} {boss['dungeonTitle']} {boss['category']}" + )] + + +def parse_seeds(value: str) -> list[int]: + try: + seeds = [int(entry.strip()) for entry in value.split(",") if entry.strip()] + except ValueError as error: + raise argparse.ArgumentTypeError("seeds must be comma-separated integers") from error + if not seeds: + raise argparse.ArgumentTypeError("at least one seed is required") + return seeds + + +def prompt_choice(prompt: str, options: Sequence[str], default: str) -> str: + rendered = "/".join(options) + while True: + value = input(f"{prompt} [{rendered}] ({default}): ").strip().lower() or default + if value in options: + return value + print(f"Choose one of: {', '.join(options)}") + + +def prompt_integer(prompt: str, default: int, minimum: int, maximum: int) -> int: + while True: + raw = input(f"{prompt} ({default}): ").strip() + if not raw: + return default + try: + value = int(raw) + except ValueError: + print("Enter a whole number.") + continue + if minimum <= value <= maximum: + return value + print(f"Enter a value from {minimum} through {maximum}.") + + +def prompt_specific_bosses(bosses: Sequence[dict[str, Any]]) -> list[str]: + selected: dict[str, dict[str, Any]] = {} + print("\nBoss picker: search by boss, dungeon, key, or source. Add selections across multiple searches.") + while True: + suffix = f" ({len(selected)} selected; type 'done' to finish)" if selected else "" + query = input(f"Boss search{suffix}: ").strip() + if query.casefold() == "done": + if selected: + return list(selected) + print("Select at least one boss first.") + continue + matches = search_bosses(query, bosses) + if not matches: + print("No bosses matched that search.") + continue + if len(matches) > 50: + print(f"{len(matches)} bosses matched. Use a more specific search (50 maximum per result page).") + continue + for index, boss in enumerate(matches, 1): + marker = " [selected]" if boss["key"] in selected else "" + print(f" {index:>2}. {boss['dungeonTitle']} - {boss['name']} ({boss['category']}){marker}") + raw = input("Add numbers separated by commas, or 'all': ").strip().casefold() + if raw == "all": + indexes = list(range(len(matches))) + else: + try: + indexes = [int(entry.strip()) - 1 for entry in raw.split(",") if entry.strip()] + except ValueError: + indexes = [] + if not indexes or any(index < 0 or index >= len(matches) for index in indexes): + print("Choose valid result numbers.") + continue + for index in indexes: + selected[matches[index]["key"]] = matches[index] + print(f"Selected bosses: {len(selected)}") + + +def interactive_arguments( + args: argparse.Namespace, + workspace: Path, +) -> tuple[argparse.Namespace, dict[str, Any], RuntimeSession]: + print("Healer Man Balance Lab") + print("The Python controller uses the game's live TypeScript combat runtime; it does not duplicate combat formulas.") + args.party_mode = prompt_choice("Party selection", ("random", "manual", "automatic"), "automatic") + source_options = ("wow", "coa", "rom", "all") if args.party_mode == "automatic" else ("wow", "coa", "rom") + args.source = prompt_choice("Party source", source_options, "all" if args.party_mode == "automatic" else "wow") + args.level = prompt_integer("Party level", 60, 1, 80) + session = RuntimeSession(args.source, args.level, workspace) + catalog = session.catalog + if args.party_mode == "random": + args.party_seed = prompt_integer("Random party seed", 1, -2_147_483_648, 2_147_483_647) + elif args.party_mode == "automatic": + args.party_configurations = prompt_integer("Unique party configurations per source", 10, 1, 1_000) + args.party_seed = prompt_integer("Automatic party seed", 1, -2_147_483_648, 2_147_483_647) + else: + print("\nAvailable members:") + for index, build in enumerate(catalog["builds"], 1): + print(f" {index:>3}. {console_text(build['label'])}") + while True: + raw = input("Pick exactly five numbers, comma-separated: ").strip() + try: + indexes = [int(entry.strip()) - 1 for entry in raw.split(",") if entry.strip()] + except ValueError: + indexes = [] + if len(indexes) == 5 and all(0 <= index < len(catalog["builds"]) for index in indexes): + args.member = [catalog["builds"][index]["id"] for index in indexes] + break + print("Choose exactly five valid list numbers.") + boss_scope = prompt_choice("Boss selection", ("all", "wow", "rom", "specific"), "all") + if boss_scope == "specific": + args.boss = prompt_specific_bosses(catalog["bosses"]) + args.boss_category = "all" + else: + args.boss_category = boss_scope + repetitions = prompt_integer("Simulations per party configuration (for each selected boss)", 3, 1, 100) + args.simulations_per_party = repetitions + args.seeds = list(range(1, repetitions + 1)) + args.duration = prompt_integer("Maximum seconds per fight", 60, 5, 600) + return args, catalog, session + + +def weighted_rate(rows: Iterable[dict[str, Any]], amount: str) -> float: + materialized = list(rows) + seconds = sum(float(row["elapsedSeconds"]) for row in materialized) + return sum(float(row[amount]) for row in materialized) / max(0.1, seconds) + + +def mean(values: Iterable[float]) -> float: + materialized = list(values) + return sum(materialized) / len(materialized) if materialized else 0.0 + + +def tuning_label(ratio: float | None) -> str: + if ratio is None or not math.isfinite(ratio): + return "no baseline" + if ratio >= 1.5: + return "very high" + if ratio >= 1.25: + return "high" + if ratio <= 0.5: + return "very low" + if ratio <= 0.75: + return "low" + return "baseline" + + +def aggregate_boss_runs(runs: Sequence[dict[str, Any]]) -> tuple[list[dict[str, Any]], float]: + by_boss: dict[str, list[dict[str, Any]]] = defaultdict(list) + for run in runs: + by_boss[run["bossKey"]].append(run) + bosses = [] + for boss_runs in by_boss.values(): + first = boss_runs[0] + defeated = [run for run in boss_runs if run["outcome"] == "defeated"] + bosses.append({ + "bossKey": first["bossKey"], + "bossName": first["bossName"], + "category": first["bossCategory"], + "dungeonId": first["dungeonId"], + "dungeonTitle": first["dungeonTitle"], + "runs": len(boss_runs), + "incomingDtps": weighted_rate(boss_runs, "incomingDamage"), + "averageIncomingDamage": mean(run["incomingDamage"] for run in boss_runs), + "partyDps": weighted_rate(boss_runs, "partyDamage"), + "bossDpsTaken": weighted_rate(boss_runs, "bossDamage"), + "defeatRate": len(defeated) / len(boss_runs), + "wipeRate": sum(run["outcome"] == "wipe" for run in boss_runs) / len(boss_runs), + "averageDeaths": mean(run["deaths"] for run in boss_runs), + "averageTimeToDefeat": mean(run["timeToDefeatSeconds"] for run in defeated) if defeated else None, + "bossMaxHealth": mean(run["bossMaxHealth"] for run in boss_runs), + }) + nonzero_pressure = [boss["incomingDtps"] for boss in bosses if boss["incomingDtps"] > 0] + pressure_median = statistics.median(nonzero_pressure) if nonzero_pressure else 0.0 + for boss in bosses: + ratio = boss["incomingDtps"] / pressure_median if pressure_median > 0 else None + boss["pressureVsMedian"] = ratio + boss["pressureFlag"] = tuning_label(ratio) + bosses.sort(key=lambda row: (-row["incomingDtps"], row["bossName"], row["dungeonTitle"])) + return bosses, pressure_median + + +def aggregate(raw: dict[str, Any]) -> dict[str, Any]: + runs: list[dict[str, Any]] = raw["runs"] + by_slot: dict[int, list[dict[str, Any]]] = defaultdict(list) + by_member_boss: dict[tuple[int, str], list[dict[str, Any]]] = defaultdict(list) + for run in runs: + for member in run["members"]: + enriched = {**member, "elapsedSeconds": run["elapsedSeconds"], "bossKey": run["bossKey"]} + by_slot[int(member["slot"])].append(enriched) + by_member_boss[(int(member["slot"]), run["bossKey"])].append(enriched) + + bosses, pressure_median = aggregate_boss_runs(runs) + + members = [] + for slot, rows in by_slot.items(): + first = rows[0] + members.append({ + "slot": slot + 1, + "activePlayer": first["activePlayer"], + "classId": first["classId"], + "className": first["className"], + "specialization": first["specialization"], + "role": first["role"], + "dps": weighted_rate(rows, "damage"), + "bossDps": weighted_rate(rows, "bossDamage"), + "hps": weighted_rate(rows, "healing"), + "dtps": weighted_rate(rows, "damageTaken"), + "totalDamage": sum(row["damage"] for row in rows), + "totalHealing": sum(row["healing"] for row in rows), + "totalAbsorbs": sum(row["absorbs"] for row in rows), + "deathEvents": sum(row["deathEvents"] for row in rows), + "minimumHealthPercent": min(row["minimumHealthPercent"] for row in rows), + }) + role_medians = { + role: statistics.median(member["dps"] for member in members if member["role"] == role) + for role in {member["role"] for member in members} + } + for member in members: + baseline = role_medians[member["role"]] + ratio = member["dps"] / baseline if baseline > 0 else None + member["damageVsRoleMedian"] = ratio + member["damageFlag"] = tuning_label(ratio) + members.sort(key=lambda row: (-row["dps"], row["slot"])) + + member_boss = [] + for (slot, boss_key), rows in by_member_boss.items(): + first = rows[0] + boss = next(run for run in runs if run["bossKey"] == boss_key) + member_boss.append({ + "bossKey": boss_key, + "bossName": boss["bossName"], + "dungeonTitle": boss["dungeonTitle"], + "slot": slot + 1, + "className": first["className"], + "specialization": first["specialization"], + "role": first["role"], + "dps": weighted_rate(rows, "damage"), + "bossDps": weighted_rate(rows, "bossDamage"), + "hps": weighted_rate(rows, "healing"), + "dtps": weighted_rate(rows, "damageTaken"), + "deathEvents": sum(row["deathEvents"] for row in rows), + }) + member_boss.sort(key=lambda row: (row["bossName"], row["dungeonTitle"], row["slot"])) + return { + "schemaVersion": 1, + "generatedAt": raw["generatedAt"], + "engine": raw["engine"], + "config": raw["config"], + "party": raw["party"], + "summary": { + "bosses": len(bosses), + "runs": len(runs), + "bossPressureMedianDtps": pressure_median, + }, + "bosses": bosses, + "members": members, + "memberByBoss": member_boss, + } + + +def format_number(value: Any, digits: int = 1) -> str: + if value is None: + return "—" + return f"{float(value):,.{digits}f}" + + +def format_ratio(value: Any) -> str: + return "—" if value is None else f"{format_number(value, 2)}×" + + +def write_csv(path: Path, rows: Sequence[dict[str, Any]], fields: Sequence[str]) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + with path.open("w", encoding="utf-8", newline="") as stream: + writer = csv.DictWriter(stream, fieldnames=fields, extrasaction="ignore", lineterminator="\n") + writer.writeheader() + writer.writerows(rows) + + +def flattened_abilities(raw: dict[str, Any], key: str) -> list[dict[str, Any]]: + rows = [] + for run in raw["runs"]: + if key == "members": + for member in run["members"]: + for ability in member["abilities"]: + rows.append({ + "bossKey": run["bossKey"], + "bossName": run["bossName"], + "seed": run["seed"], + "slot": member["slot"] + 1, + "className": member["className"], + "specialization": member["specialization"], + **ability, + }) + else: + for ability in run["bossAbilities"]: + rows.append({ + "bossKey": run["bossKey"], + "bossName": run["bossName"], + "dungeonTitle": run["dungeonTitle"], + "seed": run["seed"], + **ability, + }) + return rows + + +def markdown_report(report: dict[str, Any]) -> str: + config = report["config"] + lines = [ + "# Healer Man balance-lab report", + "", + f"Generated: {report['generatedAt']}", + "", + f"Party source: **{config['source']}** · level **{config['level']}** · " + f"{report['summary']['bosses']} bosses · {report['summary']['runs']} simulations", + "", + "Pressure flags compare each boss's effective party DTPS with the non-zero median for this exact party. " + "Damage flags compare a member only with other selected members in the same role.", + "", + "## Every party member", + "", + "| Slot | Member | Role | DPS | Boss DPS | HPS | DTPS | Role median | Flag | Death events |", + "| ---: | --- | --- | ---: | ---: | ---: | ---: | ---: | --- | ---: |", + ] + for member in report["members"]: + marker = " (active)" if member["activePlayer"] else "" + lines.append( + f"| {member['slot']} | {member['className']} — {member['specialization']}{marker} | " + f"{member['role']} | {format_number(member['dps'])} | {format_number(member['bossDps'])} | " + f"{format_number(member['hps'])} | {format_number(member['dtps'])} | " + f"{format_ratio(member['damageVsRoleMedian'])} | {member['damageFlag']} | {member['deathEvents']} |" + ) + lines.extend([ + "", + "## Every boss, highest party pressure first", + "", + "| Boss | Dungeon | Source | DTPS | Median | Flag | Avg total damage | Party DPS | Defeat | Wipe | Avg deaths | Avg TTK |", + "| --- | --- | --- | ---: | ---: | --- | ---: | ---: | ---: | ---: | ---: | ---: |", + ]) + for boss in report["bosses"]: + lines.append( + f"| {boss['bossName']} | {boss['dungeonTitle']} | {boss['category']} | " + f"{format_number(boss['incomingDtps'])} | {format_ratio(boss['pressureVsMedian'])} | " + f"{boss['pressureFlag']} | {format_number(boss['averageIncomingDamage'])} | " + f"{format_number(boss['partyDps'])} | {format_number(boss['defeatRate'] * 100, 0)}% | " + f"{format_number(boss['wipeRate'] * 100, 0)}% | {format_number(boss['averageDeaths'], 2)} | " + f"{format_number(boss['averageTimeToDefeat'])} |" + ) + lines.extend([ + "", + "## Reading the results", + "", + "- `incomingDtps` measures effective damage received by all five members per active fight second, including adds.", + "- `averageIncomingDamage` includes fight length, so it exposes healer workload that DTPS alone can hide.", + "- `partyDps` includes boss and add damage; `bossDps` excludes add damage.", + "- A flag is a screening signal, not an automatic balance verdict. Confirm outliers with the per-boss, ability, wipe, and TTK CSVs.", + "- Headless runs execute combat and authored attack effects, but do not render visual/audio effects or mount scene-only encounter objects.", + ]) + return "\n".join(lines) + + +def html_table(identifier: str, title: str, rows: Sequence[dict[str, Any]], columns: Sequence[tuple[str, str]]) -> str: + headers = "".join(f"{html.escape(label)}" for index, (_, label) in enumerate(columns)) + body = [] + for row in rows: + cells = "".join(f"{html.escape(str(row.get(field, '')))}" for field, _ in columns) + body.append(f"{cells}") + return ( + f"

{html.escape(title)}

" + f"" + f"
{headers}" + f"{''.join(body)}
" + ) + + +def html_report(report: dict[str, Any]) -> str: + bosses = [{ + **row, + "incomingDtps": format_number(row["incomingDtps"]), + "pressureVsMedian": format_number(row["pressureVsMedian"], 2), + "averageIncomingDamage": format_number(row["averageIncomingDamage"]), + "partyDps": format_number(row["partyDps"]), + "defeatRate": format_number(row["defeatRate"] * 100, 0) + "%", + "wipeRate": format_number(row["wipeRate"] * 100, 0) + "%", + "averageDeaths": format_number(row["averageDeaths"], 2), + "averageTimeToDefeat": format_number(row["averageTimeToDefeat"]), + } for row in report["bosses"]] + members = [{ + **row, + "member": f"{row['className']} — {row['specialization']}", + "dps": format_number(row["dps"]), + "bossDps": format_number(row["bossDps"]), + "hps": format_number(row["hps"]), + "dtps": format_number(row["dtps"]), + "damageVsRoleMedian": format_number(row["damageVsRoleMedian"], 2), + } for row in report["members"]] + member_table = html_table("members", "Every party member", members, ( + ("slot", "Slot"), ("member", "Member"), ("role", "Role"), ("dps", "DPS"), + ("bossDps", "Boss DPS"), ("hps", "HPS"), ("dtps", "DTPS"), + ("damageVsRoleMedian", "Role median ×"), ("damageFlag", "Flag"), ("deathEvents", "Death events"), + )) + boss_table = html_table("bosses", "Every boss — highest pressure first", bosses, ( + ("bossName", "Boss"), ("dungeonTitle", "Dungeon"), ("category", "Source"), + ("incomingDtps", "Party DTPS"), ("pressureVsMedian", "Median ×"), ("pressureFlag", "Flag"), + ("averageIncomingDamage", "Avg total damage"), ("partyDps", "Party DPS"), + ("defeatRate", "Defeat"), ("wipeRate", "Wipe"), ("averageDeaths", "Avg deaths"), + ("averageTimeToDefeat", "Avg TTK"), + )) + return f""" + +Healer Man Balance Lab

Healer Man Balance Lab

+

{html.escape(report['generatedAt'])} · level {report['config']['level']} {html.escape(report['config']['source'])} party · {report['summary']['bosses']} bosses · {report['summary']['runs']} simulations. Click a heading to sort; filter boxes keep every row accessible.

+{member_table}{boss_table} +""" + + +def create_reports(raw_path: Path, output_dir: Path) -> dict[str, Any]: + raw = json.loads(raw_path.read_text(encoding="utf-8")) + report = aggregate(raw) + write_json(output_dir / "report.json", report) + write_text(output_dir / "report.md", markdown_report(report)) + write_text(output_dir / "report.html", html_report(report)) + write_csv(output_dir / "bosses.csv", report["bosses"], ( + "bossKey", "bossName", "category", "dungeonId", "dungeonTitle", "runs", "incomingDtps", + "pressureVsMedian", "pressureFlag", "averageIncomingDamage", "partyDps", "bossDpsTaken", + "defeatRate", "wipeRate", "averageDeaths", "averageTimeToDefeat", "bossMaxHealth", + )) + write_csv(output_dir / "party_members.csv", report["members"], ( + "slot", "activePlayer", "classId", "className", "specialization", "role", "dps", "bossDps", + "hps", "dtps", "damageVsRoleMedian", "damageFlag", "totalDamage", "totalHealing", + "totalAbsorbs", "deathEvents", "minimumHealthPercent", + )) + write_csv(output_dir / "member_by_boss.csv", report["memberByBoss"], ( + "bossKey", "bossName", "dungeonTitle", "slot", "className", "specialization", "role", + "dps", "bossDps", "hps", "dtps", "deathEvents", + )) + run_rows = [{key: value for key, value in run.items() if key not in {"members", "bossAbilities"}} for run in raw["runs"]] + write_csv(output_dir / "runs.csv", run_rows, ( + "bossKey", "bossName", "bossCategory", "dungeonId", "dungeonTitle", "seed", "outcome", + "elapsedSeconds", "timeToDefeatSeconds", "bossLevel", "bossMaxHealth", "bossRemainingHealth", + "partyDamage", "bossDamage", "partyDps", "bossDpsTaken", "incomingDamage", "rawIncomingDamage", + "incomingDtps", "deaths", "deathEvents", "bossAttacks", + )) + member_abilities = flattened_abilities(raw, "members") + write_csv(output_dir / "member_abilities.csv", member_abilities, ( + "bossKey", "bossName", "seed", "slot", "className", "specialization", "abilityId", "casts", + "rawDamage", "effectiveDamage", "rawHealing", "effectiveHealing", "overheal", "absorbs", "hits", + )) + boss_abilities = flattened_abilities(raw, "bosses") + write_csv(output_dir / "boss_abilities.csv", boss_abilities, ( + "bossKey", "bossName", "dungeonTitle", "seed", "abilityId", "casts", "rawDamage", + "effectiveDamage", "rawHealing", "effectiveHealing", "overheal", "absorbs", "hits", + )) + return report + + +def aggregate_class_specs( + groups: dict[tuple[str, ...], list[dict[str, Any]]], +) -> list[dict[str, Any]]: + rows = [] + for key, observations in groups.items(): + source, build_id, class_id, class_name, specialization, role = key + rows.append({ + "source": source, + "buildId": build_id, + "classId": class_id, + "className": class_name, + "specialization": specialization, + "role": role, + "partyConfigurations": len({row["partyConfigurationId"] for row in observations}), + "runs": len(observations), + "dps": weighted_rate(observations, "damage"), + "bossDps": weighted_rate(observations, "bossDamage"), + "hps": weighted_rate(observations, "healing"), + "dtps": weighted_rate(observations, "damageTaken"), + "totalDamage": sum(row["damage"] for row in observations), + "totalDamageTaken": sum(row["damageTaken"] for row in observations), + "totalHealing": sum(row["healing"] for row in observations), + "totalAbsorbs": sum(row["absorbs"] for row in observations), + "deathEvents": sum(row["deathEvents"] for row in observations), + }) + baselines = { + (source, role): statistics.median( + row["dps"] for row in rows if row["source"] == source and row["role"] == role + ) + for source, role in {(row["source"], row["role"]) for row in rows} + } + for row in rows: + baseline = baselines[(row["source"], row["role"])] + ratio = row["dps"] / baseline if baseline > 0 else None + row["damageVsSourceRoleMedian"] = ratio + row["damageFlag"] = tuning_label(ratio) + rows.sort(key=lambda row: (row["source"], row["role"], -row["dps"], row["className"], row["specialization"])) + return rows + + +def humanize_ability_id(ability_id: str) -> str: + if ability_id == "party-auto-attack": + return "Auto Attack" + if ability_id == "unknown": + return "Unknown effect" + words = re.sub(r"^(?:wow335|coa|rom)-", "", ability_id) + words = re.sub(r"^[a-z]+-", "", words) + words = re.sub(r"(?:-\d+)+$", "", words) + return " ".join(word.capitalize() for word in words.split("-") if word) or ability_id + + +def aggregate_class_abilities( + groups: dict[tuple[str, ...], list[dict[str, Any]]], + class_groups: dict[tuple[str, ...], list[dict[str, Any]]], +) -> list[dict[str, Any]]: + rows = [] + for key, observations in groups.items(): + source, build_id, class_id, class_name, specialization, role, ability_id = key + class_observations = class_groups[(source, build_id, class_id, class_name, specialization, role)] + elapsed_seconds = sum(float(row["elapsedSeconds"]) for row in class_observations) + effective_damage = sum(float(row["effectiveDamage"]) for row in observations) + hits = sum(int(row["hits"]) for row in observations) + casts = sum(int(row["casts"]) for row in observations) + active_runs = sum(bool(row["used"]) for row in observations) + available_runs = sum(bool(row["available"]) for row in observations) + class_damage = sum(float(row["damage"]) for row in class_observations) + metadata = next((row for row in observations if row["available"]), observations[0]) + effective_healing = sum(float(row["effectiveHealing"]) for row in observations) + absorbs = sum(float(row["absorbs"]) for row in observations) + if active_runs == 0 and available_runs > 0: + status = "unused" + elif effective_damage > 0: + status = "damage" + elif effective_healing > 0 or absorbs > 0: + status = "support" + else: + status = "used" + rows.append({ + "source": source, + "buildId": build_id, + "classId": class_id, + "className": class_name, + "specialization": specialization, + "role": role, + "abilityId": ability_id, + "abilityName": metadata.get("abilityName") or humanize_ability_id(ability_id), + "icon": metadata.get("icon") or "", + "categories": ", ".join(metadata.get("categories") or []), + "cooldownSeconds": metadata.get("cooldownSeconds"), + "partyConfigurations": len({row["partyConfigurationId"] for row in class_observations}), + "bosses": len({row["bossKey"] for row in class_observations}), + "runs": len(class_observations), + "availableRuns": available_runs, + "activeRuns": active_runs, + "usageRate": active_runs / len(class_observations) if class_observations else 0, + "casts": casts, + "castsPerMinute": casts / max(0.1, elapsed_seconds) * 60, + "hits": hits, + "hitsPerRun": hits / len(class_observations) if class_observations else 0, + "rawDamage": sum(float(row["rawDamage"]) for row in observations), + "effectiveDamage": effective_damage, + "dps": effective_damage / max(0.1, elapsed_seconds), + "damageShare": effective_damage / class_damage if class_damage > 0 else 0, + "averageDamagePerHit": effective_damage / hits if hits > 0 else 0, + "rawHealing": sum(float(row["rawHealing"]) for row in observations), + "effectiveHealing": effective_healing, + "overheal": sum(float(row["overheal"]) for row in observations), + "absorbs": absorbs, + "status": status, + "unusedAvailable": status == "unused" and available_runs > 0, + }) + rows.sort(key=lambda row: ( + row["source"], row["className"], row["specialization"], + row["unusedAvailable"], -row["effectiveDamage"], row["abilityName"], + )) + return rows + + +def suite_markdown(report: dict[str, Any]) -> str: + summary = report["summary"] + lines = [ + "# Healer Man automatic balance suite", + "", + f"Generated: {report['generatedAt']}", + "", + f"**{summary['partyConfigurations']} party configurations**, **{summary['bosses']} bosses**, " + f"and **{summary['runs']} simulations** at level **{report['level']}**.", + "", + "Each configuration has a complete report under `parties//`. The suite tables retain every " + "tested configuration, class/spec, and boss.", + "", + "## Every tested class/spec", + "", + "| Source | Class/spec | Role | Parties | Runs | DPS | Boss DPS | HPS | DTPS | Total taken | Role median | Flag | Deaths |", + "| --- | --- | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | --- | ---: |", + ] + for row in report["classSpecs"]: + lines.append( + f"| {row['source']} | {row['className']} — {row['specialization']} | {row['role']} | " + f"{row['partyConfigurations']} | {row['runs']} | {format_number(row['dps'])} | " + f"{format_number(row['bossDps'])} | {format_number(row['hps'])} | {format_number(row['dtps'])} | " + f"{format_number(row['totalDamageTaken'])} | " + f"{format_ratio(row['damageVsSourceRoleMedian'])} | {row['damageFlag']} | {row['deathEvents']} |" + ) + lines.extend([ + "", + "## Every class/spec ability", + "", + "Available abilities with no observed cast, hit, damage, healing, or absorb event are retained as `unused`.", + "", + "| Source | Class/spec | Ability | AI category | Status | Active runs | Casts | Hits | Effective damage | DPS | Damage share | Healing | Overheal | Absorbs |", + "| --- | --- | --- | --- | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |", + ]) + for row in report["classAbilities"]: + lines.append( + f"| {row['source']} | {row['className']} — {row['specialization']} | " + f"{row['abilityName']} (`{row['abilityId']}`) | {row['categories'] or '—'} | {row['status']} | " + f"{row['activeRuns']}/{row['runs']} | {row['casts']} | {row['hits']} | " + f"{format_number(row['effectiveDamage'])} | {format_number(row['dps'])} | " + f"{format_number(row['damageShare'] * 100, 1)}% | {format_number(row['effectiveHealing'])} | " + f"{format_number(row['overheal'])} | {format_number(row['absorbs'])} |" + ) + lines.extend([ + "", + "## Every party configuration", + "", + "| Party | Source | Members | Runs | Party DPS | DTPS | Defeat | Wipe | Avg deaths | Report |", + "| --- | --- | --- | ---: | ---: | ---: | ---: | ---: | ---: | --- |", + ]) + for row in report["partyConfigurations"]: + lines.append( + f"| {row['partyConfigurationId']} | {row['source']} | {row['members']} | {row['runs']} | " + f"{format_number(row['partyDps'])} | {format_number(row['incomingDtps'])} | " + f"{format_number(row['defeatRate'] * 100, 0)}% | {format_number(row['wipeRate'] * 100, 0)}% | " + f"{format_number(row['averageDeaths'], 2)} | {row['reportPath']} |" + ) + lines.extend([ + "", + "## Every boss across all parties", + "", + "| Boss | Dungeon | Source | Runs | DTPS | Median | Flag | Avg total damage | Party DPS | Defeat | Wipe | Avg deaths |", + "| --- | --- | --- | ---: | ---: | ---: | --- | ---: | ---: | ---: | ---: | ---: |", + ]) + for row in report["bosses"]: + lines.append( + f"| {row['bossName']} | {row['dungeonTitle']} | {row['category']} | {row['runs']} | " + f"{format_number(row['incomingDtps'])} | {format_ratio(row['pressureVsMedian'])} | " + f"{row['pressureFlag']} | {format_number(row['averageIncomingDamage'])} | " + f"{format_number(row['partyDps'])} | {format_number(row['defeatRate'] * 100, 0)}% | " + f"{format_number(row['wipeRate'] * 100, 0)}% | {format_number(row['averageDeaths'], 2)} |" + ) + return "\n".join(lines) + + +def suite_html(report: dict[str, Any]) -> str: + class_specs = [{ + **row, + "classSpec": f"{row['className']} — {row['specialization']}", + "dps": format_number(row["dps"]), + "bossDps": format_number(row["bossDps"]), + "hps": format_number(row["hps"]), + "dtps": format_number(row["dtps"]), + "totalDamageTaken": format_number(row["totalDamageTaken"]), + "damageVsSourceRoleMedian": format_ratio(row["damageVsSourceRoleMedian"]), + } for row in report["classSpecs"]] + class_abilities = [{ + **row, + "classSpec": f"{row['className']} — {row['specialization']}", + "activeRuns": f"{row['activeRuns']}/{row['runs']}", + "castsPerMinute": format_number(row["castsPerMinute"]), + "effectiveDamage": format_number(row["effectiveDamage"]), + "dps": format_number(row["dps"]), + "damageShare": format_number(row["damageShare"] * 100, 1) + "%", + "averageDamagePerHit": format_number(row["averageDamagePerHit"]), + "effectiveHealing": format_number(row["effectiveHealing"]), + "overheal": format_number(row["overheal"]), + "absorbs": format_number(row["absorbs"]), + } for row in report["classAbilities"]] + parties = [{ + **row, + "partyDps": format_number(row["partyDps"]), + "incomingDtps": format_number(row["incomingDtps"]), + "defeatRate": format_number(row["defeatRate"] * 100, 0) + "%", + "wipeRate": format_number(row["wipeRate"] * 100, 0) + "%", + "averageDeaths": format_number(row["averageDeaths"], 2), + } for row in report["partyConfigurations"]] + bosses = [{ + **row, + "incomingDtps": format_number(row["incomingDtps"]), + "pressureVsMedian": format_ratio(row["pressureVsMedian"]), + "averageIncomingDamage": format_number(row["averageIncomingDamage"]), + "partyDps": format_number(row["partyDps"]), + "defeatRate": format_number(row["defeatRate"] * 100, 0) + "%", + "wipeRate": format_number(row["wipeRate"] * 100, 0) + "%", + "averageDeaths": format_number(row["averageDeaths"], 2), + } for row in report["bosses"]] + class_table = html_table("class-specs", "Every tested class/spec", class_specs, ( + ("source", "Source"), ("classSpec", "Class/spec"), ("role", "Role"), + ("partyConfigurations", "Parties"), ("runs", "Runs"), ("dps", "DPS"), + ("bossDps", "Boss DPS"), ("hps", "HPS"), ("dtps", "DTPS"), + ("totalDamageTaken", "Total taken"), ("damageVsSourceRoleMedian", "Role median"), + ("damageFlag", "Flag"), ("deathEvents", "Deaths"), + )) + ability_table = html_table("class-abilities", "Every class/spec ability", class_abilities, ( + ("source", "Source"), ("classSpec", "Class/spec"), ("abilityName", "Ability"), + ("abilityId", "Exact ID"), ("categories", "AI category"), ("status", "Status"), + ("activeRuns", "Active runs"), ("casts", "Casts"), ("castsPerMinute", "Casts/min"), + ("hits", "Hits"), ("effectiveDamage", "Damage"), ("dps", "DPS"), + ("damageShare", "Damage share"), ("averageDamagePerHit", "Damage/hit"), + ("effectiveHealing", "Healing"), ("overheal", "Overheal"), ("absorbs", "Absorbs"), + )) + party_table = html_table("parties", "Every party configuration", parties, ( + ("partyConfigurationId", "Party"), ("source", "Source"), ("members", "Members"), + ("runs", "Runs"), ("partyDps", "Party DPS"), ("incomingDtps", "DTPS"), + ("defeatRate", "Defeat"), ("wipeRate", "Wipe"), ("averageDeaths", "Avg deaths"), + ("reportPath", "Detailed report"), + )) + boss_table = html_table("suite-bosses", "Every boss across all parties", bosses, ( + ("bossName", "Boss"), ("dungeonTitle", "Dungeon"), ("category", "Source"), + ("runs", "Runs"), ("incomingDtps", "DTPS"), ("pressureVsMedian", "Median"), + ("pressureFlag", "Flag"), ("averageIncomingDamage", "Avg total damage"), + ("partyDps", "Party DPS"), ("defeatRate", "Defeat"), ("wipeRate", "Wipe"), + ("averageDeaths", "Avg deaths"), + )) + summary = report["summary"] + return f""" + +Healer Man Automatic Balance Suite

Healer Man Automatic Balance Suite

+

{html.escape(report['generatedAt'])} · level {report['level']} · {summary['partyConfigurations']} parties · {summary['bosses']} bosses · {summary['runs']} simulations. Every row is retained; click headings to sort or filter each table.

+{class_table}{ability_table}{party_table}{boss_table} +""" + + +def create_suite_reports(entries: Sequence[dict[str, Any]], output_dir: Path, level: int) -> dict[str, Any]: + compact_runs: list[dict[str, Any]] = [] + party_rows: list[dict[str, Any]] = [] + boss_by_party: list[dict[str, Any]] = [] + class_groups: dict[tuple[str, ...], list[dict[str, Any]]] = defaultdict(list) + class_boss_groups: dict[tuple[str, ...], list[dict[str, Any]]] = defaultdict(list) + class_ability_groups: dict[tuple[str, ...], list[dict[str, Any]]] = defaultdict(list) + for entry in entries: + raw = json.loads(Path(entry["rawPath"]).read_text(encoding="utf-8")) + report = entry["report"] + runs = raw["runs"] + compact_runs.extend({ + "partyConfigurationId": entry["id"], + "partySource": entry["source"], + **{key: value for key, value in run.items() if key not in {"members", "bossAbilities"}}, + } for run in runs) + defeated = [run for run in runs if run["outcome"] == "defeated"] + members = "; ".join( + f"{member['className']} {member['specialization']} ({member['role']})" for member in raw["party"] + ) + party_rows.append({ + "partyConfigurationId": entry["id"], + "source": entry["source"], + "members": members, + "runs": len(runs), + "partyDps": weighted_rate(runs, "partyDamage"), + "incomingDtps": weighted_rate(runs, "incomingDamage"), + "defeatRate": len(defeated) / len(runs), + "wipeRate": sum(run["outcome"] == "wipe" for run in runs) / len(runs), + "averageDeaths": mean(run["deaths"] for run in runs), + "reportPath": (Path("parties") / entry["id"] / "report.html").as_posix(), + }) + for boss in report["bosses"]: + boss_by_party.append({"partyConfigurationId": entry["id"], "partySource": entry["source"], **boss}) + for run in runs: + for member in run["members"]: + observation = { + **member, + "source": entry["source"], + "partyConfigurationId": entry["id"], + "elapsedSeconds": run["elapsedSeconds"], + "bossKey": run["bossKey"], + "bossName": run["bossName"], + "dungeonTitle": run["dungeonTitle"], + } + key = ( + entry["source"], member["buildId"], member["classId"], member["className"], + member["specialization"], member["role"], + ) + class_groups[key].append(observation) + class_boss_groups[(*key, run["bossKey"], run["bossName"], run["dungeonTitle"])].append(observation) + available = { + ability["abilityId"]: ability for ability in member.get("availableAbilities", []) + } + observed = {ability["abilityId"]: ability for ability in member.get("abilities", [])} + for ability_id in sorted((set(available) | set(observed)) - {"balance-lab-pull"}): + expected = available.get(ability_id, {}) + metrics = observed.get(ability_id, {}) + used = any(float(metrics.get(field, 0)) > 0 for field in ( + "casts", "hits", "rawDamage", "effectiveDamage", "rawHealing", + "effectiveHealing", "overheal", "absorbs", + )) + class_ability_groups[(*key, ability_id)].append({ + "partyConfigurationId": entry["id"], + "bossKey": run["bossKey"], + "elapsedSeconds": run["elapsedSeconds"], + "abilityName": expected.get("abilityName"), + "icon": expected.get("icon"), + "categories": expected.get("categories", []), + "cooldownSeconds": expected.get("cooldownSeconds"), + "available": ability_id in available, + "used": used, + "casts": metrics.get("casts", 0), + "hits": metrics.get("hits", 0), + "rawDamage": metrics.get("rawDamage", 0), + "effectiveDamage": metrics.get("effectiveDamage", 0), + "rawHealing": metrics.get("rawHealing", 0), + "effectiveHealing": metrics.get("effectiveHealing", 0), + "overheal": metrics.get("overheal", 0), + "absorbs": metrics.get("absorbs", 0), + }) + bosses, pressure_median = aggregate_boss_runs(compact_runs) + class_specs = aggregate_class_specs(class_groups) + class_abilities = aggregate_class_abilities(class_ability_groups, class_groups) + class_spec_by_boss = [] + for key, observations in class_boss_groups.items(): + source, build_id, class_id, class_name, specialization, role, boss_key, boss_name, dungeon_title = key + class_spec_by_boss.append({ + "source": source, + "buildId": build_id, + "classId": class_id, + "className": class_name, + "specialization": specialization, + "role": role, + "bossKey": boss_key, + "bossName": boss_name, + "dungeonTitle": dungeon_title, + "partyConfigurations": len({row["partyConfigurationId"] for row in observations}), + "runs": len(observations), + "dps": weighted_rate(observations, "damage"), + "bossDps": weighted_rate(observations, "bossDamage"), + "hps": weighted_rate(observations, "healing"), + "dtps": weighted_rate(observations, "damageTaken"), + "totalDamageTaken": sum(row["damageTaken"] for row in observations), + "deathEvents": sum(row["deathEvents"] for row in observations), + }) + class_spec_by_boss.sort(key=lambda row: ( + row["source"], row["className"], row["specialization"], row["bossName"], row["dungeonTitle"] + )) + party_rows.sort(key=lambda row: (row["source"], row["partyConfigurationId"])) + boss_by_party.sort(key=lambda row: (row["partyConfigurationId"], -row["incomingDtps"], row["bossName"])) + report = { + "schemaVersion": 1, + "generatedAt": datetime.now().astimezone().isoformat(), + "engine": "live-typescript-runtime", + "level": level, + "summary": { + "partyConfigurations": len(entries), + "bosses": len(bosses), + "runs": len(compact_runs), + "classSpecs": len(class_specs), + "classAbilities": len(class_abilities), + "bossPressureMedianDtps": pressure_median, + }, + "classSpecs": class_specs, + "classAbilities": class_abilities, + "partyConfigurations": party_rows, + "bosses": bosses, + "bossByParty": boss_by_party, + "classSpecByBoss": class_spec_by_boss, + } + write_json(output_dir / "suite-report.json", report) + write_text(output_dir / "suite-report.md", suite_markdown(report)) + write_text(output_dir / "suite-report.html", suite_html(report)) + write_csv(output_dir / "party_configurations.csv", party_rows, ( + "partyConfigurationId", "source", "members", "runs", "partyDps", "incomingDtps", + "defeatRate", "wipeRate", "averageDeaths", "reportPath", + )) + write_csv(output_dir / "class_specs_across_parties.csv", class_specs, ( + "source", "buildId", "classId", "className", "specialization", "role", "partyConfigurations", + "runs", "dps", "bossDps", "hps", "dtps", "damageVsSourceRoleMedian", "damageFlag", + "totalDamage", "totalDamageTaken", "totalHealing", "totalAbsorbs", "deathEvents", + )) + write_csv(output_dir / "class_abilities_across_parties.csv", class_abilities, ( + "source", "buildId", "classId", "className", "specialization", "role", "abilityId", + "abilityName", "categories", "cooldownSeconds", "partyConfigurations", "bosses", "runs", + "availableRuns", "activeRuns", "usageRate", "casts", "castsPerMinute", "hits", "hitsPerRun", + "rawDamage", "effectiveDamage", "dps", "damageShare", "averageDamagePerHit", "rawHealing", + "effectiveHealing", "overheal", "absorbs", "status", "unusedAvailable", + )) + write_csv(output_dir / "bosses_across_parties.csv", bosses, ( + "bossKey", "bossName", "category", "dungeonId", "dungeonTitle", "runs", "incomingDtps", + "pressureVsMedian", "pressureFlag", "averageIncomingDamage", "partyDps", "bossDpsTaken", + "defeatRate", "wipeRate", "averageDeaths", "averageTimeToDefeat", "bossMaxHealth", + )) + write_csv(output_dir / "boss_by_party.csv", boss_by_party, ( + "partyConfigurationId", "partySource", "bossKey", "bossName", "category", "dungeonId", + "dungeonTitle", "runs", "incomingDtps", "pressureVsMedian", "pressureFlag", + "averageIncomingDamage", "partyDps", "bossDpsTaken", "defeatRate", "wipeRate", + "averageDeaths", "averageTimeToDefeat", "bossMaxHealth", + )) + write_csv(output_dir / "class_spec_by_boss.csv", class_spec_by_boss, ( + "source", "buildId", "classId", "className", "specialization", "role", "bossKey", "bossName", + "dungeonTitle", "partyConfigurations", "runs", "dps", "bossDps", "hps", "dtps", + "totalDamageTaken", "deathEvents", + )) + write_csv(output_dir / "suite_runs.csv", compact_runs, ( + "partyConfigurationId", "partySource", "bossKey", "bossName", "bossCategory", "dungeonId", + "dungeonTitle", "seed", "outcome", + "elapsedSeconds", "timeToDefeatSeconds", "bossLevel", "bossMaxHealth", "bossRemainingHealth", + "partyDamage", "bossDamage", "partyDps", "bossDpsTaken", "incomingDamage", "rawIncomingDamage", + "incomingDtps", "deaths", "deathEvents", "bossAttacks", + )) + return report + + +def parser() -> argparse.ArgumentParser: + result = argparse.ArgumentParser(description="Simulate a selected WoW, CoA, or RoM party against authored bosses.") + result.add_argument("--source", choices=("wow", "coa", "rom", "all"), help="party catalog; all requires automatic mode") + result.add_argument("--level", type=int, default=60, help="party level (default: 60)") + result.add_argument("--party-mode", choices=("random", "manual", "automatic"), default="random") + result.add_argument("--party-seed", type=int, default=1, help="random party seed") + result.add_argument("--party-configurations", type=int, default=10, help="automatic parties per selected source") + result.add_argument("--member", action="append", default=[], help="manual build ID or class:spec selector; repeat five times") + result.add_argument("--active-slot", type=int, help="1-based member controlled by the benchmark policy; defaults to healer") + result.add_argument("--boss-category", choices=("all", "wow", "rom"), default="all") + result.add_argument("--boss", action="append", default=[], help="boss key/name selector; repeat as needed; default is every boss") + result.add_argument("--simulations-per-party", type=int, default=3, + help="deterministic runs for each party/boss pairing") + result.add_argument("--seeds", type=parse_seeds, help="explicit comma-separated seeds; overrides --simulations-per-party") + result.add_argument("--duration", type=int, default=60, help="maximum fight duration in seconds") + result.add_argument("--output-dir", type=Path, help="report directory") + result.add_argument("--list-members", action="store_true") + result.add_argument("--list-bosses", action="store_true") + return result + + +def main(argv: Sequence[str] | None = None) -> int: + args = parser().parse_args(argv) + timestamp = datetime.now().strftime("%Y%m%d-%H%M%S") + output_dir = (args.output_dir or ROOT / "artifacts" / "balance-lab" / timestamp).resolve() + output_dir.mkdir(parents=True, exist_ok=True) + interactive = argv is None and len(sys.argv) == 1 + catalog: dict[str, Any] + session: RuntimeSession + if interactive: + args, catalog, session = interactive_arguments(args, output_dir) + else: + if not args.source: + raise SystemExit("--source is required for non-interactive runs") + session = RuntimeSession(args.source, args.level, output_dir) + catalog = session.catalog + + if args.list_members: + for build in catalog["builds"]: + print(f"{build['id']}\t{console_text(build['label'])}") + session.close() + return 0 + if args.list_bosses: + for boss in catalog["bosses"]: + print(f"{boss['key']}\t{boss['category']}\t{boss['dungeonTitle']} - {boss['name']}") + session.close() + return 0 + + builds = catalog["builds"] + if args.source == "all" and args.party_mode != "automatic": + session.close() + raise SystemExit("--source all is supported only with --party-mode automatic") + if args.party_configurations < 1: + session.close() + raise SystemExit("--party-configurations must be at least 1") + if args.simulations_per_party < 1: + session.close() + raise SystemExit("--simulations-per-party must be at least 1") + seeds = args.seeds or list(range(1, args.simulations_per_party + 1)) + if args.party_mode == "automatic": + sources = ("wow", "coa", "rom") if args.source == "all" else (args.source,) + configurations = automatic_parties(builds, sources, args.party_configurations, args.party_seed) + if args.active_slot is not None: + if not 1 <= args.active_slot <= 5: + session.close() + raise SystemExit("--active-slot must be from 1 through 5") + configurations = [{**configuration, "activeSlot": args.active_slot - 1} for configuration in configurations] + elif args.party_mode == "manual": + if len(args.member) != 5: + session.close() + raise SystemExit("Manual mode requires exactly five --member values.") + party = [resolve_build(selector, builds) for selector in args.member] + active_slot = args.active_slot or next( + (index + 1 for index, build in enumerate(party) if build["role"] == "healer"), 1 + ) + configurations = [{"id": f"{args.source}-party-001", "source": args.source, + "party": party, "activeSlot": active_slot - 1}] + else: + party = random_party(builds, args.party_seed) + active_slot = args.active_slot or next( + (index + 1 for index, build in enumerate(party) if build["role"] == "healer"), 1 + ) + configurations = [{"id": f"{args.source}-party-001", "source": args.source, + "party": party, "activeSlot": active_slot - 1}] + if any(not 0 <= configuration["activeSlot"] < 5 for configuration in configurations): + session.close() + raise SystemExit("--active-slot must be from 1 through 5") + bosses = [resolve_boss(selector, catalog["bosses"]) for selector in args.boss] + boss_count = len(bosses) if bosses else sum( + args.boss_category == "all" or boss["category"] == args.boss_category for boss in catalog["bosses"] + ) + total_runs = len(configurations) * boss_count * len(seeds) + print( + f"Running {total_runs} simulations ({len(configurations)} parties x {boss_count} bosses " + f"x {len(seeds)} runs per party/boss)..." + ) + entries = [] + automatic = args.party_mode == "automatic" + if automatic: + write_json(output_dir / "suite-config.json", { + "schemaVersion": 1, + "mode": "automatic", + "source": args.source, + "level": args.level, + "partySeed": args.party_seed, + "partyConfigurationsPerSource": args.party_configurations, + "simulationsPerParty": len(seeds), + "seeds": seeds, + "durationSeconds": args.duration, + "bossCategory": args.boss_category, + **({"bossKeys": [boss["key"] for boss in bosses]} if bosses else {}), + "parties": [{ + "id": configuration["id"], + "source": configuration["source"], + "activeSlot": configuration["activeSlot"], + "partyBuildIds": [build["id"] for build in configuration["party"]], + } for configuration in configurations], + }) + try: + for configuration_index, configuration in enumerate(configurations, 1): + party = configuration["party"] + party_dir = output_dir / "parties" / configuration["id"] if automatic else output_dir + config = { + "schemaVersion": 1, + "source": configuration["source"], + "level": args.level, + "durationSeconds": args.duration, + "seeds": seeds, + "partyBuildIds": [build["id"] for build in party], + "activeSlot": configuration["activeSlot"], + "bossCategory": args.boss_category, + **({"bossKeys": [boss["key"] for boss in bosses]} if bosses else {}), + } + config_path = party_dir / "config.json" + raw_path = party_dir / "raw-runs.json" + write_json(config_path, config) + print(f"\nParty {configuration_index}/{len(configurations)}: {configuration['id']}") + for index, build in enumerate(party): + marker = " [active]" if index == configuration["activeSlot"] else "" + print(f" {index + 1}. {console_text(build['label'])}{marker}") + session.simulate(config_path, raw_path) + report = create_reports(raw_path, party_dir) + entries.append({ + "id": configuration["id"], + "source": configuration["source"], + "rawPath": str(raw_path), + "report": report, + }) + finally: + session.close() + if automatic: + suite_report = create_suite_reports(entries, output_dir, args.level) + print( + f"\nComplete: {suite_report['summary']['partyConfigurations']} parties, " + f"{suite_report['summary']['bosses']} bosses, and {suite_report['summary']['runs']} runs." + ) + print(f"Open: {output_dir / 'suite-report.html'}") + else: + report = entries[0]["report"] + print(f"\nComplete: {report['summary']['bosses']} bosses and {report['summary']['runs']} runs.") + print(f"Open: {output_dir / 'report.html'}") + print(f"Raw and CSV data: {output_dir}") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/dungeon-pipeline/audit-boss-party-pressure.ts b/scripts/dungeon-pipeline/audit-boss-party-pressure.ts new file mode 100644 index 00000000..5abb2c6c --- /dev/null +++ b/scripts/dungeon-pipeline/audit-boss-party-pressure.ts @@ -0,0 +1,79 @@ +#!/usr/bin/env node +import { writeFile } from "node:fs/promises"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import { + BOSS_PRESSURE_PARTY_SIZE, + BOSS_PRESSURE_WINDOW_MS, + rankBossPartyPressure, +} from "../../src/game/bossPressure"; + +const projectRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../.."); +const playerLevel = Math.max(1, Math.min(80, Number(process.env.BOSS_PRESSURE_LEVEL) || 80)); +const { DUNGEON_DEFINITIONS } = await import("../../src/game/dungeonRegistry"); +const wowDefinitions = DUNGEON_DEFINITIONS.filter((dungeon) => dungeon.expansion !== "runewaker"); +const ranking = rankBossPartyPressure(wowDefinitions, playerLevel); +const median = ranking.length ? ranking[Math.floor(ranking.length / 2)].partyDamagePerSecond : 0; +const entries = ranking.map((entry, index) => ({ + rank: index + 1, + pressureVsMedian: median > 0 ? entry.partyDamagePerSecond / median : 0, + ...entry, +})); +const eck = entries.find((entry) => entry.serverEntry === 29_932) ?? null; +const report = { + schemaVersion: 1, + generatedAt: new Date().toISOString(), + assumptions: { + playerLevel, + enemyLevelOffset: 2, + durationSeconds: BOSS_PRESSURE_WINDOW_MS / 1_000, + partySize: BOSS_PRESSURE_PARTY_SIZE, + partyLayout: "all five actors inside nearby-party effects", + metric: "unmitigated direct damage from the live boss attack catalog", + excludes: [ + "armor and resistance", + "avoidable movement and interrupts", + "summoned creature damage", + "damage-amplifying debuffs", + "healing and absorbs", + "mutually exclusive phase uptime", + ], + }, + bosses: entries.length, + medianPartyDamagePerSecond: median, + eck, + entries, +}; + +const number = (value: number): string => Math.round(value).toLocaleString("en-US"); +const decimal = (value: number): string => value.toFixed(1); +const top = entries.slice(0, 30); +const markdown = `# WoW boss party-pressure audit + +Generated ${report.generatedAt}. This is a deterministic comparison at player level ${playerLevel}: ${BOSS_PRESSURE_PARTY_SIZE} grouped party members, ${BOSS_PRESSURE_WINDOW_MS / 1_000} seconds, and live boss attack definitions. It is a pressure ceiling, not a combat-log prediction: mitigation, movement, interrupts, summons, debuff amplification, and phase uptime are excluded. + +| Rank | Boss | Dungeon | Party DPS | Tank DPS | Random DPS | Groupwide DPS | vs median | +| ---: | --- | --- | ---: | ---: | ---: | ---: | ---: | +${top.map((entry) => `| ${entry.rank} | ${entry.boss} | ${entry.dungeonTitle} | ${number(entry.partyDamagePerSecond)} | ${number(entry.tankDamage / entry.windowSeconds)} | ${number(entry.randomTargetDamage / entry.windowSeconds)} | ${number(entry.groupwideDamage / entry.windowSeconds)} | ${decimal(entry.pressureVsMedian)}x |`).join("\n")} + +## Eck the Ferocious + +${eck ? `Eck ranks **${eck.rank} of ${entries.length}** at **${number(eck.partyDamagePerSecond)} raw party DPS** (**${decimal(eck.pressureVsMedian)}x** the median). His corrected schedule contains one 2-second melee swing, Bite every 8–12 seconds, Spit every 8–12 seconds after its delayed opener, Spring every 10–24 seconds against a random party member, and a non-damaging Berserk at 90 seconds.` : "Eck was not found in the runtime catalog."} + +The complete machine-readable ranking and per-attack breakdown are in \`dungeon-pipeline/WOW_BOSS_PRESSURE_REPORT.json\`. +`; + +const jsonPath = path.join(projectRoot, "dungeon-pipeline", "WOW_BOSS_PRESSURE_REPORT.json"); +const markdownPath = path.join(projectRoot, "dungeon-pipeline", "WOW_BOSS_PRESSURE_REPORT.md"); +await Promise.all([ + writeFile(jsonPath, `${JSON.stringify(report, null, 2)}\n`, "utf8"), + writeFile(markdownPath, markdown, "utf8"), +]); +console.log(JSON.stringify({ + status: "complete", + bosses: entries.length, + playerLevel, + medianPartyDamagePerSecond: Number(median.toFixed(2)), + eck: eck ? { rank: eck.rank, partyDamagePerSecond: Number(eck.partyDamagePerSecond.toFixed(2)), pressureVsMedian: Number(eck.pressureVsMedian.toFixed(2)) } : null, + outputs: [path.relative(projectRoot, jsonPath), path.relative(projectRoot, markdownPath)], +}, null, 2)); diff --git a/scripts/dungeon-pipeline/generate-dungeon-route-candidates.mjs b/scripts/dungeon-pipeline/generate-dungeon-route-candidates.mjs new file mode 100644 index 00000000..e72156a2 --- /dev/null +++ b/scripts/dungeon-pipeline/generate-dungeon-route-candidates.mjs @@ -0,0 +1,426 @@ +import { createHash } from "node:crypto"; +import { execFileSync } from "node:child_process"; +import { readFileSync, writeFileSync } from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import { NodeIO } from "@gltf-transform/core"; +import { ALL_EXTENSIONS } from "@gltf-transform/extensions"; +import { MeshoptDecoder } from "meshoptimizer"; + +const projectRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..", ".."); +const defaultPlayerbotsRoot = path.resolve(projectRoot, "..", "wow-pvt-server-backups-2", "azerothcore-wotlk", "modules", "mod-playerbots"); +const argumentIndex = process.argv.indexOf("--playerbots-root"); +const playerbotsRoot = path.resolve(argumentIndex >= 0 ? process.argv[argumentIndex + 1] : defaultPlayerbotsRoot); +const sqlRoot = path.join(playerbotsRoot, "data", "sql", "playerbots", "base"); +const catalogPath = path.join(projectRoot, "src", "game", "generated", "dungeonCampaignCatalog.json"); +const outputPath = path.join(projectRoot, "src", "game", "generated", "dungeonRouteCatalog.generated.json"); +const auditPath = path.join(projectRoot, "dungeon-pipeline", "DUNGEON_ROUTE_GENERATION_AUDIT.json"); +const gltfIo = new NodeIO() + .registerExtensions(ALL_EXTENSIONS) + .registerDependencies({ "meshopt.decoder": MeshoptDecoder }); + +function tuples(fileName, pattern, convert) { + return readFileSync(path.join(sqlRoot, fileName), "utf8") + .split(/\r?\n/) + .map((line) => pattern.exec(line.trim())) + .filter(Boolean) + .map(convert); +} + +const number = (value) => Number(value); +const nodes = tuples( + "playerbots_travelnode.sql", + /^\((\d+), '((?:[^'\\]|\\.)*)', (\d+), (-?[\d.eE+]+), (-?[\d.eE+]+), (-?[\d.eE+]+), (?:NULL|\d+)\)[,;]?$/, + (match) => ({ id: number(match[1]), mapId: number(match[3]), wow: [number(match[4]), number(match[5]), number(match[6])] }), +); +const links = tuples( + "playerbots_travelnode_link.sql", + /^\((\d+), (\d+), \d+, \d+, (-?[\d.eE+]+),/, + (match) => ({ from: number(match[1]), to: number(match[2]), distance: Math.max(0.001, number(match[3])) }), +); +const nodesById = new Map(nodes.map((node) => [node.id, node])); + +function transformPoint(dungeon, wow) { + const base = dungeon.transform.fromWow === "three(x,y,z)=(wow.y,wow.z,wow.x)" + ? [wow[1], wow[2], wow[0]] + : [-wow[0], wow[2], wow[1]]; + const scale = dungeon.transform.scale ?? 1; + return [ + base[0] * scale + (dungeon.transform.position?.[0] ?? 0), + base[1] * scale + (dungeon.transform.position?.[1] ?? 0), + base[2] * scale + (dungeon.transform.position?.[2] ?? 0), + ]; +} + +function distance(left, right) { + return Math.hypot(right[0] - left[0], right[1] - left[1], right[2] - left[2]); +} + +function nearestNode(candidates, point) { + return candidates.reduce((best, candidate) => { + const candidateDistance = distance(candidate.three, point); + return !best || candidateDistance < best.distance || (candidateDistance === best.distance && candidate.id < best.node.id) + ? { node: candidate, distance: candidateDistance } + : best; + }, null)?.node ?? null; +} + +function shortestNodePath(mapNodes, mapLinks, startId, endId) { + if (startId === endId) return [startId]; + const allowed = new Set(mapNodes.map((node) => node.id)); + const adjacency = new Map(mapNodes.map((node) => [node.id, []])); + for (const link of mapLinks) { + if (allowed.has(link.from) && allowed.has(link.to)) adjacency.get(link.from).push(link); + } + for (const values of adjacency.values()) values.sort((left, right) => left.to - right.to); + const costs = new Map([[startId, 0]]); + const previous = new Map(); + const pending = new Set(allowed); + while (pending.size) { + let current = null; + let currentCost = Number.POSITIVE_INFINITY; + for (const id of pending) { + const cost = costs.get(id) ?? Number.POSITIVE_INFINITY; + if (cost < currentCost || (cost === currentCost && (current === null || id < current))) { + current = id; + currentCost = cost; + } + } + if (current === null || !Number.isFinite(currentCost)) break; + pending.delete(current); + if (current === endId) break; + for (const edge of adjacency.get(current) ?? []) { + if (!pending.has(edge.to)) continue; + const nextCost = currentCost + edge.distance; + if (nextCost < (costs.get(edge.to) ?? Number.POSITIVE_INFINITY)) { + costs.set(edge.to, nextCost); + previous.set(edge.to, current); + } + } + } + if (!previous.has(endId)) return null; + const result = [endId]; + while (result[0] !== startId) result.unshift(previous.get(result[0])); + return result; +} + +function transformByMatrix(point, matrix) { + return [ + matrix[0] * point[0] + matrix[4] * point[1] + matrix[8] * point[2] + matrix[12], + matrix[1] * point[0] + matrix[5] * point[1] + matrix[9] * point[2] + matrix[13], + matrix[2] * point[0] + matrix[6] * point[1] + matrix[10] * point[2] + matrix[14], + ]; +} + +async function loadNavigationGraph(dungeon) { + const navigationUrl = dungeon.assets?.navigation?.url; + if (!navigationUrl) throw new Error(`${dungeon.id}: missing navigation asset.`); + const navigationFile = path.join(projectRoot, "public", navigationUrl.replace(/^\//, "")); + const document = await gltfIo.read(navigationFile); + const welded = new Map(); + const triangles = []; + const edgeOwners = new Map(); + const vertexId = (point) => { + const key = point.map((value) => Math.round(value * 1_000)).join(":"); + if (!welded.has(key)) welded.set(key, welded.size); + return welded.get(key); + }; + for (const node of document.getRoot().listNodes()) { + const mesh = node.getMesh(); + if (!mesh) continue; + const matrix = node.getWorldMatrix(); + for (const primitive of mesh.listPrimitives()) { + const positionAccessor = primitive.getAttribute("POSITION"); + const positions = positionAccessor?.getArray(); + const sourceIndices = primitive.getIndices()?.getArray(); + if (!positions) continue; + const indices = sourceIndices ? Array.from(sourceIndices) : Array.from({ length: positions.length / 3 }, (_, index) => index); + for (let offset = 0; offset + 2 < indices.length; offset += 3) { + const points = [indices[offset], indices[offset + 1], indices[offset + 2]].map((index) => transformByMatrix( + positionAccessor.getElement(index, []), + matrix, + )); + const ids = points.map(vertexId); + const id = triangles.length; + triangles.push({ + centroid: points.reduce((sum, point) => [sum[0] + point[0] / 3, sum[1] + point[1] / 3, sum[2] + point[2] / 3], [0, 0, 0]), + neighbors: new Set(), + }); + for (const edge of [[ids[0], ids[1]], [ids[1], ids[2]], [ids[2], ids[0]]]) { + const key = [...edge].sort((left, right) => left - right).join(":"); + const previous = edgeOwners.get(key); + if (previous !== undefined) { + triangles[id].neighbors.add(previous); + triangles[previous].neighbors.add(id); + } else edgeOwners.set(key, id); + } + } + } + } + if (!triangles.length) throw new Error(`${dungeon.id}: navigation asset contains no triangles.`); + const nearest = (point) => { + let id = -1; + let snapDistance = Number.POSITIVE_INFINITY; + triangles.forEach((triangle, index) => { + const candidate = distance(point, triangle.centroid); + if (candidate < snapDistance) { + id = index; + snapDistance = candidate; + } + }); + return { id, distance: snapDistance, point: triangles[id].centroid }; + }; + for (const link of dungeon.navigationLinks ?? []) { + const start = nearest(link.start); + const end = nearest(link.end); + if (start.distance <= 5 && end.distance <= 5) { + triangles[start.id].neighbors.add(end.id); + if (link.bidirectional !== false) triangles[end.id].neighbors.add(start.id); + } + } + return { triangles, nearest }; +} + +class MinimumHeap { + values = []; + push(value) { + this.values.push(value); + let index = this.values.length - 1; + while (index > 0) { + const parent = (index - 1) >> 1; + if (this.values[parent].cost <= value.cost) break; + this.values[index] = this.values[parent]; + index = parent; + } + this.values[index] = value; + } + pop() { + if (!this.values.length) return null; + const first = this.values[0]; + const last = this.values.pop(); + if (this.values.length) { + let index = 0; + while (true) { + const left = index * 2 + 1; + const right = left + 1; + if (left >= this.values.length) break; + const child = right < this.values.length && this.values[right].cost < this.values[left].cost ? right : left; + if (this.values[child].cost >= last.cost) break; + this.values[index] = this.values[child]; + index = child; + } + this.values[index] = last; + } + return first; + } +} + +function navigationTrianglePath(graph, startId, endId) { + if (startId === endId) return [startId]; + const costs = new Map([[startId, 0]]); + const previous = new Map(); + const pending = new MinimumHeap(); + pending.push({ id: startId, cost: 0 }); + while (pending.values.length) { + const current = pending.pop(); + const known = costs.get(current.id); + if (current.cost > known + 1e-6) continue; + if (current.id === endId) break; + const origin = graph.triangles[current.id].centroid; + for (const neighborId of graph.triangles[current.id].neighbors) { + const nextCost = known + distance(origin, graph.triangles[neighborId].centroid); + if (nextCost >= (costs.get(neighborId) ?? Number.POSITIVE_INFINITY)) continue; + costs.set(neighborId, nextCost); + previous.set(neighborId, current.id); + pending.push({ id: neighborId, cost: nextCost }); + } + } + if (!previous.has(endId)) return null; + const result = [endId]; + while (result[0] !== startId) result.unshift(previous.get(result[0])); + return result; +} + +function segmentDistanceSquared(point, start, end) { + const delta = [end[0] - start[0], end[1] - start[1], end[2] - start[2]]; + const lengthSquared = delta[0] ** 2 + delta[1] ** 2 + delta[2] ** 2; + if (lengthSquared <= 1e-9) return distance(point, start) ** 2; + const t = Math.max(0, Math.min(1, ( + (point[0] - start[0]) * delta[0] + + (point[1] - start[1]) * delta[1] + + (point[2] - start[2]) * delta[2] + ) / lengthSquared)); + return distance(point, [start[0] + delta[0] * t, start[1] + delta[1] * t, start[2] + delta[2] * t]) ** 2; +} + +function simplify(points, tolerance = 0.75) { + if (points.length <= 2) return points; + let furthest = -1; + let furthestDistance = tolerance ** 2; + for (let index = 1; index < points.length - 1; index += 1) { + const candidate = segmentDistanceSquared(points[index], points[0], points[points.length - 1]); + if (candidate > furthestDistance) { + furthest = index; + furthestDistance = candidate; + } + } + if (furthest < 0) return [points[0], points[points.length - 1]]; + return [...simplify(points.slice(0, furthest + 1), tolerance).slice(0, -1), ...simplify(points.slice(furthest), tolerance)]; +} + +function boundSegments(points, maximum = 7.5) { + const result = [points[0]]; + for (let index = 1; index < points.length; index += 1) { + const start = result[result.length - 1]; + const end = points[index]; + const length = distance(start, end); + const steps = Math.max(1, Math.ceil(length / maximum)); + for (let step = 1; step <= steps; step += 1) { + const t = step / steps; + result.push([ + start[0] + (end[0] - start[0]) * t, + start[1] + (end[1] - start[1]) * t, + start[2] + (end[2] - start[2]) * t, + ]); + } + } + return result; +} + +function rounded(point) { + return point.map((coordinate) => Number(coordinate.toFixed(4))); +} + +function canonical(value) { + if (Array.isArray(value)) return `[${value.map(canonical).join(",")}]`; + if (value && typeof value === "object") { + return `{${Object.keys(value).sort().map((key) => `${JSON.stringify(key)}:${canonical(value[key])}`).join(",")}}`; + } + return JSON.stringify(value); +} + +function playerbotsTopologyEvidence(start, end, mapNodes, mapLinks) { + const startNode = nearestNode(mapNodes, start); + const endNode = nearestNode(mapNodes, end); + if (!startNode || !endNode) return { landmarksAvailable: false, connected: false }; + return { + landmarksAvailable: true, + connected: Boolean(shortestNodePath(mapNodes, mapLinks, startNode.id, endNode.id)), + }; +} + +function routeGeometry(graph, start, end) { + const startSnap = graph.nearest(start); + const endSnap = graph.nearest(end); + const trianglePath = navigationTrianglePath(graph, startSnap.id, endSnap.id); + const points = trianglePath + ? trianglePath.map((id) => graph.triangles[id].centroid) + : [startSnap.point, endSnap.point]; + const checkpoints = boundSegments(simplify(points, 0.35)).map(rounded); + return { + checkpoints, + connected: Boolean(trianglePath), + startSnapDistance: startSnap.distance, + endSnapDistance: endSnap.distance, + }; +} + +const campaign = JSON.parse(readFileSync(catalogPath, "utf8")); +const stock = campaign.definitions.filter((dungeon) => String(dungeon.provenance?.databaseAdapter ?? "").startsWith("azerothcore-")); +const routes = []; +const routeAudits = []; +for (const dungeon of stock) { + const mapNodes = nodes.filter((node) => node.mapId === dungeon.mapId).map((node) => ({ + ...node, + three: transformPoint(dungeon, node.wow), + })); + const mapLinks = links.filter((link) => nodesById.get(link.from)?.mapId === dungeon.mapId && nodesById.get(link.to)?.mapId === dungeon.mapId); + const navigationGraph = await loadNavigationGraph(dungeon); + let start = dungeon.entrance.footPosition; + const legAudits = []; + const legs = dungeon.objectiveOrder.map((objective, index) => { + const topology = playerbotsTopologyEvidence(start, objective.position, mapNodes, mapLinks); + const geometry = routeGeometry(navigationGraph, start, objective.position); + const { checkpoints } = geometry; + if (!checkpoints.length) throw new Error(`${dungeon.id}: empty navigation leg to ${objective.id}.`); + const expectedDistance = checkpoints.slice(1).reduce((total, point, pointIndex) => total + distance(checkpoints[pointIndex], point), 0); + legAudits.push({ + objectiveId: objective.id, + playerbotsLandmarksAvailable: topology.landmarksAvailable, + playerbotsTopologyConnected: topology.connected, + navigationStartSnapDistance: Number(geometry.startSnapDistance.toFixed(3)), + navigationEndSnapDistance: Number(geometry.endSnapDistance.toFixed(3)), + checkpointCount: checkpoints.length, + valid: geometry.connected && geometry.startSnapDistance <= 15 && geometry.endSnapDistance <= 15, + issues: [ + ...(!geometry.connected ? ["disconnected-navigation-leg"] : []), + ...(geometry.startSnapDistance > 15 ? ["origin-snap-distance-exceeded"] : []), + ...(geometry.endSnapDistance > 15 ? ["endpoint-snap-distance-exceeded"] : []), + ], + }); + start = objective.position; + return { + id: `leg-${String(index + 1).padStart(2, "0")}-${objective.id}`, + objectiveId: objective.id, + objectiveName: objective.name, + checkpoints, + expectedDistance: Number(expectedDistance.toFixed(2)), + corridorPlanarDistance: 10, + corridorVerticalDistance: 4, + actions: [], + }; + }); + const unhashed = { schemaVersion: 1, id: "primary", dungeonId: dungeon.id, mapId: dungeon.mapId, legs }; + const valid = legAudits.every((leg) => leg.valid); + routes.push({ + ...unhashed, + hash: createHash("sha256").update(canonical(unhashed)).digest("hex"), + generationStatus: valid ? "Candidate" : "Rejected", + generationIssues: [...new Set(legAudits.flatMap((leg) => leg.issues))], + }); + routeAudits.push({ + dungeonId: dungeon.id, + mapId: dungeon.mapId, + navigationTriangles: navigationGraph.triangles.length, + valid, + disposition: valid ? "candidate" : "rejected-needs-work", + legs: legAudits, + }); +} + +if (routes.length !== 51) throw new Error(`Expected 51 stock dungeon routes, generated ${routes.length}.`); +const safePlayerbotsRoot = playerbotsRoot.replaceAll("\\", "/"); +const playerbotsGit = (...arguments_) => execFileSync( + "git", + ["-c", `safe.directory=${safePlayerbotsRoot}`, "-C", playerbotsRoot, ...arguments_], + { encoding: "utf8" }, +).trim(); +const playerbotsCommit = playerbotsGit("rev-parse", "HEAD"); +const generatedAt = playerbotsGit("show", "-s", "--format=%cI", "HEAD"); +const output = { + schemaVersion: 1, + generatedAt, + source: { + kind: "playerbots-landmark-reference", + auditReport: "dungeon-pipeline/DUNGEON_ROUTE_GENERATION_AUDIT.json", + note: "PlayerBots was used only as offline topology evidence. Shipped checkpoint geometry is computed from HealerMan navigation assets.", + }, + routes, +}; +writeFileSync(outputPath, `${JSON.stringify(output)}\n`); +writeFileSync(auditPath, `${JSON.stringify({ + schemaVersion: 1, + generatedAt, + playerbots: { + repository: "azerothcore/mod-playerbots", + commit: playerbotsCommit, + attribution: "AzerothCore PlayerBots travel data was consulted offline as landmark and connectivity evidence; no source code, node IDs, raw node positions, or dense path rows are shipped.", + }, + policy: { + anchors: "HealerMan entrance and required objective positions", + geometry: "HealerMan Recast navigation GLBs", + maximumCheckpointSegment: 7.5, + }, + routes: routeAudits, +}, null, 2)}\n`); +console.log(`Generated ${routes.length} candidate routes at ${path.relative(projectRoot, outputPath)}.`); diff --git a/scripts/playtest-balance-lab.cjs b/scripts/playtest-balance-lab.cjs new file mode 100644 index 00000000..a153c6bc --- /dev/null +++ b/scripts/playtest-balance-lab.cjs @@ -0,0 +1,129 @@ +const { chromium } = require('C:/Users/phenom/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/node_modules/playwright'); +const assert = require('node:assert/strict'); +const fs = require('node:fs'); +const os = require('node:os'); +const path = require('node:path'); + +const directory = path.resolve(process.env.BALANCE_LAB_PLAYTEST_DIR || 'playtest-artifacts/balance-lab'); +const port = Number(process.env.BALANCE_LAB_PLAYTEST_PORT || 4191); +const base = `http://127.0.0.1:${port}`; +fs.mkdirSync(directory, { recursive: true }); +const runtimeData = fs.mkdtempSync(path.join(os.tmpdir(), 'healer-man-balance-ui-')); + +(async () => { + const { createGameServer } = await import('../server/server.mjs'); + const runtime = createGameServer({ + dataDir: runtimeData, + enableShelvedModes: false, + pythonExecutable: process.env.BALANCE_LAB_PYTHON, + }); + await new Promise((resolve) => runtime.server.listen(port, '127.0.0.1', resolve)); + const browser = await chromium.launch({ channel: 'msedge', headless: true }); + const context = await browser.newContext({ viewport: { width: 1440, height: 1000 } }); + const page = await context.newPage(); + page.setDefaultTimeout(90_000); + const pageErrors = []; + page.on('pageerror', (error) => pageErrors.push(error.message)); + const capture = async (name) => { + await page.screenshot({ path: path.join(directory, `${name}.png`), fullPage: true }); + console.log(`Captured ${name}`); + }; + + try { + await page.goto(base, { waitUntil: 'domcontentloaded' }); + await page.getByLabel('Username').fill('Phenom'); + await page.getByLabel('Password').fill('balance-lab-test'); + await page.getByRole('button', { name: /Create account/ }).click(); + await page.locator('.character-select-screen').waitFor(); + await page.getByRole('button', { name: /Create character/ }).click(); + await page.getByRole('button', { name: /Customize & name/ }).click(); + await page.getByLabel('Character name').fill('Balancer'); + await page.getByRole('button', { name: /Create character/ }).click(); + await page.getByRole('button', { name: /Continue/ }).first().click(); + await page.locator('.main-menu-screen').waitFor(); + const gmTools = page.getByRole('button', { name: /GM Tools/ }); + const balanceLab = page.getByRole('button', { name: /Balance Lab/ }); + await gmTools.waitFor(); + await balanceLab.waitFor(); + const gmBox = await gmTools.boundingBox(); + const labBox = await balanceLab.boundingBox(); + assert(gmBox && labBox && labBox.y > gmBox.y, 'Balance Lab is placed underneath GM Tools'); + await capture('01-gm-menu'); + + await balanceLab.click(); + await page.locator('.balance-lab-screen').waitFor(); + await page.getByLabel('Party source').selectOption('wow'); + await page.getByLabel('Level').fill('20'); + await page.getByLabel('Parties per source').fill('1'); + await page.getByLabel('Runs per party/boss').fill('1'); + await page.getByLabel('Fight limit (seconds)').fill('5'); + await page.getByLabel('Bosses').selectOption('specific'); + await page.getByLabel('Search Balance Lab bosses').fill('Eck the Ferocious'); + await page.getByRole('checkbox', { name: /Eck the Ferocious/ }).check(); + const totalSimulations = page.locator('.balance-lab-estimate span').filter({ hasText: 'Total simulations' }).locator('b'); + await totalSimulations.waitFor(); + assert.equal(await totalSimulations.innerText(), '1'); + await capture('02-server-job-config'); + + await page.getByRole('button', { name: 'Run on server' }).click(); + await page.locator('.balance-lab-job-list em.is-complete').waitFor({ timeout: 240_000 }); + await page.getByRole('button', { name: 'Open full report' }).waitFor(); + assert.equal(await page.locator('.balance-lab-artifacts > button').count(), 12); + await capture('03-server-job-complete'); + + await page.getByRole('button', { name: 'View graphs and filterable data' }).click(); + await page.locator('.balance-results').waitFor(); + assert.equal(await page.locator('.balance-results-chart').count(), 5); + assert.match(await page.locator('.balance-results-chart').filter({ hasText: 'Boss damage to party' }).innerText(), /Eck the Ferocious/); + await capture('04-run-analytics'); + + await page.getByRole('button', { name: 'bosses', exact: true }).click(); + assert.equal(await page.locator('.balance-results-table-panel tbody tr').count(), 1); + assert.match(await page.locator('.balance-results-table-panel tbody').innerText(), /Eck the Ferocious/); + await page.getByRole('button', { name: 'Class / spec', exact: true }).click(); + const allClassRows = await page.locator('.balance-results-table-panel tbody tr').count(); + assert(allClassRows >= 5, 'the complete five-member party should be present in the class/spec table'); + await page.getByLabel('Sort class specs').selectOption('totalDamageTaken'); + assert.equal(await page.getByLabel('Sort class specs').inputValue(), 'totalDamageTaken'); + await page.getByLabel('Class role').selectOption('damage'); + const damageRows = await page.locator('.balance-results-table-panel tbody tr').count(); + assert(damageRows > 0 && damageRows < allClassRows, 'role filtering should narrow the complete class/spec table'); + await page.getByLabel('Class role').selectOption('all'); + await page.getByRole('button', { name: 'abilities', exact: true }).click(); + const abilityRows = page.locator('.balance-results-abilities tbody tr'); + assert(await abilityRows.count() > 0, 'ability breakdown should retain observed and available abilities'); + await page.getByLabel('Filter ability usage').selectOption('unused'); + assert(await abilityRows.count() > 0, 'available but unused abilities should remain visible'); + await page.getByLabel('Filter ability usage').selectOption('all'); + await page.getByLabel('Sort abilities').selectOption('effectiveDamage'); + await capture('04b-ability-breakdown'); + await page.getByRole('button', { name: 'parties', exact: true }).click(); + assert.equal(await page.locator('.balance-results-table-panel tbody tr').count(), 1); + await page.getByLabel('Search Balance Lab run history').fill('does-not-match'); + await page.getByText('No saved runs match these filters.').waitFor(); + await page.getByLabel('Search Balance Lab run history').fill('wow'); + assert.equal(await page.locator('.balance-lab-job-list > button').count(), 1); + + await page.setViewportSize({ width: 480, height: 900 }); + await page.waitForTimeout(250); + assert.equal(await page.evaluate(() => document.documentElement.scrollWidth <= window.innerWidth), true); + await page.locator('#balance-lab-analysis').scrollIntoViewIfNeeded(); + await page.getByRole('button', { name: 'overview', exact: true }).click(); + await page.getByRole('heading', { name: 'Boss damage to party' }).waitFor(); + await page.getByRole('button', { name: 'Main menu' }).waitFor(); + await capture('05-mobile-analytics'); + await page.getByRole('button', { name: 'abilities', exact: true }).click(); + await page.getByText('Every class/spec ability').scrollIntoViewIfNeeded(); + assert.equal(await page.evaluate(() => document.documentElement.scrollWidth <= window.innerWidth), true); + await capture('06-mobile-abilities'); + assert.deepEqual(pageErrors, []); + console.log('Balance Lab GM playtest passed'); + } finally { + await browser.close(); + await new Promise((resolve) => runtime.server.close(resolve)); + fs.rmSync(runtimeData, { recursive: true, force: true }); + } +})().catch((error) => { + console.error(error); + process.exitCode = 1; +}); diff --git a/scripts/playtest-boss-testing.cjs b/scripts/playtest-boss-testing.cjs index 189fade2..d4e9af21 100644 --- a/scripts/playtest-boss-testing.cjs +++ b/scripts/playtest-boss-testing.cjs @@ -118,6 +118,25 @@ const base = process.env.BOSS_TEST_URL || 'http://127.0.0.1:4187'; const reports = runtime.database.listDungeonReports().reports; assert.equal(reports[0].bossKey, before.boss.key); assert.equal(runtime.database.listBossTestingReviews().reviews[0].status, 'ready'); + await page.evaluate(async (previousKey) => { + window.previousBossTestingKey = previousKey; + window.liveBossTestingStores = await window.bossTestingStores(); + }, before.boss.key); + await page.getByRole('button', { name: 'Fight another random boss', exact: true }).click(); + await page.waitForFunction(() => { + const { useGameStore, useCombatStore } = window.liveBossTestingStores; + const game = useGameStore.getState(); + return game.assetStatus === 'ready' && game.bossTest?.key !== window.previousBossTestingKey + && game.bossTest?.runtimeIds.every((id) => useCombatStore.getState().mobs[id]); + }, null, { timeout: 120000 }); + const nextBoss = await page.evaluate(() => { + const { useGameStore } = window.liveBossTestingStores; + return useGameStore.getState().bossTest; + }); + assert.notEqual(nextBoss.key, before.boss.key, 'Post-fight random selection must choose another boss'); + await page.waitForTimeout(1000); + await capture('06b-another-random-boss'); + await page.keyboard.press('Escape'); await page.getByRole('button', { name: 'Return to main menu', exact: true }).click(); await page.locator('.main-menu-screen').waitFor(); await page.getByRole('button', { name: /Boss Testing/ }).click(); @@ -168,7 +187,8 @@ const base = process.env.BOSS_TEST_URL || 'http://127.0.0.1:4187'; assert.deepEqual(errors, [], 'No browser runtime errors'); fs.writeFileSync(path.join(directory, 'results.json'), `${JSON.stringify({ passed: true, boss: before.boss, classId: before.classId, characterLevel: before.level, bossLevel: before.bossLevel, bossMaxHealth: before.bossMaxHealth, - initialMobCount: before.count, xpUnchanged: true, profileUnchanged: true, automaticDownload: 'dungeon:ragefire-chasm', report: reports[0], errors }, null, 2)}\n`); + initialMobCount: before.count, nextRandomBoss: nextBoss, xpUnchanged: true, profileUnchanged: true, + automaticDownload: 'dungeon:ragefire-chasm', report: reports[0], errors }, null, 2)}\n`); console.log('Boss Testing live flow passed'); } catch (error) { await capture('failure'); diff --git a/scripts/playtest-dungeon-simulation.cjs b/scripts/playtest-dungeon-simulation.cjs new file mode 100644 index 00000000..af8a9297 --- /dev/null +++ b/scripts/playtest-dungeon-simulation.cjs @@ -0,0 +1,99 @@ +const { chromium } = require('C:/Users/phenom/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/node_modules/playwright'); +const assert = require('node:assert/strict'); +const fs = require('node:fs'); +const path = require('node:path'); + +const directory = path.resolve('playtest-artifacts', 'dungeon-simulation'); +fs.mkdirSync(directory, { recursive: true }); +const databaseDirectory = path.join(directory, 'test-database'); +fs.rmSync(databaseDirectory, { recursive: true, force: true }); + +(async () => { + const { createGameServer } = await import('../server/server.mjs'); + const runtime = createGameServer({ + dataDir: databaseDirectory, + enableShelvedModes: false, + }); + await new Promise((resolve) => runtime.server.listen(4189, '127.0.0.1', resolve)); + const browser = await chromium.launch({ channel: 'msedge', headless: true }); + const context = await browser.newContext({ viewport: { width: 1600, height: 1000 }, acceptDownloads: true }); + const page = await context.newPage(); + page.setDefaultTimeout(90000); + const errors = []; + page.on('pageerror', (error) => errors.push(error.message)); + const capture = (name) => page.screenshot({ path: path.join(directory, `${name}.png`), fullPage: true }); + + try { + await page.goto('http://127.0.0.1:4189', { waitUntil: 'domcontentloaded' }); + await page.getByLabel('Username').fill('Phenom'); + await page.getByLabel('Password').fill('dungeon-route-admin'); + await page.getByRole('button', { name: /Create account/ }).click(); + await page.getByRole('button', { name: /Create character/ }).click(); + await page.getByRole('button', { name: /Customize & name/ }).click(); + await page.getByLabel('Character name').fill('Routewatcher'); + await page.getByRole('button', { name: /Create character/ }).click(); + await page.getByRole('button', { name: /Continue/ }).first().click(); + await page.getByRole('button', { name: /GM Tools/ }).click(); + await page.getByRole('heading', { name: 'Dungeon route simulations' }).waitFor(); + await capture('01-gm-route-launch'); + + const routeSelects = page.locator('.dungeon-sim-admin__catalog select'); + await routeSelects.nth(0).selectOption('wailing-caverns'); + await routeSelects.nth(1).selectOption('navigation-only'); + await page.locator('.dungeon-sim-admin__catalog input').fill('browser-smoke-fixed-seed'); + await page.getByRole('button', { name: 'Launch spectate mode' }).click(); + await page.locator('canvas').waitFor(); + await page.getByLabel('Dungeon simulation controls').waitFor(); + await page.waitForTimeout(6000); + await capture('02-live-navigation-simulation'); + + await page.getByRole('button', { name: 'Pause' }).click(); + const pausedTime = await page.locator('.dungeon-sim-hud__header > time').innerText(); + await page.waitForTimeout(700); + assert.equal(await page.locator('.dungeon-sim-hud__header > time').innerText(), pausedTime, 'pause freezes simulation time'); + await page.getByRole('button', { name: 'Step' }).click(); + await page.getByRole('button', { name: 'Step' }).click(); + await page.waitForTimeout(200); + assert.notEqual(await page.locator('.dungeon-sim-hud__header > time').innerText(), pausedTime, 'single-step advances simulation time'); + await page.getByRole('button', { name: 'Follow camera' }).click(); + await page.getByRole('button', { name: 'Free-fly camera' }).waitFor(); + await capture('03-paused-free-fly'); + + await page.getByRole('button', { name: '4×' }).click(); + await page.getByRole('button', { name: 'Play' }).click(); + await page.waitForTimeout(1200); + await page.getByRole('button', { name: 'Stop & save' }).click(); + await page.getByRole('button', { name: 'Return to GM Tools' }).waitFor(); + await capture('04-finished-report'); + await page.getByRole('button', { name: 'Return to GM Tools' }).click(); + await page.getByRole('heading', { name: 'Dungeon route simulations' }).waitFor(); + await page.locator('.dungeon-sim-admin__catalog select').nth(0).selectOption('wailing-caverns'); + await page.getByText(/1 runs for this route/).waitFor(); + await capture('05-saved-replay'); + + await page.getByRole('button', { name: 'Watch' }).first().click(); + await page.getByText('Recorded replay').waitFor(); + await page.getByLabel('Replay position').waitFor(); + await page.waitForTimeout(6000); + await page.getByRole('button', { name: 'Play' }).click(); + await page.waitForTimeout(800); + await capture('06-replay-controls'); + await page.getByRole('button', { name: 'Pause' }).click(); + const pausedReplayTime = await page.locator('.dungeon-sim-hud__header > time').innerText(); + await page.waitForTimeout(500); + assert.equal(await page.locator('.dungeon-sim-hud__header > time').innerText(), pausedReplayTime, 'replay pause freezes playback time'); + await page.getByRole('button', { name: '4×' }).click(); + await page.getByRole('button', { name: 'Play' }).click(); + await page.waitForTimeout(600); + await capture('07-replay-4x'); + + assert.deepEqual(errors, [], `No browser page errors: ${errors.join('; ')}`); + console.log('Dungeon simulation browser smoke test passed.'); + } finally { + await browser.close(); + await new Promise((resolve) => runtime.server.close(resolve)); + } +})().catch((error) => { + console.error(error); + process.exitCode = 1; +}); diff --git a/scripts/playtest-mouse-camera.cjs b/scripts/playtest-mouse-camera.cjs new file mode 100644 index 00000000..6953c753 --- /dev/null +++ b/scripts/playtest-mouse-camera.cjs @@ -0,0 +1,148 @@ +const assert = require("node:assert/strict"); +const fs = require("node:fs"); +const path = require("node:path"); +const { chromium } = require("C:/Users/phenom/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/node_modules/playwright"); + +const base = process.env.MOUSE_CAMERA_TEST_URL || "http://127.0.0.1:5176"; +const directory = path.resolve("playtest-artifacts/mouse-camera"); +fs.mkdirSync(directory, { recursive: true }); + +(async () => { + const browser = await chromium.launch({ channel: "msedge", headless: true }); + const page = await browser.newPage({ viewport: { width: 1440, height: 900 } }); + page.setDefaultTimeout(120_000); + const errors = []; + page.on("pageerror", (error) => errors.push(error.message)); + + const gameState = () => page.evaluate(async () => { + const storeEntry = performance.getEntriesByType("resource") + .findLast((entry) => new URL(entry.name).pathname === "/src/game/store.ts"); + if (!storeEntry) throw new Error("game store module was not loaded"); + const { useGameStore } = await import(storeEntry.name); + const state = useGameStore.getState(); + return { + cameraLookActive: state.cameraLookActive, + cameraYaw: state.cameraYaw, + pointerLocked: document.pointerLockElement !== null, + selection: window.getSelection()?.toString() ?? "", + }; + }); + + try { + await page.goto(base, { waitUntil: "domcontentloaded" }); + await page.getByRole("button", { name: /Play offline/ }).click(); + await page.getByRole("button", { name: /Create character/ }).click(); + await page.getByRole("button", { name: /Customize & name/ }).click(); + await page.getByLabel("Character name").fill("Mouselooker"); + await page.getByRole("button", { name: /Create character/ }).click(); + await page.getByRole("button", { name: /Continue|Enter world/ }).first().click(); + await page.locator(".main-menu-screen").waitFor(); + await page.getByRole("button", { name: /^Dungeons/ }).click(); + await page.getByRole("button", { name: /Choose role/ }).click(); + await page.locator(".dungeon-role-option").first().click(); + await page.locator(".game-shell").waitFor(); + await page.waitForFunction(async () => { + const storeEntry = performance.getEntriesByType("resource") + .findLast((entry) => new URL(entry.name).pathname === "/src/game/store.ts"); + if (!storeEntry) return false; + const { useGameStore } = await import(storeEntry.name); + return ["ready", "proxy", "error"].includes(useGameStore.getState().assetStatus); + }); + await page.locator(".loading-screen").waitFor({ state: "hidden" }); + await page.waitForTimeout(1_000); + + const selectionBefore = await page.evaluate(() => { + const fixture = document.createElement("p"); + fixture.textContent = "Existing browser selection"; + fixture.style.userSelect = "text"; + fixture.style.position = "fixed"; + fixture.style.left = "-10000px"; + document.body.append(fixture); + const range = document.createRange(); + range.selectNodeContents(fixture); + const selection = window.getSelection(); + if (!selection) throw new Error("browser selection API is unavailable"); + selection.removeAllRanges(); + selection.addRange(range); + return selection.toString(); + }); + assert.equal(selectionBefore, "Existing browser selection"); + + const scene = page.locator(".scene-shell"); + const bounds = await scene.boundingBox(); + assert(bounds, "3D scene is visible"); + const cdp = await page.context().newCDPSession(page); + const start = { x: bounds.x + bounds.width * 0.55, y: bounds.y + bounds.height * 0.55 }; + const before = await gameState(); + assert.equal(before.cameraLookActive, false); + await page.mouse.move(start.x, start.y); + await page.mouse.down({ button: "right" }); + await page.waitForFunction(async () => { + const storeEntry = performance.getEntriesByType("resource") + .findLast((entry) => new URL(entry.name).pathname === "/src/game/store.ts"); + if (!storeEntry) return false; + const { useGameStore } = await import(storeEntry.name); + return useGameStore.getState().cameraLookActive; + }); + const captured = await gameState(); + assert.equal(captured.pointerLocked, false); + assert.equal(captured.selection, ""); + + await cdp.send("Input.dispatchMouseEvent", { + type: "mouseMoved", + x: start.x + 160, + y: start.y - 55, + button: "right", + buttons: 2, + pointerType: "mouse", + }); + await page.waitForTimeout(350); + const moved = await gameState(); + assert.notEqual(moved.cameraYaw, before.cameraYaw); + await page.screenshot({ path: path.join(directory, "right-drag-camera.png") }); + + await page.mouse.up({ button: "right" }); + await page.waitForFunction(async () => { + const storeEntry = performance.getEntriesByType("resource") + .findLast((entry) => new URL(entry.name).pathname === "/src/game/store.ts"); + if (!storeEntry) return false; + const { useGameStore } = await import(storeEntry.name); + return !useGameStore.getState().cameraLookActive; + }); + const released = await gameState(); + await page.mouse.move(start.x - 120, start.y + 70, { steps: 8 }); + await page.waitForTimeout(350); + const afterReleaseMove = await gameState(); + assert.equal(afterReleaseMove.cameraYaw, released.cameraYaw); + assert.equal(afterReleaseMove.pointerLocked, false); + assert.equal( + await page.locator(".game-shell").evaluate((element) => getComputedStyle(element).userSelect), + "none", + ); + assert.deepEqual(errors, []); + + const result = { + passed: true, + yawBefore: before.cameraYaw, + yawDuringDrag: moved.cameraYaw, + yawAfterRelease: afterReleaseMove.cameraYaw, + pointerLocked: afterReleaseMove.pointerLocked, + selectionCleared: captured.selection === "", + errors, + }; + fs.writeFileSync(path.join(directory, "results.json"), `${JSON.stringify(result, null, 2)}\n`); + console.log(JSON.stringify(result, null, 2)); + console.log("Mouse camera playtest passed"); + } catch (error) { + await page.mouse.up({ button: "right" }).catch(() => {}); + await page.screenshot({ path: path.join(directory, "failure.png") }); + console.log((await page.locator("body").innerText()).slice(-2_000)); + console.log("Browser errors:", errors); + throw error; + } finally { + await browser.close(); + } +})().catch((error) => { + console.error(error); + process.exitCode = 1; +}); diff --git a/scripts/test_balance_lab.py b/scripts/test_balance_lab.py new file mode 100644 index 00000000..8fc64e91 --- /dev/null +++ b/scripts/test_balance_lab.py @@ -0,0 +1,122 @@ +import unittest + +from scripts.balance_lab import ( + aggregate_class_abilities, + aggregate_class_specs, + automatic_parties, + random_party, + search_bosses, + tuning_label, +) + + +class BalanceLabControllerTests(unittest.TestCase): + def test_random_party_is_repeatable_and_complete(self) -> None: + builds = [ + {"id": "tank-a", "role": "tank"}, + {"id": "tank-b", "role": "tank"}, + {"id": "healer-a", "role": "healer"}, + {"id": "healer-b", "role": "healer"}, + *({"id": f"damage-{index}", "role": "damage"} for index in range(6)), + ] + first = random_party(builds, 17) + second = random_party(builds, 17) + self.assertEqual(first, second) + self.assertEqual([member["role"] for member in first], [ + "tank", "healer", "damage", "damage", "damage", + ]) + self.assertEqual(len({member["id"] for member in first[2:]}), 3) + + def test_tuning_flags_keep_both_sides_of_the_median(self) -> None: + self.assertEqual(tuning_label(1.51), "very high") + self.assertEqual(tuning_label(1.25), "high") + self.assertEqual(tuning_label(1.0), "baseline") + self.assertEqual(tuning_label(0.75), "low") + self.assertEqual(tuning_label(0.49), "very low") + self.assertEqual(tuning_label(None), "no baseline") + + def test_automatic_parties_are_unique_repeatable_and_source_isolated(self) -> None: + builds = [] + for source in ("wow", "coa"): + builds.extend([ + {"id": f"{source}-tank-a", "source": source, "role": "tank"}, + {"id": f"{source}-tank-b", "source": source, "role": "tank"}, + {"id": f"{source}-healer-a", "source": source, "role": "healer"}, + {"id": f"{source}-healer-b", "source": source, "role": "healer"}, + *({"id": f"{source}-damage-{index}", "source": source, "role": "damage"} + for index in range(6)), + ]) + first = automatic_parties(builds, ("wow", "coa"), 4, 29) + second = automatic_parties(builds, ("wow", "coa"), 4, 29) + self.assertEqual(first, second) + self.assertEqual(len(first), 8) + self.assertEqual(len({configuration["id"] for configuration in first}), 8) + for configuration in first: + self.assertTrue(all(member["source"] == configuration["source"] for member in configuration["party"])) + self.assertEqual([member["role"] for member in configuration["party"]], [ + "tank", "healer", "damage", "damage", "damage", + ]) + + def test_boss_search_matches_name_dungeon_key_and_source(self) -> None: + bosses = [ + {"key": "gundrak/eck", "name": "Eck the Ferocious", "dungeonTitle": "Gundrak", "category": "wow"}, + {"key": "abbey/duke", "name": "Duke", "dungeonTitle": "Forsaken Abbey", "category": "rom"}, + ] + self.assertEqual([boss["key"] for boss in search_bosses("ferocious", bosses)], ["gundrak/eck"]) + self.assertEqual([boss["key"] for boss in search_bosses("forsaken", bosses)], ["abbey/duke"]) + self.assertEqual([boss["key"] for boss in search_bosses("rom", bosses)], ["abbey/duke"]) + + def test_class_spec_aggregate_keeps_rate_and_absolute_damage_taken(self) -> None: + key = ("wow", "priest-holy", "priest", "Priest", "Holy", "healer") + rows = aggregate_class_specs({key: [ + { + "partyConfigurationId": "wow-party-001", "elapsedSeconds": 10, + "damage": 200, "bossDamage": 180, "healing": 500, + "damageTaken": 120, "absorbs": 25, "deathEvents": 0, + }, + { + "partyConfigurationId": "wow-party-002", "elapsedSeconds": 20, + "damage": 400, "bossDamage": 360, "healing": 900, + "damageTaken": 330, "absorbs": 50, "deathEvents": 1, + }, + ]}) + self.assertEqual(len(rows), 1) + self.assertEqual(rows[0]["dtps"], 15) + self.assertEqual(rows[0]["totalDamageTaken"], 450) + + def test_ability_aggregate_keeps_used_and_available_but_unused_rows(self) -> None: + class_key = ("wow", "mage-fire", "mage", "Mage", "Fire", "damage") + class_runs = [ + {"partyConfigurationId": "party-1", "bossKey": "boss-1", "elapsedSeconds": 10, "damage": 100}, + {"partyConfigurationId": "party-2", "bossKey": "boss-2", "elapsedSeconds": 10, "damage": 100}, + ] + base = { + "abilityName": "Fireball", "icon": "/fireball.png", "categories": ["damage"], + "cooldownSeconds": 0, "available": True, "casts": 0, "hits": 0, + "rawDamage": 0, "effectiveDamage": 0, "rawHealing": 0, + "effectiveHealing": 0, "overheal": 0, "absorbs": 0, + } + groups = { + (*class_key, "mage-fireball"): [ + {**base, "partyConfigurationId": "party-1", "bossKey": "boss-1", "elapsedSeconds": 10, + "used": True, "casts": 1, "hits": 1, "rawDamage": 120, "effectiveDamage": 100}, + {**base, "partyConfigurationId": "party-2", "bossKey": "boss-2", "elapsedSeconds": 10, + "used": False}, + ], + (*class_key, "mage-unused-blast"): [ + {**base, "abilityName": "Unused Blast", "partyConfigurationId": "party-1", + "bossKey": "boss-1", "elapsedSeconds": 10, "used": False}, + {**base, "abilityName": "Unused Blast", "partyConfigurationId": "party-2", + "bossKey": "boss-2", "elapsedSeconds": 10, "used": False}, + ], + } + rows = aggregate_class_abilities(groups, {class_key: class_runs}) + by_id = {row["abilityId"]: row for row in rows} + self.assertEqual(by_id["mage-fireball"]["activeRuns"], 1) + self.assertEqual(by_id["mage-fireball"]["usageRate"], 0.5) + self.assertEqual(by_id["mage-fireball"]["damageShare"], 0.5) + self.assertTrue(by_id["mage-unused-blast"]["unusedAvailable"]) + + +if __name__ == "__main__": + unittest.main() diff --git a/server/balance-lab-jobs.mjs b/server/balance-lab-jobs.mjs new file mode 100644 index 00000000..634dfe55 --- /dev/null +++ b/server/balance-lab-jobs.mjs @@ -0,0 +1,416 @@ +import { randomUUID } from "node:crypto"; +import { spawn } from "node:child_process"; +import { + createReadStream, + existsSync, + mkdirSync, + readFileSync, + readdirSync, + statSync, + writeFileSync, +} from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import { GameDatabaseError } from "./database.mjs"; + +const SOURCES = new Set(["wow", "coa", "rom", "all"]); +const BOSS_CATEGORIES = new Set(["all", "wow", "rom"]); +const JOB_STATUSES = new Set(["queued", "running", "complete", "failed"]); +const JOB_METADATA_NAME = "job.json"; +const JOB_ID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; +const ARTIFACTS = new Map([ + ["suite-report.html", "text/html; charset=utf-8"], + ["suite-report.json", "application/json; charset=utf-8"], + ["suite-report.md", "text/markdown; charset=utf-8"], + ["party_configurations.csv", "text/csv; charset=utf-8"], + ["class_specs_across_parties.csv", "text/csv; charset=utf-8"], + ["class_abilities_across_parties.csv", "text/csv; charset=utf-8"], + ["class_spec_by_boss.csv", "text/csv; charset=utf-8"], + ["bosses_across_parties.csv", "text/csv; charset=utf-8"], + ["boss_by_party.csv", "text/csv; charset=utf-8"], + ["suite_runs.csv", "text/csv; charset=utf-8"], + ["suite-config.json", "application/json; charset=utf-8"], +]); + +function integer(value, name, minimum, maximum) { + const parsed = Number(value); + if (!Number.isInteger(parsed) || parsed < minimum || parsed > maximum) { + throw new GameDatabaseError(`${name} must be a whole number from ${minimum} through ${maximum}.`, 400, "invalid_balance_lab_job"); + } + return parsed; +} + +export function normalizeBalanceLabJobSpec(input) { + const source = String(input?.source ?? "all").toLowerCase(); + const bossCategory = String(input?.bossCategory ?? "all").toLowerCase(); + if (!SOURCES.has(source)) { + throw new GameDatabaseError("Party source must be wow, coa, rom, or all.", 400, "invalid_balance_lab_job"); + } + if (!BOSS_CATEGORIES.has(bossCategory)) { + throw new GameDatabaseError("Boss category must be all, wow, or rom.", 400, "invalid_balance_lab_job"); + } + const rawBossKeys = Array.isArray(input?.bossKeys) ? input.bossKeys : []; + if (rawBossKeys.length > 500) { + throw new GameDatabaseError("Select no more than 500 bosses.", 400, "invalid_balance_lab_job"); + } + const bossKeys = [...new Set(rawBossKeys.map((value) => String(value).trim()).filter(Boolean))]; + if (bossKeys.some((key) => key.length > 240 || !/^[A-Za-z0-9._:/-]+$/.test(key))) { + throw new GameDatabaseError("A selected boss key is invalid.", 400, "invalid_balance_lab_job"); + } + const spec = Object.freeze({ + source, + level: integer(input?.level ?? 60, "Level", 1, 80), + partyConfigurations: integer(input?.partyConfigurations ?? 10, "Party configurations", 1, 100), + simulationsPerParty: integer(input?.simulationsPerParty ?? 3, "Simulations per party", 1, 100), + durationSeconds: integer(input?.durationSeconds ?? 60, "Fight duration", 5, 600), + partySeed: integer(input?.partySeed ?? 1, "Party seed", -2_147_483_648, 2_147_483_647), + bossCategory, + bossKeys: Object.freeze(bossKeys), + }); + const sourceCount = spec.source === "all" ? 3 : 1; + const bossEstimate = Math.max(1, spec.bossKeys.length || (spec.bossCategory === "all" ? 500 : 300)); + const estimatedRuns = sourceCount * spec.partyConfigurations * spec.simulationsPerParty * bossEstimate; + if (estimatedRuns > 250_000) { + throw new GameDatabaseError( + "That job is too large for one server request. Reduce parties, simulations, or selected bosses.", + 400, + "balance_lab_job_too_large", + ); + } + return spec; +} + +export function balanceLabCommand(spec, outputDir, options = {}) { + const projectRoot = path.resolve(options.projectRoot ?? fileURLToPath(new URL("..", import.meta.url))); + const executable = String(options.pythonExecutable + ?? process.env.BALANCE_LAB_PYTHON + ?? (process.platform === "win32" ? "python" : "python3")); + const args = [ + path.join(projectRoot, "scripts", "balance_lab.py"), + "--source", spec.source, + "--level", String(spec.level), + "--party-mode", "automatic", + "--party-seed", String(spec.partySeed), + "--party-configurations", String(spec.partyConfigurations), + "--simulations-per-party", String(spec.simulationsPerParty), + "--duration", String(spec.durationSeconds), + "--boss-category", spec.bossCategory, + "--output-dir", outputDir, + ]; + for (const bossKey of spec.bossKeys) args.push("--boss", bossKey); + return { executable, args, cwd: projectRoot }; +} + +function publicJob(job) { + return { + id: job.id, + status: job.status, + createdAt: job.createdAt, + startedAt: job.startedAt, + completedAt: job.completedAt, + requestedBy: job.requestedBy, + spec: job.spec, + progress: { ...job.progress }, + artifacts: [...job.artifacts], + error: job.error, + logTail: [...job.logTail], + summary: job.summary ? { ...job.summary } : null, + }; +} + +function reportSummary(outputDir) { + const reportPath = path.join(outputDir, "suite-report.json"); + if (!existsSync(reportPath)) return null; + try { + const summary = JSON.parse(readFileSync(reportPath, "utf8"))?.summary; + if (!summary || typeof summary !== "object") return null; + return { + partyConfigurations: Number(summary.partyConfigurations) || 0, + bosses: Number(summary.bosses) || 0, + runs: Number(summary.runs) || 0, + classSpecs: Number(summary.classSpecs) || 0, + classAbilities: Number(summary.classAbilities) || 0, + bossPressureMedianDtps: Number(summary.bossPressureMedianDtps) || 0, + }; + } catch { + return null; + } +} + +function lineCollector(onLine) { + let pending = ""; + return { + push(chunk) { + pending += String(chunk); + const lines = pending.split(/\r?\n/); + pending = lines.pop() ?? ""; + for (const line of lines) if (line.trim()) onLine(line.trim()); + }, + flush() { + if (pending.trim()) onLine(pending.trim()); + pending = ""; + }, + }; +} + +export function createBalanceLabJobService(options = {}) { + const projectRoot = path.resolve(options.projectRoot ?? fileURLToPath(new URL("..", import.meta.url))); + const dataDir = path.resolve(options.dataDir ?? process.env.DATA_DIR ?? "data/runtime"); + const jobsDir = path.join(dataDir, "balance-lab", "jobs"); + const configuredConcurrency = Number(options.maxConcurrent ?? process.env.BALANCE_LAB_MAX_CONCURRENT ?? 1); + const maxConcurrent = Number.isFinite(configuredConcurrency) && configuredConcurrency >= 1 + ? Math.min(4, Math.floor(configuredConcurrency)) + : 1; + const configuredQueueLimit = Number(options.maxQueued ?? process.env.BALANCE_LAB_MAX_QUEUED ?? 8); + const maxQueued = Number.isFinite(configuredQueueLimit) && configuredQueueLimit >= 1 + ? Math.min(50, Math.floor(configuredQueueLimit)) + : 8; + const launch = options.spawnProcess ?? spawn; + const jobs = new Map(); + const queue = []; + const children = new Map(); + let running = 0; + let closed = false; + mkdirSync(jobsDir, { recursive: true }); + + function persistJob(job) { + const record = publicJob(job); + writeFileSync(path.join(job.outputDir, JOB_METADATA_NAME), `${JSON.stringify(record, null, 2)}\n`, "utf8"); + } + + function restoreJobs() { + for (const entry of readdirSync(jobsDir, { withFileTypes: true })) { + if (!entry.isDirectory() || !JOB_ID_PATTERN.test(entry.name)) continue; + const outputDir = path.join(jobsDir, entry.name); + const metadataPath = path.join(outputDir, JOB_METADATA_NAME); + const reportPath = path.join(outputDir, "suite-report.json"); + if (!existsSync(metadataPath) && !existsSync(reportPath)) continue; + try { + let stored; + if (existsSync(metadataPath)) { + stored = JSON.parse(readFileSync(metadataPath, "utf8")); + } else { + const legacyReport = JSON.parse(readFileSync(reportPath, "utf8")); + const legacyConfig = JSON.parse(readFileSync(path.join(outputDir, "suite-config.json"), "utf8")); + stored = { + status: "complete", + createdAt: legacyReport.generatedAt, + completedAt: legacyReport.generatedAt, + requestedBy: "unknown (legacy run)", + spec: { + source: legacyConfig.source, + level: legacyConfig.level, + partyConfigurations: legacyConfig.partyConfigurationsPerSource, + simulationsPerParty: legacyConfig.simulationsPerParty, + durationSeconds: legacyConfig.durationSeconds, + partySeed: legacyConfig.partySeed, + bossCategory: legacyConfig.bossCategory, + bossKeys: legacyConfig.bossKeys ?? [], + }, + progress: {}, + logTail: ["Imported from a Balance Lab report created before run-history persistence."], + }; + } + const spec = normalizeBalanceLabJobSpec(stored.spec); + const hasReport = existsSync(reportPath); + const storedStatus = JOB_STATUSES.has(stored.status) ? stored.status : "failed"; + const interrupted = !hasReport && (storedStatus === "queued" || storedStatus === "running"); + const totalParties = spec.partyConfigurations * (spec.source === "all" ? 3 : 1); + const createdAt = typeof stored.createdAt === "string" + ? stored.createdAt + : statSync(outputDir).birthtime.toISOString(); + const job = { + id: entry.name, + status: hasReport ? "complete" : interrupted ? "failed" : storedStatus, + createdAt, + startedAt: typeof stored.startedAt === "string" ? stored.startedAt : null, + completedAt: hasReport || interrupted + ? (typeof stored.completedAt === "string" ? stored.completedAt : new Date().toISOString()) + : null, + requestedBy: typeof stored.requestedBy === "string" ? stored.requestedBy : "unknown", + spec, + progress: { + party: Number(stored.progress?.party) || 0, + partiesCompleted: hasReport ? totalParties : Number(stored.progress?.partiesCompleted) || 0, + partiesTotal: totalParties, + simulationsCompleted: Number(stored.progress?.simulationsCompleted) || 0, + simulationsTotal: Number(stored.progress?.simulationsTotal) || 0, + }, + artifacts: hasReport + ? [...ARTIFACTS.keys()].filter((name) => existsSync(path.join(outputDir, name))) + : [], + error: interrupted + ? "The server restarted before this Balance Lab job completed. Run it again to produce a report." + : (typeof stored.error === "string" ? stored.error : null), + logTail: Array.isArray(stored.logTail) + ? stored.logTail.filter((line) => typeof line === "string").slice(-80) + : [], + summary: hasReport ? reportSummary(outputDir) : null, + outputDir, + }; + jobs.set(job.id, job); + persistJob(job); + } catch (error) { + console.warn(`[balance-lab] Could not restore ${entry.name}: ${error?.message ?? error}`); + } + } + } + + restoreJobs(); + + function appendLog(job, line) { + job.logTail.push(line.slice(0, 1_000)); + if (job.logTail.length > 80) job.logTail.splice(0, job.logTail.length - 80); + const party = /^Party\s+(\d+)\/(\d+):/i.exec(line); + if (party) { + job.progress.party = Number(party[1]); + job.progress.partiesTotal = Number(party[2]); + job.progress.partiesCompleted = Math.max(0, Number(party[1]) - 1); + job.progress.simulationsCompleted = 0; + job.progress.simulationsTotal = 0; + } + const simulations = /^\[balance-lab]\s+(\d+)\/(\d+)\s+/i.exec(line); + if (simulations) { + job.progress.simulationsCompleted = Number(simulations[1]); + job.progress.simulationsTotal = Number(simulations[2]); + } + persistJob(job); + } + + function pump() { + if (closed) return; + while (running < maxConcurrent && queue.length) { + const job = queue.shift(); + if (!job || job.status !== "queued") continue; + running += 1; + job.status = "running"; + job.startedAt = new Date().toISOString(); + persistJob(job); + const command = balanceLabCommand(job.spec, job.outputDir, { + projectRoot, + pythonExecutable: options.pythonExecutable, + }); + const child = launch(command.executable, command.args, { + cwd: command.cwd, + env: { ...process.env, PYTHONUNBUFFERED: "1" }, + windowsHide: true, + stdio: ["ignore", "pipe", "pipe"], + }); + children.set(job.id, child); + const stdout = lineCollector((line) => appendLog(job, line)); + const stderr = lineCollector((line) => appendLog(job, line)); + child.stdout?.on("data", (chunk) => stdout.push(chunk)); + child.stderr?.on("data", (chunk) => stderr.push(chunk)); + let settled = false; + const finish = (error, code = null) => { + if (settled) return; + settled = true; + stdout.flush(); + stderr.flush(); + children.delete(job.id); + running = Math.max(0, running - 1); + job.completedAt = new Date().toISOString(); + if (!error && code === 0 && existsSync(path.join(job.outputDir, "suite-report.json"))) { + job.status = "complete"; + job.progress.partiesCompleted = job.progress.partiesTotal; + job.progress.simulationsCompleted = job.progress.simulationsTotal; + job.artifacts = [...ARTIFACTS.keys()].filter((name) => existsSync(path.join(job.outputDir, name))); + job.summary = reportSummary(job.outputDir); + } else { + job.status = "failed"; + job.error = error?.message + ?? (code === 0 + ? "Balance Lab ended without producing its suite report." + : `Balance Lab process exited with code ${code ?? "unknown"}.`); + } + persistJob(job); + pump(); + }; + child.once("error", (error) => finish(new Error( + error?.code === "ENOENT" + ? `Could not start ${command.executable}. Install Python 3 on the server or set BALANCE_LAB_PYTHON.` + : `Could not start the Balance Lab process: ${error?.message ?? error}`, + ))); + child.once("close", (code) => finish(null, code)); + } + } + + function requireJob(id) { + const job = jobs.get(id); + if (!job) throw new GameDatabaseError("Balance Lab job was not found.", 404, "balance_lab_job_not_found"); + return job; + } + + return { + start(input, account) { + if (closed) throw new GameDatabaseError("Balance Lab runner is shutting down.", 503, "balance_lab_unavailable"); + const pending = [...jobs.values()].filter((job) => job.status === "queued" || job.status === "running").length; + if (pending >= maxQueued) { + throw new GameDatabaseError( + "The Balance Lab server queue is full. Wait for a running job to finish.", + 429, + "balance_lab_queue_full", + ); + } + const spec = normalizeBalanceLabJobSpec(input); + const id = randomUUID(); + const outputDir = path.join(jobsDir, id); + mkdirSync(outputDir, { recursive: true }); + const totalParties = spec.partyConfigurations * (spec.source === "all" ? 3 : 1); + const job = { + id, + status: "queued", + createdAt: new Date().toISOString(), + startedAt: null, + completedAt: null, + requestedBy: account.username, + spec, + progress: { + party: 0, + partiesCompleted: 0, + partiesTotal: totalParties, + simulationsCompleted: 0, + simulationsTotal: 0, + }, + artifacts: [], + error: null, + logTail: [], + summary: null, + outputDir, + }; + jobs.set(id, job); + persistJob(job); + queue.push(job); + pump(); + return publicJob(job); + }, + list() { + return [...jobs.values()] + .sort((left, right) => Date.parse(right.createdAt) - Date.parse(left.createdAt)) + .slice(0, 100) + .map(publicJob); + }, + get(id) { + return publicJob(requireJob(id)); + }, + artifact(id, name) { + const job = requireJob(id); + if (!JOB_STATUSES.has(job.status) || job.status !== "complete") { + throw new GameDatabaseError("Balance Lab artifacts are available after the job completes.", 409, "balance_lab_job_incomplete"); + } + const contentType = ARTIFACTS.get(name); + if (!contentType || !job.artifacts.includes(name)) { + throw new GameDatabaseError("Balance Lab artifact was not found.", 404, "balance_lab_artifact_not_found"); + } + const filePath = path.join(job.outputDir, name); + const stats = statSync(filePath); + return { filePath, contentType, size: stats.size, stream: () => createReadStream(filePath) }; + }, + close() { + closed = true; + queue.length = 0; + for (const child of children.values()) child.kill(); + children.clear(); + }, + }; +} diff --git a/server/balance-lab-jobs.test.mjs b/server/balance-lab-jobs.test.mjs new file mode 100644 index 00000000..b89a704c --- /dev/null +++ b/server/balance-lab-jobs.test.mjs @@ -0,0 +1,250 @@ +import assert from "node:assert/strict"; +import { EventEmitter } from "node:events"; +import { existsSync, mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs"; +import os from "node:os"; +import path from "node:path"; +import { PassThrough } from "node:stream"; +import test from "node:test"; +import { + balanceLabCommand, + createBalanceLabJobService, + normalizeBalanceLabJobSpec, +} from "./balance-lab-jobs.mjs"; + +test("normalizes and bounds server Balance Lab requests", () => { + const spec = normalizeBalanceLabJobSpec({ + source: "ALL", + level: 40, + partyConfigurations: 2, + simulationsPerParty: 3, + durationSeconds: 45, + partySeed: 17, + bossCategory: "all", + bossKeys: ["gundrak/entry-29932", "gundrak/entry-29932"], + }); + assert.equal(spec.source, "all"); + assert.deepEqual(spec.bossKeys, ["gundrak/entry-29932"]); + assert.throws( + () => normalizeBalanceLabJobSpec({ source: "wow", level: 81 }), + /Level must be a whole number/, + ); + assert.throws( + () => normalizeBalanceLabJobSpec({ source: "wow", bossKeys: ["boss; shutdown"] }), + /boss key is invalid/, + ); +}); + +test("builds an argument-array command without a shell", () => { + const spec = normalizeBalanceLabJobSpec({ + source: "rom", level: 60, partyConfigurations: 4, simulationsPerParty: 2, + durationSeconds: 30, partySeed: 9, bossCategory: "rom", bossKeys: ["abbey/boss-1"], + }); + const command = balanceLabCommand(spec, "C:/reports/job", { + projectRoot: "C:/app", + pythonExecutable: "python-custom", + }); + assert.equal(command.executable, "python-custom"); + assert.equal(command.args.includes("--party-mode"), true); + assert.equal(command.args.includes("automatic"), true); + assert.equal(command.args.includes("abbey/boss-1"), true); + assert.equal(command.cwd, path.resolve("C:/app")); +}); + +test("queues a job, reports progress, and exposes only allow-listed artifacts", async () => { + const directory = mkdtempSync(path.join(os.tmpdir(), "healer-man-balance-job-")); + try { + const spawnProcess = (_executable, args) => { + const child = new EventEmitter(); + child.stdout = new PassThrough(); + child.stderr = new PassThrough(); + child.kill = () => child.emit("close", null); + const outputIndex = args.indexOf("--output-dir"); + const outputDir = args[outputIndex + 1]; + setImmediate(() => { + mkdirSync(outputDir, { recursive: true }); + writeFileSync(path.join(outputDir, "suite-report.json"), "{}\n"); + child.stdout.write("Party 1/1: wow-party-001\n"); + child.stderr.write("[balance-lab] 1/1 Eck the Ferocious seed 1\n"); + child.stdout.end(); + child.stderr.end(); + child.emit("close", 0); + }); + return child; + }; + const service = createBalanceLabJobService({ + dataDir: directory, + projectRoot: directory, + spawnProcess, + pythonExecutable: "python-test", + }); + const started = service.start({ + source: "wow", level: 40, partyConfigurations: 1, simulationsPerParty: 1, + durationSeconds: 5, partySeed: 1, bossCategory: "all", bossKeys: ["gundrak/entry-29932"], + }, { username: "Phenom" }); + assert.equal(started.status, "running"); + await new Promise((resolve) => setImmediate(resolve)); + const completed = service.get(started.id); + assert.equal(completed.status, "complete"); + assert.equal(completed.progress.partiesCompleted, 1); + assert.deepEqual(completed.artifacts, ["suite-report.json"]); + assert.equal(service.artifact(started.id, "suite-report.json").size, 3); + assert.throws(() => service.artifact(started.id, "../../game.db"), /artifact was not found/); + service.close(); + } finally { + rmSync(directory, { recursive: true, force: true }); + } +}); + +test("restores completed reports as previous runs after a server restart", async () => { + const directory = mkdtempSync(path.join(os.tmpdir(), "healer-man-balance-history-")); + try { + let launches = 0; + const spawnProcess = (_executable, args) => { + launches += 1; + const child = new EventEmitter(); + child.stdout = new PassThrough(); + child.stderr = new PassThrough(); + child.kill = () => child.emit("close", null); + const outputDir = args[args.indexOf("--output-dir") + 1]; + setImmediate(() => { + mkdirSync(outputDir, { recursive: true }); + writeFileSync(path.join(outputDir, "suite-report.json"), JSON.stringify({ + summary: { + partyConfigurations: 2, + bosses: 3, + runs: 6, + classSpecs: 5, + bossPressureMedianDtps: 123.5, + }, + })); + child.emit("close", 0); + }); + return child; + }; + const firstService = createBalanceLabJobService({ + dataDir: directory, + projectRoot: directory, + spawnProcess, + pythonExecutable: "python-test", + }); + const started = firstService.start({ + source: "wow", level: 40, partyConfigurations: 2, simulationsPerParty: 1, + durationSeconds: 5, partySeed: 1, bossCategory: "all", bossKeys: ["gundrak/entry-29932"], + }, { username: "Phenom" }); + await new Promise((resolve) => setImmediate(resolve)); + assert.equal(firstService.get(started.id).status, "complete"); + firstService.close(); + + const secondService = createBalanceLabJobService({ + dataDir: directory, + projectRoot: directory, + spawnProcess: () => { throw new Error("restored jobs must not relaunch"); }, + pythonExecutable: "python-test", + }); + const restored = secondService.list(); + assert.equal(restored.length, 1); + assert.equal(restored[0].id, started.id); + assert.equal(restored[0].status, "complete"); + assert.equal(restored[0].summary?.runs, 6); + assert.deepEqual(restored[0].artifacts, ["suite-report.json"]); + assert.equal(secondService.artifact(started.id, "suite-report.json").size > 0, true); + assert.equal(launches, 1); + secondService.close(); + } finally { + rmSync(directory, { recursive: true, force: true }); + } +}); + +test("marks an interrupted persisted run as failed when the service returns", () => { + const directory = mkdtempSync(path.join(os.tmpdir(), "healer-man-balance-interrupted-")); + try { + const jobsDir = path.join(directory, "balance-lab", "jobs"); + const id = "11111111-1111-4111-8111-111111111111"; + const outputDir = path.join(jobsDir, id); + mkdirSync(outputDir, { recursive: true }); + writeFileSync(path.join(outputDir, "job.json"), JSON.stringify({ + id, + status: "running", + createdAt: "2026-09-15T12:00:00.000Z", + startedAt: "2026-09-15T12:00:01.000Z", + requestedBy: "Phenom", + spec: { + source: "rom", level: 55, partyConfigurations: 1, simulationsPerParty: 1, + durationSeconds: 30, partySeed: 3, bossCategory: "rom", bossKeys: [], + }, + progress: { party: 1, partiesCompleted: 0, partiesTotal: 1 }, + artifacts: [], + error: null, + logTail: ["Party 1/1: rom-party-001"], + })); + const service = createBalanceLabJobService({ dataDir: directory, projectRoot: directory }); + const restored = service.get(id); + assert.equal(restored.status, "failed"); + assert.match(restored.error, /server restarted/i); + service.close(); + } finally { + rmSync(directory, { recursive: true, force: true }); + } +}); + +test("imports completed report directories created before history metadata existed", () => { + const directory = mkdtempSync(path.join(os.tmpdir(), "healer-man-balance-legacy-")); + try { + const id = "22222222-2222-4222-8222-222222222222"; + const outputDir = path.join(directory, "balance-lab", "jobs", id); + mkdirSync(outputDir, { recursive: true }); + writeFileSync(path.join(outputDir, "suite-report.json"), JSON.stringify({ + generatedAt: "2026-09-14T10:30:00.000Z", + summary: { partyConfigurations: 3, bosses: 2, runs: 12, classSpecs: 8, bossPressureMedianDtps: 50 }, + })); + writeFileSync(path.join(outputDir, "suite-config.json"), JSON.stringify({ + source: "coa", + level: 35, + partySeed: 12, + partyConfigurationsPerSource: 3, + simulationsPerParty: 2, + durationSeconds: 45, + bossCategory: "wow", + bossKeys: ["gundrak/entry-29932", "gundrak/entry-29304"], + })); + const service = createBalanceLabJobService({ dataDir: directory, projectRoot: directory }); + const restored = service.get(id); + assert.equal(restored.status, "complete"); + assert.equal(restored.spec.source, "coa"); + assert.equal(restored.summary?.runs, 12); + assert.equal(restored.requestedBy, "unknown (legacy run)"); + assert.equal(existsSync(path.join(outputDir, "job.json")), true); + service.close(); + } finally { + rmSync(directory, { recursive: true, force: true }); + } +}); + +test("bounds the number of pending server jobs", () => { + const directory = mkdtempSync(path.join(os.tmpdir(), "healer-man-balance-queue-")); + try { + const spawnProcess = () => { + const child = new EventEmitter(); + child.stdout = new PassThrough(); + child.stderr = new PassThrough(); + child.kill = () => child.emit("close", null); + return child; + }; + const service = createBalanceLabJobService({ + dataDir: directory, + projectRoot: directory, + spawnProcess, + pythonExecutable: "python-test", + maxQueued: 1, + }); + const request = { + source: "wow", level: 40, partyConfigurations: 1, simulationsPerParty: 1, + durationSeconds: 5, partySeed: 1, bossCategory: "all", bossKeys: ["gundrak/entry-29932"], + }; + service.start(request, { username: "Phenom" }); + assert.throws(() => service.start(request, { username: "Phenom" }), /server queue is full/); + service.close(); + } finally { + rmSync(directory, { recursive: true, force: true }); + } +}); diff --git a/server/database.mjs b/server/database.mjs index de8dc079..eae2b0f0 100644 --- a/server/database.mjs +++ b/server/database.mjs @@ -12,6 +12,7 @@ import { arenaRatingBand, calculateArenaRating, clampArenaRating } from "./arena import { arenaRoleForSpecialization } from "./arena-specializations.mjs"; import { createDungeonReportRepository } from "./dungeon-reports.mjs"; import { createDungeonLeaderboardRepository } from "./dungeon-leaderboards.mjs"; +import { createDungeonSimulationRepository } from "./dungeon-simulation.mjs"; import dungeonLeaderboardCatalog from "../src/game/generated/dungeonLeaderboardCatalog.generated.json" with { type: "json" }; const scrypt = promisify(scryptCallback); @@ -910,6 +911,7 @@ export function openGameDatabase(options = {}) { databasePath, ...createDungeonReportRepository(database, { isGameMaster, ErrorType: GameDatabaseError }), ...createDungeonLeaderboardRepository(database, { ErrorType: GameDatabaseError }), + ...createDungeonSimulationRepository(database, { isGameMaster, ErrorType: GameDatabaseError }), register, login, authenticate, diff --git a/server/database.test.mjs b/server/database.test.mjs index 47928d18..ac44fbc3 100644 --- a/server/database.test.mjs +++ b/server/database.test.mjs @@ -1,11 +1,13 @@ import assert from "node:assert/strict"; -import { mkdtempSync, rmSync } from "node:fs"; +import { mkdtempSync, readFileSync, rmSync } from "node:fs"; import os from "node:os"; import path from "node:path"; import test from "node:test"; import { DatabaseSync } from "node:sqlite"; import { GameDatabaseError, openGameDatabase } from "./database.mjs"; +const routeCatalog = JSON.parse(readFileSync(new URL("../src/game/generated/dungeonRouteCatalog.generated.json", import.meta.url), "utf8")); + function withDatabase(run) { const directory = mkdtempSync(path.join(os.tmpdir(), "healer-man-db-test-")); const database = openGameDatabase({ dataDir: directory, sessionTtlDays: 1 }); @@ -137,6 +139,103 @@ test("persists revisioned Manastorm GM configuration and rejects stale or unauth }), (error) => error instanceof GameDatabaseError && error.status === 400); })); +test("stores GM simulation replays and gates exact-hash route approval", () => withDatabase(async (database) => { + const gmAuth = await database.register("Phenom", "storm-admin"); + const playerAuth = await database.register("RoutePlayer", "route-player"); + const gm = database.authenticate(gmAuth.token); + const player = database.authenticate(playerAuth.token); + const routeHash = routeCatalog.routes.find((route) => route.dungeonId === "deadmines").hash; + const replay = { + schemaVersion: 1, + dungeonId: "deadmines", + routeId: "primary", + routeHash, + mode: "navigation-only", + seed: "deadmines:primary", + result: "completed", + startedAt: 1_700_000_000_000, + durationMs: 42_000, + report: { schemaVersion: 1, findings: [] }, + frames: [{ atMs: 0, actors: [] }], + events: [], + }; + + assert.throws(() => database.saveDungeonSimulationReplay(player, replay), (error) => ( + error instanceof GameDatabaseError && error.status === 403 + )); + assert.throws(() => database.putDungeonRouteReview(gm, "deadmines", "primary", { + routeHash, status: "Approved", expectedRevision: 0, + }), (error) => error instanceof GameDatabaseError && error.code === "route_run_required"); + + const saved = database.saveDungeonSimulationReplay(gm, replay); + assert.equal(saved.criticalFindings, 0); + assert.equal(database.getDungeonSimulationReplay(gm, saved.id).frames.length, 1); + assert.equal(database.getDungeonSimulationReport(gm, saved.id).schemaVersion, 1); + + const review = database.putDungeonRouteReview(gm, "deadmines", "primary", { + routeHash, status: "Approved", expectedRevision: 0, note: "Clean navigation-only pass.", + }); + assert.equal(review.revision, 1); + assert.deepEqual(database.listDungeonRouteApprovals().approvals.map(({ reviewedAt: _reviewedAt, ...entry }) => entry), [{ + dungeonId: "deadmines", routeId: "primary", routeHash, + }]); + assert.throws(() => database.putDungeonRouteReview(gm, "deadmines", "primary", { + routeHash, status: "NeedsWork", expectedRevision: 0, + }), (error) => error instanceof GameDatabaseError && error.status === 409); + assert.equal(database.deleteDungeonSimulationReplay(gm, saved.id).ok, true); +})); + +test("requires an override note when the latest exact-hash route run has critical findings", () => withDatabase(async (database) => { + const gmAuth = await database.register("Phenom", "storm-admin"); + const gm = database.authenticate(gmAuth.token); + const routeHash = routeCatalog.routes.find((route) => route.dungeonId === "blackfathom-deeps").hash; + database.saveDungeonSimulationReplay(gm, { + schemaVersion: 1, + dungeonId: "blackfathom-deeps", + routeId: "primary", + routeHash, + mode: "navigation-only", + seed: "route-seed", + result: "completed", + startedAt: 1_700_000_000_000, + durationMs: 10_000, + report: { schemaVersion: 1, findings: [{ severity: "critical", code: "no-path" }] }, + frames: [], + events: [], + }); + assert.throws(() => database.putDungeonRouteReview(gm, "blackfathom-deeps", "primary", { + routeHash, status: "Approved", expectedRevision: 0, + }), (error) => error instanceof GameDatabaseError && error.code === "route_override_required"); + const review = database.putDungeonRouteReview(gm, "blackfathom-deeps", "primary", { + routeHash, status: "Approved", expectedRevision: 0, criticalOverrideNote: "Known scripted lift gap.", + }); + assert.equal(review.status, "Approved"); + assert.equal(review.criticalOverrideNote, "Known scripted lift gap."); +})); + +test("requires the latest exact-hash route run to be completed before approval", () => withDatabase(async (database) => { + const gmAuth = await database.register("Phenom", "storm-admin"); + const gm = database.authenticate(gmAuth.token); + const routeHash = routeCatalog.routes.find((route) => route.dungeonId === "razorfen-downs").hash; + database.saveDungeonSimulationReplay(gm, { + schemaVersion: 1, + dungeonId: "razorfen-downs", + routeId: "primary", + routeHash, + mode: "full-combat", + seed: "incomplete-route-seed", + result: "stopped", + startedAt: 1_700_000_000_000, + durationMs: 10_000, + report: { schemaVersion: 1, findings: [] }, + frames: [], + events: [], + }); + assert.throws(() => database.putDungeonRouteReview(gm, "razorfen-downs", "primary", { + routeHash, status: "Approved", expectedRevision: 0, + }), (error) => error instanceof GameDatabaseError && error.code === "route_completed_run_required"); +})); + test("creates online groups through invitations and transfers leadership when the leader leaves", () => withDatabase(async (database) => { const leaderAuth = await database.register("GroupLeader", "group-pass"); const healerAuth = await database.register("GroupHealer", "healer-pass"); diff --git a/server/dungeon-simulation.mjs b/server/dungeon-simulation.mjs new file mode 100644 index 00000000..3805bca4 --- /dev/null +++ b/server/dungeon-simulation.mjs @@ -0,0 +1,331 @@ +import { randomUUID } from "node:crypto"; +import { gunzipSync, gzipSync } from "node:zlib"; +import { readFileSync } from "node:fs"; + +const routeCatalog = JSON.parse(readFileSync(new URL("../src/game/generated/dungeonRouteCatalog.generated.json", import.meta.url), "utf8")); +const generatedRoutes = new Map(routeCatalog.routes.map((route) => [`${route.dungeonId}:${route.id}:${route.hash}`, route])); + +export const DUNGEON_SIMULATION_REPLAY_SCHEMA_VERSION = 1; +export const DUNGEON_ROUTE_REVIEW_STATUSES = Object.freeze(["Candidate", "Approved", "NeedsWork"]); +export const DUNGEON_SIMULATION_RETENTION_MS = 30 * 24 * 60 * 60 * 1_000; +export const DUNGEON_SIMULATION_MAX_DURATION_MS = 2 * 60 * 60 * 1_000; +export const DUNGEON_SIMULATION_MAX_COMPRESSED_BYTES = 32 * 1024 * 1024; +export const DUNGEON_SIMULATION_MAX_DECOMPRESSED_BYTES = 256 * 1024 * 1024; +const MAX_ID_LENGTH = 256; +const MAX_NOTE_LENGTH = 1_000; +const HASH_PATTERN = /^[a-f0-9]{64}$/; + +function text(value, label, ErrorType, maximum = MAX_ID_LENGTH) { + if (typeof value !== "string" || !value.trim() || value.length > maximum) { + throw new ErrorType(`${label} must be a non-empty string no longer than ${maximum} characters.`, 400, "invalid_simulation_payload"); + } + return value.trim(); +} + +function optionalNote(value, label, ErrorType) { + if (value === undefined || value === null) return null; + if (typeof value !== "string" || value.length > MAX_NOTE_LENGTH) { + throw new ErrorType(`${label} must be a string no longer than ${MAX_NOTE_LENGTH} characters.`, 400, "invalid_simulation_payload"); + } + return value.replace(/\r\n?/g, "\n").trim() || null; +} + +function routeHash(value, ErrorType) { + const normalized = text(value, "routeHash", ErrorType, 64).toLowerCase(); + if (!HASH_PATTERN.test(normalized)) { + throw new ErrorType("routeHash must be a lowercase SHA-256 hash.", 400, "invalid_route_hash"); + } + return normalized; +} + +function integer(value, label, ErrorType, minimum, maximum) { + if (!Number.isInteger(value) || value < minimum || value > maximum) { + throw new ErrorType(`${label} must be an integer between ${minimum} and ${maximum}.`, 400, "invalid_simulation_payload"); + } + return value; +} + +function object(value, label, ErrorType) { + if (!value || typeof value !== "object" || Array.isArray(value)) { + throw new ErrorType(`${label} must be an object.`, 400, "invalid_simulation_payload"); + } + return value; +} + +function publicReplay(row) { + return { + id: row.id, + dungeonId: row.dungeon_id, + routeId: row.route_id, + routeHash: row.route_hash, + mode: row.mode, + seed: row.seed, + result: row.result, + startedAt: Number(row.started_at), + durationMs: Number(row.duration_ms), + criticalFindings: Number(row.critical_findings), + submittedBy: row.submitted_by_username, + createdAt: Number(row.created_at), + expiresAt: Number(row.expires_at), + compressedBytes: Number(row.compressed_bytes), + }; +} + +function publicReview(row) { + return { + dungeonId: row.dungeon_id, + routeId: row.route_id, + routeHash: row.route_hash, + status: row.status, + note: row.note, + criticalOverrideNote: row.critical_override_note, + reviewedBy: row.reviewed_by_username, + reviewedAt: Number(row.reviewed_at), + revision: Number(row.revision), + }; +} + +function normalizeReplay(input, ErrorType) { + const source = object(input, "replay", ErrorType); + if (source.schemaVersion !== DUNGEON_SIMULATION_REPLAY_SCHEMA_VERSION) { + throw new ErrorType("Unsupported dungeon simulation replay schema.", 400, "invalid_replay_schema"); + } + const mode = source.mode; + if (mode !== "full-combat" && mode !== "navigation-only") { + throw new ErrorType("Choose a valid simulation mode.", 400, "invalid_simulation_mode"); + } + const result = source.result; + if (!["completed", "wiped", "stopped", "recording-limit"].includes(result)) { + throw new ErrorType("Choose a valid simulation result.", 400, "invalid_simulation_result"); + } + const report = object(source.report, "report", ErrorType); + const findings = Array.isArray(report.findings) ? report.findings : []; + const criticalFindings = findings.filter((finding) => finding?.severity === "critical").length; + const normalized = { + ...source, + dungeonId: text(source.dungeonId, "dungeonId", ErrorType), + routeId: text(source.routeId, "routeId", ErrorType), + routeHash: routeHash(source.routeHash, ErrorType), + seed: text(source.seed, "seed", ErrorType), + startedAt: integer(source.startedAt, "startedAt", ErrorType, 1, Number.MAX_SAFE_INTEGER), + durationMs: integer(source.durationMs, "durationMs", ErrorType, 0, DUNGEON_SIMULATION_MAX_DURATION_MS), + mode, + result, + report, + }; + const serialized = Buffer.from(JSON.stringify(normalized)); + if (serialized.length > DUNGEON_SIMULATION_MAX_DECOMPRESSED_BYTES) { + throw new ErrorType("Replay is too large after decompression.", 413, "replay_too_large"); + } + const compressed = gzipSync(serialized, { level: 9 }); + if (compressed.length > DUNGEON_SIMULATION_MAX_COMPRESSED_BYTES) { + throw new ErrorType("Replay is too large after compression.", 413, "replay_too_large"); + } + return { normalized, compressed, criticalFindings }; +} + +export function createDungeonSimulationRepository(database, { isGameMaster, ErrorType }) { + database.exec(` + CREATE TABLE IF NOT EXISTS dungeon_route_reviews ( + dungeon_id TEXT NOT NULL, + route_id TEXT NOT NULL, + route_hash TEXT NOT NULL, + status TEXT NOT NULL CHECK (status IN ('Candidate', 'Approved', 'NeedsWork')), + note TEXT, + critical_override_note TEXT, + reviewed_by_account_id TEXT REFERENCES accounts(id) ON DELETE SET NULL, + reviewed_by_username TEXT NOT NULL, + reviewed_at INTEGER NOT NULL, + revision INTEGER NOT NULL DEFAULT 0, + PRIMARY KEY (dungeon_id, route_id) + ) STRICT; + CREATE TABLE IF NOT EXISTS dungeon_simulation_replays ( + id TEXT PRIMARY KEY, + schema_version INTEGER NOT NULL, + dungeon_id TEXT NOT NULL, + route_id TEXT NOT NULL, + route_hash TEXT NOT NULL, + mode TEXT NOT NULL CHECK (mode IN ('full-combat', 'navigation-only')), + seed TEXT NOT NULL, + result TEXT NOT NULL CHECK (result IN ('completed', 'wiped', 'stopped', 'recording-limit')), + started_at INTEGER NOT NULL, + duration_ms INTEGER NOT NULL, + critical_findings INTEGER NOT NULL, + report_json TEXT NOT NULL, + payload_gzip BLOB NOT NULL, + compressed_bytes INTEGER NOT NULL, + submitted_by_account_id TEXT REFERENCES accounts(id) ON DELETE SET NULL, + submitted_by_username TEXT NOT NULL, + created_at INTEGER NOT NULL, + expires_at INTEGER NOT NULL + ) STRICT; + CREATE INDEX IF NOT EXISTS dungeon_simulation_replays_route_idx + ON dungeon_simulation_replays(dungeon_id, route_id, route_hash, created_at DESC); + CREATE INDEX IF NOT EXISTS dungeon_simulation_replays_expiry_idx + ON dungeon_simulation_replays(expires_at); + `); + + const replayById = database.prepare("SELECT * FROM dungeon_simulation_replays WHERE id = ?"); + const reviewByRoute = database.prepare("SELECT * FROM dungeon_route_reviews WHERE dungeon_id = ? AND route_id = ?"); + + function requireGm(account) { + if (!isGameMaster(account)) { + throw new ErrorType("Game Master access is required.", 403, "gm_required"); + } + } + + function pruneExpiredDungeonSimulationReplays(now = Date.now()) { + return Number(database.prepare("DELETE FROM dungeon_simulation_replays WHERE expires_at <= ?").run(now).changes); + } + + return { + pruneExpiredDungeonSimulationReplays, + listDungeonRouteApprovals() { + return { + approvals: database.prepare(` + SELECT dungeon_id, route_id, route_hash, reviewed_at + FROM dungeon_route_reviews WHERE status = 'Approved' + ORDER BY dungeon_id, route_id + `).all().filter((row) => generatedRoutes.get(`${row.dungeon_id}:${row.route_id}:${row.route_hash}`)?.generationStatus === "Candidate").map((row) => ({ + dungeonId: row.dungeon_id, + routeId: row.route_id, + routeHash: row.route_hash, + reviewedAt: Number(row.reviewed_at), + })), + }; + }, + listDungeonRouteReviews(account) { + requireGm(account); + pruneExpiredDungeonSimulationReplays(); + const reviews = database.prepare("SELECT * FROM dungeon_route_reviews ORDER BY dungeon_id, route_id").all(); + const latest = database.prepare(` + SELECT * FROM ( + SELECT dungeon_simulation_replays.*, + ROW_NUMBER() OVER ( + PARTITION BY dungeon_id, route_id, route_hash + ORDER BY created_at DESC, id DESC + ) AS route_rank + FROM dungeon_simulation_replays + ) WHERE route_rank = 1 + `).all(); + return { + reviews: reviews.map(publicReview), + latestReplays: latest + .filter((row) => generatedRoutes.has(`${row.dungeon_id}:${row.route_id}:${row.route_hash}`)) + .map(publicReplay), + }; + }, + putDungeonRouteReview(account, dungeonIdValue, routeIdValue, input) { + requireGm(account); + const dungeonId = text(dungeonIdValue, "dungeonId", ErrorType); + const routeId = text(routeIdValue, "routeId", ErrorType); + const hash = routeHash(input?.routeHash, ErrorType); + const status = input?.status; + if (!DUNGEON_ROUTE_REVIEW_STATUSES.includes(status)) { + throw new ErrorType("Choose a valid route review status.", 400, "invalid_route_status"); + } + const expectedRevision = integer(input?.expectedRevision, "expectedRevision", ErrorType, 0, Number.MAX_SAFE_INTEGER); + const note = optionalNote(input?.note, "note", ErrorType); + const criticalOverrideNote = optionalNote(input?.criticalOverrideNote, "criticalOverrideNote", ErrorType); + const current = reviewByRoute.get(dungeonId, routeId); + const currentRevision = Number(current?.revision ?? 0); + if (currentRevision !== expectedRevision) { + throw new ErrorType("This route review changed. Reload and try again.", 409, "route_review_conflict"); + } + const generatedRoute = generatedRoutes.get(`${dungeonId}:${routeId}:${hash}`); + if (!generatedRoute) { + throw new ErrorType("The route hash does not match the bundled route catalog.", 409, "route_hash_unknown"); + } + if (status === "Approved") { + if (generatedRoute.generationStatus !== "Candidate") { + throw new ErrorType("This generated route failed offline navigation validation and cannot be approved.", 409, "route_generation_rejected"); + } + const latest = database.prepare(` + SELECT critical_findings, result FROM dungeon_simulation_replays + WHERE dungeon_id = ? AND route_id = ? AND route_hash = ? + ORDER BY created_at DESC, id DESC LIMIT 1 + `).get(dungeonId, routeId, hash); + if (!latest) { + throw new ErrorType("Run and save this exact route before approving it.", 409, "route_run_required"); + } + if (latest.result !== "completed") { + throw new ErrorType("Approval requires a completed run for this exact route hash.", 409, "route_completed_run_required"); + } + if (Number(latest.critical_findings) > 0 && !criticalOverrideNote) { + throw new ErrorType("Critical findings require an override note before approval.", 409, "route_override_required"); + } + } + const reviewedAt = Date.now(); + if (current) { + database.prepare(` + UPDATE dungeon_route_reviews SET route_hash = ?, status = ?, note = ?, critical_override_note = ?, + reviewed_by_account_id = ?, reviewed_by_username = ?, reviewed_at = ?, revision = revision + 1 + WHERE dungeon_id = ? AND route_id = ? AND revision = ? + `).run(hash, status, note, criticalOverrideNote, account.id, account.username, reviewedAt, + dungeonId, routeId, expectedRevision); + } else { + database.prepare(` + INSERT INTO dungeon_route_reviews ( + dungeon_id, route_id, route_hash, status, note, critical_override_note, + reviewed_by_account_id, reviewed_by_username, reviewed_at, revision + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 1) + `).run(dungeonId, routeId, hash, status, note, criticalOverrideNote, + account.id, account.username, reviewedAt); + } + return publicReview(reviewByRoute.get(dungeonId, routeId)); + }, + listDungeonSimulationReplays(account, { dungeonId = null } = {}) { + requireGm(account); + pruneExpiredDungeonSimulationReplays(); + const rows = database.prepare(` + SELECT id, dungeon_id, route_id, route_hash, mode, seed, result, started_at, duration_ms, + critical_findings, submitted_by_username, created_at, expires_at, compressed_bytes + FROM dungeon_simulation_replays + WHERE (? IS NULL OR dungeon_id = ?) + ORDER BY created_at DESC, id DESC LIMIT 500 + `).all(dungeonId, dungeonId); + return { replays: rows.map(publicReplay) }; + }, + saveDungeonSimulationReplay(account, input) { + requireGm(account); + pruneExpiredDungeonSimulationReplays(); + const { normalized, compressed, criticalFindings } = normalizeReplay(input, ErrorType); + const id = randomUUID(); + const createdAt = Date.now(); + const expiresAt = createdAt + DUNGEON_SIMULATION_RETENTION_MS; + database.prepare(` + INSERT INTO dungeon_simulation_replays ( + id, schema_version, dungeon_id, route_id, route_hash, mode, seed, result, + started_at, duration_ms, critical_findings, report_json, payload_gzip, compressed_bytes, + submitted_by_account_id, submitted_by_username, created_at, expires_at + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `).run(id, normalized.schemaVersion, normalized.dungeonId, normalized.routeId, normalized.routeHash, + normalized.mode, normalized.seed, normalized.result, normalized.startedAt, normalized.durationMs, + criticalFindings, JSON.stringify(normalized.report), compressed, compressed.length, + account.id, account.username, createdAt, expiresAt); + return publicReplay(replayById.get(id)); + }, + getDungeonSimulationReplay(account, id) { + requireGm(account); + pruneExpiredDungeonSimulationReplays(); + const row = replayById.get(text(id, "replay id", ErrorType)); + if (!row) throw new ErrorType("Replay not found.", 404, "replay_not_found"); + const payload = gunzipSync(row.payload_gzip, { maxOutputLength: DUNGEON_SIMULATION_MAX_DECOMPRESSED_BYTES }); + return JSON.parse(payload.toString("utf8")); + }, + getDungeonSimulationReport(account, id) { + requireGm(account); + pruneExpiredDungeonSimulationReplays(); + const row = replayById.get(text(id, "replay id", ErrorType)); + if (!row) throw new ErrorType("Replay not found.", 404, "replay_not_found"); + return JSON.parse(row.report_json); + }, + deleteDungeonSimulationReplay(account, id) { + requireGm(account); + const result = database.prepare("DELETE FROM dungeon_simulation_replays WHERE id = ?") + .run(text(id, "replay id", ErrorType)); + if (!result.changes) throw new ErrorType("Replay not found.", 404, "replay_not_found"); + return { ok: true }; + }, + }; +} diff --git a/server/server.mjs b/server/server.mjs index 9255f9fc..b1be227a 100644 --- a/server/server.mjs +++ b/server/server.mjs @@ -8,6 +8,7 @@ import { publicManastormAdminConfig } from "./manastorm-config.mjs"; import { createOnlineSessionManager } from "./online-session.mjs"; import { upgradeArenaWebSocket } from "./websocket.mjs"; import { createBundledContentHandler } from "./bundled-content.mjs"; +import { createBalanceLabJobService } from "./balance-lab-jobs.mjs"; const MIME_TYPES = new Map([ [".css", "text/css; charset=utf-8"], [".glb", "model/gltf-binary"], @@ -178,6 +179,11 @@ export function createGameServer(options = {}) { const trustProxy = String(options.trustProxy ?? process.env.TRUST_PROXY ?? "").toLowerCase() === "true"; const enableShelvedModes = options.enableShelvedModes ?? booleanFlag(process.env.HEALER_MAN_ENABLE_SHELVED_MODES); const gameDatabase = options.database ?? openGameDatabase(options); + const balanceLabJobs = options.balanceLabJobs ?? createBalanceLabJobService({ + dataDir: options.dataDir ?? path.dirname(gameDatabase.databasePath), + projectRoot: options.projectRoot, + pythonExecutable: options.pythonExecutable, + }); const onlineSessions = createOnlineSessionManager(); const arenaService = createArenaService({ database: gameDatabase, autoPump: enableShelvedModes }); const allowAuthRequest = createAuthLimiter(); @@ -211,6 +217,60 @@ export function createGameServer(options = {}) { json(response, 200, { ok: true, service: "healer-man", time: new Date().toISOString() }); return; } + if (url.pathname === "/api/dungeon-route-approvals" && request.method === "GET") { + json(response, 200, gameDatabase.listDungeonRouteApprovals()); + return; + } + if (url.pathname === "/api/gm/dungeon-routes" && request.method === "GET") { + const account = gameDatabase.authenticate(bearerToken(request)); + json(response, 200, gameDatabase.listDungeonRouteReviews(account)); + return; + } + const dungeonRouteReviewMatch = /^\/api\/gm\/dungeon-routes\/([^/]+)\/([^/]+)\/review$/.exec(url.pathname); + if (dungeonRouteReviewMatch && request.method === "PUT") { + const account = gameDatabase.authenticate(bearerToken(request)); + const body = await readJson(request, 64 * 1024); + const review = gameDatabase.putDungeonRouteReview( + account, + decodeURIComponent(dungeonRouteReviewMatch[1]), + decodeURIComponent(dungeonRouteReviewMatch[2]), + body, + ); + json(response, 200, { review }); + return; + } + if (url.pathname === "/api/gm/dungeon-sim/replays" && request.method === "GET") { + const account = gameDatabase.authenticate(bearerToken(request)); + json(response, 200, gameDatabase.listDungeonSimulationReplays(account, { + dungeonId: url.searchParams.get("dungeon"), + })); + return; + } + if (url.pathname === "/api/gm/dungeon-sim/replays" && request.method === "POST") { + const account = gameDatabase.authenticate(bearerToken(request)); + const replay = gameDatabase.saveDungeonSimulationReplay(account, await readJson(request, 64 * 1024 * 1024)); + json(response, 201, { replay }); + return; + } + const dungeonSimulationReportMatch = /^\/api\/gm\/dungeon-sim\/replays\/([^/]+)\/report$/.exec(url.pathname); + if (dungeonSimulationReportMatch && request.method === "GET") { + const account = gameDatabase.authenticate(bearerToken(request)); + json(response, 200, gameDatabase.getDungeonSimulationReport(account, dungeonSimulationReportMatch[1]), { + "Content-Disposition": `attachment; filename="dungeon-simulation-${dungeonSimulationReportMatch[1]}.json"`, + }); + return; + } + const dungeonSimulationReplayMatch = /^\/api\/gm\/dungeon-sim\/replays\/([^/]+)$/.exec(url.pathname); + if (dungeonSimulationReplayMatch && request.method === "GET") { + const account = gameDatabase.authenticate(bearerToken(request)); + json(response, 200, gameDatabase.getDungeonSimulationReplay(account, dungeonSimulationReplayMatch[1])); + return; + } + if (dungeonSimulationReplayMatch && request.method === "DELETE") { + const account = gameDatabase.authenticate(bearerToken(request)); + json(response, 200, gameDatabase.deleteDungeonSimulationReplay(account, dungeonSimulationReplayMatch[1])); + return; + } if (!enableShelvedModes && ( url.pathname === "/api/manastorm-config" || url.pathname.startsWith("/api/gm/manastorm-config") @@ -438,6 +498,50 @@ export function createGameServer(options = {}) { json(response, 200, result); return; } + if (url.pathname === "/api/gm/balance-lab/jobs" && request.method === "GET") { + const account = gameDatabase.authenticate(bearerToken(request)); + if (!gameDatabase.isGameMaster(account)) { + throw new GameDatabaseError("Game Master access is required.", 403, "gm_required"); + } + json(response, 200, { jobs: balanceLabJobs.list() }); + return; + } + if (url.pathname === "/api/gm/balance-lab/jobs" && request.method === "POST") { + const account = gameDatabase.authenticate(bearerToken(request)); + if (!gameDatabase.isGameMaster(account)) { + throw new GameDatabaseError("Game Master access is required.", 403, "gm_required"); + } + const job = balanceLabJobs.start(await readJson(request, 32 * 1024), account); + console.info(`Balance Lab job ${job.id} queued by ${account.username}`); + json(response, 202, { job }); + return; + } + const balanceLabArtifactMatch = /^\/api\/gm\/balance-lab\/jobs\/([0-9a-f-]{36})\/artifacts\/([A-Za-z0-9._-]+)$/.exec(url.pathname); + if (balanceLabArtifactMatch && request.method === "GET") { + const account = gameDatabase.authenticate(bearerToken(request)); + if (!gameDatabase.isGameMaster(account)) { + throw new GameDatabaseError("Game Master access is required.", 403, "gm_required"); + } + const artifact = balanceLabJobs.artifact(balanceLabArtifactMatch[1], balanceLabArtifactMatch[2]); + response.writeHead(200, { + "Content-Type": artifact.contentType, + "Content-Length": artifact.size, + "Cache-Control": "no-store", + "Content-Disposition": `inline; filename="${balanceLabArtifactMatch[2]}"`, + "X-Content-Type-Options": "nosniff", + }); + artifact.stream().pipe(response); + return; + } + const balanceLabJobMatch = /^\/api\/gm\/balance-lab\/jobs\/([0-9a-f-]{36})$/.exec(url.pathname); + if (balanceLabJobMatch && request.method === "GET") { + const account = gameDatabase.authenticate(bearerToken(request)); + if (!gameDatabase.isGameMaster(account)) { + throw new GameDatabaseError("Game Master access is required.", 403, "gm_required"); + } + json(response, 200, { job: balanceLabJobs.get(balanceLabJobMatch[1]) }); + return; + } if (url.pathname.startsWith("/api/")) { json(response, 404, { error: "API route not found.", code: "not_found" }); return; @@ -491,11 +595,12 @@ export function createGameServer(options = {}) { }); server.on("close", () => { + balanceLabJobs.close?.(); onlineSessions.clear(); arenaService.close(); gameDatabase.close(); }); - return { server, database: gameDatabase, arenaService, staticDir, contentDir, enableShelvedModes }; + return { server, database: gameDatabase, arenaService, balanceLabJobs, staticDir, contentDir, enableShelvedModes }; } if (process.argv[1] && path.resolve(process.argv[1]) === fileURLToPath(import.meta.url)) { diff --git a/server/server.test.mjs b/server/server.test.mjs index dba17455..57fe81c4 100644 --- a/server/server.test.mjs +++ b/server/server.test.mjs @@ -237,6 +237,24 @@ test("serves the game and authenticated cloud-save API", async () => { assert.equal(gmRegistration.status, 201); const gmAuth = await gmRegistration.json(); assert.deepEqual(gmAuth.account.roles, ["gm"]); + const deniedBalanceLab = await fetch(`${origin}/api/gm/balance-lab/jobs`, { + method: "POST", + headers: { "Content-Type": "application/json", Authorization: `Bearer ${auth.token}` }, + body: JSON.stringify({ source: "wow", level: 40 }), + }); + assert.equal(deniedBalanceLab.status, 403); + const balanceLabJobs = await fetch(`${origin}/api/gm/balance-lab/jobs`, { + headers: { Authorization: `Bearer ${gmAuth.token}` }, + }); + assert.equal(balanceLabJobs.status, 200); + assert.deepEqual((await balanceLabJobs.json()).jobs, []); + const invalidBalanceLab = await fetch(`${origin}/api/gm/balance-lab/jobs`, { + method: "POST", + headers: { "Content-Type": "application/json", Authorization: `Bearer ${gmAuth.token}` }, + body: JSON.stringify({ source: "wow", level: 81 }), + }); + assert.equal(invalidBalanceLab.status, 400); + assert.equal((await invalidBalanceLab.json()).code, "invalid_balance_lab_job"); const current = await (await fetch(`${origin}/api/manastorm-config`)).json(); const published = await fetch(`${origin}/api/gm/manastorm-config`, { method: "PUT", @@ -290,6 +308,9 @@ test("disables shelved APIs and Manastorm group creation by default", async () = assert.equal(response.status, 503); assert.equal((await response.json()).code, "feature_disabled"); } + const balanceLab = await fetch(`${origin}/api/gm/balance-lab/jobs`); + assert.equal(balanceLab.status, 401); + assert.equal((await balanceLab.json()).code, "authentication_required"); const registration = await fetch(`${origin}/api/auth/register`, { method: "POST", diff --git a/src/App.tsx b/src/App.tsx index 17fcda98..ecd68546 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -20,6 +20,7 @@ const CharacterSelectScreen = lazy(() => import("./ui/CharacterSelectScreen").th const ClassHallScreen = lazy(() => import("./ui/ClassHallScreen").then((module) => ({ default: module.ClassHallScreen }))); const DungeonSelectScreen = lazy(() => import("./ui/DungeonSelectScreen").then((module) => ({ default: module.DungeonSelectScreen }))); const MainMenuScreen = lazy(() => import("./ui/MainMenuScreen").then((module) => ({ default: module.MainMenuScreen }))); +const DungeonSimulationAdminScreen = lazy(() => import("./ui/DungeonSimulationAdminScreen").then((module) => ({ default: module.DungeonSimulationAdminScreen }))); function ShellTransition() { return
HMOpening expeditionPreparing the next screen...
; } @@ -86,6 +87,7 @@ export default function App() { else if (phase === "main-menu") screen = }>; else if (phase === "class-hall") screen = }>; else if (phase === "dungeons") screen = }>; + else if (phase === "gm-admin") screen = }>; else if (isShelvedShellPhase(phase)) { screen = }>; } diff --git a/src/GameRuntime.tsx b/src/GameRuntime.tsx index 4771e321..db557b97 100644 --- a/src/GameRuntime.tsx +++ b/src/GameRuntime.tsx @@ -32,6 +32,11 @@ import { useUiLayoutStore } from "./game/uiLayoutStore"; import { profileInputBindings } from "./game/keybindPreferences"; import { KeybindsPanel } from "./ui/KeybindsPanel"; import { lootShelvedBoss, releaseShelvedGameRuntime, ShelvedGameBridges } from "@shelvedGameRuntime"; +import { useDungeonSimulationStore } from "./game/dungeonSimulationStore"; +import { DungeonSimulationHud } from "./ui/DungeonSimulationHud"; +import { useDungeonRouteStore } from "./game/dungeonRouteStore"; +import { installCombatClock } from "./game/combatClock"; +import { dungeonSimulationNow } from "./game/dungeonSimulationStore"; function InputBridge() { const overlay = useGameStore((state) => state.overlay); @@ -97,7 +102,10 @@ function InputBridge() { export default function GameRuntime() { useEffect(connectDpsMeter, []); + useEffect(() => installCombatClock(dungeonSimulationNow), []); + useEffect(() => { void useDungeonRouteStore.getState().refresh(); }, []); const editingControls = useGameStore((state) => state.overlay === "keybinds" || state.overlay === "ui-layout"); + const dungeonSimulation = useDungeonSimulationStore((state) => state.sessionMode !== "play"); useEffect(() => () => { const activeDungeon = requireDungeonDefinition(useGameStore.getState().activeDungeonId); clearDungeonRuntimeCaches(); @@ -127,13 +135,13 @@ export default function GameRuntime() { - - - - - - - + {dungeonSimulation ? : } + {!dungeonSimulation && } + {!dungeonSimulation && } + {!dungeonSimulation && } + {!dungeonSimulation && } + {!dungeonSimulation && } + {!dungeonSimulation && } } bottom={} diff --git a/src/app/ShelvedModeRoutes.tsx b/src/app/ShelvedModeRoutes.tsx index b45b0f33..de75805f 100644 --- a/src/app/ShelvedModeRoutes.tsx +++ b/src/app/ShelvedModeRoutes.tsx @@ -5,7 +5,6 @@ import { useManastormAdminStore } from "../game/manastormAdminStore"; const ManastormSelectScreen = lazy(() => import("../ui/ManastormSelectScreen").then((module) => ({ default: module.ManastormSelectScreen }))); const ArenaSelectScreen = lazy(() => import("../ui/ArenaSelectScreen").then((module) => ({ default: module.ArenaSelectScreen }))); const ArenaRuntime = lazy(() => import("../ArenaRuntime")); -const GmAdminScreen = lazy(() => import("../ui/GmAdminScreen").then((module) => ({ default: module.GmAdminScreen }))); function ShelvedTransition() { return
HMOpening expeditionPreparing the next screen...
; @@ -28,6 +27,5 @@ export function ShelvedModeRoute({ if (phase === "manastorms") screen = ; else if (phase === "arenas") screen = ; else if (phase === "arena-game") screen = ; - else if (phase === "gm-admin") screen = ; return }>{screen}; } diff --git a/src/app/balanceLabClient.ts b/src/app/balanceLabClient.ts new file mode 100644 index 00000000..2d03d093 --- /dev/null +++ b/src/app/balanceLabClient.ts @@ -0,0 +1,192 @@ +import { onlineApiOrigin, requestOnlineJson } from "./onlineAccountClient"; + +export type BalanceLabPartySource = "wow" | "coa" | "rom" | "all"; +export type BalanceLabBossCategory = "all" | "wow" | "rom"; +export type BalanceLabJobStatus = "queued" | "running" | "complete" | "failed"; + +export interface BalanceLabJobSpec { + readonly source: BalanceLabPartySource; + readonly level: number; + readonly partyConfigurations: number; + readonly simulationsPerParty: number; + readonly durationSeconds: number; + readonly partySeed: number; + readonly bossCategory: BalanceLabBossCategory; + readonly bossKeys: readonly string[]; +} + +export interface BalanceLabJob { + readonly id: string; + readonly status: BalanceLabJobStatus; + readonly createdAt: string; + readonly startedAt: string | null; + readonly completedAt: string | null; + readonly requestedBy: string; + readonly spec: BalanceLabJobSpec; + readonly progress: { + readonly party: number; + readonly partiesCompleted: number; + readonly partiesTotal: number; + readonly simulationsCompleted: number; + readonly simulationsTotal: number; + }; + readonly artifacts: readonly string[]; + readonly error: string | null; + readonly logTail: readonly string[]; + readonly summary: BalanceLabReportSummary | null; +} + +export interface BalanceLabReportSummary { + readonly partyConfigurations: number; + readonly bosses: number; + readonly runs: number; + readonly classSpecs: number; + readonly classAbilities: number; + readonly bossPressureMedianDtps: number; +} + +export interface BalanceLabBossResult { + readonly bossKey: string; + readonly bossName: string; + readonly category: string; + readonly dungeonId: string; + readonly dungeonTitle: string; + readonly runs: number; + readonly incomingDtps: number; + readonly averageIncomingDamage: number; + readonly partyDps: number; + readonly bossDpsTaken: number; + readonly defeatRate: number; + readonly wipeRate: number; + readonly averageDeaths: number; + readonly averageTimeToDefeat: number | null; + readonly bossMaxHealth: number; + readonly pressureVsMedian: number | null; + readonly pressureFlag: string; +} + +export interface BalanceLabClassSpecResult { + readonly source: string; + readonly buildId: string; + readonly classId: string; + readonly className: string; + readonly specialization: string; + readonly role: string; + readonly partyConfigurations: number; + readonly runs: number; + readonly dps: number; + readonly bossDps: number; + readonly hps: number; + readonly dtps: number; + readonly totalDamage: number; + readonly totalDamageTaken: number; + readonly totalHealing: number; + readonly totalAbsorbs: number; + readonly deathEvents: number; + readonly damageVsSourceRoleMedian: number | null; + readonly damageFlag: string; +} + +export interface BalanceLabPartyResult { + readonly partyConfigurationId: string; + readonly source: string; + readonly members: string; + readonly runs: number; + readonly partyDps: number; + readonly incomingDtps: number; + readonly defeatRate: number; + readonly wipeRate: number; + readonly averageDeaths: number; + readonly reportPath: string; +} + +export interface BalanceLabClassAbilityResult { + readonly source: string; + readonly buildId: string; + readonly classId: string; + readonly className: string; + readonly specialization: string; + readonly role: string; + readonly abilityId: string; + readonly abilityName: string; + readonly icon: string; + readonly categories: string; + readonly cooldownSeconds: number | null; + readonly partyConfigurations: number; + readonly bosses: number; + readonly runs: number; + readonly availableRuns: number; + readonly activeRuns: number; + readonly usageRate: number; + readonly casts: number; + readonly castsPerMinute: number; + readonly hits: number; + readonly hitsPerRun: number; + readonly rawDamage: number; + readonly effectiveDamage: number; + readonly dps: number; + readonly damageShare: number; + readonly averageDamagePerHit: number; + readonly rawHealing: number; + readonly effectiveHealing: number; + readonly overheal: number; + readonly absorbs: number; + readonly status: "unused" | "damage" | "support" | "used"; + readonly unusedAvailable: boolean; +} + +export interface BalanceLabSuiteReport { + readonly schemaVersion: number; + readonly generatedAt: string; + readonly engine: string; + readonly level: number; + readonly summary: BalanceLabReportSummary; + readonly bosses: readonly BalanceLabBossResult[]; + readonly classSpecs: readonly BalanceLabClassSpecResult[]; + readonly classAbilities?: readonly BalanceLabClassAbilityResult[]; + readonly partyConfigurations: readonly BalanceLabPartyResult[]; +} + +export async function listBalanceLabJobs(token: string): Promise { + return (await requestOnlineJson<{ jobs: BalanceLabJob[] }>( + "/api/gm/balance-lab/jobs", + {}, + token, + )).jobs; +} + +export async function startBalanceLabJob(spec: BalanceLabJobSpec, token: string): Promise { + return (await requestOnlineJson<{ job: BalanceLabJob }>( + "/api/gm/balance-lab/jobs", + { method: "POST", body: JSON.stringify(spec) }, + token, + )).job; +} + +export async function getBalanceLabJob(id: string, token: string): Promise { + return (await requestOnlineJson<{ job: BalanceLabJob }>( + `/api/gm/balance-lab/jobs/${encodeURIComponent(id)}`, + {}, + token, + )).job; +} + +export async function getBalanceLabReport(id: string, token: string): Promise { + return requestOnlineJson( + `/api/gm/balance-lab/jobs/${encodeURIComponent(id)}/artifacts/suite-report.json`, + {}, + token, + ); +} + +export async function fetchBalanceLabArtifact(id: string, name: string, token: string): Promise { + const response = await fetch( + `${onlineApiOrigin()}/api/gm/balance-lab/jobs/${encodeURIComponent(id)}/artifacts/${encodeURIComponent(name)}`, + { headers: { Authorization: `Bearer ${token}` } }, + ); + if (!response.ok) { + const body = await response.json().catch(() => ({})) as { error?: string }; + throw new Error(body.error ?? `Could not download ${name} (${response.status}).`); + } + return response.blob(); +} diff --git a/src/app/dungeonSimulationClient.ts b/src/app/dungeonSimulationClient.ts new file mode 100644 index 00000000..63891c07 --- /dev/null +++ b/src/app/dungeonSimulationClient.ts @@ -0,0 +1,87 @@ +import type { PlayerSession } from "./types"; +import { requestOnlineJson } from "./onlineAccountClient"; +import type { + DungeonReplaySummary, + DungeonReplayV1, + DungeonRouteApproval, + DungeonRouteReview, + DungeonRouteReviewStatus, + DungeonSimulationReportV1, +} from "../game/dungeonSimulationTypes"; + +function gmToken(session: PlayerSession | null): string { + if (session?.kind !== "account" || !session.accessToken || !session.roles?.includes("gm")) { + throw new Error("Game Master access is required."); + } + return session.accessToken; +} + +export async function fetchDungeonRouteApprovals(): Promise { + return (await requestOnlineJson<{ approvals: DungeonRouteApproval[] }>("/api/dungeon-route-approvals")).approvals; +} + +export async function fetchGmDungeonRoutes(session: PlayerSession | null): Promise<{ + readonly reviews: readonly DungeonRouteReview[]; + readonly latestReplays: readonly DungeonReplaySummary[]; +}> { + return requestOnlineJson("/api/gm/dungeon-routes", {}, gmToken(session)); +} + +export async function putDungeonRouteReview( + session: PlayerSession | null, + route: { readonly dungeonId: string; readonly routeId: string; readonly routeHash: string }, + update: { + readonly status: DungeonRouteReviewStatus; + readonly expectedRevision: number; + readonly note?: string; + readonly criticalOverrideNote?: string; + }, +): Promise { + const response = await requestOnlineJson<{ review: DungeonRouteReview }>( + `/api/gm/dungeon-routes/${encodeURIComponent(route.dungeonId)}/${encodeURIComponent(route.routeId)}/review`, + { method: "PUT", body: JSON.stringify({ ...update, routeHash: route.routeHash }) }, + gmToken(session), + ); + return response.review; +} + +export async function fetchDungeonSimulationReplays( + session: PlayerSession | null, + dungeonId?: string, +): Promise { + const query = dungeonId ? `?dungeon=${encodeURIComponent(dungeonId)}` : ""; + return (await requestOnlineJson<{ replays: DungeonReplaySummary[] }>( + `/api/gm/dungeon-sim/replays${query}`, + {}, + gmToken(session), + )).replays; +} + +export async function saveDungeonSimulationReplay( + session: PlayerSession | null, + replay: DungeonReplayV1, +): Promise { + return (await requestOnlineJson<{ replay: DungeonReplaySummary }>( + "/api/gm/dungeon-sim/replays", + { method: "POST", body: JSON.stringify(replay) }, + gmToken(session), + )).replay; +} + +export function fetchDungeonSimulationReplay( + session: PlayerSession | null, + replayId: string, +): Promise { + return requestOnlineJson(`/api/gm/dungeon-sim/replays/${encodeURIComponent(replayId)}`, {}, gmToken(session)); +} + +export function fetchDungeonSimulationReport( + session: PlayerSession | null, + replayId: string, +): Promise { + return requestOnlineJson(`/api/gm/dungeon-sim/replays/${encodeURIComponent(replayId)}/report`, {}, gmToken(session)); +} + +export function deleteDungeonSimulationReplay(session: PlayerSession | null, replayId: string): Promise<{ readonly ok: true }> { + return requestOnlineJson(`/api/gm/dungeon-sim/replays/${encodeURIComponent(replayId)}`, { method: "DELETE" }, gmToken(session)); +} diff --git a/src/app/dungeonSimulationRuntime.ts b/src/app/dungeonSimulationRuntime.ts new file mode 100644 index 00000000..5cfb9692 --- /dev/null +++ b/src/app/dungeonSimulationRuntime.ts @@ -0,0 +1,71 @@ +import { touchCharacter } from "./accountRepository"; +import { useShellStore } from "./shellStore"; +import { activateDungeonSession } from "../game/dungeonSession"; +import { dungeonRouteDefinition } from "../game/dungeonRoutes"; +import { useDungeonSimulationStore } from "../game/dungeonSimulationStore"; +import type { DungeonReplayV1, DungeonSimulationMode } from "../game/dungeonSimulationTypes"; +import { defaultPartyRoleForClass } from "../game/partyRoles"; +import { useGameStore } from "../game/store"; + +function gmCharacter() { + const shell = useShellStore.getState(); + if (shell.session?.kind !== "account" || !shell.session.accessToken || !shell.session.roles?.includes("gm")) { + shell.setNotice("Game Master access is required."); + return null; + } + const character = shell.selectedCharacterId + ? touchCharacter(shell.session.ownerId, shell.selectedCharacterId) + ?? shell.characters.find((candidate) => candidate.id === shell.selectedCharacterId) + : null; + if (!character) shell.setNotice("Select a character before launching a simulation."); + return character; +} + +export function enterDungeonSimulation( + dungeonId: string, + mode: DungeonSimulationMode, + seed: string, +): boolean { + const character = gmCharacter(); + const route = dungeonRouteDefinition(dungeonId); + if (!character || !route || !seed.trim()) return false; + if (!activateDungeonSession(dungeonId, undefined, { + gmTestMode: true, + dungeonSimulation: true, + })) { + useShellStore.getState().setNotice("The dungeon package is unavailable on this client."); + return false; + } + useDungeonSimulationStore.getState().startLive({ dungeonId, route, mode, seed: seed.trim() }); + useGameStore.getState().setCompanionOpen(false); + useShellStore.setState({ + phase: "game", + activeCharacter: character, + activeDungeonId: dungeonId, + activeDungeonRole: defaultPartyRoleForClass(character.classId), + notice: "", + }); + return true; +} + +export function enterDungeonSimulationReplay(replay: DungeonReplayV1): boolean { + const character = gmCharacter(); + if (!character || !dungeonRouteDefinition(replay.dungeonId, replay.routeId)) return false; + if (!activateDungeonSession(replay.dungeonId, undefined, { + gmTestMode: true, + dungeonSimulation: true, + })) { + useShellStore.getState().setNotice("The replay dungeon package is unavailable on this client."); + return false; + } + useDungeonSimulationStore.getState().startReplay(replay); + useGameStore.getState().setCompanionOpen(false); + useShellStore.setState({ + phase: "game", + activeCharacter: character, + activeDungeonId: replay.dungeonId, + activeDungeonRole: defaultPartyRoleForClass(character.classId), + notice: "", + }); + return true; +} diff --git a/src/app/releaseFeatures.test.ts b/src/app/releaseFeatures.test.ts index e9f3a7a8..d85f8e25 100644 --- a/src/app/releaseFeatures.test.ts +++ b/src/app/releaseFeatures.test.ts @@ -1,13 +1,15 @@ import { describe, expect, it } from "vitest"; import { isShelvedShellPhase, + sessionCanUseGmTools, sessionCanUseShelvedGmTools, SHELVED_MODES_ENABLED, } from "./releaseFeatures"; describe("release feature boundary", () => { it("recognizes every legacy shelved phase", () => { - expect(["manastorms", "arenas", "arena-game", "gm-admin"].every(isShelvedShellPhase)).toBe(true); + expect(["manastorms", "arenas", "arena-game"].every(isShelvedShellPhase)).toBe(true); + expect(isShelvedShellPhase("gm-admin")).toBe(false); expect(isShelvedShellPhase("main-menu")).toBe(false); expect(isShelvedShellPhase("game")).toBe(false); }); @@ -24,4 +26,16 @@ describe("release feature boundary", () => { expect(sessionCanUseShelvedGmTools({ ...session, roles: [] })).toBe(false); expect(sessionCanUseShelvedGmTools({ ...session, accessToken: "" })).toBe(false); }); + + it("exposes dungeon GM tools in normal releases to authenticated GMs", () => { + const session = { + kind: "account", + ownerId: "gm-account", + displayName: "Phenom", + accessToken: "token", + roles: ["gm"], + } as const; + expect(sessionCanUseGmTools(session)).toBe(true); + expect(sessionCanUseGmTools({ ...session, roles: [] })).toBe(false); + }); }); diff --git a/src/app/releaseFeatures.ts b/src/app/releaseFeatures.ts index 7182b191..4b87334f 100644 --- a/src/app/releaseFeatures.ts +++ b/src/app/releaseFeatures.ts @@ -4,7 +4,6 @@ export const SHELVED_SHELL_PHASES = Object.freeze([ "manastorms", "arenas", "arena-game", - "gm-admin", ] as const); export type ShelvedShellPhase = (typeof SHELVED_SHELL_PHASES)[number]; @@ -21,3 +20,11 @@ export function sessionCanUseShelvedGmTools(session: { return SHELVED_MODES_ENABLED && Boolean(session?.kind === "account" && session.accessToken && session.roles?.includes("gm")); } + +export function sessionCanUseGmTools(session: { + readonly kind: string; + readonly accessToken?: string; + readonly roles?: readonly string[]; +} | null): boolean { + return Boolean(session?.kind === "account" && session.accessToken && session.roles?.includes("gm")); +} diff --git a/src/app/shellStore.ts b/src/app/shellStore.ts index 6ef6c987..b6444a06 100644 --- a/src/app/shellStore.ts +++ b/src/app/shellStore.ts @@ -59,7 +59,7 @@ import { logoutOnlineSession, refreshOnlineSession, } from "./onlineAccountClient"; -import { sessionCanUseShelvedGmTools, SHELVED_MODES_ENABLED } from "./releaseFeatures"; +import { sessionCanUseGmTools, SHELVED_MODES_ENABLED } from "./releaseFeatures"; import { useGameStore } from "../game/store"; import { normalizeSpecializationId, @@ -366,7 +366,7 @@ export const useShellStore = create((set, get) => ({ }, openGmAdmin: () => { const { session, selectedCharacterId, characters } = get(); - if (!sessionCanUseShelvedGmTools(session)) { + if (!sessionCanUseGmTools(session)) { set({ notice: "Game Master access is required." }); return false; } diff --git a/src/game/CombatBridge.tsx b/src/game/CombatBridge.tsx index 06811cc2..f27f495e 100644 --- a/src/game/CombatBridge.tsx +++ b/src/game/CombatBridge.tsx @@ -23,6 +23,10 @@ import { onlineSessionOwnsWorldSimulation, } from "./onlineSessionRuntime"; import { combatSimulationTimerShouldRun } from "./combatSimulationLifecycle"; +import { + DUNGEON_SIMULATION_FIXED_STEP_MS, + useDungeonSimulationStore, +} from "./dungeonSimulationStore"; /** * Connects the pure combat runtime to the active character and persistent @@ -75,7 +79,7 @@ export function CombatBridge() { // after Character Select has already replaced the active character. const shell = useShellStore.getState(); if (shell.activeCharacter?.id !== characterId || shell.session?.ownerId !== ownerId) return; - if (useGameStore.getState().bossTest) return; + if (useGameStore.getState().gmTestMode) return; // Persisted collections are replaced immutably by combat actions. A // reference/primitive comparison therefore detects the same changes as @@ -121,54 +125,80 @@ export function CombatBridge() { let previous = performance.now(); let timer: number | null = null; + const advanceOneTick = (delta: number, epochNow: number, spectator: boolean) => { + const game = useGameStore.getState(); + const simulation = useDungeonSimulationStore.getState(); + const combat = useCombatStore.getState(); + combat.setPlayerPosition(game.playerPosition); + combat.tick(delta, epochNow); + if ( + onlineSessionOwnsWorldSimulation() + && game.gameMode === "dungeon" + && (!spectator || simulation.mode === "full-combat") + ) { + useCombatStore.getState().engageNearbyMobs(epochNow, game.playerPosition); + } + if (onlineSessionOwnsWorldSimulation()) { + if (!spectator || simulation.mode === "full-combat") { + useCombatStore.getState().advanceMobCombat(epochNow, game.playerPosition); + } + advanceDungeonPartyCombat(epochNow); + } + useCombatStore.getState().synchronizeActors(); + if (onlineSessionOwnsWorldSimulation() && game.gameMode === "dungeon") { + const mobs = useCombatStore.getState().mobs; + const combatEvents = deriveDungeonEncounterCombatEvents( + encounterMobCursor.current, + mobs, + epochNow, + ); + encounterMobCursor.current = combatEvents.cursor; + for (const event of combatEvents.events) dispatchActiveDungeonEntityEvent(event); + const registeredEntityIds = Object.keys(mobs); + advanceDungeonEncounters(game.activeDungeonId, { + kind: "tick", + now: epochNow, + facts: { + registeredEntityIds, + deadEntityIds: registeredEntityIds.filter((id) => mobs[id].dead), + }, + }); + } + }; + const advance = () => { const now = performance.now(); - const delta = Math.min(0.25, Math.max(0, (now - previous) / 1_000)); + const wallDeltaMs = Math.min(1_000, Math.max(0, now - previous)); + const delta = Math.min(0.25, wallDeltaMs / 1_000); previous = now; + const simulation = useDungeonSimulationStore.getState(); + if (simulation.sessionMode === "spectate-replay") { + simulation.consumeTicks(wallDeltaMs); + return; + } + if (simulation.sessionMode === "spectate-live") { + const assetStatus = useGameStore.getState().assetStatus; + if (assetStatus !== "ready" && assetStatus !== "proxy") return; + for (const tickNow of simulation.consumeTicks(wallDeltaMs)) { + advanceOneTick(DUNGEON_SIMULATION_FIXED_STEP_MS / 1_000, tickNow, true); + } + return; + } const game = useGameStore.getState(); const sharedOnline = onlineSessionIsActive(); if ((!game.paused || sharedOnline) && (!game.companionOpen || sharedOnline)) { - const epochNow = Date.now(); - const combat = useCombatStore.getState(); - combat.setPlayerPosition(game.playerPosition); - combat.tick(delta, epochNow); - if (onlineSessionOwnsWorldSimulation() && game.gameMode === "dungeon") { - useCombatStore.getState().engageNearbyMobs(epochNow, game.playerPosition); - } - if (onlineSessionOwnsWorldSimulation()) { - useCombatStore.getState().advanceMobCombat(epochNow, game.playerPosition); - advanceDungeonPartyCombat(epochNow); - } - useCombatStore.getState().synchronizeActors(); - if (onlineSessionOwnsWorldSimulation() && game.gameMode === "dungeon") { - const mobs = useCombatStore.getState().mobs; - const combatEvents = deriveDungeonEncounterCombatEvents( - encounterMobCursor.current, - mobs, - epochNow, - ); - encounterMobCursor.current = combatEvents.cursor; - for (const event of combatEvents.events) dispatchActiveDungeonEntityEvent(event); - const registeredEntityIds = Object.keys(mobs); - advanceDungeonEncounters(game.activeDungeonId, { - kind: "tick", - now: epochNow, - facts: { - registeredEntityIds, - deadEntityIds: registeredEntityIds.filter((id) => mobs[id].dead), - }, - }); - } + advanceOneTick(delta, Date.now(), false); } }; const reconcileTimer = () => { const game = useGameStore.getState(); + const simulation = useDungeonSimulationStore.getState(); const shouldRun = combatSimulationTimerShouldRun({ sharedOnline: onlineSessionIsActive(), - paused: game.paused, - companionOpen: game.companionOpen, - documentHidden: document.hidden, + paused: simulation.sessionMode === "play" ? game.paused : false, + companionOpen: simulation.sessionMode === "play" ? game.companionOpen : false, + documentHidden: simulation.sessionMode === "play" ? document.hidden : false, }); if (shouldRun && timer === null) { // Reset the clock on resume so a long pause/background period cannot @@ -193,6 +223,9 @@ export function CombatBridge() { // store notification gives the bridge a reactive point at which to // reconcile while preserving continuous shared-online simulation. const unsubscribeOnlineSession = useOnlineSessionStore.subscribe(reconcileTimer); + const unsubscribeSimulation = useDungeonSimulationStore.subscribe((state, previousState) => { + if (state.sessionMode !== previousState.sessionMode || state.runState !== previousState.runState) reconcileTimer(); + }); document.addEventListener("visibilitychange", reconcileTimer); reconcileTimer(); @@ -200,6 +233,7 @@ export function CombatBridge() { if (timer !== null) window.clearInterval(timer); unsubscribeGame(); unsubscribeOnlineSession(); + unsubscribeSimulation(); document.removeEventListener("visibilitychange", reconcileTimer); }; }, []); diff --git a/src/game/DungeonEncounterEffectBridge.tsx b/src/game/DungeonEncounterEffectBridge.tsx index 6939c04f..cf2facb9 100644 --- a/src/game/DungeonEncounterEffectBridge.tsx +++ b/src/game/DungeonEncounterEffectBridge.tsx @@ -13,6 +13,7 @@ import type { DungeonEncounterEffectEnvelope } from "./dungeonEncounterTypes"; import { publishOnlinePartyTeleport } from "./onlineSessionRuntime"; import { dungeonDefinitionById } from "./dungeonRegistry"; import { removeMobPosition } from "./mobRuntimeRegistry"; +import { dungeonSimulationNow } from "./dungeonSimulationStore"; function grantEncounterLoot(lootTableId: string, now: number): boolean { const table = LOOT_CATALOG.bosses.find((candidate) => candidate.lootTableId === lootTableId); @@ -29,14 +30,14 @@ function grantEncounterLoot(lootTableId: string, now: number): boolean { /** Applies platform effects emitted by the renderer-neutral encounter reducer. */ export function DungeonEncounterEffectBridge() { useEffect(() => registerDungeonEncounterEffectHandler((envelope) => { - applyDungeonEncounterEffect(envelope, Date.now()); + applyDungeonEncounterEffect(envelope, dungeonSimulationNow()); }), []); return null; } export function applyDungeonEncounterEffect( { dungeonId, effect }: DungeonEncounterEffectEnvelope, - now = Date.now(), + now = dungeonSimulationNow(), ): void { if (effect.kind === "signal") { dispatchDungeonEncounterSignal(effect.signalId, now); diff --git a/src/game/PartyBridge.tsx b/src/game/PartyBridge.tsx index d5613889..fa952826 100644 --- a/src/game/PartyBridge.tsx +++ b/src/game/PartyBridge.tsx @@ -6,6 +6,7 @@ import { usePartyStore } from "./partyStore"; import { useGameStore } from "./store"; import { useManastormStore } from "./manastormStore"; import { onlineGroupAiPartySize, useOnlineGroupStore } from "../app/onlineGroupStore"; +import { useDungeonSimulationStore } from "./dungeonSimulationStore"; /** Owns party lifecycle; the combat interval itself remains in CombatBridge. */ export function PartyBridge() { @@ -15,6 +16,8 @@ export function PartyBridge() { const manastormPartySize = useManastormStore((state) => state.partySize); const onlineActivity = useOnlineGroupStore((state) => state.activeActivity); const level = useCombatStore((state) => state.level); + const simulationMode = useDungeonSimulationStore((state) => state.sessionMode); + const simulationSeed = useDungeonSimulationStore((state) => state.seed); const resetRevision = useGameStore((state) => state.resetRevision); const mountedResetRevision = useRef(resetRevision); @@ -27,19 +30,23 @@ export function PartyBridge() { && onlineActivity.type === (gameMode === "manastorm" ? "manastorm" : "dungeon") ? onlineGroupAiPartySize(onlineActivity.partySize) : requestedPartySize; - party.initializeParty( - character.id, - combat.level, - combat.health, - playerRole, - aiPartySize, - character.categoryId ?? "wow", - ); + if (simulationMode === "play") { + party.initializeParty( + character.id, + combat.level, + combat.health, + playerRole, + aiPartySize, + character.categoryId ?? "wow", + ); + } else { + party.initializeSpectatorParty(simulationSeed, combat.level, character.categoryId ?? "wow"); + } usePartyStore.getState().syncEquipment(combat.equipment, combat.inventory); combat.synchronizeActors(); combat.applyDefaultPartyBuffs(); resetPartyRuntimeClock(); - }, [character?.id, gameMode, manastormPartySize, onlineActivity?.id, playerRole]); + }, [character?.id, gameMode, manastormPartySize, onlineActivity?.id, playerRole, simulationMode, simulationSeed]); useEffect(() => { const party = usePartyStore.getState(); diff --git a/src/game/benchmark/balanceLabBuilds.test.ts b/src/game/benchmark/balanceLabBuilds.test.ts new file mode 100644 index 00000000..c56ca44b --- /dev/null +++ b/src/game/benchmark/balanceLabBuilds.test.ts @@ -0,0 +1,69 @@ +import { describe, expect, it } from "vitest"; +import { createConfiguredPartyMember } from "../partyStore"; +import { runtimeNormalizeTalentRanks } from "../talentRuntimeCatalog"; +import { + loadSelectableBenchmarkBuilds, + selectableBenchmarkBuildCatalog, +} from "./benchmarkBuilds"; + +describe("balance-lab selectable builds", () => { + it("lists every authored WoW specialization instead of the representative cohort", () => { + const catalog = selectableBenchmarkBuildCatalog(60, [ + "warrior", "paladin", "hunter", "rogue", "priest", "death-knight", + "shaman", "mage", "warlock", "druid", + ]); + expect(catalog).toHaveLength(31); + expect(catalog).toEqual(expect.arrayContaining([ + expect.objectContaining({ classId: "hunter", orientation: "Beast Mastery", role: "damage" }), + expect.objectContaining({ classId: "priest", orientation: "Discipline", role: "healer" }), + expect.objectContaining({ classId: "warlock", orientation: "Destruction", role: "damage" }), + expect.objectContaining({ classId: "druid", orientation: "Feral (Bear)", role: "tank" }), + ])); + expect(new Set(catalog.map((build) => build.id)).size).toBe(catalog.length); + }); + + it("legally allocates a previously omitted specialization", async () => { + const builds = await loadSelectableBenchmarkBuilds(20, ["hunter"]); + const beastMastery = builds.find((build) => build.orientation === "Beast Mastery"); + expect(beastMastery?.role).toBe("damage"); + expect(Object.keys(beastMastery?.talentRanks ?? {})).not.toHaveLength(0); + }); + + it("keeps each CoA specialization tree selectable", async () => { + const builds = await loadSelectableBenchmarkBuilds(20, ["witch-doctor"]); + expect(builds.map((build) => `${build.orientation}:${build.role}`)).toEqual([ + "Shadowhunting:damage", + "Voodoo:damage", + "Brewing:healer", + ]); + expect(builds.every((build) => Object.keys(build.talentRanks).length > 0)).toBe(true); + }); + + it("constructs a legal build for every selectable WoW, CoA, and RoM entry", async () => { + const catalog = selectableBenchmarkBuildCatalog(20); + const builds = await loadSelectableBenchmarkBuilds(20); + expect(builds.map((build) => build.id)).toEqual(catalog.map((build) => build.id)); + for (const build of builds) { + expect(runtimeNormalizeTalentRanks(build.classId, build.level, build.talentRanks)) + .toEqual(build.talentRanks); + } + }, 60_000); + + it("constructs an exact companion without replacing selected talents", () => { + const talents = Object.freeze({ "hunter-beast-mastery-0": 3 }); + const member = createConfiguredPartyMember({ + name: "Balance Hunter", + classId: "hunter", + specialization: "Beast Mastery", + specializationId: "hunter:beast-mastery", + talentTreeId: "hunter-beast-mastery", + talentRanks: talents, + role: "damage", + }, 20, 2, "balance-test"); + expect(member.name).toBe("Balance Hunter"); + expect(member.specialization).toBe("Beast Mastery"); + expect(member.specializationId).toBe("hunter:beast-mastery"); + expect(member.talentRanks).toBe(talents); + expect(member.id).toContain("party-damage-2-hunter"); + }); +}); diff --git a/src/game/benchmark/benchmarkBuilds.ts b/src/game/benchmark/benchmarkBuilds.ts index 5fe3326a..f38c57f3 100644 --- a/src/game/benchmark/benchmarkBuilds.ts +++ b/src/game/benchmark/benchmarkBuilds.ts @@ -3,6 +3,7 @@ import { CLASSES, COA_CLASS_IDS, ROM_CLASS_IDS, + classById, contentCategoryForClass, type BaseClassId, type ClassId, @@ -20,6 +21,10 @@ import type { EquipmentAssignments } from "../equipment"; import { partyRolesForClass, type PartyRole } from "../partyRoles"; import { runtimePartyTalentRanksForLevel } from "../partyTalentRuntime"; import { clampPlayerLevel } from "../progression"; +import { + specializationsForClass, + type SpecializationDefinition, +} from "../specializationCatalog"; import { runtimeAllocateTalentPoint, runtimeNormalizeTalentRanks, @@ -153,6 +158,16 @@ function benchmarkBuildId(classId: ClassId, role: PartyRole, level: number): str return `canonical-${contentCategoryForClass(classId)}-${classId}-${role}-level-${level}`; } +function benchmarkVariantBuildId( + classId: ClassId, + role: PartyRole, + orientation: string, + level: number, +): string { + const variant = orientation.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, ""); + return `balance-${contentCategoryForClass(classId)}-${classId}-${role}-${variant}-level-${level}`; +} + function commonBuildFields(classId: ClassId, role: PartyRole, level: number) { return { id: benchmarkBuildId(classId, role, level), @@ -365,6 +380,197 @@ function romBuild( }); } +function specializationTree( + catalog: TalentUiCatalog, + specialization: SpecializationDefinition, +): TalentUiTree { + const normalized = (value: string) => value.toLowerCase().replace(/[^a-z0-9]+/g, ""); + const names = new Set([ + normalized(specialization.talentTree), + normalized(specialization.displayName), + ]); + const tree = catalog.trees.find((candidate) => names.has(normalized(candidate.name))); + if (!tree) { + throw new Error( + `No talent tree matches ${classById(specialization.classId).name} ${specialization.displayName}.`, + ); + } + return tree; +} + +function allocateSingleTreeTalentRanks( + classId: BaseClassId, + catalog: TalentUiCatalog, + tree: TalentUiTree, + level: number, +): RuntimeTalentRanks { + const candidates = catalog.nodes + .filter((node) => node.treeId === tree.id) + .sort((left, right) => ( + left.row - right.row + || left.column - right.column + || left.index - right.index + || left.id.localeCompare(right.id) + )); + const successfulRequests: Record = {}; + let ranks: RuntimeTalentRanks = EMPTY_TALENT_RANKS; + while (true) { + let allocated = false; + for (const node of candidates) { + if ((successfulRequests[node.id] ?? 0) >= node.maxRank) continue; + const result = runtimeAllocateTalentPoint(ranks, classId, node.id, level); + if (!result.ok) continue; + successfulRequests[node.id] = (successfulRequests[node.id] ?? 0) + 1; + ranks = result.ranks; + allocated = true; + break; + } + if (!allocated) break; + } + return Object.freeze({ ...runtimeNormalizeTalentRanks(classId, level, ranks) }); +} + +function selectableClassicBuild( + specialization: SpecializationDefinition, + level: number, + catalog: TalentUiCatalog | null, +): BenchmarkBuildDefinition { + const classId = specialization.classId as BaseClassId; + let talentRanks: RuntimeTalentRanks; + try { + talentRanks = runtimePartyTalentRanksForLevel(classId, specialization.displayName, level); + } catch { + if (!catalog) throw new Error(`No talent catalog was loaded for ${classId}.`); + talentRanks = allocateSingleTreeTalentRanks( + classId, + catalog, + specializationTree(catalog, specialization), + level, + ); + } + return Object.freeze({ + ...commonBuildFields(classId, specialization.role, level), + id: benchmarkVariantBuildId(classId, specialization.role, specialization.displayName, level), + orientation: specialization.displayName, + talentRanks, + }); +} + +function selectableCoaBuild( + specialization: SpecializationDefinition, + level: number, + catalog: TalentUiCatalog, +): BenchmarkBuildDefinition { + const classId = specialization.classId as CoaClassId; + const tree = specializationTree(catalog, specialization); + const abilitiesByNode = coaNodeAbilities(classId); + return Object.freeze({ + ...commonBuildFields(classId, specialization.role, level), + id: benchmarkVariantBuildId(classId, specialization.role, specialization.displayName, level), + orientation: specialization.displayName, + talentRanks: allocateCoaTalentRanks( + classId, + catalog, + tree, + specialization.role, + level, + abilitiesByNode, + ), + }); +} + +export interface SelectableBenchmarkBuildCatalogEntry { + readonly id: string; + readonly source: ReturnType; + readonly classId: ClassId; + readonly role: PartyRole; + readonly orientation: string; + readonly level: number; +} + +/** Cheap metadata-only roster used by interactive tools before a build is selected. */ +export function selectableBenchmarkBuildCatalog( + level = CANONICAL_BENCHMARK_LEVEL, + classIds?: readonly ClassId[], +): readonly SelectableBenchmarkBuildCatalogEntry[] { + const safeLevel = clampPlayerLevel(level); + const requested = classIds ? new Set(classIds) : null; + return CLASSES + .map((definition) => definition.id) + .filter((classId) => !requested || requested.has(classId)) + .flatMap((classId): readonly SelectableBenchmarkBuildCatalogEntry[] => { + if (isRomClassId(classId)) return partyRolesForClass(classId).map((role) => ({ + id: benchmarkBuildId(classId, role, safeLevel), + source: contentCategoryForClass(classId), + classId, + role, + orientation: "Primary", + level: safeLevel, + })); + return specializationsForClass(classId).map((specialization) => ({ + id: benchmarkVariantBuildId(classId, specialization.role, specialization.displayName, safeLevel), + source: contentCategoryForClass(classId), + classId, + role: specialization.role, + orientation: specialization.displayName, + level: safeLevel, + })); + }); +} + +/** + * Builds every user-selectable class/spec/role variant for the balance lab. + * This is intentionally broader than the canonical benchmark cohort above, + * which keeps one representative orientation per class-role pair. + */ +export async function loadSelectableBenchmarkBuilds( + level = CANONICAL_BENCHMARK_LEVEL, + classIds?: readonly ClassId[], +): Promise { + const safeLevel = clampPlayerLevel(level); + const requested = classIds ? new Set(classIds) : null; + const selectedClassIds = CLASSES + .map((definition) => definition.id) + .filter((classId) => !requested || requested.has(classId)); + const catalogClassIds = selectedClassIds.filter((classId) => ( + isCoaClassId(classId) + || (isBaseClassId(classId) && specializationsForClass(classId).some((specialization) => { + try { + runtimePartyTalentRanksForLevel(classId, specialization.displayName, safeLevel); + return false; + } catch { + return true; + } + })) + )); + + await preloadAbilityCatalogsForClasses(selectedClassIds); + const catalogs = new Map(await Promise.all( + catalogClassIds.map(async (classId) => [ + classId, + await loadTalentUiCatalog(classId), + ] as const), + )); + + const builds: BenchmarkBuildDefinition[] = []; + for (const classId of selectedClassIds) { + if (isRomClassId(classId)) { + for (const role of partyRolesForClass(classId)) builds.push(romBuild(classId, role, safeLevel)); + continue; + } + for (const specialization of specializationsForClass(classId)) { + if (isBaseClassId(classId)) { + builds.push(selectableClassicBuild(specialization, safeLevel, catalogs.get(classId) ?? null)); + } else if (isCoaClassId(classId)) { + const catalog = catalogs.get(classId); + if (!catalog) throw new Error(`No loaded CoA talent catalog exists for ${classId}.`); + builds.push(selectableCoaBuild(specialization, safeLevel, catalog)); + } + } + } + return builds; +} + /** * Creates one stable, legal benchmark build for every declared class-role pair. * A filter changes only membership; output always follows the canonical CLASSES diff --git a/src/game/bossPressure.test.ts b/src/game/bossPressure.test.ts new file mode 100644 index 00000000..93fc9e26 --- /dev/null +++ b/src/game/bossPressure.test.ts @@ -0,0 +1,32 @@ +import { describe, expect, it } from "vitest"; +import { estimateBossPartyPressure, rankBossPartyPressure } from "./bossPressure"; +import { DUNGEON_DEFINITIONS } from "./dungeonRegistry"; + +describe("boss party-pressure audit", () => { + it("produces a finite deterministic ranking for every WoW boss", () => { + const definitions = DUNGEON_DEFINITIONS.filter((dungeon) => dungeon.expansion !== "runewaker"); + const first = rankBossPartyPressure(definitions); + const second = rankBossPartyPressure(definitions); + expect(first.length).toBeGreaterThan(200); + expect(second).toEqual(first); + expect(first.every((entry) => Number.isFinite(entry.partyDamagePerSecond) + && entry.partyDamagePerSecond >= 0)).toBe(true); + expect(first.map((entry) => entry.partyDamage)).toEqual( + [...first.map((entry) => entry.partyDamage)].sort((left, right) => right - left), + ); + }); + + it("counts grouped effects across the party and excludes self-only utility", () => { + const gundrak = DUNGEON_DEFINITIONS.find((dungeon) => dungeon.id === "gundrak")!; + const eckId = Object.entries(gundrak.entities) + .find(([, entity]) => entity.combat?.serverEntry === 29_932)![0]; + const estimate = estimateBossPartyPressure(gundrak, eckId); + expect(estimate.boss).toBe("Eck the Ferocious"); + expect(estimate.attacks.find((attack) => attack.spellId === 55_837)?.partyDamage).toBe(0); + expect(estimate.attacks.find((attack) => attack.spellId === 55_816)?.partyDamage).toBe(0); + expect(estimate.attacks.find((attack) => attack.spellId === 55_815)).toMatchObject({ + target: "random-party", + targetsPerCast: 1, + }); + }); +}); diff --git a/src/game/bossPressure.ts b/src/game/bossPressure.ts new file mode 100644 index 00000000..8c71120c --- /dev/null +++ b/src/game/bossPressure.ts @@ -0,0 +1,151 @@ +import { creatureRuntimeBaseStats } from "./azerothCoreReference"; +import { scaledDungeonEnemyLevel } from "./dungeonLevelScaling"; +import type { DungeonDefinition } from "./dungeonTypes"; +import type { + EnemyAbilityEffect, + EnemyAttackDefinition, + EnemyAtomicAbilityEffect, +} from "./enemyAttacks"; +import type { PopulationEntityDefinition } from "./mobPopulation"; + +export const BOSS_PRESSURE_WINDOW_MS = 60_000; +export const BOSS_PRESSURE_PARTY_SIZE = 5; + +export interface BossAttackPressureEstimate { + readonly id: string; + readonly name: string; + readonly spellId?: number; + readonly target: EnemyAttackDefinition["target"]; + readonly school: EnemyAttackDefinition["school"]; + readonly expectedCasts: number; + readonly targetsPerCast: number; + readonly damagePerTarget: number; + readonly partyDamage: number; +} + +export interface BossPartyPressureEstimate { + readonly key: string; + readonly dungeonId: string; + readonly dungeonTitle: string; + readonly boss: string; + readonly serverEntry: number | null; + readonly playerLevel: number; + readonly enemyLevel: number; + readonly windowSeconds: number; + readonly attackDamage: number; + readonly partyDamage: number; + readonly partyDamagePerSecond: number; + readonly tankDamage: number; + readonly randomTargetDamage: number; + readonly groupwideDamage: number; + readonly attacks: readonly BossAttackPressureEstimate[]; +} + +function midpoint(range: readonly [number, number] | undefined, fallback: number): number { + if (!range) return fallback; + return (Math.max(0, range[0]) + Math.max(0, range[1])) / 2; +} + +function expectedCasts(attack: EnemyAttackDefinition, windowMs: number): number { + const initial = midpoint(attack.initialCooldownMs, 450); + if (windowMs < initial) return 0; + const repeat = Math.max(1, midpoint(attack.repeatCooldownMs, attack.cooldownMs)); + const casts = 1 + (windowMs - initial) / repeat; + return Math.min(attack.maximumCasts ?? Number.POSITIVE_INFINITY, casts); +} + +function atomicDamageMultiplier(effect: EnemyAtomicAbilityEffect): number { + if (effect.kind === "damage") return Math.max(0, effect.multiplier); + if (effect.kind === "leech") return Math.max(0, effect.damageMultiplier); + if (effect.kind === "control") return Math.max(0, effect.damageMultiplier ?? 0); + return 0; +} + +function damageMultiplier(attack: EnemyAttackDefinition, effect: EnemyAbilityEffect | undefined): number { + if (!effect) return Math.max(0, attack.damageMultiplier); + if (effect.kind === "composite") { + return effect.effects.reduce((total, entry) => total + atomicDamageMultiplier(entry), 0); + } + return atomicDamageMultiplier(effect); +} + +function targetsPerCast(attack: EnemyAttackDefinition, partySize: number): number { + if (attack.target === "nearby-party") return partySize; + if (attack.target === "primary" || attack.target === "random-party") return 1; + return 0; +} + +/** + * Comparable direct-damage ceiling for one boss with a grouped party. It uses + * live attack definitions and source creature stats, but deliberately excludes + * armor/resistance, avoidable movement, summons, healing, and mutually exclusive + * phase uptime. Those omissions keep the audit deterministic and make inflated + * schedules or accidental party-wide targeting obvious. + */ +export function estimateBossPartyPressure( + dungeon: DungeonDefinition, + entityId: string, + playerLevel = 80, + windowMs = BOSS_PRESSURE_WINDOW_MS, + partySize = BOSS_PRESSURE_PARTY_SIZE, +): BossPartyPressureEstimate { + const entity: PopulationEntityDefinition | undefined = dungeon.entities[entityId]; + if (!entity || entity.kind !== "boss") throw new Error(`${dungeon.id}:${entityId} is not a boss`); + const enemyLevel = scaledDungeonEnemyLevel(playerLevel, true); + const serverEntry = entity.combat?.serverEntry ?? null; + const baseDamage = serverEntry + ? creatureRuntimeBaseStats(serverEntry, enemyLevel)?.averageAttackDamage + : undefined; + const attackDamage = (baseDamage ?? (12 + enemyLevel * 2)) * (entity.combat?.damageMultiplier ?? 1); + const attacks = (entity.combat?.attacks ?? []).map((attack): BossAttackPressureEstimate => { + const casts = expectedCasts(attack, windowMs); + const targets = targetsPerCast(attack, partySize); + const perTarget = attackDamage * damageMultiplier(attack, attack.effect); + return { + id: attack.id, + name: attack.name, + ...(attack.spellId === undefined ? {} : { spellId: attack.spellId }), + target: attack.target, + school: attack.school, + expectedCasts: casts, + targetsPerCast: targets, + damagePerTarget: perTarget, + partyDamage: casts * targets * perTarget, + }; + }); + const sum = (target: EnemyAttackDefinition["target"]): number => attacks + .filter((attack) => attack.target === target) + .reduce((total, attack) => total + attack.partyDamage, 0); + const partyDamage = attacks.reduce((total, attack) => total + attack.partyDamage, 0); + return { + key: `${dungeon.id}/${entityId}`, + dungeonId: dungeon.id, + dungeonTitle: dungeon.title, + boss: entity.name, + serverEntry, + playerLevel, + enemyLevel, + windowSeconds: windowMs / 1_000, + attackDamage, + partyDamage, + partyDamagePerSecond: partyDamage / Math.max(1, windowMs / 1_000), + tankDamage: sum("primary"), + randomTargetDamage: sum("random-party"), + groupwideDamage: sum("nearby-party"), + attacks, + }; +} + +export function rankBossPartyPressure( + definitions: readonly DungeonDefinition[], + playerLevel = 80, + windowMs = BOSS_PRESSURE_WINDOW_MS, + partySize = BOSS_PRESSURE_PARTY_SIZE, +): readonly BossPartyPressureEstimate[] { + return definitions.flatMap((dungeon) => Object.entries(dungeon.entities) + .filter(([, entity]) => entity.kind === "boss") + .map(([entityId]) => estimateBossPartyPressure(dungeon, entityId, playerLevel, windowMs, partySize))) + .sort((left, right) => right.partyDamage - left.partyDamage + || left.boss.localeCompare(right.boss) + || left.dungeonId.localeCompare(right.dungeonId)); +} diff --git a/src/game/bossTesting.test.ts b/src/game/bossTesting.test.ts index 44545d12..b738f9a6 100644 --- a/src/game/bossTesting.test.ts +++ b/src/game/bossTesting.test.ts @@ -1,5 +1,5 @@ import { afterEach, describe, expect, it } from "vitest"; -import { buildBossTestingCatalog, BOSS_TESTING_CATALOG, createBossTestingRoom, randomTestingBoss } from "./bossTesting"; +import { anotherRandomTestingBoss, buildBossTestingCatalog, BOSS_TESTING_CATALOG, createBossTestingRoom, randomTestingBoss } from "./bossTesting"; import { clearBossTestingDungeons, DUNGEON_DEFINITIONS, registerBossTestingDungeon, requireDungeonDefinition } from "./dungeonRegistry"; import { activateDungeonSession, restartActiveDungeonSession } from "./dungeonSession"; import { useGameStore } from "./store"; @@ -138,5 +138,7 @@ describe("Boss Testing", () => { expect(randomTestingBoss(candidates, () => 0)).toBe(candidates[0]); expect(randomTestingBoss(candidates, () => 1)).toBe(candidates[1]); expect(randomTestingBoss(candidates, () => Number.NaN)).toBe(candidates[0]); + expect(anotherRandomTestingBoss(candidates, candidates[0].key, () => 0)).toBe(candidates[1]); + expect(anotherRandomTestingBoss([candidates[0]], candidates[0].key)).toBeNull(); }); }); diff --git a/src/game/bossTesting.ts b/src/game/bossTesting.ts index 07befb37..b1206ac7 100644 --- a/src/game/bossTesting.ts +++ b/src/game/bossTesting.ts @@ -42,6 +42,14 @@ export function randomTestingBoss(bosses: readonly TestableBoss[], random: () => return bosses[index]; } +export function anotherRandomTestingBoss( + bosses: readonly TestableBoss[], + currentKey: string, + random: () => number = Math.random, +): TestableBoss | null { + return randomTestingBoss(bosses.filter((boss) => boss.key !== currentKey), random); +} + function references(value: unknown, ids: ReadonlySet): boolean { if (typeof value === "string") return ids.has(value); if (Array.isArray(value)) return value.some((entry) => references(entry, ids)); diff --git a/src/game/combatStore.ts b/src/game/combatStore.ts index f7586aeb..ab4fe27b 100644 --- a/src/game/combatStore.ts +++ b/src/game/combatStore.ts @@ -1,5 +1,6 @@ import { create } from "zustand"; import { combatNow } from "./combatClock"; +import { useDungeonSimulationStore } from "./dungeonSimulationStore"; import { useGameStore } from "./store"; import { baseClassFor, @@ -2633,7 +2634,7 @@ function damageMobInWork( const health = mob.health - applied; const killed = health <= 0; const canPlayWoundAnimation = !killed && now >= mob.nextWoundAnimationAt; - const testing = Boolean(useGameStore.getState().bossTest); + const testing = useGameStore.getState().gmTestMode; const canAward = killed && !mob.experienceGranted && !testing; const beforeLevel = work.progression.level; const pendingLoot = testing ? [] : killed && mob.lootSourceId @@ -3365,7 +3366,7 @@ function combatActorSnapshots(state: CombatState): Readonly((set, get) => ({ get().synchronizeActors(); const state = get(); const partyMembers = usePartyStore.getState().members; + const includePlayer = useDungeonSimulationStore.getState().sessionMode === "play"; const sources = [ - { + ...(includePlayer ? [{ id: PLAYER_AURA_ENTITY_ID, level: state.level, abilities: state.abilities, - }, + }] : []), ...partyMembers.filter((member) => member.health > 0).map((member) => ({ id: member.id, level: member.level, @@ -4200,7 +4202,10 @@ export const useCombatStore = create((set, get) => ({ selected.set(family, { sourceId: source.id, ability, effects, potency }); } } - const recipients = [PLAYER_AURA_ENTITY_ID, ...partyMembers.filter((member) => member.health > 0).map((member) => member.id)]; + const recipients = [ + ...(includePlayer ? [PLAYER_AURA_ENTITY_ID] : []), + ...partyMembers.filter((member) => member.health > 0).map((member) => member.id), + ]; for (const [family, buff] of selected) { for (const recipientId of recipients) { for (const effect of buff.effects) { diff --git a/src/game/dungeonRouteRuntime.ts b/src/game/dungeonRouteRuntime.ts new file mode 100644 index 00000000..79fcc51e --- /dev/null +++ b/src/game/dungeonRouteRuntime.ts @@ -0,0 +1,143 @@ +import { dispatchDungeonWorldObjectInteraction } from "./dungeonWorldInteraction"; +import { requireDungeonDefinition } from "./dungeonRegistry"; +import { useDungeonRouteStore } from "./dungeonRouteStore"; +import { + dungeonRouteDefinition, + dungeonRouteLeg, +} from "./dungeonRoutes"; +import { useDungeonSimulationStore } from "./dungeonSimulationStore"; +import type { DungeonRouteDefinitionV1, DungeonRouteLeg } from "./dungeonSimulationTypes"; +import type { Vector3Tuple } from "./dungeonTypes"; + +export interface ActiveDungeonRouteTarget { + readonly route: DungeonRouteDefinitionV1; + readonly leg: DungeonRouteLeg; + readonly checkpointIndex: number; + readonly target: Vector3Tuple; + readonly remaining: readonly Vector3Tuple[]; +} + +let activeDungeonId: string | null = null; +let activeObjectiveId: string | null = null; +let checkpointIndex = 0; +const completedActions = new Set(); + +function distance(left: Vector3Tuple, right: Vector3Tuple): number { + return Math.hypot(right[0] - left[0], right[1] - left[1], right[2] - left[2]); +} + +export function resetDungeonRouteRuntime(): void { + activeDungeonId = null; + activeObjectiveId = null; + checkpointIndex = 0; + completedActions.clear(); +} + +export function routeForActiveDungeon(dungeonId: string): DungeonRouteDefinitionV1 | null { + const route = dungeonRouteDefinition(dungeonId); + if (!route) return null; + const simulation = useDungeonSimulationStore.getState(); + if (simulation.sessionMode === "spectate-live") return route; + return useDungeonRouteStore.getState().isApproved(route) ? route : null; +} + +function executeReachedActions( + dungeonId: string, + leg: DungeonRouteLeg, + reachedIndex: number, + actorId: string | undefined, + now: number, +): void { + const definition = requireDungeonDefinition(dungeonId); + for (const action of leg.actions) { + if (action.checkpointIndex > reachedIndex || completedActions.has(action.id)) continue; + const object = definition.serverGameObjects.find((candidate) => candidate.id === action.objectId); + if (!object?.interaction) { + useDungeonSimulationStore.getState().addFinding({ + id: `invalid-action:${leg.id}:${action.id}`, + atMs: useDungeonSimulationStore.getState().elapsedMs, + severity: "critical", + code: "invalid-required-interaction", + message: `Route action ${action.id} references unavailable object ${action.objectId}.`, + objectiveId: leg.objectiveId, + checkpointIndex: action.checkpointIndex, + }); + completedActions.add(action.id); + continue; + } + dispatchDungeonWorldObjectInteraction(object, actorId, now); + if (useDungeonSimulationStore.getState().sessionMode === "spectate-live") { + useDungeonSimulationStore.getState().addFinding({ + id: `route-action:${leg.id}:${action.id}`, + atMs: useDungeonSimulationStore.getState().elapsedMs, + severity: "info", + code: "route-action", + message: `Performed required route action ${action.id}.`, + objectiveId: leg.objectiveId, + checkpointIndex: action.checkpointIndex, + actionId: action.id, + }); + } + completedActions.add(action.id); + } +} + +function advanceNavigationOnlyObjective(route: DungeonRouteDefinitionV1, leg: DungeonRouteLeg): void { + const simulation = useDungeonSimulationStore.getState(); + if (simulation.sessionMode !== "spectate-live" || simulation.mode !== "navigation-only") return; + const index = route.legs.findIndex((candidate) => candidate.id === leg.id); + const next = route.legs[index + 1] ?? null; + simulation.setRouteProgress(next?.objectiveId ?? null, 0); + activeObjectiveId = next?.objectiveId ?? null; + checkpointIndex = 0; +} + +export function activeDungeonRouteTarget( + dungeonId: string, + objectiveId: string | null, + position: Vector3Tuple, + actorId: string | undefined, + now: number, +): ActiveDungeonRouteTarget | null { + const route = routeForActiveDungeon(dungeonId); + const simulation = useDungeonSimulationStore.getState(); + const routedObjectiveId = simulation.sessionMode === "spectate-live" && simulation.mode === "navigation-only" + ? simulation.objectiveId + : objectiveId; + const leg = dungeonRouteLeg(route, routedObjectiveId); + if (!route || !leg || !leg.checkpoints.length) return null; + if (activeDungeonId !== dungeonId || activeObjectiveId !== leg.objectiveId) { + activeDungeonId = dungeonId; + activeObjectiveId = leg.objectiveId; + checkpointIndex = 0; + } + while ( + checkpointIndex < leg.checkpoints.length + && distance(position, leg.checkpoints[checkpointIndex]) <= 1.25 + ) { + executeReachedActions(dungeonId, leg, checkpointIndex, actorId, now); + checkpointIndex += 1; + } + if (checkpointIndex >= leg.checkpoints.length) { + advanceNavigationOnlyObjective(route, leg); + return null; + } + if (simulation.sessionMode === "spectate-live") { + simulation.setRouteProgress(leg.objectiveId, checkpointIndex); + } + return { + route, + leg, + checkpointIndex, + target: leg.checkpoints[checkpointIndex], + remaining: leg.checkpoints.slice(checkpointIndex), + }; +} + +export function activeDungeonRouteProgress(): { + readonly dungeonId: string | null; + readonly objectiveId: string | null; + readonly checkpointIndex: number; +} { + return { dungeonId: activeDungeonId, objectiveId: activeObjectiveId, checkpointIndex }; +} diff --git a/src/game/dungeonRouteStore.ts b/src/game/dungeonRouteStore.ts new file mode 100644 index 00000000..1018207a --- /dev/null +++ b/src/game/dungeonRouteStore.ts @@ -0,0 +1,35 @@ +import { create } from "zustand"; +import { fetchDungeonRouteApprovals } from "../app/dungeonSimulationClient"; +import type { DungeonRouteApproval, DungeonRouteDefinitionV1 } from "./dungeonSimulationTypes"; +import { + cacheDungeonRouteApprovals, + readCachedDungeonRouteApprovals, + routeHasExactApproval, +} from "./dungeonRoutes"; + +export interface DungeonRouteState { + approvals: readonly DungeonRouteApproval[]; + loading: boolean; + refreshedAt: number | null; + refresh: () => Promise; + isApproved: (route: DungeonRouteDefinitionV1 | null) => boolean; +} + +export const useDungeonRouteStore = create((set, get) => ({ + approvals: readCachedDungeonRouteApprovals(), + loading: false, + refreshedAt: null, + refresh: async () => { + if (get().loading) return; + set({ loading: true }); + try { + const approvals = await fetchDungeonRouteApprovals(); + cacheDungeonRouteApprovals(approvals); + set({ approvals, refreshedAt: Date.now(), loading: false }); + } catch { + // An exact-hash cached approval is intentionally usable during outages. + set({ loading: false }); + } + }, + isApproved: (route) => routeHasExactApproval(route, get().approvals), +})); diff --git a/src/game/dungeonRoutes.ts b/src/game/dungeonRoutes.ts new file mode 100644 index 00000000..0072eb63 --- /dev/null +++ b/src/game/dungeonRoutes.ts @@ -0,0 +1,108 @@ +import rawCatalog from "./generated/dungeonRouteCatalog.generated.json"; +import type { + DungeonRouteApproval, + DungeonRouteCatalogV1, + DungeonRouteDefinitionV1, + DungeonRouteLeg, +} from "./dungeonSimulationTypes"; +import type { Vector3Tuple } from "./dungeonTypes"; + +export const DUNGEON_ROUTE_CATALOG = rawCatalog as unknown as DungeonRouteCatalogV1; +export const DUNGEON_ROUTE_APPROVAL_CACHE_KEY = "healer-man.dungeon-route-approvals.v1"; + +const routesByDungeon = new Map( + DUNGEON_ROUTE_CATALOG.routes.map((route) => [route.dungeonId, route] as const), +); + +export function dungeonRouteDefinition(dungeonId: string, routeId = "primary"): DungeonRouteDefinitionV1 | null { + const route = routesByDungeon.get(dungeonId) ?? null; + return route?.id === routeId ? route : null; +} + +export function dungeonRouteLeg( + route: DungeonRouteDefinitionV1 | null, + objectiveId: string | null, +): DungeonRouteLeg | null { + if (!route || !objectiveId) return null; + return route.legs.find((leg) => leg.objectiveId === objectiveId) ?? null; +} + +export function routeDistance(points: readonly Vector3Tuple[]): number { + let total = 0; + for (let index = 1; index < points.length; index += 1) { + total += Math.hypot( + points[index][0] - points[index - 1][0], + points[index][1] - points[index - 1][1], + points[index][2] - points[index - 1][2], + ); + } + return total; +} + +export function routePointDistanceSquared(point: Vector3Tuple, start: Vector3Tuple, end: Vector3Tuple): { + readonly planarSquared: number; + readonly vertical: number; + readonly progress: number; +} { + const dx = end[0] - start[0]; + const dz = end[2] - start[2]; + const lengthSquared = dx * dx + dz * dz; + const progress = lengthSquared > 1e-9 + ? Math.max(0, Math.min(1, ((point[0] - start[0]) * dx + (point[2] - start[2]) * dz) / lengthSquared)) + : 0; + const projectedX = start[0] + dx * progress; + const projectedY = start[1] + (end[1] - start[1]) * progress; + const projectedZ = start[2] + dz * progress; + return { + planarSquared: (point[0] - projectedX) ** 2 + (point[2] - projectedZ) ** 2, + vertical: Math.abs(point[1] - projectedY), + progress, + }; +} + +export function positionAlongRouteCorridor( + point: Vector3Tuple, + checkpoints: readonly Vector3Tuple[], + planarLimit = 10, + verticalLimit = 4, +): boolean { + for (let index = 1; index < checkpoints.length; index += 1) { + const distance = routePointDistanceSquared(point, checkpoints[index - 1], checkpoints[index]); + if (distance.planarSquared <= planarLimit ** 2 && distance.vertical <= verticalLimit) return true; + } + return checkpoints.length === 1 + && Math.hypot(point[0] - checkpoints[0][0], point[2] - checkpoints[0][2]) <= planarLimit + && Math.abs(point[1] - checkpoints[0][1]) <= verticalLimit; +} + +export function readCachedDungeonRouteApprovals(): readonly DungeonRouteApproval[] { + if (typeof localStorage === "undefined") return []; + try { + const parsed = JSON.parse(localStorage.getItem(DUNGEON_ROUTE_APPROVAL_CACHE_KEY) ?? "null"); + if (!Array.isArray(parsed?.approvals)) return []; + return parsed.approvals.filter((approval: unknown): approval is DungeonRouteApproval => { + if (!approval || typeof approval !== "object") return false; + const value = approval as Partial; + return typeof value.dungeonId === "string" && typeof value.routeId === "string" + && /^[a-f0-9]{64}$/.test(value.routeHash ?? "") && Number.isFinite(value.reviewedAt); + }); + } catch { + return []; + } +} + +export function cacheDungeonRouteApprovals(approvals: readonly DungeonRouteApproval[]): void { + if (typeof localStorage === "undefined") return; + localStorage.setItem(DUNGEON_ROUTE_APPROVAL_CACHE_KEY, JSON.stringify({ approvals })); +} + +export function routeHasExactApproval( + route: DungeonRouteDefinitionV1 | null, + approvals: readonly DungeonRouteApproval[], +): boolean { + return Boolean(route?.generationStatus === "Candidate" && approvals.some((approval) => ( + approval.dungeonId === route.dungeonId + && approval.routeId === route.id + && approval.routeHash === route.hash + ))); +} diff --git a/src/game/dungeonSession.ts b/src/game/dungeonSession.ts index 2ca1cafb..e67e279f 100644 --- a/src/game/dungeonSession.ts +++ b/src/game/dungeonSession.ts @@ -21,12 +21,16 @@ import { dungeonContentIsUsable } from "../content/contentManager"; import { useDungeonRunStore } from "./dungeonRunStore"; import type { DungeonRunProgress } from "./dungeonRunTypes"; import { validBossDifficulty } from "./dungeonDifficulty"; +import { resetDungeonRouteRuntime } from "./dungeonRouteRuntime"; +import { useDungeonSimulationStore } from "./dungeonSimulationStore"; +import { dungeonRouteDefinition } from "./dungeonRoutes"; export interface DungeonSessionOptions { readonly bossDifficulty?: number; readonly gameMode?: GameMode; readonly spawn?: WorldSpawn; readonly gmTestMode?: boolean; + readonly dungeonSimulation?: boolean; readonly bossTest?: BossTestSession | null; readonly gmReviewTarget?: GmReviewTarget | null; /** Used by in-game encounter transitions so character progression and inventory survive. */ @@ -50,7 +54,8 @@ export function activateDungeonSession( const definition = dungeonDefinitionById(dungeonId); const testingSource = bossTestingSourceDungeonId(dungeonId); const testing = Boolean(testingSource && options.gmTestMode && options.bossTest?.sourceDungeonId === testingSource); - if (!definition || (!testing && !dungeonCanEnter(dungeonId)) + const dungeonSimulation = Boolean(options.dungeonSimulation && options.gmTestMode && dungeonRouteDefinition(dungeonId)); + if (!definition || (!testing && !dungeonSimulation && !dungeonCanEnter(dungeonId)) || !dungeonContentIsUsable(testing ? testingSource! : dungeonId)) { return false; } @@ -72,6 +77,8 @@ export function activateDungeonSession( resetDungeonEncounters("dungeon", dungeonId); clearMobRuntimeRegistry(); clearPartyRuntimeRegistry(); + resetDungeonRouteRuntime(); + useDungeonSimulationStore.getState().leave(); clearDungeonRuntimeCaches(); resetPartyRuntimeClock(); if (options.preserveCharacter) { @@ -97,6 +104,7 @@ export function activateDungeonSession( }); usePartyStore.setState({ seed: null, + spectatorParty: false, members: [], command: "defend", selectedMemberId: null, diff --git a/src/game/dungeonSimulationStore.test.ts b/src/game/dungeonSimulationStore.test.ts new file mode 100644 index 00000000..99a56039 --- /dev/null +++ b/src/game/dungeonSimulationStore.test.ts @@ -0,0 +1,70 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { + DUNGEON_SIMULATION_FIXED_STEP_MS, + fixedSimulationTickCount, + useDungeonSimulationStore, +} from "./dungeonSimulationStore"; +import { createSpectatorDungeonParty } from "./partyStore"; +import { routeHasExactApproval } from "./dungeonRoutes"; +import type { DungeonRouteDefinitionV1, DungeonSimulationSpeed } from "./dungeonSimulationTypes"; + +const route: DungeonRouteDefinitionV1 = { + schemaVersion: 1, + id: "primary", + dungeonId: "test-dungeon", + mapId: 1, + hash: "a".repeat(64), + generationStatus: "Candidate", + generationIssues: [], + legs: [{ + id: "leg-1", + objectiveId: "boss-1", + objectiveName: "Boss", + checkpoints: [[0, 0, 0], [4, 0, 0]], + expectedDistance: 4, + corridorPlanarDistance: 10, + corridorVerticalDistance: 4, + actions: [], + }], +}; + +describe("dungeon simulation fixed clock", () => { + beforeEach(() => useDungeonSimulationStore.getState().leave()); + + it("produces the same ordered ticks at every playback speed", () => { + const speeds: readonly DungeonSimulationSpeed[] = [0.5, 1, 2, 4]; + for (const speed of speeds) { + const wallDuration = 500 / speed; + const result = fixedSimulationTickCount(0, wallDuration, speed); + expect(result.ticks).toBe(500 / DUNGEON_SIMULATION_FIXED_STEP_MS); + expect(result.accumulatorMs).toBe(0); + } + }); + + it("freezes while paused and advances exactly one tick per step", () => { + const store = useDungeonSimulationStore.getState(); + store.startLive({ dungeonId: route.dungeonId, route, mode: "navigation-only", seed: "clock", startedAt: 10_000 }); + store.setRunning(false); + expect(useDungeonSimulationStore.getState().consumeTicks(5_000)).toEqual([]); + expect(useDungeonSimulationStore.getState().elapsedMs).toBe(0); + useDungeonSimulationStore.getState().step(); + expect(useDungeonSimulationStore.getState().consumeTicks(0)).toEqual([10_050]); + expect(useDungeonSimulationStore.getState().elapsedMs).toBe(50); + }); +}); + +describe("spectator roster and exact-hash approvals", () => { + it("creates a stable tank, healer, and three damage dealers", () => { + const first = createSpectatorDungeonParty("same-seed", 80, "wow"); + const second = createSpectatorDungeonParty("same-seed", 80, "wow"); + expect(second).toEqual(first); + expect(first.map((member) => member.role)).toEqual(["tank", "healer", "damage", "damage", "damage"]); + }); + + it("rejects stale hashes and generator-rejected routes", () => { + const approval = { dungeonId: route.dungeonId, routeId: route.id, routeHash: route.hash, reviewedAt: 1 }; + expect(routeHasExactApproval(route, [approval])).toBe(true); + expect(routeHasExactApproval({ ...route, hash: "b".repeat(64) }, [approval])).toBe(false); + expect(routeHasExactApproval({ ...route, generationStatus: "Rejected" }, [approval])).toBe(false); + }); +}); diff --git a/src/game/dungeonSimulationStore.ts b/src/game/dungeonSimulationStore.ts new file mode 100644 index 00000000..1012db06 --- /dev/null +++ b/src/game/dungeonSimulationStore.ts @@ -0,0 +1,274 @@ +import { create } from "zustand"; +import type { + DungeonReplayFrame, + DungeonReplayV1, + DungeonRouteDefinitionV1, + DungeonSessionMode, + DungeonSimulationFinding, + DungeonSimulationMode, + DungeonSimulationPull, + DungeonSimulationReportV1, + DungeonSimulationResult, + DungeonSimulationSpeed, + DungeonSpectatorCameraMode, +} from "./dungeonSimulationTypes"; + +export const DUNGEON_SIMULATION_FIXED_STEP_MS = 50; +export const DUNGEON_REPLAY_SAMPLE_MS = 100; +export const DUNGEON_REPLAY_KEYFRAME_MS = 5_000; +export const DUNGEON_SIMULATION_MAX_DURATION_MS = 2 * 60 * 60 * 1_000; +const MAX_TICKS_PER_ADVANCE = 80; + +export interface StartDungeonSimulationOptions { + readonly dungeonId: string; + readonly route: DungeonRouteDefinitionV1; + readonly mode: DungeonSimulationMode; + readonly seed: string; + readonly startedAt?: number; +} + +export interface DungeonSimulationState { + sessionMode: DungeonSessionMode; + mode: DungeonSimulationMode; + runState: "idle" | "running" | "paused" | "finished"; + speed: DungeonSimulationSpeed; + cameraMode: DungeonSpectatorCameraMode; + dungeonId: string | null; + routeId: string | null; + routeHash: string | null; + seed: string; + startedAt: number; + elapsedMs: number; + accumulatorMs: number; + pendingSteps: number; + objectiveId: string | null; + checkpointIndex: number; + result: DungeonSimulationResult | null; + findings: readonly DungeonSimulationFinding[]; + pulls: readonly DungeonSimulationPull[]; + recoveries: number; + frames: readonly DungeonReplayFrame[]; + replay: DungeonReplayV1 | null; + startLive: (options: StartDungeonSimulationOptions) => void; + startReplay: (replay: DungeonReplayV1) => void; + leave: () => void; + setRunning: (running: boolean) => void; + toggleRunning: () => void; + setSpeed: (speed: DungeonSimulationSpeed) => void; + setCameraMode: (mode: DungeonSpectatorCameraMode) => void; + step: () => void; + seekReplay: (elapsedMs: number) => void; + consumeTicks: (wallDeltaMs: number) => readonly number[]; + setRouteProgress: (objectiveId: string | null, checkpointIndex: number) => void; + addFinding: (finding: DungeonSimulationFinding) => void; + addPull: (pull: DungeonSimulationPull) => void; + addRecovery: () => void; + addFrame: (frame: DungeonReplayFrame) => void; + finish: (result: DungeonSimulationResult, roster: DungeonSimulationReportV1["roster"]) => DungeonReplayV1 | null; +} + +const initialState = { + sessionMode: "play" as DungeonSessionMode, + mode: "full-combat" as DungeonSimulationMode, + runState: "idle" as const, + speed: 1 as DungeonSimulationSpeed, + cameraMode: "follow-leader" as DungeonSpectatorCameraMode, + dungeonId: null as string | null, + routeId: null as string | null, + routeHash: null as string | null, + seed: "", + startedAt: 0, + elapsedMs: 0, + accumulatorMs: 0, + pendingSteps: 0, + objectiveId: null as string | null, + checkpointIndex: 0, + result: null as DungeonSimulationResult | null, + findings: [] as readonly DungeonSimulationFinding[], + pulls: [] as readonly DungeonSimulationPull[], + recoveries: 0, + frames: [] as readonly DungeonReplayFrame[], + replay: null as DungeonReplayV1 | null, +}; + +function clampWallDelta(value: number): number { + return Math.max(0, Math.min(1_000, Number.isFinite(value) ? value : 0)); +} + +export function fixedSimulationTickCount( + accumulatorMs: number, + wallDeltaMs: number, + speed: DungeonSimulationSpeed, +): { readonly ticks: number; readonly accumulatorMs: number } { + const total = Math.max(0, accumulatorMs) + clampWallDelta(wallDeltaMs) * speed; + const ticks = Math.min(MAX_TICKS_PER_ADVANCE, Math.floor(total / DUNGEON_SIMULATION_FIXED_STEP_MS)); + return { ticks, accumulatorMs: total - ticks * DUNGEON_SIMULATION_FIXED_STEP_MS }; +} + +export const useDungeonSimulationStore = create((set, get) => ({ + ...initialState, + startLive: ({ dungeonId, route, mode, seed, startedAt = Date.now() }) => set({ + ...initialState, + sessionMode: "spectate-live", + mode, + runState: "running", + dungeonId, + routeId: route.id, + routeHash: route.hash, + seed, + startedAt, + objectiveId: route.legs[0]?.objectiveId ?? null, + }), + startReplay: (replay) => set({ + ...initialState, + sessionMode: "spectate-replay", + mode: replay.mode, + runState: "paused", + dungeonId: replay.dungeonId, + routeId: replay.routeId, + routeHash: replay.routeHash, + seed: replay.seed, + startedAt: replay.startedAt, + result: replay.result, + findings: replay.report.findings, + pulls: replay.report.pulls, + recoveries: replay.report.recoveries, + frames: replay.frames, + replay, + }), + leave: () => set(initialState), + setRunning: (running) => set((state) => state.sessionMode === "play" || state.runState === "finished" + ? state + : { runState: running ? "running" : "paused", accumulatorMs: 0 }), + toggleRunning: () => { + const state = get(); + state.setRunning(state.runState !== "running"); + }, + setSpeed: (speed) => set({ speed }), + setCameraMode: (cameraMode) => set({ cameraMode }), + step: () => set((state) => { + if (state.runState !== "paused") return state; + if (state.sessionMode === "spectate-replay" && state.replay) { + const next = state.replay.frames.find((frame) => frame.atMs > state.elapsedMs); + return { elapsedMs: next?.atMs ?? state.elapsedMs }; + } + return { pendingSteps: state.pendingSteps + 1 }; + }), + seekReplay: (elapsedMs) => set((state) => state.sessionMode !== "spectate-replay" || !state.replay + ? state + : { elapsedMs: Math.max(0, Math.min(state.replay.durationMs, elapsedMs)), accumulatorMs: 0 }), + consumeTicks: (wallDeltaMs) => { + const state = get(); + if (state.sessionMode === "play" || state.runState === "finished") return []; + if (state.sessionMode === "spectate-replay") { + if (state.runState !== "running" || !state.replay) return []; + const advanced = Math.min(state.replay.durationMs, state.elapsedMs + clampWallDelta(wallDeltaMs) * state.speed); + set({ elapsedMs: advanced, runState: advanced >= state.replay.durationMs ? "finished" : "running" }); + return []; + } + let ticks = 0; + let accumulatorMs = state.accumulatorMs; + let pendingSteps = state.pendingSteps; + if (state.runState === "running") { + const advance = fixedSimulationTickCount(accumulatorMs, wallDeltaMs, state.speed); + ticks = advance.ticks; + accumulatorMs = advance.accumulatorMs; + } else if (state.runState === "paused" && pendingSteps > 0) { + ticks = 1; + pendingSteps -= 1; + accumulatorMs = 0; + } + const availableTicks = Math.max(0, Math.floor((DUNGEON_SIMULATION_MAX_DURATION_MS - state.elapsedMs) / DUNGEON_SIMULATION_FIXED_STEP_MS)); + ticks = Math.min(ticks, availableTicks); + const elapsedMs = state.elapsedMs + ticks * DUNGEON_SIMULATION_FIXED_STEP_MS; + set({ elapsedMs, accumulatorMs, pendingSteps }); + return Array.from({ length: ticks }, (_, index) => state.startedAt + state.elapsedMs + (index + 1) * DUNGEON_SIMULATION_FIXED_STEP_MS); + }, + setRouteProgress: (objectiveId, checkpointIndex) => set((state) => { + const normalized = Math.max(0, Math.trunc(checkpointIndex)); + return state.objectiveId === objectiveId && state.checkpointIndex === normalized + ? state + : { objectiveId, checkpointIndex: normalized }; + }), + addFinding: (finding) => set((state) => state.findings.some((candidate) => candidate.id === finding.id) + ? state + : { findings: [...state.findings, finding] }), + addPull: (pull) => set((state) => ({ pulls: [...state.pulls, pull] })), + addRecovery: () => set((state) => ({ recoveries: state.recoveries + 1 })), + addFrame: (frame) => set((state) => { + if (state.frames[state.frames.length - 1]?.atMs === frame.atMs) return state; + return { frames: [...state.frames, frame] }; + }), + finish: (result, roster) => { + const state = get(); + if (state.sessionMode !== "spectate-live" || state.runState === "finished" || !state.dungeonId || !state.routeId || !state.routeHash) return null; + const objectiveIds = [...new Set(state.frames.map((frame) => frame.objectiveId).filter((id): id is string => Boolean(id)))]; + const objectiveTimings = objectiveIds.map((objectiveId) => { + const frames = state.frames.filter((frame) => frame.objectiveId === objectiveId); + const laterObjective = state.frames.find((frame) => frame.atMs > (frames.at(-1)?.atMs ?? 0) && frame.objectiveId !== objectiveId); + return { + objectiveId, + startedAtMs: frames[0]?.atMs ?? 0, + completedAtMs: laterObjective?.atMs ?? (state.objectiveId === objectiveId ? null : frames.at(-1)?.atMs ?? null), + }; + }); + const pathDistances = objectiveIds.map((objectiveId) => { + const frames = state.frames.filter((frame) => frame.objectiveId === objectiveId); + let actualDistance = 0; + for (let index = 1; index < frames.length; index += 1) { + const previous = frames[index - 1].actors[0]?.position; + const current = frames[index].actors[0]?.position; + if (previous && current) actualDistance += Math.hypot( + current[0] - previous[0], current[1] - previous[1], current[2] - previous[2], + ); + } + return { objectiveId, actualDistance }; + }); + const report: DungeonSimulationReportV1 = { + schemaVersion: 1, + dungeonId: state.dungeonId, + routeId: state.routeId, + routeHash: state.routeHash, + seed: state.seed, + mode: state.mode, + startedAt: state.startedAt, + durationMs: state.elapsedMs, + result, + roster, + findings: state.findings, + pulls: state.pulls, + recoveries: state.recoveries, + objectiveTimings, + actionTimings: state.findings.filter((finding) => finding.code === "route-action" && finding.actionId).map((finding) => ({ + actionId: finding.actionId!, + objectiveId: finding.objectiveId ?? null, + atMs: finding.atMs, + })), + pathDistances, + finalObjectiveId: state.objectiveId, + finalCheckpointIndex: state.checkpointIndex, + finalState: state.frames.at(-1)?.actors ?? [], + }; + const replay: DungeonReplayV1 = { + schemaVersion: 1, + dungeonId: state.dungeonId, + routeId: state.routeId, + routeHash: state.routeHash, + mode: state.mode, + seed: state.seed, + result, + startedAt: state.startedAt, + durationMs: state.elapsedMs, + report, + frames: state.frames, + events: state.findings, + }; + set({ runState: "finished", result, replay }); + return replay; + }, +})); + +export function dungeonSimulationNow(): number { + const state = useDungeonSimulationStore.getState(); + return state.sessionMode === "spectate-live" ? state.startedAt + state.elapsedMs : Date.now(); +} diff --git a/src/game/dungeonSimulationTypes.ts b/src/game/dungeonSimulationTypes.ts new file mode 100644 index 00000000..cd0539db --- /dev/null +++ b/src/game/dungeonSimulationTypes.ts @@ -0,0 +1,172 @@ +import type { Vector3Tuple } from "./dungeonTypes"; + +export type DungeonSessionMode = "play" | "spectate-live" | "spectate-replay"; +export type DungeonSimulationMode = "full-combat" | "navigation-only"; +export type DungeonSimulationSpeed = 0.5 | 1 | 2 | 4; +export type DungeonSpectatorCameraMode = "follow-leader" | "free-fly"; +export type DungeonRouteReviewStatus = "Candidate" | "Approved" | "NeedsWork"; +export type DungeonSimulationResult = "completed" | "wiped" | "stopped" | "recording-limit"; +export type DungeonSimulationFindingSeverity = "info" | "warning" | "critical"; + +export interface DungeonRouteAction { + readonly id: string; + readonly checkpointIndex: number; + readonly kind: "interact-world-object"; + readonly objectId: string; +} + +export interface DungeonRouteLeg { + readonly id: string; + readonly objectiveId: string; + readonly objectiveName: string; + readonly checkpoints: readonly Vector3Tuple[]; + readonly expectedDistance: number; + readonly corridorPlanarDistance: number; + readonly corridorVerticalDistance: number; + readonly actions: readonly DungeonRouteAction[]; +} + +export interface DungeonRouteDefinitionV1 { + readonly schemaVersion: 1; + readonly id: string; + readonly dungeonId: string; + readonly mapId: number; + readonly hash: string; + readonly generationStatus: "Candidate" | "Rejected"; + readonly generationIssues: readonly string[]; + readonly legs: readonly DungeonRouteLeg[]; +} + +export interface DungeonRouteCatalogV1 { + readonly schemaVersion: 1; + readonly generatedAt: string; + readonly source: { + readonly kind: "playerbots-landmark-reference"; + readonly auditReport: string; + readonly note: string; + }; + readonly routes: readonly DungeonRouteDefinitionV1[]; +} + +export interface DungeonRouteApproval { + readonly dungeonId: string; + readonly routeId: string; + readonly routeHash: string; + readonly reviewedAt: number; +} + +export interface DungeonRouteReview { + readonly dungeonId: string; + readonly routeId: string; + readonly routeHash: string; + readonly status: DungeonRouteReviewStatus; + readonly note: string | null; + readonly criticalOverrideNote: string | null; + readonly reviewedBy: string; + readonly reviewedAt: number; + readonly revision: number; +} + +export interface DungeonSimulationFinding { + readonly id: string; + readonly atMs: number; + readonly severity: DungeonSimulationFindingSeverity; + readonly code: string; + readonly message: string; + readonly position?: Vector3Tuple; + readonly actorId?: string; + readonly objectiveId?: string; + readonly checkpointIndex?: number; + readonly actionId?: string; +} + +export interface DungeonSimulationPull { + readonly atMs: number; + readonly mobIds: readonly string[]; + readonly routeLegId: string | null; + readonly position: Vector3Tuple; + readonly classification: "expected" | "off-route" | "theoretical"; +} + +export interface DungeonSimulationActorSnapshot { + readonly id: string; + readonly position: Vector3Tuple; + readonly yaw: number; + readonly health: number; + readonly maxHealth: number; + readonly targetId: string | null; + readonly status: string; +} + +export interface DungeonReplayFrame { + readonly atMs: number; + readonly keyframe: boolean; + readonly actors: readonly DungeonSimulationActorSnapshot[]; + readonly objectiveId: string | null; + readonly checkpointIndex: number; +} + +export interface DungeonSimulationReportV1 { + readonly schemaVersion: 1; + readonly dungeonId: string; + readonly routeId: string; + readonly routeHash: string; + readonly seed: string; + readonly mode: DungeonSimulationMode; + readonly startedAt: number; + readonly durationMs: number; + readonly result: DungeonSimulationResult; + readonly roster: readonly { readonly id: string; readonly name: string; readonly role: string; readonly classId: string }[]; + readonly findings: readonly DungeonSimulationFinding[]; + readonly pulls: readonly DungeonSimulationPull[]; + readonly recoveries: number; + readonly objectiveTimings: readonly { + readonly objectiveId: string; + readonly startedAtMs: number; + readonly completedAtMs: number | null; + }[]; + readonly actionTimings: readonly { + readonly actionId: string; + readonly objectiveId: string | null; + readonly atMs: number; + }[]; + readonly pathDistances: readonly { + readonly objectiveId: string; + readonly actualDistance: number; + }[]; + readonly finalObjectiveId: string | null; + readonly finalCheckpointIndex: number; + readonly finalState: readonly DungeonSimulationActorSnapshot[]; +} + +export interface DungeonReplayV1 { + readonly schemaVersion: 1; + readonly dungeonId: string; + readonly routeId: string; + readonly routeHash: string; + readonly mode: DungeonSimulationMode; + readonly seed: string; + readonly result: DungeonSimulationResult; + readonly startedAt: number; + readonly durationMs: number; + readonly report: DungeonSimulationReportV1; + readonly frames: readonly DungeonReplayFrame[]; + readonly events: readonly DungeonSimulationFinding[]; +} + +export interface DungeonReplaySummary { + readonly id: string; + readonly dungeonId: string; + readonly routeId: string; + readonly routeHash: string; + readonly mode: DungeonSimulationMode; + readonly seed: string; + readonly result: DungeonSimulationResult; + readonly startedAt: number; + readonly durationMs: number; + readonly criticalFindings: number; + readonly submittedBy: string; + readonly createdAt: number; + readonly expiresAt: number; + readonly compressedBytes: number; +} diff --git a/src/game/generated/dungeonRouteCatalog.generated.json b/src/game/generated/dungeonRouteCatalog.generated.json new file mode 100644 index 00000000..deacb0ad --- /dev/null +++ b/src/game/generated/dungeonRouteCatalog.generated.json @@ -0,0 +1 @@ +{"schemaVersion":1,"generatedAt":"2026-05-08T10:36:36-07:00","source":{"kind":"playerbots-landmark-reference","auditReport":"dungeon-pipeline/DUNGEON_ROUTE_GENERATION_AUDIT.json","note":"PlayerBots was used only as offline topology evidence. Shipped checkpoint geometry is computed from HealerMan navigation assets."},"routes":[{"schemaVersion":1,"id":"primary","dungeonId":"shadowfang-keep","mapId":33,"legs":[{"id":"leg-01-creature-16242","objectiveId":"creature-16242","objectiveName":"Rethilgore","checkpoints":[[2108.6162,76.9903,-228.5817],[2112.0329,76.9903,-228.419],[2111.7075,76.9903,-227.6055],[2109.4839,76.9903,-226.6293],[2111.816,76.9903,-225.4362],[2111.2736,76.9903,-223.9719],[2109.3755,76.9903,-223.1584],[2110.189,76.9903,-221.1518],[2108.7247,76.9903,-220.501],[2109.267,76.9903,-219.579],[2107.8569,76.9903,-218.4401],[2107.7485,76.9903,-216.4334],[2106.5553,76.9903,-215.1861],[2106.8265,76.9903,-213.3964],[2104.6572,76.9903,-213.5591],[2105.308,76.9903,-211.6067],[2103.2471,76.9903,-208.9492],[2100.5897,76.9903,-207.7019],[2100.21,76.9903,-204.1225],[2098.9627,76.9903,-203.4174],[2099.7762,76.9903,-202.2785],[2100.9693,76.9903,-202.4955],[2101.132,77.0445,-201.1939],[2101.7286,77.153,-201.7904],[2104.4945,78.7257,-201.682],[2105.308,78.6715,-200.2719],[2106.0672,78.6715,-200.6515],[2106.013,78.9969,-202.6582],[2108.0739,80.407,-205.0987],[2108.7789,80.5154,-205.0987],[2108.9958,81.0578,-206.4003],[2110.0805,81.112,-207.7561],[2111.0567,81.0578,-207.4307],[2112.5752,81.0578,-208.6781],[2115.3954,81.0578,-207.3222],[2117.2936,81.0578,-205.5868],[2114.365,81.0578,-205.4241],[2120.2764,81.2205,-204.2852],[2120.4391,81.3289,-203.4174],[2121.1441,81.4374,-203.2005],[2121.0899,81.4916,-202.1701],[2123.1508,81.5459,-201.9531],[2122.5542,81.5459,-199.9465],[2127.4352,81.5459,-198.8618],[2125.5913,81.5459,-196.5298],[2131.8823,81.5459,-196.0417],[2132.9128,81.5459,-194.957],[2127.7606,81.5459,-194.1977],[2132.5874,81.5459,-193.5469],[2127.7606,81.5459,-193.2215],[2127.8148,81.5459,-192.7334],[2134.2144,81.5459,-191.703],[2132.8043,81.5459,-191.1064],[2135.9499,81.6543,-190.9437],[2136.9803,82.034,-190.5641],[2137.0345,82.1967,-189.7506],[2137.6853,82.6848,-189.2083],[2138.7158,82.9559,-190.0218],[2139.4208,83.2271,-189.2083],[2141.2105,83.1729,-189.2625],[2140.8851,83.2271,-189.9133],[2141.5359,83.4983,-190.0218],[2141.102,83.6067,-190.7268],[2141.4274,84.6372,-192.625],[2143.3798,85.8303,-194.1435],[2143.0544,86.1557,-195.0112],[2143.651,86.5353,-196.1501],[2144.4645,86.5896,-196.0417],[2144.4645,86.6438,-198.8076],[2145.7661,86.8065,-199.8922],[2144.7899,87.0777,-200.3803],[2145.6034,87.4573,-201.1396],[2145.6034,87.8912,-202.0074],[2144.8441,88.3793,-202.6582],[2145.1153,89.0301,-203.8513],[2144.1933,89.7351,-204.7733],[2144.2476,90.0063,-205.8037],[2143.9764,90.2774,-206.346],[2143.3798,90.4401,-206.0749],[2143.1629,90.7655,-206.6714],[2142.6748,90.7113,-206.6172],[2143.4883,90.6571,-209.7627],[2142.6748,90.6571,-211.9863],[2144.356,90.7113,-215.5386],[2146.0373,90.7655,-219.0909],[2148.2066,90.9282,-219.0909],[2149.6167,91.0367,-221.6941],[2151.4064,90.9282,-226.087],[2149.1828,90.7113,-230.4257],[2151.4606,90.7113,-230.8053],[2150.5386,90.7113,-233.1373],[2148.3151,90.6028,-233.1373],[2149.0201,90.3859,-236.0659],[2148.0981,90.169,-234.8728],[2148.4235,90.0063,-236.554],[2147.2304,89.7893,-235.0897],[2145.9288,89.1928,-235.6863],[2144.9526,88.3793,-237.476],[2145.0611,88.1081,-239.2657],[2142.8375,87.2404,-239.7538],[2142.6206,87.2404,-240.5131],[2142.1325,87.2404,-240.3504],[2142.1325,87.0777,-243.7671],[2143.2714,87.1319,-245.8822],[2143.3798,87.1319,-247.5092],[2144.4645,87.1861,-248.9193],[2143.7052,87.1319,-248.4854],[2144.4645,87.1861,-249.4616],[2143.7052,87.2404,-250.0582],[2142.8917,87.1861,-250.2751],[2142.5663,87.0777,-249.4074],[2142.1325,86.915,-250.2751],[2141.4817,86.6438,-249.787],[2139.3123,85.3422,-251.1971],[2136.7634,84.1491,-251.5225],[2133.8348,82.5763,-252.8241],[2134.1059,82.5221,-253.3664],[2133.4009,82.0882,-253.6918],[2130.6892,81.2205,-253.6918],[2129.6588,81.2205,-254.5595],[2124.2897,81.2205,-254.1257],[2124.8862,81.2205,-253.041],[2121.3611,81.2205,-252.4444],[2126.3505,81.2205,-251.8479],[2124.3439,81.2205,-250.9259]],"expectedDistance":261.42,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-16254","objectiveId":"creature-16254","objectiveName":"Baron Silverlaine","checkpoints":[[2124.3439,81.2205,-250.9259],[2126.3505,81.2205,-251.8479],[2121.3611,81.2205,-252.4444],[2124.8862,81.2205,-253.041],[2124.2897,81.2205,-254.1257],[2129.6588,81.2205,-254.5595],[2130.6892,81.2205,-253.6918],[2133.4009,82.0882,-253.6918],[2134.1059,82.5221,-253.3664],[2133.8348,82.5763,-252.8241],[2136.7634,84.1491,-251.5225],[2139.3123,85.3422,-251.1971],[2141.4817,86.6438,-249.787],[2142.1325,86.915,-250.2751],[2142.5663,87.0777,-249.4074],[2142.8917,87.1861,-250.2751],[2143.7052,87.2404,-250.0582],[2144.4645,87.1861,-249.4616],[2143.7052,87.1319,-248.4854],[2144.4645,87.1861,-248.9193],[2143.3798,87.1319,-247.5092],[2143.2714,87.1319,-245.8822],[2142.1325,87.0777,-243.7671],[2142.1325,87.2404,-240.3504],[2142.6206,87.2404,-240.5131],[2142.8375,87.2404,-239.7538],[2145.0611,88.1081,-239.2657],[2144.9526,88.3793,-237.476],[2145.9288,89.1928,-235.6863],[2147.2304,89.7893,-235.0897],[2148.4235,90.0063,-236.554],[2148.0981,90.169,-234.8728],[2149.7794,90.4944,-237.5302],[2150.0505,90.6571,-237.0964],[2153.7927,90.8198,-236.9879],[2155.7993,90.9282,-237.4218],[2156.5586,90.874,-239.103],[2154.7146,90.7655,-240.947],[2155.4197,90.7655,-242.8994],[2157.6432,90.7655,-242.1401],[2158.4567,90.7113,-240.6758],[2159.3245,90.7655,-241.3266],[2159.7041,90.6571,-240.3504],[2161.1684,90.4401,-240.2962],[2162.0361,90.169,-238.9946],[2163.1208,90.0063,-238.5064],[2164.1512,89.8436,-238.9403],[2165.5071,89.4097,-238.2353],[2165.4528,89.3555,-237.3675],[2166.8629,88.4335,-236.6083],[2167.5137,88.2166,-236.8794],[2168.273,87.7827,-236.0659],[2168.9238,87.5115,-236.6083],[2170.2254,86.698,-236.0117],[2171.0931,86.0472,-234.8728],[2172.3405,85.288,-234.8728],[2172.9913,84.7456,-234.1135],[2174.4556,84.1491,-234.7643],[2175.2691,83.6067,-233.8966],[2176.0284,83.3356,-234.2762],[2175.2691,83.3898,-233.0289],[2181.1805,80.0273,-231.673],[2181.1805,79.9189,-230.8053],[2182.2652,79.8104,-231.4561],[2182.1567,79.7562,-229.7749],[2185.9531,79.7562,-230.046],[2189.0986,79.7562,-225.0566],[2193.0577,79.7562,-224.5685],[2197.0167,79.7562,-224.0804],[2203.7055,79.7562,-221.8568],[2210.3943,79.7562,-219.6332],[2217.0831,79.7562,-217.4096],[2212.0394,79.7562,-213.0439],[2206.9956,79.7562,-208.6781],[2209.3819,79.7562,-204.1767],[2211.7682,79.7562,-199.6753],[2216.2967,79.7562,-200.0007],[2220.8252,79.7562,-200.3261],[2218.2762,79.7562,-194.7943],[2215.7272,79.7562,-189.2625],[2220.2828,79.7562,-187.8524],[2218.1677,79.7562,-183.0799],[2218.1135,79.7562,-180.9105],[2216.3238,79.8104,-180.097],[2217.5169,79.8646,-178.9581],[2215.0764,79.9731,-178.3073],[2214.9137,80.0816,-177.6023],[2219.3338,79.7562,-177.521],[2223.7538,79.4308,-177.4396],[2225.8146,78.1292,-178.6327],[2228.4179,76.936,-178.3616],[2229.611,76.3394,-179.1208],[2232.9735,76.3394,-180.2055],[2236.3902,76.3394,-179.6089],[2239.9153,76.3394,-180.2597],[2241.0542,76.2852,-181.941],[2242.3558,76.231,-181.1817],[2243.4405,76.1767,-181.6156],[2243.8201,76.1767,-185.9],[2244.5794,76.1767,-185.4119],[2249.7316,76.1767,-189.0998],[2249.352,76.1767,-192.8419],[2254.938,76.1767,-192.8961],[2250.6536,76.1767,-195.3909],[2254.2872,76.1767,-196.4755],[2257.9208,76.1767,-197.5602],[2253.4195,76.1767,-200.3803],[2259.7105,76.1767,-200.5431],[2259.6563,76.1767,-201.1939],[2254.6126,76.1767,-204.2309],[2260.4698,76.1767,-206.2918],[2258.3547,76.1767,-209.0577],[2263.3984,76.1767,-208.895],[2263.5069,76.1767,-210.2508],[2262.151,76.1767,-211.3355],[2262.8561,76.1767,-212.4202],[2263.9407,76.1767,-211.8778],[2263.4526,76.1767,-213.0167],[2264.3204,76.1767,-213.1252],[2264.2119,76.2852,-214.8607],[2264.6458,76.014,-215.9996],[2265.8931,75.6344,-216.5961],[2265.8389,75.0378,-219.0366],[2266.7067,75.0378,-219.6332],[2266.4355,75.0378,-221.206],[2267.5202,75.0378,-221.0433],[2267.5202,75.0378,-223.0499],[2269.4183,75.0378,-224.4058],[2269.0929,75.0378,-226.792],[2272.9435,75.0378,-227.1717],[2279.804,75.0378,-227.009],[2286.6646,75.0378,-226.8463],[2285.7426,75.0378,-230.263],[2289.2135,75.0378,-232.4323],[2290.1355,75.0378,-236.6625],[2288.4,75.0378,-237.4218],[2290.7321,75.0378,-238.3437],[2288.2916,75.0378,-238.6149],[2288.9966,75.0378,-241.7605],[2292.4133,75.0378,-243.1163],[2291.3286,75.0378,-245.7195],[2293.1183,75.0378,-249.8684],[2294.908,75.0378,-254.0172],[2294.6369,75.0378,-260.4168],[2295.1792,75.4717,-262.6946],[2296.4266,76.1225,-263.6165],[2296.3723,76.2852,-264.647],[2298.8671,76.1767,-265.6232],[2298.8671,76.1767,-266.9248],[2299.6806,76.1767,-266.9248],[2300.8195,76.1767,-270.0703],[2299.9517,76.1767,-270.3957],[2300.3856,76.1767,-272.2396],[2298.162,76.1767,-271.7515],[2297.0774,76.1767,-274.2463]],"expectedDistance":426,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-16256","objectiveId":"creature-16256","objectiveName":"Commander Springvale","checkpoints":[[2297.0774,76.1767,-274.2463],[2298.162,76.1767,-271.7515],[2300.3856,76.1767,-272.2396],[2299.9517,76.1767,-270.3957],[2300.8195,76.1767,-270.0703],[2299.6806,76.1767,-266.9248],[2298.8671,76.1767,-266.9248],[2298.8671,76.1767,-265.6232],[2297.9451,76.231,-264.9181],[2298.1078,76.2852,-263.9962],[2296.9689,75.6886,-262.7488],[2297.0774,75.2548,-261.7184],[2296.535,75.2548,-261.8268],[2296.8604,75.0378,-256.8373],[2298.3247,75.0378,-254.8307],[2298.4332,75.0378,-258.139],[2299.3552,75.0378,-257.2712],[2299.084,75.0378,-258.3017],[2300.006,75.0378,-258.3017],[2299.8433,75.0378,-259.1694],[2300.4941,75.6886,-260.0914],[2301.1449,75.5802,-259.6575],[2301.8499,77.5326,-263.3454],[2303.4769,78.7257,-265.5689],[2304.2362,80.7324,-269.6907],[2305.1582,81.112,-270.1245],[2305.4293,81.4374,-271.155],[2305.0497,81.4374,-272.4023],[2306.0259,81.4916,-273.3243],[2305.9717,81.6543,-274.2463],[2305.3209,81.6543,-274.4632],[2305.592,81.817,-274.9513],[2306.6767,83.1186,-276.6325],[2306.7309,84.9626,-279.2358],[2307.2733,85.1253,-279.7239],[2305.7005,86.698,-281.4051],[2305.9717,86.9692,-282.0559],[2305.4293,87.5658,-282.7067],[2305.7547,88.1081,-283.466],[2305.2666,89.3012,-284.6591],[2305.9174,89.6266,-285.5268],[2304.8328,90.5486,-286.7742],[2303.2057,90.6571,-286.5573],[2303.8565,90.6571,-287.3708],[2302.2295,90.6571,-287.425],[2302.0126,90.6571,-288.5097],[2304.5074,90.6571,-289.2689],[2302.8803,90.6571,-289.5401],[2308.1952,91.4706,-289.8113],[2306.0259,91.4706,-290.3536],[2309.2257,91.5248,-290.7332],[2307.219,90.7655,-291.1671],[2300.711,90.6571,-291.9806],[2300.1144,90.6571,-292.7941],[2301.7414,90.6571,-293.7161],[2300.5483,90.7113,-294.638],[2298.8671,90.874,-294.9634],[2298.4874,91.0367,-295.8312],[2297.7282,91.3079,-295.3431],[2296.2639,92.2298,-295.4515],[2295.83,92.6095,-296.1024],[2294.1488,93.3145,-296.6447],[2291.4371,94.5076,-296.5362],[2291.0575,94.9957,-298.109],[2289.9728,95.4296,-297.7836],[2290.3524,95.755,-300.658],[2286.7188,95.8635,-301.6884],[2285.3087,95.8635,-299.5191],[2282.2174,95.8635,-299.9529],[2281.7293,95.8635,-297.8921],[2281.0785,95.8635,-297.4582],[2283.519,95.8635,-297.0243],[2282.2174,95.8635,-293.0653],[2278.7465,95.8635,-291.6552],[2278.0414,95.8635,-288.6724],[2280.2108,95.8635,-287.3708],[2278.8549,95.8635,-283.249],[2277.4991,95.8635,-280.5374],[2275.1128,95.8635,-281.622],[2273.5401,95.8635,-277.2291],[2275.2213,95.8635,-274.1378],[2271.6419,95.8635,-272.6193],[2270.5572,95.8635,-270.1788],[2270.6657,95.8635,-268.6602],[2272.835,95.8635,-267.684],[2270.2318,95.9177,-267.0332],[2271.6419,96.1347,-266.0028],[2270.503,96.5143,-265.7316],[2271.0996,97.1651,-264.3758],[2270.2861,97.4905,-263.9962],[2269.8522,97.9786,-262.803],[2270.2861,98.4667,-261.6099],[2269.8522,99.3344,-259.9829],[2267.8456,100.4191,-258.1932],[2267.954,100.7987,-257.3254],[2266.8151,100.853,-257.0543],[2267.3032,100.9072,-256.4577],[2266.4355,100.9072,-254.9392],[2265.5677,100.9072,-254.8849],[2265.0796,100.9072,-253.8003],[2265.6762,100.9072,-253.2037],[2264.6458,100.9072,-252.5529],[2265.2423,100.9072,-251.6852],[2262.7476,100.9072,-250.8717],[2262.9103,100.9072,-250.0039],[2261.1748,100.9072,-248.8108],[2260.0359,100.9072,-249.6243],[2260.0902,100.9072,-248.2142],[2255.1549,100.9072,-246.0449],[2255.9142,100.9614,-242.6824],[2261.0121,101.0157,-244.3094],[2262.151,101.1784,-240.4046],[2262.6934,101.4495,-240.0792],[2262.368,101.1784,-239.2115],[2263.1815,101.4495,-238.2353],[2262.7476,101.3411,-237.6387],[2263.2357,101.6122,-236.771],[2262.6391,101.7749,-236.0117],[2263.5069,102.2088,-235.1982],[2261.7714,102.3715,-234.6559],[2263.1815,102.3715,-234.5474],[2262.368,102.3715,-233.4627],[2264.1034,102.3715,-232.8662],[2263.7238,102.5342,-231.9442],[2262.5307,102.6969,-231.1849],[2261.2291,102.8596,-227.6598],[2262.8561,102.8596,-227.4428],[2261.2833,102.8596,-223.9177],[2264.6458,102.8596,-224.46],[2262.8018,102.8596,-221.3145],[2259.9275,102.8596,-220.501]],"expectedDistance":266.48,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-16257","objectiveId":"creature-16257","objectiveName":"Odo the Blindwatcher","checkpoints":[[2259.9275,102.8596,-220.501],[2252.8161,102.6969,-221.5246],[2245.7048,102.5342,-222.5483],[2238.5934,102.3715,-223.5719],[2231.482,102.2088,-224.5956],[2224.3707,102.0461,-225.6192],[2217.2593,101.8834,-226.6429],[2210.148,101.7207,-227.6665],[2203.0366,101.558,-228.6902],[2195.9252,101.3953,-229.7139],[2188.8139,101.2326,-230.7375],[2181.7025,101.0699,-231.7612],[2174.5912,100.9072,-232.7848],[2167.4798,100.7445,-233.8085],[2160.3685,100.5818,-234.8321],[2153.2571,100.4191,-235.8558],[2146.1457,100.2564,-236.8794]],"expectedDistance":114.98,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-05-creature-18714","objectiveId":"creature-18714","objectiveName":"Fenrus the Devourer","checkpoints":[[2146.1457,100.2564,-236.8794],[2147.6209,102.169,-230.0713],[2149.096,104.0817,-223.2632],[2150.5712,105.9943,-216.4551],[2152.0463,107.9069,-209.647],[2153.5215,109.8196,-202.8389],[2154.9966,111.7322,-196.0308],[2156.4718,113.6448,-189.2227],[2157.9469,115.5574,-182.4146],[2159.4221,117.4701,-175.6065],[2160.8972,119.3827,-168.7984],[2162.3724,121.2953,-161.9903],[2163.8475,123.208,-155.1822],[2165.3227,125.1206,-148.3741],[2166.7978,127.0332,-141.566],[2168.273,128.9459,-134.7579]],"expectedDistance":108.36,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-06-creature-16237","objectiveId":"creature-16237","objectiveName":"Wolf Master Nandos","checkpoints":[[2168.273,128.9459,-134.7579],[2167.4269,134.3041,-131.8401],[2166.5809,139.6624,-128.9224],[2165.7349,145.0207,-126.0046],[2164.8888,150.3789,-123.0869],[2164.0428,155.7372,-120.1691]],"expectedDistance":30.8,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-07-creature-16255","objectiveId":"creature-16255","objectiveName":"Archmage Arugal","checkpoints":[[2164.0428,155.7372,-120.1691],[2164.097,155.7372,-119.3014],[2166.7002,155.7372,-118.5963],[2161.0599,155.7372,-118.3252],[2163.2835,155.7372,-117.7828],[2162.5785,155.7372,-116.8609],[2159.7583,155.7372,-116.2101],[2161.6023,155.7372,-114.5288],[2158.7279,155.7372,-113.7696],[2160.0837,155.7372,-110.2986],[2156.6128,155.7372,-108.5632],[2154.6604,155.7372,-111.0579],[2155.0943,155.5745,-112.7934],[2153.8469,154.8695,-112.6849],[2152.4911,153.8933,-113.6069],[2151.6776,153.7306,-112.468],[2149.0743,151.9408,-112.7934],[2147.6643,150.4223,-114.8542],[2143.3798,147.4395,-115.8304],[2140.8851,145.7582,-115.5593],[2140.7766,145.9209,-115.1254],[2139.2581,145.1617,-114.3119],[2135.1906,145.0532,-114.6373],[2131.0146,144.999,-113.9865],[2134.2686,144.999,-113.0103],[2134.2144,144.999,-112.3053],[2135.0279,144.999,-111.4375],[2130.5807,144.999,-110.1902],[2135.516,144.999,-108.9428],[2129.6045,144.999,-106.1769],[2132.1806,144.999,-103.1669],[2134.7567,144.999,-100.157],[2138.1734,144.999,-98.0419],[2141.5901,144.999,-95.9268],[2142.729,144.999,-101.8382],[2144.1933,144.999,-100.5908],[2144.4103,144.999,-94.0286],[2143.2171,144.999,-88.1714],[2143.5968,145.3786,-87.2494],[2141.2647,146.0294,-86.7613],[2141.102,147.5479,-84.2123],[2140.2343,147.6022,-84.2666],[2140.5597,147.8733,-83.5073],[2139.692,148.1987,-82.1515],[2141.3732,148.6868,-82.2599],[2141.5901,148.958,-81.8261],[2143.5968,150.0969,-81.6634],[2144.2476,150.8562,-80.6329],[2145.3865,151.7239,-80.416],[2145.9288,152.3205,-79.711],[2146.6338,152.5916,-80.1991],[2147.2304,153.134,-79.6025],[2148.0439,153.5679,-79.8194],[2148.532,154.1644,-78.7348],[2149.3455,154.6525,-78.8432],[2149.6167,154.9237,-78.4094],[2148.8032,154.9779,-76.6197],[2149.0743,155.4118,-76.0773],[2148.8032,155.683,-73.9622],[2152.9792,155.7372,-73.908],[2153.5757,155.7372,-75.8062]],"expectedDistance":156.64,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"efe9f7cea40908e7dab8f4a0d4714f90d4b0708776f3ecd6d1f57dc08abdf913","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"stormwind-stockade","mapId":34,"legs":[{"id":"leg-01-creature-84027","objectiveId":"creature-84027","objectiveName":"Targorr the Dread","checkpoints":[[-54.4705,-18.5483,1.303],[-55.8029,-19.0433,2.0976],[-55.9374,-19.0433,-0.3655],[-56.6723,-19.3795,1.9631],[-57.2728,-19.7156,-0.5],[-58.3378,-20.1496,-0.5061],[-58.8023,-20.2474,1.9509],[-58.405,-20.1496,4.689],[-59.5479,-20.5469,5.1596],[-64.4955,-22.3835,4.9121],[-69.443,-24.2201,4.6645],[-69.718,-24.1895,3.1243],[-71.2582,-24.5868,3.2588],[-72.4867,-25.0146,1.2908],[-75.0842,-25.4791,2.5559],[-76.4777,-25.5158,0.0256],[-78.2746,-25.5525,-0.4327],[-78.6719,-25.5525,2.0976],[-79.4725,-25.5525,2.0976],[-80.9394,-25.5525,1.7675],[-82.0028,-25.5525,-0.5],[-83.8058,-25.5158,1.1624],[-84.0075,-25.6136,3.0999],[-84.8082,-25.6136,3.0999],[-87.3385,-25.5158,0.9974],[-88.7625,-25.5158,1.902],[-90.6694,-25.5525,2.0976],[-91.0667,-25.5525,-0.4327],[-94.3304,-25.5525,2.0976],[-97.1969,-25.5525,-0.5],[-100.4667,-25.5525,-0.4327],[-100.8701,-25.5525,2.0976],[-103.1376,-25.5525,1.7675],[-104.2071,-25.5525,-0.5],[-105.8757,-25.6502,1.7003],[-109.5428,-25.5158,0.9974],[-112.0731,-25.5525,2.0976],[-112.8737,-25.5525,2.0976],[-113.271,-25.5525,-0.4327],[-116.3391,-25.5158,-0.3777],[-118.845,-25.4791,2.5682],[-121.7787,-25.4791,2.5009],[-122.2065,-25.5158,-0.3777],[-122.8666,-25.5525,-0.4327],[-123.2639,-25.5525,2.0303],[-123.9973,-25.5525,2.0303],[-124.3334,-25.5525,-0.4327],[-124.9385,-25.5525,2.2992],[-127.672,-25.5525,2.5682],[-130.4055,-25.5525,2.2992],[-130.4055,-25.5525,-0.7017],[-134.0069,-25.5525,-0.4327],[-134.337,-25.5525,2.0303],[-138.2058,-25.5525,2.1648],[-138.2058,-25.5525,-0.4327],[-141.3412,-25.5525,-0.5],[-144.1404,-25.5525,1.1624],[-144.2076,-25.5525,-0.5061],[-144.7393,-25.5525,1.0952],[-145.2038,-25.5525,0.429],[-146.1328,-25.5525,1.1624],[-146.5973,-25.5525,0.4901],[-148.9321,-25.5158,3.0816],[-151.2668,-25.4791,0.3557],[-155.6673,-25.4424,2.9227],[-157.7392,-25.4424,-1.7407],[-159.805,-25.3447,-2.0096]],"expectedDistance":168.81,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-79088","objectiveId":"creature-79088","objectiveName":"Kam Deepfury","checkpoints":[[-159.805,-25.3447,-2.0096],[-158.1078,-26.292,-9.2003],[-156.4105,-27.2393,-16.3911],[-154.7132,-28.1867,-23.5818],[-153.016,-29.134,-30.7725],[-151.3187,-30.0813,-37.9633],[-149.6215,-31.0287,-45.154],[-147.9242,-31.976,-52.3447],[-146.227,-32.9233,-59.5355],[-144.5297,-33.8707,-66.7262],[-142.8324,-34.818,-73.9169]],"expectedDistance":74.49,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-79098","objectiveId":"creature-79098","objectiveName":"Hamhock","checkpoints":[[-142.8324,-34.818,-73.9169],[-139.3609,-34.7874,-74.0575],[-140.3266,-34.7874,-68.9709],[-134.9222,-34.7874,-69.7043],[-133.5944,-34.818,-65.9624],[-130.3964,-34.8486,-67.8326],[-130.5981,-34.8486,-66.8364],[-129.3329,-34.8486,-67.4353],[-128.3,-34.7874,-66.5002],[-127.5666,-34.5552,-66.8303],[-127.2366,-34.3535,-66.2313],[-126.3992,-34.054,-66.763],[-125.0913,-33.9196,-65.7118],[-124.4496,-33.7851,-66.2068],[-125.8675,-33.8218,-67.6859],[-125.6719,-33.8218,-69.0183],[-123.5389,-33.8218,-68.2849],[-121.4059,-33.8584,-68.6332],[-120.6724,-33.8584,-70.4974],[-122.8727,-33.8584,-71.7014],[-121.6687,-33.8584,-75.04],[-118.5333,-33.8584,-75.1072],[-117.4698,-33.8584,-78.1769],[-119.2728,-33.8584,-81.106],[-116.7425,-33.8584,-80.7698],[-118.8756,-33.8584,-82.1022],[-118.6066,-33.8218,-83.2329],[-115.673,-33.8218,-84.9626],[-116.9442,-33.7851,-88.2385],[-116.3453,-33.6873,-90.2432],[-113.2038,-33.8584,-89.5037],[-113.5338,-33.8584,-90.9094],[-112.7332,-33.8584,-91.3066],[-112.4765,-33.8218,-92.1806],[-111.743,-33.8218,-92.0462],[-111.1441,-34.1213,-92.7124],[-111.6941,-34.7202,-94.2159],[-110.4534,-34.983,-93.8553],[-111.2541,-35.1114,-94.6559],[-110.3434,-35.1419,-94.5031],[-111.5413,-35.1419,-95.371],[-107.7398,-35.1419,-94.0386],[-103.4737,-35.1419,-95.371],[-100.0083,-35.1419,-101.3667],[-100.4728,-35.1419,-107.4373],[-104.4699,-35.1419,-108.2051],[-108.4671,-35.1419,-108.9729]],"expectedDistance":116.02,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-79124","objectiveId":"creature-79124","objectiveName":"Bazil Thredd","checkpoints":[[-108.4671,-35.1419,-108.9729],[-108.8032,-35.1419,-116.107],[-106.8719,-35.1419,-118.0444],[-102.667,-35.1419,-118.3745],[-98.407,-35.0136,-117.1765],[-99.1404,-34.5858,-118.7106],[-98.2725,-34.1579,-119.5724],[-97.5391,-34.1579,-119.4379],[-97.4719,-33.8584,-121.0392],[-96.6712,-33.8584,-121.3754],[-96.8729,-33.8584,-122.3716],[-95.9378,-33.8584,-122.2371],[-96.7385,-33.8584,-122.7689],[-96.7996,-33.8218,-125.837],[-93.0041,-33.7851,-126.601],[-90.046,-33.7484,-128.514],[-92.0446,-33.7851,-132.4806],[-88.4508,-33.8218,-133.8802],[-89.6732,-33.8584,-137.2967]],"expectedDistance":50.13,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-05-creature-79116","objectiveId":"creature-79116","objectiveName":"Dextren Ward","checkpoints":[[-89.6732,-33.8584,-137.2967],[-91.6656,-33.8565,-130.1512],[-93.6581,-33.8546,-123.0058],[-95.6506,-33.8527,-115.8603],[-97.643,-33.8507,-108.7149],[-99.6355,-33.8488,-101.5694],[-101.6279,-33.8469,-94.4239],[-103.6204,-33.8449,-87.2785],[-105.6129,-33.843,-80.133],[-107.6053,-33.8411,-72.9875],[-109.5978,-33.8391,-65.8421],[-111.5902,-33.8372,-58.6966],[-113.5827,-33.8353,-51.5511],[-115.5752,-33.8334,-44.4057],[-117.5676,-33.8314,-37.2602],[-119.5601,-33.8295,-30.1147],[-121.5525,-33.8276,-22.9693],[-123.545,-33.8256,-15.8238],[-125.5375,-33.8237,-8.6783],[-127.5299,-33.8218,-1.5329],[-129.5224,-33.8198,5.6126],[-131.5148,-33.8179,12.7581],[-133.5073,-33.816,19.9035],[-135.4998,-33.8141,27.049],[-137.4922,-33.8121,34.1944],[-139.4847,-33.8102,41.3399],[-141.4771,-33.8083,48.4854],[-143.4696,-33.8063,55.6308],[-145.4621,-33.8044,62.7763],[-147.4545,-33.8025,69.9218],[-149.447,-33.8005,77.0672],[-151.4394,-33.7986,84.2127],[-153.4319,-33.7967,91.3582],[-155.4244,-33.7948,98.5036],[-157.4168,-33.7928,105.6491],[-159.4093,-33.7909,112.7946],[-161.4017,-33.789,119.94],[-163.3942,-33.787,127.0855],[-165.3867,-33.7851,134.231]],"expectedDistance":281.89,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"3ec18cb108bf3209557f34f51d563ffbfaeb558d1960b4f356fc972326dc28b8","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"deadmines","mapId":36,"legs":[{"id":"leg-01-creature-79168","objectiveId":"creature-79168","objectiveName":"Rhahk'zor","checkpoints":[[-382.104,61.4129,-16.1428],[-380.5419,61.0224,-15.7522],[-379.3704,60.9573,-16.9238],[-379.7609,61.0875,-18.4859],[-376.1161,61.0875,-23.172],[-375.0096,61.0875,-23.6276],[-375.27,60.7621,-25.1897],[-373.5126,60.5017,-26.5565],[-374.4889,60.1763,-27.2724],[-374.6191,59.981,-28.0535],[-373.1872,59.916,-28.5091],[-374.0333,59.5254,-29.7457],[-372.7967,59.3953,-30.7871],[-373.4476,59.1349,-32.4793],[-372.3411,59.0048,-33.5858],[-373.2523,58.8095,-34.4319],[-372.3411,58.6793,-35.0827],[-373.3825,57.8983,-36.5797],[-372.5364,57.2474,-38.1418],[-373.2523,56.5315,-39.834],[-372.0157,56.4013,-40.9405],[-372.4062,56.3362,-41.7215],[-372.0808,56.2712,-42.4374],[-371.1045,56.3362,-42.893],[-371.5601,56.3362,-43.7391],[-370.714,56.6617,-45.171],[-371.3648,56.0759,-46.9934],[-371.0394,55.8806,-48.6206],[-369.0217,55.6203,-51.5494],[-369.7377,55.425,-52.2654],[-369.3472,55.2298,-54.283],[-370.3885,55.0345,-55.3244],[-369.0217,55.1647,-55.9753],[-369.4122,55.2298,-57.1468],[-368.2407,55.36,-58.8391],[-369.7377,55.2949,-60.4662],[-368.9566,55.36,-62.0933],[-370.1933,55.36,-62.4839],[-370.1933,55.4901,-63.7205],[-369.7377,55.6203,-65.2175],[-368.8916,55.6854,-65.8683],[-368.9566,55.8806,-67.1049],[-368.1105,56.2061,-67.7558],[-368.8265,56.141,-68.0812],[-368.5661,56.4013,-68.8623],[-369.217,56.0759,-70.164],[-369.0868,56.2061,-72.0515],[-370.3234,55.7505,-73.1579],[-370.3885,55.7505,-74.004],[-371.2997,55.4901,-74.1342],[-371.0394,55.5552,-75.3708],[-372.1458,55.5552,-76.0868],[-372.276,55.8156,-77.4536],[-373.1872,55.9457,-77.9743],[-373.1872,56.141,-79.2109],[-374.0984,56.2061,-80.9682],[-374.8795,56.2061,-81.3587],[-374.9445,56.3362,-82.335],[-377.9385,57.1173,-84.5479],[-375.9859,56.9871,-84.6781],[-376.4415,57.703,-87.1514],[-377.9385,58.0285,-87.4768],[-377.9385,58.4841,-89.885],[-376.8971,58.2888,-90.666],[-377.2876,58.2237,-92.5535],[-378.7195,58.3539,-93.2694],[-378.1988,58.2237,-94.7664],[-379.8911,58.6142,-95.6125],[-379.6307,58.6793,-97.4349],[-381.4531,59.1349,-98.1509],[-380.9324,59.0048,-99.3224],[-382.104,58.9397,-99.778],[-381.7785,58.4841,-100.8194],[-382.4945,58.0936,-102.5767],[-383.2755,57.8983,-103.0323],[-383.2755,57.5078,-104.5944],[-384.1216,57.3776,-104.9849],[-383.7311,57.1824,-106.1564],[-384.5772,57.0522,-106.9375],[-384.1867,57.1173,-108.109],[-386.2044,56.9871,-108.89],[-386.9854,57.2474,-110.4521],[-388.157,57.1173,-110.9077],[-389.0682,57.0522,-112.0792],[-388.6776,57.0522,-113.6413],[-389.4587,56.7918,-115.2684],[-391.4763,56.5966,-116.3749],[-392.1272,56.6617,-118.3275],[-394.7957,57.1173,-118.6529],[-394.991,57.5729,-120.6055],[-396.8785,57.8332,-121.1262],[-397.2039,58.419,-123.4042],[-399.8073,58.4841,-124.1201],[-400.5883,58.6793,-125.2266],[-399.6771,59.0698,-127.9602],[-397.4642,59.3302,-129.7175],[-397.1388,59.7858,-132.6626],[-397.7246,59.6556,-133.3298],[-397.269,59.981,-134.9732],[-397.9849,59.6556,-135.8193],[-397.7897,60.0461,-137.2512],[-398.6358,59.5254,-137.5115],[-397.9198,60.2414,-138.7481],[-398.2453,59.5905,-139.5943],[-397.3341,59.0698,-142.458],[-397.6595,58.0936,-144.9313],[-397.4642,57.8983,-145.9076],[-396.8785,58.1586,-146.2981],[-396.6832,57.7681,-148.3808],[-395.9022,57.9634,-149.5524],[-396.2927,57.5729,-150.1382],[-396.0323,57.4427,-151.2446],[-397.4642,56.922,-152.4162],[-397.269,56.8569,-154.0433],[-398.1802,56.6617,-155.1498],[-397.7897,56.6617,-155.9308],[-401.0439,56.5315,-158.2739],[-400.7185,56.5315,-158.9898],[-401.4995,56.922,-161.0726],[-400.328,56.922,-162.2441],[-400.7185,57.0522,-163.4157],[-402.606,57.5078,-163.8062],[-402.2806,57.2474,-165.1079],[-402.9965,57.3776,-165.7588],[-402.5409,57.2474,-166.8652],[-403.8426,57.5078,-166.9954],[-403.4521,57.4427,-168.1669],[-405.0793,57.8332,-167.7764],[-404.1681,57.638,-169.0781],[-407.943,58.419,-167.7764],[-408.3336,58.1586,-169.0781],[-409.7004,57.8983,-169.9893],[-410.2861,57.1824,-171.8768],[-412.2387,56.9871,-172.788],[-412.3689,56.6617,-174.6104],[-413.3452,56.5315,-174.6755],[-413.6055,56.3362,-175.3915],[-415.1676,56.0108,-175.9121],[-415.7533,55.5552,-177.4742],[-417.5107,55.36,-178.7759],[-417.2503,55.1647,-179.8824],[-417.9012,55.0996,-180.4031],[-417.4456,54.8393,-181.3794],[-418.8124,54.9694,-180.9238],[-420.2443,54.7742,-181.9651],[-421.1555,54.9694,-180.9888],[-421.8714,54.7091,-182.3556],[-423.3033,54.8393,-181.9651],[-424.0843,54.644,-182.9414],[-424.8653,54.7742,-182.1604],[-426.102,54.7091,-182.5509],[-428.1847,54.9043,-181.3794],[-429.7468,54.5789,-182.9414],[-431.3088,54.7091,-182.1604],[-432.8709,54.4487,-183.3319],[-434.498,54.7742,-181.7699],[-436.5157,54.3837,-183.3319],[-438.5334,54.5789,-181.7699],[-439.9653,54.5138,-181.5746],[-441.2019,54.2535,-184.3733],[-442.7639,54.5138,-184.5035],[-444.1307,54.3837,-186.7164],[-444.1958,54.2535,-191.5327],[-444.7816,54.2535,-193.4853],[-445.4975,54.3186,-194.3314],[-445.7579,54.4487,-191.8582],[-446.4738,54.4487,-194.006],[-446.8644,54.644,-191.728],[-448.6868,54.644,-192.509]],"expectedDistance":287.89,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-79223","objectiveId":"creature-79223","objectiveName":"Sneed","checkpoints":[[-448.6868,54.644,-192.509],[-449.5329,54.7091,-189.9056],[-451.876,54.5789,-189.5802],[-453.8936,54.5789,-191.9883],[-454.935,54.5138,-190.7517],[-456.1065,54.5789,-191.5978],[-456.8876,54.644,-193.9409],[-458.0591,54.644,-193.6806],[-458.71,54.7091,-191.2724],[-459.6212,54.7742,-192.3138],[-460.7927,54.7091,-190.2961],[-460.9229,54.644,-188.2134],[-463.0056,54.4487,-188.0832],[-466.4552,54.2535,-189.3849],[-470.2952,54.2209,-189.2547],[-474.1353,54.1884,-189.1246],[-476.6086,54.1233,-190.6215],[-478.1055,54.1233,-190.7517],[-484.9395,54.3186,-188.7991],[-484.9395,54.3186,-191.5978],[-486.6318,54.2535,-191.9883],[-487.2826,54.1233,-193.6155],[-488.4542,54.1233,-194.006],[-489.3003,53.9931,-192.0534],[-489.6257,53.9281,-193.3551],[-491.8386,53.7328,-193.8107],[-491.0576,53.6677,-192.3138],[-492.7498,53.6677,-191.5327],[-494.3119,53.7328,-192.9646],[-495.2231,53.7328,-192.0534],[-495.874,53.7979,-195.2426],[-496.9153,53.5375,-194.9823],[-499.9744,53.4074,-196.6094],[-500.6252,53.3423,-195.8935],[-501.7968,53.4074,-196.0237],[-502.1873,53.5375,-196.6745],[-501.7317,53.4725,-197.1952],[-503.8144,53.4725,-197.2603],[-503.1636,53.5375,-197.8461],[-504.0748,53.6026,-198.0413],[-502.5778,53.863,-198.9525],[-503.489,53.7979,-199.0827],[-503.0985,53.863,-199.7986],[-503.9446,53.6026,-200.5146],[-504.1399,53.2772,-202.0766],[-502.8381,53.0169,-203.3784],[-506.0273,52.1057,-205.5262],[-504.6605,52.2358,-205.7865],[-501.7968,52.3009,-205.2008],[-501.9269,52.0406,-206.7628],[-500.8856,51.7151,-206.893],[-500.1696,51.4548,-207.9994],[-501.4063,51.6501,-210.1473],[-500.9507,51.1945,-212.23],[-499.6489,50.3483,-214.1826],[-500.1045,50.3483,-215.7447],[-499.714,49.9578,-216.9162],[-498.2171,49.6324,-217.1115],[-497.2408,49.2419,-218.8037],[-495.8089,48.8514,-219.5196],[-495.4834,48.6561,-222.3834],[-496.1994,48.9815,-223.6851],[-495.939,49.1117,-225.1821],[-493.8563,49.3721,-228.8269],[-492.099,48.7863,-228.6316],[-491.9037,48.8514,-229.4127],[-490.9925,48.591,-229.4127],[-490.7322,48.591,-230.1937],[-489.6908,48.3307,-230.5842],[-489.3003,49.6324,-234.4894],[-488.5193,49.307,-234.8799],[-487.9335,49.2419,-235.9863],[-486.5667,48.9815,-236.5721],[-486.1762,49.1768,-237.4182],[-486.5016,49.2419,-238.0691],[-485.6555,49.307,-238.5898],[-485.6555,49.307,-239.2406],[-484.2887,49.2419,-240.282],[-483.2473,49.1768,-240.0217],[-481.49,49.1117,-241.063],[-480.5137,49.1768,-242.4949],[-478.8215,49.307,-243.0807],[-477.8452,49.3721,-244.6428],[-478.1055,49.4371,-245.4238],[-476.6086,49.5022,-246.7255],[-478.7564,49.5673,-246.8557],[-476.8689,49.5673,-249.0686],[-478.2357,49.5673,-252.7785],[-481.8805,49.5673,-255.0565],[-481.0995,49.5673,-259.5474],[-483.5727,49.5673,-259.7427],[-483.4426,49.5673,-262.3461],[-481.1646,49.5673,-262.4763],[-480.8391,49.5673,-266.3163],[-481.6202,49.5022,-267.0974],[-480.8391,49.4371,-268.5943],[-484.6792,49.3721,-268.7896],[-485.7206,49.3721,-270.4167],[-487.6732,49.4371,-271.1327],[-488.9098,49.5673,-272.9551],[-490.5369,49.8277,-273.0202],[-491.383,49.8277,-274.9727],[-492.6848,49.8927,-275.1029],[-492.3593,49.6324,-276.7951],[-493.5309,49.7626,-276.3395],[-493.8563,49.6324,-278.0318],[-495.3533,49.6975,-278.4874],[-496.0041,49.8927,-277.3809],[-498.6727,49.6324,-279.3335],[-501.4063,49.8277,-277.7714],[-502.9032,49.8277,-278.0969],[-503.6843,49.6324,-279.9843],[-505.6368,49.6975,-280.0494],[-506.8084,49.4371,-282.5227],[-509.8674,49.4371,-282.1322],[-511.82,48.9165,-285.3214],[-513.7075,49.307,-281.9369],[-516.8967,48.4609,-285.3865],[-519.1747,48.5259,-285.4516],[-522.1686,48.9165,-281.8067],[-523.8609,48.9165,-282.5878],[-525.3578,48.9165,-285.061],[-527.6358,49.1768,-284.8658],[-528.0264,49.307,-285.9722],[-528.8725,49.4371,-285.9072],[-528.6772,49.9578,-287.2089],[-524.5117,49.8927,-287.274],[-519.7605,49.7626,-289.1614],[-517.0919,49.8277,-288.1201],[-512.4708,49.8927,-288.1852]],"expectedDistance":278.65,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-79206","objectiveId":"creature-79206","objectiveName":"Gilnid","checkpoints":[[-512.4708,49.8927,-288.1852],[-517.0919,49.8277,-288.1201],[-519.7605,49.7626,-289.1614],[-519.3699,49.7626,-290.7886],[-521.2574,49.7626,-291.4394],[-523.6656,49.7626,-291.4394],[-524.9673,49.8277,-292.4157],[-528.482,49.9578,-293.0015],[-535.5763,49.5673,-291.895],[-540.0021,49.5673,-292.4157],[-544.428,49.5673,-292.9364],[-545.3392,49.5673,-294.6287],[-549.6999,49.5673,-293.1317],[-551.5223,49.5673,-296.1256],[-555.037,49.5673,-293.9127],[-554.9068,49.5673,-295.4097],[-556.8594,49.3721,-293.3269],[-557.38,49.2419,-295.4748],[-557.8356,49.0466,-294.4334],[-559.0723,49.1117,-295.2144],[-560.2438,49.1117,-294.0429],[-561.8059,49.1768,-294.8239],[-563.0425,49.1768,-294.1731],[-565.2554,49.0466,-294.1731],[-565.6459,49.1117,-295.0192],[-569.3558,48.7863,-295.4097],[-569.3558,48.8514,-296.1907],[-571.3084,48.591,-296.5812],[-572.6101,48.3307,-298.0782],[-573.7166,48.3958,-297.3623],[-574.5627,48.3307,-298.0131],[-575.3437,48.4609,-296.9717],[-576.2549,48.3958,-297.2972],[-577.817,48.5259,-296.2558],[-581.2665,48.5259,-296.5812],[-582.5032,48.7212,-296.1907],[-584.1303,48.0703,-297.6226],[-585.432,48.3958,-297.3623],[-585.8876,47.9402,-298.4687],[-587.1893,48.2656,-298.1433],[-587.3195,48.0053,-298.7291],[-588.3609,48.1354,-298.664],[-589.4023,48.3307,-298.4687],[-589.207,48.9815,-297.5575],[-589.6626,49.4371,-297.1019],[-590.1182,49.1768,-297.3623],[-590.704,49.307,-296.9067],[-590.8992,49.2419,-297.2972],[-594.1535,49.307,-293.5873],[-593.8281,49.3721,-293.1317],[-594.7393,49.1117,-292.0903],[-594.1535,49.3721,-291.6998],[-594.479,48.9165,-289.2265],[-593.6328,49.3721,-288.6408],[-593.1122,49.6975,-286.6231],[-589.988,51.585,-282.783],[-588.4911,51.585,-281.6766],[-588.8165,51.0643,-280.1796],[-587.6449,50.7389,-279.0081],[-588.1005,50.5436,-277.7714],[-586.2131,50.4134,-276.5999],[-586.0829,50.4785,-275.1029],[-585.6273,50.4785,-275.0378],[-585.9527,50.6738,-272.7598],[-585.6924,50.3483,-270.6771],[-585.0415,50.4785,-269.896],[-583.9351,50.2833,-270.3516],[-582.5683,50.2182,-269.5706],[-583.3493,50.4785,-267.0323],[-581.7221,50.6087,-266.5116],[-581.1364,50.7389,-263.6478],[-581.5269,50.7389,-261.2396],[-583.0239,50.8039,-262.0858],[-583.4795,50.869,-261.4349],[-583.7398,50.8039,-260.1332],[-582.1127,50.869,-259.4823],[-584.0652,50.9992,-258.7013],[-582.2428,51.1294,-258.7664],[-584.3907,51.1294,-256.944],[-583.2842,51.1294,-253.169],[-579.1187,51.1294,-250.5656],[-579.8347,51.1294,-246.1397],[-577.2312,51.1294,-245.9445],[-579.8347,51.1294,-245.0333],[-579.7045,51.1294,-243.341],[-577.4916,51.1294,-242.7553],[-579.8347,51.1945,-240.4773],[-577.6868,51.2595,-239.8915],[-579.8347,51.3246,-238.3945],[-577.4916,51.3246,-237.8087],[-580.095,51.3246,-237.1579],[-577.2963,51.3246,-236.9626],[-578.0122,51.3246,-233.3178],[-574.9532,51.3246,-229.5428],[-570.1369,51.3246,-232.1463],[-568.5097,51.3246,-227.8506],[-565.6459,51.3246,-226.3536],[-561.2852,51.3246,-228.0459],[-560.7645,51.3246,-222.1231],[-555.818,51.3246,-222.1231],[-557.0546,51.3246,-216.2653],[-552.3034,51.3246,-214.6382],[-555.037,51.3246,-209.5615],[-551.0016,51.3246,-205.7214],[-555.102,51.3246,-202.0116],[-552.9542,51.3246,-195.9586],[-557.7706,51.3246,-194.2663],[-559.7882,51.3246,-190.8819],[-562.1313,51.3246,-188.6039],[-560.1137,51.3246,-185.3496],[-564.3442,51.3246,-182.5509],[-567.5985,51.3246,-184.7638],[-567.5985,50.7389,-180.5983],[-569.3558,50.4134,-181.7699],[-570.0067,50.6738,-185.4147],[-571.3735,49.8277,-184.3082],[-572.545,49.2419,-184.894],[-574.1722,48.3958,-184.3082],[-574.758,48.2005,-183.4621],[-576.9058,47.1591,-183.5923],[-577.6868,46.7686,-182.1604],[-579.3791,45.9876,-181.6397],[-580.6157,45.532,-182.1604],[-582.373,44.4906,-183.9828],[-583.9351,43.7747,-183.8526],[-585.2368,42.9936,-184.7638],[-586.7337,42.6031,-184.113],[-588.7514,41.5618,-185.0242],[-589.0768,40.976,-186.456],[-590.3135,40.195,-187.172],[-593.5678,39.0234,-187.4974],[-594.4139,38.3075,-188.5388],[-596.6268,37.3312,-189.6452],[-595.7156,37.2661,-190.6215],[-596.3664,36.4851,-192.1836],[-598.3841,35.639,-193.0297],[-599.4906,34.7928,-194.5918],[-599.2302,33.8165,-196.8698],[-605.9341,32.3847,-198.2366],[-605.9341,31.6036,-200.2542],[-609.3836,31.0179,-201.621],[-608.6677,30.2368,-204.2896],[-611.5314,29.7812,-205.1357],[-612.3125,29.4558,-205.9167],[-610.6853,29.3256,-206.2421],[-611.7267,28.6748,-208.1296],[-609.7741,28.1541,-209.6266],[-608.9931,27.6334,-211.2537],[-604.3069,27.1778,-211.3839],[-603.3957,25.9412,-214.2477],[-600.3367,25.03,-215.1589],[-601.4431,24.1188,-217.8925],[-597.9936,22.6869,-219.9752],[-595.9759,22.1011,-219.8451],[-595.9759,21.3201,-223.7502],[-595.9759,20.539,-227.6554],[-594.544,20.474,-226.614],[-593.0471,20.9946,-220.9515],[-592.5915,20.6692,-222.4485],[-592.201,20.8645,-221.6675],[-589.6626,21.1899,-222.9692],[-589.2721,20.9946,-223.7502],[-588.1005,21.0597,-224.1407],[-587.71,20.474,-225.3123],[-586.148,20.6041,-225.7028],[-583.3493,21.1899,-225.3123],[-579.7045,20.539,-227.0045],[-576.9709,21.255,-225.3123],[-575.3437,21.1899,-225.3123],[-572.2847,21.255,-224.2058],[-570.5274,20.7343,-224.5963],[-569.3558,20.6692,-224.2058],[-568.2494,21.1899,-222.6438],[-564.8649,20.0834,-222.1882],[-564.4744,20.6692,-220.561],[-562.9123,20.2136,-219.7149],[-562.5218,20.7343,-218.0877],[-561.7408,20.6041,-217.3067],[-560.9598,20.1485,-217.3067],[-560.2438,20.0834,-216.3955],[-560.6343,20.6041,-215.5494],[-559.8533,20.3438,-214.7684],[-560.5693,20.8645,-214.1175],[-559.3977,20.6692,-212.23],[-559.0072,20.7994,-208.1947],[-558.1611,20.474,-205.0055],[-559.593,20.9296,-200.84],[-559.9184,20.0834,-196.1538],[-561.0249,20.6692,-195.5681],[-562.0011,20.539,-193.6806],[-563.5632,21.1248,-193.0948],[-564.4744,20.9946,-191.728],[-565.3205,21.1248,-191.728],[-567.9239,21.1899,-189.9056],[-567.5985,20.6041,-188.4737],[-569.1606,20.0184,-186.5862],[-571.4386,20.2136,-185.7401],[-574.1071,19.8231,-184.178],[-574.4976,19.4326,-179.622]],"expectedDistance":504.16,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-79337","objectiveId":"creature-79337","objectiveName":"Mr. Smite","checkpoints":[[-574.4976,19.4326,-179.622],[-577.4265,19.4326,-179.3617],[-577.2312,19.3675,-175.5867],[-580.4204,19.3675,-175.5867],[-581.2665,19.3024,-171.4863],[-578.7933,19.3024,-171.226],[-578.7282,19.3024,-170.3148],[-578.8584,19.3024,-168.8829],[-581.2015,19.3024,-168.1669],[-581.2665,19.3024,-165.2381],[-578.9885,19.3024,-164.5872],[-578.8584,19.3024,-163.0902],[-581.3967,19.3024,-162.114],[-578.7933,19.3024,-161.9187],[-580.095,19.3675,-159.2502],[-582.4381,19.4326,-156.7769],[-585.2368,19.3675,-156.6467],[-585.2368,19.3675,-151.8955],[-586.4083,19.3024,-151.2446],[-585.4971,19.3675,-149.8778],[-584.0652,19.3675,-149.0968],[-585.3019,19.4326,-149.292],[-585.432,19.2373,-148.7714],[-584.4557,19.0421,-148.2507],[-585.5622,18.977,-147.2093],[-585.3669,18.977,-146.1028],[-584.1303,18.9119,-146.8839],[-583.2191,18.8468,-146.6886],[-583.2842,18.8468,-144.9964],[-584.9764,18.7817,-142.5882],[-586.0178,18.7166,-142.6533],[-586.2781,18.4563,-139.9197],[-585.8876,18.3912,-139.399],[-586.9941,18.3912,-138.1624],[-585.4971,18.261,-137.6417],[-586.6687,18.4563,-136.9908],[-585.7575,18.5214,-136.2098],[-588.5561,18.8468,-135.8844],[-588.5561,18.8468,-135.1684],[-589.207,18.9119,-135.8844],[-589.4674,18.7817,-133.8342],[-591.0945,19.3675,-136.34],[-592.3311,19.2373,-136.34],[-592.0057,19.1072,-135.6891],[-594.7393,17.8054,-136.2098],[-595.7807,17.1546,-135.7542],[-596.5617,16.8942,-136.2098],[-596.822,17.2848,-137.1861],[-599.6207,16.6339,-137.3163],[-601.1828,16.3085,-137.2512],[-602.2893,15.983,-136.2098],[-606.9754,14.8766,-134.9732],[-608.6026,14.8115,-135.8193],[-610.1646,14.5512,-135.3637],[-612.1172,14.7464,-136.2098],[-613.6793,14.421,-134.9732],[-619.7323,14.0955,-134.5664],[-622.5309,13.5749,-132.923],[-624.5486,13.5749,-132.5325],[-625.7852,13.705,-132.923],[-626.5663,13.5098,-131.3446],[-627.8029,13.5098,-131.1494],[-628.4537,13.4447,-130.2382],[-631.1874,13.3145,-129.7175],[-633.3352,13.1193,-127.7649],[-633.7908,13.2494,-128.2856],[-634.702,13.1193,-126.1378],[-636.5244,13.1193,-125.6822],[-637.6959,12.924,-123.7296],[-636.9149,12.8589,-122.1675],[-638.0214,12.2081,-120.3451],[-639.1278,11.6874,-119.6943],[-639.1278,11.3619,-118.9783],[-640.6899,11.2969,-118.9783],[-640.8201,11.1016,-118.3926],[-642.7075,11.0365,-118.0671],[-641.6662,10.7762,-117.1559],[-642.4472,10.7762,-116.7654],[-641.0153,10.5158,-115.724],[-643.8791,10.2555,-115.0732],[-643.1631,10.1904,-114.6827],[-644.7252,9.9301,-113.9667],[-645.6364,9.2792,-112.5348],[-646.8079,9.149,-113.3159],[-647.7191,8.6283,-112.5999],[-649.8019,8.1077,-112.7952],[-651.6894,7.5219,-111.6236],[-652.2101,7.2615,-109.6711],[-654.0325,7.1965,-110.0616],[-653.642,7.1965,-108.5646],[-654.423,7.2615,-109.0202],[-654.3579,7.3917,-108.4995],[-656.7661,7.3917,-109.9314],[-659.4997,7.3917,-105.1801],[-663.9255,7.3917,-105.2452],[-666.1384,7.3917,-103.1625],[-665.8781,7.3917,-100.2336],[-666.5289,7.3917,-102.4465],[-667.8307,7.3917,-101.7957],[-667.8307,7.3917,-99.3224],[-671.4755,7.3917,-98.6065],[-672.7772,7.3917,-100.6241],[-674.3392,7.3917,-100.3638],[-674.3392,7.3917,-97.8254],[-675.1854,7.3917,-100.0384],[-678.4396,7.3917,-101.1448],[-679.0254,7.3917,-96.719],[-682.7353,7.3917,-94.8966],[-685.534,7.587,-97.9556],[-685.9896,7.6521,-101.1448],[-686.8357,7.9124,-99.0621],[-688.3978,8.1727,-98.997],[-689.2439,8.2378,-100.9496],[-691.2616,8.368,-102.6418],[-693.2792,8.5633,-100.2336],[-696.143,8.8236,-100.6892],[-698.1606,8.9538,-97.9556],[-701.2197,9.149,-99.1272],[-703.0421,9.149,-98.281],[-703.4326,9.0839,-96.719],[-707.3377,9.0839,-96.5888],[-708.1188,9.0189,-93.3345],[-711.4382,8.8887,-90.9264],[-713.9765,8.8236,-93.7901],[-716.7101,8.7585,-92.163],[-718.923,8.7585,-89.2341],[-723.2187,8.8887,-90.4057],[-725.1062,8.8887,-89.885],[-724.7157,8.9538,-88.3229],[-723.2187,8.9538,-86.9561],[-726.3428,8.9538,-87.4117],[-726.6031,9.0189,-86.5656],[-724.3251,9.0189,-84.613],[-726.6682,9.0189,-84.613],[-726.7984,8.9538,-81.6191],[-729.5971,9.0189,-80.7079],[-730.5734,9.0839,-78.4299],[-728.4906,9.0189,-76.4773],[-731.2242,8.9538,-76.0868],[-731.6148,8.8236,-74.72],[-729.4018,8.6283,-72.7023],[-732.591,8.4331,-70.8148],[-730.4432,8.4331,-66.4541],[-733.1117,8.6934,-63.8507],[-732.7212,9.0839,-59.1645],[-730.0527,9.0189,-58.9692],[-731.2893,9.3443,-56.1705],[-733.5673,9.6697,-53.1115],[-732.1354,9.6046,-51.224],[-732.9165,9.4745,-48.946],[-729.6622,9.2792,-47.2538],[-725.9523,9.0189,-46.1473],[-726.7333,8.9538,-43.9344],[-730.0527,9.0839,-41.8517],[-727.7096,8.9538,-39.3784],[-728.4255,8.9538,-38.4672],[-729.9876,9.0189,-39.053],[-730.9639,9.0189,-38.4021],[-730.8337,9.0189,-37.4258],[-730.1178,9.0189,-37.0353],[-731.0941,9.0189,-36.059],[-731.4195,8.8236,-32.284],[-732.1354,8.8236,-31.1125],[-731.4195,8.6934,-28.8345],[-732.3958,8.6934,-28.0535],[-731.5497,8.6283,-27.3375],[-732.9816,8.6934,-27.2073],[-732.0053,8.6283,-26.4263],[-733.5673,8.6283,-26.1009],[-732.7863,8.5633,-24.9293],[-734.2182,8.6283,-23.6927],[-736.9518,8.7585,-24.2785],[-740.2061,9.0839,-22.1307],[-738.5789,9.0189,-16.2729],[-742.419,9.3443,-14.7109],[-744.3065,9.2792,-12.8234],[-745.6733,8.8887,-6.0545],[-751.4008,9.0839,-7.4864],[-751.5961,8.8236,-2.2795],[-754.1344,9.0189,-5.6639],[-755.6965,8.8887,-3.1907],[-758.8857,9.0189,-7.0308],[-759.7969,9.0189,-6.3799],[-762.7258,8.8236,-6.445],[-762.2051,9.0189,-5.4687],[-763.8322,9.0189,-5.4687],[-765.915,8.8887,-6.3148],[-769.3645,9.3443,-4.4924],[-771.7076,9.3443,-5.4687],[-776.8494,9.865,-4.2321],[-777.9558,9.7999,-4.7527],[-778.867,9.9301,-4.2971],[-779.7132,9.9301,-4.948],[-781.0149,10.1253,-3.2558],[-782.642,10.0602,-2.5398],[-783.2278,9.9951,-3.2558],[-782.2515,9.9951,-4.2971],[-783.8136,10.1904,-3.8415],[-782.9024,10.3206,-4.948],[-787.198,11.8826,-5.4036],[-790.3221,13.9003,-8.6579],[-792.2747,15.3973,-11.9773],[-792.8605,15.6576,-11.9122],[-794.032,16.5688,-13.4742],[-795.7894,18.196,-17.5096],[-797.4816,19.3024,-18.9415],[-797.1562,19.758,-20.9591],[-797.9372,20.2136,-22.3259],[-797.2863,20.2136,-23.3673]],"expectedDistance":504.17,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-05-creature-79344","objectiveId":"creature-79344","objectiveName":"Cookie","checkpoints":[[-797.2863,20.2136,-23.3673],[-798.3277,19.8882,-23.0419],[-797.807,19.758,-23.6276],[-799.0436,19.5628,-23.172],[-797.5467,19.3675,-24.7992],[-799.2389,19.4977,-23.5625],[-799.7596,19.3675,-26.0358],[-798.9786,19.1722,-29.6806],[-796.6355,19.2373,-28.5742],[-797.2212,19.1072,-31.2427],[-794.6829,19.1722,-30.4616],[-792.2096,19.0421,-33.781],[-788.6299,19.2373,-33.7159],[-786.9377,18.977,-37.556],[-786.2217,19.1072,-37.4258],[-785.8312,19.0421,-38.6625],[-785.1153,19.1722,-38.6625],[-783.8787,19.2373,-40.2245],[-783.2278,18.9119,-42.6327],[-783.4881,18.7817,-43.609],[-781.2101,18.7166,-48.0999],[-780.8196,18.4563,-51.4844],[-778.7369,18.3912,-57.9279],[-778.4765,17.9356,-64.2412],[-778.867,18.0007,-65.8032],[-778.2162,17.9356,-70.3592],[-778.5416,17.7404,-74.72],[-778.086,17.7404,-78.2997],[-778.5416,17.6753,-79.4062],[-779.7782,17.48,-80.3174],[-782.1213,17.48,-79.0807],[-785.3756,17.4149,-81.6842],[-783.7485,17.3498,-83.7018],[-783.6183,17.3498,-85.9147],[-780.6244,17.48,-85.9147],[-780.364,17.5451,-86.6307],[-781.2752,17.4149,-89.169],[-780.9498,17.48,-90.7311],[-783.6834,17.3498,-95.1569],[-786.2868,17.2848,-94.2457],[-787.4584,17.2197,-97.2397],[-790.2571,17.2197,-97.5],[-789.2808,17.1546,-100.6241],[-791.6889,17.1546,-100.9496],[-790.5825,17.1546,-103.7483],[-793.3812,17.1546,-104.8547],[-794.0971,17.1546,-107.0025],[-792.9907,17.0895,-109.1504],[-795.8544,17.0895,-109.3456],[-796.8307,17.0895,-110.5823],[-795.2687,17.0244,-112.4047],[-795.5941,17.0244,-112.7952],[-798.1975,17.0895,-112.5999],[-799.0436,17.0895,-113.7064],[-798.1324,17.0244,-116.44],[-799.8898,17.0895,-119.2387],[-801.7772,17.0244,-121.3214],[-803.7298,17.0895,-119.8895],[-804.8363,17.0244,-124.1201],[-807.1143,17.1546,-125.0964],[-807.8302,17.0895,-124.771],[-808.2207,17.0895,-127.83],[-810.2384,17.0895,-128.0903],[-812.2561,17.0244,-127.6347],[-814.1436,17.0895,-128.2205],[-815.1198,17.0244,-127.049],[-815.7707,17.0244,-127.3093],[-816.6819,16.9593,-126.333],[-817.4629,17.0244,-127.5697],[-818.3741,17.0244,-126.7886],[-819.2853,17.0244,-126.8537],[-819.9362,17.0244,-127.5697],[-819.806,17.0895,-128.7412],[-825.9892,17.0895,-128.8063],[-831.5215,17.0244,-128.3507],[-835.3615,17.0244,-127.1791],[-839.3968,17.0895,-123.4042],[-842.944,17.122,-119.1085],[-846.4912,17.1546,-114.8128],[-849.9407,17.2848,-109.7362],[-852.4791,17.2848,-105.05],[-852.9998,17.2197,-102.9021],[-850.9821,17.1546,-100.494],[-850.0709,17.2197,-96.5237],[-852.0886,17.2848,-92.6837],[-851.4377,17.3498,-87.2165],[-853.195,17.48,-80.6428],[-853.2167,17.3932,-75.4793],[-853.2384,17.3064,-70.3158],[-853.2601,17.2197,-65.1524]],"expectedDistance":264.98,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-06-creature-79333","objectiveId":"creature-79333","objectiveName":"Captain Greenskin","checkpoints":[[-853.2601,17.2197,-65.1524],[-853.2384,17.3064,-70.3158],[-853.2167,17.3932,-75.4793],[-853.195,17.48,-80.6428],[-851.4377,17.3498,-87.2165],[-852.0886,17.2848,-92.6837],[-850.0709,17.2197,-96.5237],[-850.9821,17.1546,-100.494],[-852.9998,17.2197,-102.9021],[-852.4791,17.2848,-105.05],[-849.9407,17.2848,-109.7362],[-846.4912,17.1546,-114.8128],[-842.944,17.122,-119.1085],[-839.3968,17.0895,-123.4042],[-835.3615,17.0244,-127.1791],[-831.5215,17.0244,-128.3507],[-825.9892,17.0895,-128.8063],[-819.806,17.0895,-128.7412],[-819.9362,17.0244,-127.5697],[-819.2853,17.0244,-126.8537],[-818.3741,17.0244,-126.7886],[-817.4629,17.0244,-127.5697],[-816.6819,16.9593,-126.333],[-815.7707,17.0244,-127.3093],[-815.1198,17.0244,-127.049],[-814.1436,17.0895,-128.2205],[-812.2561,17.0244,-127.6347],[-810.2384,17.0895,-128.0903],[-808.2207,17.0895,-127.83],[-807.8302,17.0895,-124.771],[-807.1143,17.1546,-125.0964],[-804.8363,17.0244,-124.1201],[-803.7298,17.0895,-119.8895],[-801.7772,17.0244,-121.3214],[-799.8898,17.0895,-119.2387],[-798.1324,17.0244,-116.44],[-799.0436,17.0895,-113.7064],[-798.1975,17.0895,-112.5999],[-795.5941,17.0244,-112.7952],[-795.2687,17.0244,-112.4047],[-792.7954,17.0895,-113.381],[-790.2571,17.2848,-110.0616],[-790.9079,17.3498,-112.0792],[-788.5648,17.4149,-110.5172],[-786.8726,17.6753,-110.9077],[-786.7424,17.8705,-110.3219],[-785.7661,18.0658,-110.5823],[-785.7661,18.7166,-109.0202],[-784.7248,19.2373,-108.7599],[-784.2692,20.0184,-107.3931],[-784.5946,20.3438,-106.2866],[-783.7485,20.9946,-105.5056],[-783.8787,21.4502,-104.1388],[-782.9024,22.1011,-103.0974],[-782.9675,22.1011,-102.2513],[-781.9261,22.1662,-101.9259],[-780.9498,22.1662,-100.1035],[-778.802,22.4265,-98.216],[-777.8908,22.6218,-96.2634],[-776.0684,22.8821,-95.6125],[-774.8317,24.6394,-92.6186],[-776.3287,25.4205,-90.9264],[-775.808,26.4619,-89.169],[-777.6955,26.4619,-88.9087],[-776.8494,26.8524,-87.6721],[-778.1511,26.8524,-87.4117],[-779.1925,26.8524,-87.9324],[-781.5356,26.6571,-87.2165],[-785.0502,26.7222,-88.8436],[-783.8787,26.7873,-89.6897],[-784.7248,26.9825,-91.2518],[-788.0441,27.1127,-92.6837],[-785.7661,27.3731,-94.441],[-788.9553,27.4381,-95.6776],[-787.9791,27.8937,-99.3224],[-791.3635,27.9588,-100.494],[-791.9493,28.1541,-102.056],[-794.3575,28.089,-100.7543],[-796.5053,28.8049,-101.8608],[-796.4402,28.9351,-101.0147],[-797.4165,29.2605,-101.3401],[-798.2626,29.6511,-100.7543],[-799.0436,30.3019,-98.997],[-801.7122,31.2131,-97.6953],[-801.582,32.4497,-95.222],[-800.801,33.6864,-93.4647],[-799.5643,33.8816,-93.9854],[-798.7833,35.1834,-92.163],[-797.9372,35.2484,-91.7074],[-797.807,35.3786,-90.7962],[-796.6355,35.4437,-90.8613],[-796.31,35.704,-90.0152],[-798.1975,36.4851,-87.4768],[-797.2212,37.0708,-86.5656],[-797.4816,37.7217,-84.9385],[-795.4639,38.1773,-84.7432],[-795.8544,38.3075,-83.9622],[-795.0083,38.5027,-83.832],[-796.4402,38.5027,-81.0984],[-795.6592,38.5678,-80.7079],[-794.6829,38.698,-77.9743],[-796.31,38.7631,-74.5898],[-795.3338,39.0885,-71.9213],[-792.9256,39.4139,-70.4894],[-794.748,39.5441,-67.7558],[-793.967,39.479,-65.0222],[-789.7364,39.6743,-64.4364],[-787.5235,39.5441,-61.833],[-790.5174,39.2187,-59.7503],[-788.0441,39.0885,-56.8865],[-791.2333,38.8282,-55.0641],[-790.3872,38.698,-52.5257],[-793.1859,38.6329,-52.5908],[-790.7127,38.6329,-50.8986],[-790.3221,38.8932,-48.0999],[-791.4937,39.1536,-45.5615],[-794.0971,39.1536,-46.3426],[-794.9432,39.4139,-43.9344],[-797.5467,39.5441,-45.171],[-798.9135,39.8695,-44.5202],[-800.0199,40.6506,-45.4965],[-802.363,41.6919,-45.1059],[-803.1441,42.473,-47.1236],[-804.5109,42.9286,-47.9697],[-804.1203,42.7984,-48.946],[-805.4871,42.9286,-47.1236],[-807.635,42.9936,-46.0822],[-809.3272,42.6682,-49.4016],[-810.1733,42.3428,-52.721],[-806.4634,42.2777,-53.1766],[-806.0078,41.757,-58.774],[-808.8065,41.1062,-65.608],[-813.753,40.8458,-68.1463],[-815.9009,41.4967,-61.3123],[-817.2677,40.8458,-68.2114],[-818.5368,41.3014,-63.4927],[-819.806,41.757,-58.774]],"expectedDistance":375.65,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-07-creature-79336","objectiveId":"creature-79336","objectiveName":"Edwin VanCleef","checkpoints":[[-819.806,41.757,-58.774],[-821.4332,41.1062,-65.6731],[-820.3592,40.6506,-70.5545],[-819.2853,40.195,-75.4359],[-820.522,40.195,-75.7614],[-820.4569,40.1299,-76.4122],[-819.2202,40.0648,-76.8027],[-820.587,39.9997,-77.2583],[-821.2379,39.8044,-79.9919],[-818.5043,39.6743,-81.8143],[-817.3978,39.479,-84.4829],[-820.4569,39.3488,-86.5005]],"expectedDistance":34.5,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"898a4b18fffccc84743996d4948462918522d0af3d9ac9fb29eb6a12de25ae37","generationStatus":"Candidate","generationIssues":[]},{"schemaVersion":1,"id":"primary","dungeonId":"wailing-caverns","mapId":43,"legs":[{"id":"leg-01-creature-27366","objectiveId":"creature-27366","objectiveName":"Lady Anacondra","checkpoints":[[163.8789,-73.4238,132.8826],[161.0752,-73.7927,132.1633],[156.0027,-73.1287,134.5058],[155.1173,-73.4607,133.436],[154.5824,-73.018,134.4321],[153.9184,-73.3869,133.8418],[153.1252,-73.2763,134.2476],[152.4427,-73.885,133.3807],[151.7971,-73.8665,133.6758],[148.9934,-75.1761,132.3846],[148.3663,-75.1392,132.7351],[145.7286,-75.7479,132.2555],[141.9473,-76.2644,132.606],[140.6746,-75.8033,134.469],[140.4717,-76.1722,133.7127],[139.0514,-76.412,134.1554],[138.4242,-76.1906,135.2437],[136.1923,-76.9838,135.0408],[135.8603,-76.6887,136.1659],[134.1818,-77.0391,136.5902],[132.5217,-76.2829,139.7074],[130.1607,-76.6887,140.4268],[129.2384,-76.5226,141.8287],[128.1133,-76.9284,141.4966],[127.4492,-77.4265,140.4821],[124.7378,-77.9245,141.8471],[122.3214,-78.4594,139.855],[118.3556,-79.4186,139.2463],[117.5625,-79.6584,141.2384],[119.6468,-79.1234,143.0829],[117.6363,-79.769,143.0645],[119.1119,-79.4186,144.743],[116.6771,-79.9904,145.1304],[116.4742,-79.9535,146.3478],[118.5032,-79.2895,147.7312],[117.5625,-79.3632,148.6719],[118.3741,-78.8283,149.8708],[117.8576,-78.8652,150.4611],[118.1343,-78.3303,151.4387],[117.4518,-78.3856,152.3979],[117.9314,-77.74,153.4308],[117.3596,-77.8507,154.9064],[118.245,-77.1867,155.7734],[117.7838,-77.3896,156.6403],[118.3372,-77.076,156.6772],[118.3003,-77.0207,158.1897],[117.1014,-77.4265,159.4809],[116.9538,-77.1313,162.7826],[115.183,-77.7585,164.2398],[115.3306,-77.3527,166.4533],[114.0579,-77.9245,166.6562],[113.9472,-77.9245,167.6153],[114.4083,-77.5187,168.0027],[113.5967,-77.9983,170.4928],[114.7219,-77.3896,171.618],[114.9617,-77.6294,173.2965],[113.7627,-78.2012,173.979],[113.7074,-78.5332,175.0304],[112.5269,-78.9943,176.2478],[112.9327,-79.0866,177.0409],[112.1396,-79.1788,178.2399],[112.9327,-79.3448,179.4388],[111.7338,-79.4555,181.0436],[111.328,-79.5477,182.6483],[112.5269,-79.769,183.8473],[110.9222,-79.8059,185.8394],[111.66,-80.1195,188.0344],[113.5783,-80.2855,189.51],[113.2463,-80.4331,192.3506],[114.1132,-80.2671,193.6233],[113.3938,-80.3777,195.0252],[115.017,-79.7137,195.6892],[115.3122,-80.0088,200.402],[114.4821,-80.8573,203.8743],[113.6336,-81.7242,205.0733],[114.7035,-81.798,205.5344],[113.8919,-82.5358,206.5489],[114.5559,-82.5358,206.7334],[113.0987,-83.495,208.6701],[114.1132,-83.7901,210.6438],[114.4268,-84.2882,212.7281],[115.9024,-84.159,214.462],[115.4228,-84.4911,214.9969],[116.05,-84.325,215.7347],[115.3859,-84.8784,216.3988],[115.8655,-84.8415,217.7822],[115.3306,-85.3395,218.5569],[115.5704,-85.7822,220.3461],[114.5559,-87.1103,222.5226],[114.2608,-89.4529,228.3329],[111.1435,-89.8955,228.7387],[112.0289,-89.9878,229.4581],[108.7456,-90.578,230.8046],[107.5467,-90.1538,229.5872],[106.5137,-90.3567,230.657],[104.1158,-89.9878,229.4396],[102.5295,-90.4858,230.2512],[98.49,-90.7256,229.0154],[95.3911,-90.5227,227.2446],[92.7534,-90.5411,227.3184],[91.7758,-90.578,227.9825],[91.2409,-90.6887,227.6504],[90.2449,-91.0023,228.0562],[90.1158,-91.2052,227.0602],[89.3226,-91.5372,227.5582],[88.7324,-91.7032,226.9495],[87.6625,-92.2197,227.5398],[87.2383,-92.3488,226.6359],[86.6296,-92.6439,227.2446],[85.9287,-92.7915,227.0049],[85.5782,-92.9206,225.2894],[82.6085,-93.2895,224.6807],[82.4609,-93.4555,222.6702],[79.9708,-93.6584,222.4488],[80.2844,-93.7322,221.5635],[77.204,-93.7875,220.9917],[77.2593,-93.8244,220.1247],[74.8799,-93.6215,218.0773],[72.1684,-93.6215,218.2802],[70.6005,-93.5293,216.4541],[68.7929,-93.5846,217.2288],[68.3133,-93.4924,216.2327],[66.7086,-93.3817,216.9706],[65.9892,-93.2895,215.7901],[65.196,-93.2157,215.6609],[64.9562,-93.105,216.491],[64.0893,-93.1419,216.3619],[63.5728,-93.0128,217.1919],[61.1934,-92.9575,217.0628],[60.3449,-92.9759,217.8928],[56.3423,-93.2157,217.7268],[55.2724,-93.1235,216.7492],[55.6782,-92.9206,216.2881],[50.864,-94.4147,216.1221],[50.4582,-94.5253,215.6609],[49.665,-94.8574,215.993],[49.5912,-95.0603,215.3289],[45.0721,-94.8389,219.7189],[43.4674,-95.1525,220.5121],[42.5267,-95.0787,222.0246],[41.8995,-95.3923,221.6741],[38.4502,-95.5214,221.4897],[38.358,-95.3185,222.8546],[34.7796,-95.4661,223.1313],[33.8758,-95.3369,224.5332],[34.6136,-95.0971,225.7875],[37.0853,-94.8205,226.8573],[36.4212,-94.4885,228.9232],[36.5504,-93.9904,232.1142],[33.0088,-93.8798,233.7928],[30.943,-93.5108,237.1129],[31.3488,-93.5108,238.6992],[28.0101,-93.7137,239.0866],[28.1208,-93.8429,239.8428],[30.3343,-93.7137,244.1406],[30.8323,-94.0827,248.3277],[31.4963,-93.8429,249.9878],[33.5622,-93.4186,250.3014],[34.9825,-93.1235,256.8495],[36.5872,-92.9206,257.2368],[36.1261,-92.8468,261.5715],[40.2579,-92.7638,260.2711],[44.3896,-92.6808,258.9707],[45.9759,-92.6439,260.1881],[39.7783,-92.5886,264.3937],[36.6241,-92.3857,269.8166],[37.0484,-92.1459,272.731],[39.3172,-92.2197,277.3977],[43.4305,-92.3857,282.4332],[44.6294,-91.7401,289.1658],[47.7467,-91.6479,290.0881],[48.4476,-90.8916,294.515],[45.8468,-90.744,296.1197],[47.7836,-90.4858,297.8536],[46.7138,-90.3567,298.4438],[44.445,-90.5596,297.3002],[43.8547,-90.3013,298.905],[44.5925,-89.8955,301.4504],[41.7335,-90.0247,301.8562],[42.2684,-89.7849,303.8483],[39.5938,-89.8771,305.0473],[39.8705,-89.6373,307.5743],[36.9377,-89.8771,307.7034],[36.661,-89.7111,308.3675],[34.2447,-89.7111,307.8325],[33.1011,-89.4529,308.9393],[30.2789,-89.6926,308.4228],[30.0576,-89.4344,309.013],[25.2894,-89.2407,306.5875],[20.5213,-89.0471,304.1619],[18.5661,-88.4568,304.3279],[18.1787,-88.549,303.4794],[16.5002,-88.2724,302.8892],[14.8032,-88.2539,301.432],[14.6741,-88.2908,300.6757],[13.0694,-87.8297,299.8826],[11.3355,-87.4239,300.2515],[9.1036,-86.7229,298.4807],[5.765,-86.4647,299.3292],[2.6662,-85.8191,297.6691],[-0.156,-85.6162,298.2409],[-1.65,-85.2289,295.2528],[-4.3062,-85.7638,295.3819],[-6.6672,-86.3725,294.7917],[-8.5486,-86.9812,295.843],[-15.8622,-87.6083,295.9353]],"expectedDistance":471.13,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-27380","objectiveId":"creature-27380","objectiveName":"Lord Cobrahn","checkpoints":[[-15.8622,-87.6083,295.9353],[-8.5486,-86.9812,295.843],[-6.6672,-86.3725,294.7917],[-4.3062,-85.7638,295.3819],[-1.65,-85.2289,295.2528],[-0.156,-85.6162,298.2409],[2.6662,-85.8191,297.6691],[5.765,-86.4647,299.3292],[9.1036,-86.7229,298.4807],[11.3355,-87.4239,300.2515],[13.0694,-87.8297,299.8826],[14.6741,-88.2908,300.6757],[14.8032,-88.2539,301.432],[16.5002,-88.2724,302.8892],[18.1787,-88.549,303.4794],[18.5661,-88.4568,304.3279],[20.5213,-89.0471,304.1619],[25.2894,-89.2407,306.5875],[30.0576,-89.4344,309.013],[30.2789,-89.6926,308.4228],[31.2012,-89.6558,308.4781],[32.3448,-89.914,307.3714],[36.661,-89.7111,308.3675],[36.661,-90.1169,305.1764],[39.5938,-89.8771,305.0473],[42.2684,-89.7849,303.8483],[41.7335,-90.0247,301.8562],[44.5925,-89.8955,301.4504],[43.8547,-90.3013,298.905],[44.445,-90.5596,297.3002],[46.7138,-90.3567,298.4438],[47.7836,-90.4858,297.8536],[45.8468,-90.744,296.1197],[48.4476,-90.8916,294.515],[47.7467,-91.6479,290.0881],[44.6294,-91.7401,289.1658],[43.4305,-92.3857,282.4332],[39.3172,-92.2197,277.3977],[37.0484,-92.1459,272.731],[36.6241,-92.3857,269.8166],[39.7783,-92.5886,264.3937],[45.9759,-92.6439,260.1881],[44.3896,-92.6808,258.9707],[40.2579,-92.7638,260.2711],[36.1261,-92.8468,261.5715],[36.5872,-92.9206,257.2368],[34.9825,-93.1235,256.8495],[33.5622,-93.4186,250.3014],[31.4963,-93.8429,249.9878],[30.8323,-94.0827,248.3277],[30.3343,-93.7137,244.1406],[28.0101,-93.7137,239.0866],[25.4278,-94.1564,236.9838],[26.6821,-93.9535,236.5227],[26.184,-94.2856,234.8072],[27.1248,-94.3224,233.4054],[29.6887,-94.3593,231.8007],[30.4265,-95.1156,226.3224],[30.3527,-95.2263,225.6583],[28.8586,-95.4292,224.3303],[29.744,-95.5029,224.072],[29.8178,-95.5952,223.1313],[29.0615,-95.5583,221.9139],[29.4489,-95.6505,220.7888],[29.0339,-95.669,215.5779],[28.6188,-95.6874,210.3671],[28.6742,-96.0748,209.3895],[30.5003,-96.5174,207.6741],[30.5003,-96.5912,206.8625],[28.9324,-96.8495,207.3236],[28.7111,-97.1999,201.6424],[28.1761,-97.4397,201.5871],[28.047,-97.7717,199.5351],[27.1985,-97.9377,200.4389],[27.051,-98.7493,196.7083],[25.9996,-99.3765,196.1734],[25.8705,-99.8192,194.6747],[24.9113,-100.4279,193.734],[24.69,-101.221,192.2215],[20.9271,-101.6453,190.7827],[20.0786,-102.1433,189.7867],[20.5951,-102.4569,188.5693],[20.0417,-102.8995,187.6654],[20.4291,-103.0656,187.0383],[19.5806,-103.2869,187.0199],[18.2525,-104.0247,183.921],[16.8322,-104.7441,183.091],[15.91,-105.113,183.5152],[15.6517,-105.1499,182.6852],[15.0061,-105.4819,183.0172],[14.6003,-105.7217,181.3202],[9.9337,-106.0168,182.6852],[9.9337,-106.0722,184.8802],[5.5805,-106.0722,185.2122],[9.8414,-106.109,188.3848],[9.3065,-106.109,192.6503],[4.7689,-106.109,194.3888],[8.5134,-106.109,198.9863],[4.7874,-106.109,200.5911],[8.7347,-106.109,202.1774],[5.0087,-106.1459,203.985],[5.0087,-106.1459,204.7228],[8.7347,-106.1459,205.9771],[4.935,-106.109,206.9178],[8.9376,-106.109,212.0456],[3.8098,-106.0722,213.3922],[2.0759,-106.109,218.2617],[7.4804,-106.1459,221.5266],[1.6701,-106.1459,224.6623],[7.5358,-106.1459,227.3184],[4.1971,-106.109,233.2394],[-1.5394,-106.1459,235.7849],[0.9323,-106.1459,240.3224],[0.8032,-106.2566,242.665],[-1.7238,-106.2935,240.9865],[-2.3325,-106.3304,244.5833],[-0.2113,-106.3673,247.9219],[-1.0782,-106.3673,249.6558],[-3.4761,-106.3673,251.8508],[-1.3365,-106.3673,254.7836],[-2.8674,-106.3673,256.6466],[-2.2034,-106.3673,259.3212],[-0.3404,-106.3673,261.3317],[-0.3404,-106.3673,265.7217],[1.3381,-106.3673,268.0458],[2.9244,-106.3673,272.8416],[5.267,-106.3304,276.5123],[5.599,-106.3673,279.0393],[6.5397,-106.4964,280.9761],[8.4027,-106.4595,282.507],[9.0667,-106.7915,285.0525],[10.1366,-106.6809,285.5874],[10.2103,-106.8838,286.7864],[9.6016,-107.1235,287.5057],[9.989,-107.2527,288.7047],[12.9403,-107.6031,293.648],[15.4396,-107.5939,296.4978],[17.939,-107.5847,299.3477],[20.134,-106.7731,301.3398],[21.0009,-106.4042,303.1843],[24.4686,-106.3673,302.3174],[26.1472,-106.3673,304.3833],[30.8692,-106.3673,306.8411],[35.0009,-106.3673,303.5025],[40.5899,-106.3673,304.517],[41.9917,-106.3673,309.9261],[45.9206,-106.3673,306.9887],[47.7283,-106.3304,307.708],[48.8719,-106.3304,311.992],[51.6756,-106.2935,308.7779],[52.3396,-106.3673,313.1909],[53.7968,-106.2935,310.8437],[54.8851,-106.3673,313.4123],[55.3646,-106.4964,316.8108],[57.5596,-106.5886,316.0177],[58.7955,-106.644,318.7845],[58.9984,-106.6071,321.1824],[61.7283,-106.6071,320.9979],[63.9233,-106.5517,323.4696],[66.727,-106.4595,325.0559],[67.926,-106.3488,324.2628],[69.6598,-106.2751,321.7358],[72.9247,-106.1459,322.4551],[72.1131,-106.1459,324.5948],[75.009,-106.1459,324.9084],[75.009,-106.1459,327.2509],[76.7982,-106.1459,327.7858],[76.1895,-106.1459,329.9255],[77.8496,-106.1459,331.3274],[75.9128,-106.1459,333.3379],[77.4438,-106.1459,335.5329],[77.0564,-106.1459,339.7938],[72.7218,-106.1459,339.6647],[70.5268,-106.1459,342.9295],[73.8654,-106.1459,346.6555],[69.8627,-106.1459,347.9282],[72.8693,-106.1459,351.3222],[69.1434,-106.1459,352.1891],[68.1657,-106.0537,356.3762],[64.4951,-106.0906,357.5751],[63.5913,-105.8324,358.9217],[63.0195,-105.8877,361.9467],[62.3186,-105.5557,362.6661],[62.6506,-105.777,363.865],[61.5992,-104.9839,366.0416],[61.9681,-104.9839,368.089],[61.7283,-104.3752,370.0258],[62.6875,-104.6703,371.1141],[62.1341,-104.3014,371.9257],[62.7612,-104.6703,372.6635],[62.337,-104.449,374.6002],[63.3515,-104.8179,375.7807],[62.9641,-104.6888,377.7175],[63.3884,-105.0208,378.566],[62.2079,-105.0945,380.8532],[61.8205,-105.7217,384.9297],[60.142,-105.8324,389.7992],[60.7691,-106.0353,391.5147],[60.0313,-105.777,393.9863],[60.4925,-105.9615,395.4251],[60.0498,-105.9246,396.6978],[59.1091,-105.6664,397.4725],[58.8508,-106.0537,399.7044],[55.7151,-105.6479,402.2499],[53.2619,-105.8877,405.2565],[53.1143,-106.0906,406.2341],[51.7862,-105.9615,407.5068],[51.1038,-105.9061,409.6096],[49.6835,-105.5372,411.2328],[47.3778,-105.2237,416.047],[44.943,-104.3198,420.0866],[45.8837,-105.113,420.6215],[45.607,-105.0761,422.5767],[46.4371,-105.279,424.6841],[45.6808,-105.3528,427.0312],[46.0682,-105.4819,429.028],[44.8139,-105.5188,430.5774],[46.0682,-105.611,430.9832],[47.1011,-105.6479,432.4957],[46.2895,-105.611,434.5062],[44.1314,-105.5557,435.5945],[42.8587,-105.4266,435.2625],[42.0102,-105.2606,437.4022],[40.8112,-104.9839,437.6788],[39.6123,-104.7256,439.9292],[36.9193,-104.1169,441.0359],[36.1261,-104.0247,442.2533],[34.134,-103.5636,442.6591],[33.7282,-103.5267,443.4707],[32.9166,-103.25,443.4523],[31.0536,-102.5675,445.2599],[31.0536,-102.2355,447.7316],[30.1129,-101.8113,448.6723],[31.5148,-101.4793,452.841],[30.7954,-101.2579,453.1176],[29.7256,-100.391,455.9951],[27.8626,-99.8929,456.5854],[26.4607,-99.8929,456.1427],[24.4686,-99.4872,456.53],[23.2697,-99.1551,457.1941],[23.2697,-98.9338,458.393],[19.9495,-98.196,459.2784],[18.8981,-97.6611,460.7356],[17.2196,-97.0524,459.9978],[16.7585,-96.7941,460.9385],[13.9916,-95.7058,459.9055],[13.4383,-95.3738,462.1005],[12.2393,-94.8758,462.6355],[12.0733,-94.7098,464.6091],[10.4317,-94.0827,464.2955],[10.0259,-93.8429,466.1585],[8.5134,-93.2157,465.9925],[7.5542,-92.8284,465.1071],[6.5028,-92.2566,465.6421],[6.2815,-92.1459,466.5274],[5.1563,-91.6848,466.5828],[5.0825,-91.7585,468.2429],[4.5476,-91.5925,468.8147],[3.8098,-91.1314,466.7672],[2.6846,-90.7994,467.3021],[1.3012,-89.8955,466.6934],[-0.0269,-89.5266,467.2837],[-2.7937,-88.0141,467.0808],[-3.7897,-88.1617,468.1137],[-5.1178,-87.3685,467.9846],[-5.6342,-87.6452,468.6671],[-7.073,-86.6676,468.1322],[-7.4603,-87.3316,468.87],[-8.2904,-87.2947,468.9253],[-8.4933,-88.0695,469.8292],[-9.8767,-88.1248,469.4971],[-11.0249,-88.2908,470.401],[-12.5605,-88.2539,469.7554],[-14.2252,-88.2539,470.0136],[-14.7601,-88.051,468.5195],[-15.6639,-88.0141,468.6302],[-16.6969,-87.6452,466.6012],[-18.2278,-87.553,465.9925],[-18.6152,-87.1472,464.2587],[-19.5006,-87.221,464.2033],[-19.9064,-87.0181,463.0044],[-21.0315,-87.0919,462.5986],[-22.5441,-86.2249,457.4707],[-23.3741,-86.354,457.1941],[-24.4255,-86.1511,455.4786],[-25.7167,-86.188,454.6486],[-25.8827,-85.8929,453.5419],[-25.1633,-85.7269,453.4312],[-25.1264,-85.0997,452.4352],[-26.0118,-85.1551,451.8818],[-25.5691,-84.9522,451.1809],[-23.9828,-84.2328,451.1624],[-21.6033,-82.7756,447.6762],[-21.3451,-82.7203,448.5247],[-19.8695,-82.1116,448.0267],[-18.9472,-81.8534,449.0228],[-16.3833,-80.8942,447.7131],[-15.0183,-80.1195,445.6657],[-13.741,-79.8244,445.7948],[-12.4083,-79.3263,444.6697],[-10.2087,-78.5147,445.9977],[-8.7331,-77.9429,445.9977],[-9.3971,-78.1458,444.0056],[-8.3273,-77.5925,444.1901],[-7.5895,-77.3342,444.9832],[-7.1283,-76.8362,444.2454],[-5.6711,-75.8217,444.5959],[-5.4129,-75.3606,443.5998],[-7.2206,-74.9548,440.0767],[-5.8925,-73.9403,438.4351],[-6.3352,-73.7927,437.6051],[-5.5789,-73.018,436.3692],[-6.3905,-72.8889,435.2072],[-5.1916,-72.1695,434.5985],[-5.3391,-71.9666,433.916],[0.3052,-69.8085,433.0859],[0.9692,-68.8125,430.024],[2.4079,-67.9455,428.2533],[2.6293,-66.8942,424.9146],[4.068,-66.267,425.4311],[4.2525,-66.1932,424.3198],[5.2485,-65.8981,424.7256],[6.3921,-65.6583,423.1347],[6.1892,-65.6952,420.3263],[9.325,-64.902,418.6478],[10.1181,-64.736,417.1353],[13.4383,-64.072,416.1946],[12.7742,-64.1089,414.9034],[13.5858,-63.9429,414.8112],[13.3829,-63.8322,413.686],[12.1287,-63.7953,411.9521],[12.2024,-63.6478,411.325],[13.2538,-63.4818,412.0628],[13.4752,-63.0022,411.0483],[14.545,-62.4488,411.4357],[15.4119,-61.6741,410.9192],[16.74,-61.0654,411.4541],[16.74,-60.5858,409.9232],[19.9126,-60.346,409.2591],[19.2486,-60.2169,407.931],[24.1551,-59.8849,407.0088],[23.3803,-59.8849,406.0496],[16.4264,-60.1985,405.5885],[16.2235,-59.9956,403.7439],[14.2314,-59.5898,403.6333],[12.6451,-59.516,402.7663],[11.7782,-59.6636,398.4686],[11.0957,-59.6267,398.487],[11.0404,-59.6267,401.6965],[8.9929,-59.6267,402.8586],[6.3184,-59.7742,403.5226],[5.5252,-59.8665,399.852],[2.5371,-59.9033,398.5055],[0.2498,-59.7004,401.2723],[-1.8714,-59.5898,400.0549],[-3.347,-59.3131,401.3276],[-5.8371,-59.0733,400.4976],[-9.8214,-59.5898,403.6148],[-12.9248,-59.5898,404.7584],[-14.8662,-59.682,404.6847],[-19.0763,-59.6451,406.7137],[-20.3306,-59.848,406.4554],[-22.0091,-59.7189,408.0602],[-23.2819,-59.7927,408.1893],[-24.3148,-60.0325,407.4515],[-27.5243,-60.1985,407.6175],[-33.7773,-60.2723,404.2051],[-34.6811,-60.3276,404.5924],[-35.5481,-60.2169,403.5226],[-36.3228,-60.4383,404.3158],[-36.7101,-60.9178,405.9021],[-42.3729,-63.3342,409.9416],[-43.7378,-63.2973,408.2077],[-45.3241,-63.74,408.3553],[-44.8076,-63.9429,409.8309],[-45.2134,-64.0905,411.5095],[-46.6706,-64.1089,411.9337],[-46.5415,-64.2565,413.5016],[-47.9434,-64.2565,414.3685],[-47.8142,-64.404,416.1577],[-50.4335,-64.404,418.242],[-51.0791,-64.404,419.5332],[-50.1199,-64.2934,419.7914],[-52.4994,-63.9429,421.7651],[-55.3584,-64.0167,422.4476],[-55.6904,-63.8507,423.1669],[-56.6496,-64.0167,423.2038],[-57.6825,-64.1273,424.2783],[-57.5903,-64.0351,425.5741],[-58.6601,-64.238,426.6485],[-58.0883,-64.2011,429.194],[-58.6417,-64.4225,430.4851],[-58.4203,-64.5885,432.2928],[-57.3321,-64.4594,432.8093],[-56.3545,-64.6254,434.082],[-57.2952,-64.7176,435.7421],[-56.3176,-64.6438,437.5313],[-53.4216,-64.8098,438.7118],[-52.2042,-64.9758,442.6222],[-50.1937,-65.1787,444.6143],[-49.1423,-65.437,450.2217],[-47.6113,-65.4001,452.472],[-48.3492,-65.437,452.8778],[-47.9065,-65.437,453.3574],[-48.5336,-65.6399,453.9477],[-46.5415,-66.3408,455.5893],[-46.6891,-66.4699,456.4194],[-46.1542,-66.4699,456.8989],[-46.3202,-66.433,457.8212],[-45.5086,-66.3961,459.2231],[-45.9144,-66.101,461.0307],[-45.195,-66.0641,461.5656],[-45.4532,-65.8059,463.4286],[-44.0514,-66.0641,463.3548],[-44.531,-65.769,465.1256],[-40.9157,-66.0272,466.6197],[-37.9828,-66.3592,466.9517],[-37.245,-66.433,467.5788],[-38.3702,-66.2301,469.6632],[-38.3886,-66.0088,474.0716],[-39.5876,-65.935,475.6763],[-38.2595,-65.8059,478.4432],[-36.2859,-65.603,479.8635],[-34.1462,-65.0681,484.235],[-35.6218,-64.3671,488.6619],[-34.7549,-63.9982,489.3813],[-34.884,-63.6847,490.1191],[-33.9802,-63.2973,490.9122],[-34.3676,-63.2973,491.0414],[-33.5006,-63.1128,491.4472],[-31.1581,-62.3012,494.712],[-28.5019,-62.043,494.878],[-23.3741,-61.1853,496.5289],[-18.2463,-60.3276,498.1797],[-16.6231,-59.9218,498.6962],[-15.295,-59.4238,500.2825],[-14.3497,-59.018,500.1534],[-13.5335,-58.6491,500.7805],[-12.6435,-58.3539,500.3194],[-11.6474,-58.1879,501.0388],[-8.8806,-57.819,500.3563],[-7.2759,-57.6346,500.7621],[-5.21,-57.4132,499.3602],[-3.4761,-57.0443,499.8583],[-2.2772,-56.6754,502.6804],[0.5265,-56.2696,503.0677],[4.1234,-55.9191,505.4656],[7.794,-55.7162,504.488],[9.7676,-55.5871,505.4472],[11.7598,-55.4949,505.1521],[12.6267,-55.4027,506.185],[13.8625,-55.292,505.6132],[14.6003,-55.1629,506.0375],[16.9614,-55.1813,505.3181],[18.1603,-55.0891,505.7239],[19.0457,-54.9231,505.3181],[20.1708,-54.6833,506.3141],[21.3698,-54.4251,506.4433],[23.2697,-54.1668,505.687],[24.3395,-54.3328,503.6211],[25.5385,-54.3328,503.492],[26.8112,-54.2406,502.3668],[28.9693,-54.0377,502.7357],[29.8916,-53.761,501.7397],[31.0721,-53.4475,501.5552],[32.2895,-53.5028,502.2377],[32.4924,-53.2815,501.2048],[33.6913,-53.4475,500.5961],[37.4726,-53.4844,496.4459],[38.4687,-53.429,495.9109],[39.8152,-53.3552,496.0585],[40.0181,-53.5581,495.1362],[41.4015,-53.7795,494.8042],[42.1209,-54.1115,493.8635],[41.5306,-54.1115,493.5315],[44.4819,-54.6833,492.6645],[44.279,-54.9231,491.6132],[46.3817,-55.624,489.658],[48.3738,-55.8823,489.2522],[49.6466,-55.8454,490.0637],[52.9852,-56.9705,487.2601],[53.9075,-56.9152,488.4406],[54.8666,-57.4132,487.4445],[57.5043,-58.0219,488.3852],[58.7955,-58.5937,487.2601],[59.9944,-58.8704,487.6658],[62.005,-59.4238,485.6],[63.7204,-59.8849,485.8582],[66.1368,-60.4936,484.6408],[67.3357,-60.7887,483.0361],[68.9405,-61.3605,482.6303],[70.1394,-61.8032,483.0361],[71.5597,-62.4673,482.2798],[73.2198,-62.9284,482.2245],[73.5518,-62.8915,482.87],[74.4925,-63.1128,482.6118],[75.2488,-63.5002,483.1283],[77.2224,-64.57,480.7488],[79.731,-65.4923,479.3101],[79.5097,-65.6399,478.7198],[81.2251,-66.6728,475.3443],[81.8338,-66.8019,475.5472],[81.8891,-67.7242,469.0913],[82.1842,-67.5766,467.671],[83.623,-68.2222,467.0255],[88.9537,-68.96,467.4128],[90.0604,-69.3474,465.7527],[91.7205,-69.6425,464.9411],[92.3845,-69.5503,465.31],[94.3029,-69.9376,464.7567],[93.9155,-70.1959,463.1704],[94.9116,-70.4357,461.8608],[94.4689,-70.8046,459.8318],[98.7298,-71.5608,458.2455],[98.5084,-71.7084,456.6407],[99.818,-71.7637,455.7184],[100.0947,-72.1142,452.9147],[103.3042,-72.2433,451.7342],[106.1079,-72.5015,448.8936],[110.4426,-72.4093,449.2257],[116.2529,-72.52,447.6394],[116.05,-72.5569,444.1163],[118.4294,-72.6307,439.7078],[114.0394,-72.6676,434.8567],[118.7246,-72.5569,431.2599],[115.5888,-72.5569,430.9278],[122.137,-72.4831,429.7658],[121.5651,-72.52,429.3046],[122.0078,-72.52,428.8066],[119.0197,-72.5569,428.6037],[119.6099,-72.5569,427.6999],[123.2068,-72.52,426.9621],[123.5941,-72.52,426.132],[121.9525,-72.52,420.9443],[125.4571,-72.52,419.9621],[129.6258,-72.4462,424.9285],[135.1594,-72.4093,424.8916],[137.2068,-72.3355,426.1505],[137.2253,-72.3909,425.7447],[139.1436,-72.2618,426.4641],[141.3202,-72.2618,426.2612],[144.0501,-72.3909,425.0391],[145.581,-72.4831,419.9436],[152.0369,-72.4462,418.3711],[154.5271,-72.4462,413.9811]],"expectedDistance":1385.12,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-27368","objectiveId":"creature-27368","objectiveName":"Kresh","checkpoints":[[154.5271,-72.4462,413.9811],[152.0369,-72.4462,418.3711],[145.581,-72.4831,419.9436],[144.0501,-72.3909,425.0391],[141.3202,-72.2618,426.2612],[139.1436,-72.2618,426.4641],[137.2253,-72.3909,425.7447],[137.2068,-72.3355,426.1505],[135.1594,-72.4093,424.8916],[129.6258,-72.4462,424.9285],[125.4571,-72.52,419.9621],[121.9525,-72.52,420.9443],[123.5941,-72.52,426.132],[123.2068,-72.52,426.9621],[119.6099,-72.5569,427.6999],[119.0197,-72.5569,428.6037],[122.0078,-72.52,428.8066],[121.5651,-72.52,429.3046],[122.137,-72.4831,429.7658],[115.5888,-72.5569,430.9278],[118.7246,-72.5569,431.2599],[114.0394,-72.6676,434.8567],[118.4294,-72.6307,439.7078],[116.05,-72.5569,444.1163],[116.2529,-72.52,447.6394],[111.4202,-72.4462,448.617],[109.7601,-72.3171,450.4062],[105.4254,-72.4093,450.0741],[103.3042,-72.2433,451.7342],[100.0947,-72.1142,452.9147],[99.818,-71.7637,455.7184],[98.5084,-71.7084,456.6407],[98.7298,-71.5608,458.2455],[94.4689,-70.8046,459.8318],[94.9116,-70.4357,461.8608],[93.9155,-70.1959,463.1704],[94.3029,-69.9376,464.7567],[92.3845,-69.5503,465.31],[91.7205,-69.6425,464.9411],[90.0604,-69.3474,465.7527],[88.9537,-68.96,467.4128],[83.623,-68.2222,467.0255],[82.1842,-67.5766,467.671],[81.8891,-67.7242,469.0913],[81.8338,-66.8019,475.5472],[81.2251,-66.6728,475.3443],[79.5097,-65.6399,478.7198],[79.731,-65.4923,479.3101],[77.2224,-64.57,480.7488],[75.2488,-63.5002,483.1283],[74.4925,-63.1128,482.6118],[73.5518,-62.8915,482.87],[73.2198,-62.9284,482.2245],[71.5597,-62.4673,482.2798],[70.1394,-61.8032,483.0361],[68.9405,-61.3605,482.6303],[67.3357,-60.7887,483.0361],[66.1368,-60.4936,484.6408],[63.7204,-59.8849,485.8582],[62.005,-59.4238,485.6],[60.806,-59.1655,487.2047],[59.9944,-58.8704,487.6658],[58.7955,-58.5937,487.2601],[57.5043,-58.0219,488.3852],[54.8666,-57.4132,487.4445],[53.9075,-56.9152,488.4406],[53.1143,-56.989,487.2601],[51.9707,-56.6201,487.9794],[50.698,-56.657,487.1678],[48.3738,-55.8823,489.2522],[46.3817,-55.624,489.658],[44.279,-54.9231,491.6132],[44.4819,-54.6833,492.6645],[41.5306,-54.1115,493.5315],[42.1209,-54.1115,493.8635],[41.4015,-53.7795,494.8042],[40.0181,-53.5581,495.1362],[39.8152,-53.3552,496.0585],[38.4687,-53.429,495.9109],[37.4726,-53.4844,496.4459],[33.6913,-53.4475,500.5961],[32.4924,-53.2815,501.2048],[32.2895,-53.5028,502.2377],[31.0721,-53.4475,501.5552],[29.8916,-53.761,501.7397],[28.9693,-54.0377,502.7357],[26.8112,-54.2406,502.3668],[25.5385,-54.3328,503.492],[24.3395,-54.3328,503.6211],[23.2697,-54.1668,505.687],[21.3698,-54.4251,506.4433],[20.1708,-54.6833,506.3141],[19.0457,-54.9231,505.3181],[18.1603,-55.0891,505.7239],[16.9614,-55.1813,505.3181],[14.6003,-55.1629,506.0375],[13.8625,-55.292,505.6132],[12.6267,-55.4027,506.185],[11.7598,-55.4949,505.1521],[9.7676,-55.5871,505.4472],[7.794,-55.7162,504.488],[4.1234,-55.9191,505.4656],[0.5265,-56.2696,503.0677],[-2.2772,-56.6754,502.6804],[-3.4761,-57.0443,499.8583],[-5.21,-57.4132,499.3602],[-7.2759,-57.6346,500.7621],[-8.8806,-57.819,500.3563],[-11.6474,-58.1879,501.0388],[-12.6435,-58.3539,500.3194],[-13.5335,-58.6491,500.7805],[-14.3497,-59.018,500.1534],[-15.295,-59.4238,500.2825],[-16.6231,-59.9218,498.6962],[-22.5625,-60.9824,496.7871],[-28.5019,-62.043,494.878],[-31.1581,-62.3012,494.712],[-32.3755,-62.6517,493.4761],[-32.6337,-62.8177,492.4985],[-34.3676,-63.2973,491.0414],[-33.9802,-63.2973,490.9122],[-34.884,-63.6847,490.1191],[-34.7549,-63.9982,489.3813],[-35.6218,-64.3671,488.6619],[-34.5705,-65.1787,483.3127],[-36.2859,-65.603,479.8635],[-38.2595,-65.8059,478.4432],[-39.5876,-65.935,475.6763],[-38.3886,-66.0088,474.0716],[-38.3702,-66.2301,469.6632],[-37.245,-66.433,467.5788],[-37.9828,-66.3592,466.9517],[-40.9157,-66.0272,466.6197],[-44.531,-65.769,465.1256],[-44.0514,-66.0641,463.3548],[-45.4532,-65.8059,463.4286],[-45.195,-66.0641,461.5656],[-45.9144,-66.101,461.0307],[-45.5086,-66.3961,459.2231],[-46.3202,-66.433,457.8212],[-46.1542,-66.4699,456.8989],[-46.6891,-66.4699,456.4194],[-46.5415,-66.3408,455.5893],[-48.5336,-65.6399,453.9477],[-47.9065,-65.437,453.3574],[-48.3492,-65.437,452.8778],[-47.6113,-65.4001,452.472],[-49.1423,-65.437,450.2217],[-50.1937,-65.1787,444.6143],[-52.2042,-64.9758,442.6222],[-53.4216,-64.8098,438.7118],[-56.3176,-64.6438,437.5313],[-57.2952,-64.7176,435.7421],[-56.3545,-64.6254,434.082],[-57.3321,-64.4594,432.8093],[-58.4203,-64.5885,432.2928],[-58.6417,-64.4225,430.4851],[-58.0883,-64.2011,429.194],[-58.6601,-64.238,426.6485],[-57.5903,-64.0351,425.5741],[-57.6825,-64.1273,424.2783],[-56.6496,-64.0167,423.2038],[-55.6904,-63.8507,423.1669],[-53.4585,-64.2196,420.9904],[-51.6509,-64.1458,420.6399],[-51.2082,-64.2565,420.271],[-52.1674,-64.3671,420.0128],[-51.0791,-64.404,419.5332],[-50.4335,-64.404,418.242],[-47.8142,-64.404,416.1577],[-47.9434,-64.2565,414.3685],[-46.5415,-64.2565,413.5016],[-46.6706,-64.1089,411.9337],[-45.2134,-64.0905,411.5095],[-44.8076,-63.9429,409.8309],[-45.3241,-63.74,408.3553],[-43.7378,-63.2973,408.2077],[-42.3729,-63.3342,409.9416],[-36.7101,-60.9178,405.9021],[-36.3228,-60.4383,404.3158],[-35.5481,-60.2169,403.5226],[-34.6811,-60.3276,404.5924],[-33.7773,-60.2723,404.2051],[-27.5243,-60.1985,407.6175],[-24.3148,-60.0325,407.4515],[-23.2819,-59.7927,408.1893],[-22.0091,-59.7189,408.0602],[-20.3306,-59.848,406.4554],[-19.0763,-59.6451,406.7137],[-14.8662,-59.682,404.6847],[-12.9248,-59.5898,404.7584],[-9.8214,-59.5898,403.6148],[-5.8371,-59.0733,400.4976],[-3.347,-59.3131,401.3276],[-1.8714,-59.5898,400.0549],[0.2498,-59.7004,401.2723],[2.5371,-59.9033,398.5055],[5.5252,-59.8665,399.852],[6.3184,-59.7742,403.5226],[8.9929,-59.6267,402.8586],[11.0404,-59.6267,401.6965],[11.0957,-59.6267,398.487],[11.7782,-59.6636,398.4686],[12.6451,-59.516,402.7663],[14.2314,-59.5898,403.6333],[16.2235,-59.9956,403.7439],[16.4264,-60.1985,405.5885],[23.3803,-59.8849,406.0496],[24.1551,-59.8849,407.0088],[19.2486,-60.2169,407.931],[19.9126,-60.346,409.2591],[16.74,-60.5858,409.9232],[15.4119,-61.1945,409.3882],[15.4119,-61.6741,410.9192],[14.545,-62.4488,411.4357],[13.4752,-63.0022,411.0483],[13.2538,-63.4818,412.0628],[12.2024,-63.6478,411.325],[12.1287,-63.7953,411.9521],[13.3829,-63.8322,413.686],[13.5858,-63.9429,414.8112],[12.7742,-64.1089,414.9034],[13.4383,-64.072,416.1946],[10.1181,-64.736,417.1353],[9.325,-64.902,418.6478],[7.7202,-65.271,419.441],[8.126,-65.2341,420.2526],[6.595,-65.6583,421.1379],[6.3921,-65.6583,423.1347],[5.2485,-65.8981,424.7256],[4.2525,-66.1932,424.3198],[4.068,-66.267,425.4311],[3.57,-66.5621,425.302],[3.4409,-66.931,426.1874],[2.5002,-67.2631,425.8],[2.4079,-67.9455,428.2533],[0.9692,-68.8125,430.024],[0.3052,-69.8085,433.0859],[-5.3391,-71.9666,433.916],[-5.1916,-72.1695,434.5985],[-6.3905,-72.8889,435.2072],[-5.5789,-73.018,436.3692],[-6.3352,-73.7927,437.6051],[-5.8925,-73.9403,438.4351],[-7.2206,-74.9548,440.0767],[-5.4129,-75.3606,443.5998],[-5.6711,-75.8217,444.5959],[-7.1283,-76.8362,444.2454],[-7.5895,-77.3342,444.9832],[-8.3273,-77.5925,444.1901],[-9.3971,-78.1458,444.0056],[-8.7331,-77.9429,445.9977],[-10.2087,-78.5147,445.9977],[-12.4083,-79.3263,444.6697],[-13.741,-79.8244,445.7948],[-15.0183,-80.1195,445.6657],[-17.0473,-80.9495,446.7355],[-17.656,-81.3922,448.1189],[-18.9472,-81.8534,449.0228],[-19.8695,-82.1116,448.0267],[-21.3451,-82.7203,448.5247],[-21.6033,-82.7756,447.6762],[-23.9828,-84.2328,451.1624],[-25.5691,-84.9522,451.1809],[-26.0118,-85.1551,451.8818],[-25.1264,-85.0997,452.4352],[-25.1633,-85.7269,453.4312],[-25.8827,-85.8929,453.5419],[-25.7167,-86.188,454.6486],[-24.4255,-86.1511,455.4786],[-23.3741,-86.354,457.1941],[-22.5441,-86.2249,457.4707],[-21.3451,-86.6861,460.5327],[-20.2199,-86.6123,460.9385],[-19.5006,-87.221,464.2033],[-18.6152,-87.1472,464.2587],[-18.2278,-87.553,465.9925],[-16.6969,-87.6452,466.6012],[-15.6639,-88.0141,468.6302],[-14.7601,-88.051,468.5195],[-14.2252,-88.2539,470.0136],[-12.5605,-88.2539,469.7554],[-11.0249,-88.2908,470.401],[-9.8767,-88.1248,469.4971],[-8.4933,-88.0695,469.8292],[-8.2904,-87.2947,468.9253],[-7.4603,-87.3316,468.87],[-7.073,-86.6676,468.1322],[-5.6342,-87.6452,468.6671],[-5.1178,-87.3685,467.9846],[-3.7897,-88.1617,468.1137],[-2.7937,-88.0141,467.0808],[-0.0269,-89.5266,467.2837],[1.3012,-89.8955,466.6934],[2.6846,-90.7994,467.3021],[3.8098,-91.1314,466.7672],[4.5476,-91.5925,468.8147],[5.0825,-91.7585,468.2429],[5.1563,-91.6848,466.5828],[6.2815,-92.1459,466.5274],[6.5028,-92.2566,465.6421],[7.5542,-92.8284,465.1071],[8.5134,-93.2157,465.9925],[10.0259,-93.8429,466.1585],[10.4317,-94.0827,464.2955],[12.0733,-94.7098,464.6091],[12.2393,-94.8758,462.6355],[13.4383,-95.3738,462.1005],[15.043,-96.0194,462.6539],[15.5964,-96.3514,460.4589],[16.7585,-96.7941,460.9385],[17.2196,-97.0524,459.9978],[18.8981,-97.6611,460.7356],[19.9495,-98.196,459.2784],[23.2697,-98.9338,458.393],[23.2697,-99.1551,457.1941],[24.4686,-99.4872,456.53],[26.4607,-99.8929,456.1427],[27.8626,-99.8929,456.5854],[29.7256,-100.391,455.9951],[30.7954,-101.2579,453.1176],[31.5148,-101.4793,452.841],[30.1129,-101.8113,448.6723],[31.0536,-102.2355,447.7316],[31.0536,-102.5675,445.2599],[33.3224,-103.3791,444.2823],[34.134,-103.5636,442.6591],[36.1261,-104.0247,442.2533],[36.9193,-104.1169,441.0359],[39.6123,-104.7256,439.9292],[40.8112,-104.9839,437.6788],[42.0102,-105.2606,437.4022],[42.8587,-105.4266,435.2625],[44.1314,-105.5557,435.5945],[46.2895,-105.611,434.5062],[47.1011,-105.6479,432.4957],[46.0682,-105.611,430.9832],[44.8139,-105.5188,430.5774],[46.0682,-105.4819,429.028],[45.6808,-105.3528,427.0312],[46.4371,-105.279,424.6841],[45.607,-105.0392,421.7835],[44.8877,-104.5781,421.47],[45.1643,-104.6519,420.3079],[44.943,-104.3198,420.0866],[47.3778,-105.2237,416.047],[49.6835,-105.5372,411.2328],[51.1038,-105.9061,409.6096],[51.7862,-105.9615,407.5068],[53.1143,-106.0906,406.2341],[53.2619,-105.8877,405.2565],[55.7151,-105.6479,402.2499],[58.8508,-106.0537,399.7044],[59.1091,-105.6664,397.4725],[60.0498,-105.9246,396.6978],[60.4925,-105.9615,395.4251],[60.0313,-105.777,393.9863],[60.7691,-106.0353,391.5147],[60.142,-105.8324,389.7992],[61.8205,-105.7217,384.9297],[62.2079,-105.0945,380.8532],[63.3884,-105.0208,378.566],[62.9641,-104.6888,377.7175],[63.3515,-104.8179,375.7807],[62.337,-104.449,374.6002],[62.7612,-104.6703,372.6635],[62.1341,-104.3014,371.9257],[62.6875,-104.6703,371.1141],[61.7283,-104.3752,370.0258],[61.9681,-104.9839,368.089],[61.5992,-104.9839,366.0416],[62.6506,-105.777,363.865],[62.3186,-105.5557,362.6661],[63.0195,-105.8877,361.9467],[63.5913,-105.8324,358.9217],[64.4951,-106.0906,357.5751],[68.1657,-106.0537,356.3762],[69.1434,-106.1459,352.1891],[72.8693,-106.1459,351.3222],[69.8627,-106.1459,347.9282],[73.8654,-106.1459,346.6555],[70.5268,-106.1459,342.9295],[72.7218,-106.1459,339.6647],[77.0564,-106.1459,339.7938],[77.4438,-106.1459,335.5329],[75.9128,-106.1459,333.3379],[77.8496,-106.1459,331.3274],[76.1895,-106.1459,329.9255],[76.7982,-106.1459,327.7858],[75.009,-106.1459,327.2509],[75.009,-106.1459,324.9084],[72.1131,-106.1459,324.5948],[72.9247,-106.1459,322.4551],[69.6598,-106.2751,321.7358],[68.7929,-106.2751,317.4564],[65.5281,-106.4042,316.6264],[63.001,-106.5702,319.2272]],"expectedDistance":882.69,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-87107","objectiveId":"creature-87107","objectiveName":"Lord Pythas","checkpoints":[[63.001,-106.5702,319.2272],[60.7323,-106.6809,317.8622],[58.7955,-106.644,318.7845],[57.5596,-106.5886,316.0177],[55.3646,-106.4964,316.8108],[54.8851,-106.3673,313.4123],[53.7968,-106.2935,310.8437],[52.3396,-106.3673,313.1909],[51.6756,-106.2935,308.7779],[48.8719,-106.3304,311.992],[47.7283,-106.3304,307.708],[45.9206,-106.3673,306.9887],[41.9917,-106.3673,309.9261],[40.5899,-106.3673,304.517],[35.0009,-106.3673,303.5025],[30.8692,-106.3673,306.8411],[26.1472,-106.3673,304.3833],[24.4686,-106.3673,302.3174],[21.0009,-106.4042,303.1843],[20.134,-106.7731,301.3398],[17.939,-107.5847,299.3477],[15.4396,-107.5939,296.4978],[12.9403,-107.6031,293.648],[9.989,-107.2527,288.7047],[9.6016,-107.1235,287.5057],[10.2103,-106.8838,286.7864],[10.1366,-106.6809,285.5874],[9.0667,-106.7915,285.0525],[8.4027,-106.4595,282.507],[6.5397,-106.4964,280.9761],[5.599,-106.3673,279.0393],[5.267,-106.3304,276.5123],[2.9244,-106.3673,272.8416],[1.3381,-106.3673,268.0458],[-0.3404,-106.3673,265.7217],[-0.3404,-106.3673,261.3317],[-2.2034,-106.3673,259.3212],[-2.8674,-106.3673,256.6466],[-1.3365,-106.3673,254.7836],[-3.4761,-106.3673,251.8508],[-1.0782,-106.3673,249.6558],[-0.2113,-106.3673,247.9219],[-2.3325,-106.3304,244.5833],[-1.7238,-106.2935,240.9865],[0.8032,-106.2566,242.665],[0.9323,-106.1459,240.3224],[-1.5394,-106.1459,235.7849],[4.1971,-106.109,233.2394],[7.5358,-106.1459,227.3184],[1.6701,-106.1459,224.6623],[7.4804,-106.1459,221.5266],[2.0759,-106.109,218.2617],[3.8098,-106.0722,213.3922],[8.9376,-106.109,212.0456],[4.935,-106.109,206.9178],[8.7347,-106.1459,205.9771],[5.0087,-106.1459,204.7228],[5.0087,-106.1459,203.985],[8.7347,-106.109,202.1774],[4.7874,-106.109,200.5911],[8.5134,-106.109,198.9863],[4.7689,-106.109,194.3888],[9.3065,-106.109,192.6503],[9.8414,-106.109,188.3848],[5.5805,-106.0722,185.2122],[9.9337,-106.0722,184.8802],[9.9337,-106.0168,182.6852],[14.6003,-105.7217,181.3202],[14.9324,-105.4266,179.4388],[14.545,-105.7217,174.643],[15.7071,-105.3159,170.6957],[16.1129,-105.3159,166.3057],[15.8177,-105.8139,164.0185],[17.4409,-105.5188,162.1924],[17.9205,-105.7217,160.9196],[18.6768,-105.4635,160.6983],[18.5108,-105.7955,159.0751],[19.5437,-105.5926,156.8617],[19.6359,-105.8139,155.552],[20.5398,-105.5557,154.2609],[20.798,-105.8139,152.0105],[21.9047,-105.5926,149.7971],[22.4396,-105.8508,146.9011],[23.0852,-105.5926,146.5691],[23.2328,-105.7217,145.6837],[24.2842,-105.4635,144.4295],[25.188,-105.1868,144.1897],[27.4383,-105.8324,139.6706],[28.914,-105.6295,138.2318],[30.2236,-106.0353,135.8524],[33.0826,-105.3159,134.7272],[33.4884,-105.5188,133.934],[32.8982,-105.9799,132.7351],[34.6689,-105.9246,131.2041],[36.1077,-106.0353,128.8062],[39.1143,-105.445,127.6626],[39.3172,-105.6664,126.8326],[40.5714,-105.445,126.3345],[40.6268,-105.8139,124.3793],[42.0286,-105.5557,123.6046],[42.7849,-105.7586,122.1843],[43.5596,-105.5372,122.2028],[43.9838,-105.7955,120.9116],[45.1275,-105.5188,120.9485],[45.3857,-105.6295,118.4768],[46.5478,-105.3343,118.4952],[47.3225,-105.3343,116.5769],[49.1117,-105.2237,114.8431],[50.2553,-105.2974,110.7851],[53.4648,-105.1499,107.4465],[55.6782,-105.2237,103.1671],[56.8587,-105.113,102.374],[57.7441,-105.279,100.2159],[58.1499,-105.279,99.7363],[58.8877,-105.0761,99.8654],[60.8798,-105.0023,98.0024],[63.5175,-105.9799,94.0182],[65.8416,-105.777,92.9484],[66.3212,-106.0353,90.8272],[67.3357,-105.943,89.8496],[67.9997,-106.0353,87.8021],[69.8443,-105.7032,85.8654],[69.6598,-106.0537,83.947],[70.9141,-105.9246,82.2132],[70.9141,-106.0168,81.2725],[74.511,-106.0722,78.2474],[73.9392,-106.109,76.9378],[74.7323,-106.0722,76.9931],[76.4477,-106.109,75.9048],[76.8535,-106.1459,72.7138],[79.7126,-106.1459,70.7955],[81.5571,-106.109,72.3264],[82.4978,-106.109,70.2052],[83.3832,-106.0722,70.8139],[83.7705,-106.0722,70.1499],[83.3463,-106.109,69.3936],[86.4636,-106.0722,69.3014],[86.2422,-106.109,67.1802],[88.8615,-106.0722,67.6598],[90.9089,-106.0353,70.2237],[93.067,-106.0353,70.0577],[95.1882,-106.0353,69.1169],[98.1395,-106.0353,66.8482],[98.6191,-106.0353,67.9364],[100.3345,-106.0722,67.586],[101.4412,-106.109,65.7599],[103.544,-106.1828,66.5899],[104.6507,-106.2197,67.8258],[107.4175,-106.2935,67.2171],[108.9485,-106.2935,68.8218],[111.1988,-106.3673,68.5451],[112.2687,-106.4042,67.4384],[114.0394,-106.4411,68.0287],[115.1646,-106.2751,67.4384],[117.2489,-106.2935,68.0287],[118.1343,-106.1275,67.4569],[119.7391,-106.0353,67.4569],[121.0118,-106.1644,68.0656],[122.5059,-106.0537,67.918],[122.8932,-106.2935,68.7111],[126.3425,-106.1828,68.582],[127.025,-106.2935,69.0063],[128.1317,-106.1644,68.25],[129.718,-106.2382,68.25],[131.7101,-106.1644,67.4569],[133.7944,-106.2566,67.8073],[136.3952,-106.0168,66.221],[137.0777,-106.1459,66.6268],[138.2029,-106.0537,65.9812],[138.5902,-106.1275,66.4977],[140.5823,-105.9984,65.1881],[140.8406,-105.7955,63.6018],[144.6403,-105.5741,61.499],[143.4967,-105.4081,59.7467],[146.8722,-105.4081,58.6031],[147.0198,-105.3528,56.5741],[151.3544,-105.4266,54.3237],[152.1292,-105.5003,52.2579],[151.7234,-105.4266,49.0484],[152.1107,-105.5557,45.8389],[151.2991,-105.3897,42.6478],[151.7049,-105.4819,41.8547],[151.3729,-105.3343,38.2025],[151.8156,-105.4081,35.5463],[152.9223,-105.8139,35.4172],[154.0659,-106.3304,34.0707],[154.2873,-106.3488,32.632],[155.892,-106.5886,32.632],[157.9763,-106.6809,31.8204],[157.091,-106.6071,29.9205],[159.3044,-106.6809,29.1458],[160.1529,-106.644,28.0944],[159.3597,-106.644,26.8954],[161.8499,-106.6809,26.3974],[164.3769,-106.5886,26.7294],[166.7379,-106.4964,24.9956],[167.9737,-106.4042,24.8849],[173.9685,-106.1275,21.7861],[175.5917,-105.9984,22.0628],[176.2188,-106.0168,21.3987],[178.2847,-106.0168,21.4541],[181.0515,-105.9246,22.3948],[187.9132,-105.5926,22.4501],[192.9304,-105.3343,21.5832],[194.9409,-105.3897,22.2103],[198.1135,-105.5188,20.4765],[198.5009,-105.6664,18.6504],[199.6998,-105.611,18.263],[200.9172,-105.8508,17.0641],[200.8988,-106.1459,16.2709],[201.7104,-106.2751,15.8467],[202.2084,-106.0537,14.7215],[203.8685,-106.1459,14.3895],[205.4548,-105.8139,13.209],[207.3546,-106.2013,13.1352],[208.5167,-105.8693,11.8625],[209.7157,-106.1828,11.8625],[210.5088,-105.9246,11.0693],[212.524,-106.3857,11.0693],[213.3356,-106.109,10.2577],[215.7242,-106.478,9.8519],[217.329,-105.8139,7.8598],[219.5793,-106.109,7.4909],[221.0365,-106.0722,6.6977],[221.0365,-105.7217,5.9046],[224.412,-106.1644,4.7056],[225.2421,-105.5003,2.732],[226.9944,-105.7586,1.9019],[228.304,-105.4819,0.3341],[230.8126,-105.611,-0.8464],[231.4766,-105.9615,-0.496],[232.694,-105.6664,-1.6949],[234.4832,-105.9615,-1.9716],[234.7599,-106.2935,-1.5473],[235.719,-105.9799,-2.3774],[236.9549,-106.109,-2.4696],[238.5227,-105.8139,-3.3365],[240.1275,-106.2197,-2.9307],[241.7138,-105.943,-3.7423],[243.7059,-106.2382,-3.7423],[245.3106,-106.0168,-4.5355],[248.5201,-106.2382,-4.1297],[250.5307,-106.5333,-2.9307],[257.3186,-106.478,-1.7318],[260.2883,-106.5241,0.5923],[263.258,-106.5702,2.9164],[268.8285,-106.5702,0.5185],[273.6428,-106.5702,0.5001],[278.0512,-106.5517,3.7096],[280.0249,-106.5517,6.624],[283.179,-106.4226,4.2261],[283.6955,-106.5148,6.3657],[284.7284,-106.1828,7.2696],[285.208,-105.8693,9.2432],[286.7205,-105.5741,9.6675],[288.3437,-105.611,9.2617],[290.1329,-105.6848,10.2577],[290.7601,-105.5557,12.342],[292.3464,-105.5926,12.7294],[293.1395,-105.4635,14.3341],[294.4123,-105.5926,13.8361],[295.021,-105.2237,15.3855],[296.2384,-105.2606,14.9797],[297.1237,-105.2237,15.7913],[297.9169,-105.2421,17.8572],[299.6876,-105.611,18.8717],[300.4255,-105.5926,20.2182],[301.9564,-105.5741,20.1629],[303.0447,-105.2052,21.2143],[304.6495,-105.2606,20.8454],[307.1211,-104.9101,21.6385],[308.855,-104.1169,23.8704],[312.5994,-103.8587,24.2762],[313.5586,-103.1578,26.1207],[315.9196,-103.3791,25.3091],[316.6574,-102.6413,27.2275],[318.7417,-102.8258,26.1392],[319.7009,-101.7744,28.408],[321.2872,-101.3317,28.8691],[321.8959,-102.0511,26.6557],[323.2424,-101.3132,27.8915],[324.1093,-100.225,30.8428],[325.253,-100.0036,31.3777],[325.5296,-99.2474,37.7598],[325.4374,-98.6202,39.3645],[324.2385,-97.8455,40.4897],[324.4414,-97.1261,42.8876],[323.1317,-96.8495,43.0352],[322.0066,-96.3699,44.8797],[318.0408,-95.134,44.935],[317.9855,-95.1894,45.5253],[315.6614,-94.5438,45.4884],[311.4558,-93.9535,46.7611],[310.6442,-94.2118,52.0918],[308.2094,-93.9166,55.9654],[305.7377,-93.474,56.1129],[303.6165,-93.2157,54.9324],[301.1264,-92.8099,55.1907],[299.8905,-92.7177,53.6966],[298.8023,-92.5517,53.9733],[298.0645,-92.4963,51.5569],[295.0394,-92.3303,52.2947],[295.4452,-91.9614,46.9087],[291.6639,-91.4265,46.3922],[291.7377,-90.8916,40.0655],[287.3292,-90.4858,42.3342],[287.5321,-90.08,37.6676],[283.1237,-89.6742,39.9363],[284.2489,-89.4529,35.8415],[281.6296,-89.3237,38.3131],[282.4597,-89.2315,35.9706],[279.0104,-88.7335,34.2552],[276.3358,-88.5306,36.321],[276.2804,-88.4937,38.9218],[273.4952,-88.1248,38.184],[271.9458,-88.0141,36.3764],[269.8615,-87.9034,36.4502],[268.3858,-87.8666,37.5015],[262.7231,-87.1287,34.3843],[259.2,-86.7598,33.5911],[254.6809,-86.354,36.8928],[253.8877,-86.2618,38.0918],[252.7441,-85.8007,35.5648],[251.1947,-85.4318,35.3619],[250.254,-85.192,35.9706],[248.8522,-84.9522,35.325],[248.1143,-84.7493,36.1181],[246.8232,-84.4542,34.6978],[246.2145,-84.325,35.9706],[244.8311,-84.0299,36.4686],[243.7243,-83.9561,39.051],[241.1973,-83.495,38.6821],[238.3567,-83.2552,40.7848],[235.5715,-82.8863,40.3975],[232.6294,-82.7018,42.9798],[229.6874,-82.5174,45.5622],[226.9206,-82.2407,45.4515],[223.4344,-82.13,43.3303],[220.9443,-82.13,47.4252],[217.7717,-82.1116,47.7756],[217.4766,-82.1669,52.3685],[217.1814,-82.2223,56.9614],[214.0227,-82.2223,58.3079],[213.3402,-82.3514,64.1551],[211.5464,-82.3514,65.557],[207.8896,-82.2223,60.6136],[205.547,-82.2592,59.1749],[202.6695,-82.3883,63.4542],[204.0529,-82.4621,69.6519],[198.3164,-82.4621,68.7111],[201.3968,-82.4252,70.9799],[195.07,-82.2592,68.7111],[194.3691,-81.8903,70.6295],[192.3401,-81.7427,70.7032],[191.5469,-81.4107,71.8284],[191.5469,-81.2262,73.0274],[190.7169,-80.9864,73.3225],[190.9567,-80.7835,75.0748],[189.3519,-80.2671,76.2738],[189.6655,-80.1379,78.1367],[188.8908,-79.769,79.8522],[187.1016,-79.5292,79.2435],[187.9132,-79.5292,81.6414],[186.788,-79.437,85.1091],[183.3203,-79.271,84.113],[181.9185,-79.0866,88.7244],[179.5759,-78.8468,87.6914],[177.842,-78.6254,83.6519],[176.846,-78.2934,82.3976],[175.2966,-77.74,82.5083],[173.6918,-77.2789,81.4385],[170.9619,-76.6702,82.5083],[169.56,-76.2644,81.2171],[170.1503,-76.2275,79.5017],[169.0989,-75.8586,78.8377],[165.2438,-75.8402,80.8298],[161.0567,-75.8771,81.4569],[159.9869,-75.8771,79.5201],[164.2662,-75.8771,78.4503],[160.5218,-75.8955,77.7678],[163.6575,-75.8217,75.4437],[161.1858,-75.7479,72.2895],[163.1964,-75.7295,70.2974],[162.8828,-75.8586,68.748],[161.6839,-75.7848,67.1433],[161.813,-75.9508,65.9074],[158.0686,-75.6188,62.5873],[155.8551,-75.545,59.5622],[156.7405,-75.9139,58.3817],[156.4085,-76.3197,55.7071],[154.1397,-75.9508,54.8955],[152.5903,-76.0246,53.1801],[152.7194,-76.3935,50.9851],[150.672,-76.08,50.4502],[150.1002,-76.08,49.3619],[150.8195,-76.3197,48.5688],[149.0672,-75.9508,48.4766],[149.8235,-76.2091,46.7611],[147.0198,-75.711,45.5991],[147.444,-75.9139,43.4963],[145.7286,-75.6557,42.0944],[147.4625,-76.1906,40.6004],[147.3887,-76.4304,39.6597],[145.7286,-75.9693,39.549],[147.9789,-76.7255,34.661],[146.4295,-75.8955,29.9943],[148.2556,-76.1353,25.4383],[148.975,-76.412,25.2538],[150.1924,-76.4489,19.3697],[151.4098,-76.4858,13.4857],[149.8973,-75.3606,11.8071],[151.9078,-75.8217,10.682],[152.8116,-75.545,8.8559],[151.9816,-75.047,7.3987],[153.4757,-75.2499,5.8308],[152.701,-74.9179,4.263],[153.9921,-75.1577,2.7873],[156.4638,-75.9324,1.7913],[156.3163,-75.9324,-0.3853],[157.5152,-76.5595,-2.7647],[159.784,-77.3527,-5.1257],[158.9171,-77.5187,-8.1323],[160.116,-78.0536,-11.3418],[162.5139,-78.7176,-13.3339],[162.9197,-79.0866,-16.5434],[162.1081,-79.0866,-17.7424],[163.3071,-79.2526,-20.1403],[163.7129,-79.3632,-22.5382],[165.3176,-79.3632,-24.9361],[165.7234,-79.4924,-27.3386],[168.1029,-79.5477,-30.5389],[167.8815,-79.5661,-31.4611],[169.0436,-79.3448,-33.1028],[169.8367,-79.0866,-33.3057],[170.3716,-78.6623,-35.1687],[171.7919,-77.8692,-35.9618],[172.4191,-77.3342,-37.6404],[173.0831,-76.6887,-38.249],[172.5851,-76.7071,-40.979],[173.2122,-75.9508,-41.3479],[172.954,-75.6926,-44.336],[173.3413,-74.8257,-47.1213],[172.9171,-74.4199,-51.3453],[173.7103,-73.6452,-53.3558],[173.7103,-73.3869,-55.3479],[170.9066,-73.3869,-57.7458],[170.7221,-72.4831,-60.9184],[168.6193,-72.0773,-63.6483],[169.3018,-71.2842,-65.3453],[166.3505,-70.9521,-67.4112],[165.0963,-70.2881,-69.3664],[162.7537,-69.7163,-70.6576],[162.9381,-69.495,-71.1372],[161.8868,-68.8863,-71.9119],[162.3479,-68.96,-72.5206],[162.0897,-67.9086,-77.9435],[162.5877,-67.7426,-79.2163],[160.2636,-67.2262,-80.6734],[160.9829,-67.2815,-81.6142],[159.3044,-66.6913,-83.4034],[159.6918,-66.6913,-84.7868],[159.3044,-66.4699,-85.9673],[159.8762,-66.6728,-87.406],[158.9355,-66.4699,-89.269],[157.423,-65.7505,-89.7117],[156.8881,-65.6214,-90.3757],[156.7589,-66.101,-90.966],[154.6193,-65.6214,-91.2058],[154.6377,-66.0641,-91.962],[153.4388,-66.2117,-92.294],[152.2214,-65.9719,-91.8698],[149.0488,-66.9126,-93.4745],[147.1858,-67.0602,-93.7328],[145.0646,-67.798,-95.2084],[141.2648,-68.3698,-96.02],[139.863,-69.0338,-98.6761],[138.0738,-69.5318,-100.6314],[136.967,-69.4212,-99.2295],[136.8748,-69.6794,-101.1294],[135.8419,-69.7901,-101.1663],[135.0303,-70.159,-102.8448],[133.3149,-70.4541,-103.3428],[132.5033,-70.491,-102.5497],[130.382,-70.9521,-102.8817],[129.9947,-71.1919,-104.4864],[127.2463,-71.8929,-107.0319],[127.3754,-71.7822,-105.7038],[126.8036,-71.9851,-106.4601],[124.6824,-72.4831,-106.9766],[122.7456,-73.2763,-108.9133],[122.9485,-73.5529,-109.9832],[124.5164,-73.018,-110.0201],[122.6165,-73.9772,-111.1452],[123.133,-74.051,-112.4733],[122.5612,-74.549,-113.7091],[121.3622,-75.047,-115.3692],[120.3846,-75.4159,-115.4799],[119.4439,-75.711,-116.4206],[119.4624,-75.6373,-117.2138],[118.2634,-75.9508,-117.5458],[118.7983,-76.1537,-119.0767],[117.6178,-76.5226,-119.4456],[116.88,-76.8547,-120.5708],[117.2489,-77.1498,-122.2125],[116.1053,-77.5556,-122.9872],[116.9722,-77.6478,-124.389],[116.5111,-77.7585,-125.3113],[115.4044,-78.0905,-125.2744],[114.1501,-78.3856,-126.4364],[113.689,-78.0905,-127.6907],[112.1396,-78.3856,-128.3732],[110.9222,-78.1827,-130.1071],[108.8747,-78.5885,-131.1031],[107.8418,-78.3303,-132.339],[105.8312,-78.6623,-133.0768],[103.9129,-78.4594,-134.4602],[99.6889,-78.7914,-135.53],[99.1171,-78.5701,-136.4892],[97.8444,-78.7361,-136.6921],[96.627,-78.6254,-137.9464],[95.5571,-78.8468,-137.7435],[93.9524,-78.9021,-138.5366],[93.3437,-78.773,-139.9385],[91.7574,-78.773,-140.7316],[90.374,-78.9021,-140.5287],[88.3266,-78.6439,-141.7507],[84.7482,-78.9574,-142.5485],[84.287,-78.5516,-143.6783],[83.1434,-78.8099,-144.0656],[81.5755,-78.2196,-146.4082],[79.7679,-78.6439,-147.1829],[78.7165,-78.5885,-148.179],[77.5913,-79.1234,-148.0129],[72.9062,-79.105,-150.9458],[71.7073,-79.1788,-150.9273],[67.9075,-78.4041,-155.0037],[65.7125,-78.3856,-155.6862],[64.9747,-77.2973,-157.6414],[64.1815,-77.4265,-157.6414],[63.0564,-76.7809,-158.8404],[62.9273,-75.9139,-160.1685],[61.4147,-75.7479,-160.6849],[61.6914,-75.2315,-161.7363],[60.8245,-74.9363,-163.009],[59.3304,-75.2684,-162.6032],[58.3712,-75.047,-163.7469],[58.7402,-74.5674,-165.1672],[56.9325,-74.7334,-165.7574],[56.9141,-74.5859,-167.3622],[55.7151,-74.6228,-168.5611],[55.7151,-74.549,-169.7601],[54.5346,-74.6965,-170.1474],[54.0181,-74.7888,-171.8813],[50.5504,-75.1208,-175.0539],[50.2368,-75.8771,-178.5032],[49.7388,-75.545,-179.905],[46.142,-75.213,-180.772],[45.3857,-75.0101,-182.2107],[42.2869,-74.9548,-182.8194],[40.5346,-74.7703,-184.2212],[37.7309,-74.4383,-185.0144],[35.333,-74.0694,-187.357],[36.1446,-74.0879,-188.5743],[34.134,-73.7927,-190.1607],[33.7282,-73.6636,-191.3412],[32.5108,-73.4423,-192.5401],[31.3119,-73.516,-192.5586],[31.3303,-73.3131,-193.7575],[29.744,-73.5529,-193.7575],[30.1498,-73.184,-196.5612],[27.2539,-73.7005,-197.1883],[25.9811,-73.1287,-201.7444],[23.3988,-73.1287,-203.4782],[23.3988,-72.2249,-207.3886],[22.8639,-71.8744,-209.0118],[21.5543,-72.2618,-208.8458],[20.4106,-71.5424,-211.4835],[19.1379,-71.8191,-212.0553],[18.2341,-71.321,-214.7299],[16.242,-71.856,-215.5784],[15.5042,-72.022,-218.4928],[13.3645,-72.7413,-220.9091],[8.9315,-72.9504,-225.2745],[4.4984,-73.1594,-229.6399],[0.0654,-73.3685,-234.0053],[-1.2442,-73.9956,-233.784],[-3.7897,-74.9179,-234.5956],[-6.1876,-75.8217,-232.8617],[-7.8846,-76.0246,-234.0238],[-11.8918,-76.7993,-234.8169],[-13.4828,-76.5411,-238.1556],[-16.8444,-77.0391,-239.5021],[-17.158,-76.7993,-240.7564],[-18.5414,-77.0207,-241.1437],[-19.9617,-77.6478,-239.9448],[-20.3306,-77.5556,-240.9224],[-22.6547,-77.9983,-239.7419],[-24.6468,-78.1643,-240.9408],[-29.0368,-78.7361,-240.9408],[-31.859,-78.9021,-243.3572],[-34.6811,-79.1234,-243.3572],[-36.6732,-79.2526,-242.5456]],"expectedDistance":1557.72,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-05-creature-87131","objectiveId":"creature-87131","objectiveName":"Skum","checkpoints":[[-36.6732,-79.2526,-242.5456],[-34.6811,-79.1234,-243.3572],[-31.859,-78.9021,-243.3572],[-29.0368,-78.7361,-240.9408],[-24.6468,-78.1643,-240.9408],[-22.6547,-77.9983,-239.7419],[-20.3306,-77.5556,-240.9224],[-19.9617,-77.6478,-239.9448],[-18.5414,-77.0207,-241.1437],[-17.158,-76.7993,-240.7564],[-16.8444,-77.0391,-239.5021],[-13.4828,-76.5411,-238.1556],[-11.8918,-76.7993,-234.8169],[-7.8846,-76.0246,-234.0238],[-6.1876,-75.8217,-232.8617],[-3.7897,-74.9179,-234.5956],[-1.2442,-73.9956,-233.784],[0.2867,-73.2947,-234.2267],[1.7255,-72.9258,-233.5442],[2.5002,-72.686,-234.3927],[7.3697,-72.1142,-232.8248],[12.0549,-71.3579,-232.7511],[17.0536,-70.5648,-230.8327],[17.4778,-70.3619,-231.8472],[18.6768,-70.1959,-232.2346],[21.7387,-69.2367,-230.925],[22.5319,-69.2736,-231.3492],[23.7308,-68.9047,-230.9619],[25.188,-68.8125,-231.2754],[27.8257,-68.0009,-230.7774],[29.1906,-68.0009,-231.257],[30.9245,-67.3922,-230.9434],[34.3185,-67.6135,-232.2346],[36.1446,-67.4844,-231.9395],[40.1288,-67.5028,-232.5482],[42.8587,-67.632,-231.9579],[42.9878,-66.9495,-230.8881],[44.9983,-66.8942,-229.6891],[47.636,-67.5766,-229.1911],[49.831,-67.3737,-227.9184],[49.6281,-67.1155,-227.5863],[50.8086,-66.6913,-226.1107],[52.4134,-67.2815,-225.2622],[55.5122,-68.2038,-230.3716],[61.5992,-68.7756,-232.8986],[62.005,-68.4251,-228.0844],[66.6163,-68.96,-232.0686],[64.9378,-68.5911,-228.3242],[64.9378,-68.4436,-226.0738],[66.5426,-68.5542,-226.4796],[67.2066,-68.0193,-220.6878],[71.2646,-68.6465,-225.9816],[73.0722,-68.7756,-226.4981],[74.345,-68.2776,-221.4994],[76.3739,-68.7756,-225.4467],[76.3739,-68.2407,-220.7062],[77.4622,-68.7387,-224.6535],[77.7758,-68.6834,-223.6206],[77.0011,-68.0839,-219.9131],[76.2264,-67.4844,-216.2055],[77.6836,-67.1893,-213.1067],[78.6981,-67.4475,-212.4242],[79.0116,-67.0417,-210.7457],[80.6164,-67.1893,-209.141],[80.9484,-66.765,-207.1489],[82.4609,-67.1339,-206.1528],[83.4016,-67.1893,-204.5849],[85.0617,-67.7611,-204.9907],[88.2712,-68.3513,-204.5849],[91.1671,-68.7387,-201.689],[94.6349,-69.1814,-201.2463],[96.6085,-68.8125,-198.4611],[98.5269,-68.1484,-198.9591],[98.8589,-68.1484,-197.9631],[100.2607,-67.5213,-198.4057],[100.851,-67.5213,-197.465],[102.3819,-66.6913,-198.664],[103.212,-66.4146,-198.6271],[103.212,-66.8019,-197.4281],[104.5585,-66.0826,-198.4611],[104.7245,-66.4146,-197.6679],[105.6652,-65.9903,-198.2582],[106.0526,-66.6913,-196.967],[108.1185,-66.765,-197.2437],[107.6942,-67.3368,-196.4505],[108.9669,-67.2999,-196.8563],[109.4834,-67.7242,-196.1001],[110.7746,-67.5582,-196.1554],[111.4571,-67.5951,-195.5836],[112.9511,-67.1339,-195.9156],[114.1317,-67.1708,-195.3438],[115.4413,-67.0048,-195.5098],[117.1198,-66.599,-196.6165],[120.6244,-67.1708,-196.5428],[121.3622,-66.5068,-197.4097],[122.5981,-66.8019,-197.2252],[123.5019,-66.6359,-197.9631],[123.0223,-66.0457,-198.5902],[123.3543,-66.0088,-198.9222],[124.8484,-66.5437,-199.4756],[125.5678,-65.9719,-201.0803],[127.4308,-66.599,-201.8735],[128.2424,-66.6913,-202.6851],[128.5191,-66.1748,-204.6956],[129.7365,-66.8019,-205.3597],[130.1238,-66.8019,-206.1528],[134.9934,-67.1708,-207.4624],[137.3175,-66.8757,-208.7352],[137.6311,-66.2117,-209.7681],[139.0145,-66.4515,-209.9341],[139.3281,-66.1932,-210.8933],[140.5086,-66.931,-210.6719],[141.3017,-66.3961,-211.8709],[141.2095,-65.8059,-212.8669],[141.2648,-65.769,-214.859],[142.3162,-66.7281,-216.6667],[142.2609,-66.9679,-217.5152],[142.9249,-67.7426,-218.585],[144.6034,-68.6649,-219.5626],[148.809,-70.8415,-223.5099],[148.9565,-70.8968,-224.5244],[149.8604,-70.9152,-225.4098],[149.4177,-70.7677,-226.2767],[150.6904,-70.823,-226.701],[151.0224,-70.8784,-228.2873],[152.3874,-71.0628,-228.0844],[153.7155,-71.0997,-229.0251],[153.7155,-70.989,-230.6483],[156.058,-71.321,-231.3492],[157.5152,-71.5239,-229.6891],[159.12,-71.7822,-229.6891],[158.8617,-71.7268,-231.3676],[161.0198,-71.8191,-230.5561],[161.3887,-71.7453,-231.2939],[161.0383,-71.856,-232.2899],[163.2886,-71.8006,-229.6338],[163.676,-71.5977,-230.1503],[164.506,-71.5977,-229.2095],[165.5943,-71.4317,-229.3018],[166.3137,-71.2288,-230.1134],[167.6233,-71.0628,-229.892],[169.7076,-70.4172,-232.1424],[169.9105,-70.4541,-231.4414],[171.7182,-69.993,-232.5482],[172.124,-69.9561,-233.3598],[173.3229,-69.8454,-233.7471],[173.452,-69.3843,-235.4072],[175.4441,-69.4212,-235.8683],[176.0344,-69.126,-236.9382],[177.3071,-69.5134,-236.2741],[178.2663,-68.5358,-238.2109],[179.2992,-68.8309,-238.2662],[179.9632,-68.0193,-239.8525],[180.9593,-68.2222,-240.3321],[181.1069,-67.7611,-241.4204],[181.8631,-67.7242,-242.1766],[183.7814,-68.6649,-242.2873],[183.7077,-68.13,-244.2979],[184.8882,-68.7018,-244.7774],[184.8882,-68.0747,-246.9171],[186.1056,-67.7057,-251.0858],[187.3045,-68.4436,-251.344],[188.0977,-68.3698,-252.9303],[188.0977,-67.798,-254.5351],[189.684,-67.8533,-256.4257],[190.9014,-67.1893,-259.8981],[191.3072,-66.0272,-264.5647],[190.9198,-65.5661,-265.3579],[191.3072,-65.1603,-266.9626],[192.3954,-65.3632,-267.8111],[192.0634,-64.4225,-269.545],[192.8935,-64.6623,-270.043],[195.6049,-65.2341,-269.9877],[196.8777,-64.9205,-272.6254],[198.0766,-64.7914,-273.8428],[197.7077,-64.5885,-276.1669],[200.0687,-64.8283,-277.9745],[200.7143,-64.1642,-280.7782],[201.8579,-64.57,-280.7598],[202.688,-64.6254,-282.1616],[204.3665,-65.4554,-282.2354],[204.6985,-65.5845,-283.6742],[205.5101,-65.8981,-284.0615],[206.7275,-66.0272,-283.7479],[207.742,-66.2301,-284.5595],[207.4469,-66.2301,-285.6109],[209.7341,-66.8019,-287.3817],[214.1472,-67.2262,-286.9759],[218.5233,-67.798,-287.3632],[222.6228,-68.0009,-286.4225],[224.3382,-68.7479,-290.5635],[226.0537,-69.495,-294.7045],[230.7941,-70.2512,-300.3119],[231.3659,-70.5094,-303.3001],[234.7414,-70.1221,-304.2039],[234.5201,-70.325,-307.7454],[237.8771,-69.9007,-309.2026],[240.8469,-69.4027,-308.9997],[242.4516,-69.0892,-311.0102],[244.7019,-68.6465,-310.1433],[245.7164,-68.0378,-310.9549],[247.727,-68.1484,-310.5675],[249.5346,-67.4475,-311.8218],[251.3423,-67.7611,-311.416],[254.3489,-67.5766,-313.1683],[257.3001,-68.4989,-312.8548],[258.4253,-68.3329,-313.9061],[258.2962,-68.0931,-314.5702],[258.9787,-68.2222,-315.1051],[259.6427,-68.462,-314.9022],[260.9708,-68.5727,-316.5069],[266.8917,-68.6834,-312.0432],[266.4859,-68.6649,-314.9206],[270.0828,-68.8678,-314.8284],[271.0973,-68.8863,-311.7665],[273.7165,-68.96,-311.5082],[277.1105,-69.1998,-313.3712],[280.6704,-69.1998,-311.1024],[283.7324,-69.1629,-314.1644],[287.3292,-68.794,-313.7586]],"expectedDistance":516.38,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-06-encounter-43005","objectiveId":"encounter-43005","objectiveName":"Lord Serpentis","checkpoints":[[287.3292,-68.794,-313.7586],[290.1514,-68.296,-310.6967],[285.5031,-68.4989,-309.2395],[284.3042,-68.1853,-307.2474],[280.2923,-68.4712,-306.5741],[276.2804,-68.7571,-305.9009],[276.1329,-68.296,-303.7612],[274.7679,-68.2222,-303.0049],[275.6902,-67.3553,-299.2052],[274.897,-67.1155,-297.4713],[273.569,-67.4844,-298.744],[273.6612,-67.0233,-296.4937],[273.1816,-67.097,-296.4937],[271.8536,-66.6544,-294.0774],[267.0946,-66.9679,-292.6755],[264.4201,-66.8573,-290.0932],[260.8232,-66.5252,-284.4858],[258.1486,-66.3961,-285.1498],[255.6769,-65.8612,-282.3092],[252.6704,-65.603,-282.2723],[252.1354,-65.3263,-280.8151],[251.0287,-65.2525,-281.0549],[250.0511,-64.5516,-280.0958],[248.6677,-64.0536,-280.1511],[248.3357,-64.1827,-280.5753],[246.9338,-63.7215,-280.188],[246.3989,-64.8283,-282.4199],[245.864,-64.4409,-281.35],[245.3475,-64.9758,-282.4199],[244.5175,-65.0312,-282.2723],[244.0564,-64.3302,-280.4278],[242.9865,-64.7914,-281.0918],[240.7546,-65.0681,-279.4133],[240.2935,-64.9943,-278.1221],[238.1907,-65.5845,-277.4765],[238.1354,-65.5476,-276.5911],[239.0392,-65.3447,-276.1669],[238.947,-65.3447,-274.4699],[236.4384,-65.6583,-273.2156],[234.8337,-65.6952,-270.8915],[229.5029,-65.9719,-269.7479],[230.4805,-65.769,-268.2907],[227.3817,-65.769,-267.3684],[229.6505,-65.3632,-264.7123],[227.5293,-65.1603,-261.5766],[223.8955,-65.2156,-261.1708],[225.2974,-64.7545,-257.3664],[221.221,-64.8098,-256.4764],[220.2802,-64.7176,-254.4059],[216.3514,-64.8098,-254.6088],[215.6136,-64.7176,-249.8315],[215.0049,-64.7914,-249.8868],[212.5655,-64.9205,-247.5996],[210.8639,-64.9758,-243.5969],[208.4614,-65.1418,-244.4454],[207.4838,-65.2156,-245.4415],[206.7644,-65.1972,-243.7445],[205.049,-65.1972,-244.3348],[202.3744,-65.2525,-242.1398],[200.2901,-66.0272,-241.8077],[198.0951,-67.4291,-242.6193],[195.9554,-69.0523,-242.1582],[189.9422,-69.993,-240.9777],[190.4771,-70.2328,-238.506],[189.518,-70.4726,-236.2741],[190.2004,-70.6939,-233.618],[188.0792,-70.5832,-233.0831],[187.6734,-70.8046,-231.091],[185.4415,-70.9521,-228.7484],[186.3822,-71.3579,-226.4796],[185.7182,-71.4871,-224.3584],[184.7959,-71.4871,-224.1002],[184.8144,-71.5239,-223.1226],[183.7999,-71.3579,-223.1041],[182.3243,-71.2657,-220.4111],[179.9632,-70.7308,-221.3149],[177.8236,-70.491,-219.7471],[176.9013,-70.6755,-218.0132],[175.7024,-70.9706,-218.0132],[175.3888,-71.1181,-217.3492],[174.2452,-71.2657,-217.0725],[173.7103,-71.0628,-214.5455],[171.4415,-70.989,-213.2727],[171.3861,-70.657,-211.5757],[170.6114,-70.325,-211.0039],[169.5232,-70.2512,-211.0408],[168.5087,-70.6201,-211.7049],[168.1213,-70.2143,-211.0408],[167.2728,-70.4172,-211.2806],[167.2359,-70.1036,-210.8195],[166.6272,-70.2143,-210.7826],[165.5574,-69.9192,-209.3439],[164.9487,-70.0483,-209.6205],[164.4876,-69.8823,-208.7352],[162.975,-69.7163,-208.4216],[162.2003,-69.3289,-207.2226],[160.8538,-69.2183,-206.8168],[160.8907,-69.2921,-205.7655],[160.0791,-69.3289,-205.4703],[160.2267,-69.5318,-203.9209],[160.7063,-69.495,-203.8102],[160.448,-69.5687,-202.9802],[161.315,-69.5318,-201.6706],[161.1674,-69.6056,-200.3056],[162.4032,-69.6056,-198.1475],[161.7392,-69.5318,-197.1146],[162.0343,-69.5318,-193.6099],[160.1345,-69.3289,-192.5217],[161.7208,-69.4396,-189.0355],[159.5073,-69.2736,-189.0355],[158.9171,-69.2736,-186.5638],[160.5218,-69.4765,-185.162],[158.4559,-69.3105,-183.8892],[160.3742,-69.4765,-182.7456],[159.9869,-69.3289,-182.1554],[157.8657,-69.0892,-182.2291],[158.7326,-68.6834,-180.4215],[156.9803,-68.0009,-177.6178],[157.3123,-66.8942,-174.1132],[156.5929,-66.9126,-174.0209],[156.5192,-66.4699,-173.154],[155.2649,-66.8019,-173.2093],[154.4533,-66.8019,-172.5269],[155.4493,-66.4515,-171.8813],[154.2319,-66.7835,-171.4386],[154.2319,-66.6544,-170.1105],[152.8301,-67.0417,-169.5572],[152.5165,-67.0417,-167.7311],[152.9223,-66.9126,-166.5321],[151.6127,-67.0233,-163.7653],[151.9816,-66.1563,-160.9063],[150.6904,-66.4884,-160.6111],[150.8011,-66.0826,-159.4675],[148.5323,-66.9495,-160.8694],[146.4664,-67.3553,-159.8549],[144.4559,-67.8164,-159.8549],[142.8511,-68.1669,-158.6375],[141.7075,-68.0562,-159.3384],[139.7892,-67.798,-158.619],[138.1844,-67.5951,-159.8364],[135.7312,-67.3922,-159.8733],[134.274,-67.1893,-158.3239],[131.6363,-66.7466,-159.3384],[131.1567,-66.5437,-158.6006],[130.3267,-66.0826,-158.5821],[130.4374,-66.2117,-157.9181],[129.8471,-65.8981,-157.2541],[127.7259,-65.2894,-156.9405],[127.2648,-65.1418,-155.7969],[124.8669,-65.1049,-155.594],[120.9196,-65.3263,-156.7376],[119.5177,-65.4001,-156.2027],[118.5217,-65.6768,-157.6599],[117.8023,-65.8428,-157.4939],[116.8247,-65.7505,-155.9629],[115.4597,-66.2855,-156.6823],[115.0724,-66.1194,-155.6862],[114.4083,-66.5252,-156.4056],[114.0763,-65.935,-154.063],[112.7114,-66.5068,-152.9748],[113.4123,-66.6359,-150.9826],[110.295,-67.2815,-149.8759],[109.9999,-67.5397,-147.1091],[108.5611,-67.632,-145.3015],[106.2186,-67.6135,-144.8957],[106.0526,-67.5213,-142.8067],[104.8721,-67.2999,-141.6032],[103.544,-67.1708,-141.677],[102.3635,-66.7281,-140.6025],[101.9761,-66.599,-138.8686],[100.8141,-66.267,-138.4813],[100.8141,-66.5621,-136.7105],[98.4715,-65.8981,-137.9464],[96.3872,-66.2855,-135.198],[95.594,-66.1932,-135.2165],[94.6533,-66.3961,-134.0175],[93.1224,-65.6583,-135.696],[91.038,-66.1748,-133.6855],[89.3226,-65.603,-134.7],[87.8285,-65.8797,-133.501],[86.1684,-65.3816,-134.2388],[85.8733,-66.0457,-130.7342],[84.7297,-65.5476,-132.4128],[83.9181,-65.7136,-131.2138],[84.1948,-66.1748,-129.2217],[82.9221,-66.0088,-128.9635],[83.955,-66.3223,-127.7092],[84.121,-66.2855,-126.6209],[82.9589,-66.2855,-125.0346],[80.7824,-66.5621,-124.1123],[80.1921,-66.5437,-121.8435],[78.3292,-66.7281,-121.4746],[75.3226,-66.8388,-118.6156],[72.1131,-67.3553,-117.97],[70.6559,-67.4844,-116.8448],[68.8667,-67.8533,-117.3613],[67.0775,-68.0562,-116.7342],[64.5505,-68.5911,-117.4535],[61.5992,-69.126,-117.1584],[60.8614,-69.0154,-116.2361],[59.644,-69.1076,-116.6419],[57.6334,-69.1076,-115.8119],[56.9141,-68.6096,-113.8014],[55.0511,-68.6465,-113.082],[55.4015,-68.1853,-111.7724],[54.1288,-68.5911,-111.3666],[54.0735,-68.0009,-109.5958],[54.6822,-67.3368,-108.6735],[52.7546,-67.2999,-104.0622],[50.8271,-67.2631,-99.4508],[48.4476,-68.4067,-98.9344],[47.7283,-67.466,-97.0714],[45.5886,-67.7242,-95.7987],[44.5372,-68.5358,-96.1307],[43.3751,-68.0009,-94.4153],[41.8626,-68.296,-93.825],[42.25,-66.9495,-92.2387],[41.1801,-67.2446,-91.7222],[40.8297,-67.0417,-90.8737],[41.9733,-66.3223,-90.7262],[40.7006,-66.3961,-88.8632],[40.9772,-65.5292,-85.8935],[41.7151,-65.1603,-84.3625],[39.6492,-65.3447,-81.0239],[39.4278,-65.6583,-78.9211],[41.2724,-65.4923,-76.2097],[42.6373,-65.0865,-76.6339],[44.1683,-64.9758,-73.24],[45.3857,-64.5147,-73.6642],[46.1973,-64.4225,-72.2808],[47.138,-64.0167,-72.0779],[48.337,-64.0536,-69.7722],[49.7388,-63.6293,-68.5733],[50.2922,-63.6662,-67.4297],[51.6202,-62.9099,-66.8763],[51.6018,-63.1682,-66.0647],[52.2474,-63.0022,-65.6036],[52.9114,-63.3895,-63.7406],[56.7665,-62.6148,-60.1622],[59.1091,-61.5634,-60.0331],[59.7731,-61.6926,-58.8341],[62.0603,-61.3236,-58.8157],[64.9562,-60.5858,-59.6457],[67.0221,-60.7149,-58.5759],[70.287,-59.8849,-59.7748],[70.8588,-60.2907,-59.4059],[71.1355,-60.0325,-59.9962],[71.8548,-60.5305,-60.0146],[73.1829,-60.7887,-60.8262],[75.507,-62.0983,-60.8262],[77.0011,-62.8177,-59.8486],[78.9194,-62.9837,-59.3506],[79.7863,-63.2235,-60.6049],[82.6823,-63.5555,-58.9632],[81.5571,-63.6109,-61.1582],[82.2949,-63.6847,-60.6971],[81.4649,-63.8322,-62.763],[82.5163,-64.2749,-63.3532],[82.59,-63.906,-65.0133],[83.7705,-63.906,-66.2123],[83.9919,-63.4449,-67.2083],[85.9287,-64.4962,-67.9461],[87.2567,-65.1049,-69.2189],[91.0565,-67.2262,-70.2149],[92.6243,-67.8718,-71.2294],[94.8931,-68.7387,-71.1741],[96.8852,-69.2736,-71.9857],[97.1988,-69.495,-72.8157],[99.7627,-69.7901,-73.6089],[101.1461,-70.5279,-75.9145],[103.8576,-70.9337,-77.1504],[103.8945,-71.5608,-78.6444],[104.8536,-71.5239,-79.0318],[104.4478,-71.8191,-79.8434],[105.6283,-71.6531,-79.6774],[105.8866,-72.686,-82.7578],[108.4136,-72.2064,-82.0568],[110.627,-72.6491,-85.1926],[114.6112,-71.3948,-84.1227],[117.6916,-71.2657,-86.8342],[120.7167,-70.5279,-87.904],[119.9235,-70.9337,-89.103],[123.6218,-69.8177,-89.9791],[127.3201,-68.7018,-90.8553],[127.4861,-68.794,-92.5892],[128.6666,-67.9824,-92.6445],[129.1831,-68.1853,-93.7881],[130.1791,-67.6873,-93.6405],[130.1791,-68.5542,-95.1346],[131.0461,-68.0562,-94.7104],[130.8985,-68.794,-96.0938],[131.8392,-68.296,-95.9278],[132.1712,-68.794,-96.9792],[133.3149,-68.628,-96.9423],[133.8498,-68.0931,-96.4258],[135.4545,-68.4989,-96.7578],[136.137,-69.0892,-97.6063],[136.7457,-69.126,-97.6063],[136.967,-69.4212,-99.2295],[138.0738,-69.5318,-100.6314],[139.863,-69.0338,-98.6761],[141.2648,-68.3698,-96.02],[145.0646,-67.798,-95.2084],[147.1858,-67.0602,-93.7328],[149.0488,-66.9126,-93.4745],[152.2214,-65.9719,-91.8698],[155.3202,-66.3961,-92.1834],[155.6153,-65.6583,-90.9844],[156.7589,-66.101,-90.966],[156.8881,-65.6214,-90.3757],[157.423,-65.7505,-89.7117],[158.9355,-66.4699,-89.269],[159.8762,-66.6728,-87.406],[159.3044,-66.4699,-85.9673],[159.6918,-66.6913,-84.7868],[159.3044,-66.6913,-83.4034],[160.9829,-67.2815,-81.6142],[160.2636,-67.2262,-80.6734],[162.5877,-67.7426,-79.2163],[162.0897,-67.9086,-77.9435],[162.3479,-68.96,-72.5206],[161.8868,-68.8863,-71.9119],[162.9381,-69.495,-71.1372],[162.7537,-69.7163,-70.6576],[165.0963,-70.2881,-69.3664],[166.3505,-70.9521,-67.4112],[169.3018,-71.2842,-65.3453],[168.6193,-72.0773,-63.6483],[170.7221,-72.4831,-60.9184],[170.9066,-73.3869,-57.7458],[173.7103,-73.3869,-55.3479],[173.7103,-73.6452,-53.3558],[172.9171,-74.4199,-51.3453],[173.3413,-74.8257,-47.1213],[172.954,-75.6926,-44.336],[173.2122,-75.9508,-41.3479],[172.5851,-76.7071,-40.979],[172.5666,-76.91,-39.7616],[171.9026,-77.5556,-39.1529],[172.4191,-77.3342,-37.6404],[171.7919,-77.8692,-35.9618],[170.3716,-78.6623,-35.1687],[169.8367,-79.0866,-33.3057],[169.0436,-79.3448,-33.1028],[167.8815,-79.5661,-31.4611],[168.1029,-79.5477,-30.5389],[167.3097,-79.4924,-28.9295],[165.7234,-79.4924,-27.3386],[165.3176,-79.3632,-24.9361],[163.7129,-79.3632,-22.5382],[163.3071,-79.2526,-20.1403],[164.1187,-79.2526,-18.9413],[162.9197,-79.0866,-16.5434],[162.5139,-78.7176,-13.3339],[160.116,-78.0536,-11.3418],[158.9171,-77.5187,-8.1323],[159.784,-77.3527,-5.1257],[157.5152,-76.5595,-2.7647],[156.3163,-75.9324,-0.3853],[156.4638,-75.9324,1.7913],[153.9921,-75.1577,2.7873],[152.701,-74.9179,4.263],[153.4757,-75.2499,5.8308],[151.9816,-75.047,7.3987],[152.8116,-75.545,8.8559],[151.9078,-75.8217,10.682],[149.8973,-75.3606,11.8071],[151.4098,-76.4858,13.4857],[150.0633,-76.2829,18.3737],[148.975,-76.412,25.2538],[148.2556,-76.1353,25.4383],[146.4295,-75.8955,29.9943],[147.9789,-76.7255,34.661],[145.7286,-75.9693,39.549],[147.3887,-76.4304,39.6597],[147.4625,-76.1906,40.6004],[149.1779,-76.4489,42.0022],[147.444,-75.9139,43.4963],[147.0198,-75.711,45.5991],[149.8235,-76.2091,46.7611],[149.0672,-75.9508,48.4766],[150.8195,-76.3197,48.5688],[150.1002,-76.08,49.3619],[150.672,-76.08,50.4502],[152.7194,-76.3935,50.9851],[152.5903,-76.0246,53.1801],[154.1397,-75.9508,54.8955],[156.4085,-76.3197,55.7071],[156.7405,-75.9139,58.3817],[155.8551,-75.545,59.5622],[158.0686,-75.6188,62.5873],[161.813,-75.9508,65.9074],[161.6839,-75.7848,67.1433],[162.8828,-75.8586,68.748],[163.1964,-75.7295,70.2974],[161.1858,-75.7479,72.2895],[163.6575,-75.8217,75.4437],[160.5218,-75.8955,77.7678],[164.2662,-75.8771,78.4503],[159.9869,-75.8771,79.5201],[161.0567,-75.8771,81.4569],[165.2438,-75.8402,80.8298],[169.0989,-75.8586,78.8377],[170.1503,-76.2275,79.5017],[169.56,-76.2644,81.2171],[170.9619,-76.6702,82.5083],[173.6918,-77.2789,81.4385],[176.2926,-78.0721,83.7626],[177.842,-78.6254,83.6519],[179.5759,-78.8468,87.6914],[181.9185,-79.0866,88.7244],[183.3203,-79.271,84.113],[186.788,-79.437,85.1091],[187.9132,-79.5292,81.6414],[187.1016,-79.5292,79.2435],[188.8908,-79.769,79.8522],[189.6655,-80.1379,78.1367],[189.3519,-80.2671,76.2738],[190.9567,-80.7835,75.0748],[190.7169,-80.9864,73.3225],[191.5469,-81.2262,73.0274],[191.5469,-81.4107,71.8284],[192.3401,-81.7427,70.7032],[194.3691,-81.8903,70.6295],[195.07,-82.2592,68.7111],[201.3968,-82.4252,70.9799],[198.3164,-82.4621,68.7111],[204.0529,-82.4621,69.6519],[202.6695,-82.3883,63.4542],[205.547,-82.2592,59.1749],[207.8896,-82.2223,60.6136],[211.5464,-82.3514,65.557],[213.3402,-82.3514,64.1551],[214.0227,-82.2223,58.3079],[217.1814,-82.2223,56.9614],[217.4766,-82.1669,52.3685],[217.7717,-82.1116,47.7756],[220.9443,-82.13,47.4252],[223.4344,-82.13,43.3303],[226.9206,-82.2407,45.4515],[229.6874,-82.5174,45.5622],[232.6294,-82.7018,42.9798],[235.5715,-82.8863,40.3975],[238.3567,-83.2552,40.7848],[241.1973,-83.495,38.6821],[243.7243,-83.9561,39.051],[244.8311,-84.0299,36.4686],[246.2145,-84.325,35.9706],[246.8232,-84.4542,34.6978],[248.1143,-84.7493,36.1181],[248.8522,-84.9522,35.325],[250.254,-85.192,35.9706],[251.1947,-85.4318,35.3619],[252.7441,-85.8007,35.5648],[253.8877,-86.2618,38.0918],[254.6809,-86.354,36.8928],[259.2,-86.7598,33.5911],[262.7231,-87.1287,34.3843],[268.3858,-87.8666,37.5015],[269.8615,-87.9034,36.4502],[271.9458,-88.0141,36.3764],[273.4952,-88.1248,38.184],[276.2804,-88.4937,38.9218],[276.3358,-88.5306,36.321],[279.0104,-88.7335,34.2552],[282.4597,-89.2315,35.9706],[281.6296,-89.3237,38.3131],[284.2489,-89.4529,35.8415],[283.1237,-89.6742,39.9363],[287.5321,-90.08,37.6676],[287.3292,-90.4858,42.3342],[291.7377,-90.8916,40.0655],[291.6639,-91.4265,46.3922],[295.4452,-91.9614,46.9087],[295.0394,-92.3303,52.2947],[298.0645,-92.4963,51.5569],[298.8023,-92.5517,53.9733],[299.8905,-92.7177,53.6966],[301.1264,-92.8099,55.1907],[303.6165,-93.2157,54.9324],[305.7377,-93.474,56.1129],[308.2094,-93.9166,55.9654],[310.6442,-94.2118,52.0918],[311.4558,-93.9535,46.7611],[315.6614,-94.5438,45.4884],[317.9855,-95.1894,45.5253],[318.0408,-95.134,44.935],[322.0066,-96.3699,44.8797],[323.1317,-96.8495,43.0352],[324.4414,-97.1261,42.8876],[324.2385,-97.8455,40.4897],[325.4374,-98.6202,39.3645],[325.5296,-99.2474,37.7598],[325.253,-100.0036,31.3777],[324.1093,-100.225,30.8428],[323.2424,-101.3132,27.8915],[321.8959,-102.0511,26.6557],[321.2872,-101.3317,28.8691],[319.7009,-101.7744,28.408],[318.7417,-102.8258,26.1392],[316.6574,-102.6413,27.2275],[315.9196,-103.3791,25.3091],[313.5586,-103.1578,26.1207],[312.5994,-103.8587,24.2762],[308.855,-104.1169,23.8704],[307.1211,-104.9101,21.6385],[304.6495,-105.2606,20.8454],[303.0447,-105.2052,21.2143],[301.9564,-105.5741,20.1629],[300.4255,-105.5926,20.2182],[299.6876,-105.611,18.8717],[297.9169,-105.2421,17.8572],[297.1237,-105.2237,15.7913],[296.2384,-105.2606,14.9797],[295.021,-105.2237,15.3855],[294.4123,-105.5926,13.8361],[293.1395,-105.4635,14.3341],[292.3464,-105.5926,12.7294],[290.7601,-105.5557,12.342],[290.1329,-105.6848,10.2577],[288.3437,-105.611,9.2617],[286.7205,-105.5741,9.6675],[285.208,-105.8693,9.2432],[284.7284,-106.1828,7.2696],[283.6955,-106.5148,6.3657],[283.179,-106.4226,4.2261],[280.0249,-106.5517,6.624],[278.0512,-106.5517,3.7096],[273.6428,-106.5702,0.5001],[268.8285,-106.5702,0.5185],[263.258,-106.5702,2.9164],[260.2883,-106.5241,0.5923],[257.3186,-106.478,-1.7318],[250.5307,-106.5333,-2.9307],[248.5201,-106.2382,-4.1297],[245.3106,-106.0168,-4.5355],[243.7059,-106.2382,-3.7423],[241.7138,-105.943,-3.7423],[240.1275,-106.2197,-2.9307],[238.5227,-105.8139,-3.3365],[236.9549,-106.109,-2.4696],[235.719,-105.9799,-2.3774],[234.7599,-106.2935,-1.5473],[234.4832,-105.9615,-1.9716],[233.7269,-105.9984,-1.658],[233.1736,-106.3304,-0.9018],[231.4766,-105.9615,-0.496],[230.8126,-105.611,-0.8464],[228.304,-105.4819,0.3341],[226.9944,-105.7586,1.9019],[225.2421,-105.5003,2.732],[225.2605,-105.8324,3.5251],[224.412,-106.1644,4.7056],[223.0102,-106.0537,5.4988],[223.0102,-106.4042,6.292],[217.329,-105.8139,7.8598],[215.7242,-106.478,9.8519],[213.3356,-106.109,10.2577],[212.524,-106.3857,11.0693],[210.5088,-105.9246,11.0693],[209.7157,-106.1828,11.8625],[208.5167,-105.8693,11.8625],[207.3546,-106.2013,13.1352],[205.4548,-105.8139,13.209],[203.8685,-106.1459,14.3895],[202.2084,-106.0537,14.7215],[201.7104,-106.2751,15.8467],[200.8988,-106.1459,16.2709],[200.9172,-105.8508,17.0641],[199.6998,-105.611,18.263],[198.5009,-105.6664,18.6504],[198.1135,-105.5188,20.4765],[194.9409,-105.3897,22.2103],[192.9304,-105.3343,21.5832],[187.9132,-105.5926,22.4501],[181.0515,-105.9246,22.3948],[178.2847,-106.0168,21.4541],[176.2188,-106.0168,21.3987],[175.5917,-105.9984,22.0628],[173.9685,-106.1275,21.7861],[167.9737,-106.4042,24.8849],[166.7379,-106.4964,24.9956],[164.3769,-106.5886,26.7294],[161.8499,-106.6809,26.3974],[159.3597,-106.644,26.8954],[160.1529,-106.644,28.0944],[159.3044,-106.6809,29.1458],[157.091,-106.6071,29.9205],[157.9763,-106.6809,31.8204],[155.892,-106.5886,32.632],[155.6707,-106.5702,34.0707],[154.0659,-106.3304,34.0707],[152.9223,-105.8139,35.4172],[151.8156,-105.4081,35.5463],[151.3729,-105.3343,38.2025],[151.7049,-105.4819,41.8547],[151.2991,-105.3897,42.6478],[152.1107,-105.5557,45.8389],[151.7234,-105.4266,49.0484],[152.1292,-105.5003,52.2579],[151.3544,-105.4266,54.3237],[147.0198,-105.3528,56.5741],[146.8722,-105.4081,58.6031],[143.4967,-105.4081,59.7467],[144.6403,-105.5741,61.499],[140.8406,-105.7955,63.6018],[140.5823,-105.9984,65.1881],[138.5902,-106.1275,66.4977],[138.2029,-106.0537,65.9812],[137.0777,-106.1459,66.6268],[136.3952,-106.0168,66.221],[133.7944,-106.2566,67.8073],[131.7101,-106.1644,67.4569],[129.718,-106.2382,68.25],[128.1317,-106.1644,68.25],[127.025,-106.2935,69.0063],[126.3425,-106.1828,68.582],[122.8932,-106.2935,68.7111],[122.5059,-106.0537,67.918],[121.0118,-106.1644,68.0656],[119.7391,-106.0353,67.4569],[118.1343,-106.1275,67.4569],[117.2489,-106.2935,68.0287],[115.1646,-106.2751,67.4384],[114.0394,-106.4411,68.0287],[112.2687,-106.4042,67.4384],[111.1988,-106.3673,68.5451],[108.9485,-106.2935,68.8218],[107.4175,-106.2935,67.2171],[104.6507,-106.2197,67.8258],[103.544,-106.1828,66.5899],[101.4412,-106.109,65.7599],[100.3345,-106.0722,67.586],[98.6191,-106.0353,67.9364],[98.1395,-106.0353,66.8482],[95.1882,-106.0353,69.1169],[93.067,-106.0353,70.0577],[90.9089,-106.0353,70.2237],[88.8615,-106.0722,67.6598],[86.2422,-106.109,67.1802],[86.4636,-106.0722,69.3014],[83.3463,-106.109,69.3936],[83.7705,-106.0722,70.1499],[83.3832,-106.0722,70.8139],[82.4978,-106.109,70.2052],[81.5571,-106.109,72.3264],[79.7126,-106.1459,70.7955],[76.8535,-106.1459,72.7138],[76.4477,-106.109,75.9048],[74.7323,-106.0722,76.9931],[73.9392,-106.109,76.9378],[74.511,-106.0722,78.2474],[70.9141,-106.0168,81.2725],[70.9141,-105.9246,82.2132],[69.6598,-106.0537,83.947],[69.8443,-105.7032,85.8654],[67.9997,-106.0353,87.8021],[67.3357,-105.943,89.8496],[66.3212,-106.0353,90.8272],[65.8416,-105.777,92.9484],[63.5175,-105.9799,94.0182],[60.8798,-105.0023,98.0024],[58.8877,-105.0761,99.8654],[58.1499,-105.279,99.7363],[57.7441,-105.279,100.2159],[56.8587,-105.113,102.374],[55.6782,-105.2237,103.1671],[53.4648,-105.1499,107.4465],[50.2553,-105.2974,110.7851],[49.1117,-105.2237,114.8431],[47.3225,-105.3343,116.5769],[46.5478,-105.3343,118.4952],[45.3857,-105.6295,118.4768],[45.1275,-105.5188,120.9485],[43.2091,-106.0168,120.8931],[42.0286,-105.5557,123.6046],[40.6268,-105.8139,124.3793],[40.5714,-105.445,126.3345],[39.3172,-105.6664,126.8326],[39.1143,-105.445,127.6626],[36.1077,-106.0353,128.8062],[34.6689,-105.9246,131.2041],[32.8982,-105.9799,132.7351],[33.4884,-105.5188,133.934],[33.0642,-104.615,138.5823],[30.2605,-104.7441,141.1646],[30.0022,-104.615,143.4334],[28.914,-104.5781,144.5401],[28.047,-104.5781,146.6798],[28.1393,-104.5781,148.303],[27.1432,-104.5781,149.3728],[26.6636,-104.5781,152.2503],[26.9956,-104.3752,154.6482],[25.4278,-104.4121,159.9789],[25.4462,-104.3567,161.6206],[22.3658,-104.5596,162.1924],[23.0483,-104.3936,164.1291],[24.5055,-104.3014,165.4756],[24.6715,-104.3014,170.751],[24.4133,-104.2645,175.0027],[24.1551,-104.2276,179.2544],[22.495,-104.0063,180.1213],[23.8046,-103.6558,182.3347],[23.823,-102.8811,186.9092],[24.6162,-102.7704,187.3519],[22.9192,-102.4569,188.3479],[23.6386,-101.9404,189.9711],[22.5319,-101.4793,191.1701],[24.69,-101.221,192.2215],[24.9113,-100.4279,193.734],[25.8705,-99.8192,194.6747],[25.9996,-99.3765,196.1734],[27.051,-98.7493,196.7083],[27.1985,-97.9377,200.4389],[28.047,-97.7717,199.5351],[28.1761,-97.4397,201.5871],[28.7111,-97.1999,201.6424],[28.9324,-96.8495,207.3236],[30.5003,-96.5912,206.8625],[30.5003,-96.5174,207.6741],[28.6742,-96.0748,209.3895],[28.6188,-95.6874,210.3671],[29.0339,-95.669,215.5779],[29.4489,-95.6505,220.7888],[29.0615,-95.5583,221.9139],[29.8178,-95.5952,223.1313],[29.744,-95.5029,224.072],[28.8586,-95.4292,224.3303],[30.3527,-95.2263,225.6583],[30.4265,-95.1156,226.3224],[29.6887,-94.3593,231.8007],[27.1248,-94.3224,233.4054],[26.184,-94.2856,234.8072],[26.6821,-93.9535,236.5227],[25.4278,-94.1564,236.9838],[29.5596,-93.7137,242.001],[30.8692,-93.9166,246.6861],[31.5885,-93.9166,252.3857],[32.3264,-93.6215,252.9022],[32.7322,-93.5662,254.5069],[32.3817,-93.806,255.9272]],"expectedDistance":1755.16,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-07-creature-33974","objectiveId":"creature-33974","objectiveName":"Verdan the Everliving","checkpoints":[[32.3817,-93.806,255.9272],[33.8095,-91.8421,249.0207],[35.2373,-89.8783,242.1142],[36.6651,-87.9144,235.2077],[38.0928,-85.9505,228.3012],[39.5206,-83.9867,221.3947],[40.9484,-82.0228,214.4882],[42.3762,-80.059,207.5817],[43.804,-78.0951,200.6752],[45.2318,-76.1313,193.7687],[46.6596,-74.1674,186.8622],[48.0874,-72.2035,179.9557],[49.5152,-70.2397,173.0492],[50.9429,-68.2758,166.1427],[52.3707,-66.312,159.2362],[53.7985,-64.3481,152.3297],[55.2263,-62.3843,145.4232],[56.6541,-60.4204,138.5167],[58.0819,-58.4565,131.6102],[59.5097,-56.4927,124.7037],[60.9375,-54.5288,117.7972],[62.3652,-52.565,110.8907],[63.793,-50.6011,103.9842],[65.2208,-48.6373,97.0777],[66.6486,-46.6734,90.1712],[68.0764,-44.7095,83.2647],[69.5042,-42.7457,76.3582],[70.932,-40.7818,69.4517],[72.3598,-38.818,62.5452],[73.7876,-36.8541,55.6387],[75.2153,-34.8902,48.7322],[76.6431,-32.9264,41.8257],[78.0709,-30.9625,34.9192]],"expectedDistance":234.27,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-08-mutanus-spawn","objectiveId":"mutanus-spawn","objectiveName":"Mutanus the Devourer","checkpoints":[[78.0709,-30.9625,34.9192],[72.7756,-32.6252,39.9564],[67.4803,-34.2879,44.9936],[62.1849,-35.9505,50.0308],[56.8896,-37.6132,55.068],[51.5943,-39.2758,60.1052],[46.299,-40.9385,65.1424],[41.0036,-42.6011,70.1796],[35.7083,-44.2638,75.2168],[30.413,-45.9265,80.254],[25.1176,-47.5891,85.2912],[19.8223,-49.2518,90.3284],[14.527,-50.9144,95.3656],[9.2317,-52.5771,100.4028],[3.9363,-54.2398,105.44],[-1.359,-55.9024,110.4772],[-6.6543,-57.5651,115.5144],[-11.9497,-59.2277,120.5516],[-17.245,-60.8904,125.5888],[-22.5403,-62.553,130.626],[-27.8356,-64.2157,135.6632],[-33.131,-65.8784,140.7004],[-38.4263,-67.541,145.7376],[-43.7216,-69.2037,150.7748],[-49.0169,-70.8663,155.812],[-54.3123,-72.529,160.8492],[-59.6076,-74.1917,165.8864],[-64.9029,-75.8543,170.9236],[-70.1983,-77.517,175.9608],[-75.4936,-79.1796,180.998],[-80.7889,-80.8423,186.0352],[-86.0842,-82.505,191.0724],[-91.3796,-84.1676,196.1096],[-96.6749,-85.8303,201.1468],[-101.9702,-87.4929,206.184],[-107.2655,-89.1556,211.2212],[-112.5609,-90.8182,216.2584],[-117.8562,-92.4809,221.2956],[-123.1515,-94.1436,226.3328],[-128.4469,-95.8062,231.37],[-133.7422,-97.4689,236.4072],[-139.0375,-99.1315,241.4444],[-144.3328,-100.7942,246.4816],[-149.6282,-102.4569,251.5188]],"expectedDistance":322.29,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"5d52800bc65f5db5931975d353f336001ca00cf17ab5862a1762b28b5aa7d9ae","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"razorfen-kraul","mapId":47,"legs":[{"id":"leg-01-creature-87346","objectiveId":"creature-87346","objectiveName":"Roogug","checkpoints":[[-38.1656,-5.4865,22.8565],[-36.9599,-5.2779,22.4508],[-36.5542,-5.3358,21.2335],[-35.0123,-5.2315,20.7118],[-32.201,-5.301,21.9291],[-30.9374,-5.4749,21.3842],[-28.755,-5.3822,22.0566],[-28.129,-5.672,21.2103],[-28.6739,-5.8343,19.1584],[-28.0015,-5.9386,17.1296],[-25.9959,-5.7763,17.1992],[-25.6713,-5.5793,14.1154],[-24.199,-5.3706,13.6053],[-23.2136,-5.2779,15.066],[-21.6833,-4.9417,14.2198],[-19.7357,-4.1997,14.556],[-18.9358,-4.675,13.6981],[-17.9967,-4.2461,13.9647],[-17.1041,-4.7794,13.0373],[-16.1535,-4.5707,12.9213],[-15.2724,-5.0692,12.0867],[-13.3248,-5.104,11.5302],[-10.7743,-6.1473,9.6058],[-10.1135,-5.9502,9.6753],[-9.2557,-6.2169,9.0261],[-7.424,-5.6025,9.0957],[-5.6966,-5.7763,7.8436],[-4.3634,-5.4054,8.1103],[-2.8216,-5.4749,6.638],[-3.0534,-5.6488,4.9802],[-1.6507,-5.7184,4.2614],[-1.2565,-5.6836,1.9312],[0.5752,-5.7184,1.9892],[0.3781,-5.5793,-0.4917],[1.178,-5.5097,-1.8249],[2.5112,-5.5793,0.0416],[3.172,-5.4402,-2.2191],[4.5748,-5.4054,-0.1207],[4.9457,-5.4054,1.7805],[6.5687,-4.8489,1.6066],[7.5078,-4.5475,2.1051],[8.1106,-4.8141,1.8037],[9.9771,-4.6286,2.8355],[11.2291,-5.0692,2.7659],[12.3652,-4.9764,3.6354],[14.1621,-5.5793,3.7049],[16.0054,-5.8459,4.331],[16.4112,-5.614,4.9918],[17.5821,-6.043,5.0265],[17.8139,-5.7416,5.8033],[19.1007,-6.1473,6.3134],[21.0368,-6.1473,8.6783],[21.5121,-6.5415,8.4349],[25.0595,-6.9125,11.5534],[27.0535,-7.4457,12.0867],[28.178,-7.608,13.4198],[29.2794,-7.7703,13.4198],[29.7431,-7.7008,14.5791],[30.6126,-7.8051,14.44],[31.0415,-7.8051,15.2399],[32.2472,-7.7819,14.8342],[32.6413,-7.6776,15.6457],[33.9745,-7.5733,15.182],[33.7079,-7.7356,16.5152],[37.548,-7.0864,14.9617],[39.2232,-7.1211,16.0978],[40.0927,-6.8545,15.3675],[41.1129,-6.7154,16.8977],[43.0489,-6.0198,18.2309],[44.2546,-5.5561,17.8368],[43.9184,-5.6488,16.1094],[45.8428,-4.9764,16.9093],[45.924,-5.0112,15.6109],[46.9326,-4.675,15.8776],[46.3993,-4.9764,14.2777],[47.0485,-5.046,11.1708],[49.6221,-4.1417,10.823],[50.5843,-3.8751,11.6693],[51.3842,-3.8403,11.2636],[52.6479,-4.1417,11.507],[53.3898,-4.1765,11.9012],[53.9463,-3.4114,12.7011],[55.3838,-3.678,11.7621],[57.343,-4.0142,11.7505],[59.6268,-6.3792,9.1536],[62.0498,-6.2169,8.6435],[62.8033,-6.4835,7.6813],[64.4031,-6.3444,7.0553],[65.1799,-6.5531,5.27],[67.626,-6.6806,4.899],[70.2112,-6.9704,0.2039],[71.0459,-7.04,-0.2135],[72.1125,-7.04,1.8501],[72.182,-6.9704,3.8441],[73.5152,-7.1443,2.0356],[74.918,-7.3066,1.2356],[74.6513,-7.2023,2.8355],[75.5788,-7.2023,3.0441],[77.3061,-7.3066,1.4443],[78.4422,-7.2139,3.5774],[80.3783,-7.3182,1.7689],[81.723,-7.2487,2.9746],[83.0562,-7.1095,1.5718],[83.9257,-7.1095,3.5079],[84.714,-6.9472,3.9136],[86.4414,-6.7502,3.1137],[87.334,-6.6574,5.1193],[88.8527,-6.4835,5.9076],[90.2902,-6.2169,5.6989],[91.4263,-5.8111,7.0321],[93.8493,-5.0112,6.9742],[94.3826,-4.8837,7.5074],[97.2692,-4.6402,7.1133],[98.4401,-5.1735,6.7191],[98.9734,-5.3706,6.8582],[99.5066,-5.6372,8.1914],[101.3383,-6.1705,8.6899],[101.547,-6.298,9.884],[103.4598,-6.7733,9.7101],[102.8222,-6.6806,10.8694],[101.0485,-6.2748,11.6345],[101.6398,-6.3792,13.2344],[101.1528,-6.2053,15.0197],[102.1498,-6.2401,17.0253],[101.6861,-6.101,17.9527],[102.5788,-6.101,18.5671],[102.3817,-5.73,19.4946],[103.8076,-5.6372,20.9901],[103.9931,-5.3706,23.5057],[104.9901,-5.5793,24.9664],[105.4307,-5.2431,28.4443],[107.3667,-4.9185,28.9892],[106.0451,-4.6171,29.4993],[106.7059,-4.2113,30.6354],[106.2306,-3.8751,31.6208],[106.6363,-3.7012,32.8381],[106.3001,-3.6664,33.8466],[105.6625,-3.5969,33.951],[105.7784,-3.6316,34.3567],[103.0309,-3.7012,36.8376],[102.6367,-3.8403,37.6375],[103.0309,-4.2113,38.4375],[101.9991,-4.3852,39.4692],[102.2658,-4.9185,40.6053],[100.608,-5.5793,43.1326],[98.3473,-5.4749,43.9905],[96.9794,-5.9039,45.7642],[94.7883,-7.2023,50.355],[92.4465,-7.3762,52.2215],[89.2469,-7.1095,53.7981],[88.9802,-7.666,55.5371],[87.3572,-7.5385,56.4529],[86.9631,-8.1413,58.4817],[86.0356,-8.0833,59.1541],[86.5225,-8.7094,60.8351],[85.7458,-8.7441,61.635],[86.0936,-9.1035,62.6088],[85.0386,-8.9412,62.9102],[85.0038,-9.1383,63.7101],[85.7922,-9.4977,64.6028],[85.0386,-9.6716,66.0171],[85.456,-10.0078,67.2228],[86.2559,-10.2049,67.6285],[86.4993,-10.4483,69.2284],[85.3632,-10.6222,70.8166],[86.4298,-10.7497,71.0485],[85.1198,-10.8425,72.9613],[85.7922,-10.9352,74.3757],[85.5255,-10.8425,76.9377],[84.459,-10.8773,77.3435],[84.6792,-10.6454,78.8505],[83.7982,-10.6802,79.2099],[83.6707,-10.0542,80.8097],[82.3722,-9.8223,81.4126],[81.9897,-9.0224,83.082],[80.8536,-8.9528,83.3486],[81.1202,-8.4891,84.2181],[79.1726,-7.921,85.2383],[79.103,-7.1559,86.5715],[76.8424,-6.414,88.693],[76.7728,-5.672,90.4319],[75.6483,-5.2779,92.2636],[76.3091,-4.8373,93.4693],[76.1932,-4.4779,95.7531],[77.1554,-4.2809,96.9587],[77.2945,-4.1881,98.86],[78.2799,-4.42,99.7642],[78.2451,-4.3852,100.9931],[78.9871,-4.6518,101.3525],[78.3147,-4.42,101.7582],[78.9755,-4.675,104.4304],[76.7844,-5.0692,107.1693],[77.9437,-4.9764,107.6793],[77.2829,-5.1387,108.7459],[78.4886,-5.0112,109.8009],[77.793,-5.1387,110.8906],[78.5929,-4.9069,111.6905],[77.7814,-4.9764,112.6411],[78.1756,-4.7446,113.4295],[77.3757,-4.7794,114.2989],[78.1756,-4.5707,115.0293],[77.851,-4.4432,116.6059],[78.4538,-4.2809,117.9391],[77.538,-4.3852,120.6519],[78.6277,-4.3852,122.3097],[77.8394,-5.1387,124.037],[78.2104,-5.7648,125.1615],[77.8394,-6.0662,126.3672],[76.9004,-6.0662,126.0774],[76.3787,-6.2748,128.5235],[74.802,-6.1705,129.3814],[74.6281,-5.9386,131.642],[72.5994,-6.101,132.9984],[73.2834,-6.0778,135.259],[76.4135,-5.9386,134.8648],[75.1498,-5.9386,138.1341],[76.854,-5.9618,137.0443],[77.1902,-5.9386,141.5772],[80.8536,-5.9155,143.2697],[81.3173,-5.6836,148.1968],[83.3924,-5.6836,148.9271],[83.9953,-5.417,149.6922],[87.3688,-5.8691,150.8052],[88.6904,-5.9966,150.1096],[90.0352,-6.0314,150.5038],[91.9596,-6.0314,149.2517],[93.8377,-6.101,149.2401],[96.6432,-6.3792,148.0345],[97.0373,-6.5415,147.2461],[98.6372,-6.5763,146.8404],[99.1589,-6.7733,145.797],[101.6977,-6.6806,145.5999],[102.8454,-6.5183,146.1796],[103.4019,-6.414,145.6231],[104.9437,-6.3096,145.6811],[105.5582,-6.7038,144.5913],[106.2422,-6.6806,144.4406],[106.5436,-6.7502,143.2002],[107.984,-6.6226,143.2697],[109.2273,-6.2517,141.496],[110.8533,-5.9155,140.5454],[112.3835,-6.2053,142.3887],[113.937,-6.0314,141.0323],[115.4209,-6.0662,141.2178],[116.7773,-6.1357,142.8292],[117.0555,-6.101,142.3539],[119.7103,-6.101,143.5712],[121.0551,-6.3328,142.8408],[121.8434,-6.5994,142.8408],[122.2376,-6.4371,143.6291],[123.0491,-6.7733,143.235],[123.8606,-6.8777,143.6407],[125.0546,-7.1791,142.8408],[125.8546,-7.2834,143.2466]],"expectedDistance":455.46,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-87357","objectiveId":"creature-87357","objectiveName":"Aggem Thorncurse","checkpoints":[[125.8546,-7.2834,143.2466],[125.0546,-7.1791,142.8408],[123.8606,-6.8777,143.6407],[123.0491,-6.7733,143.235],[122.2376,-6.4371,143.6291],[121.8434,-6.5994,142.8408],[121.0551,-6.3328,142.8408],[119.7103,-6.101,143.5712],[117.0555,-6.101,142.3539],[116.7773,-6.1357,142.8292],[115.4209,-6.0662,141.2178],[113.937,-6.0314,141.0323],[112.3835,-6.2053,142.3887],[110.8533,-5.9155,140.5454],[109.2273,-6.2517,141.496],[107.984,-6.6226,143.2697],[106.5436,-6.7502,143.2002],[106.2422,-6.6806,144.4406],[105.5582,-6.7038,144.5913],[104.9437,-6.3096,145.6811],[103.4019,-6.414,145.6231],[102.8454,-6.5183,146.1796],[101.6977,-6.6806,145.5999],[99.1589,-6.7733,145.797],[98.6372,-6.5763,146.8404],[97.0373,-6.5415,147.2461],[96.6432,-6.3792,148.0345],[93.8377,-6.101,149.2401],[91.9596,-6.0314,149.2517],[90.0352,-6.0314,150.5038],[88.6904,-5.9966,150.1096],[87.3688,-5.8691,150.8052],[83.9953,-5.417,149.6922],[83.3924,-5.6836,148.9271],[81.3173,-5.6836,148.1968],[80.8536,-5.9155,143.2697],[77.1902,-5.9386,141.5772],[76.854,-5.9618,137.0443],[75.1498,-5.9386,138.1341],[76.4135,-5.9386,134.8648],[73.2834,-6.0778,135.259],[72.5994,-6.101,132.9984],[74.6281,-5.9386,131.642],[74.802,-6.1705,129.3814],[76.3787,-6.2748,128.5235],[76.9004,-6.0662,126.0774],[77.8394,-6.0662,126.3672],[78.2104,-5.7648,125.1615],[77.8394,-5.1387,124.037],[78.3147,-4.5823,123.3762],[78.6277,-4.3852,122.3097],[78.1524,-4.6518,121.8459],[78.6277,-4.0142,120.7098],[77.851,-4.0838,120.0722],[78.4538,-4.2809,117.9391],[77.851,-4.4432,116.6059],[78.1756,-4.5707,115.0293],[77.3757,-4.7794,114.2989],[78.1756,-4.7446,113.4295],[77.7814,-4.9764,112.6411],[78.5929,-4.9069,111.6905],[77.793,-5.1387,110.8906],[78.4886,-5.0112,109.8009],[77.2829,-5.1387,108.7459],[77.9437,-4.9764,107.6793],[76.7844,-5.0692,107.1693],[78.9755,-4.675,104.4304],[78.3147,-4.42,101.7582],[78.9871,-4.6518,101.3525],[78.2451,-4.3852,100.9931],[78.2799,-4.42,99.7642],[77.2945,-4.1881,98.86],[77.1554,-4.2809,96.9587],[76.1932,-4.4779,95.7531],[76.3091,-4.8373,93.4693],[75.6483,-5.2779,92.2636],[76.7728,-5.672,90.4319],[76.8424,-6.414,88.693],[79.103,-7.1559,86.5715],[79.1726,-7.921,85.2383],[81.1202,-8.4891,84.2181],[80.8536,-8.9528,83.3486],[81.9897,-9.0224,83.082],[82.3722,-9.8223,81.4126],[83.6707,-10.0542,80.8097],[83.7982,-10.6802,79.2099],[84.6792,-10.6454,78.8505],[84.459,-10.8773,77.3435],[85.5255,-10.8425,76.9377],[85.7922,-10.9352,74.3757],[85.1198,-10.8425,72.9613],[86.4298,-10.7497,71.0485],[85.3632,-10.6222,70.8166],[86.4993,-10.4483,69.2284],[86.2559,-10.2049,67.6285],[85.456,-10.0078,67.2228],[85.0386,-9.6716,66.0171],[85.7922,-9.4977,64.6028],[85.0038,-9.1383,63.7101],[85.0386,-8.9412,62.9102],[86.0936,-9.1035,62.6088],[85.7458,-8.7441,61.635],[87.45,-8.7673,60.1627],[86.9631,-8.1413,58.4817],[87.3572,-7.5385,56.4529],[88.9802,-7.666,55.5371],[89.2469,-7.1095,53.7981],[92.4465,-7.3762,52.2215],[94.7883,-7.2023,50.355],[96.9794,-5.9039,45.7642],[98.3473,-5.4749,43.9905],[100.608,-5.5793,43.1326],[102.2658,-4.9185,40.6053],[101.9991,-4.3852,39.4692],[103.0309,-4.2113,38.4375],[102.6367,-3.8403,37.6375],[103.0309,-3.7012,36.8376],[105.7784,-3.6316,34.3567],[105.6625,-3.5969,33.951],[106.3001,-3.6664,33.8466],[106.6363,-3.7012,32.8381],[106.2306,-3.8751,31.6208],[106.7059,-4.2113,30.6354],[106.0451,-4.6171,29.4993],[107.3667,-4.9185,28.9892],[105.4307,-5.2431,28.4443],[104.9901,-5.5793,24.9664],[103.9931,-5.3706,23.5057],[103.8076,-5.6372,20.9901],[102.3817,-5.73,19.4946],[102.5788,-6.101,18.5671],[101.6861,-6.101,17.9527],[102.1498,-6.2401,17.0253],[101.1528,-6.2053,15.0197],[101.6398,-6.3792,13.2344],[101.0485,-6.2748,11.6345],[102.8222,-6.6806,10.8694],[103.4598,-6.7733,9.7101],[101.547,-6.298,9.884],[101.3383,-6.1705,8.6899],[99.5066,-5.6372,8.1914],[98.9734,-5.3706,6.8582],[97.872,-4.8373,6.7191],[95.6694,-4.7794,7.5074],[94.3826,-4.8837,7.5074],[93.8493,-5.0112,6.9742],[91.4263,-5.8111,7.0321],[90.2902,-6.2169,5.6989],[88.8527,-6.4835,5.9076],[87.334,-6.6574,5.1193],[86.4414,-6.7502,3.1137],[84.714,-6.9472,3.9136],[83.9257,-7.1095,3.5079],[82.5925,-7.2487,4.9106],[81.723,-7.2487,2.9746],[80.3783,-7.3182,1.7689],[78.4422,-7.2139,3.5774],[77.3061,-7.3066,1.4443],[75.5788,-7.2023,3.0441],[74.6513,-7.2023,2.8355],[74.918,-7.3066,1.2356],[73.5152,-7.1443,2.0356],[73.4457,-7.2139,0.0416],[72.1125,-7.04,1.8501],[71.0459,-7.04,-0.2135],[70.2112,-6.9704,0.2039],[67.626,-6.6806,4.899],[65.1799,-6.5531,5.27],[64.4031,-6.3444,7.0553],[62.8033,-6.4835,7.6813],[62.0498,-6.2169,8.6435],[59.6268,-6.3792,9.1536],[57.343,-4.0142,11.7505],[55.3838,-3.678,11.7621],[53.9463,-3.4114,12.7011],[53.3898,-4.1765,11.9012],[52.6479,-4.1417,11.507],[51.3842,-3.8403,11.2636],[50.5843,-3.8751,11.6693],[49.6221,-4.1417,10.823],[47.0485,-5.046,11.1708],[46.3993,-4.9764,14.2777],[46.9326,-4.675,15.8776],[45.924,-5.0112,15.6109],[45.8428,-4.9764,16.9093],[43.9184,-5.6488,16.1094],[44.2546,-5.5561,17.8368],[43.0489,-6.0198,18.2309],[43.7793,-5.7763,20.167],[44.811,-5.4749,21.0016],[43.6865,-5.9386,21.9639],[44.0227,-5.9155,23.2971],[42.2374,-6.6226,23.7492],[41.7969,-6.8197,24.6418],[39.8956,-7.3182,25.2331],[39.7913,-7.2487,26.4387],[37.8176,-7.411,26.5663],[35.8903,-7.411,28.0386],[31.6327,-7.2834,28.6066],[30.7749,-7.2487,29.6732],[30.7517,-7.2834,31.0296],[28.7693,-7.1443,31.4933],[28.7809,-7.1095,32.6989],[27.5752,-6.8777,33.1627],[26.5782,-6.7154,32.896],[25.0016,-5.6836,34.5654],[22.6018,-4.2113,35.632],[20.689,-2.681,37.7071],[19.2514,-2.5419,40.1996],[17.9762,-2.113,40.8488],[16.7242,-2.0782,42.8544],[15.5301,-1.6724,43.5847],[14.8925,-1.8347,45.0339],[14.2781,-1.6029,45.0223],[13.8723,-1.9739,46.2859],[12.6782,-2.0782,47.5379],[12.2145,-2.681,49.3464],[9.8496,-3.3534,52.2215],[10.0466,-4.0142,53.033],[9.4206,-4.4432,54.0648],[7.9715,-4.5823,55.6298],[8.1802,-5.3126,57.0326],[7.4034,-5.5445,58.6208],[7.473,-6.3096,60.2786],[8.5048,-7.6428,62.4813],[8.0411,-8.3152,64.4753],[6.847,-8.4427,64.7883],[6.1862,-8.605,65.7273],[6.7658,-8.7094,66.562],[6.1746,-8.976,67.1648],[6.9629,-9.0456,67.7793],[3.4155,-8.8137,70.7702],[2.4185,-8.8833,70.4456],[1.8968,-7.8747,74.1206],[-0.1436,-6.8429,77.4478],[0.1926,-6.8081,79.1751],[-1.0131,-6.8081,80.5779],[-1.4768,-6.7154,82.9776],[-1.4768,-6.6806,83.6384],[-0.4334,-6.7386,84.2876],[-1.3724,-6.611,85.5513],[-0.9435,-7.04,87.9858],[-1.7898,-7.2487,89.3306],[-0.5261,-7.6776,91.7999],[-2.2419,-7.5849,91.1855],[-1.2449,-7.7819,92.6578],[-1.4652,-7.8167,92.9476],[-2.81,-7.6776,91.939],[-1.6043,-7.979,94.6749],[-2.9607,-8.0138,95.2314],[-3.3664,-8.1761,97.2254],[-5.3604,-8.3384,98.0369],[-6.5545,-8.5007,99.6367],[-5.7546,-8.5007,100.8308],[-6.9487,-8.6746,102.0394],[-5.7546,-8.7441,102.8422],[-6.1603,-9.2195,104.0507],[-7.7602,-9.8223,105.2448],[-7.7486,-10.4831,106.8331],[-8.9426,-10.8077,107.6214],[-8.5601,-11.3062,109.2212],[-8.9658,-11.6424,110.0211],[-9.7657,-11.909,110.0327],[-11.238,-13.0799,112.4672],[-10.9134,-13.3118,113.5222],[-12.1539,-13.9146,114.8438],[-12.5712,-14.3783,116.8378],[-14.1595,-14.8768,117.6261],[-16.0723,-15.7695,119.9679],[-17.9388,-15.839,119.5042],[-18.8546,-16.21,120.4664],[-18.3213,-16.6737,121.5909],[-18.8662,-17.0795,122.4372],[-19.9096,-17.3113,122.9357],[-20.5008,-17.949,124.3268],[-21.6369,-18.0533,124.7558],[-21.9036,-18.4243,125.7528],[-21.5094,-18.8184,126.5411],[-22.4021,-19.0851,128.9872],[-21.3471,-19.0503,131.2362],[-22.147,-19.2126,134.0417],[-24.5584,-19.3401,135.2474],[-24.9525,-19.4329,137.0443],[-24.1526,-19.7691,137.6356],[-25.3467,-19.5024,138.8992],[-25.2192,-19.7459,140.3367],[-23.5034,-20.1864,141.0323],[-23.7237,-20.2444,141.8322],[-21.0921,-19.8734,141.7974],[-21.5326,-19.943,142.3075],[-19.272,-19.514,143.2466],[-20.6399,-19.6415,145.2521],[-18.1938,-19.5024,146.7824],[-19.1908,-19.6647,147.5591],[-16.536,-20.0125,148.3127],[-18.8198,-20.1168,149.4024],[-18.1127,-20.1168,150.1328],[-18.959,-20.1516,150.9327],[-17.4867,-20.1516,151.1646],[-20.1878,-20.1864,151.6283],[-22.8078,-20.2444,155.0366],[-22.576,-20.2444,157.9117],[-23.5614,-19.9777,159.7665],[-23.3643,-19.9082,162.4329],[-23.9439,-19.6415,164.2414],[-22.9585,-19.7806,165.8181],[-22.7035,-19.7111,167.4874],[-24.0831,-19.3053,168.3917],[-23.8976,-19.2706,170.5828],[-25.0105,-18.9691,171.8464],[-23.8164,-19.3053,173.3796],[-23.8164,-19.3981,175.0403],[-22.9701,-19.7343,176.6198],[-23.3643,-19.6995,178.2196],[-20.6979,-20.0705,178.5558],[-20.6747,-20.14,179.6456],[-17.278,-20.7081,182.7061],[-20.0719,-20.569,185.5464],[-18.8198,-20.7429,187.181],[-20.6168,-20.6733,188.5142],[-19.1444,-20.9399,191.6443],[-20.0487,-20.9979,194.4614],[-18.5416,-21.195,196.4322],[-19.1908,-21.2645,198.7276],[-18.5996,-21.4384,200.0028],[-17.6721,-21.3109,199.9796],[-16.4317,-21.3109,200.965],[-16.4317,-21.6703,202.1707],[-17.0693,-21.9717,202.9242],[-13.7537,-22.4007,205.2544],[-13.8117,-22.7369,206.4485],[-11.98,-23.6991,210.0423],[-10.4149,-23.6991,209.0453],[-9.0122,-23.873,211.0509],[-5.1517,-23.6759,211.7117],[-4.2243,-23.9773,215.7113],[-1.0246,-23.6411,216.5228],[2.1055,-22.9107,215.3171],[4.4125,-22.9107,218.5863],[5.6181,-22.5398,218.5747],[7.218,-22.505,219.5717],[9.2931,-22.0992,216.6039],[11.6812,-22.1688,216.1982],[13.5013,-22.0992,214.7259],[14.2781,-22.0645,215.0157],[14.8809,-21.8326,214.2853],[16.2025,-21.3689,214.2274],[17.756,-21.3457,215.2939],[19.7847,-20.9631,215.2939],[21.5816,-20.9631,214.0999],[23.8886,-21.2298,214.7723],[25.1523,-21.2298,213.5086],[25.8942,-21.2645,214.9114],[26.4391,-21.195,213.497],[27.981,-21.195,213.9607],[28.4679,-21.137,211.8508],[29.7431,-20.9399,210.9929],[31.0879,-20.6733,210.7031],[32.5718,-20.5806,211.4799],[33.6963,-20.0821,210.1467],[35.0063,-19.943,210.7611],[37.6379,-20.1053,213.242],[39.5797,-19.6068,213.9144],[45.0777,-19.3981,217.8908],[45.8776,-19.201,217.5662],[47.7093,-19.1778,218.4009],[49.4482,-19.1778,218.169],[50.5264,-19.2822,218.9689],[51.0828,-19.2474,218.2385],[51.7668,-19.4792,219.1544],[53.842,-19.7459,218.424],[58.1777,-20.4414,221.8556],[58.7922,-20.4414,221.3687],[59.65,-20.3719,218.6327],[60.0442,-20.2791,215.8272],[62.3744,-20.1516,214.239],[64.2061,-19.8386,214.9346],[66.0609,-19.6299,214.6679],[67.2782,-19.6299,215.4678],[68.7737,-19.6647,214.865],[70.6402,-19.6995,214.9925],[71.3937,-19.7343,213.9839],[72.7385,-19.7343,214.0883],[73.2486,-19.8386,212.8478],[74.489,-19.8386,213.1261],[75.6251,-19.943,211.7929],[76.3091,-19.9777,211.9668],[76.6337,-20.1168,210.2974],[77.6191,-20.1864,209.2192],[78.0944,-20.1864,210.4829],[79.0567,-20.256,209.7873],[79.3465,-20.2212,210.8075],[81.3289,-20.3139,209.6018],[83.1722,-20.2096,210.1698],[84.4474,-20.2444,209.2192],[86.453,-19.9777,210.6915],[88.018,-19.9082,210.2394],[89.7454,-19.6995,211.7813],[91.7046,-19.6995,208.315],[92.7711,-19.6647,209.7873],[94.3014,-19.6647,208.4657],[95.8317,-19.5372,209.7641],[96.7011,-18.6793,207.7005],[98.301,-18.0881,207.7005],[99.2052,-17.1143,205.6834],[98.614,-16.7085,203.8053],[99.3443,-16.4651,203.4691],[97.675,-16.1752,201.8809],[96.9794,-16.21,202.2287],[95.7157,-16.0129,201.4983],[94.4521,-15.9782,201.5563],[94.0464,-16.1173,202.2287],[90.9858,-15.4449,200.9998],[89.2701,-15.0391,201.4172],[86.8008,-14.5406,200.3506],[85.7922,-14.3783,200.4781],[82.4882,-14.4827,198.9942],[78.6857,-14.7377,195.9569],[78.6161,-14.842,193.7078],[76.3091,-14.9696,192.05],[75.3817,-15.0391,190.4038],[73.5848,-15.0043,191.6559],[72.7269,-15.0391,190.7053],[69.8518,-14.9348,192.4442],[68.6462,-14.8305,194.728],[65.3886,-14.7029,196.3278],[62.7222,-14.6102,195.8641],[60.6702,-14.6102,193.3253],[56.3924,-14.5174,192.8616],[54.7694,-14.4479,190.7053],[52.1958,-14.6682,191.053],[52.3233,-14.7957,189.3721],[51.1176,-14.8305,188.862],[49.1932,-14.7029,189.1866],[47.5122,-14.6102,188.1316],[45.8428,-14.4827,188.8504],[44.6371,-14.4827,187.6563],[43.4431,-14.4479,187.4592],[42.6432,-13.8451,185.3145],[41.8432,-13.4741,184.9088],[41.4375,-13.9378,185.8478],[40.6376,-13.7755,185.6275],[38.7798,-12.5698,184.1089],[35.8178,-13.7407,184.8972],[35.5512,-13.277,184.3639],[33.9745,-14.0769,184.9783],[32.108,-14.274,185.1059],[32.5486,-14.645,186.439],[31.8298,-14.587,187.1114],[32.1428,-14.5174,187.7954],[30.3111,-14.6913,188.8388],[28.862,-14.4479,190.2995],[28.236,-14.4479,194.3454],[28.491,-14.4479,197.3364],[26.9955,-14.4131,200.2347],[26.7289,-14.4479,202.5301],[26.1493,-14.3783,201.7534],[25.1059,-14.216,203.3068],[23.9002,-14.1465,202.5069],[19.4369,-14.1465,202.4605],[21.3961,-13.9842,203.5271],[16.6083,-14.1349,202.391],[12.9217,-14.0653,202.2982],[9.2467,-14.1001,200.3158],[6.4412,-14.1001,200.3042],[6.1746,-14.1349,198.8435],[5.5138,-14.0653,198.7044],[5.3747,-14.0305,200.4318],[4.5748,-13.9378,200.4433],[3.8676,-13.9378,198.6696],[4.2038,-14.0653,196.664],[1.4794,-13.8682,196.8495],[2.1866,-13.9378,195.9569],[-0.1436,-13.6364,194.357],[1.7461,-13.6712,191.3313],[-0.9899,-13.5089,189.2677],[-0.6305,-13.7755,187.239],[-2.5317,-13.9378,186.0797],[-2.1028,-14.0653,184.874],[-2.5317,-14.1001,184.7697],[-1.0131,-14.2044,183.1698],[-1.813,-14.274,182.9032],[-1.3492,-14.3435,181.3613],[-2.752,-14.4479,180.1673]],"expectedDistance":941.55,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-87400","objectiveId":"creature-87400","objectiveName":"Death Speaker Jargba","checkpoints":[[-2.752,-14.4479,180.1673],[-1.3492,-14.3435,181.3613],[-1.813,-14.274,182.9032],[-1.0131,-14.2044,183.1698],[-1.2565,-14.1349,184.0741],[-2.5317,-14.1001,184.7697],[-2.1028,-14.0653,184.874],[-2.5317,-13.9378,186.0797],[-0.6305,-13.7755,187.239],[-0.9899,-13.5089,189.2677],[1.7461,-13.6712,191.3313],[-0.1436,-13.6364,194.357],[2.1866,-13.9378,195.9569],[1.4794,-13.8682,196.8495],[4.2038,-14.0653,196.664],[3.8676,-13.9378,198.6696],[4.5748,-13.9378,200.4433],[5.3747,-14.0305,200.4318],[5.5138,-14.0653,198.7044],[6.1746,-14.1349,198.8435],[6.4412,-14.1001,200.3042],[12.9333,-14.1697,200.4086],[18.637,-14.0421,203.1329],[21.3961,-13.9842,203.5271],[19.4369,-14.1465,202.4605],[23.9002,-14.1465,202.5069],[25.1059,-14.216,203.3068],[26.1493,-14.3783,201.7534],[26.7289,-14.4479,202.5301],[26.9955,-14.4131,200.2347],[28.491,-14.4479,197.3364],[28.236,-14.4479,194.3454],[28.862,-14.4479,190.2995],[30.3111,-14.6913,188.8388],[32.1428,-14.5174,187.7954],[31.8298,-14.587,187.1114],[32.5486,-14.645,186.439],[32.108,-14.274,185.1059],[33.9745,-14.0769,184.9783],[35.5512,-13.277,184.3639],[35.8178,-13.7407,184.8972],[38.7798,-12.5698,184.1089],[40.6376,-13.7755,185.6275],[41.4375,-13.9378,185.8478],[41.8432,-13.4741,184.9088],[42.6432,-13.8451,185.3145],[43.4431,-14.4479,187.4592],[44.6371,-14.4827,187.6563],[45.8428,-14.4827,188.8504],[47.5122,-14.6102,188.1316],[49.1932,-14.7029,189.1866],[51.1176,-14.8305,188.862],[52.3233,-14.7957,189.3721],[52.1958,-14.6682,191.053],[54.7694,-14.4479,190.7053],[56.3924,-14.5174,192.8616],[60.6702,-14.6102,193.3253],[62.7222,-14.6102,195.8641],[65.3886,-14.7029,196.3278],[68.6462,-14.8305,194.728],[69.8518,-14.9348,192.4442],[72.7269,-15.0391,190.7053],[73.5848,-15.0043,191.6559],[75.3817,-15.0391,190.4038],[76.3091,-14.9696,192.05],[78.6161,-14.842,193.7078],[78.6857,-14.7377,195.9569],[82.4882,-14.4827,198.9942],[85.7922,-14.3783,200.4781],[86.8008,-14.5406,200.3506],[89.2701,-15.0391,201.4172],[90.9858,-15.4449,200.9998],[92.1799,-15.8159,201.6722],[93.316,-15.7463,200.7448],[96.9794,-16.21,202.2287],[97.675,-16.1752,201.8809],[99.3443,-16.4651,203.4691],[100.7355,-16.268,202.9358],[101.8948,-16.2448,203.9792],[104.596,-15.955,202.2866],[107.4044,-15.7811,202.6924],[108.2072,-15.8738,204.6864],[111.9082,-15.6999,204.8023],[112.314,-15.8043,206.4021],[114.7021,-16.0477,209.4743],[115.8382,-16.0129,208.3382],[118.806,-16.0129,209.5786],[116.2904,-16.0129,211.19],[118.6669,-15.7463,211.2712],[118.6205,-15.642,211.7117],[115.9889,-15.8738,212.1407],[116.186,-15.839,212.6507],[115.1774,-15.6072,213.1492],[115.247,-15.5492,214.7491],[114.3543,-15.1551,216.1402],[113.0211,-15.0159,215.9431],[111.63,-14.5059,217.8444],[111.8966,-14.2392,218.8414],[111.1199,-14.2392,218.8414],[110.7837,-14.1349,219.4326],[110.3055,-14.3435,219.0964],[109.3056,-14.4479,219.4326],[107.6101,-14.0537,221.6701],[106.5204,-14.2856,221.2527],[104.6655,-14.0189,222.6671],[102.9613,-14.2856,222.7598],[102.2774,-13.9494,223.409],[101.8948,-14.2508,223.0728],[101.489,-13.9146,223.6757],[99.7501,-14.1812,223.5597],[98.4981,-13.7407,224.4988],[96.9098,-13.8451,224.4292],[96.6432,-13.4741,225.1711],[94.9274,-13.7175,224.8234],[92.6436,-13.9146,225.2407],[92.1335,-13.9726,226.4811],[90.1163,-14.2044,227.2695],[88.4586,-14.4363,229.4026],[84.8415,-14.7145,226.5623],[85.0386,-14.7377,229.3678],[83.1722,-14.7145,227.3738],[83.1026,-14.7377,230.1097],[82.1752,-14.7377,230.643],[80.784,-14.7145,228.5099],[81.3173,-14.7377,231.1763],[78.3843,-14.7145,228.1737],[76.17,-14.6797,229.9706],[72.3675,-14.6566,229.1591],[68.8433,-14.6797,225.7392],[62.4671,-14.5986,227.7332],[61.1107,-14.274,229.4605],[60.3224,-14.1349,229.959],[59.1979,-13.9726,229.6692],[58.1429,-13.7059,230.8865],[55.1056,-13.219,230.9213],[53.3782,-12.9872,231.9182],[51.1176,-13.0104,232.324],[49.3091,-12.9756,233.6224],[45.5588,-12.1583,233.234],[41.8085,-11.341,232.8457],[38.035,-10.1121,231.2922],[34.6005,-9.0108,230.7705],[34.2064,-8.9528,230.1097],[32.6413,-8.7789,230.272],[31.0415,-8.9064,231.3502],[27.4361,-8.5471,231.64],[26.1029,-8.1529,230.7358],[23.5177,-8.0833,231.3386],[21.2454,-8.0138,233.0312],[19.5297,-8.7789,234.0514],[17.5937,-9.3702,236.1149],[15.8547,-10.0078,239.2334],[16.6778,-10.2165,240.0681],[15.7272,-10.7845,243.1431],[14.2433,-11.0859,244.8502],[13.8375,-12.3843,251.264],[12.6319,-12.7089,252.0639],[11.8204,-13.3002,254.8462],[9.8264,-13.4045,256.4577],[8.6323,-13.4741,258.8574],[6.5919,-13.3813,260.3645],[5.7572,-13.2538,260.0283],[5.4442,-13.4161,262.115],[4.5632,-13.5089,262.3005],[4.7371,-13.4045,263.2395],[4.0183,-13.4393,262.9149]],"expectedDistance":370.25,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-87386","objectiveId":"creature-87386","objectiveName":"Overlord Ramtusk","checkpoints":[[4.0183,-13.4393,262.9149],[4.7371,-13.4045,263.2395],[4.5632,-13.5089,262.3005],[5.4442,-13.4161,262.115],[5.7572,-13.2538,260.0283],[6.5919,-13.3813,260.3645],[8.6323,-13.4741,258.8574],[9.8264,-13.4045,256.4577],[11.8204,-13.3002,254.8462],[12.6319,-12.7089,252.0639],[13.8375,-12.3843,251.264],[14.2433,-11.0859,244.8502],[15.7272,-10.7845,243.1431],[16.1213,-10.344,240.7289],[16.8401,-10.1237,239.8131],[16.017,-9.915,238.9784],[17.5937,-9.3702,236.1149],[19.5297,-8.7789,234.0514],[21.2454,-8.0138,233.0312],[23.5177,-8.0833,231.3386],[26.1029,-8.1529,230.7358],[27.4361,-8.5471,231.64],[31.0415,-8.9064,231.3502],[32.6413,-8.7789,230.272],[34.2064,-8.9528,230.1097],[34.6005,-9.0108,230.7705],[38.035,-10.1121,231.2922],[41.8085,-11.341,232.8457],[45.5588,-12.1583,233.234],[49.3091,-12.9756,233.6224],[51.1176,-13.0104,232.324],[53.3782,-12.9872,231.9182],[55.1056,-13.219,230.9213],[58.1429,-13.7059,230.8865],[59.1979,-13.9726,229.6692],[60.3224,-14.1349,229.959],[61.1107,-14.274,229.4605],[62.4671,-14.5986,227.7332],[68.8433,-14.6797,225.7392],[72.3675,-14.6566,229.1591],[76.17,-14.6797,229.9706],[78.3843,-14.7145,228.1737],[81.3173,-14.7377,231.1763],[80.784,-14.7145,228.5099],[82.1752,-14.7377,230.643],[83.1026,-14.7377,230.1097],[83.1722,-14.7145,227.3738],[85.0386,-14.7377,229.3678],[84.8415,-14.7145,226.5623],[88.4586,-14.4363,229.4026],[90.1163,-14.2044,227.2695],[93.2233,-13.7755,226.5391],[93.7333,-13.7175,225.2987],[94.9274,-13.7175,224.8234],[96.6432,-13.4741,225.1711],[96.9098,-13.8451,224.4292],[98.4981,-13.7407,224.4988],[99.7501,-14.1812,223.5597],[101.489,-13.9146,223.6757],[101.8948,-14.2508,223.0728],[102.2774,-13.9494,223.409],[102.9613,-14.2856,222.7598],[104.6655,-14.0189,222.6671],[106.5204,-14.2856,221.2527],[107.6101,-14.0537,221.6701],[109.3056,-14.4479,219.4326],[110.3055,-14.3435,219.0964],[110.7837,-14.1349,219.4326],[111.1199,-14.2392,218.8414],[111.8966,-14.2392,218.8414],[111.63,-14.5059,217.8444],[113.0211,-15.0159,215.9431],[114.3543,-15.1551,216.1402],[115.247,-15.5492,214.7491],[115.1774,-15.6072,213.1492],[116.186,-15.839,212.6507],[115.9889,-15.8738,212.1407],[122.1216,-15.4797,210.7147],[123.0259,-15.4797,209.6598],[126.4922,-15.3521,209.1033],[127.6283,-15.7231,208.1295],[127.3269,-15.9202,207.1325],[126.0864,-15.6767,206.6804],[127.3385,-15.9434,205.2544],[126.5269,-15.839,204.0488],[128.1731,-16.0825,200.026],[126.1096,-16.1173,196.0844],[125.4372,-16.0825,192.8384],[126.7704,-15.839,191.3777],[127.5935,-15.8043,189.3489],[124.73,-15.7927,184.619],[121.8666,-15.7811,179.889],[122.8404,-15.8043,177.9298],[126.0169,-15.6767,175.0895],[127.6283,-14.8768,174.0201],[129.4484,-14.3783,174.2519],[129.6455,-14.0421,173.1709],[130.7816,-14.0074,173.4173],[131.5119,-13.6364,172.684],[134.0972,-13.6364,173.5767],[135.2333,-13.1031,172.6579],[135.8361,-13.0335,172.8434],[136.1259,-12.6046,171.9507],[136.5317,-12.8365,172.5652],[137.4707,-12.3148,171.5102],[138.4677,-12.3727,172.0319],[139.8705,-12.1757,171.6725],[140.2646,-11.3757,169.5974],[141.0529,-11.4105,169.5858],[141.7717,-11.0164,168.5656],[143.5454,-10.8773,168.2062],[143.7077,-10.5411,167.5686],[144.5772,-10.5411,167.6266],[145.1221,-10.2396,167.0933],[145.864,-10.3788,167.3136],[148.913,-9.2195,164.8906],[151.5909,-8.5818,163.5806],[151.5793,-8.1761,162.9546],[152.5068,-7.8399,162.1547],[154.2573,-7.921,162.2474],[155.463,-8.4543,164.2182],[156.9237,-8.35,164.253],[158.5815,-8.408,165.2036],[159.8451,-8.1065,164.0443],[161.0508,-8.1761,164.8443],[163.4505,-7.9095,164.5196],[166.6386,-7.5964,168.8554],[167.2646,-7.5964,167.3367],[167.6008,-7.666,169.9915],[169.5948,-7.7356,168.4497],[171.2526,-7.608,165.308],[174.6262,-7.5153,164.4269],[177.223,-7.5153,166.6759],[180.0285,-7.1443,165.0877],[182.463,-6.9125,165.992],[182.7644,-7.0516,167.7193],[185.1758,-6.5531,164.8095],[186.3351,-6.4835,165.1109],[188.9435,-5.9502,162.885],[190.01,-5.7763,163.1517],[190.8099,-5.4402,161.8069],[191.9808,-5.104,161.7721],[192.3866,-4.8721,160.7056],[194.1835,-4.1417,159.9636],[194.7168,-3.736,158.3638],[196.247,-3.0752,157.8305],[198.1947,-2.7158,158.4565],[198.5888,-2.5883,157.4595],[200.5828,-2.4144,156.6596],[201.0233,-2.2173,154.4338],[203.8288,-1.9854,153.6454],[204.2346,-1.7536,152.034],[206.2402,-1.6493,151.6399],[207.4458,-1.6493,148.4402],[210.6455,-1.7536,147.2577]],"expectedDistance":340.36,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-05-creature-87487","objectiveId":"creature-87487","objectiveName":"Charlga Razorflank","checkpoints":[[210.6455,-1.7536,147.2577],[215.7431,-1.9797,141.871],[220.8407,-2.2057,136.4842],[225.9384,-2.4318,131.0974],[231.036,-2.6578,125.7107],[236.1336,-2.8839,120.3239],[241.2312,-3.11,114.9371],[246.3288,-3.336,109.5504],[251.4265,-3.5621,104.1636],[256.5241,-3.7882,98.7768],[261.6217,-4.0142,93.39],[266.7193,-4.2403,88.0033],[271.8169,-4.4663,82.6165],[276.9146,-4.6924,77.2297],[282.0122,-4.9185,71.843],[287.1098,-5.1445,66.4562],[292.2074,-5.3706,61.0694],[297.305,-5.5967,55.6827],[302.4027,-5.8227,50.2959],[307.5003,-6.0488,44.9091],[312.5979,-6.2748,39.5224],[317.6955,-6.5009,34.1356],[322.7931,-6.727,28.7488],[327.8908,-6.953,23.3621],[332.9884,-7.1791,17.9753],[338.086,-7.4052,12.5885],[343.1836,-7.6312,7.2018],[348.2812,-7.8573,1.815],[353.3789,-8.0833,-3.5718],[358.4765,-8.3094,-8.9585],[363.5741,-8.5355,-14.3453]],"expectedDistance":222.6,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-06-creature-87486","objectiveId":"creature-87486","objectiveName":"Agathelos the Raging","checkpoints":[[363.5741,-8.5355,-14.3453],[361.913,-9.0456,-21.3932],[360.252,-9.5557,-28.441],[358.5909,-10.0657,-35.4889],[356.9298,-10.5758,-42.5368],[355.2688,-11.0859,-49.5846],[353.6077,-11.596,-56.6325],[351.9466,-12.1061,-63.6804],[350.2856,-12.6162,-70.7282],[348.6245,-13.1263,-77.7761],[346.9634,-13.6364,-84.824],[345.3024,-14.1465,-91.8719],[343.6413,-14.6566,-98.9197],[341.9802,-15.1666,-105.9676],[340.3192,-15.6767,-113.0155],[338.6581,-16.1868,-120.0633],[336.997,-16.6969,-127.1112],[335.336,-17.207,-134.1591],[333.6749,-17.7171,-141.2069],[332.0138,-18.2272,-148.2548],[330.3528,-18.7373,-155.3027],[328.6917,-19.2474,-162.3505],[327.0306,-19.7575,-169.3984],[325.3696,-20.2676,-176.4463],[323.7085,-20.7776,-183.4941],[322.0474,-21.2877,-190.542],[320.3864,-21.7978,-197.5899],[318.7253,-22.3079,-204.6377],[317.0642,-22.818,-211.6856],[315.4032,-23.3281,-218.7335],[313.7421,-23.8382,-225.7813],[312.081,-24.3483,-232.8292]],"expectedDistance":225.03,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-07-creature-1975863","objectiveId":"creature-1975863","objectiveName":"Earthcaller Halmgar","checkpoints":[[312.081,-24.3483,-232.8292],[313.4954,-24.4062,-231.7163],[314.817,-24.3135,-232.2843],[315.9183,-23.8498,-234.6725],[318.0862,-23.4788,-235.4144],[319.5701,-23.6759,-234.1276],[321.5177,-23.2006,-235.6811],[322.7842,-23.3397,-235.1014],[323.9928,-23.0151,-236.1448],[325.4216,-23.2469,-235.5536],[326.2447,-23.1426,-236.2491],[327.5663,-23.5715,-234.8696],[328.8648,-23.6411,-235.3449],[330.6037,-24.0121,-234.3131],[331.137,-24.2439,-233.0379],[332.3079,-24.3135,-233.8842],[333.1773,-24.2555,-236.1448],[333.3396,-24.3831,-235.5999],[334.9047,-24.5801,-236.2955],[336.5045,-25.0786,-234.3015],[336.8291,-25.3801,-232.3075],[339.4259,-25.7858,-232.7365],[340.2838,-25.2409,-230.1744],[340.991,-25.2409,-230.3483],[341.2808,-25.5076,-231.1135],[343.5878,-25.6119,-231.9945],[345.4543,-25.6119,-231.867],[346.7875,-25.7162,-232.922],[347.9931,-25.7162,-232.5626],[350.3697,-26.2727,-233.7914],[351.4363,-26.4698,-233.1654],[352.7695,-26.8987,-233.548],[354.1838,-26.4698,-230.87],[355.3895,-27.0378,-231.6699],[356.5835,-26.5741,-229.3513],[357.7776,-27.2697,-231.0207],[359.702,-26.806,-228.8296],[361.9743,-27.2697,-229.9658],[364.7798,-26.7016,-226.9632],[366.9013,-27.2697,-227.7167],[368.304,-27.4088,-226.9168],[367.8519,-26.806,-225.3633],[369.6488,-27.3393,-225.7691],[372.4427,-27.9073,-227.566],[375.0395,-27.9073,-226.3719],[375.0395,-27.7798,-224.3779],[376.6394,-27.6175,-223.0448],[377.7407,-27.5479,-222.8709],[378.5406,-27.1422,-221.6652],[380.1404,-26.806,-221.7927],[382.2388,-26.0061,-220.3552],[381.833,-25.3337,-217.2946],[386.1108,-24.3599,-215.3586],[384.0357,-24.3367,-213.4921],[385.7051,-24.2439,-213.6545],[384.0589,-24.0469,-210.7098],[388.9743,-24.1396,-211.0228],[384.9167,-23.8034,-208.5304],[386.2036,-23.8034,-207.5334],[383.0039,-23.4788,-205.7017],[384.2212,-23.5715,-205.3423],[381.3461,-23.0846,-204.4496],[381.9373,-23.1542,-203.5106],[381.1258,-22.8876,-202.7107],[379.2594,-22.5166,-202.1774],[378.2276,-22.3775,-200.9602],[380.1288,-22.6441,-199.8472],[380.1404,-22.8412,-196.2418],[376.906,-22.6093,-195.9172],[372.9296,-22.7369,-196.3462],[370.2632,-23.2354,-193.587],[367.5969,-23.7339,-190.8279],[367.5853,-23.9077,-188.8223],[368.3736,-24.1048,-186.8399],[367.991,-24.3019,-183.4403],[365.997,-24.1744,-183.8344],[365.8695,-24.6381,-178.1597],[364.5015,-24.6729,-177.6496],[363.3654,-24.7077,-176.015],[363.377,-24.4758,-174.9253],[362.6467,-24.6149,-174.705],[362.809,-24.1164,-172.6298],[362.2757,-24.2787,-171.7024],[362.9713,-24.2092,-170.2301],[360.2237,-24.9395,-167.2043],[360.8729,-24.6381,-166.2769],[357.8008,-25.067,-164.8162],[357.4414,-24.7308,-162.9613],[355.8532,-24.8004,-162.0571],[355.9575,-24.4642,-159.8196],[355.146,-24.5685,-158.9849],[354.7518,-24.6381,-159.4486],[354.091,-24.7772,-158.3937],[351.4247,-25.0439,-157.559],[351.2971,-25.0091,-156.4229],[350.1031,-24.9395,-155.6114],[349.3959,-24.9743,-155.9128],[348.7467,-24.6845,-154.6608],[347.599,-24.1512,-154.1275],[346.7063,-22.9687,-152.2378],[345.8137,-22.8412,-151.9364],[346.1615,-22.7369,-150.8699],[345.7557,-22.6441,-150.0699],[343.6226,-22.447,-149.7337],[343.043,-22.3427,-148.6324],[343.5415,-22.1804,-148.1223],[342.6024,-22.0761,-147.9832],[343.1937,-21.9138,-147.2413],[342.556,-21.9369,-147.4847],[342.4169,-21.6703,-145.9081],[340.7707,-21.5312,-145.6762],[340.7707,-21.2993,-143.7981],[339.7969,-21.2993,-143.659],[339.3332,-21.4732,-142.6273],[338.0116,-21.4384,-143.1026],[336.7248,-21.4037,-142.5113],[335.9133,-21.6703,-141.0506],[329.085,-21.4037,-139.0334],[328.0417,-21.137,-139.103],[328.0417,-20.8704,-138.6277],[325.839,-18.9112,-138.6161],[325.7115,-18.5054,-137.9205],[326.1752,-18.5634,-136.0772],[325.839,-18.262,-136.1236],[326.2332,-18.262,-132.7037],[324.4565,-17.9953,-131.3357],[324.7232,-18.0301,-130.2576],[324.0044,-18.0301,-129.3997],[325.6883,-18.0301,-129.0635],[325.4216,-17.9953,-128.1245],[326.3143,-18.204,-127.8926],[326.5346,-18.3779,-127.1275],[326.0824,-18.146,-125.0755],[326.6389,-18.0185,-123.3018],[326.0477,-17.6128,-121.5049],[327.3809,-17.0099,-118.1545],[328.517,-17.0099,-117.7488],[328.2851,-16.21,-115.0244],[330.511,-16.1752,-112.6594],[331.508,-16.3144,-112.8565],[332.2499,-16.8708,-111.0335],[333.0498,-17.1375,-110.764],[333.6411,-16.836,-104.3734],[334.4989,-17.1027,-103.3764],[334.0584,-16.6737,-101.394],[335.4496,-16.8824,-100.1535],[334.9742,-16.1868,-98.4262],[334.2439,-16.0477,-98.9595],[334.1164,-15.6767,-97.0234],[332.9803,-15.3521,-96.0148],[331.5775,-15.1782,-95.8178],[332.0412,-15.1782,-94.8208],[331.705,-15.0391,-94.0209],[332.7136,-15.0739,-92.8152],[332.8411,-15.0739,-92.1544],[332.3079,-14.8073,-91.6211],[332.8296,-14.7725,-90.7516],[332.4586,-14.5754,-90.485],[332.7252,-14.6797,-89.7778],[332.0065,-14.5174,-89.6503],[331.5311,-14.8189,-88.8156],[331.9949,-15.0159,-87.552],[331.6239,-15.2478,-86.6014],[330.8356,-15.4217,-86.6014],[330.6269,-15.3869,-85.7087],[329.0502,-15.4797,-85.9637],[328.2387,-15.5028,-85.1638],[327.0447,-15.5956,-85.1638],[326.2563,-15.5956,-84.3523],[325.0507,-15.5956,-84.7581],[324.2363,-15.5376,-83.564],[323.0161,-15.5144,-83.1814],[321.7032,-15.2478,-81.7323],[322.0278,-14.6797,-77.4313],[320.6367,-14.5174,-77.0256],[320.6367,-14.5174,-76.33],[319.6976,-14.2392,-75.9938],[318.6427,-14.3783,-73.9766],[317.4254,-14.587,-73.5709],[317.437,-14.6566,-72.7594],[314.7822,-14.4479,-72.2261],[314.3764,-14.4131,-70.9393],[313.4374,-14.4131,-70.7654],[312.9505,-14.4479,-69.2235],[313.762,-14.274,-68.4236],[312.6027,-13.8798,-66.2441],[311.8376,-13.9726,-66.2209],[311.6869,-13.7407,-65.3978],[310.4232,-14.0074,-65.1891],[309.7624,-13.9494,-64.3197],[308.1974,-14.0769,-64.0299],[307.9192,-13.8798,-63.172],[306.957,-13.9378,-63.1488],[305.5774,-13.7175,-61.8967],[305.0441,-13.3118,-60.6215],[302.0415,-12.8828,-58.558],[301.914,-12.5119,-57.7697],[300.5113,-12.4191,-57.3059],[299.9084,-11.8858,-56.1698],[298.7028,-11.8858,-55.4974],[298.0304,-11.1439,-54.199],[297.358,-11.2714,-54.3961],[296.6972,-11.0396,-53.8628],[296.0364,-10.2049,-52.1702],[294.4597,-10.344,-51.9152],[293.8801,-9.6832,-50.8255],[292.6049,-9.7527,-50.5009],[291.8165,-9.3818,-49.7009],[291.0398,-9.6832,-49.9676],[289.9037,-9.1151,-49.0981],[287.7822,-8.8717,-49.8401],[287.3764,-8.6746,-49.0401],[286.2287,-8.408,-49.3184],[285.5679,-7.9095,-48.5301],[283.7015,-7.3762,-49.33],[282.5074,-7.0748,-48.4721],[281.4408,-7.1443,-49.5734],[279.841,-7.3414,-48.7619],[278.1021,-7.411,-49.1561],[275.9342,-7.5733,-47.7881],[274.7285,-7.5501,-47.7997],[273.4765,-8.1413,-45.9912],[271.7027,-8.8485,-45.4927],[270.7173,-8.9064,-44.6232],[269.2334,-8.918,-46.2926],[269.048,-8.2225,-47.0693],[267.7843,-9.5788,-45.6666],[267.054,-10.0426,-45.2608],[266.8453,-9.8107,-45.7246],[264.2253,-11.2134,-44.4609],[264.1441,-11.5496,-43.7885],[263.1471,-12.0829,-43.1277],[261.5473,-12.5119,-42.3974],[261.1416,-12.338,-42.7915],[260.3185,-13.0335,-41.6322],[258.4404,-12.8712,-41.3656],[257.4318,-13.3118,-40.2962],[255.8783,-13.1147,-40.0411],[255.4842,-13.3813,-39.3079],[253.696,-13.1147,-38.9137],[253.2554,-13.3466,-37.5544],[252.2555,-13.3466,-36.882],[251.1745,-13.0799,-37.6935],[249.6674,-12.9524,-36.9052],[249.6674,-13.0799,-36.3024],[248.9139,-13.0451,-35.8618],[247.0474,-12.651,-35.5952],[245.0766,-12.4771,-34.1113],[245.1114,-12.7785,-33.3578],[243.8825,-12.4075,-33.5085],[241.4364,-12.2104,-31.5609],[240.4742,-11.7467,-32.0594],[239.7207,-11.5728,-31.7116],[239.4076,-11.8742,-30.3436],[239.141,-11.8395,-30.7841],[238.0281,-11.3757,-30.5523],[237.9701,-11.2134,-30.1117],[235.4429,-10.4367,-30.1813],[232.591,-9.5441,-28.8133],[231.5592,-9.4397,-27.7236],[231.0375,-9.5093,-25.8803],[229.542,-9.2658,-25.6137],[229.8434,-9.1731,-24.4776],[228.4407,-8.4427,-21.5677],[227.235,-8.1761,-21.9619],[225.7395,-7.9095,-20.8142],[225.8671,-7.9442,-19.3535],[223.4673,-8.2109,-20.42],[221.9023,-8.605,-18.1594],[219.5721,-8.9064,-19.3535],[218.3316,-9.1383,-17.6609],[218.1693,-9.3006,-14.7974],[217.7056,-9.3702,-14.5308],[215.9319,-9.5441,-16.861],[215.9087,-9.5788,-15.8756],[217.3926,-9.3818,-12.6527],[216.7898,-9.4861,-11.9224],[216.7898,-9.3122,-10.3341],[215.8507,-9.6136,-9.569],[215.4334,-9.6484,-7.9576],[213.8452,-9.8107,-7.5518],[213.8452,-9.8803,-6.7519],[211.457,-9.9962,-5.5694],[211.1208,-9.7991,-4.0855],[209.6253,-9.7991,-2.6248],[207.4922,-10.1005,-2.8335],[206.4257,-10.0078,-1.8713],[205.4866,-10.0773,-1.8829],[205.3127,-9.1731,0.3778],[206.2402,-8.8833,1.966],[205.6257,-9.0456,4.5396],[206.0315,-9.1499,6.1395],[205.1041,-9.347,7.7393],[205.2084,-9.4397,8.7827],[206.0431,-9.4397,9.5014],[205.8808,-9.4049,11.7621],[204.7911,-9.4397,13.0489],[205.2664,-9.5093,14.44],[204.6867,-9.5441,15.3675],[205.0345,-9.4745,16.6311],[203.9448,-9.3702,17.9875],[204.0607,-9.3354,18.7294],[203.0521,-9.2426,19.5873],[203.2492,-9.1151,20.4452],[202.3913,-8.9528,21.79],[202.6116,-8.5703,24.41],[201.4059,-7.9442,27.4705],[202.171,-8.0833,27.8415],[202.4377,-8.0138,29.1747],[201.5102,-7.8399,29.2326],[201.2436,-7.5733,30.1717],[202.0435,-7.411,31.3078],[201.2436,-7.1443,31.899],[201.6378,-6.9125,32.8265],[200.5712,-6.7154,33.0235],[200.7799,-6.5879,33.6959],[200.0495,-6.4487,33.893],[200.6408,-6.4487,34.5654],[200.5364,-6.4487,35.1682],[199.609,-6.3444,35.5044],[199.6786,-6.4835,36.4435],[198.3801,-6.4835,37.1738],[197.1165,-6.414,37.1043],[195.7717,-6.414,38.3679],[195.6094,-6.5763,39.7591],[193.4068,-6.2748,40.6285],[193.4068,-6.5763,41.4284],[192.0272,-6.414,41.6951],[193.4415,-6.9704,42.8312],[191.8417,-7.0748,44.8368],[193.0358,-7.2834,46.8424],[191.6562,-7.1443,49.8102]],"expectedDistance":581.99,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"17caa8655271cf4a927e700c57af706c89ffc54425100f1d4da754732f317f1a","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"blackfathom-deeps","mapId":48,"legs":[{"id":"leg-01-creature-25732","objectiveId":"creature-25732","objectiveName":"Ghamoo-ra","checkpoints":[[151.327,-39.6594,107.0071],[152.3883,-40.0877,105.3312],[154.7717,-40.4042,105.0147],[155.1814,-40.6649,104.1582],[154.0828,-40.8883,102.2216],[155.6283,-40.9815,102.892],[154.6786,-41.2421,100.5644],[156.0379,-41.6145,99.6334],[156.0379,-41.8566,98.4231],[156.8386,-42.2663,97.2128],[155.889,-42.4711,95.4252],[155.9448,-42.9925,93.3956],[159.0917,-43.4207,93.3956],[162.2199,-44.0911,91.8129],[163.5047,-44.1283,91.8873],[163.3185,-44.389,90.4908],[164.2495,-44.5938,89.7646],[163.1695,-45.1152,87.5302],[164.4357,-45.3945,85.724],[163.4116,-45.7296,83.6199],[164.4171,-45.7669,81.7905],[166.5212,-45.6924,81.8277],[166.4467,-45.7483,79.2907],[168.1784,-45.5434,79.2162],[169.0349,-45.32,77.7405],[168.3087,-45.32,76.6419],[169.5749,-45.171,76.4185],[168.3646,-45.32,74.6123],[170.5246,-45.2641,74.8916],[171.0459,-45.3945,74.3516],[170.6363,-45.5807,73.2903],[173.7273,-45.9903,73.2158],[173.5411,-46.4186,72.1544],[174.9376,-46.9772,71.4841],[174.2486,-47.0144,70.1434],[174.6397,-47.182,68.9331],[178.2893,-48.3179,68.3372],[178.941,-48.8765,66.4007],[180.2258,-49.0999,66.1773],[182.9444,-49.9937,62.9187],[186.0912,-50.3847,60.5167],[188.4932,-50.7385,56.9043],[189.1636,-50.9061,56.6995],[189.387,-50.8875,57.2209],[190.3739,-51.5206,55.4147],[193.1483,-52.433,53.2734],[194.6752,-52.6006,52.9941],[195.7365,-52.9357,51.9513],[196.8351,-53.0288,51.9327],[197.6172,-52.7681,50.3686],[200.3171,-52.2095,48.73],[199.6468,-52.2468,46.9797],[200.0378,-52.2468,45.788],[201.2854,-52.284,46.179],[200.2054,-52.3213,44.168],[200.764,-52.3399,43.7211],[200.1309,-52.3026,42.2501],[201.7323,-52.3026,42.306],[202.775,-52.1723,40.7977],[204.3019,-52.0978,39.9412],[205.1584,-52.2095,40.8164],[205.6798,-52.1723,40.3322],[205.6984,-51.9302,38.3212],[207.5977,-52.135,38.0792],[209.6087,-52.3771,35.9937],[211.6011,-52.675,36.0495],[213.2583,-52.8612,37.3716],[215.6231,-53.0847,37.6137],[217.0569,-53.2523,36.3288],[218.6396,-53.3454,37.3716],[219.552,-53.4199,37.1109],[219.9989,-53.3826,38.8798],[221.5071,-53.3454,39.5874],[222.4381,-53.4199,38.7123],[223.0898,-53.2895,39.4198],[224.5422,-53.5688,38.135],[225.8084,-53.4757,39.2709],[226.9256,-53.8109,37.9861],[228.0056,-53.6992,38.3771],[228.918,-53.4199,40.0157],[231.2456,-53.6805,39.2709],[232.8469,-53.7178,40.0715],[235.2489,-53.9971,38.433],[236.7386,-53.9785,38.3212],[237.0737,-53.6805,39.364],[237.651,-53.8481,39.2336],[238.0234,-53.6061,40.0157],[238.8613,-53.9971,39.3081],[239.4199,-53.7923,40.1646],[239.122,-53.4012,41.1515],[241.3937,-54.1274,41.8219],[242.3247,-53.8295,43.628],[243.1067,-54.0157,44.0749],[244.224,-54.4812,43.7956],[245.006,-54.3136,44.9873],[246.1046,-54.4254,45.4156],[247.3149,-54.6488,45.4342],[249.9264,-54.8722,44.0935],[252.6683,-54.7419,45.099],[255.466,-54.8536,45.0804],[255.3915,-54.4626,47.4452],[256.6763,-54.7047,47.799],[257.9239,-54.6674,49.3817],[259.7859,-54.9653,49.5493],[260.9218,-55.0957,50.2755],[262.039,-55.4867,53.981],[263.2121,-56.3619,53.9251],[264.0314,-57.0694,55.2844],[265.7631,-57.7025,55.7871],[267.5692,-58.3356,55.2658],[269.8595,-59.1363,56.5878],[270.0457,-58.8384,57.9471],[271.5726,-59.3411,58.4498],[272.2243,-58.9501,60.3305],[273.8257,-59.3784,60.9636],[274.5519,-59.0991,62.3601],[275.8181,-59.4901,62.416],[276.8235,-59.5273,64.0173],[277.7546,-59.8253,64.0173],[278.2573,-59.6577,67.0897],[279.3559,-60.0487,67.1642],[280.0263,-60.1232,69.1565],[281.851,-61.1287,69.0262],[284.3089,-61.8921,69.5103],[284.402,-62.4135,68.6352],[285.4262,-62.3576,69.2869],[286.0034,-62.7673,68.9331],[288.0702,-63.0093,69.6779],[288.8523,-63.5307,69.231],[289.6344,-63.4935,69.6221],[290.435,-63.9962,68.8214],[291.2357,-63.9404,69.2124],[293.6564,-64.5548,67.6111],[296.1701,-64.2569,68.9331],[298.1811,-64.2569,68.2069],[298.8701,-64.5548,66.1214],[301.5328,-64.0893,65.898],[303.7113,-63.9962,63.7939],[304.2141,-63.959,64.3711],[305.6851,-63.9962,63.4773],[305.7223,-63.8286,64.6504],[307.2492,-63.81,64.8552],[308.3106,-64.1266,63.6635],[310.1726,-64.201,63.9615],[311.9043,-63.7355,65.4883],[313.7105,-63.661,65.358],[313.5801,-64.0335,64.427],[314.9767,-63.9962,64.2966],[315.647,-63.6238,65.0973],[316.3732,-63.5866,65.0973],[317.1739,-63.7355,65.0228],[317.3042,-64.0335,64.2966],[318.3097,-64.0893,64.2966],[318.98,-63.8286,65.2276],[320.1531,-63.7914,65.2835],[321.2145,-63.9962,64.3525],[323.5048,-62.5066,70.5717],[326.1116,-63.1024,68.1138],[330.9902,-63.1397,67.9648],[332.787,-62.339,71.263],[334.5839,-61.5383,74.5611],[338.5873,-62.7114,69.4777],[340.3004,-61.5569,74.1887],[342.0134,-60.4025,78.8996],[345.1044,-61.408,76.3626],[346.8361,-61.4638,77.2005],[347.3389,-61.5942,76.6047],[347.7671,-61.3894,77.2564],[353.7629,-58.5218,76.1206],[353.8932,-58.1867,76.4743],[354.4146,-58.0936,76.195],[354.5077,-57.6281,76.7537],[355.9042,-57.2556,77.424],[354.7125,-55.8033,79.421],[355.8297,-55.2633,80.1472],[356.3697,-54.4998,81.4367],[355.9787,-53.6433,82.633],[353.8187,-52.9357,83.2847],[354.1539,-51.4647,84.9047],[353.5022,-50.8689,85.3888],[353.6325,-50.124,86.4502],[352.8505,-49.2489,87.4185],[351.3236,-49.0627,87.4185],[350.2622,-48.1689,88.4984],[351.0629,-46.7538,90.1929],[349.2567,-46.1952,90.826],[350.1133,-45.5248,91.7198],[348.1768,-46.1765,93.3211],[349.3871,-45.3386,93.4515],[348.9216,-45.2269,94.457],[350.6533,-43.8117,95.3135],[350.7091,-43.309,96.5052],[351.6402,-42.8435,97.6969],[352.1801,-42.5456,97.6038],[352.3105,-43.309,98.9817],[353.0553,-43.9793,99.9686],[350.5229,-46.5303,102.501],[351.5284,-46.3627,103.0223],[350.6533,-46.9027,104.0278],[352.4408,-46.6048,104.4188],[352.0312,-47.2007,105.2381],[353.2415,-48.0013,106.4298],[353.6512,-49.4723,108.4222],[353.2415,-50.1054,109.2229],[353.5022,-50.2544,110.3587],[352.3663,-50.5337,111.0849],[352.7201,-50.5337,111.5318],[351.7146,-50.6827,111.476],[352.925,-50.9247,112.5559],[352.925,-51.1854,113.2263],[355.1222,-51.6509,114.7718],[357.0587,-52.2654,119.4269],[355.6435,-52.2095,120.8234],[356.4442,-52.3026,122.0337],[355.9228,-52.1723,123.8399],[357.1332,-52.2654,125.0316],[357.4683,-52.0978,127.7874],[359.8331,-52.4144,128.9605],[361.0248,-52.3771,131.3625],[363.0731,-52.7495,131.0087],[364.1903,-52.6564,132.3121],[365.5496,-52.7495,132.5542],[365.9592,-52.3771,134.1369],[367.0066,-52.3771,135.068],[367.663,-51.9861,136.8183],[367.2487,-51.5578,138.01],[368.445,-51.2971,139.6113],[368.445,-51.0551,140.8217],[369.5855,-51.0551,141.4734],[369.2131,-50.6827,142.6837],[370.1069,-50.6827,143.1864],[369.5669,-50.1799,144.7878],[370.74,-50.6454,145.5885],[370.6469,-50.5523,147.8788],[372.3227,-51.3902,149.2939],[371.9876,-51.1109,152.1615],[373.0303,-51.6695,152.4035],[373.1234,-51.8744,153.1483],[372.1179,-51.4833,154.489],[373.2537,-52.5075,155.2338],[373.2351,-52.8612,156.4255],[374.4454,-53.755,157.2262],[374.0544,-53.8295,158.0269],[374.4641,-54.444,159.2372],[375.544,-55.2074,160.0192],[375.0041,-55.5798,162.0302],[375.3951,-55.8777,163.2219],[376.7357,-56.0639,163.2219],[377.2571,-56.1943,165.2329],[379.4916,-56.2874,166.7598],[379.3426,-56.4363,170.0556],[382.2288,-56.4363,171.117],[385.9714,-56.3619,170.577],[388.5038,-56.4363,171.4521],[393.3823,-56.7343,171.1915],[398.3912,-56.9019,171.8432],[400.1229,-56.9019,173.37],[404.7594,-56.8088,174.6176],[405.709,-56.6784,176.5914],[408.9303,-56.4363,177.4107],[411.1834,-56.2874,177.3362],[412.1144,-55.9522,178.2672],[413.5296,-55.6543,178.1927],[415.0564,-55.0584,179.9616],[420.9032,-54.295,179.3286],[421.3129,-54.0529,180.1292],[425.9121,-53.4943,183.7043],[430.8465,-53.2895,183.183],[433.323,-53.0288,186.2926],[431.5168,-53.0288,188.5643],[432.4106,-52.9916,188.4525],[431.2748,-52.7495,189.6442],[432.3548,-52.7495,190.0166],[432.783,-52.8799,191.0408],[432.783,-52.6378,194.1178],[434.012,-52.5075,197.1063],[438.2109,-52.4981,200.9608],[442.4098,-52.4888,204.8152],[441.3112,-52.4516,204.7593],[442.5587,-52.4516,208.1668],[445.3518,-52.5633,210.5689]],"expectedDistance":570.69,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-26129","objectiveId":"creature-26129","objectiveName":"Lady Sarevess","checkpoints":[[445.3518,-52.5633,210.5689],[447.0835,-52.6937,212.4495],[447.0835,-52.6192,213.2502],[445.6683,-52.5819,213.455],[445.1656,-52.675,214.9819],[441.1622,-52.6564,216.5832],[438.8253,-52.7402,219.7208],[436.4885,-52.824,222.8583],[432.6806,-52.8426,223.6869],[428.8728,-52.8612,224.5155],[424.7204,-52.9543,227.2713],[422.8956,-53.0847,227.9044],[422.7839,-53.0474,225.9493],[420.7543,-53.215,228.8913],[419.6184,-53.1592,226.9548],[417.2909,-53.2895,228.3885],[416.4157,-53.4943,229.7478],[414.8516,-53.5688,230.4182],[413.6599,-53.7364,231.8333],[414.7958,-53.904,234.2353],[414.7958,-54.0343,236.2277],[412.0027,-54.6674,237.8663],[412.2634,-55.1702,241.5531],[411.0531,-55.766,243.7317],[409.7496,-56.2688,244.2345],[409.5448,-57.1067,245.8544],[406.6214,-59.6018,248.6847],[405.0201,-62.488,253.3771],[402.3574,-65.0948,257.0453],[401.7056,-67.2175,261.5886],[397.7954,-69.694,264.9776],[397.3857,-70.7368,266.9699],[395.6354,-71.4444,267.6403],[395.654,-71.6678,268.4409],[392.4699,-72.0588,268.0499],[390.4776,-72.6919,269.6326],[386.4742,-73.3995,270.4333],[386.0645,-74.2002,273.6174],[383.2715,-74.9636,274.0084],[382.4522,-75.9319,276.8015],[379.2495,-76.9001,277.6208],[378.8398,-77.3656,280.0414],[377.6481,-77.5891,280.4325],[377.6481,-77.6636,281.6242],[375.2461,-77.9242,282.0338],[375.153,-78.0918,283.0579],[371.5593,-78.7249,284.92],[370.8517,-78.8366,286.1675],[368.5381,-79.0973,287.0427],[367.2114,-78.9297,288.5323],[366.8018,-78.3898,290.9343],[365.1399,-78.0173,293.0198],[365.3447,-77.4587,294.9936],[364.0786,-77.496,295.0494],[362.7751,-76.3229,297.377],[361.5089,-76.4532,296.7997],[360.7641,-75.5967,298.3452],[361.1738,-74.7588,299.9466],[359.2931,-74.4609,300.17],[358.6414,-73.2133,302.2369],[356.3139,-72.2823,303.6334],[356.258,-71.1464,305.6258],[355.4759,-70.4947,306.6499],[354.4332,-70.2713,306.9292],[352.9622,-67.3106,311.724],[347.6926,-64.7038,314.8568],[347.6554,-63.27,317.2402],[344.8623,-59.6577,322.4353],[345.2534,-59.2853,323.2546],[344.8437,-58.1122,324.8374],[345.3651,-57.5908,325.5449],[345.0858,-57.2929,326.3828],[345.7375,-56.9019,326.8484],[343.6334,-56.9577,327.7794],[342.3858,-55.9895,330.2186],[342.8513,-54.8909,332.4345],[342.8513,-54.4998,334.4268],[344.0617,-54.295,335.6372],[344.4527,-53.9785,338.0392],[343.652,-53.904,339.6405],[342.8513,-53.4943,344.4632],[342.0507,-53.4199,345.6549],[342.0507,-53.513,348.0569],[340.4493,-53.3454,349.6397],[340.4493,-53.513,351.6321],[337.6563,-53.0847,354.0155],[338.2894,-53.4943,357.1995],[335.0122,-53.0102,360.0671],[335.8128,-53.0847,361.6684],[332.8895,-52.284,362.4691],[335.8687,-52.3213,363.996],[336.0735,-51.4833,365.9697],[336.9115,-51.7813,366.4911],[337.0977,-51.6882,367.7387],[337.9728,-52.4516,368.26],[337.8238,-52.4888,370.42],[337.3956,-52.3026,370.6807],[337.619,-52.6937,371.2207],[336.9115,-52.7123,371.9282],[336.9673,-53.1405,373.5668],[336.0177,-53.4012,375.8013],[334.9005,-53.2336,375.8571],[332.7032,-53.1219,377.533],[330.1802,-53.243,380.987],[327.6571,-53.364,384.4411],[329.9847,-53.755,386.1728],[327.3778,-53.6805,387.3087],[328.5695,-53.8854,388.91],[323.4303,-53.5874,389.9714],[322.2386,-53.6061,390.772],[319.4456,-53.5502,390.381],[318.8497,-53.8295,392.0382],[317.658,-53.8667,392.8389],[317.6394,-54.1088,394.8313],[316.4477,-54.0716,396.0416],[316.8387,-54.1274,397.2333],[314.1946,-53.9412,398.4809],[315.1256,-55.0398,401.2367],[314.3436,-54.5929,400.0077],[313.7477,-54.8536,400.7339],[314.3622,-55.5984,402.987],[313.245,-55.5984,403.0801],[311.9043,-56.3805,405.7987],[309.1671,-56.1384,404.9421],[308.6271,-56.3246,405.9663],[307.6961,-56.2874,405.6311],[306.4299,-56.6598,407.3628],[305.6479,-56.9205,410.1745],[303.5065,-56.9577,410.6772],[303.0969,-57.0508,412.8186],[301.179,-56.9577,412.0924],[298.0508,-56.8646,412.2972],[299.2425,-56.995,413.7682]],"expectedDistance":333.57,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-18743","objectiveId":"creature-18743","objectiveName":"Gelihast","checkpoints":[[299.2425,-56.995,413.7682],[298.0508,-56.8646,412.2972],[301.179,-56.9577,412.0924],[303.0969,-57.0508,412.8186],[303.5065,-56.9577,410.6772],[305.6479,-56.9205,410.1745],[306.4299,-56.6598,407.3628],[307.6961,-56.2874,405.6311],[308.6271,-56.3246,405.9663],[309.1671,-56.1384,404.9421],[311.9043,-56.3805,405.7987],[313.245,-55.5984,403.0801],[314.3622,-55.5984,402.987],[313.7477,-54.8536,400.7339],[314.3436,-54.5929,400.0077],[315.1256,-55.0398,401.2367],[314.1946,-53.9412,398.4809],[316.6153,-54.2019,398.0154],[316.4477,-54.0716,396.0416],[317.6394,-54.1088,394.8313],[317.658,-53.8667,392.8389],[318.8497,-53.8295,392.0382],[320.0414,-53.8295,392.4293],[320.6373,-53.5502,390.772],[322.2386,-53.6061,390.772],[323.4303,-53.5874,389.9714],[328.5695,-53.8854,388.91],[327.3778,-53.6805,387.3087],[329.9847,-53.755,386.1728],[327.6571,-53.364,384.4411],[330.1802,-53.243,380.987],[332.7032,-53.1219,377.533],[334.9005,-53.2336,375.8571],[336.0177,-53.4012,375.8013],[336.9673,-53.1405,373.5668],[336.9115,-52.7123,371.9282],[337.619,-52.6937,371.2207],[337.3956,-52.3026,370.6807],[337.8238,-52.4888,370.42],[337.9728,-52.4516,368.26],[337.0977,-51.6882,367.7387],[336.9115,-51.7813,366.4911],[336.0735,-51.4833,365.9697],[335.8687,-52.3213,363.996],[332.8895,-52.284,362.4691],[335.8128,-53.0847,361.6684],[335.0122,-53.0102,360.0671],[338.2894,-53.4943,357.1995],[337.6563,-53.0847,354.0155],[340.4493,-53.513,351.6321],[340.4493,-53.3454,349.6397],[342.0507,-53.513,348.0569],[342.0507,-53.4199,345.6549],[342.8513,-53.4943,344.4632],[343.652,-53.904,339.6405],[344.4527,-53.9785,338.0392],[344.0617,-54.295,335.6372],[342.8513,-54.4998,334.4268],[342.8513,-54.8909,332.4345],[342.3858,-55.9895,330.2186],[343.6334,-56.9577,327.7794],[345.7375,-56.9019,326.8484],[345.0858,-57.2929,326.3828],[345.3651,-57.5908,325.5449],[344.8437,-58.1122,324.8374],[345.2534,-59.2853,323.2546],[344.8623,-59.6577,322.4353],[347.6554,-63.27,317.2402],[347.6926,-64.7038,314.8568],[352.9622,-67.3106,311.724],[354.4332,-70.2713,306.9292],[355.4759,-70.4947,306.6499],[356.258,-71.1464,305.6258],[356.3139,-72.2823,303.6334],[358.6414,-73.2133,302.2369],[360.5221,-73.0457,302.7583],[361.9186,-74.1816,301.008],[363.3151,-74.3864,300.8776],[364.7861,-76.1739,297.9356],[365.9592,-75.9319,298.4383],[366.9694,-76.4719,297.377],[366.5411,-77.0677,295.906],[369.7857,-77.0863,295.1053],[370.2512,-77.8498,292.1074],[373.4399,-77.7194,290.9157],[375.302,-77.0491,292.9453],[377.2571,-76.6767,290.0406],[379.1936,-75.5967,289.9661],[379.715,-75.6526,288.3833],[384.0163,-73.2133,288.8861],[384.6122,-73.3623,286.9682],[386.3066,-73.1388,286.5772],[387.7776,-72.6733,288.7744],[389.9562,-72.5988,287.8992],[391.1479,-72.4312,288.6999],[392.0603,-71.8726,292.1633],[393.6617,-71.5561,293.4853],[395.5982,-71.2023,292.7405],[399.9181,-70.532,292.1912],[404.238,-69.8616,291.6419],[410.3641,-69.2037,290.9219],[416.4902,-68.5458,290.2019],[422.6163,-67.8879,289.4819],[422.2811,-67.8879,288.2716],[428.6307,-67.3665,286.1117],[429.4872,-67.3106,286.782],[433.863,-66.6589,282.7228],[435.8368,-66.3982,283.2627],[440.7153,-65.1693,281.0283],[445.0352,-64.4431,280.898],[449.0572,-63.7728,280.0042],[450.7144,-63.1955,278.4401],[453.284,-63.2886,280.06],[455.4812,-62.3949,276.2243],[456.2819,-62.4693,276.6339],[457.1571,-62.8976,279.2966],[458.8515,-62.5997,278.4028],[460.0619,-62.7673,280.0042],[461.2536,-62.6369,279.6132],[462.1287,-62.5624,278.2725],[464.3632,-62.8604,278.0677],[466.5045,-63.0466,276.5036],[468.9438,-63.4748,277.118],[470.3031,-63.5493,275.3305],[472.1092,-63.8286,274.8091],[473.0589,-63.81,272.6678],[474.5299,-64.1452,272.9843],[474.9768,-64.1079,272.2767],[475.9078,-64.4245,272.7422],[477.2484,-64.2941,270.4333],[479.2594,-64.8528,270.0237],[480.4511,-64.9272,268.832],[481.6615,-65.4486,269.223],[482.0711,-65.7465,270.0237],[485.6462,-64.9272,266.4486],[486.8566,-64.6293,266.4486],[487.6758,-64.3686,265.201],[489.2027,-64.0148,264.7169],[489.5937,-63.8659,263.3017],[490.3013,-63.6983,263.2831],[490.0593,-63.661,262.259],[490.7668,-63.4748,261.3466],[492.0889,-63.1583,261.5142],[493.0571,-62.9162,260.2852],[494.4164,-62.9349,260.6763],[494.2302,-62.8418,258.6839],[497.4329,-63.5866,257.8646],[500.1329,-64.2941,259.1494],[506.3521,-66.1003,256.5053],[512.534,-66.2865,253.7495],[518.716,-66.4727,250.9937],[519.2374,-65.43,248.331],[520.4663,-63.9217,245.7055],[523.0359,-61.5383,245.1096],[522.4401,-62.0411,243.9924],[523.1663,-61.8176,242.8379],[524.358,-61.5756,242.0187],[526.6296,-60.9797,242.0373],[527.5234,-61.408,240.0263],[528.5289,-61.4266,239.7656],[528.0634,-61.7245,238.7042],[528.3613,-61.9852,237.5684],[530.242,-62.19,236.5629],[532.644,-62.0969,236.5629],[534.4316,-62.5066,234.8312],[536.2191,-62.339,235.4829],[538.1184,-62.2087,234.0305],[540.9301,-61.799,234.4215],[543.5369,-61.5197,233.3602],[545.641,-61.2404,234.8126],[546.8327,-61.2404,233.6209],[548.1548,-61.017,233.416],[549.421,-60.4583,235.0733],[550.892,-60.0673,235.1477],[550.8547,-60.3652,233.6022],[551.5995,-60.2349,233.174],[551.4692,-60.4956,230.232],[554.4485,-60.0301,229.0216],[554.4485,-60.0301,227.4203],[555.5098,-59.8625,226.6941],[557.5953,-59.5273,226.8431],[559.327,-59.1363,227.7182],[559.5877,-59.2853,225.4465],[560.2021,-59.1549,225.3907],[561.2076,-58.9873,227.2527],[562.5483,-58.7825,227.2527],[563.7773,-58.6149,228.3699],[567.9296,-57.4418,226.7686],[568.3765,-57.4605,229.0403],[570.7785,-56.7343,228.0348],[570.4433,-57.0322,230.4368],[572.3799,-56.0639,228.5748],[573.2364,-55.7288,229.1892],[575.2846,-54.7978,227.383],[576.4019,-54.444,228.8354],[577.6122,-53.9412,227.8299],[579.6604,-53.4385,228.5561],[580.4239,-53.364,227.0665],[579.6604,-53.4943,225.7817],[580.517,-53.4199,225.9865],[580.5728,-53.4199,225.4838],[582.0624,-53.1219,224.8693],[584.0548,-52.7309,226.0796],[588.0396,-52.0606,226.061],[589.6409,-51.8185,228.0534],[592.2478,-51.4461,228.221],[594.054,-51.1854,227.1968],[595.1712,-51.0178,227.8113],[595.8648,-50.8875,226.6755],[597.266,-50.7571,227.3086],[599.7471,-50.7571,226.6941],[600.5478,-50.7571,223.8824],[604.0671,-50.962,223.2493],[605.6498,-51.1668,220.4377],[609.2435,-51.3902,220.0466],[610.4352,-51.4461,218.0356],[612.5766,-51.4461,218.0915],[613.4517,-51.2599,217.2163],[618.1441,-51.5578,218.5942],[617.1199,-51.5206,217.1605],[618.684,-51.5578,217.2163],[617.6972,-51.353,214.2929],[619.6337,-51.3902,214.0323],[620.2854,-51.3902,212.5612],[622.1288,-51.502,211.7233],[622.166,-51.502,210.1592],[623.1343,-51.3716,209.6565],[623.5626,-51.3344,208.1668],[624.717,-51.0923,207.7944],[625.7039,-50.9061,206.3793],[627.3797,-50.0682,207.3103],[627.3797,-50.1054,206.1],[628.2363,-49.6399,205.0386],[627.5101,-50.1054,202.5249],[627.6777,-49.9006,201.389],[626.3184,-50.5896,200.0297],[625.3874,-50.962,197.1389],[625.6853,-50.6082,195.086],[624.1957,-51.2413,191.6925],[624.5308,-50.9061,190.8918],[624.0653,-51.2599,189.7001],[623.4695,-51.893,189.2904],[623.246,-52.9357,185.6222],[623.6557,-52.973,184.8402],[623.0412,-53.6992,182.6616],[623.1343,-54.0343,180.4644],[624.3446,-54.146,178.6955],[625.555,-53.8667,178.3789],[626.7094,-53.9598,176.8334],[626.8584,-54.8536,174.0962],[628.0501,-55.1515,172.0108],[627.9011,-55.5426,169.2177],[630.2287,-55.7846,167.6163],[631.2342,-56.0639,166.0895],[630.0425,-56.3619,163.9481],[632.1838,-56.3432,164.2088],[633.7107,-56.5667,162.4026],[632.37,-56.8274,160.3358],[632.8355,-56.9205,158.8834],[630.3031,-57.0508,157.0214],[628.9625,-57.0881,156.7421],[629.8935,-57.3115,154.1538],[629.5025,-57.6094,151.3608],[631.2528,-57.9074,148.4374],[630.8245,-58.0749,146.1098],[633.5803,-58.0749,145.3836],[634.3624,-58.0749,143.7823],[632.7983,-58.0191,142.1065],[635.8334,-58.0563,139.09],[635.4424,-58.0005,136.2969],[637.9189,-58.0936,134.5652],[634.9396,-57.926,132.9639],[634.6789,-57.8515,131.9956],[629.2604,-57.535,128.4019],[630.0611,-57.6281,127.7315],[628.7577,-57.4605,126.6702],[628.9439,-57.4605,125.4785],[630.6197,-57.7025,124.2123],[631.2714,-57.777,121.6054],[629.4838,-57.535,121.6427],[628.6273,-57.4046,120.0413],[630.0052,-57.6094,118.5889],[628.0315,-57.2743,118.3841],[629.7632,-57.535,117.3041],[627.3239,-56.995,114.2318],[628.8135,-57.0881,110.8429],[628.2177,-56.9577,110.0422],[629.2232,-57.0508,109.2415],[627.7894,-56.8274,108.5712],[628.9439,-56.9205,107.4353],[627.6032,-56.7715,107.4353],[626.728,-56.8088,103.432],[628.2363,-57.0136,102.7244],[626.8677,-56.7808,99.1493],[625.4991,-56.5481,95.5742],[626.0949,-56.4922,92.1667],[626.0205,-56.3619,90.3791],[625.2384,-56.2501,89.6157],[625.797,-56.3619,88.6474],[625.555,-56.2874,87.3067],[623.4695,-56.157,85.4819],[623.004,-56.1384,83.322],[624.4377,-56.157,82.6516],[622.315,-55.915,80.0401],[620.4157,-55.7474,79.4955],[619.6523,-55.5984,77.7591],[618.9075,-55.5612,78.1688],[618.442,-55.5053,77.6288],[617.7158,-55.5053,75.2082],[618.7027,-55.5426,74.482],[619.0564,-55.5798,71.6889],[616.5986,-55.5053,69.3614],[616.3379,-55.4681,67.1642],[613.6565,-55.3564,67.1642],[614.1407,-55.4309,66.0097],[612.6697,-55.4681,65.4697],[613.4703,-55.5798,64.129],[611.6455,-55.5984,63.2166],[610.9752,-55.766,61.876],[612.409,-55.915,60.8891],[611.6455,-56.0826,59.7346],[610.0814,-56.0453,60.256],[611.4221,-56.1384,58.9898],[611.0497,-56.157,58.4871],[608.0332,-55.8777,57.9657],[606.6925,-55.6357,56.2899],[604.4953,-55.226,56.234],[603.8622,-54.9281,54.3534],[602.4657,-54.4998,53.5527],[601.7023,-54.1088,50.89],[602.7078,-54.2764,49.3072],[602.7078,-54.2019,47.7059],[600.7526,-53.755,45.639],[600.9016,-53.1964,39.4757],[601.0506,-52.6378,33.3124],[598.2901,-52.2095,32.2882],[595.6227,-51.2413,29.1786],[592.0243,-50.664,28.8248],[591.1492,-49.6585,25.6221],[586.55,-49.2675,26.4042],[586.55,-49.0254,25.6221],[583.8872,-49.0627,27],[583.8314,-48.9323,26.3483],[583.31,-48.9696,26.8325],[582.6211,-48.3924,25.5849],[581.5597,-47.9827,25.1753],[581.0942,-47.9268,24.1698],[580.2935,-47.7593,24.0394],[580.0142,-47.8896,23.1084],[578.7666,-47.8151,22.6243],[578.8039,-48.2248,20.6877],[577.2025,-48.2993,19.9616],[575.7688,-47.9455,21.4326],[574.5026,-48.0199,21.6932],[572.3426,-48.0944,20.8553],[572.6405,-48.2062,20.5015],[571.635,-48.113,19.9057],[572.2309,-48.2434,19.6078],[571.0951,-48.113,19.1423],[572.1006,-48.3737,17.2616],[571.3185,-48.2993,14.9527],[567.2406,-47.6662,14.7665],[566.3655,-47.5917,11.8245],[563.9448,-47.2379,11.0238],[560.6304,-46.5489,11.9362],[559.2339,-46.3627,9.981],[556.9063,-46.0648,8.9569],[556.4595,-45.6924,6.4432],[555.3609,-45.3945,5.7356],[555.1933,-45.5993,7.9142],[554.6533,-45.469,7.8397],[554.2995,-45.2269,6.257],[552.8471,-45.0407,7.5604],[551.6554,-44.5752,5.7542],[549.3651,-44.0352,5.2701],[547.0189,-43.7,6.2011],[544.8962,-43.1228,4.4136],[543.4252,-42.8621,5.4377],[542.7362,-42.7318,5.1025],[541.7307,-42.6759,6.1639],[540.3342,-42.4152,5.8101],[539.4404,-42.2476,6.4246],[538.0998,-41.7449,5.4935],[535.6419,-41.0932,4.9722],[533.3143,-40.609,2.4957],[531.173,-40.4042,1.7695],[528.9013,-40.5159,0.0378],[528.4917,-40.6463,-1.6194],[527.1882,-41.0746,-3.3698],[526.3876,-41.2794,-2.5877],[524.8421,-41.9125,-4.487],[523.7807,-42.1359,-7.5221],[522.589,-42.5269,-6.2001],[522.1421,-42.5083,-7.5035],[520.8946,-42.8807,-5.0642],[519.5911,-43.1414,-5.4739],[517.9153,-43.5324,-2.9973],[516.4443,-43.7373,-2.3456],[514.8616,-44.2586,-2.3829],[512.8506,-44.4635,-0.7629],[510.0389,-44.8359,-2.7553],[507.6369,-44.8917,-1.1539],[504.8438,-45.0593,-0.7629],[503.0749,-45.3014,-2.2525],[502.6466,-45.5621,-4.487],[501.0453,-45.6179,-3.2953],[500.1329,-45.7855,-4.338],[498.4198,-45.32,-3.5746],[496.6509,-45.9717,-3.6304],[496.5764,-45.86,-2.4574],[493.9137,-45.7483,0.2985],[493.2433,-45.8972,-0.2229],[491.6978,-45.8041,0.4474],[490.562,-45.9717,-0.074],[488.7931,-46.1393,0.4102],[487.9365,-46.1765,1.2667],[486.8193,-46.5117,1.0805],[484.138,-46.7165,2.8122],[480.628,-47.1075,4.246],[477.1181,-47.4986,5.6797],[476.6154,-47.4055,6.6666],[475.9636,-47.4613,6.7039],[475.9636,-47.2565,7.6907],[475.163,-47.3496,8.1749],[474.3623,-47.6848,7.97],[473.6361,-47.6475,9.1804],[471.0106,-47.7965,9.5155],[469.7072,-47.8337,11.9176],[464.9776,-48.1689,15.4927],[464.3818,-48.113,14.3568],[462.0542,-48.1689,15.2134],[460.0991,-48.0758,14.9899],[458.7584,-48.1317,16.2933],[456.0957,-48.0944,16.9451],[453.8427,-48.0386,11.5638],[452.7068,-48.0572,14.6175],[451.031,-48.0013,11.6196],[449.9696,-48.0199,15.083],[448.3869,-47.9641,12.2155],[447.5117,-48.0013,16.014],[447.4372,-48.0572,19.8126],[449.2434,-48.0758,19.4216],[448.2379,-48.0199,20.6877],[449.7089,-48.0199,20.5015],[450.1,-47.9641,22.0843],[449.2434,-47.9082,23.816],[447.9028,-47.9082,23.816],[447.251,-47.9827,24.9146],[445.9662,-47.9827,24.1139],[445.6311,-47.7779,27.149],[445.2773,-47.9455,25.9573],[445.1842,-47.9827,27.689],[441.5718,-48.0199,28.7876],[440.4174,-48.0386,31.9531],[436.4512,-48.0944,35.0254],[433.2485,-48.1317,35.2116],[431.6472,-48.1317,37.2226],[430.4369,-48.0758,36.0309],[426.4521,-48.113,38.8426],[421.6481,-48.2062,38.8426],[417.6447,-48.2993,41.6357],[414.442,-48.2062,40.0157],[412.822,-48.1689,40.1274]],"expectedDistance":1080.08,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-26173","objectiveId":"creature-26173","objectiveName":"Lorgus Jett","checkpoints":[[412.822,-48.1689,40.1274],[414.442,-48.2062,40.0157],[417.6447,-48.2993,41.6357],[421.6481,-48.2062,38.8426],[426.4521,-48.113,38.8426],[430.4369,-48.0758,36.0309],[431.6472,-48.1317,37.2226],[433.2485,-48.1317,35.2116],[436.4512,-48.0944,35.0254],[440.4174,-48.0386,31.9531],[441.5718,-48.0199,28.7876],[445.1842,-47.9827,27.689],[445.2773,-47.9455,25.9573],[445.6311,-47.7779,27.149],[445.9662,-47.9827,24.1139],[447.251,-47.9827,24.9146],[447.9028,-47.9082,23.816],[449.2434,-47.9082,23.816],[450.1,-47.9641,22.0843],[449.7089,-48.0199,20.5015],[448.2379,-48.0199,20.6877],[449.2434,-48.0758,19.4216],[447.4372,-48.0572,19.8126],[447.5117,-48.0013,16.014],[448.3869,-47.9641,12.2155],[449.9696,-48.0199,15.083],[451.031,-48.0013,11.6196],[452.7068,-48.0572,14.6175],[453.8427,-48.0386,11.5638],[456.0957,-48.0944,16.9451],[458.7584,-48.1317,16.2933],[460.0991,-48.0758,14.9899],[462.0542,-48.1689,15.2134],[464.3818,-48.113,14.3568],[464.9776,-48.1689,15.4927],[469.7072,-47.8337,11.9176],[471.0106,-47.7965,9.5155],[474.4368,-47.3124,9.3852],[477.1181,-47.4986,5.6797],[480.628,-47.1075,4.246],[484.138,-46.7165,2.8122],[486.8193,-46.5117,1.0805],[487.9365,-46.1765,1.2667],[488.7931,-46.1393,0.4102],[490.562,-45.9717,-0.074],[490.8413,-46.3255,-1.9732],[492.5171,-46.2324,-1.9546],[493.9695,-46.2324,-3.016],[494.1185,-46.4,-4.729],[495.664,-46.3069,-5.2132],[496.3157,-46.2138,-4.6359],[496.3902,-46.2696,-5.4552],[497.3584,-46.1021,-5.1015],[498.0846,-46.1021,-5.9952],[499.7046,-45.9345,-5.5483],[500.8777,-45.8972,-6.3863],[502.9073,-45.6924,-6.3676],[503.2611,-45.5248,-9.0117],[506.5197,-44.8731,-12.0375],[509.7782,-44.2214,-15.0633],[516.1464,-43.4207,-18.7502],[512.6085,-43.9607,-19.1412],[511.9754,-44.0911,-20.575],[509.9272,-44.2586,-21.7667],[511.212,-43.9979,-23.4425],[509.2382,-44.0724,-24.1315],[509.1451,-44.0724,-25.0811],[513.3533,-43.8676,-26.5335],[513.763,-43.7745,-27.3155],[516.6864,-43.4021,-27.7997],[516.8726,-43.1042,-28.6003],[518.2505,-41.9311,-29.2707],[518.0084,-42.0242,-30.0341],[518.8091,-41.4097,-30.8162],[520.4104,-40.4228,-31.0955],[520.6339,-40.5904,-32.0824],[521.509,-40.2739,-31.952],[521.7697,-40.4415,-32.6782],[522.8497,-40.1994,-32.4548],[523.1849,-40.2553,-33.4044],[525.3076,-39.9015,-33.7954],[526.2759,-39.8456,-35.7133],[527.6165,-39.5104,-35.9926],[527.7841,-39.6035,-37.3519],[528.3427,-39.3242,-36.4023],[528.3427,-39.4918,-38.0967],[529.2365,-39.3987,-38.3388],[530.8751,-39.1939,-37.3892],[531.8061,-39.1567,-38.5809],[533.8543,-39.0263,-37.3892],[533.7612,-39.138,-38.4133],[534.5247,-39.3056,-39.4746],[535.7164,-39.2311,-38.0967],[536.126,-39.3056,-41.0387],[536.9267,-39.3242,-43.4594],[537.7646,-39.3801,-43.8132],[538.7515,-39.4732,-48.2634],[539.5335,-39.4732,-48.1517],[540.1666,-39.4173,-50.0696],[541.4328,-39.287,-50.1069],[541.8425,-39.1939,-51.4475],[543.9466,-38.8401,-51.522],[546.3858,-38.5236,-49.511],[548.8623,-38.2256,-49.5669],[550.4451,-38.2629,-47.9655],[552.4375,-38.1698,-48.3752],[554.374,-38.0394,-47.9097],[556.087,-37.7043,-49.7717],[557.707,-37.5367,-49.1945],[559.718,-37.4994,-45.8614],[560.1463,-37.5367,-42.7146],[561.3752,-37.3691,-42.5842],[562.5856,-36.7919,-38.8229],[563.7773,-36.736,-40.1636],[564.8759,-36.345,-38.4319],[566.831,-36.0471,-38.7671],[567.9668,-35.6002,-37.0912],[569.3261,-35.3767,-37.4823],[569.773,-35.1719,-37.0167],[570.5364,-35.1719,-37.4078],[570.8158,-35.0416,-36.7747],[571.9516,-34.9298,-36.8492],[573.3667,-34.5202,-35.192],[575.0984,-34.2223,-35.5271],[576.6998,-33.6264,-33.7209],[579.7721,-32.9375,-34.5961],[582.5652,-32.0995,-33.4603],[584.7438,-31.7458,-34.894],[584.8183,-31.634,-34.1492],[585.3024,-31.5968,-34.8568],[585.9913,-31.2244,-33.6837],[587.3879,-30.7589,-34.0002],[588.5051,-30.2375,-33.2182],[589.8271,-29.7348,-33.423],[590.423,-29.232,-32.5479],[591.6147,-28.8224,-32.5479],[592.2292,-28.4313,-31.8217],[593.216,-28.3382,-32.0637],[594.296,-27.7796,-30.872],[597.4708,-27.5003,-33.6092],[597.5639,-26.9976,-31.5051],[598.6672,-27.1838,-34.0002],[598.7416,-26.6252,-31.2631],[599.8775,-26.3645,-31.8589],[600.734,-25.359,-27.2969],[603.4712,-24.8004,-27.1107],[607.5304,-23.9624,-23.6101],[610.5097,-23.8321,-25.0997],[611.3104,-23.6645,-22.828],[614.0476,-23.4038,-22.8467],[615.0903,-23.199,-19.8115],[613.489,-23.2921,-19.0109],[615.2207,-23.1431,-17.1488],[617.6413,-23.0128,-15.9571],[616.5241,-23.1804,-14.5978],[617.8647,-23.1245,-14.3185],[617.7158,-23.199,-13.8344],[621.2723,-22.6404,-13.611],[622.0916,-22.5659,-12.233],[623.5626,-22.2307,-12.1958],[623.6371,-22.3611,-10.5014]],"expectedDistance":363.92,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-05-creature-27424","objectiveId":"creature-27424","objectiveName":"Twilight Lord Kelris","checkpoints":[[623.6371,-22.3611,-10.5014],[624.8474,-21.7094,-14.1696],[627.8825,-20.797,-13.7599],[628.5528,-20.5549,-14.5234],[631.3086,-19.2701,-14.542],[631.9231,-18.9722,-15.2682],[633.3196,-18.5253,-15.1564],[633.8783,-18.4694,-16.1806],[634.9955,-18.1343,-15.7151],[635.7962,-18.1715,-17.7819],[637.6396,-18.1901,-20.1653],[638.0492,-18.2274,-18.9736],[637.5837,-18.097,-15.9013],[639.2595,-18.0225,-16.3854],[639.9299,-17.7246,-15.1192],[641.1961,-17.3895,-14.9516],[641.6616,-17.2591,-14.002],[643.0209,-17.4639,-16.8881],[644.3243,-17.5012,-17.5399],[644.827,-17.4267,-14.1137],[646.7635,-17.5384,-14.6537],[647.0615,-17.7432,-13.0337],[648.2904,-17.5757,-13.5551],[648.9794,-17.5012,-12.3634],[648.607,-17.5943,-11.1158],[649.8731,-17.4267,-10.0545],[651.2697,-17.3708,-9.7938],[652.4428,-17.5384,-8.4531],[653.4855,-17.6315,-8.4904],[656.7068,-18.246,-10.3524],[655.2358,-18.097,-8.5648],[657.5075,-18.6556,-7.5407],[657.3771,-18.786,-4.8966],[658.904,-19.326,-3.4442],[661.1943,-19.8287,-3.8911],[662.4046,-20.1639,-2.8856],[661.2502,-20.0335,-2.3643],[661.846,-20.4618,-0.5581],[662.5164,-20.5549,-0.7443],[662.1067,-20.8528,1.5088],[662.5164,-21.1321,2.5143],[664.6018,-21.728,3.3894],[663.4474,-21.9142,5.2887],[664.3039,-22.3052,6.2197],[665.8494,-23.5714,10.3534],[667.7859,-24.5211,12.8672],[669.0521,-25.061,13.1279],[669.9086,-25.5638,14.1892],[672.8879,-26.7741,15.1016],[672.4783,-26.7369,15.3996],[674.5824,-27.3327,16.1071],[675.2341,-27.6679,17.2057],[676.6678,-28.0031,17.3361],[676.6678,-28.1706,18.025],[677.7292,-28.1706,17.7271],[678.7533,-28.5058,18.8071],[678.8837,-28.8596,20.0919],[680.7085,-28.9341,20.3153],[681.2298,-29.4182,21.7863],[683.2967,-29.5858,21.8236],[684.1346,-29.921,23.0153],[685.736,-30.2561,23.518],[685.978,-29.9954,22.4194],[688.1007,-30.7403,25.2311],[690.6145,-30.6658,25.4732],[692.0669,-30.8334,27.1863],[693.6124,-30.5354,26.1249],[695.4744,-30.4423,26.6835],[696.573,-30.9078,29.4393],[698.4909,-30.4051,28.1545],[699.7571,-30.4423,28.7504],[701.0047,-29.6417,26.9814],[702.9039,-29.3251,27.54],[705.0825,-29.623,28.8062],[705.8646,-29.2879,28.4338],[706.9445,-29.6603,28.8435],[708.2293,-29.4182,28.5083],[709.5374,-29.8651,28.9179],[710.394,-29.6417,28.5828],[711.8696,-30.0141,28.8435],[713.4012,-29.6789,28.2476],[715.1887,-30.312,28.3221],[715.9708,-30.312,31.4131],[717.1625,-30.2747,30.8358],[718.8011,-30.2747,32.9027],[719.1735,-30.2747,30.1283],[720.8307,-30.312,30.389],[720.3838,-30.2003,27.5214],[721.6314,-30.0699,26.0132],[724.0706,-30.1816,25.7897],[723.8286,-30.0327,23.5925],[726.1002,-30.2003,24.3187],[725.672,-30.0699,23.3505],[723.5306,-29.9023,21.9539],[725.0575,-29.9023,20.6319],[724.2196,-29.9023,19.4774],[725.6161,-29.9582,18.6209],[724.1451,-29.9396,18.0809],[723.7727,-29.9396,16.8333],[725.1134,-29.9582,15.1016],[723.3817,-29.9396,13.5003],[722.6555,-29.9582,11.6941],[724.6479,-29.9768,10.9493],[722.4506,-29.9768,9.3479],[724.6479,-29.9768,6.3501],[723.2327,-29.9582,3.3522],[721.6872,-29.9396,4.0225],[723.3817,-30.3492,1.155],[723.3196,-32.6209,-3.407],[723.2575,-34.8926,-7.969],[723.1955,-37.1643,-12.531],[723.4375,-37.6112,-15.2123],[721.8362,-37.6112,-15.2123],[720.1976,-37.6484,-16.5902],[719.9369,-37.6856,-20.035],[721.7989,-37.6856,-22.1018],[719.9369,-37.6856,-24.7087],[721.7989,-37.6856,-28.1162],[719.9369,-37.6856,-30.9837],[719.9369,-37.6856,-33.8513],[721.7989,-37.6856,-37.5195],[719.9369,-37.6856,-40.6477],[719.9369,-37.6856,-46.9042],[721.7989,-37.6856,-50.0324],[721.7989,-37.6856,-53.7006],[719.9369,-37.6856,-57.1081],[721.7989,-37.6856,-59.9756],[724.1823,-37.6856,-59.3612],[724.7037,-37.6856,-57.0895],[726.2306,-37.6484,-57.4433],[727.3478,-37.6112,-55.2088],[730.1781,-36.8105,-55.5626],[735.0194,-34.4085,-55.395],[739.8607,-32.0064,-55.2275],[743.3241,-30.2375,-55.7861],[743.3799,-30.1258,-55.1157],[743.7337,-29.9954,-57.1081],[745.4654,-29.9582,-55.9537],[747.9978,-29.9396,-56.2143],[748.7985,-29.921,-59.0074],[751.1632,-29.921,-58.9515],[752.4294,-29.921,-57.164],[753.6956,-29.921,-58.9702],[754.9618,-29.921,-57.3129],[755.297,-29.921,-58.8398],[755.7625,-29.921,-58.9702],[755.8928,-29.921,-56.9778],[758.239,-29.921,-60.3667],[762.9872,-29.921,-60.9067],[766.0409,-29.921,-57.1826],[771.3105,-29.921,-58.9702],[772.0367,-29.921,-56.4936],[772.5208,-29.921,-58.095],[773.9918,-29.921,-56.233],[775.3325,-29.921,-58.0391],[776.729,-29.921,-58.4302],[777.5111,-29.8837,-60.1619],[781.3655,-29.772,-61.037],[785.2385,-29.6975,-56.5681],[789.9681,-29.5858,-59.2308],[790.8432,-29.5858,-58.8212],[791.588,-29.5858,-55.0971],[794.9211,-29.5858,-55.0971],[797.5093,-29.5858,-58.8212],[800.8424,-29.5858,-58.8212],[801.5872,-29.5858,-55.0971],[804.9202,-29.5858,-55.0971],[806.8381,-29.623,-59.1564],[809.9663,-29.5858,-56.6054],[809.9663,-29.623,-58.5233],[811.3815,-29.5858,-54.3895],[811.6422,-29.5858,-56.6985],[815.8504,-29.623,-54.6875],[819.8351,-29.623,-58.5605],[819.891,-29.623,-63.1597],[815.8318,-29.6603,-63.8859],[817.7683,-29.623,-68.5038],[815.1987,-29.623,-72.3396],[816.5021,-29.4927,-76.436],[815.5152,-29.3251,-76.7712],[815.72,-28.9899,-77.7581],[815.0869,-28.9155,-77.8884],[814.8821,-28.5244,-79.0801],[815.5897,-26.8858,-83.5676],[814.2676,-26.5321,-84.5545],[813.467,-26.4017,-86.0069],[814.6587,-26.3645,-87.031],[814.6028,-26.141,-88.3158],[813.5973,-25.9734,-88.7813],[815.0683,-25.8059,-89.7868],[814.8449,-25.6755,-91.1648],[816.1669,-25.6197,-92.9523],[815.4966,-25.5824,-94.4233],[817.6938,-25.6755,-95.6895],[817.9731,-25.7872,-98.7619],[817.5634,-25.7128,-100.1584],[818.3641,-25.75,-101.5549],[818.1779,-25.7872,-102.2252],[818.8483,-25.7872,-102.6908],[818.3083,-25.7872,-103.1563],[818.7738,-25.7872,-103.9569],[818.2338,-25.7872,-104.4224],[819.1648,-25.7872,-104.888],[819.5744,-25.7872,-107.141],[823.9176,-25.7872,-109.3382],[827.3857,-25.7872,-107.141],[831.1889,-25.7872,-109.4127],[833.9261,-25.7872,-107.2155],[836.5888,-25.7872,-109.7479],[836.3281,-25.7872,-113.2113],[834.0564,-25.7872,-113.8816],[834.0006,-25.7872,-115.1478],[836.0674,-25.7872,-115.6878],[833.7213,-25.7872,-115.7622],[833.5816,-25.7872,-120.8922],[833.442,-25.7872,-126.0221],[829.0801,-25.7872,-125.9197],[824.7183,-25.7872,-125.8172],[821.618,-25.7872,-130.9472],[818.5177,-25.7872,-136.0771],[816.6464,-25.7872,-141.2442],[814.775,-25.7872,-146.4114],[818.8087,-25.7872,-146.4486],[822.8423,-25.7872,-146.4858],[819.0414,-25.8059,-147.1213],[815.2406,-25.8245,-147.7567],[822.5816,-25.8617,-148.8972],[822.2465,-25.899,-150.2425],[815.1847,-25.899,-150.5777],[822.3954,-25.899,-150.9128],[823.1961,-25.899,-151.5645],[818.9832,-25.8245,-153.0356]],"expectedDistance":610.68,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-06-creature-27433","objectiveId":"creature-27433","objectiveName":"Aku'mai","checkpoints":[[818.9832,-25.8245,-153.0356],[814.5865,-25.7872,-153.5383],[810.1898,-25.75,-154.0411],[811.2511,-25.5079,-155.9776],[810.4505,-25.5079,-156.7782],[811.6608,-25.0797,-157.9699],[812.4615,-24.819,-162.3644],[811.2511,-25.2472,-166.7774],[811.6422,-25.0797,-171.5814],[809.5008,-25.75,-174.3745],[816.3764,-25.8245,-175.9014],[815.3709,-25.8617,-178.3034],[819.209,-25.8617,-178.3313],[823.0471,-25.8617,-178.3592],[822.5816,-25.8245,-179.5696],[819.8421,-25.8059,-182.9398],[817.1026,-25.7872,-186.3101],[821.7763,-25.7872,-191.9149],[819.2416,-25.7872,-195.2107],[816.7069,-25.7872,-198.5065],[819.4441,-25.7872,-199.4375],[816.6324,-25.7872,-200.9644],[819.3696,-25.7872,-201.5602],[823.9735,-25.7872,-203.7015],[824.6997,-25.75,-210.9635],[827.4671,-25.7314,-214.5945],[830.2346,-25.7128,-218.2254],[828.447,-25.8245,-224.3515],[830.8537,-25.8245,-224.7612],[831.133,-25.6755,-230.7569],[830.6117,-25.8245,-232.7493],[833.2371,-25.6755,-235.2817],[834.8385,-25.5824,-236.0824],[837.9295,-23.4597,-234.9465],[835.6392,-25.3031,-238.4844],[834.4288,-25.6569,-240.4768],[833.6468,-25.061,-244.7594],[833.2558,-25.359,-245.5601],[833.6654,-25.359,-246.5842],[833.1068,-25.6755,-247.6828],[833.1254,-25.6755,-248.3532],[833.6282,-25.6755,-248.0739],[833.293,-25.8245,-249.4332],[835.1923,-26.141,-250.0476],[831.431,-26.2527,-254.1441],[834.1309,-26.29,-253.362],[835.7881,-26.29,-254.5538],[832.5854,-26.29,-258.2964],[833.9819,-26.29,-260.8335],[838.8419,-26.29,-258.0963],[835.453,-26.2527,-262.3278],[832.0641,-26.2155,-266.5592],[833.0696,-26.2527,-267.0806],[832.3061,-26.1224,-267.9558],[831.9523,-26.4762,-270.4695],[834.6523,-26.5134,-270.7861],[835.0619,-26.681,-272.797],[836.924,-26.7369,-275.5901],[834.0006,-26.8858,-277.657],[833.1813,-27.1465,-281.6603],[830.9841,-27.4445,-283.5224],[831.8406,-27.6493,-286.6506],[830.7234,-28.4313,-289.1085],[832.5109,-28.7665,-291.734],[832.5296,-29.4741,-294.918],[831.1703,-29.9768,-296.7801],[832.6971,-29.9396,-298.3069],[833.1627,-30.9637,-303.651],[836.1233,-31.0568,-306.1089],[838.1343,-31.4478,-308.9205],[837.1474,-32.2485,-310.9688],[835.6019,-32.714,-311.3598],[836.9798,-33.105,-313.0915],[836.1978,-33.0678,-312.626],[836.9612,-33.1981,-313.706],[836.4398,-33.3285,-313.8177],[836.775,-33.5333,-314.786],[836.1047,-33.7381,-314.9349],[836.7564,-33.7381,-317.2625],[836.0116,-33.8685,-317.4487],[836.4585,-33.8126,-318.6962],[835.5833,-33.9802,-319.4969],[836.0674,-33.9057,-320.7072],[835.5274,-34.0361,-322.2341],[836.3281,-33.8871,-323.5561],[835.844,-33.9988,-324.0217],[836.4771,-33.8685,-324.4685],[835.2854,-33.9802,-325.083],[835.695,-33.943,-326.312],[834.5033,-33.9057,-328.1554],[833.1068,-33.8685,-327.3919],[832.1758,-33.6637,-328.6581],[831.9709,-33.4961,-330.9857],[830.202,-33.3657,-331.2277],[829.5317,-33.2726,-333.2201],[830.2579,-33.2912,-334.6911],[829.0662,-33.2354,-339.2904],[830.4627,-33.3285,-339.9607],[830.7234,-33.3657,-342.6979],[829.9972,-33.3285,-345.6958],[828.6007,-33.2168,-347.6881],[830.7234,-33.403,-348.6564],[830.8537,-33.403,-350.5184],[829.662,-33.403,-352.7901],[827.4602,-33.4774,-354.0377],[828.1864,-33.645,-356.9611],[827.7953,-33.6823,-357.7617],[829.4572,-33.7195,-358.3576],[825.7611,-33.7568,-360.1079],[828.1119,-33.7568,-362.4913],[825.91,-33.7754,-366.2899],[828.1119,-33.7754,-369.4926],[826.7712,-33.7754,-373.0351],[829.7737,-33.7754,-373.8358],[828.9172,-33.7754,-376.3728],[830.9841,-33.7754,-374.7109],[829.1965,-33.7754,-377.7693],[831.7847,-33.7754,-374.9716],[832.5109,-33.7568,-377.7693],[832.1758,-33.7381,-384.3097],[835.4716,-33.9057,-386.4418],[838.7674,-34.0733,-388.5738],[839.7356,-34.1664,-390.3986],[842.7149,-34.3898,-393.3034],[845.6942,-34.5947,-395.4075],[846.7555,-34.6878,-395.4075],[846.2528,-33.7195,-401.9991],[845.6848,-34.1385,-408.5162],[845.1169,-34.5574,-415.0333],[844.0742,-34.5574,-418.1802],[844.4466,-34.6133,-418.5153],[843.3107,-34.3154,-419.0181],[842.7335,-34.0547,-420.1912],[844.0742,-34.334,-420.8056],[843.4411,-34.0174,-422.7049],[844.9493,-34.2781,-423.729],[844.3907,-33.9802,-425.1628],[845.8245,-34.2781,-425.4049],[846.5321,-34.0174,-429.762],[848.1334,-34.2409,-430.7117],[850.8892,-34.0919,-437.5267],[850.1817,-33.9057,-437.9922],[851.4106,-34.0919,-438.1598],[851.6527,-33.8499,-440.6363],[847.2583,-33.7754,-444.6397],[844.9493,-33.8033,-449.9372],[842.6404,-33.8312,-455.2347],[845.0424,-33.8312,-457.2271]],"expectedDistance":443.47,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"f85cc1938d9cfcc35ee6467de94df937bf68efaf81027f9346a537b368a4ee15","generationStatus":"Candidate","generationIssues":[]},{"schemaVersion":1,"id":"primary","dungeonId":"uldaman","mapId":70,"legs":[{"id":"leg-01-creature-27532","objectiveId":"creature-27532","objectiveName":"Revelosh","checkpoints":[[225.2486,-45.9619,46.1313],[225.4245,-45.8753,53.2152],[225.6004,-45.7888,60.2991],[225.7764,-45.7022,67.3829],[225.9523,-45.6157,74.4668],[226.1282,-45.5291,81.5506],[226.3041,-45.4426,88.6345],[226.4801,-45.356,95.7183],[226.656,-45.2694,102.8022],[226.8319,-45.1829,109.8861],[227.0078,-45.0963,116.9699],[227.1838,-45.0098,124.0538],[227.3597,-44.9232,131.1376],[227.5356,-44.8367,138.2215],[227.7116,-44.7501,145.3053],[227.8875,-44.6636,152.3892],[228.0634,-44.577,159.473]],"expectedDistance":113.39,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-54080","objectiveId":"creature-54080","objectiveName":"Ironaya","checkpoints":[[228.0634,-44.577,159.473],[228.5331,-44.7239,166.8793],[229.0027,-44.8709,174.2855],[229.4724,-45.0178,181.6917],[229.942,-45.1647,189.0979],[230.4117,-45.3117,196.5042],[230.8813,-45.4586,203.9104],[231.351,-45.6055,211.3166],[231.8206,-45.7525,218.7228],[232.2903,-45.8994,226.1291],[232.7599,-46.0463,233.5353],[233.2296,-46.1933,240.9415],[233.6992,-46.3402,248.3477],[234.1689,-46.4871,255.754],[234.6386,-46.6341,263.1602],[235.1082,-46.781,270.5664],[235.5779,-46.9279,277.9726],[236.0475,-47.0749,285.3789],[236.5172,-47.2218,292.7851],[236.9868,-47.3687,300.1913],[237.4565,-47.5157,307.5975]],"expectedDistance":148.45,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-27553","objectiveId":"creature-27553","objectiveName":"Ancient Stone Keeper","checkpoints":[[237.4565,-47.5157,307.5975],[237.4565,-47.5157,306.7306],[231.9816,-47.5157,306.3928],[237.524,-47.5157,305.4583],[236.8597,-47.5157,302.5984],[231.8578,-47.5157,300.3353],[236.6008,-47.5157,296.8674],[233.1413,-47.4481,296.2594],[236.0716,-47.3806,295.0547],[233.9999,-47.3806,293.6585],[236.1194,-47.4481,292.2624],[234.7571,-47.617,290.596],[236.8288,-47.8872,289.729],[236.4347,-48.225,287.7361],[239.1369,-48.4952,287.1394],[237.5381,-48.5628,283.9417],[240.1953,-48.5628,282.1966],[242.7849,-48.5966,284.7974],[246.5793,-48.5628,282.5906],[249.518,-48.5966,284.865],[253.0534,-48.5966,284.9326],[255.1814,-48.5628,282.6019],[257.6472,-48.529,284.6736],[259.4487,-48.4615,282.4668],[260.4508,-48.4952,279.8659],[263.6597,-48.4277,279.7533],[264.065,-48.4615,278.8863],[265.326,-48.3939,278.9989],[264.718,-48.529,278.2558],[265.3823,-48.5628,277.8842],[264.1889,-48.7992,277.31],[262.7702,-49.2046,275.3959],[261.1714,-49.4298,275.79],[260.7885,-49.5311,274.2587],[259.6176,-49.7901,273.3242],[260.0117,-49.7563,271.7254],[258.0188,-50.1841,269.5636],[257.5346,-50.2855,269.8338],[257.3207,-50.2517,269.2146],[256.8928,-50.2855,269.7438],[255.3616,-50.2517,268.4574],[252.9746,-50.2517,269.7184],[248.1218,-50.2517,269.0541],[247.3224,-50.2179,265.4596],[243.3366,-50.1841,263.4555],[239.7337,-50.1841,263.0501],[238.923,-49.7225,259.0503],[237.3242,-49.4973,258.2508],[234.9231,-49.8238,258.6562],[233.3215,-49.6212,257.0686],[231.3258,-49.6212,256.2692],[229.7157,-49.5986,256.8209],[228.4209,-49.3397,255.8639],[227.3175,-49.2046,255.8977],[226.3942,-49.4973,257.2037],[225.9438,-49.3622,256.6182],[225.4147,-49.7225,258.082],[224.7729,-49.7225,258.2058],[224.3675,-49.3284,256.8097],[221.5865,-49.7112,258.8251],[219.177,-49.5198,258.4423],[218.0398,-49.4973,259.2754],[217.308,-49.3735,258.386],[217.1503,-49.3397,255.2221],[214.7634,-49.3735,254.0174],[212.9168,-49.3735,257.5865],[213.401,-49.4298,260.1537],[212.6691,-49.6212,261.3472],[209.8093,-49.9139,261.7187],[208.5933,-50.0828,262.4843],[207.4561,-50.1841,262.2254],[207.0507,-49.9815,262.991],[205.9811,-50.0152,262.5969],[205.5195,-49.7563,263.599],[203.3915,-49.5536,263.644],[201.5112,-49.0244,265.8424],[199.0679,-49.092,265.4033],[196.9849,-49.0019,266.4955],[198.0433,-48.7992,267.8269],[195.7464,-49.0695,266.9233],[194.8569,-49.1032,268.2998],[192.1885,-49.4072,268.1647],[190.9837,-49.2046,270.8021],[188.912,-48.6303,271.8718],[188.9233,-48.529,273.0765],[189.7227,-48.5966,273.8759],[189.9929,-48.225,277.006],[187.9888,-48.2926,277.3325],[186.3787,-48.2588,279.3254],[188.2477,-47.9548,281.6674],[185.8495,-48.0899,281.8025],[185.7144,-47.9886,283.4013],[187.5159,-47.7183,284.6623],[186.8516,-47.6508,285.9909],[185.0501,-47.7859,286.5314],[186.6489,-47.6508,287.7361],[186.2548,-47.6508,288.9409],[184.5209,-47.7521,288.5355],[185.0501,-47.9548,290.2695],[183.2373,-48.4952,291.2603],[182.573,-49.1933,293.5347],[184.0818,-49.1595,293.9062],[184.093,-49.6212,295.111],[182.6519,-50.0828,295.5388],[183.9242,-50.1504,297.8019],[181.7849,-50.5895,298.7928],[182.8545,-50.5219,300.7294],[179.4204,-50.9948,299.9975],[179.8033,-50.9272,300.5042],[179.1164,-51.0624,300.2902],[178.7336,-51.7267,302.7785],[177.7428,-52.3234,303.8707],[178.013,-52.6837,305.9199],[176.7407,-53.089,309.2526],[177.5401,-53.0215,309.2752],[176.8421,-53.1228,310.57],[177.6302,-53.089,312.0337],[176.5268,-53.1904,314.263],[177.5739,-53.0215,316.1771],[176.7182,-53.0215,317.1792],[175.536,-53.1904,316.7964],[172.9238,-52.5261,317.1341],[172.8563,-52.4247,317.866],[171.325,-51.9293,318.8681],[169.7262,-51.5015,319.6787],[168.1837,-51.1299,319.5436],[166.4722,-50.4544,322.6062],[165.7404,-50.2855,321.6829],[165.3801,-50.1504,323.4956],[163.9361,-49.8576,321.0411],[163.9361,-49.6887,320.039],[160.7779,-49.5198,320.9736],[158.2445,-49.3622,319.9039],[157.051,-49.2946,320.7033],[155.3171,-49.0019,319.4761],[154.315,-48.9343,320.8722],[153.2454,-48.833,318.8005],[152.446,-48.833,320.0053],[152.6149,-48.6641,322.6287],[151.3651,-48.5628,322.4373],[151.1624,-48.4615,323.0903],[149.7663,-48.3601,322.6962],[147.1091,-47.358,324.0586],[147.8409,-46.9865,325.6574],[147.2442,-46.3222,327.8643],[145.5103,-45.793,328.9226],[144.0465,-45.5228,328.3822],[143.72,-45.1512,330.1837],[142.6504,-44.7909,329.722],[143.1796,-44.7909,331.0619],[141.5808,-44.532,331.9964],[140.7251,-44.4081,330.848],[140.9728,-44.3068,329.1028],[139.4077,-44.2392,328.0782],[140.0157,-44.3406,327.3576],[139.4865,-44.3406,326.2317],[137.8202,-44.273,324.7679],[138.5182,-44.2392,323.4619],[137.7188,-44.0366,321.469],[139.0249,-44.1942,319.9377],[138.1579,-43.9915,318.4064],[139.2726,-44.2505,317.3593],[137.6287,-43.8226,316.7513],[138.856,-44.1604,316.5036],[137.4036,-43.8001,315.8168],[137.7413,-43.9352,315.1525],[136.5141,-43.665,313.9365],[138.0566,-43.9014,312.8669],[137.6287,-44.0703,310.8177],[138.7885,-44.532,308.4983],[137.5387,-44.6558,306.2351],[137.4936,-44.7459,304.6814],[138.8447,-45.0499,304.0734],[138.1579,-45.2188,302.5871],[139.419,-45.6917,301.3937],[138.3944,-45.8606,299.7273],[140.1283,-45.9619,298.7928],[140.1396,-45.9957,297.588],[138.9348,-46.0632,296.4733],[139.7793,-46.0294,294.7732],[138.4394,-45.8943,294.0413],[138.8447,-45.9281,293.6585],[137.3473,-45.6917,293.1631],[138.6196,-45.8606,292.5776],[137.2797,-45.6579,291.8795],[138.248,-46.0294,290.0781],[136.3114,-45.8606,289.1323],[137.0433,-46.1646,287.601],[134.3185,-45.8943,286.644],[134.1834,-46.0632,284.516],[131.5149,-45.6917,283.649],[130.8169,-45.6579,282.4555],[132.0892,-45.8606,281.262],[130.5692,-45.6917,280.3275],[130.8619,-45.8943,278.1319],[128.9253,-45.8268,276.9948],[129.4432,-46.0632,275.3284],[127.7769,-45.8268,275.3959],[128.0583,-45.793,273.8534],[125.9979,-45.4214,273.2567],[126.133,-45.3877,271.793],[122.7777,-45.3539,270.8021],[122.7102,-45.489,269.0541],[121.922,-45.6917,267.8578],[122.1134,-45.9957,266.2449],[120.0417,-46.401,264.9163],[120.3457,-46.8626,263.7792],[119.9516,-47.1216,261.7863],[119.0622,-46.964,260.0861],[119.9291,-47.1216,258.2171],[119.4675,-47.1892,257.0123],[120.6159,-47.617,255.8526],[120.1543,-47.921,254.2538],[122.226,-48.2588,253.4544],[122.0571,-48.2926,252.6437],[124.568,-48.3263,251.9794],[123.9825,-48.2926,250.4932],[125.2097,-48.1237,249.5136],[124.8044,-47.921,247.0591],[126.2231,-47.5495,245.3252],[126.1555,-47.4481,243.3323],[125.2548,-47.7183,242.06],[126.3132,-47.7521,241.2606],[123.9825,-48.1912,239.6505],[125.1872,-48.0561,239.5829],[123.1155,-48.3939,238.1192],[128.2385,-47.5832,237.196],[128.7452,-47.6508,234.7977],[127.4166,-47.8872,232.0505],[127.4954,-47.8872,231.0033],[126.2569,-48.0223,229.8774],[126.8761,-47.9886,229.0668],[126.9887,-48.1237,227.0401],[124.3766,-48.7992,226.7361],[125.2435,-48.5628,225.5313],[124.4441,-48.4615,224.7319],[125.3786,-48.1912,223.4596],[124.7143,-47.921,222.4575],[123.442,-47.8535,222.5927],[123.5208,-47.5832,221.7932],[122.0571,-47.4819,221.9284],[123.048,-47.0203,220.4872],[122.181,-46.7613,219.8904],[120.5934,-46.7275,220.2395],[119.5914,-46.1983,218.7758],[119.8616,-45.793,217.1319],[117.2494,-45.2863,214.7337],[117.0242,-44.7234,210.928],[115.842,-44.3293,209.9935],[115.9096,-43.6988,207.3363],[114.5134,-43.2934,207.0661],[114.5134,-42.9219,205.8613],[113.1848,-42.8881,206.8522],[113.714,-42.5165,205.1858],[111.9913,-42.2801,205.7262],[110.6515,-41.9198,205.3997],[111.9801,-41.7622,203.6658],[110.0998,-41.537,203.9585],[105.8775,-41.0303,207.2575],[104.2224,-40.8952,209.2954],[103.5581,-40.4561,207.9556],[101.7229,-40.1521,207.4602],[99.8425,-40.5574,209.712],[101.3626,-40.9628,210.8942],[100.1578,-41.3568,212.4931],[98.2437,-41.7847,214.3621],[95.5528,-41.9536,215.1728],[94.2354,-42.6517,217.3233],[92.22,-42.9219,217.8638],[92.1187,-43.3948,218.6632],[91.1841,-44.0253,218.8658],[90.9702,-44.622,219.5076],[89.5966,-46.0632,219.9805],[88.223,-46.2997,219.5639],[88.4031,-46.2321,219.091],[87.2659,-46.5361,219.4175],[86.9844,-46.5023,217.83],[85.2505,-46.9302,217.7849],[84.057,-47.4256,219.3162],[81.974,-48.2588,218.3029],[81.1071,-48.9343,219.8004],[80.4428,-48.9006,218.3592],[79.7785,-49.137,218.7195],[79.7109,-49.3284,220.2282],[78.5287,-49.4861,219.0572],[75.3311,-49.5761,222.5927],[71.6605,-49.6437,219.4513],[66.121,-49.6775,220.6561],[64.5897,-49.6437,225.5989],[65.9295,-49.6437,228.3349],[64.2632,-49.4861,228.0647],[64.1956,-49.3622,228.5263],[59.9846,-47.7183,228.5939],[58.8475,-47.6508,227.254],[58.1381,-47.7859,227.3779],[57.5414,-47.9548,226.6573],[55.2783,-48.1912,227.3891],[53.0489,-48.1912,226.2069],[49.9188,-48.2588,227.3328],[48.6465,-48.1912,224.2027],[44.5256,-48.1912,220.5885],[44.4018,-48.2588,223.7861],[37.7926,-48.1912,222.8854]],"expectedDistance":643.91,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-27491","objectiveId":"creature-27491","objectiveName":"Galgann Firehammer","checkpoints":[[37.7926,-48.1912,222.8854],[44.4018,-48.2588,223.7861],[44.5256,-48.1912,220.5885],[48.6465,-48.1912,224.2027],[49.9188,-48.2588,227.3328],[53.0489,-48.1912,226.2069],[55.2783,-48.1912,227.3891],[57.5414,-47.9548,226.6573],[58.1381,-47.7859,227.3779],[58.8475,-47.6508,227.254],[59.9846,-47.7183,228.5939],[64.1956,-49.3622,228.5263],[64.2632,-49.4861,228.0647],[65.9295,-49.6437,228.3349],[64.5897,-49.6437,225.5989],[66.121,-49.6775,220.6561],[71.6605,-49.6437,219.4513],[75.3311,-49.5761,222.5927],[78.5287,-49.4861,219.0572],[79.7109,-49.3284,220.2282],[79.7785,-49.137,218.7195],[80.4428,-48.9006,218.3592],[81.1071,-48.9343,219.8004],[81.974,-48.2588,218.3029],[84.057,-47.4256,219.3162],[85.2505,-46.9302,217.7849],[86.9844,-46.5023,217.83],[87.2659,-46.5361,219.4175],[88.4031,-46.2321,219.091],[88.223,-46.2997,219.5639],[89.5966,-46.0632,219.9805],[90.9702,-44.622,219.5076],[91.1841,-44.0253,218.8658],[92.1187,-43.3948,218.6632],[92.22,-42.9219,217.8638],[94.2354,-42.6517,217.3233],[95.5528,-41.9536,215.1728],[98.2437,-41.7847,214.3621],[100.1578,-41.3568,212.4931],[101.3626,-40.9628,210.8942],[99.8425,-40.5574,209.712],[101.7229,-40.1521,207.4602],[103.5581,-40.4561,207.9556],[104.2224,-40.8952,209.2954],[105.8775,-41.0303,207.2575],[110.0998,-41.537,203.9585],[111.9801,-41.7622,203.6658],[110.6515,-41.9198,205.3997],[111.9913,-42.2801,205.7262],[113.714,-42.5165,205.1858],[113.1848,-42.8881,206.8522],[114.5134,-42.9219,205.8613],[114.5134,-43.2934,207.0661],[115.9096,-43.6988,207.3363],[115.842,-44.3293,209.9935],[117.0242,-44.7234,210.928],[117.2494,-45.2863,214.7337],[119.8616,-45.793,217.1319],[119.5914,-46.1983,218.7758],[120.5934,-46.7275,220.2395],[122.181,-46.7613,219.8904],[123.048,-47.0203,220.4872],[122.0571,-47.4819,221.9284],[123.5208,-47.5832,221.7932],[123.442,-47.8535,222.5927],[124.7143,-47.921,222.4575],[125.3786,-48.1912,223.4596],[124.4441,-48.4615,224.7319],[125.2435,-48.5628,225.5313],[124.3766,-48.7992,226.7361],[126.9887,-48.1237,227.0401],[126.8761,-47.9886,229.0668],[126.2569,-48.0223,229.8774],[127.4954,-47.8872,231.0033],[127.4166,-47.8872,232.0505],[128.7452,-47.6508,234.7977],[128.2385,-47.5832,237.196],[123.1155,-48.3939,238.1192],[125.1872,-48.0561,239.5829],[123.9825,-48.1912,239.6505],[126.3132,-47.7521,241.2606],[125.2548,-47.7183,242.06],[126.1555,-47.4481,243.3323],[126.2231,-47.5495,245.3252],[124.8044,-47.921,247.0591],[125.2097,-48.1237,249.5136],[123.9825,-48.2926,250.4932],[124.568,-48.3263,251.9794],[122.0571,-48.2926,252.6437],[122.226,-48.2588,253.4544],[120.1543,-47.921,254.2538],[120.6159,-47.617,255.8526],[119.4675,-47.1892,257.0123],[119.9291,-47.1216,258.2171],[119.0622,-46.964,260.0861],[120.3457,-46.8626,263.7792],[119.8503,-46.097,266.5292],[121.922,-45.6917,267.8578],[122.7102,-45.489,269.0541],[122.7777,-45.3539,270.8021],[126.133,-45.3877,271.793],[125.9979,-45.4214,273.2567],[128.0583,-45.793,273.8534],[127.7769,-45.8268,275.3959],[129.4432,-46.0632,275.3284],[128.9253,-45.8268,276.9948],[130.8619,-45.8943,278.1319],[130.5692,-45.6917,280.3275],[132.0892,-45.8606,281.262],[130.8169,-45.6579,282.4555],[131.5149,-45.6917,283.649],[134.1834,-46.0632,284.516],[134.3185,-45.8943,286.644],[137.0433,-46.1646,287.601],[136.3114,-45.8606,289.1323],[138.248,-46.0294,290.0781],[137.2797,-45.6579,291.8795],[138.6196,-45.8606,292.5776],[137.3473,-45.6917,293.1631],[138.8447,-45.9281,293.6585],[138.4394,-45.8943,294.0413],[139.7793,-46.0294,294.7732],[138.9348,-46.0632,296.4733],[140.1396,-45.9957,297.588],[140.1283,-45.9619,298.7928],[138.3944,-45.8606,299.7273],[139.419,-45.6917,301.3937],[138.1579,-45.2188,302.5871],[138.8447,-45.0499,304.0734],[137.4936,-44.7459,304.6814],[137.5387,-44.6558,306.2351],[138.7885,-44.532,308.4983],[137.6287,-44.0703,310.8177],[138.0566,-43.9014,312.8669],[139.2839,-44.1717,314.0829],[137.4036,-43.8001,315.8168],[138.856,-44.1604,316.5036],[137.6287,-43.8226,316.7513],[139.2726,-44.2505,317.3593],[138.1579,-43.9915,318.4064],[136.0524,-43.6312,318.733],[135.7259,-43.8339,319.8702],[134.3073,-43.9352,319.7463],[133.1363,-44.1717,320.7709],[132.5733,-44.0028,322.1445],[133.8344,-44.0366,324.0136],[132.7647,-43.8001,325.5448],[133.9357,-44.0028,326.6933],[133.035,-44.0028,328.1908],[131.0421,-43.969,329.3843],[128.9816,-43.9014,329.1816],[128.4524,-43.969,331.6474],[127.3828,-43.9014,332.3117],[127.1351,-43.8339,333.7641],[125.7389,-43.9014,334.0343],[126.1668,-43.8339,335.2841],[124.872,-44.0366,336.0301],[124.2752,-44.2955,337.3727],[122.5188,-44.6896,337.871],[122.1247,-44.7459,339.481],[120.7173,-44.7121,340.0102],[120.3457,-44.6108,341.9356],[118.6231,-44.5545,342.0707],[117.1931,-44.3631,343.6695],[118.4542,-44.4869,344.4013],[117.2269,-44.4531,344.863],[118.274,-44.5432,346.1803],[116.3712,-44.4869,346.9122],[116.7428,-44.4869,347.8467],[115.1552,-44.4644,347.9931],[116.1573,-44.5207,349.3217],[114.9863,-44.5883,350.3913],[111.1018,-45.534,351.8775],[110.6064,-45.7029,351.4722],[108.546,-46.5023,353.8141],[107.8479,-46.8063,353.375],[107.4538,-46.8739,354.2645],[106.3842,-47.3017,353.1949],[105.1232,-47.6958,354.0055],[104.0423,-48.1237,352.9134],[103.5131,-48.2588,353.1048],[102.9726,-48.4277,351.9],[101.7454,-48.529,351.8325],[101.0135,-48.4615,353.2962],[99.8763,-48.4952,352.9697],[99.5836,-48.3939,354.5235],[96.8814,-48.1575,353.7015],[94.8772,-48.0899,354.8387],[93.8076,-48.5966,353.1048],[92.6816,-48.7992,353.5101],[91.4206,-49.2271,351.9113],[89.2588,-49.3509,352.8683],[89.6529,-49.0244,354.6698],[87.3898,-49.4185,355.6606],[87.7951,-49.3847,357.1356],[87.5024,-49.6437,357.7774],[86.1175,-50.353,358.1264],[85.577,-50.7584,356.9329],[84.3835,-50.5895,359.41],[82.8523,-50.7246,359.0835],[80.9044,-50.7246,360.4684],[81.1071,-50.5557,362.1235],[79.9699,-50.7921,361.0876],[78.8552,-50.9272,361.5042],[76.6371,-51.2988,360.3332],[75.1734,-51.1975,362.6977],[72.6288,-50.4881,365.5688],[70.4333,-50.4544,364.1164],[68.857,-50.3868,364.8482],[69.3186,-49.8238,365.9066],[66.1435,-50.1504,366.7848],[65.3215,-50.1166,367.4942],[64.2519,-50.3192,367.2239],[63.6214,-50.2855,368.0008],[62.5518,-50.4544,367.1001],[61.7861,-50.353,368.3386],[60.4238,-50.4881,367.9783],[58.4534,-50.657,366.6047],[56.1677,-50.4881,367.7644],[54.3775,-50.3868,367.9783],[54.6703,-50.5219,366.751],[54.0735,-50.4206,366.751],[53.3304,-50.0603,364.0601],[49.6036,-49.2609,362.9904],[48.7591,-48.9343,361.7519],[45.6853,-48.2926,362.2136],[43.7487,-47.5269,361.4141],[44.5819,-47.7296,360.2319],[42.4877,-47.0315,360.0743],[42.8142,-47.1216,358.8695],[41.587,-46.7275,358.0701],[39.9881,-46.2997,358.2165],[39.3238,-46.1646,356.415],[38.029,-45.9957,355.1089],[36.8918,-45.7254,355.503],[36.4302,-45.793,353.3975],[33.7843,-45.0499,353.4538],[32.3768,-44.4531,354.9851],[30.7105,-44.0591,353.7916],[27.9857,-43.361,353.1386],[27.1188,-43.0232,353.6002],[27.0625,-42.9219,354.2532],[24.3856,-42.145,352.8346],[24.2505,-42.3477,352.2378],[20.0845,-41.9648,351.7762],[19.0149,-41.9874,350.29],[18.1592,-41.9874,350.4926],[17.6525,-42.0437,349.5243],[16.8756,-41.9874,350.0423],[16.5266,-41.8297,349.0402],[15.5358,-41.537,349.5131],[15.3106,-41.0979,347.2612],[14.2409,-40.9628,348.7362],[13.6329,-40.8277,347.6102],[11.2685,-40.8952,348.9163],[10.2777,-40.9965,351.1006],[8.5437,-41.0979,351.9676],[8.9266,-41.0979,353.2624],[7.8907,-41.2668,353.3863],[8.296,-41.537,355.1202],[6.8886,-41.9311,355.9196],[6.5171,-42.2576,357.2032],[7.1701,-42.2576,358.4867],[5.6388,-42.4828,358.7119],[6.1117,-42.449,359.8378],[4.8957,-42.5841,359.8941],[4.1751,-42.6179,360.8287],[4.8732,-42.5841,362.0221],[3.3082,-42.753,362.8216],[4.4904,-42.753,364.2627],[3.5559,-42.8205,364.9383],[6.5959,-43.057,367.8432],[7.3953,-43.2934,370.4328],[6.1905,-43.5637,372.0542],[6.776,-43.665,374.4074],[5.8415,-43.7663,375.8711],[6.99,-43.5974,378.4495],[3.5896,-43.5299,379.992],[4.0963,-43.3948,382.0074],[1.0563,-43.3272,381.8723],[2.1935,-43.3948,383.336],[5.5262,-43.5637,385.205],[4.1864,-43.5974,387.0628],[5.9203,-43.7663,389.6637],[1.2252,-44.9823,394.5277],[-0.8803,-44.9148,393.7734],[-3.1209,-45.0499,394.6403],[-4.427,-45.3877,397.1624],[-2.5692,-45.489,398.0181],[-4.8661,-45.6241,398.8175],[-0.8127,-45.7592,399.1215],[1.0788,-45.7592,401.0018],[1.8332,-46.3897,402.9497],[3.4095,-47.4819,404.6161],[5.6614,-47.7859,405.5421],[6.9224,-47.7859,406.7497],[5.9879,-47.7521,408.6863],[6.6071,-47.5157,413.069],[8.206,-47.2229,413.8684],[9.9174,-47.1329,411.6053],[11.7189,-46.6374,413.069],[12.0454,-46.5023,415.4109]],"expectedDistance":612.82,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-05-creature-27528","objectiveId":"creature-27528","objectiveName":"Grimlok","checkpoints":[[12.0454,-46.5023,415.4109],[5.8336,-46.0049,418.9914],[-0.3782,-45.5074,422.5718],[-6.59,-45.01,426.1523],[-12.8018,-44.5125,429.7327],[-19.0136,-44.0151,433.3132],[-25.2255,-43.5176,436.8936],[-31.4373,-43.0201,440.4741],[-37.6491,-42.5227,444.0546],[-43.8609,-42.0252,447.635],[-50.0727,-41.5278,451.2155],[-56.2845,-41.0303,454.7959]],"expectedDistance":79.06,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-06-creature-33537","objectiveId":"creature-33537","objectiveName":"Archaedas","checkpoints":[[-56.2845,-41.0303,454.7959],[-58.1301,-41.4383,447.7754],[-59.9758,-41.8462,440.7549],[-61.8214,-42.2541,433.7344],[-63.6671,-42.6621,426.7139],[-65.5128,-43.07,419.6934],[-67.3584,-43.4779,412.673],[-69.2041,-43.8859,405.6525],[-71.0497,-44.2938,398.632],[-72.8954,-44.7017,391.6115],[-74.7411,-45.1097,384.591],[-76.5867,-45.5176,377.5705],[-78.4324,-45.9255,370.55],[-80.278,-46.3334,363.5295],[-82.1237,-46.7414,356.509],[-83.9694,-47.1493,349.4885],[-85.815,-47.5572,342.468],[-87.6607,-47.9652,335.4475],[-89.5063,-48.3731,328.427],[-91.352,-48.781,321.4065],[-93.1976,-49.189,314.386],[-95.0433,-49.5969,307.3655],[-96.889,-50.0048,300.345],[-98.7346,-50.4128,293.3245],[-100.5803,-50.8207,286.304],[-102.4259,-51.2286,279.2835],[-104.2716,-51.6366,272.263]],"expectedDistance":189.03,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-07-creature-29650","objectiveId":"creature-29650","objectiveName":"Obsidian Sentinel","checkpoints":[[-104.2716,-51.6366,272.263],[-97.441,-51.2468,275.2066],[-90.6105,-50.8571,278.1502],[-83.7799,-50.4673,281.0938],[-76.9493,-50.0776,284.0374],[-70.1188,-49.6879,286.981],[-63.2882,-49.2981,289.9245],[-56.4576,-48.9084,292.8681],[-49.6271,-48.5186,295.8117],[-42.7965,-48.1289,298.7553],[-35.9659,-47.7391,301.6989],[-29.1354,-47.3494,304.6425],[-22.3048,-46.9596,307.586],[-15.4742,-46.5699,310.5296],[-8.6437,-46.1801,313.4732],[-1.8131,-45.7904,316.4168],[5.0175,-45.4007,319.3604],[11.848,-45.0109,322.304],[18.6786,-44.6212,325.2476],[25.5092,-44.2314,328.1911],[32.3398,-43.8417,331.1347],[39.1703,-43.4519,334.0783],[46.0009,-43.0622,337.0219],[52.8315,-42.6724,339.9655],[59.662,-42.2827,342.9091],[66.4926,-41.893,345.8526],[73.3232,-41.5032,348.7962],[80.1537,-41.1135,351.7398],[86.9843,-40.7237,354.6834],[93.8149,-40.334,357.627],[100.6454,-39.9442,360.5706],[107.476,-39.5545,363.5141],[114.3066,-39.1647,366.4577],[121.1371,-38.775,369.4013],[127.9677,-38.3853,372.3449],[134.7983,-37.9955,375.2885],[141.6288,-37.6058,378.2321],[148.4594,-37.216,381.1756],[155.29,-36.8263,384.1192],[162.1205,-36.4365,387.0628]],"expectedDistance":290.47,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"39bede37e3e01f0d4fe1eb4f6faed8ad973dcd27aac79c8ecf445556a1a1874d","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"gnomeregan","mapId":90,"legs":[{"id":"leg-01-creature-30137","objectiveId":"creature-30137","objectiveName":"Viscous Fallout","checkpoints":[[331.6592,-152.8086,-1.869],[336.3853,-152.8086,1.3941],[339.6484,-152.8086,-2.0696],[345.2449,-152.8086,0.1909],[350.7139,-152.8086,3.053],[350.9873,-152.8086,7.4463],[356.201,-152.8086,8.3031],[358.261,-152.8086,6.7172],[357.1307,-152.8086,9.1235],[358.3157,-152.8086,8.1938],[358.9902,-152.8086,8.85],[357.7141,-152.8086,11.311],[360.6491,-152.8086,9.4516],[360.3209,-152.9727,14.5924],[365.9174,-153.1367,13.9908],[366.7834,-153.2826,17.7279],[367.6493,-153.4284,21.465],[373.5739,-153.5925,20.4624],[374.1482,-153.7474,24.4],[374.7224,-153.9024,28.3376],[380.6471,-154.0847,27.2621],[384.5118,-154.3946,32.5851],[383.3268,-154.5587,38.3275],[387.4467,-154.7227,40.7338],[390.163,-154.7227,38.3275],[389.4338,-154.7227,41.0073],[390.637,-154.7227,40.0046],[390.1812,-154.7227,42.5933],[391.3844,-154.7227,41.8458],[391.8583,-154.7227,42.1011],[390.9286,-154.7227,43.3042],[393.5172,-154.7227,42.7756],[395.0485,-154.7227,43.1766],[392.387,-154.7227,45.984],[396.5252,-154.7227,48.6455],[402.1217,-154.7227,47.9163],[401.5748,-154.7227,43.5959],[405.8405,-154.7227,44.1975],[407.3171,-154.7227,37.9994],[411.0542,-154.7227,39.4577],[413.2418,-154.7227,34.7362],[415.7028,-154.7227,39.4577],[419.841,-154.7227,34.7362],[422.2473,-154.7227,39.4577],[426.4401,-154.7227,34.7362],[428.7006,-154.7227,39.4577],[433.0393,-154.7227,34.7362],[435.318,-154.7227,39.4577],[439.6567,-154.7227,39.4577],[441.8442,-154.7227,34.7362],[446.1146,-154.7227,39.4577],[448.4525,-154.7227,34.7362],[452.6681,-154.7227,39.4577],[455.0562,-154.7227,34.7362],[459.1944,-154.7227,39.4577],[461.7283,-154.7227,34.7362],[464.007,-154.7227,39.5307],[466.3404,-154.7227,34.9368],[467.2702,-154.7227,40.6609],[471.937,-154.7227,40.4604],[472.5659,-154.7227,44.161],[473.1948,-154.7227,47.8616],[476.859,-154.6863,48.3903],[475.984,-154.7227,51.2524],[474.8902,-154.7957,52.7654],[475.8199,-155.4155,53.6952],[479.9034,-156.5092,51.854],[477.8981,-156.728,55.4999],[478.6273,-156.8374,56.7578],[481.6534,-156.8738,59.0365],[483.3852,-156.9103,62.3725],[485.8645,-156.9103,64.1043],[485.7733,-156.8738,64.7788],[487.9973,-155.8712,65.1799],[488.9818,-155.5795,64.8335],[489.5286,-155.0509,65.8544],[492.2813,-154.7774,64.3778],[493.4116,-154.7227,67.8597],[497.4039,-154.7227,65.7997],[500.1201,-154.7227,68.6071],[501.8519,-154.7227,72.1983],[501.2686,-154.7227,76.3912],[504.8963,-154.7227,77.6217],[508.524,-154.7227,78.8522],[507.0656,-154.7227,82.5164],[511.7324,-154.7227,83.9793],[507.011,-154.7227,85.4422],[507.011,-154.7227,87.1239],[511.6778,-154.7227,87.6708],[506.938,-154.7227,92.0824],[511.6048,-154.7227,96.0747],[509.235,-154.7227,99.9668],[506.8651,-154.7227,103.8588],[511.6048,-154.7227,107.9787],[509.1985,-154.7227,111.8161],[506.7922,-154.7227,115.6534],[511.459,-154.7227,119.7916],[509.0527,-154.7227,123.5651],[506.6464,-154.7227,127.3387],[511.3861,-154.7227,131.5315],[506.5917,-154.7227,135.4691],[511.2038,-154.7227,137.8025],[505.2062,-154.7227,139.0604],[507.5943,-154.7227,143.3262],[500.9222,-154.7227,143.3808],[501.2504,-154.6863,147.7924],[495.0523,-154.6863,147.3185],[495.1252,-154.6498,151.9853],[490.4584,-154.6863,151.9124],[492.336,-154.6498,155.1208],[487.5963,-154.6863,155.1208],[492.2631,-154.6498,157.5818],[488.9271,-154.6498,160.9178],[491.2605,-154.6134,165.457],[493.7944,-154.6134,167.991],[498.7893,-154.6134,166.3138],[498.7893,-154.6134,172.5302],[503.5108,-154.5769,170.5431],[505.1151,-154.5769,172.0927],[502.253,-154.6863,175.5928],[505.5161,-154.7592,172.4573],[505.3703,-154.9233,173.1135],[508.998,-155.0144,170.0327],[513.6101,-155.142,172.2203],[519.1884,-155.2149,167.7722],[524.4021,-155.2149,168.3191],[525.9334,-155.2149,161.0637],[529.7981,-155.2149,162.9413],[530.7278,-155.2149,157.6],[534.2462,-155.2149,157.9282],[536.9806,-155.2149,163.5976],[542.6501,-155.2149,161.3918],[546.4601,-155.2149,167.3894],[551.1816,-155.2149,164.8555],[551.6555,-155.2149,169.6499],[552.1295,-155.2149,170.0509],[556.5229,-155.2149,167.3165],[559.4032,-155.2149,173.0406],[557.325,-155.2149,179.4392],[550.0513,-155.2149,180.8429],[550.4342,-155.2149,186.3665],[546.5695,-155.2149,190.254],[541.9026,-155.2149,193.467],[537.4364,-155.2149,192.0588],[535.5769,-155.2149,198.2614],[531.3112,-155.2149,198.1338],[530.4544,-155.2149,203.3338],[532.5326,-155.2149,205.7219],[534.5378,-155.2149,203.9172],[534.9936,-155.2149,207.7272],[538.6578,-155.2149,208.2741],[540.8453,-155.2149,210.3523],[539.2411,-155.2149,212.0841],[539.1135,-155.3425,213.4696],[540.5172,-155.4337,212.7951],[541.2464,-156.1993,217.9176],[546.5148,-156.6733,216.3316],[552.1113,-157.9494,220.725],[552.0384,-158.715,226.7226],[556.1218,-159.3531,229.2565],[559.786,-159.3895,227.3242],[562.9944,-159.426,227.5976],[565.8018,-159.426,230.5873],[569.867,-159.3895,228.7825],[568.8097,-159.426,225.8476],[572.9296,-160.2828,225.7199],[575.263,-161.4495,222.8579],[581.0783,-163.1449,221.0349],[581.607,-164.2569,216.5139],[585.7998,-165.1866,216.3134],[584.6149,-165.4783,213.4878],[585.417,-165.5694,212.6675],[586.9118,-165.5694,212.5216],[589.227,-165.533,214.217],[591.0864,-166.2075,211.282],[594.4225,-167.0825,210.6257],[594.8418,-168.1945,206.1959],[597.1752,-168.9784,204.9381],[597.8132,-170.1451,200.2667],[600.4201,-171.1295,198.2022],[602.6441,-171.2206,200.0662],[602.4436,-171.8587,196.2516],[603.1181,-171.8587,195.0302],[605.6338,-171.8222,196.6025],[606.7458,-171.8587,195.4905],[606.1442,-172.4238,192.0041],[608.3318,-173.39,189.8165],[610.8839,-173.6634,191.3296],[613.9647,-175.0671,188.2442],[614.6939,-176.2703,183.468],[619.2331,-177.4187,182.9393],[618.8321,-178.0568,179.2752],[621.1108,-178.0932,179.5304],[620.1264,-178.0932,176.5225],[622.8608,-178.95,173.788],[626.6344,-179.7339,174.0068],[630.6267,-181.1558,171.4728],[631.6293,-182.359,167.0066],[631.1736,-183.0335,163.5429],[634.4367,-184.2367,161.2095],[636.5696,-184.346,159.7876],[635.7128,-184.2731,159.2589],[637.5722,-184.1455,157.6547],[635.6399,-183.9814,156.9984],[635.4394,-183.8903,155.9411],[639.6504,-183.8903,151.6024],[636.4602,-183.8538,147.6648],[635.2571,-183.8174,143.2715],[640.6531,-183.8174,140.8834],[636.0865,-183.8174,138.6138],[631.52,-183.8174,136.3442],[636.9889,-183.8174,132.1331],[632.4223,-183.8174,129.6265],[627.8558,-183.8174,127.1199],[623.2528,-183.8174,126.9194],[618.6498,-183.8174,126.7189],[618.0482,-183.8174,123.9844],[617.4466,-183.8174,126.3178],[615.3137,-183.2523,122.2526],[613.5819,-182.6324,126.3178],[613.035,-182.4319,124.0573],[612.4334,-182.2314,123.8568],[612.3788,-182.2314,126.3907],[611.5766,-182.8877,124.1849],[611.2303,-183.2523,121.25],[609.6808,-184.6377,120.7213],[606.6182,-187.5362,118.2603],[605.0139,-188.9217,120.3202],[602.2977,-191.5285,118.6431],[601.842,-191.9661,125.7892],[599.0528,-194.6094,122.1979],[598.0502,-195.5391,115.0519],[593.4745,-199.7319,115.3253],[591.9979,-201.0445,116.2003],[591.1229,-201.7919,116.0909],[585.7269,-202.0289,117.3488],[583.1018,-202.0289,116.4009],[575.7917,-201.9195,116.0363],[571.0155,-201.8466,118.1691],[567.6066,-201.7007,117.7316],[563.8877,-201.6278,115.8175],[561.4084,-201.7372,118.2967],[558.8381,-201.8101,118.6066],[558.1089,-201.9559,120.8671],[556.2494,-201.9559,120.4661],[554.9187,-202.0289,121.5416],[553.1139,-201.9924,121.013],[551.9837,-202.0106,121.6146],[552.9863,-202.0653,124.0026],[550.9264,-202.0836,125.8621],[550.1789,-202.0836,128.1226],[552.3118,-202.0836,128.9976],[552.4394,-202.0836,130.0002],[549.3768,-202.0836,129.7997],[549.1216,-202.0836,135.8702],[545.7309,-202.0836,141.3391],[543.2608,-202.0836,138.3403],[540.7906,-202.0836,135.3415],[538.758,-202.1565,132.1787],[536.7254,-202.2294,129.0158],[539.4234,-202.2112,128.7424],[539.2776,-202.357,128.1408],[540.7724,-203.1227,126.0808],[536.6525,-203.7242,124.349],[536.6525,-204.3805,122.0703],[540.7724,-204.4352,121.5234],[535.9233,-204.4534,119.2447],[540.7906,-204.4534,115.0519],[538.3661,-204.4352,111.7249],[535.9415,-204.417,108.398],[529.7434,-204.3805,110.8043],[529.1418,-204.3805,105.937],[527.0819,-204.3623,110.8043],[525.6235,-204.344,105.9917],[523.0896,-204.6539,110.8043],[522.014,-204.9821,105.9917],[518.4592,-206.0029,110.8043],[515.98,-206.6957,105.9917],[512.8992,-207.5525,105.937],[512.2976,-207.7165,110.8043],[508.05,-208.1905,106.1557],[505.8078,-208.3819,103.0749],[503.5655,-208.5733,99.9941],[498.9534,-208.9562,98.9732],[497.6409,-208.9197,96.895],[498.1513,-208.9197,96.7127],[497.7503,-208.8103,96.0382],[498.0237,-208.8468,94.4523],[496.1278,-208.0994,91.2256],[496.5289,-208.2634,90.4235],[498.1878,-208.8103,89.6396],[498.0055,-208.8103,86.8505],[497.0758,-208.5369,85.8843],[496.9117,-208.4275,84.3895],[495.8726,-207.5342,83.6922],[496.2736,-207.5342,82.9037],[495.9637,-206.8051,81.6413],[494.7606,-205.9665,81.222],[494.9976,-205.693,79.9095],[493.8855,-205.4378,79.709],[493.9585,-205.2738,78.8157],[492.7553,-205.3467,77.6308],[496.3101,-204.8362,74.6776],[494.9429,-205.0185,70.2933],[493.5756,-205.2008,65.9091],[488.5078,-205.8207,63.9129],[483.4399,-206.4405,61.9168],[480.2679,-206.8415,58.6901],[477.096,-207.2426,55.4634],[480.3044,-206.8415,52.5285],[474.8537,-207.4431,48.0986],[468.8561,-208.1723,46.622]],"expectedDistance":1263.98,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-30133","objectiveId":"creature-30133","objectiveName":"Electrocutioner 6000","checkpoints":[[468.8561,-208.1723,46.622],[470.3053,-208.3074,53.8593],[471.7544,-208.4425,61.0966],[473.2035,-208.5777,68.3338],[474.6526,-208.7128,75.5711],[476.1017,-208.8479,82.8084],[477.5508,-208.9831,90.0457],[479,-209.1182,97.2829],[480.4491,-209.2533,104.5202],[481.8982,-209.3885,111.7575],[483.3473,-209.5236,118.9948],[484.7964,-209.6587,126.232],[486.2456,-209.7939,133.4693],[487.6947,-209.929,140.7066],[489.1438,-210.0641,147.9438],[490.5929,-210.1993,155.1811],[492.042,-210.3344,162.4184],[493.4912,-210.4695,169.6557],[494.9403,-210.6047,176.8929],[496.3894,-210.7398,184.1302],[497.8385,-210.8749,191.3675],[499.2876,-211.01,198.6048],[500.7367,-211.1452,205.842],[502.1859,-211.2803,213.0793],[503.635,-211.4154,220.3166],[505.0841,-211.5506,227.5538],[506.5332,-211.6857,234.7911],[507.9823,-211.8208,242.0284],[509.4315,-211.956,249.2657],[510.8806,-212.0911,256.5029],[512.3297,-212.2262,263.7402],[513.7788,-212.3614,270.9775],[515.2279,-212.4965,278.2148],[516.677,-212.6316,285.452],[518.1262,-212.7668,292.6893],[519.5753,-212.9019,299.9266],[521.0244,-213.037,307.1638],[522.4735,-213.1721,314.4011],[523.9226,-213.3073,321.6384],[525.3718,-213.4424,328.8757],[526.8209,-213.5775,336.1129],[528.27,-213.7127,343.3502],[529.7191,-213.8478,350.5875],[531.1682,-213.9829,357.8248],[532.6173,-214.1181,365.062],[534.0665,-214.2532,372.2993],[535.5156,-214.3883,379.5366],[536.9647,-214.5235,386.7738],[538.4138,-214.6586,394.0111],[539.8629,-214.7937,401.2484],[541.3121,-214.9289,408.4857],[542.7612,-215.064,415.7229],[544.2103,-215.1991,422.9602],[545.6594,-215.3343,430.1975],[547.1085,-215.4694,437.4348],[548.5576,-215.6045,444.672],[550.0068,-215.7396,451.9093],[551.4559,-215.8748,459.1466],[552.905,-216.0099,466.3838],[554.3541,-216.145,473.6211],[555.8032,-216.2802,480.8584],[557.2524,-216.4153,488.0957],[558.7015,-216.5504,495.3329],[560.1506,-216.6856,502.5702]],"expectedDistance":465.08,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-30121","objectiveId":"creature-30121","objectiveName":"Crowd Pummeler 9-60","checkpoints":[[560.1506,-216.6856,502.5702],[566.8736,-217.8251,499.5282],[573.5965,-218.9647,496.4861],[580.3195,-220.1042,493.4441],[587.0424,-221.2437,490.4021],[593.7654,-222.3833,487.36],[600.4883,-223.5228,484.318],[607.2113,-224.6624,481.2759],[613.9342,-225.8019,478.2339],[620.6572,-226.9415,475.1919],[627.3801,-228.081,472.1498],[634.1031,-229.2205,469.1078],[640.8261,-230.3601,466.0657],[647.549,-231.4996,463.0237],[654.272,-232.6392,459.9817],[660.9949,-233.7787,456.9396],[667.7179,-234.9183,453.8976],[674.4408,-236.0578,450.8555],[681.1638,-237.1974,447.8135],[687.8867,-238.3369,444.7715],[694.6097,-239.4764,441.7294],[701.3326,-240.616,438.6874],[708.0556,-241.7555,435.6454],[714.7786,-242.8951,432.6033],[721.5015,-244.0346,429.5613],[728.2245,-245.1742,426.5192],[734.9474,-246.3137,423.4772],[741.6704,-247.4532,420.4352],[748.3933,-248.5928,417.3931],[755.1163,-249.7323,414.3511],[761.8392,-250.8719,411.309],[768.5622,-252.0114,408.267],[775.2851,-253.151,405.225],[782.0081,-254.2905,402.1829],[788.7311,-255.4301,399.1409],[795.454,-256.5696,396.0989],[802.177,-257.7091,393.0568],[808.8999,-258.8487,390.0148],[815.6229,-259.9882,386.9727],[822.3458,-261.1278,383.9307],[829.0688,-262.2673,380.8887],[835.7917,-263.4069,377.8466],[842.5147,-264.5464,374.8046],[849.2377,-265.6859,371.7625],[855.9606,-266.8255,368.7205],[862.6836,-267.965,365.6785],[869.4065,-269.1046,362.6364],[876.1295,-270.2441,359.5944],[882.8524,-271.3837,356.5524],[889.5754,-272.5232,353.5103]],"expectedDistance":365.87,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-30139","objectiveId":"creature-30139","objectiveName":"Mekgineer Thermaplugg","checkpoints":[[889.5754,-272.5232,353.5103],[893.6064,-272.5232,352.7447],[897.6375,-272.5232,351.979],[899.8706,-272.5232,355.9166],[902.1038,-272.5232,359.8543],[899.1027,-272.5232,364.1838],[896.1016,-272.5232,368.5134],[900.2056,-272.5232,371.0473],[904.3096,-272.5232,373.5812],[898.3074,-272.5232,377.373],[901.5204,-272.5232,381.5112],[898.7859,-272.5232,385.4488],[895.5,-272.5232,385.0477],[895.1719,-272.5232,388.2562],[898.312,-272.5232,389.2588],[898.1844,-272.5232,390.389],[894.862,-272.5232,390.9906],[894.7344,-272.5232,392.1209],[897.8562,-272.5232,393.0506],[897.4552,-272.5232,397.1158],[893.5859,-272.5232,399.9232],[892.5833,-272.5232,406.577],[895.4681,-272.5232,410.3688],[894.7389,-272.5232,414.3064],[891.453,-272.5232,414.7075],[894.3926,-272.5232,416.4393],[891.1249,-272.5232,416.8404],[890.9973,-272.5232,418.0435],[894.1374,-272.5232,419.1783],[892.4557,-272.5232,423.0658],[888.714,-272.5232,423.5398],[889.7896,-272.5232,427.2085],[886.0525,-272.5232,426.0054],[884.5759,-272.5232,430.4716],[880.0367,-272.5232,429.5419],[876.7189,-272.5232,432.878],[873.2552,-272.5232,429.8701],[867.9139,-272.5232,431.8571],[867.5675,-272.5232,428.3752],[863.9034,-272.5232,427.719],[860.5673,-272.5232,429.9248],[859.5647,-272.5232,429.7242],[856.575,-272.5232,426.8622],[852.7103,-272.5232,426.5158],[851.7806,-272.5232,429.6513],[847.6607,-272.5232,429.6513],[846.9862,-272.5232,426.3153],[845.2544,-272.5232,426.0601],[844.6528,-272.5232,429.2503],[838.7099,-272.5232,430.1253],[837.3791,-272.5232,426.5956],[836.0484,-272.5232,423.0658],[830.5065,-272.5232,418.996],[824.6365,-272.5232,418.1939],[820.4437,-272.5232,419.2604],[816.2509,-272.5232,420.3268],[813.6623,-272.5232,426.5295],[810.0983,-272.5232,424.9344],[806.5344,-272.5232,423.3393],[804.5292,-272.5232,420.1992],[803.9823,-272.5232,423.4669],[801.5213,-272.5232,420.2539],[800.6462,-272.5232,423.394],[798.9873,-272.5232,419.9804],[796.7086,-272.5232,422.3913],[794.12,-272.5232,421.3887],[793.7189,-272.5232,418.4491],[791.3126,-272.5232,421.7168],[789.7084,-272.5232,418.5221],[785.1829,-272.5232,421.4616],[781.0584,-272.5232,417.8658],[778.447,-272.5232,420.86],[777.7178,-272.5232,417.9205],[777.2438,-272.5232,420.6595],[775.3115,-272.5232,420.4043],[772.176,-272.5232,419.4016],[771.6473,-272.5232,416.3892],[769.5144,-272.5232,415.4595],[767.181,-272.5232,417.0637],[765.9232,-272.5232,416.4575],[768.3295,-272.5232,413.4496],[766.3242,-272.5232,409.986],[761.384,-272.5232,408.5823],[757.1729,-272.5232,412.7205],[757.3187,-272.5232,417.5194],[753.3082,-272.5232,416.1157],[753.3082,-272.6508,419.3287],[749.5711,-272.8149,418.1939],[748.4409,-272.979,423.0658],[744.3756,-273.0154,423.2664],[742.0422,-273.0154,425.7319],[742.7167,-273.0154,428.995],[739.7817,-273.0154,431.2555],[736.5186,-273.0154,429.3779],[735.5889,-273.0154,433.9171],[732.3987,-273.0154,431.93],[732.2529,-273.0154,436.5968],[729.8465,-273.0154,433.6619],[727.9142,-273.0154,434.9197],[728.4429,-273.0154,439.5136],[727.5861,-273.0154,440.4433],[721.2603,-273.0154,438.3104],[717.9243,-273.0154,434.9197],[714.0414,-273.0154,435.7218],[716.2289,-273.0154,434.9926],[715.0258,-273.0154,433.7348],[713.0387,-273.0154,433.5342],[712.7835,-273.0154,432.7321],[713.4398,-273.0154,431.2008],[710.8512,-273.0154,432.0576],[712.1819,-273.0154,430.3987],[711.3798,-273.0154,426.9852],[707.8433,-273.0154,422.4415],[703.6778,-273.0154,422.9177],[699.5123,-273.0154,423.394],[696.4497,-273.0154,418.9892],[693.3871,-273.0154,414.5844],[689.7229,-273.0154,416.2547],[686.0587,-273.0154,417.925],[687.2072,-273.0154,412.7797],[686.6056,-273.0154,411.9776],[679.2545,-273.0154,411.4489],[677.5865,-273.0154,407.5455],[675.9185,-273.0154,403.6421],[668.9137,-273.0154,403.5691],[666.2521,-273.0154,402.7853],[662.9662,-273.0154,404.2436],[664.297,-273.0154,405.5562],[662.2371,-273.0154,406.1031],[663.9689,-273.0154,406.7046],[664.3699,-273.0154,413.5818],[664.771,-273.0154,420.459],[661.1797,-273.0154,414.4568],[656.8411,-273.0154,418.9824],[656.5038,-273.0154,423.1866],[656.1666,-273.0154,427.3908],[649.0387,-273.0154,425.7866],[648.9111,-273.0154,426.4611],[651.7003,-273.0154,430.5263],[647.6077,-273.0154,429.7242],[643.5151,-273.0154,428.9221],[643.9435,-273.0154,432.6866],[644.3719,-273.0154,436.451],[642.1388,-273.0154,439.4862],[639.9056,-273.0154,442.5215],[636.9433,-273.0154,439.5227],[633.981,-273.0154,436.5239],[631.3468,-273.0154,439.7962],[628.7126,-273.0154,443.0684],[627.8102,-273.0154,447.5985],[626.9078,-273.0154,452.1286],[621.9767,-273.0154,452.165],[617.0456,-273.0154,452.2015],[618.905,-273.0154,455.3917],[614.5116,-273.0154,454.5167],[613.9101,-273.0154,459.1835],[607.4385,-273.0154,459.9856],[606.8369,-273.0154,464.5977],[602.7717,-273.0154,469.2645],[605.8525,-273.0154,473.7308],[608.9151,-273.0154,471.7984],[611.1756,-273.0154,473.6579],[612.1053,-273.0154,476.2647],[614.3111,-273.0154,476.8663],[616.3164,-273.0154,478.9992],[614.8398,-273.0154,481.0591],[616.7721,-273.0154,483.1191],[617.7018,-273.0154,487.3119],[612.7069,-273.0154,486.5827],[614.2746,-273.0154,491.4501],[615.8424,-273.0154,496.3174],[618.8138,-273.0154,498.7784],[621.7853,-273.0154,501.2394],[622.715,-273.0154,505.4323],[622.715,-273.0154,510.5731],[625.3765,-273.0154,511.3752],[625.1396,-273.0154,515.3424],[624.9026,-273.0154,519.3097],[626.206,-273.0154,523.6506],[627.5094,-273.0154,527.9916],[629.378,-273.0154,524.4254],[631.2465,-273.0154,520.8592],[631.1189,-273.0154,524.9267],[630.9913,-273.0154,528.9942],[631.9575,-273.0154,525.1181],[632.9237,-273.0154,521.242],[636.4876,-272.9972,523.6483],[640.0515,-272.979,526.0546],[642.9773,-272.9607,529.5935],[645.9032,-272.9425,533.1323],[649.9958,-272.9243,532.3667],[654.0884,-272.906,531.601],[655.328,-272.742,527.9824],[656.3306,-272.6144,527.709],[657.9713,-272.6144,525.3756],[658.7369,-272.7784,525.0292],[664.3198,-272.7146,526.597],[669.9026,-272.6508,528.1647],[672.4411,-272.7784,528.183],[674.3188,-272.6144,528.8575],[676.871,-272.906,528.6934],[679.733,-272.9425,529.532],[681.9571,-273.4347,527.1986],[681.9024,-273.5623,528.1647],[683.379,-274.1639,527.7819],[683.6524,-274.4738,529.5137],[684.728,-275.0207,530.3341],[686.4051,-275.6405,529.2221],[688.064,-276.4244,530.3386],[691.2542,-277.5546,528.461],[692.5668,-278.1015,528.7891],[695.1736,-279.0495,526.7793],[694.7726,-279.1406,529.4454],[696.1033,-279.5963,528.6433],[697.0513,-280.5078,533.187],[699.1112,-281.3464,533.2235],[700.0409,-281.8021,534.7047],[700.3691,-281.8021,533.5334],[701.2441,-281.8933,533.898],[703.7233,-281.8933,531.56],[704.726,-281.9115,533.1323],[708.1167,-281.948,533.8433],[709.5204,-282.5131,536.7099],[712.1819,-283.7527,537.7672],[714.7706,-284.7918,537.4391],[716.5571,-285.6304,538.1683],[717.031,-285.5939,535.5934],[718.2342,-286.0861,535.5934],[718.4894,-286.5054,539.2985],[723.3021,-288.6747,540.447],[727.9871,-290.6436,540.2647],[728.3152,-290.8076,541.2856],[731.2867,-290.8988,542.033],[734.1123,-290.4795,544.6581],[738.5968,-290.6253,545.4875],[743.0813,-290.7712,546.317],[745.6699,-290.7712,547.5566],[748.6414,-290.7712,549.9812],[748.5138,-290.5342,550.5281],[752.4696,-290.6527,553.0893],[756.4255,-290.7712,555.6506],[759.9712,-290.7074,561.794],[763.5168,-290.6436,567.9374],[764.7747,-290.7712,569.3594],[765.6315,-290.7712,571.0547],[765.5221,-290.6436,573.1876],[766.4701,-290.7712,575.8309],[766.1237,-290.5706,576.9247],[766.7253,-290.6982,579.5315],[766.6524,-290.5706,582.1931],[767.5638,-290.7712,584.9275],[767.5456,-290.7712,586.9146],[766.4883,-290.6436,589.5214],[765.1575,-290.6071,596.0841],[765.5039,-290.7347,598.0165],[764.72,-290.9352,600.8056],[767.5274,-290.9717,601.4072],[766.8529,-291.0082,602.4098],[769.1681,-291.0082,603.1937],[767.6185,-291.9379,605.7823],[764.3554,-293.1775,607.9152],[767.3633,-294.1254,611.0507],[766.5065,-295.675,614.5144],[764.3007,-295.7661,614.1862],[766.4336,-296.5318,616.5197],[763.371,-297.5344,618.1056],[763.9361,-298.4094,620.4208],[763.6809,-298.8652,621.4964],[764.7747,-299.0657,622.1891],[764.6289,-299.3391,622.7907],[761.8397,-299.6126,622.7178],[761.5663,-299.8313,623.2647],[763.8997,-299.8313,623.9209],[761.0194,-299.9407,623.9027],[760.6912,-299.9225,625.3064],[763.0429,-299.9407,627.658],[759.9803,-299.9954,629.7362],[761.5845,-299.9954,631.3222],[761.1834,-300.3053,632.58],[761.5845,-300.8704,634.0566],[756.7901,-302.3653,636.463],[758.9229,-303.0945,638.7964],[760.2537,-303.1491,639.325],[757.5739,-304.1153,640.911],[754.0374,-305.9201,644.3245],[757.6286,-307.2691,648.4171],[757.2276,-307.7977,649.602],[754.3655,-308.3993,650.2765],[756.8994,-308.3993,650.9328],[755.8057,-308.7274,651.4797],[758.7224,-308.6545,652.0631],[758.6677,-308.8551,652.7376],[758.1938,-308.9644,654.8704],[755.915,-308.928,654.3965],[753.9098,-308.928,655.7272],[752.9254,-308.9644,657.8601],[753.7092,-308.9644,659.045],[751.704,-309.165,659.9018],[752.7066,-310.1311,662.454],[751.0477,-311.4984,665.2067],[751.9774,-313.6677,670.785],[751.6311,-314.2693,672.1158],[749.4435,-314.1781,671.259],[751.5764,-314.8344,673.3918],[749.1883,-315.0349,673.2642],[746.2533,-315.7823,674.2486],[749.9722,-317.1313,678.4415],[747.9669,-317.6418,679.1889],[745.4512,-317.7694,679.4623],[746.1257,-317.7694,680.2098],[744.9225,-317.7694,680.5014],[745.0501,-317.9152,681.4494],[743.847,-317.7329,681.6499],[742.4068,-317.6782,685.9521],[740.9667,-317.6235,690.2543],[740.7661,-317.7694,692.8065],[739.1619,-317.7694,696.416],[737.3025,-317.6235,698.3301],[734.1488,-317.6965,702.8875],[730.995,-317.7694,707.445],[727.1668,-317.7694,710.0154],[721.4426,-317.5871,712.6587],[716.6664,-317.6235,715.7395],[716.4659,-317.7694,716.3228],[710.9545,-317.7694,717.0581],[705.443,-317.7694,717.7934],[699.9316,-317.7694,718.5286],[697.5799,-317.6235,717.3984],[690.2698,-317.7876,715.8853],[687.2619,-317.9517,718.4193],[683.6524,-317.9517,720.3698],[681.7748,-318.5533,719.8047],[680.5169,-319.3736,716.7421],[676.6522,-320.8137,718.4739],[674.0454,-322.0898,716.7968],[671.5843,-323.2018,716.1223],[670.0485,-323.767,716.7786],[666.7808,-325.2071,716.0494],[665.7235,-325.9728,713.0597],[663.4402,-326.7931,714.2811],[663.7683,-326.9207,711.4737],[662.5652,-326.8842,711.0727],[662.5652,-326.9207,709.1221],[662.1641,-326.7566,708.721],[658.0078,-326.7566,707.8369],[653.8514,-326.7566,706.9528],[649.7406,-326.7566,705.7861],[645.6298,-326.7566,704.6194],[645.0464,-326.629,703.8902],[642.2026,-326.7202,703.7626],[641.9656,-326.7202,702.4136],[634.4914,-326.9207,702.213],[631.757,-326.9389,698.64],[629.0225,-326.9572,695.067],[626.0328,-326.9754,692.0955],[623.0431,-326.9936,689.1241],[622.3869,-326.9936,688.9965],[620.9103,-326.9936,695.3404],[620.1811,-326.9936,694.9941],[619.9076,-326.9936,688.1944],[617.0273,-326.9936,694.192],[616.8997,-326.9936,687.3923],[616.3164,-326.9936,687.0459],[614.5846,-326.9936,693.3898],[609.462,-326.9936,692.6607],[608.8969,-326.9936,688.8598],[608.3318,-326.9936,685.0589],[602.4618,-326.9936,683.4],[600.4292,-326.9936,686.7998],[598.3966,-326.9936,690.1996],[597.2663,-326.9936,689.8715],[592.9276,-326.9572,685.2776],[592.0891,-326.9572,688.9418],[591.2505,-326.9572,692.606],[586.6748,-326.9207,693.007],[579.8934,-326.9572,690.8741],[576.9584,-326.9572,687.5016],[574.0234,-326.9572,684.1291],[569.9855,-327.021,686.2894],[565.9476,-327.0848,688.4496],[561.1168,-327.0119,683.2541],[559.2756,-327.0119,682.6343],[558.8927,-327.1395,689.5069],[554.9734,-327.0119,687.1917],[553.7702,-326.8842,680.3191],[548.119,-326.2827,682.0145],[543.7256,-325.754,684.8219],[540.5172,-325.1524,682.7984],[542.1214,-325.0795,678.004],[541.7203,-325.0795,674.0025],[541.3193,-325.0795,670.0011],[536.3243,-325.0795,671.1952],[531.3294,-325.0795,672.3892]],"expectedDistance":1440.88,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"526488854dcf5af269475bdcd7d81620f5ee2b76633d31623f7794dc89e14028","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"sunken-temple","mapId":109,"legs":[{"id":"leg-01-creature-34521","objectiveId":"creature-34521","objectiveName":"Atal'alarion","checkpoints":[[318.6003,-131.8236,97.9452],[325.4168,-134.2323,98.32],[332.2334,-136.641,98.6949],[339.05,-139.0496,99.0697],[345.8666,-141.4583,99.4446],[352.6832,-143.867,99.8194],[359.4998,-146.2757,100.1943],[366.3163,-148.6844,100.5691],[373.1329,-151.0931,100.944],[379.9495,-153.5018,101.3188],[386.7661,-155.9105,101.6937],[393.5827,-158.3192,102.0685],[400.3993,-160.7279,102.4434],[407.2159,-163.1366,102.8182],[414.0324,-165.5453,103.1931],[420.849,-167.954,103.5679],[427.6656,-170.3627,103.9428],[434.4822,-172.7714,104.3176],[441.2988,-175.1801,104.6924],[448.1154,-177.5888,105.0673],[454.9319,-179.9975,105.4421],[461.7485,-182.4062,105.817],[468.5651,-184.8149,106.1918],[475.3817,-187.2236,106.5667],[482.1983,-189.6323,106.9415]],"expectedDistance":173.74,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-39737","objectiveId":"creature-39737","objectiveName":"Jammal'an and Ogom","checkpoints":[[482.1983,-189.6323,106.9415],[480.3209,-186.3581,100.735],[478.4436,-183.084,94.5285],[476.5663,-179.8099,88.3219],[474.6889,-176.5358,82.1154],[472.8116,-173.2617,75.9088],[470.9342,-169.9876,69.7023],[469.0569,-166.7135,63.4957],[467.1795,-163.4394,57.2892],[465.3022,-160.1653,51.0827],[463.4249,-156.8912,44.8761],[461.5475,-153.6171,38.6696],[459.6702,-150.343,32.463],[457.7928,-147.0689,26.2565],[455.9155,-143.7948,20.0499],[454.0382,-140.5207,13.8434],[452.1608,-137.2465,7.6369],[450.2835,-133.9724,1.4303],[448.4061,-130.6983,-4.7762],[446.5288,-127.4242,-10.9828],[444.6514,-124.1501,-17.1893],[442.7741,-120.876,-23.3958],[440.8968,-117.6019,-29.6024],[439.0194,-114.3278,-35.8089],[437.1421,-111.0537,-42.0155],[435.2647,-107.7796,-48.222],[433.3874,-104.5055,-54.4286],[431.5101,-101.2314,-60.6351],[429.6327,-97.9573,-66.8416],[427.7554,-94.6832,-73.0482],[425.878,-91.409,-79.2547],[424.0007,-88.1349,-85.4613]],"expectedDistance":225.18,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-encounter-492","objectiveId":"encounter-492","objectiveName":"Avatar of Hakkar","checkpoints":[[424.0007,-88.1349,-85.4613],[428.6851,-90.8888,-80.6604],[433.3696,-93.6427,-75.8596],[438.054,-96.3965,-71.0588],[442.7384,-99.1504,-66.2579],[447.4229,-101.9042,-61.4571],[452.1073,-104.6581,-56.6563],[456.7917,-107.412,-51.8554],[461.4762,-110.1658,-47.0546],[466.1606,-112.9197,-42.2538],[470.8451,-115.6735,-37.4529],[475.5295,-118.4274,-32.6521],[480.2139,-121.1813,-27.8513],[484.8984,-123.9351,-23.0505],[489.5828,-126.689,-18.2496],[494.2672,-129.4428,-13.4488],[498.9517,-132.1967,-8.648],[503.6361,-134.9506,-3.8471],[508.3206,-137.7044,0.9537],[513.005,-140.4583,5.7545],[517.6894,-143.2121,10.5554],[522.3739,-145.966,15.3562],[527.0583,-148.7199,20.157]],"expectedDistance":159.52,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-39842","objectiveId":"creature-39842","objectiveName":"Shade of Eranikus","checkpoints":[[527.0583,-148.7199,20.157],[533.4959,-145.9616,17.5921],[539.9335,-143.2033,15.0272],[546.371,-140.4451,12.4623],[552.8086,-137.6868,9.8973],[559.2462,-134.9286,7.3324],[565.6838,-132.1703,4.7675],[572.1214,-129.412,2.2026],[578.5589,-126.6538,-0.3624],[584.9965,-123.8955,-2.9273],[591.4341,-121.1372,-5.4922],[597.8717,-118.379,-8.0571],[604.3093,-115.6207,-10.6221],[610.7468,-112.8625,-13.187],[617.1844,-110.1042,-15.7519],[623.622,-107.3459,-18.3168],[630.0596,-104.5877,-20.8818],[636.4972,-101.8294,-23.4467],[642.9347,-99.0712,-26.0116],[649.3723,-96.3129,-28.5765],[655.8099,-93.5546,-31.1415],[662.2475,-90.7964,-33.7064]],"expectedDistance":156.63,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"b7c9754c16f3e1d9f3ea9908c6537e0bb4758243f424d416595d5f86b6416162","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"razorfen-downs","mapId":129,"legs":[{"id":"leg-01-encounter-434","objectiveId":"encounter-434","objectiveName":"Tuten'kash","checkpoints":[[-189.9204,-10.5914,-100.7695],[-190.0788,-10.4041,-102.728],[-188.7827,-10.2745,-104.3732],[-190.05,-10.0441,-106.7097],[-188.4947,-10.0009,-107.8222],[-189.0707,-9.8713,-109.2335],[-187.8611,-9.8425,-110.0255],[-188.1203,-9.5833,-112.0848],[-189.7332,-9.3097,-113.28],[-189.7476,-9.0073,-115.8002],[-192.6853,-8.4745,-117.8739],[-191.7925,-8.172,-120.4948],[-193.8086,-7.5384,-123.2885],[-192.0805,-7.236,-125.6214],[-193.7798,-6.6456,-128.1991],[-192.5701,-6.4728,-129.3944],[-193.3765,-6.372,-130.1864],[-191.3604,-6.5304,-131.7993],[-192.1525,-6.6312,-134.2042],[-191.7493,-6.8328,-137.0123],[-193.7654,-6.9336,-138.5964],[-194.5574,-7.0056,-140.0509],[-191.9509,-7.1064,-141.4622],[-190.41,-7.236,-143.4638],[-192.1093,-7.1352,-143.7087],[-193.1173,-7.164,-144.7887],[-192.0085,-7.1928,-145.8112],[-195.8103,-7.092,-145.9408],[-189.9924,-7.1496,-147.7552],[-190.1364,-7.2216,-148.3601],[-191.9941,-7.2936,-149.4833],[-191.4901,-7.668,-151.8738],[-192.9445,-7.8408,-153.7891],[-191.0868,-8.2152,-155.4596],[-194.0246,-8.0856,-155.9204],[-195.2342,-8.1144,-156.7269],[-190.1796,-8.4457,-157.7637],[-190.0356,-8.5321,-158.9014],[-188.5091,-8.5321,-159.4342],[-188.1059,-9.3529,-165.4969],[-188.5523,-9.8281,-167.4122],[-187.8179,-9.9721,-167.7434],[-187.9763,-10.3033,-168.665],[-186.781,-10.4617,-169.1978],[-187.1123,-10.793,-170.4507],[-186.277,-10.9658,-171.1563],[-186.5506,-11.1674,-172.5676],[-185.3986,-11.297,-173.5036],[-184.6641,-11.0954,-175.995],[-182.1008,-11.0666,-177.1182],[-181.3664,-10.8938,-178.9327],[-178.9039,-11.0666,-179.6671],[-179.1055,-10.9658,-181.064],[-176.2973,-11.1674,-180.7328],[-175.8941,-11.0666,-181.9424],[-178.0974,-10.4041,-184.3473],[-175.4189,-10.3321,-185.9746],[-175.9229,-10.1737,-186.4642],[-174.4685,-10.1737,-188.1923],[-174.5693,-10.0009,-189.3876],[-173.6764,-10.0297,-190.2228],[-174.2237,-8.9929,-192.7861],[-173.662,-9.3385,-192.5269],[-173.5324,-9.2089,-193.409],[-174.3533,-8.2728,-195.8787],[-173.9356,-8.4312,-196.6275],[-175.2749,-8.1,-199.3636],[-175.0445,-8.4312,-203.4534],[-175.9085,-8.3304,-203.7126],[-175.4909,-8.3016,-206.6648],[-176.5998,-8.244,-205.4839],[-175.9229,-8.244,-208.1768],[-178.0254,-8.0136,-205.9447],[-178.9759,-7.8696,-207.0536],[-180.3007,-7.596,-205.9159],[-181.1072,-7.3944,-206.3192],[-181.2224,-7.5672,-206.996],[-183.3825,-7.0776,-207.9896],[-183.7569,-7.2648,-208.7673],[-185.2546,-6.9336,-209.1273],[-186.853,-6.9336,-210.5098],[-187.4867,-6.7032,-210.3513],[-187.6163,-6.8616,-211.2154],[-190.0932,-6.3144,-211.8202],[-191.6197,-6.5448,-214.0811],[-193.5493,-6.4152,-215.2764],[-194.9606,-7.0056,-218.0125],[-197.3511,-6.804,-220.403],[-198.6472,-7.3368,-224.8672],[-199.5544,-7.164,-226.1489],[-199.396,-7.4664,-227.6898],[-200.4761,-7.3656,-230.7427],[-200.0152,-7.8696,-235.9557],[-200.2601,-7.5672,-236.7046],[-198.5176,-7.5672,-240.2183],[-196.9623,-8.3016,-240.9816],[-196.5591,-8.3016,-242.1912],[-194.9894,-8.7049,-242.7817],[-194.111,-8.9641,-245.0138],[-192.0517,-9.3673,-244.4953],[-190.482,-9.7273,-245.3162],[-191.6773,-9.5689,-246.5114],[-190.0788,-9.8425,-247.6059],[-188.0915,-9.9721,-247.6059],[-187.6307,-9.8425,-249.0027],[-185.7586,-9.8425,-248.1963],[-183.9585,-9.7705,-249.2908]],"expectedDistance":233.82,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-87187","objectiveId":"creature-87187","objectiveName":"Mordresh Fire Eye","checkpoints":[[-183.9585,-9.7705,-249.2908],[-181.6976,-9.7273,-247.6779],[-181.6256,-9.5689,-245.7914],[-179.9407,-9.3961,-245.6474],[-177.1038,-9.7993,-243.8473],[-176.355,-9.7705,-242.5656],[-172.6396,-10.7354,-239.9015],[-170.6523,-10.7642,-240.3767],[-170.2491,-10.8218,-239.2823],[-168.8954,-10.8938,-238.6055],[-167.1817,-10.9658,-238.7207],[-164.4024,-10.793,-240.2903],[-160.7158,-10.8362,-239.6279],[-159.2038,-10.8938,-240.7224],[-157.3605,-10.9658,-240.2183],[-155.762,-10.7786,-240.6072],[-154.2499,-10.6202,-240.0311],[-153.3715,-10.1161,-240.564],[-152.5362,-10.2745,-239.3255],[-151.413,-10.0729,-238.8791],[-150.3761,-10.6346,-237.151],[-149.4401,-10.3321,-237.079],[-149.2529,-10.6634,-236.5318],[-147.6976,-10.2025,-237.295],[-146.848,-10.5337,-236.8198],[-146.0415,-10.2745,-237.007],[-145.7823,-10.6346,-236.4886],[-144.9039,-10.2601,-236.8198],[-143.8382,-10.7066,-236.5894],[-142.2254,-10.5337,-237.871],[-141.5053,-10.865,-238.0006],[-140.5693,-10.6346,-239.2967],[-139.8349,-11.009,-239.5271],[-138.366,-10.9802,-241.6728],[-137.0699,-11.3834,-242.5656],[-136.9259,-11.1818,-243.3577],[-136.0475,-11.5418,-243.8761],[-136.0475,-11.0234,-245.5178],[-135.1114,-11.4266,-246.065],[-134.7946,-11.0954,-247.6779],[-133.5382,-11.5418,-248.4411],[-133.1349,-11.5418,-249.2332],[-133.4842,-11.1962,-249.9964],[-131.9793,-11.5994,-252.7901],[-130.118,-12.1034,-253.1357],[-128.6347,-12.2618,-254.5614],[-129.0956,-12.161,-256.7503],[-127.0795,-12.4202,-258.248],[-128.4331,-12.089,-260.4513],[-127.5691,-12.161,-261.8481],[-127.7419,-11.9306,-262.6834],[-126.1434,-12.3626,-263.7922],[-126.1866,-12.3626,-264.6419],[-124.5881,-12.665,-264.6419],[-122.5289,-13.0971,-265.9091],[-122.4568,-13.1691,-267.1764],[-119.1159,-13.7451,-268.7173],[-119.4039,-13.9179,-269.9269],[-118.4103,-13.9179,-269.7109],[-118.7703,-14.0475,-271.367],[-118.2663,-14.1771,-273.6567],[-120.6712,-14.4075,-277.0552],[-120.7288,-14.8683,-280.6986],[-122.1544,-15.4012,-284.414],[-123.6521,-15.07,-282.8443],[-123.4937,-15.5308,-286.0269],[-124.4585,-15.5596,-285.9117],[-124.5881,-15.8908,-289.9726],[-126.2874,-15.8908,-291.2111],[-126.6186,-15.7324,-294.0048],[-128.8363,-15.8332,-294.4081],[-129.9596,-15.6028,-296.9282],[-132.4401,-15.7036,-296.5249],[-133.0197,-15.4732,-298.5266],[-132.8757,-15.1996,-300.5283],[-135.7451,-15.2716,-300.9316],[-138.078,-15.0988,-302.5156],[-139.6908,-15.2716,-302.4724],[-139.158,-14.998,-303.4661],[-140.9581,-15.0988,-303.1349],[-142.4846,-14.9692,-303.5957],[-141.2893,-14.7675,-304.3877],[-138.9708,-14.6235,-304.5893],[-140.5549,-13.6155,-308.5207],[-140.1517,-13.1403,-309.5864],[-140.5261,-13.3419,-310.1336],[-140.1373,-13.1403,-312.2793],[-140.6413,-13.4715,-312.4665],[-140.0509,-13.3419,-317.1611],[-139.5612,-13.0395,-317.4203],[-139.4748,-13.4427,-318.7596],[-138.6108,-13.5435,-320.2717],[-137.2859,-13.2123,-321.4525],[-136.2347,-13.5147,-323.771],[-135.2986,-13.2123,-324.3758],[-135.0106,-13.5435,-325.6287],[-132.4545,-13.5723,-326.3631],[-130.6508,-13.9323,-327.76],[-130.8812,-13.9899,-329.0273],[-129.9164,-14.1195,-330.9137],[-129.0236,-14.0907,-330.1793],[-127.6699,-14.1195,-331.0722],[-127.6699,-14.1483,-335.4212],[-126.4602,-14.1483,-339.0357],[-126.9499,-14.0907,-343.3415],[-125.7978,-14.0907,-344.8392],[-126.201,-14.0331,-345.6456],[-126.0282,-14.0331,-347.0857],[-125.7114,-14.0907,-346.8121],[-126.7338,-13.5579,-349.5338],[-124.1849,-14.1195,-352.4715],[-124.3289,-14.0331,-357.051],[-122.8457,-14.1339,-358.563],[-121.348,-14.2347,-358.203],[-120.556,-14.3067,-359.8015],[-116.3366,-14.2059,-362.0912],[-113.5428,-14.1339,-365.2881],[-108.9634,-14.0043,-367.8371],[-108.8482,-13.6731,-368.6147],[-107.3217,-13.9035,-368.9171],[-105.6513,-14.4363,-367.8515],[-103.4048,-14.8683,-368.1107],[-102.0223,-14.998,-366.7282],[-100.5246,-15.1708,-366.325],[-99.6174,-15.3004,-366.757],[-99.5166,-15.4588,-368.7731],[-97.4429,-15.6892,-369.4787],[-96.9533,-15.7612,-371.7144],[-96.262,-15.862,-371.7864],[-95.686,-15.7324,-373.8097],[-93.5835,-15.8908,-374.7314],[-93.8859,-15.862,-375.1058],[-93.1659,-16.0636,-376.0274],[-89.9257,-16.942,-376.1858],[-90.7322,-16.6684,-377.4675],[-90.3866,-16.8124,-378.0003],[-88.5145,-17.3165,-377.5971],[-87.78,-17.5469,-378.7348],[-88.8169,-17.4749,-380.5348],[-86.5848,-17.9645,-381.6437],[-87.3768,-17.8925,-383.2422],[-88.9897,-17.5325,-384.0054],[-88.5865,-17.7341,-386.0791],[-89.1193,-17.4749,-387.8072],[-88.6873,-17.8061,-389.9529],[-88.9609,-17.6333,-391.2777],[-88.2121,-18.1373,-393.121],[-88.9897,-17.9213,-397.0956],[-88.9609,-18.1661,-399.7021],[-89.5513,-17.8637,-400.4366],[-89.0041,-18.2381,-401.2862],[-89.4505,-17.9645,-402.035],[-88.8457,-18.3101,-403.0431],[-89.5657,-18.0653,-403.6911],[-89.2777,-18.5405,-404.5984],[-90.545,-19.1309,-406.7873],[-90.7178,-19.9662,-408.8898],[-91.6538,-20.5566,-410.7619],[-90.2426,-20.9598,-412.4611],[-91.4522,-20.9022,-412.0867],[-91.0202,-21.2334,-413.9156],[-92.1866,-21.4639,-415.0821],[-91.8554,-21.8959,-417.487],[-90.6602,-21.9967,-418.9558],[-91.3658,-22.1983,-420.4679],[-90.7754,-22.0975,-422.1096],[-92.201,-22.0975,-424.6009],[-92.057,-21.9391,-427.0634],[-94.4259,-21.9895,-431.1028],[-96.7949,-22.0399,-435.1422],[-98.7533,-21.9103,-440.456],[-100.5246,-22.0111,-443.3074],[-100.3374,-21.7663,-444.0994],[-101.0575,-21.7951,-445.8419],[-102.5839,-22.0975,-446.9651],[-103.3616,-22.0975,-448.5924],[-104.96,-22.2271,-448.1892],[-106.5441,-22.3279,-448.9812],[-108.5458,-22.1263,-448.5924],[-109.3522,-21.9967,-449.3988],[-109.3666,-22.2271,-450.9973],[-110.5043,-22.0687,-450.9397],[-110.5619,-22.1983,-452.279],[-111.3539,-22.0399,-451.4581],[-108.949,-22.1263,-457.2184],[-111.6707,-21.9247,-457.8844],[-112.074,-21.6223,-459.9329],[-113.442,-21.6223,-459.7565],[-113.2548,-21.5647,-460.365],[-114.7093,-21.6367,-461.0994],[-114.0181,-21.6079,-462.2118],[-114.4069,-21.5647,-463.8103],[-115.8037,-21.5647,-464.804],[-115.1413,-21.4639,-466.0712],[-115.6165,-21.4639,-467.6697],[-117.0566,-21.5647,-468.8073],[-117.4598,-21.5359,-470.6506],[-116.711,-21.4927,-471.0538],[-117.8486,-21.5647,-472.6523],[-117.8342,-21.5647,-474.5244],[-118.5687,-21.6079,-476.4685],[-120.0951,-21.6079,-476.7421],[-119.8935,-21.5791,-478.067],[-120.6856,-21.6079,-478.9886],[-119.5479,-21.6079,-480.3135],[-117.287,-21.5071,-480.8607],[-115.8037,-21.2334,-482.5024],[-113.586,-21.003,-483.1792],[-113.0532,-20.7438,-483.9712],[-113.2692,-20.5422,-485.0657],[-112.146,-20.2398,-485.7713],[-112.146,-19.9662,-486.837],[-110.5619,-19.2894,-489.0691],[-108.949,-18.2237,-493.8069],[-108.0274,-17.8637,-493.6917],[-106.1409,-16.2364,-496.6438],[-105.8673,-15.6316,-498.7607],[-104.0672,-13.9179,-502.7137],[-102.2671,-12.2042,-506.6667],[-101.7343,-11.1098,-509.9069],[-100.6974,-10.1449,-511.7933],[-100.539,-9.3097,-514.155],[-99.9918,-8.8345,-515.0191],[-99.3438,-8.8345,-514.5871],[-98.811,-8.5321,-515.2639],[-98.0189,-8.3304,-515.1487],[-96.0172,-7.8696,-517.7408],[-92.4315,-7.884,-519.0729],[-88.8457,-7.8984,-520.4049],[-84.9863,-7.8408,-523.2707],[-83.8919,-7.812,-525.9348],[-81.2277,-7.38,-529.463],[-78.3908,-7.1496,-528.9301],[-76.5619,-6.7752,-529.4774],[-74.9346,-6.5304,-529.2037],[-74.661,-6.0263,-530.0246],[-73.509,-5.1767,-530.3702],[-72.8897,-4.7735,-529.9094],[-72.2849,-3.9382,-530.975],[-70.8737,-2.6422,-531.263],[-70.1536,-1.5765,-532.9911],[-68.9728,-0.6405,-533.0055],[-68.5695,-0.2661,-534.2008],[-67.3599,0.526,-533.7976],[-66.5391,0.958,-534.1864],[-66.1646,1.03,-535.7993],[-64.9694,1.5916,-535.7993],[-64.1485,1.6924,-536.9945]],"expectedDistance":507.15,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-87242","objectiveId":"creature-87242","objectiveName":"Glutton","checkpoints":[[-64.1485,1.6924,-536.9945],[-64.955,1.6924,-534.9928],[-66.1502,1.1308,-534.9928],[-67.3599,0.526,-533.7976],[-68.5695,-0.2661,-534.2008],[-68.9728,-0.6405,-533.0055],[-70.1536,-1.5765,-532.9911],[-70.8737,-2.6422,-531.263],[-72.2849,-3.9382,-530.975],[-72.8897,-4.7735,-529.9094],[-73.509,-5.1767,-530.3702],[-74.661,-6.0263,-530.0246],[-74.9346,-6.5304,-529.2037],[-76.5619,-6.7752,-529.4774],[-78.3908,-7.1496,-528.9301],[-79.4565,-7.4808,-527.0004],[-82.2934,-7.7112,-527.5333],[-83.8919,-7.812,-525.9348],[-84.9863,-7.8408,-523.2707],[-88.8457,-7.8984,-520.4049],[-92.4315,-7.884,-519.0729],[-96.0172,-7.8696,-517.7408],[-98.0189,-8.3304,-515.1487],[-98.811,-8.5321,-515.2639],[-99.3438,-8.8345,-514.5871],[-99.9918,-8.8345,-515.0191],[-100.539,-9.3097,-514.155],[-100.6974,-10.1449,-511.7933],[-101.7343,-11.1098,-509.9069],[-102.2671,-12.2042,-506.6667],[-104.0672,-13.9179,-502.7137],[-105.8673,-15.6316,-498.7607],[-106.1409,-16.2364,-496.6438],[-108.0274,-17.8637,-493.6917],[-108.949,-18.2237,-493.8069],[-110.5619,-19.2894,-489.0691],[-112.146,-19.9662,-486.837],[-112.146,-20.2398,-485.7713],[-113.2692,-20.5422,-485.0657],[-113.0532,-20.7438,-483.9712],[-113.586,-21.003,-483.1792],[-115.8037,-21.2334,-482.5024],[-117.287,-21.5071,-480.8607],[-119.5479,-21.6079,-480.3135],[-120.6856,-21.6079,-478.9886],[-119.8935,-21.5791,-478.067],[-120.0951,-21.6079,-476.7421],[-118.5687,-21.6079,-476.4685],[-117.8342,-21.5647,-474.5244],[-117.8486,-21.5647,-472.6523],[-116.711,-21.4927,-471.0538],[-117.4598,-21.5359,-470.6506],[-117.0566,-21.5647,-468.8073],[-115.6165,-21.4639,-467.6697],[-115.1413,-21.4639,-466.0712],[-115.8037,-21.5647,-464.804],[-114.4069,-21.5647,-463.8103],[-114.0181,-21.6079,-462.2118],[-114.7093,-21.6367,-461.0994],[-113.2548,-21.5647,-460.365],[-113.442,-21.6223,-459.7565],[-112.074,-21.6223,-459.9329],[-111.6707,-21.9247,-457.8844],[-108.949,-22.1263,-457.2184],[-109.4242,-22.2559,-455.6919],[-106.9905,-21.9679,-458.1112],[-103.1888,-21.3342,-458.9033],[-100.0494,-21.0174,-457.636],[-99.0846,-20.6142,-458.8169],[-98.2349,-20.5422,-458.068],[-97.4429,-20.3406,-458.1112],[-97.5149,-20.3118,-458.6441],[-94.9804,-19.9518,-457.2472],[-94.1739,-19.6494,-458.0392],[-90.1562,-18.8429,-456.8008],[-89.4361,-18.3677,-458.8349],[-87.4344,-17.7341,-459.3677],[-86.0952,-17.2589,-460.5666],[-83.8919,-16.798,-460.2065],[-83.503,-16.7404,-461.2758],[-82.4806,-16.438,-461.7942],[-81.8038,-16.1932,-461.319],[-81.1125,-15.9916,-462.111],[-81.0261,-15.79,-460.671],[-79.4277,-15.79,-462.0534],[-77.0803,-15.7468,-462.7303],[-73.9986,-15.7468,-461.2902],[-71.1905,-15.7468,-455.6847],[-65.1278,-15.7468,-453.9387],[-62.9533,-15.7468,-450.5941],[-63.3565,-15.718,-447.8004],[-62.1613,-15.6604,-447.8004],[-63.1693,-15.8908,-445.021],[-61.0956,-15.8332,-444.3586],[-60.6924,-16.3084,-442.3569],[-58.8923,-16.51,-441.1329],[-59.4395,-17.2877,-437.4031],[-58.6331,-17.4173,-435.8046],[-60.03,-16.726,-433.0253],[-59.4971,-16.6972,-432.5357],[-57.9131,-17.1293,-432.8813],[-57.3226,-16.798,-431.1388],[-57.5674,-16.1356,-429.5691],[-56.3578,-16.2364,-428.8635],[-56.4154,-15.9052,-428.4027],[-55.7962,-16.2796,-428.3019],[-55.5369,-16.006,-427.625],[-54.6153,-16.4956,-427.2362],[-54.5001,-16.2508,-426.5306],[-53.4632,-16.798,-425.8538],[-52.7864,-16.7404,-424.4569],[-52.2392,-17.1437,-424.3417],[-52.0088,-16.8556,-423.2328],[-51.1159,-17.4605,-423.42],[-50.4679,-17.5613,-422.4696],[-48.999,-18.3389,-422.5416],[-48.5526,-18.2381,-421.0151],[-47.343,-18.6125,-420.6119],[-47.415,-18.2093,-418.5382],[-46.0037,-18.6125,-417.8326],[-45.5573,-18.6125,-416.6229],[-46.5077,-18.2813,-416.3925],[-45.2405,-18.7853,-415.2549],[-45.3557,-18.5837,-412.7923],[-43.8292,-19.0445,-410.9347],[-43.5844,-19.0013,-409.6674],[-43.8868,-18.7133,-406.6577],[-42.6195,-19.0445,-404.728],[-42.1731,-18.9725,-402.107],[-43.0228,-18.6413,-401.8046],[-42.1587,-19.0013,-400.883],[-43.0516,-18.4973,-399.7165],[-42.5187,-18.7277,-398.3773],[-43.1236,-18.3677,-396.5772],[-42.3603,-18.9725,-396.0012],[-42.0867,-19.2029,-394.8635],[-42.6195,-18.8285,-394.1291],[-42.2019,-19.1597,-393.8123],[-42.6051,-18.8285,-393.6251],[-42.2595,-19.1021,-392.8618],[-42.6051,-18.8285,-392.3722],[-42.2019,-19.1597,-392.1706],[-43.0804,-18.4973,-390.3417],[-42.6627,-18.8717,-389.3049],[-42.9364,-18.7709,-388.2968],[-42.3315,-19.1453,-388.1816],[-44.9669,-18.3101,-382.6661],[-45.8309,-18.4397,-377.3235],[-46.6373,-18.0653,-374.987],[-45.7589,-18.8285,-371.844],[-46.2485,-18.6989,-370.7172],[-45.1397,-19.4046,-370.3428],[-45.3989,-19.5774,-369.0179],[-44.9381,-20.1678,-367.8227],[-43.7284,-20.2686,-367.117],[-43.1668,-20.4414,-365.7202],[-43.8436,-20.571,-365.1297],[-42.8644,-20.6142,-364.2945],[-43.0084,-20.7438,-363.2576],[-44.2612,-21.0318,-361.9328],[-44.6644,-21.291,-360.1759],[-46.5797,-21.7231,-358.5918],[-46.6805,-22.0687,-356.3741],[-47.5734,-22.3999,-354.9629],[-46.6661,-22.8175,-351.5787],[-47.1702,-23.2495,-349.6922],[-48.9846,-24.0704,-347.1721],[-48.7686,-24.2432,-346.0776],[-49.5319,-24.776,-344.4072],[-50.8711,-25.208,-343.8455],[-51.2743,-25.7121,-342.2615],[-53.3624,-26.3457,-341.7718],[-53.5497,-26.9073,-339.8278],[-54.7161,-27.4689,-338.6469],[-56.2714,-27.5409,-339.8134],[-56.2138,-27.829,-338.1717],[-58.6475,-28.333,-337.7541],[-59.5691,-28.837,-335.8964],[-61.686,-29.3122,-335.2627],[-61.47,-29.6002,-334.1683],[-62.2765,-30.0323,-333.3619],[-62.3485,-30.4643,-332.3106],[-64.1629,-30.4931,-331.8066],[-64.5518,-30.7235,-331.0001],[-65.891,-30.3923,-330.7985],[-66.2942,-30.7955,-329.6177],[-65.7614,-31.5587,-328.2208],[-66.4527,-32.0627,-326.3775],[-66.0062,-32.466,-325.0815],[-66.8127,-32.7396,-323.8862],[-66.1358,-32.97,-322.9358],[-66.6975,-33.1428,-321.7981],[-65.675,-33.2004,-321.0637],[-65.8478,-33.2724,-320.5165],[-67.3311,-33.3156,-320.3005],[-67.0719,-33.3732,-319.3932],[-68.3535,-33.3732,-318.6012],[-67.4751,-33.5604,-315.9515],[-68.0079,-33.7332,-313.6905],[-69.808,-33.7332,-312.9417],[-69.952,-33.9348,-310.2776],[-71.2193,-34.0356,-308.1895],[-69.9376,-34.2084,-306.8646],[-70.3264,-34.4101,-304.8773],[-68.6992,-34.5397,-303.8693],[-69.6496,-34.8133,-300.4707],[-67.6335,-35.0437,-298.2818],[-69.0592,-35.2453,-295.2865],[-67.2303,-35.3749,-294.1488],[-67.2591,-35.5765,-291.9311],[-68.8288,-36.0373,-288.9358],[-67.3743,-36.599,-285.4076],[-68.5695,-37.3046,-281.4042],[-67.3743,-37.4054,-280.5978],[-65.7614,-37.5638,-278.2073],[-66.1502,-37.823,-275.3992],[-64.7678,-37.7222,-273.4695],[-66.0062,-37.7222,-271.3814],[-64.811,-37.6214,-269.3941],[-66.9855,-37.6358,-267.3204],[-67.3023,-37.5206,-264.5987],[-67.9935,-37.4486,-263.9794],[-67.3887,-37.4486,-263.0578],[-68.0223,-37.5206,-263.0722],[-67.8927,-37.5206,-261.1281],[-69.1024,-37.5638,-259.1264],[-69.7216,-37.2614,-253.0205],[-67.7055,-36.5558,-250.3564],[-69.232,-36.959,-249.5644],[-68.872,-36.7286,-248.3547],[-66.8127,-35.8213,-246.353],[-67.0719,-35.6917,-244.7401],[-66.5391,-35.3893,-242.5944],[-68.4543,-36.6278,-239.2391],[-67.2159,-35.9653,-238.5767],[-67.3455,-36.2965,-237.5254],[-68.3391,-37.031,-236.7334],[-67.7487,-36.9878,-235.4229],[-68.5551,-37.5206,-234.6165],[-67.7487,-37.4918,-233.018],[-68.1519,-37.6646,-230.6131],[-67.3455,-37.6358,-228.2082],[-67.7631,-37.6214,-225.4144],[-66.1502,-37.535,-223.0095],[-68.944,-37.9958,-220.2014],[-67.3311,-37.8374,-217.8397],[-67.7343,-37.9814,-214.2539],[-70.1536,-38.4134,-212.209],[-68.7136,-38.3126,-209.1705],[-69.6496,-38.3414,-206.7656],[-68.728,-38.2262,-204.4327],[-68.1231,-38.1686,-204.2167],[-68.9872,-38.1398,-203.5686],[-67.3599,-38.111,-203.8999],[-67.5183,-38.111,-202.2438],[-65.459,-37.9814,-201.4373]],"expectedDistance":515.98,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-87209","objectiveId":"creature-87209","objectiveName":"Amnennar the Coldbringer","checkpoints":[[-65.459,-37.9814,-201.4373],[-64.8398,-37.9094,-200.0837],[-61.038,-37.2038,-200.9333],[-57.3658,-36.4982,-200.4005],[-54.0825,-35.6341,-201.7974],[-53.0168,-35.3749,-200.4005],[-51.7928,-35.5333,-197.1027],[-51.2023,-35.3317,-197.0883],[-50.5255,-35.5045,-195.7635],[-49.143,-35.3029,-194.8814],[-47.559,-35.3173,-192.2533],[-47.7606,-35.5477,-190.41],[-47.0982,-35.5477,-189.4884],[-43.6852,-35.5909,-186.7235],[-41.4531,-35.4901,-186.2626],[-38.7026,-35.5333,-183.5265],[-38.501,-35.7349,-182.7201],[-33.5039,-35.9365,-178.1983],[-31.3726,-36.1525,-174.9437],[-30.9694,-36.3253,-173.3452],[-28.3053,-36.2245,-172.3804],[-29.0973,-36.7574,-169.6443],[-26.5772,-36.9158,-168.1178],[-24.4459,-36.455,-169.7163],[-23.9131,-36.5558,-169.097],[-23.193,-36.2965,-170.1339],[-22.5306,-36.3685,-169.7307],[-21.7242,-36.2101,-169.9899],[-21.3642,-36.3829,-169.2842],[-20.6009,-36.2821,-169.5003],[-19.7945,-36.5414,-168.8234],[-18.7288,-36.3685,-169.3418],[-17.692,-36.4261,-169.0538],[-17.2312,-36.6854,-166.7929],[-16.1079,-36.5846,-167.0665],[-15.5751,-36.815,-164.9352],[-14.1062,-36.5558,-166.8073],[-11.6293,-36.5558,-165.7273],[-8.562,-36.2677,-167.4698],[-6.5603,-36.2389,-166.8937],[-2.8017,-36.1669,-167.5706],[-0.1664,-36.1669,-167.0665],[4.2402,-36.3397,-167.297],[7.4372,-36.743,-166.3321],[9.3093,-37.2614,-165.2089],[9.3093,-36.8726,-166.6777],[10.4325,-37.3046,-165.6121],[13.4999,-36.5126,-170.1339],[16.0344,-36.9014,-169.6731],[18.1369,-36.959,-170.3355],[19.6057,-37.2182,-169.8027],[19.6489,-37.391,-167.9306],[20.8298,-37.2902,-167.8298],[21.4634,-37.1174,-169.5723],[22.6011,-36.9878,-169.4283],[24.1996,-36.6278,-172.1644],[25.5244,-36.599,-171.5595],[29.1102,-36.671,-172.3804],[31.1839,-36.4405,-175.7789],[36.4977,-36.6134,-176.7438],[35.9649,-36.3829,-179.0047],[38.2258,-36.3829,-179.5375],[36.6993,-36.1093,-181.064],[38.2978,-35.9653,-183.5265],[42.3336,-36.2389,-183.1233],[42.4776,-36.0949,-185.4706],[47.0174,-36.3397,-185.9314],[45.4477,-35.8933,-191.4073],[50.1748,-35.9365,-194.3342],[49.9156,-35.4613,-199.8101],[53.1701,-35.4325,-201.2069],[54.4374,-35.3317,-202.647],[54.9126,-35.2741,-203.5398],[54.1781,-35.0437,-205.9015],[56.7127,-35.1157,-206.8376],[56.8423,-34.9429,-208.8825],[58.4119,-34.8997,-209.9337],[57.8791,-34.6981,-211.201],[59.0168,-34.6693,-212.6699],[65.5547,-35.4469,-213.0299],[64.8778,-35.1733,-214.4843],[61.8969,-34.5973,-215.4636],[63.625,-34.5541,-217.7245],[62.2281,-34.0932,-218.8765],[62.3001,-33.7908,-219.7406],[63.3658,-34.0644,-220.5182],[63.8698,-33.546,-222.6783],[64.7338,-33.7764,-223.2831],[65.1947,-33.546,-224.5504],[66.3611,-33.8772,-225.112],[67.1532,-33.7764,-226.7105],[66.9659,-33.3732,-228.0066],[68.7516,-33.834,-229.245],[68.5068,-33.3012,-231.2755],[69.8317,-33.5316,-233.5796],[69.4285,-33.2004,-233.9972],[69.7453,-33.4308,-236.0277],[69.27,-33.042,-237.7558],[69.4717,-33.3012,-239.9015],[68.9532,-32.9268,-240.3479],[68.478,-33.0996,-243.0841],[67.9452,-32.7108,-243.4729],[67.9596,-33.0996,-244.6105],[67.0811,-32.6964,-246.0794],[67.2252,-33.1284,-248.0811],[65.8715,-32.6388,-249.694],[65.6123,-33.042,-251.1916],[64.8202,-32.7396,-251.9117],[64.0858,-32.9988,-253.7118],[62.7033,-32.6244,-255.2814],[61.9977,-32.826,-257.1247],[60.5288,-32.538,-258.3632],[60.4712,-32.8116,-258.8096],[55.2006,-32.6388,-262.165],[54.7974,-32.9412,-263.965],[52.9973,-32.8404,-264.8579],[53.1125,-33.042,-268.3716],[48.9039,-32.7396,-270.0277],[46.8302,-32.7684,-274.2615],[43.1904,-32.4804,-275.464],[39.5507,-32.1924,-276.6664],[39.0898,-32.5668,-284.0684],[37.0306,-32.8692,-289.6558],[34.8993,-32.466,-287.3949],[34.2368,-32.9412,-292.7952],[33.1568,-32.5668,-289.6846],[30.291,-32.3364,-289.411],[28.9806,-32.4084,-291.7295],[26.2589,-32.1059,-290.8655],[24.79,-31.8035,-289.3246],[23.6523,-31.7027,-290.1887],[24.43,-32.1059,-292.7088],[20.2394,-31.5731,-292.4064],[17.8057,-31.5011,-294.3072],[16.1928,-31.1699,-294.4081],[14.4791,-31.0691,-295.3009],[13.1974,-30.4499,-294.4225],[10.7061,-30.0467,-294.6529],[9.2949,-30.2771,-295.3441],[5.1619,-29.3698,-295.0129],[5.0467,-29.8018,-295.7761],[3.2322,-29.7442,-296.0641],[1.2737,-29.0674,-295.3585],[-0.7568,-29.269,-295.9921],[-1.9953,-28.837,-295.7329],[-3.7233,-29.0386,-296.2945],[-4.6738,-29.5282,-297.7778],[-6.6035,-29.4706,-297.7634],[-7.1363,-29.7586,-299.3043],[-10.9381,-29.7298,-299.3763],[-13.0118,-29.1394,-296.2369],[-17.404,-29.341,-297.3602],[-17.8072,-28.837,-294.8689],[-16.2951,-28.2322,-291.8159],[-19.9673,-28.5922,-292.2768],[-22.5018,-28.7938,-291.6719],[-21.3786,-28.3618,-289.7998],[-23.5099,-28.333,-288.331],[-22.0122,-27.7425,-286.5021],[-21.9978,-27.5409,-285.3068],[-24.3307,-27.1521,-281.3466],[-26.1164,-27.0513,-280.281],[-28.1469,-26.7489,-277.9913],[-29.1405,-26.4609,-275.7736],[-30.5374,-26.6913,-276.7672],[-34.2528,-26.7633,-276.436],[-34.656,-26.5329,-274.8375],[-30.6814,-25.8273,-271.655],[-29.1405,-25.6977,-271.4534],[-29.6733,-25.3376,-267.3204],[-28.9533,-25.064,-266.874],[-29.2413,-25.064,-265.3331],[-28.3773,-24.6608,-265.0019],[-29.1837,-24.8624,-263.2018],[-28.8957,-24.7904,-261.5601],[-30.1342,-25.3376,-261.3585],[-30.0478,-25.2368,-260.3937],[-30.5374,-25.3376,-260.7681],[-30.0622,-24.9776,-259.1696],[-31.4734,-25.2368,-256.2607],[-31.4446,-24.5456,-251.3645],[-31.7038,-24.5456,-250.558],[-32.2943,-24.8048,-250.3708],[-32.3951,-24.344,-247.9515],[-33.6911,-24.2576,-244.8265],[-35.088,-24.56,-243.2281],[-35.7216,-24.2288,-240.8232],[-36.6145,-24.5024,-240.1463],[-36.8881,-24.272,-238.8071],[-37.9393,-24.6608,-237.9286],[-38.6594,-24.4016,-235.7541],[-41.7411,-24.7328,-231.2467],[-42.6771,-24.6608,-228.5826],[-47.0405,-25.424,-226.1633],[-47.4438,-25.3664,-223.7584],[-45.4277,-24.776,-220.8638],[-47.1702,-25.208,-215.9964],[-46.5077,-25.0064,-214.7436],[-43.9012,-24.1424,-213.1883],[-43.57,-24.0992,-211.057],[-42.0291,-23.5952,-209.5737],[-41.6691,-23.5376,-207.9752],[-40.8627,-23.3359,-207.0392],[-42.1011,-23.1343,-204.3895],[-40.6179,-23.2639,-204.9799],[-41.0211,-23.2639,-203.9431],[-39.6962,-23.3935,-204.2455],[-38.6306,-23.5952,-203.2374],[-39.7682,-23.3935,-201.3077],[-38.1841,-23.624,-200.4869],[-35.2464,-24.128,-200.7461],[-34.7568,-24.128,-198.4564],[-33.5471,-24.2,-197.2467],[-33.6479,-24.128,-195.2126],[-31.8046,-24.4016,-195.9039],[-31.4734,-24.4736,-194.7914],[-29.9758,-24.6464,-196.0911],[-30.3358,-24.6032,-194.561],[-28.5933,-24.7904,-195.3423],[-28.3917,-24.8192,-194.0858],[-26.5484,-24.7328,-194.4314],[-25.6124,-24.704,-195.2991],[-25.0219,-24.6464,-195.3567],[-24.6331,-24.5168,-194.6762],[-23.7835,-24.4448,-195.3279],[-22.3434,-24.2144,-195.011],[-19.2761,-23.8112,-197.5636],[-16.8423,-23.552,-197.65],[-16.4391,-23.0911,-198.6436],[-15.5175,-23.0911,-198.802],[-14.8839,-23.8544,-196.8399],[-12.7238,-24.1424,-196.8399],[-11.1253,-24.5744,-193.625],[-8.1587,-24.6752,-192.1849],[-6.1571,-24.8336,-188.5955],[-4.1554,-24.7328,-188.6099],[-2.5569,-24.7616,-189.4164],[4.629,-24.56,-188.9988],[6.1123,-24.5312,-189.3876],[6.7171,-24.5024,-187.5299],[8.5172,-24.4736,-187.2707],[9.4389,-24.4736,-189.5604],[11.4262,-24.416,-190.05],[12.5638,-24.416,-189.0276],[14.5943,-24.3152,-189.1716],[16.5384,-24.3152,-190.0788],[18.0937,-24.1424,-189.0996],[19.8362,-24.344,-190.05],[21.4346,-24.272,-189.402],[23.1771,-24.1136,-190.0644],[23.3355,-23.9408,-190.9861],[24.6748,-23.696,-190.8564],[25.1932,-23.624,-191.3029],[25.3516,-23.7248,-192.7753],[26.014,-23.8544,-192.9193],[26.5325,-23.9984,-193.931],[27.8429,-24.2,-193.3946],[29.0382,-24.5024,-194.2046],[30.2334,-24.9344,-193.7978],[31.6879,-25.3376,-194.1902],[32.8112,-24.4016,-198.946],[34.4096,-24.6608,-199.3636],[35.5329,-24.2576,-201.927],[37.8802,-24.7616,-201.0485],[38.6866,-24.5744,-201.4373],[41.1059,-23.8976,-202.8054],[40.8755,-23.624,-204.8647],[42.906,-23.1199,-204.6487],[45.8942,-22.0687,-206.564],[48.0867,-21.003,-209.4153],[49.6419,-20.8158,-209.7465],[50.3764,-20.6718,-211.273],[51.8452,-20.6718,-212.5403],[53.2421,-20.3982,-216.1116],[55.9206,-20.7006,-218.1421],[57.5767,-20.9022,-220.6334],[61.4073,-21.4351,-223.6432],[63.4666,-20.9022,-227.1713],[65.3099,-19.5054,-232.802],[66.4907,-19.5342,-234.0404],[66.6203,-19.3326,-235.4373],[67.3548,-19.4046,-236.575],[65.8283,-18.3965,-240.6072],[66.2459,-18.3677,-241.0248],[65.7275,-17.9789,-242.8537],[66.0011,-17.9501,-244.3801],[65.1083,-17.5037,-247.5339],[64.2442,-17.1005,-248.5419],[63.1066,-17.1005,-253.2077],[61.7097,-16.8268,-255.411],[57.8503,-18.0365,-259.8752],[53.7317,-18.7421,-262.6546],[53.6597,-18.9437,-263.389],[48.4899,-19.3326,-265.8803],[46.1282,-19.8942,-267.7668],[45.5521,-19.6638,-267.9108],[44.8285,-19.4622,-267.0756],[44.0185,-19.3902,-267.666],[43.3092,-19.419,-267.0324],[40.4867,-19.2606,-267.6084],[35.2161,-19.7358,-266.2115],[31.9615,-19.6206,-266.0819],[29.9022,-19.6062,-268.4004],[28.8654,-19.2462,-268.0404],[27.4541,-19.4334,-269.0917],[25.6396,-18.8285,-269.3365],[23.5947,-18.8285,-270.3589],[22.5435,-18.4973,-270.2149],[21.3338,-18.5981,-271.223],[19.3609,-18.1229,-271.3238],[18.8713,-18.5693,-272.303],[17.8777,-18.7421,-272.6774],[17.0424,-18.7133,-271.6262],[15.9912,-19.1453,-272.9511],[14.6951,-18.8717,-271.511],[14.2631,-18.2957,-269.4085],[11.7718,-17.7053,-268.1988],[10.1733,-17.7485,-268.458],[9.2373,-17.3741,-267.9252],[6.9188,-17.4461,-268.6021],[3.7074,-16.7404,-268.1988],[3.621,-17.0717,-268.7317],[2.4401,-16.9708,-268.8325],[-2.1681,-15.8332,-268.4868],[-2.5425,-16.1644,-268.8757],[-3.6513,-16.222,-268.8613],[-3.9249,-15.862,-268.3428],[-5.1922,-16.1212,-268.6021],[-5.9698,-15.8044,-268.0836],[-6.6179,-16.0636,-268.4436],[-7.2083,-15.8332,-267.9684],[-8.6772,-16.222,-268.2132],[-10.29,-16.006,-267.162],[-10.6501,-15.574,-266.2403],[-12.7238,-15.8188,-265.6067],[-13.2854,-15.4876,-264.6707],[-14.5958,-15.6892,-264.2242],[-14.9991,-15.43,-263.4898],[-15.4455,-15.7324,-263.7634],[-18.3688,-15.6316,-259.8896],[-19.5065,-15.9628,-259.5584],[-19.9097,-15.9916,-258.6224],[-21.2202,-16.3516,-258.2768],[-20.8889,-16.1932,-257.3407],[-21.6378,-16.3372,-257.0239],[-20.6729,-16.1068,-256.3183],[-21.4074,-16.2652,-255.6559],[-20.7881,-15.79,-250.1548],[-21.7818,-15.9628,-249.2908],[-21.5802,-15.7036,-247.5195],[-22.905,-15.9052,-247.3035],[-22.5162,-15.502,-245.705],[-23.9419,-15.6028,-244.8121],[-22.689,-15.07,-242.6808],[-23.7979,-15.0412,-241.3272],[-22.9482,-14.6379,-239.8007],[-23.2794,-14.5371,-238.6775],[-24.3451,-14.7387,-238.6631],[-23.4379,-14.4651,-238.3606],[-23.7547,-14.2347,-237.295],[-25.4683,-14.4651,-236.7766],[-24.0859,-13.6587,-234.8325],[-24.8779,-13.7307,-234.4293],[-21.2922,-12.665,-231.2755],[-21.0617,-12.8379,-229.4034],[-19.6505,-12.6938,-228.1794],[-19.1177,-12.9675,-227.0561],[-18.1384,-12.7659,-226.5521],[-17.6056,-12.9675,-225.4288],[-14.207,-11.9306,-222.6207],[-14.4806,-12.161,-222.3183],[-11.4853,-11.0378,-221.0222],[-10.7509,-11.1098,-219.9566],[-4.4578,-10.1737,-218.0413],[-3.6513,-9.8713,-218.5021],[-1.8801,-9.9721,-218.0269],[0.8417,-9.3673,-218.6173],[1.7201,-9.5113,-218.1565],[2.5986,-9.0649,-218.7325],[5.8099,-9.0505,-218.2573],[9.3957,-8.9785,-219.179],[10.7925,-8.6761,-217.5517],[12.2326,-8.3736,-217.7245],[12.2614,-8.2728,-219.8846],[12.9958,-8.0424,-219.3518],[13.2694,-7.9128,-220.2878],[13.9607,-7.74,-220.4894],[13.6871,-7.5384,-221.6127],[19.0585,-7.1064,-221.9727],[15.9768,-7.1352,-222.9375],[15.66,-7.0056,-224.1616],[16.4952,-6.7464,-226.1633],[14.8103,-6.9048,-225.328],[14.6807,-6.732,-226.5953],[15.4728,-6.5016,-229.0002],[17.0712,-6.3,-231.4051],[15.0407,-6.1703,-233.3924],[15.0407,-6.0407,-235.3941],[13.4423,-5.9831,-236.9926],[8.9636,-6.1415,-237.223],[5.5507,-6.2711,-239.4263],[5.9971,-6.3144,-241.3704],[2.2673,-6.4728,-241.7016],[2.4113,-6.5448,-242.5368],[0.8417,-6.5016,-241.572],[0.1648,-6.5448,-243.6457],[0.9713,-6.5448,-245.2442],[-0.5552,-6.6024,-245.8202],[-0.152,-6.5592,-247.0155]],"expectedDistance":942.79,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-05-creature-247108","objectiveId":"creature-247108","objectiveName":"Ragglesnout","checkpoints":[[-0.152,-6.5592,-247.0155],[-0.5552,-6.6024,-245.8202],[0.9713,-6.5448,-245.2442],[0.1648,-6.5448,-243.6457],[0.8417,-6.5016,-241.572],[2.4113,-6.5448,-242.5368],[1.8209,-6.4296,-239.7575],[5.5507,-6.2711,-239.4263],[8.9636,-6.1415,-237.223],[13.4423,-5.9831,-236.9926],[15.0407,-6.0407,-235.3941],[15.0407,-6.1703,-233.3924],[17.0712,-6.3,-231.4051],[15.4728,-6.5016,-229.0002],[14.6807,-6.732,-226.5953],[14.8103,-6.9048,-225.328],[16.4952,-6.7464,-226.1633],[15.66,-7.0056,-224.1616],[15.9768,-7.1352,-222.9375],[19.0585,-7.1064,-221.9727],[13.6871,-7.5384,-221.6127],[13.9607,-7.74,-220.4894],[13.2694,-7.9128,-220.2878],[12.9958,-8.0424,-219.3518],[12.2614,-8.2728,-219.8846],[12.2326,-8.3736,-217.7245],[10.7925,-8.6761,-217.5517],[9.3957,-8.9785,-219.179],[5.8099,-9.0505,-218.2573],[2.5986,-9.0649,-218.7325],[1.7201,-9.5113,-218.1565],[0.8417,-9.3673,-218.6173],[-1.8801,-9.9721,-218.0269],[-3.6513,-9.8713,-218.5021],[-4.4578,-10.1737,-218.0413],[-5.8834,-10.3753,-218.2429],[-6.4883,-10.2745,-218.9053],[-10.7509,-11.1098,-219.9566],[-11.4853,-11.0378,-221.0222],[-14.4806,-12.161,-222.3183],[-14.207,-11.9306,-222.6207],[-17.6056,-12.9675,-225.4288],[-19.6505,-12.6938,-228.1794],[-20.2841,-12.8667,-228.3234],[-21.4938,-12.8379,-230.5411],[-21.2922,-12.665,-231.2755],[-24.8779,-13.7307,-234.4293],[-24.0859,-13.6587,-234.8325],[-25.4683,-14.4651,-236.7766],[-23.7547,-14.2347,-237.295],[-23.4379,-14.4651,-238.3606],[-24.3451,-14.7387,-238.6631],[-23.2794,-14.5371,-238.6775],[-22.9482,-14.6379,-239.8007],[-23.7979,-15.0412,-241.3272],[-22.689,-15.07,-242.6808],[-23.9419,-15.6028,-244.8121],[-22.5162,-15.502,-245.705],[-22.905,-15.9052,-247.3035],[-21.5802,-15.7036,-247.5195],[-21.7818,-15.9628,-249.2908],[-20.7881,-15.79,-250.1548],[-21.4074,-16.2652,-255.6559],[-20.6729,-16.1068,-256.3183],[-21.6378,-16.3372,-257.0239],[-20.8889,-16.1932,-257.3407],[-21.2202,-16.3516,-258.2768],[-19.9097,-15.9916,-258.6224],[-19.5065,-15.9628,-259.5584],[-18.3688,-15.6316,-259.8896],[-15.4455,-15.7324,-263.7634],[-14.9991,-15.43,-263.4898],[-14.5958,-15.6892,-264.2242],[-13.2854,-15.4876,-264.6707],[-12.7238,-15.8188,-265.6067],[-10.6501,-15.574,-266.2403],[-10.29,-16.006,-267.162],[-8.6772,-16.222,-268.2132],[-7.2083,-15.8332,-267.9684],[-6.6179,-16.0636,-268.4436],[-5.9698,-15.8044,-268.0836],[-5.1922,-16.1212,-268.6021],[-3.9249,-15.862,-268.3428],[-3.6513,-16.222,-268.8613],[-2.5425,-16.1644,-268.8757],[-2.1681,-15.8332,-268.4868],[2.4401,-16.9708,-268.8325],[3.621,-17.0717,-268.7317],[3.7074,-16.7404,-268.1988],[6.9188,-17.4461,-268.6021],[9.2373,-17.3741,-267.9252],[10.1733,-17.7485,-268.458],[11.7718,-17.7053,-268.1988],[14.2631,-18.2957,-269.4085],[14.6951,-18.8717,-271.511],[15.9912,-19.1453,-272.9511],[17.0424,-18.7133,-271.6262],[17.8777,-18.7421,-272.6774],[18.4393,-18.6413,-272.5478],[19.3609,-18.1229,-271.3238],[21.3338,-18.5981,-271.223],[22.5435,-18.4973,-270.2149],[23.5947,-18.8285,-270.3589],[24.5452,-18.4253,-269.3797],[27.4541,-19.4334,-269.0917],[28.8654,-19.2462,-268.0404],[29.9022,-19.6062,-268.4004],[31.9615,-19.6206,-266.0819],[35.2161,-19.7358,-266.2115],[40.4867,-19.2606,-267.6084],[43.3092,-19.419,-267.0324],[44.0185,-19.3902,-267.666],[44.8285,-19.4622,-267.0756],[45.5521,-19.6638,-267.9108],[46.1282,-19.8942,-267.7668],[48.4899,-19.3326,-265.8803],[53.6597,-18.9437,-263.389],[53.7317,-18.7421,-262.6546],[57.8503,-18.0365,-259.8752],[61.7097,-16.8268,-255.411],[63.1066,-17.1005,-253.2077],[64.2442,-17.1005,-248.5419],[65.1083,-17.5037,-247.5339],[66.0011,-17.9501,-244.3801],[65.7275,-17.9789,-242.8537],[66.2459,-18.3677,-241.0248],[65.8283,-18.3965,-240.6072],[67.3548,-19.4046,-236.575],[66.6203,-19.3326,-235.4373],[66.4907,-19.5342,-234.0404],[65.3099,-19.5054,-232.802],[63.4666,-20.9022,-227.1713],[61.4073,-21.4351,-223.6432],[57.5767,-20.9022,-220.6334],[55.9206,-20.7006,-218.1421],[53.2421,-20.3982,-216.1116],[51.8452,-20.6718,-212.5403],[50.3764,-20.6718,-211.273],[49.6419,-20.8158,-209.7465],[48.0867,-21.003,-209.4153],[45.8942,-22.0687,-206.564],[42.906,-23.1199,-204.6487],[40.8755,-23.624,-204.8647],[41.1059,-23.8976,-202.8054],[38.6866,-24.5744,-201.4373],[37.8802,-24.7616,-201.0485],[35.5329,-24.2576,-201.927],[34.4096,-24.6608,-199.3636],[32.8112,-24.4016,-198.946],[31.6879,-25.3376,-194.1902],[30.2334,-24.9344,-193.7978],[29.0382,-24.5024,-194.2046],[27.8429,-24.2,-193.3946],[26.5325,-23.9984,-193.931],[26.014,-23.8544,-192.9193],[25.3516,-23.7248,-192.7753],[25.1932,-23.624,-191.3029],[24.6748,-23.696,-190.8564],[23.3355,-23.9408,-190.9861],[23.1771,-24.1136,-190.0644],[21.4346,-24.272,-189.402],[19.8362,-24.344,-190.05],[18.0937,-24.1424,-189.0996],[16.5384,-24.3152,-190.0788],[14.5943,-24.3152,-189.1716],[12.5638,-24.416,-189.0276],[11.4262,-24.416,-190.05],[9.4389,-24.4736,-189.5604],[8.5172,-24.4736,-187.2707],[6.7171,-24.5024,-187.5299],[6.1123,-24.5312,-189.3876],[4.629,-24.56,-188.9988],[-2.5569,-24.7616,-189.4164],[-4.1554,-24.7328,-188.6099],[-6.1571,-24.8336,-188.5955],[-8.1587,-24.6752,-192.1849],[-11.1253,-24.5744,-193.625],[-12.7238,-24.1424,-196.8399],[-14.8839,-23.8544,-196.8399],[-15.5175,-23.0911,-198.802],[-16.4391,-23.0911,-198.6436],[-16.8423,-23.552,-197.65],[-19.2761,-23.8112,-197.5636],[-22.3434,-24.2144,-195.011],[-23.7835,-24.4448,-195.3279],[-24.6331,-24.5168,-194.6762],[-25.0219,-24.6464,-195.3567],[-25.6124,-24.704,-195.2991],[-26.5484,-24.7328,-194.4314],[-28.3917,-24.8192,-194.0858],[-28.5933,-24.7904,-195.3423],[-30.3358,-24.6032,-194.561],[-29.9758,-24.6464,-196.0911],[-31.4734,-24.4736,-194.7914],[-31.8046,-24.4016,-195.9039],[-33.6479,-24.128,-195.2126],[-33.5471,-24.2,-197.2467],[-34.7568,-24.128,-198.4564],[-35.2464,-24.128,-200.7461],[-38.1841,-23.624,-200.4869],[-39.7682,-23.3935,-201.3077],[-38.6306,-23.5952,-203.2374],[-39.6962,-23.3935,-204.2455],[-41.0211,-23.2639,-203.9431],[-40.6179,-23.2639,-204.9799],[-42.1011,-23.1343,-204.3895],[-40.8627,-23.3359,-207.0392],[-41.6691,-23.5376,-207.9752],[-42.0291,-23.5952,-209.5737],[-43.57,-24.0992,-211.057],[-43.9012,-24.1424,-213.1883],[-46.5077,-25.0064,-214.7436],[-47.1702,-25.208,-215.9964],[-45.4277,-24.776,-220.8638],[-47.4438,-25.3664,-223.7584],[-47.0405,-25.424,-226.1633],[-42.6771,-24.6608,-228.5826],[-41.7411,-24.7328,-231.2467],[-38.6594,-24.4016,-235.7541],[-37.9393,-24.6608,-237.9286],[-36.8881,-24.272,-238.8071],[-36.6145,-24.5024,-240.1463],[-35.7216,-24.2288,-240.8232],[-35.088,-24.56,-243.2281],[-33.6911,-24.2576,-244.8265],[-32.3951,-24.344,-247.9515],[-32.2943,-24.8048,-250.3708],[-31.7038,-24.5456,-250.558],[-31.4446,-24.5456,-251.3645],[-31.4734,-25.2368,-256.2607],[-30.0622,-24.9776,-259.1696],[-30.5374,-25.3376,-260.7681],[-30.0478,-25.2368,-260.3937],[-30.1342,-25.3376,-261.3585],[-28.8957,-24.7904,-261.5601],[-29.1837,-24.8624,-263.2018],[-30.0478,-25.2656,-263.533],[-28.9533,-25.064,-266.874],[-29.6733,-25.3376,-267.3204],[-29.1405,-25.6977,-271.4534],[-30.6814,-25.8273,-271.655],[-34.656,-26.5329,-274.8375],[-34.2528,-26.7633,-276.436],[-30.5374,-26.6913,-276.7672],[-29.1405,-26.4609,-275.7736],[-28.1469,-26.7489,-277.9913],[-26.1164,-27.0513,-280.281],[-24.3307,-27.1521,-281.3466],[-21.9978,-27.5409,-285.3068],[-22.0122,-27.7425,-286.5021],[-23.5099,-28.333,-288.331],[-21.3786,-28.3618,-289.7998],[-22.5018,-28.7938,-291.6719],[-19.9673,-28.5922,-292.2768],[-16.2951,-28.2322,-291.8159],[-17.8072,-28.837,-294.8689],[-17.404,-29.341,-297.3602],[-13.0118,-29.1394,-296.2369],[-10.9381,-29.7298,-299.3763],[-7.1363,-29.7586,-299.3043],[-6.6035,-29.4706,-297.7634],[-4.6738,-29.5282,-297.7778],[-3.7233,-29.0386,-296.2945],[-1.9953,-28.837,-295.7329],[-0.7568,-29.269,-295.9921],[1.2737,-29.0674,-295.3585],[3.2322,-29.7442,-296.0641],[5.0467,-29.8018,-295.7761],[5.1619,-29.3698,-295.0129],[9.2949,-30.2771,-295.3441],[10.7061,-30.0467,-294.6529],[13.1974,-30.4499,-294.4225],[14.4791,-31.0691,-295.3009],[16.1928,-31.1699,-294.4081],[17.8057,-31.5011,-294.3072],[20.2394,-31.5731,-292.4064],[24.43,-32.1059,-292.7088],[25.6252,-32.6676,-296.1073],[28.1453,-32.97,-297.8354],[30.0894,-33.2436,-300.0099],[32.2927,-33.3156,-300.0819],[32.2351,-33.2436,-302.4868],[33.9632,-33.2148,-303.3365],[33.9056,-33.1716,-304.4741],[36.1665,-33.2436,-302.8612],[37.045,-33.2004,-302.8612],[37.4482,-33.1572,-303.7973]],"expectedDistance":630.51,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-06-encounter-2618","objectiveId":"encounter-2618","objectiveName":"Plaguemaw the Rotting","checkpoints":[[37.4482,-33.1572,-303.7973],[37.045,-33.2004,-302.8612],[36.1665,-33.2436,-302.8612],[33.9056,-33.1716,-304.4741],[33.9632,-33.2148,-303.3365],[32.9696,-33.2436,-302.8036],[30.0318,-33.1716,-302.4148],[30.0894,-33.2436,-300.0099],[28.1453,-32.97,-297.8354],[27.8285,-32.6388,-295.1713],[29.9742,-32.9124,-296.7986],[28.6494,-32.61,-294.6673],[33.5024,-33.2148,-296.597],[34.3664,-33.2148,-295.4593],[34.6328,-32.8404,-291.4271],[34.8993,-32.466,-287.3949],[37.0306,-32.8692,-289.6558],[39.0898,-32.5668,-284.0684],[39.5507,-32.1924,-276.6664],[43.1904,-32.4804,-275.464],[46.8302,-32.7684,-274.2615],[48.9039,-32.7396,-270.0277],[53.1125,-33.042,-268.3716],[52.9973,-32.8404,-264.8579],[54.7974,-32.9412,-263.965],[55.2006,-32.6388,-262.165],[60.4712,-32.8116,-258.8096],[60.5288,-32.538,-258.3632],[61.9977,-32.826,-257.1247],[62.7033,-32.6244,-255.2814],[65.6123,-33.042,-251.1916],[65.8715,-32.6388,-249.694],[67.2252,-33.1284,-248.0811],[67.0811,-32.6964,-246.0794],[67.9596,-33.0996,-244.6105],[68.4204,-32.826,-242.0904],[69.0252,-33.2148,-241.428],[68.9532,-32.9268,-240.3479],[69.4717,-33.3012,-239.9015],[69.27,-33.042,-237.7558],[69.7453,-33.4308,-236.0277],[69.4285,-33.2004,-233.9972],[69.8317,-33.5316,-233.5796],[68.5068,-33.3012,-231.2755],[68.7516,-33.834,-229.245],[68.1036,-33.7044,-228.741],[68.2908,-34.1076,-227.4449],[67.1532,-33.7764,-226.7105],[66.3611,-33.8772,-225.112],[65.1947,-33.546,-224.5504],[64.7338,-33.7764,-223.2831],[63.8698,-33.546,-222.6783],[63.3658,-34.0644,-220.5182],[62.3001,-33.7908,-219.7406],[62.2281,-34.0932,-218.8765],[63.625,-34.5541,-217.7245],[61.8969,-34.5973,-215.4636],[64.8778,-35.1733,-214.4843],[65.5547,-35.4469,-213.0299],[59.0168,-34.6693,-212.6699],[57.8791,-34.6981,-211.201],[58.4119,-34.8997,-209.9337],[56.8423,-34.9429,-208.8825],[56.7127,-35.1157,-206.8376],[54.1781,-35.0437,-205.9015],[54.9126,-35.2741,-203.5398],[54.4374,-35.3317,-202.647],[53.1701,-35.4325,-201.2069],[49.9156,-35.4613,-199.8101],[50.1748,-35.9365,-194.3342],[45.4477,-35.8933,-191.4073],[47.0174,-36.3397,-185.9314],[42.4776,-36.0949,-185.4706],[42.3336,-36.2389,-183.1233],[38.2978,-35.9653,-183.5265],[36.6993,-36.1093,-181.064],[38.2258,-36.3829,-179.5375],[35.9649,-36.3829,-179.0047],[36.4977,-36.6134,-176.7438],[31.1839,-36.4405,-175.7789],[29.1102,-36.671,-172.3804],[25.5244,-36.599,-171.5595],[24.1996,-36.6278,-172.1644],[22.6011,-36.9878,-169.4283],[21.4634,-37.1174,-169.5723],[20.8298,-37.2902,-167.8298],[19.6489,-37.391,-167.9306],[19.6057,-37.2182,-169.8027],[18.1369,-36.959,-170.3355],[16.0344,-36.9014,-169.6731],[13.4999,-36.5126,-170.1339],[10.4325,-37.3046,-165.6121],[9.3093,-36.8726,-166.6777],[9.3093,-37.2614,-165.2089],[7.4372,-36.743,-166.3321],[4.2402,-36.3397,-167.297],[-0.1664,-36.1669,-167.0665],[-2.8017,-36.1669,-167.5706],[-6.5603,-36.2389,-166.8937],[-8.562,-36.2677,-167.4698],[-11.6293,-36.5558,-165.7273],[-14.1062,-36.5558,-166.8073],[-15.5751,-36.815,-164.9352],[-16.1079,-36.5846,-167.0665],[-17.2312,-36.6854,-166.7929],[-17.692,-36.4261,-169.0538],[-18.7288,-36.3685,-169.3418],[-19.7945,-36.5414,-168.8234],[-20.6009,-36.2821,-169.5003],[-21.3642,-36.3829,-169.2842],[-21.7242,-36.2101,-169.9899],[-22.5306,-36.3685,-169.7307],[-23.193,-36.2965,-170.1339],[-23.9131,-36.5558,-169.097],[-24.4459,-36.455,-169.7163],[-26.5772,-36.9158,-168.1178],[-29.0973,-36.7574,-169.6443],[-28.3053,-36.2245,-172.3804],[-30.9694,-36.3253,-173.3452],[-31.3726,-36.1525,-174.9437],[-33.5039,-35.9365,-178.1983],[-39.0914,-35.7349,-182.8929],[-39.5954,-35.4613,-184.2321],[-41.4531,-35.4901,-186.2626],[-43.6852,-35.5909,-186.7235],[-47.0982,-35.5477,-189.4884],[-47.7606,-35.5477,-190.41],[-47.559,-35.3173,-192.2533],[-49.143,-35.3029,-194.8814],[-50.5255,-35.5045,-195.7635],[-51.2023,-35.3317,-197.0883],[-51.7928,-35.5333,-197.1027],[-54.4857,-35.4757,-203.5254],[-55.7818,-35.8357,-204.6775],[-55.5369,-35.4757,-205.2967],[-57.5962,-36.2965,-207.0824],[-58.5899,-36.4694,-209.1417],[-58.6907,-36.1669,-210.8842],[-59.2811,-36.3685,-211.561],[-58.8635,-35.8069,-212.5403],[-59.9579,-36.1669,-213.8219],[-59.6987,-35.5765,-215.262],[-60.2316,-35.6053,-216.7308],[-61.4844,-36.3685,-216.6444],[-61.6572,-36.3397,-217.2925],[-60.8796,-35.6053,-218.6461],[-61.9452,-36.1669,-219.1646],[-63.3565,-36.4982,-221.6127],[-63.3565,-36.2101,-224.0032],[-62.7805,-35.6341,-226.2641],[-62.2333,-35.3029,-226.2353],[-64.1485,-35.3749,-232.3988],[-65.4878,-35.6629,-235.2357],[-67.3455,-36.2965,-237.5254],[-67.2159,-35.9653,-238.5767],[-68.4543,-36.6278,-239.2391],[-66.5391,-35.3893,-242.5944],[-67.0719,-35.6917,-244.7401],[-66.8127,-35.8213,-246.353],[-68.872,-36.7286,-248.3547],[-69.232,-36.959,-249.5644],[-67.7055,-36.5558,-250.3564],[-68.5119,-36.8582,-251.4797],[-67.8207,-36.9878,-254.979],[-69.0304,-37.391,-256.5199],[-69.1024,-37.5638,-259.1264],[-67.8927,-37.5206,-261.1281],[-68.0223,-37.5206,-263.0722],[-67.3887,-37.4486,-263.0578],[-67.9935,-37.4486,-263.9794],[-67.3023,-37.5206,-264.5987],[-66.9855,-37.6358,-267.3204],[-64.811,-37.6214,-269.3941],[-66.0062,-37.7222,-271.3814],[-64.7678,-37.7222,-273.4695],[-66.1502,-37.823,-275.3992],[-65.7614,-37.5638,-278.2073],[-67.3743,-37.4054,-280.5978],[-68.5695,-37.3046,-281.4042],[-67.3743,-36.599,-285.4076],[-68.8288,-36.0373,-288.9358],[-67.2591,-35.5765,-291.9311],[-67.2303,-35.3749,-294.1488],[-69.0592,-35.2453,-295.2865],[-67.6335,-35.0437,-298.2818],[-69.6496,-34.8133,-300.4707],[-68.6992,-34.5397,-303.8693],[-70.3264,-34.4101,-304.8773],[-69.9376,-34.2084,-306.8646],[-71.2193,-34.0356,-308.1895],[-69.952,-33.9348,-310.2776],[-69.808,-33.7332,-312.9417],[-68.0079,-33.7332,-313.6905],[-67.4751,-33.5604,-315.9515],[-68.3535,-33.3732,-318.6012],[-67.0719,-33.3732,-319.3932],[-67.3311,-33.3156,-320.3005],[-65.8478,-33.2724,-320.5165],[-65.675,-33.2004,-321.0637],[-66.6975,-33.1428,-321.7981],[-66.1358,-32.97,-322.9358],[-66.8127,-32.7396,-323.8862],[-66.0062,-32.466,-325.0815],[-66.4527,-32.0627,-326.3775],[-65.7614,-31.5587,-328.2208],[-66.2942,-30.7955,-329.6177],[-65.891,-30.3923,-330.7985],[-64.5518,-30.7235,-331.0001],[-64.1629,-30.4931,-331.8066],[-62.3485,-30.4643,-332.3106],[-62.2765,-30.0323,-333.3619],[-61.47,-29.6002,-334.1683],[-61.686,-29.3122,-335.2627],[-59.5691,-28.837,-335.8964],[-58.6475,-28.333,-337.7541],[-56.2138,-27.829,-338.1717],[-56.2714,-27.5409,-339.8134],[-54.7161,-27.4689,-338.6469],[-53.5497,-26.9073,-339.8278],[-53.3624,-26.3457,-341.7718],[-51.2743,-25.7121,-342.2615],[-50.8711,-25.208,-343.8455],[-49.5319,-24.776,-344.4072],[-48.7686,-24.2432,-346.0776],[-48.9846,-24.0704,-347.1721],[-47.1702,-23.2495,-349.6922],[-46.6661,-22.8175,-351.5787],[-47.5734,-22.3999,-354.9629],[-46.6805,-22.0687,-356.3741],[-46.5797,-21.7231,-358.5918],[-44.6644,-21.291,-360.1759],[-44.2612,-21.0318,-361.9328],[-43.0084,-20.7438,-363.2576],[-42.8644,-20.6142,-364.2945],[-43.8436,-20.571,-365.1297],[-43.1668,-20.4414,-365.7202],[-43.7284,-20.2686,-367.117],[-44.9381,-20.1678,-367.8227],[-45.3989,-19.5774,-369.0179],[-45.1397,-19.4046,-370.3428],[-46.2485,-18.6989,-370.7172],[-45.7589,-18.8285,-371.844],[-46.6373,-18.0653,-374.987],[-45.8309,-18.4397,-377.3235],[-44.9669,-18.3101,-382.6661],[-42.3315,-19.1453,-388.1816],[-42.9364,-18.7709,-388.2968],[-42.6627,-18.8717,-389.3049],[-43.0804,-18.4973,-390.3417],[-42.2019,-19.1597,-392.1706],[-42.6051,-18.8285,-392.3722],[-42.2595,-19.1021,-392.8618],[-42.6051,-18.8285,-393.6251],[-42.2019,-19.1597,-393.8123],[-42.6195,-18.8285,-394.1291],[-42.0867,-19.2029,-394.8635],[-42.3603,-18.9725,-396.0012],[-43.1236,-18.3677,-396.5772],[-42.5187,-18.7277,-398.3773],[-43.0516,-18.4973,-399.7165],[-42.1587,-19.0013,-400.883],[-43.0228,-18.6413,-401.8046],[-42.1731,-18.9725,-402.107],[-42.6195,-19.0445,-404.728],[-43.8868,-18.7133,-406.6577],[-43.8292,-19.0445,-410.9347],[-45.3557,-18.5837,-412.7923],[-45.2405,-18.7853,-415.2549],[-46.5077,-18.2813,-416.3925],[-45.5573,-18.6125,-416.6229],[-46.0037,-18.6125,-417.8326],[-47.415,-18.2093,-418.5382],[-47.343,-18.6125,-420.6119],[-48.5526,-18.2381,-421.0151],[-48.999,-18.3389,-422.5416],[-50.4679,-17.5613,-422.4696],[-51.1159,-17.4605,-423.42],[-52.0088,-16.8556,-423.2328],[-52.2392,-17.1437,-424.3417],[-52.7864,-16.7404,-424.4569],[-53.4632,-16.798,-425.8538],[-54.5001,-16.2508,-426.5306],[-54.6153,-16.4956,-427.2362],[-55.5369,-16.006,-427.625],[-55.7962,-16.2796,-428.3019],[-56.4154,-15.9052,-428.4027],[-56.3578,-16.2364,-428.8635],[-57.5674,-16.1356,-429.5691],[-57.3226,-16.798,-431.1388],[-57.9131,-17.1293,-432.8813],[-59.4971,-16.6972,-432.5357],[-60.03,-16.726,-433.0253],[-58.6331,-17.4173,-435.8046],[-59.4395,-17.2877,-437.4031],[-58.8923,-16.51,-441.1329],[-60.6924,-16.3084,-442.3569],[-61.0956,-15.8332,-444.3586],[-63.1693,-15.8908,-445.021],[-62.1613,-15.6604,-447.8004],[-63.3565,-15.718,-447.8004],[-62.9533,-15.7468,-450.5941],[-65.1278,-15.7468,-453.9387],[-71.1905,-15.7468,-455.6847],[-73.9986,-15.7468,-461.2902],[-77.0803,-15.7468,-462.7303],[-79.4277,-15.79,-462.0534],[-81.0261,-15.79,-460.671],[-81.1125,-15.9916,-462.111],[-81.8038,-16.1932,-461.319],[-82.4806,-16.438,-461.7942],[-83.503,-16.7404,-461.2758],[-83.8919,-16.798,-460.2065],[-86.0952,-17.2589,-460.5666],[-87.4344,-17.7341,-459.3677],[-89.4361,-18.3677,-458.8349],[-90.1562,-18.8429,-456.8008],[-94.1739,-19.6494,-458.0392],[-94.9804,-19.9518,-457.2472],[-97.5149,-20.3118,-458.6441],[-97.4429,-20.3406,-458.1112],[-98.2349,-20.5422,-458.068],[-99.0846,-20.6142,-458.8169],[-100.0494,-21.0174,-457.636],[-103.1888,-21.3342,-458.9033],[-105.4209,-21.6367,-458.6873],[-106.9905,-21.9679,-458.1112],[-109.4242,-22.2559,-455.6919],[-108.949,-22.1263,-457.2184],[-111.6707,-21.9247,-457.8844],[-112.074,-21.6223,-459.9329],[-113.442,-21.6223,-459.7565],[-113.2548,-21.5647,-460.365],[-114.7093,-21.6367,-461.0994],[-114.0181,-21.6079,-462.2118],[-114.4069,-21.5647,-463.8103],[-113.7444,-21.4639,-465.0776],[-115.1413,-21.4639,-466.0712],[-115.6165,-21.4639,-467.6697],[-117.0566,-21.5647,-468.8073],[-117.4598,-21.5359,-470.6506],[-116.711,-21.4927,-471.0538],[-117.8486,-21.5647,-472.6523],[-117.8342,-21.5647,-474.5244],[-118.5687,-21.6079,-476.4685],[-120.0951,-21.6079,-476.7421],[-119.8935,-21.5791,-478.067],[-120.6856,-21.6079,-478.9886],[-119.5479,-21.6079,-480.3135],[-117.287,-21.5071,-480.8607],[-115.8037,-21.2334,-482.5024],[-113.586,-21.003,-483.1792],[-113.0532,-20.7438,-483.9712],[-113.2692,-20.5422,-485.0657],[-112.146,-20.2398,-485.7713],[-112.146,-19.9662,-486.837],[-110.5619,-19.2894,-489.0691],[-108.949,-18.2237,-493.8069],[-108.0274,-17.8637,-493.6917],[-106.1409,-16.2364,-496.6438],[-105.8673,-15.6316,-498.7607],[-103.7072,-13.7307,-502.8505],[-101.8639,-11.7002,-508.0492],[-101.7343,-11.1098,-509.9069],[-100.6974,-10.1449,-511.7933],[-100.539,-9.3097,-514.155],[-99.9918,-8.8345,-515.0191],[-100.8846,-8.8633,-516.1279],[-99.8478,-8.6329,-517.0928],[-99.5886,-8.4312,-518.6337],[-97.7597,-7.8984,-519.8001],[-98.1485,-7.6536,-521.3986],[-97.7597,-7.4232,-522.9971],[-96.1612,-7.3944,-524.2067],[-96.55,-7.3656,-526.6116],[-96.1468,-7.3656,-528.6277],[-97.3565,-7.3368,-529.8518],[-96.9533,-7.3224,-531.7959],[-97.3565,-7.4232,-533.7976],[-95.7724,-7.7688,-534.9928],[-95.3692,-8.0136,-536.9945],[-94.0299,-8.316,-538.9818],[-92.0282,-8.0424,-538.5786],[-90.5738,-7.7688,-539.1978],[-90.1706,-7.74,-540.4075],[-91.625,-8.1432,-542.5964],[-89.3497,-7.7112,-543.8204],[-90.1417,-8.0424,-546.2289],[-87.3336,-7.6104,-549.8327],[-83.3446,-7.2792,-550.6247],[-79.0532,-7.2792,-553.6957],[-78.2612,-7.2792,-557.6271],[-74.8626,-7.308,-559.816],[-73.3938,-7.3368,-560.1472],[-73.1634,-7.3656,-563.2001],[-72.5585,-7.3656,-563.6609]],"expectedDistance":868.44,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"bb0ec23a55c316d74722ddb95ee67376995c95e568b9e217ec313ce7a3d10483","generationStatus":"Candidate","generationIssues":[]},{"schemaVersion":1,"id":"primary","dungeonId":"scarlet-monastery","mapId":189,"legs":[{"id":"leg-01-creature-39934","objectiveId":"creature-39934","objectiveName":"Bloodmage Thalnos","checkpoints":[[1054.1679,18.6998,1689.1659],[1061.1293,18.1891,1691.698],[1068.0906,17.6784,1694.2301],[1075.052,17.1678,1696.7622],[1082.0134,16.6571,1699.2943],[1088.9747,16.1464,1701.8264],[1095.9361,15.6357,1704.3585],[1102.8975,15.1251,1706.8906],[1109.8588,14.6144,1709.4226],[1116.8202,14.1037,1711.9547],[1123.7815,13.593,1714.4868],[1130.7429,13.0824,1717.0189],[1137.7043,12.5717,1719.551],[1144.6656,12.061,1722.0831],[1151.627,11.5503,1724.6152],[1158.5884,11.0397,1727.1473],[1165.5497,10.529,1729.6794],[1172.5111,10.0183,1732.2114],[1179.4725,9.5077,1734.7435],[1186.4338,8.997,1737.2756],[1193.3952,8.4863,1739.8077],[1200.3566,7.9756,1742.3398],[1207.3179,7.465,1744.8719],[1214.2793,6.9543,1747.404],[1221.2407,6.4436,1749.9361],[1228.202,5.9329,1752.4681],[1235.1634,5.4223,1755.0002],[1242.1248,4.9116,1757.5323],[1249.0861,4.4009,1760.0644],[1256.0475,3.8902,1762.5965],[1263.0089,3.3796,1765.1286],[1269.9702,2.8689,1767.6607],[1276.9316,2.3582,1770.1928],[1283.8929,1.8476,1772.7249],[1290.8543,1.3369,1775.2569],[1297.8157,0.8262,1777.789],[1304.777,0.3155,1780.3211],[1311.7384,-0.1951,1782.8532],[1318.6998,-0.7058,1785.3853],[1325.6611,-1.2165,1787.9174],[1332.6225,-1.7272,1790.4495],[1339.5839,-2.2378,1792.9816],[1346.5452,-2.7485,1795.5136],[1353.5066,-3.2592,1798.0457],[1360.468,-3.7699,1800.5778],[1367.4293,-4.2805,1803.1099],[1374.3907,-4.7912,1805.642],[1381.3521,-5.3019,1808.1741],[1388.3134,-5.8125,1810.7062],[1395.2748,-6.3232,1813.2383],[1402.2362,-6.8339,1815.7704],[1409.1975,-7.3446,1818.3024],[1416.1589,-7.8552,1820.8345]],"expectedDistance":386.11,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-40088","objectiveId":"creature-40088","objectiveName":"Houndmaster Loksey","checkpoints":[[1416.1589,-7.8552,1820.8345],[1410.902,-7.772,1815.5036],[1405.6451,-7.6887,1810.1726],[1400.3882,-7.6055,1804.8416],[1395.1313,-7.5223,1799.5107],[1389.8744,-7.439,1794.1797],[1384.6175,-7.3558,1788.8487],[1379.3606,-7.2725,1783.5178],[1374.1037,-7.1893,1778.1868],[1368.8468,-7.106,1772.8558],[1363.5899,-7.0228,1767.5249],[1358.333,-6.9395,1762.1939],[1353.076,-6.8563,1756.8629],[1347.8191,-6.7731,1751.532],[1342.5622,-6.6898,1746.201],[1337.3053,-6.6066,1740.87],[1332.0484,-6.5233,1735.5391],[1326.7915,-6.4401,1730.2081],[1321.5346,-6.3568,1724.8771],[1316.2777,-6.2736,1719.5462],[1311.0208,-6.1903,1714.2152],[1305.7639,-6.1071,1708.8842],[1300.507,-6.0239,1703.5533],[1295.2501,-5.9406,1698.2223],[1289.9932,-5.8574,1692.8913],[1284.7363,-5.7741,1687.5604],[1279.4794,-5.6909,1682.2294],[1274.2225,-5.6076,1676.8984],[1268.9656,-5.5244,1671.5675],[1263.7087,-5.4411,1666.2365],[1258.4518,-5.3579,1660.9055],[1253.1949,-5.2747,1655.5746],[1247.938,-5.1914,1650.2436],[1242.6811,-5.1082,1644.9126],[1237.4242,-5.0249,1639.5817],[1232.1673,-4.9417,1634.2507],[1226.9104,-4.8584,1628.9197],[1221.6535,-4.7752,1623.5888],[1216.3966,-4.6919,1618.2578],[1211.1397,-4.6087,1612.9268],[1205.8828,-4.5255,1607.5959],[1200.6259,-4.4422,1602.2649],[1195.369,-4.359,1596.9339],[1190.1121,-4.2757,1591.603],[1184.8551,-4.1925,1586.272],[1179.5982,-4.1092,1580.941],[1174.3413,-4.026,1575.6101],[1169.0844,-3.9427,1570.2791],[1163.8275,-3.8595,1564.9481],[1158.5706,-3.7763,1559.6172],[1153.3137,-3.693,1554.2862],[1148.0568,-3.6098,1548.9552],[1142.7999,-3.5265,1543.6243],[1137.543,-3.4433,1538.2933],[1132.2861,-3.36,1532.9623],[1127.0292,-3.2768,1527.6314],[1121.7723,-3.1935,1522.3004],[1116.5154,-3.1103,1516.9694],[1111.2585,-3.0271,1511.6385],[1106.0016,-2.9438,1506.3075],[1100.7447,-2.8606,1500.9766],[1095.4878,-2.7773,1495.6456],[1090.2309,-2.6941,1490.3146],[1084.974,-2.6108,1484.9837],[1079.7171,-2.5276,1479.6527],[1074.4602,-2.4443,1474.3217],[1069.2033,-2.3611,1468.9908],[1063.9464,-2.2779,1463.6598],[1058.6895,-2.1946,1458.3288],[1053.4326,-2.1114,1452.9979],[1048.1757,-2.0281,1447.6669],[1042.9188,-1.9449,1442.3359],[1037.6619,-1.8616,1437.005],[1032.405,-1.7784,1431.674],[1027.1481,-1.6951,1426.343],[1021.8911,-1.6119,1421.0121],[1016.6342,-1.5287,1415.6811],[1011.3773,-1.4454,1410.3501],[1006.1204,-1.3622,1405.0192],[1000.8635,-1.2789,1399.6882],[995.6066,-1.1957,1394.3572],[990.3497,-1.1124,1389.0263],[985.0928,-1.0292,1383.6953],[979.8359,-0.9459,1378.3643],[974.579,-0.8627,1373.0334],[969.3221,-0.7795,1367.7024],[964.0652,-0.6962,1362.3714],[958.8083,-0.613,1357.0405],[953.5514,-0.5297,1351.7095],[948.2945,-0.4465,1346.3785],[943.0376,-0.3632,1341.0476],[937.7807,-0.28,1335.7166],[932.5238,-0.1967,1330.3856],[927.2669,-0.1135,1325.0547],[922.01,-0.0303,1319.7237],[916.7531,0.053,1314.3927],[911.4962,0.1362,1309.0618],[906.2393,0.2195,1303.7308],[900.9824,0.3027,1298.3998],[895.7255,0.386,1293.0689],[890.4686,0.4692,1287.7379],[885.2117,0.5525,1282.4069],[879.9548,0.6357,1277.076],[874.6979,0.7189,1271.745],[869.441,0.8022,1266.414],[864.1841,0.8854,1261.0831],[858.9272,0.9687,1255.7521],[853.6702,1.0519,1250.4211],[848.4133,1.1352,1245.0902],[843.1564,1.2184,1239.7592],[837.8995,1.3017,1234.4282],[832.6426,1.3849,1229.0973],[827.3857,1.4682,1223.7663],[822.1288,1.5514,1218.4353],[816.8719,1.6346,1213.1044],[811.615,1.7179,1207.7734],[806.3581,1.8011,1202.4424],[801.1012,1.8844,1197.1115],[795.8443,1.9676,1191.7805],[790.5874,2.0509,1186.4495],[785.3305,2.1341,1181.1186],[780.0736,2.2174,1175.7876],[774.8167,2.3006,1170.4566],[769.5598,2.3838,1165.1257],[764.3029,2.4671,1159.7947],[759.046,2.5503,1154.4637],[753.7891,2.6336,1149.1328],[748.5322,2.7168,1143.8018],[743.2753,2.8001,1138.4708],[738.0184,2.8833,1133.1399],[732.7615,2.9666,1127.8089],[727.5046,3.0498,1122.4779],[722.2477,3.133,1117.147],[716.9908,3.2163,1111.816],[711.7339,3.2995,1106.485],[706.477,3.3828,1101.1541],[701.2201,3.466,1095.8231],[695.9632,3.5493,1090.4921],[690.7062,3.6325,1085.1612],[685.4493,3.7158,1079.8302],[680.1924,3.799,1074.4992],[674.9355,3.8822,1069.1683],[669.6786,3.9655,1063.8373],[664.4217,4.0487,1058.5063],[659.1648,4.132,1053.1754],[653.9079,4.2152,1047.8444],[648.651,4.2985,1042.5134],[643.3941,4.3817,1037.1825],[638.1372,4.465,1031.8515],[632.8803,4.5482,1026.5205],[627.6234,4.6314,1021.1896],[622.3665,4.7147,1015.8586],[617.1096,4.7979,1010.5276],[611.8527,4.8812,1005.1967],[606.5958,4.9644,999.8657],[601.3389,5.0477,994.5347],[596.082,5.1309,989.2038],[590.8251,5.2142,983.8728],[585.5682,5.2974,978.5419],[580.3113,5.3806,973.2109],[575.0544,5.4639,967.8799],[569.7975,5.5471,962.549],[564.5406,5.6304,957.218],[559.2837,5.7136,951.887],[554.0268,5.7969,946.5561],[548.7699,5.8801,941.2251],[543.513,5.9634,935.8941],[538.2561,6.0466,930.5632],[532.9992,6.1298,925.2322],[527.7423,6.2131,919.9012],[522.4853,6.2963,914.5703],[517.2284,6.3796,909.2393],[511.9715,6.4628,903.9083],[506.7146,6.5461,898.5774],[501.4577,6.6293,893.2464],[496.2008,6.7126,887.9154],[490.9439,6.7958,882.5845],[485.687,6.879,877.2535],[480.4301,6.9623,871.9225],[475.1732,7.0455,866.5916],[469.9163,7.1288,861.2606],[464.6594,7.212,855.9296],[459.4025,7.2953,850.5987],[454.1456,7.3785,845.2677],[448.8887,7.4618,839.9367],[443.6318,7.545,834.6058],[438.3749,7.6282,829.2748],[433.118,7.7115,823.9438],[427.8611,7.7947,818.6129],[422.6042,7.878,813.2819],[417.3473,7.9612,807.9509],[412.0904,8.0445,802.62],[406.8335,8.1277,797.289],[401.5766,8.211,791.958],[396.3197,8.2942,786.6271],[391.0628,8.3774,781.2961],[385.8059,8.4607,775.9651],[380.549,8.5439,770.6342],[375.2921,8.6272,765.3032],[370.0352,8.7104,759.9722],[364.7783,8.7937,754.6413],[359.5213,8.8769,749.3103],[354.2644,8.9602,743.9793],[349.0075,9.0434,738.6484],[343.7506,9.1266,733.3174],[338.4937,9.2099,727.9864],[333.2368,9.2931,722.6555],[327.9799,9.3764,717.3245],[322.723,9.4596,711.9935],[317.4661,9.5429,706.6626],[312.2092,9.6261,701.3316],[306.9523,9.7094,696.0006],[301.6954,9.7926,690.6697],[296.4385,9.8758,685.3387],[291.1816,9.9591,680.0077],[285.9247,10.0423,674.6768],[280.6678,10.1256,669.3458],[275.4109,10.2088,664.0148],[270.154,10.2921,658.6839],[264.8971,10.3753,653.3529],[259.6402,10.4586,648.0219],[254.3833,10.5418,642.691],[249.1264,10.625,637.36],[243.8695,10.7083,632.029],[238.6126,10.7915,626.6981],[233.3557,10.8748,621.3671],[228.0988,10.958,616.0361],[222.8419,11.0413,610.7052],[217.585,11.1245,605.3742],[212.3281,11.2078,600.0432],[207.0712,11.291,594.7123],[201.8143,11.3743,589.3813],[196.5574,11.4575,584.0503],[191.3004,11.5407,578.7194],[186.0435,11.624,573.3884],[180.7866,11.7072,568.0574],[175.5297,11.7905,562.7265],[170.2728,11.8737,557.3955],[165.0159,11.957,552.0645],[159.759,12.0402,546.7336],[154.5021,12.1235,541.4026],[149.2452,12.2067,536.0716],[143.9883,12.2899,530.7407],[138.7314,12.3732,525.4097],[133.4745,12.4564,520.0787],[128.2176,12.5397,514.7478],[122.9607,12.6229,509.4168],[117.7038,12.7062,504.0858],[112.4469,12.7894,498.7549],[107.19,12.8727,493.4239],[101.9331,12.9559,488.0929],[96.6762,13.0391,482.762],[91.4193,13.1224,477.431],[86.1624,13.2056,472.1],[80.9055,13.2889,466.7691],[75.6486,13.3721,461.4381],[70.3917,13.4554,456.1071],[65.1348,13.5386,450.7762],[59.8779,13.6219,445.4452],[54.621,13.7051,440.1143],[49.3641,13.7883,434.7833],[44.1072,13.8716,429.4523],[38.8503,13.9548,424.1214],[33.5934,14.0381,418.7904],[28.3364,14.1213,413.4594],[23.0795,14.2046,408.1285],[17.8226,14.2878,402.7975],[12.5657,14.3711,397.4665],[7.3088,14.4543,392.1356],[2.0519,14.5375,386.8046],[-3.205,14.6208,381.4736],[-8.4619,14.704,376.1427],[-13.7188,14.7873,370.8117],[-18.9757,14.8705,365.4807],[-24.2326,14.9538,360.1498],[-29.4895,15.037,354.8188],[-34.7464,15.1203,349.4878],[-40.0033,15.2035,344.1569],[-45.2602,15.2867,338.8259],[-50.5171,15.37,333.4949],[-55.774,15.4532,328.164],[-61.0309,15.5365,322.833],[-66.2878,15.6197,317.502],[-71.5447,15.703,312.1711],[-76.8016,15.7862,306.8401],[-82.0585,15.8695,301.5091],[-87.3154,15.9527,296.1782],[-92.5723,16.0359,290.8472],[-97.8292,16.1192,285.5162],[-103.0861,16.2024,280.1853],[-108.343,16.2857,274.8543],[-113.5999,16.3689,269.5233],[-118.8568,16.4522,264.1924],[-124.1137,16.5354,258.8614],[-129.3706,16.6187,253.5304],[-134.6275,16.7019,248.1995],[-139.8845,16.7851,242.8685],[-145.1414,16.8684,237.5375],[-150.3983,16.9516,232.2066],[-155.6552,17.0349,226.8756],[-160.9121,17.1181,221.5446],[-166.169,17.2014,216.2137],[-171.4259,17.2846,210.8827],[-176.6828,17.3679,205.5517],[-181.9397,17.4511,200.2208],[-187.1966,17.5343,194.8898],[-192.4535,17.6176,189.5588],[-197.7104,17.7008,184.2279],[-202.9673,17.7841,178.8969],[-208.2242,17.8673,173.5659],[-213.4811,17.9506,168.235],[-218.738,18.0338,162.904],[-223.9949,18.1171,157.573],[-229.2518,18.2003,152.2421],[-234.5087,18.2835,146.9111],[-239.7656,18.3668,141.5801],[-245.0225,18.45,136.2492],[-250.2794,18.5333,130.9182],[-255.5363,18.6165,125.5872],[-260.7932,18.6998,120.2563]],"expectedDistance":2388.48,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-40124","objectiveId":"creature-40124","objectiveName":"Arcanist Doan","checkpoints":[[-260.7932,18.6998,120.2563],[-260.2725,18.6998,122.1438],[-258.5803,18.6998,123.9662],[-259.2312,18.7649,127.1554],[-257.6691,18.7649,129.6937],[-254.545,18.6998,130.7351],[-254.545,18.6998,132.7527],[-253.5687,18.6998,133.2083],[-255.5213,18.7649,133.7941],[-252.3972,19.0252,134.2497],[-253.8941,19.1554,134.5751],[-253.764,19.2855,135.942],[-251.9416,19.2855,138.0898],[-253.8941,19.2855,138.1549],[-252.0717,19.2855,140.6281],[-254.545,19.2855,143.0363],[-257.604,19.2855,143.0363],[-260.0122,19.2855,140.6281],[-262.4204,19.2855,143.0363],[-261.8997,19.2855,145.5096],[-260.2075,19.2855,145.7048],[-261.5092,19.2855,147.3971],[-260.3376,19.2855,148.9591],[-260.2725,19.2855,150.9768],[-261.5092,19.2855,151.6276],[-259.6868,19.2855,152.2134],[-259.101,19.2855,154.6867],[-259.6868,19.2855,157.1599],[-261.6393,19.2855,157.1599],[-261.6393,19.2855,160.1539],[-260.2725,19.2855,160.7396],[-260.6631,19.2855,161.5858],[-262.4855,19.2855,162.3668],[-262.9411,18.7649,164.3844],[-263.5919,18.7649,164.1241],[-265.3655,18.7649,165.2306],[-267.1391,18.7649,167.1181],[-271.1256,18.9601,167.8991],[-272.4273,19.0903,166.7275],[-275.4863,18.8299,169.4611],[-277.3087,18.6998,172.8456],[-279.4566,18.7649,173.3663],[-279.9122,18.895,174.668],[-280.3678,19.0903,173.5615],[-280.6281,19.2205,174.9934],[-281.2139,19.2855,174.0822],[-281.7346,19.2855,175.384],[-282.9061,19.2855,175.449],[-283.557,19.2855,174.0822],[-286.616,19.2855,173.7568],[-289.0242,19.2855,175.5141],[-292.0832,19.2855,175.7745],[-292.6039,19.2855,173.7568],[-295.0121,19.2855,175.5792],[-296.7694,19.2855,173.5615],[-298.9172,19.2855,173.9521],[-299.2427,19.2855,175.8396],[-300.0888,19.0903,175.9046],[-301.1302,18.6998,172.8456],[-304.9702,18.6998,174.6029],[-308.7452,18.6998,179.224],[-304.9702,18.6998,181.502],[-304.9702,18.6998,186.2533],[-308.7452,18.6998,189.052],[-304.9702,18.6998,194.5192],[-308.7452,18.6998,197.3179],[-304.9702,18.6998,202.72],[-308.7452,18.6998,205.6489],[-304.9702,18.6998,211.1161],[-308.6801,18.6998,213.9798],[-308.615,18.6998,217.2992],[-304.9051,18.6998,220.0979],[-308.615,18.6998,222.3108],[-312.4551,18.6998,220.2932],[-312.5853,18.6998,221.66],[-313.3663,19.0903,220.2932],[-314.4077,19.2855,221.5298],[-315.1236,19.2855,220.2932],[-316.6206,19.1554,221.4647],[-317.4016,19.0252,220.2281],[-318.7684,18.7649,219.6423],[-318.8986,18.7649,221.2044],[-319.8749,18.6998,219.7725],[-321.1115,18.6998,222.7664],[-322.999,18.7649,219.1216],[-327.1645,18.7323,223.0593],[-331.33,18.6998,226.997],[-327.2296,18.6998,227.1272],[-327.555,18.6998,228.8845],[-331.2649,18.6998,229.1448],[-327.4899,18.6998,230.5116],[-327.4899,18.6998,231.2276],[-330.9395,18.6998,232.1388],[-327.4899,18.6998,233.3754],[-327.2946,18.6998,234.0263],[-327.3597,18.6998,234.4168],[-331.33,18.6998,234.4819],[-327.6201,18.6998,235.0026],[-331.3951,18.6998,235.7185],[-331.4601,18.6998,240.5348],[-327.3597,18.6998,244.9607],[-331.3951,18.6998,250.2977],[-331.0045,18.6998,251.2089],[-327.2296,18.6998,251.5343],[-330.9395,18.6998,252.3805],[-327.4899,18.6998,252.9011],[-330.9395,18.6998,253.7473],[-327.4899,18.6998,254.333],[-327.4899,18.6998,254.9188],[-330.9395,18.6998,255.4395],[-327.2296,18.6998,256.611],[-331.0045,18.6998,256.9365],[-331.33,18.6998,257.8477],[-327.2296,18.6998,258.824],[-331.33,18.6998,258.9541],[-327.3597,18.6998,262.9406],[-331.5252,18.6998,266.9271],[-336.3416,18.6998,265.7556],[-337.1226,18.6998,262.8105],[-338.8148,18.9601,265.7393],[-339.5308,19.0903,264.6166],[-340.3769,19.4157,265.3325],[-340.7023,19.6761,264.6166],[-341.4183,20.0666,264.6166],[-343.1756,20.1317,264.5515],[-344.7376,20.1317,265.3976],[-347.0156,20.1317,265.658],[-348.7079,20.0666,263.8356],[-348.773,20.0666,265.5441],[-349.1635,20.1317,263.5915],[-349.4889,20.1967,266.081],[-351.7018,20.2618,263.6566],[-353.5893,20.2618,266.5366],[-356.388,20.1967,265.8044],[-357.2992,20.1317,263.7054],[-359.7074,20.0666,264.4213],[-361.2044,20.0666,265.658],[-363.222,20.0666,265.658],[-363.7427,20.0666,264.4213],[-364.3285,20.0666,266.1949],[-367.5177,20.0666,266.6668],[-367.5177,20.0666,264.3725],[-370.7069,20.0666,263.8518],[-373.8961,20.0666,265.5441],[-373.9612,20.0666,263.8356],[-374.4819,20.0666,265.5278],[-374.9375,20.0666,264.3562],[-375.8487,20.0666,264.3562],[-376.3693,20.0666,264.5515],[-376.4344,20.0666,265.5929],[-378.5172,20.0666,265.4627],[-380.0792,20.0666,264.6166],[-382.0969,20.0666,265.5929],[-382.6176,20.0666,264.3562],[-383.5939,20.0666,265.5929],[-384.1796,20.0666,264.3562],[-387.8245,20.0666,263.7705],[-387.8245,20.1317,260.7765],[-390.8835,20.1967,260.1257],[-390.9486,20.3269,255.9602],[-394.0727,20.392,253.2917],[-394.0727,20.392,256.2205],[-394.7235,20.4571,253.6171],[-395.3093,20.4571,255.6998],[-397.2619,20.4571,255.6998],[-398.6287,20.4571,253.6822],[-400.386,20.4571,252.771],[-400.4511,20.392,255.3744],[-403.3149,20.4571,255.3744],[-405.1373,20.392,259.4097],[-408.0011,20.2618,260.5813],[-408.7821,20.1317,262.0132],[-408.8472,20.1317,263.6403],[-410.4092,20.0666,264.3562],[-410.8648,20.0666,265.5278],[-411.7109,20.0666,264.3562],[-412.2316,20.0666,265.5929],[-415.3557,20.1317,264.5515],[-417.7639,19.6761,264.6166],[-418.1544,19.4157,265.3325],[-419.0656,19.0903,264.6166],[-419.1958,19.0903,265.3976],[-419.5212,18.9601,264.3562],[-420.823,18.6998,267.1224],[-421.8643,18.6998,264.3074],[-425.1837,18.6998,264.3725],[-427.7221,18.6998,261.5576],[-425.5091,18.6998,259.7352],[-426.0298,18.6998,258.6287],[-423.7518,18.6998,256.611],[-424.2074,18.8299,254.9839],[-423.6867,19.0903,254.5934],[-423.6867,19.0903,253.9425],[-424.2074,18.8299,253.6822],[-423.7518,18.8299,252.9011],[-430.7811,18.8299,251.8598],[-429.935,18.8299,251.274],[-433.9052,18.8299,251.2089],[-434.0354,18.6998,250.3628],[-429.219,18.6998,246.9783],[-432.3431,18.6998,248.0197],[-429.4794,18.6998,245.2861],[-432.4733,18.6998,242.3572],[-428.3729,18.6998,237.5409],[-431.2367,18.6998,235.3931],[-431.0414,18.8299,234.2866],[-427.3315,18.8299,233.831],[-431.1716,18.9601,232.7245],[-431.1716,18.9601,231.6832],[-430.1953,18.8299,231.2927],[-433.1893,18.8299,229.8608],[-430.1953,18.6998,227.5177],[-431.3018,18.6998,226.4763],[-429.0238,18.6998,224.5237],[-432.2781,18.6998,221.2044],[-428.9587,18.6998,218.3406],[-431.9526,18.6998,215.9324],[-427.8522,18.6998,215.5419],[-428.5682,18.6998,212.9385],[-431.3018,18.6998,212.0273],[-429.6746,18.6998,210.5303],[-428.5031,18.6998,210.335],[-429.5445,18.6998,209.0333],[-429.5445,18.6998,207.276],[-428.8285,18.6998,206.0394],[-429.7397,18.6998,204.7376],[-428.8285,18.6998,204.6726],[-429.7397,18.6998,203.7614],[-428.6333,18.6998,202.9152],[-430.2604,18.6998,202.004],[-428.6333,18.6998,201.939],[-430.2604,18.6998,198.7498],[-429.7397,18.6998,195.5606],[-427.5268,18.6998,195.5606],[-427.9824,18.6998,192.3713],[-429.6746,18.6998,191.7856],[-428.5031,18.6998,191.2649],[-429.6746,18.6998,189.2472],[-428.5031,18.6998,187.7503],[-427.7221,18.6998,185.3421],[-429.7397,18.6998,184.4309],[-430.4557,18.6998,182.0227],[-428.5031,18.6998,179.7447],[-430.4557,18.6998,177.4667],[-429.7397,18.6998,175.8396],[-428.6333,18.6998,174.9934],[-428.8285,18.6998,173.9521],[-429.7397,18.6998,173.8219],[-428.8285,18.6998,171.3486],[-429.5445,18.6998,169.7866],[-428.6983,18.6998,169.0055],[-431.3018,18.6347,167.9642],[-433.6449,18.5696,165.8163],[-435.0117,18.5696,162.7573],[-429.1539,18.5696,164.7099],[-424.7281,18.5696,162.3668],[-422.7755,18.5696,157.2901],[-427.5919,18.5371,155.1097],[-432.4082,18.5045,152.9293],[-428.2753,18.5045,150.9768],[-424.1423,18.5045,149.0242]],"expectedDistance":705.35,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-89097","objectiveId":"creature-89097","objectiveName":"Herod","checkpoints":[[-424.1423,18.5045,149.0242],[-424.1745,18.4539,156.5123],[-424.2066,18.4033,164.0004],[-424.2388,18.3526,171.4884],[-424.2709,18.302,178.9765],[-424.303,18.2514,186.4646],[-424.3352,18.2008,193.9527],[-424.3673,18.1502,201.4408],[-424.3995,18.0995,208.9289],[-424.4316,18.0489,216.4169],[-424.4637,17.9983,223.905],[-424.4959,17.9477,231.3931],[-424.528,17.897,238.8812],[-424.5602,17.8464,246.3693],[-424.5923,17.7958,253.8573],[-424.6244,17.7452,261.3454],[-424.6566,17.6946,268.8335],[-424.6887,17.6439,276.3216],[-424.7209,17.5933,283.8097],[-424.753,17.5427,291.2978],[-424.7852,17.4921,298.7858],[-424.8173,17.4414,306.2739],[-424.8494,17.3908,313.762],[-424.8816,17.3402,321.2501],[-424.9137,17.2896,328.7382],[-424.9459,17.239,336.2262],[-424.978,17.1883,343.7143],[-425.0101,17.1377,351.2024],[-425.0423,17.0871,358.6905],[-425.0744,17.0365,366.1786],[-425.1066,16.9858,373.6667],[-425.1387,16.9352,381.1547],[-425.1708,16.8846,388.6428],[-425.203,16.834,396.1309],[-425.2351,16.7834,403.619],[-425.2673,16.7327,411.1071],[-425.2994,16.6821,418.5952],[-425.3316,16.6315,426.0832],[-425.3637,16.5809,433.5713],[-425.3958,16.5302,441.0594],[-425.428,16.4796,448.5475],[-425.4601,16.429,456.0356],[-425.4923,16.3784,463.5236],[-425.5244,16.3278,471.0117],[-425.5565,16.2771,478.4998],[-425.5887,16.2265,485.9879],[-425.6208,16.1759,493.476],[-425.653,16.1253,500.9641],[-425.6851,16.0746,508.4521],[-425.7172,16.024,515.9402],[-425.7494,15.9734,523.4283],[-425.7815,15.9228,530.9164],[-425.8137,15.8722,538.4045],[-425.8458,15.8215,545.8925],[-425.878,15.7709,553.3806],[-425.9101,15.7203,560.8687],[-425.9422,15.6697,568.3568],[-425.9744,15.619,575.8449],[-426.0065,15.5684,583.333],[-426.0387,15.5178,590.821],[-426.0708,15.4672,598.3091],[-426.1029,15.4166,605.7972],[-426.1351,15.3659,613.2853],[-426.1672,15.3153,620.7734],[-426.1994,15.2647,628.2614],[-426.2315,15.2141,635.7495],[-426.2636,15.1634,643.2376],[-426.2958,15.1128,650.7257],[-426.3279,15.0622,658.2138],[-426.3601,15.0116,665.7019],[-426.3922,14.961,673.1899],[-426.4244,14.9103,680.678],[-426.4565,14.8597,688.1661],[-426.4886,14.8091,695.6542],[-426.5208,14.7585,703.1423],[-426.5529,14.7078,710.6303],[-426.5851,14.6572,718.1184],[-426.6172,14.6066,725.6065],[-426.6493,14.556,733.0946],[-426.6815,14.5054,740.5827],[-426.7136,14.4547,748.0708],[-426.7458,14.4041,755.5588],[-426.7779,14.3535,763.0469],[-426.81,14.3029,770.535],[-426.8422,14.2522,778.0231],[-426.8743,14.2016,785.5112],[-426.9065,14.151,792.9993],[-426.9386,14.1004,800.4873],[-426.9708,14.0498,807.9754],[-427.0029,13.9991,815.4635],[-427.035,13.9485,822.9516],[-427.0672,13.8979,830.4397],[-427.0993,13.8473,837.9277],[-427.1315,13.7966,845.4158],[-427.1636,13.746,852.9039],[-427.1957,13.6954,860.392],[-427.2279,13.6448,867.8801],[-427.26,13.5942,875.3682],[-427.2922,13.5435,882.8562],[-427.3243,13.4929,890.3443],[-427.3564,13.4423,897.8324],[-427.3886,13.3917,905.3205],[-427.4207,13.341,912.8086],[-427.4529,13.2904,920.2966],[-427.485,13.2398,927.7847],[-427.5172,13.1892,935.2728],[-427.5493,13.1385,942.7609],[-427.5814,13.0879,950.249],[-427.6136,13.0373,957.7371],[-427.6457,12.9867,965.2251],[-427.6779,12.9361,972.7132],[-427.71,12.8854,980.2013],[-427.7421,12.8348,987.6894],[-427.7743,12.7842,995.1775],[-427.8064,12.7336,1002.6655],[-427.8386,12.6829,1010.1536],[-427.8707,12.6323,1017.6417],[-427.9028,12.5817,1025.1298],[-427.935,12.5311,1032.6179],[-427.9671,12.4805,1040.106],[-427.9993,12.4298,1047.594],[-428.0314,12.3792,1055.0821],[-428.0636,12.3286,1062.5702],[-428.0957,12.278,1070.0583],[-428.1278,12.2273,1077.5464],[-428.16,12.1767,1085.0345],[-428.1921,12.1261,1092.5225],[-428.2243,12.0755,1100.0106],[-428.2564,12.0249,1107.4987],[-428.2885,11.9742,1114.9868],[-428.3207,11.9236,1122.4749],[-428.3528,11.873,1129.9629],[-428.385,11.8224,1137.451],[-428.4171,11.7717,1144.9391],[-428.4492,11.7211,1152.4272],[-428.4814,11.6705,1159.9153],[-428.5135,11.6199,1167.4034],[-428.5457,11.5693,1174.8914],[-428.5778,11.5186,1182.3795],[-428.6099,11.468,1189.8676],[-428.6421,11.4174,1197.3557],[-428.6742,11.3668,1204.8438],[-428.7064,11.3161,1212.3318],[-428.7385,11.2655,1219.8199],[-428.7707,11.2149,1227.308],[-428.8028,11.1643,1234.7961],[-428.8349,11.1137,1242.2842],[-428.8671,11.063,1249.7723],[-428.8992,11.0124,1257.2603],[-428.9314,10.9618,1264.7484],[-428.9635,10.9112,1272.2365],[-428.9956,10.8605,1279.7246],[-429.0278,10.8099,1287.2127],[-429.0599,10.7593,1294.7007],[-429.0921,10.7087,1302.1888],[-429.1242,10.6581,1309.6769],[-429.1563,10.6074,1317.165],[-429.1885,10.5568,1324.6531],[-429.2206,10.5062,1332.1412],[-429.2528,10.4556,1339.6292],[-429.2849,10.4049,1347.1173],[-429.3171,10.3543,1354.6054],[-429.3492,10.3037,1362.0935],[-429.3813,10.2531,1369.5816],[-429.4135,10.2025,1377.0696],[-429.4456,10.1518,1384.5577],[-429.4778,10.1012,1392.0458],[-429.5099,10.0506,1399.5339],[-429.542,10,1407.022],[-429.5742,9.9493,1414.5101],[-429.6063,9.8987,1421.9981],[-429.6385,9.8481,1429.4862],[-429.6706,9.7975,1436.9743],[-429.7027,9.7469,1444.4624],[-429.7349,9.6962,1451.9505],[-429.767,9.6456,1459.4386],[-429.7992,9.595,1466.9266],[-429.8313,9.5444,1474.4147],[-429.8635,9.4937,1481.9028],[-429.8956,9.4431,1489.3909],[-429.9277,9.3925,1496.879],[-429.9599,9.3419,1504.367],[-429.992,9.2913,1511.8551],[-430.0242,9.2406,1519.3432],[-430.0563,9.19,1526.8313],[-430.0884,9.1394,1534.3194],[-430.1206,9.0888,1541.8075],[-430.1527,9.0381,1549.2955],[-430.1849,8.9875,1556.7836],[-430.217,8.9369,1564.2717],[-430.2491,8.8863,1571.7598],[-430.2813,8.8357,1579.2479],[-430.3134,8.785,1586.7359],[-430.3456,8.7344,1594.224],[-430.3777,8.6838,1601.7121],[-430.4099,8.6332,1609.2002],[-430.442,8.5825,1616.6883],[-430.4741,8.5319,1624.1764],[-430.5063,8.4813,1631.6644],[-430.5384,8.4307,1639.1525],[-430.5706,8.3801,1646.6406],[-430.6027,8.3294,1654.1287],[-430.6348,8.2788,1661.6168],[-430.667,8.2282,1669.1048],[-430.6991,8.1776,1676.5929],[-430.7313,8.1269,1684.081],[-430.7634,8.0763,1691.5691],[-430.7955,8.0257,1699.0572],[-430.8277,7.9751,1706.5453],[-430.8598,7.9245,1714.0333],[-430.892,7.8738,1721.5214],[-430.9241,7.8232,1729.0095],[-430.9563,7.7726,1736.4976],[-430.9884,7.722,1743.9857],[-431.0205,7.6713,1751.4738],[-431.0527,7.6207,1758.9618],[-431.0848,7.5701,1766.4499],[-431.117,7.5195,1773.938],[-431.1491,7.4689,1781.4261],[-431.1812,7.4182,1788.9142],[-431.2134,7.3676,1796.4022],[-431.2455,7.317,1803.8903],[-431.2777,7.2664,1811.3784],[-431.3098,7.2157,1818.8665],[-431.3419,7.1651,1826.3546],[-431.3741,7.1145,1833.8427],[-431.4062,7.0639,1841.3307],[-431.4384,7.0133,1848.8188],[-431.4705,6.9626,1856.3069],[-431.5027,6.912,1863.795],[-431.5348,6.8614,1871.2831],[-431.5669,6.8108,1878.7711],[-431.5991,6.7601,1886.2592],[-431.6312,6.7095,1893.7473],[-431.6634,6.6589,1901.2354],[-431.6955,6.6083,1908.7235],[-431.7276,6.5577,1916.2116],[-431.7598,6.507,1923.6996],[-431.7919,6.4564,1931.1877],[-431.8241,6.4058,1938.6758],[-431.8562,6.3552,1946.1639],[-431.8883,6.3045,1953.652],[-431.9205,6.2539,1961.14],[-431.9526,6.2033,1968.6281]],"expectedDistance":1819.66,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-05-creature-39946","objectiveId":"creature-39946","objectiveName":"High Inquisitor Whitemane","checkpoints":[[-431.9526,6.2033,1968.6281],[-425.0457,6.2895,1965.7338],[-418.1387,6.3757,1962.8394],[-411.2318,6.4619,1959.9451],[-404.3248,6.5481,1957.0507],[-397.4179,6.6343,1954.1564],[-390.5109,6.7205,1951.262],[-383.6039,6.8068,1948.3677],[-376.697,6.893,1945.4733],[-369.79,6.9792,1942.5789],[-362.8831,7.0654,1939.6846],[-355.9761,7.1516,1936.7902],[-349.0692,7.2378,1933.8959],[-342.1622,7.324,1931.0015],[-335.2553,7.4102,1928.1072],[-328.3483,7.4964,1925.2128],[-321.4413,7.5826,1922.3185],[-314.5344,7.6688,1919.4241],[-307.6274,7.755,1916.5298],[-300.7205,7.8412,1913.6354],[-293.8135,7.9275,1910.7411],[-286.9066,8.0137,1907.8467],[-279.9996,8.0999,1904.9523],[-273.0927,8.1861,1902.058],[-266.1857,8.2723,1899.1636],[-259.2788,8.3585,1896.2693],[-252.3718,8.4447,1893.3749],[-245.4648,8.5309,1890.4806],[-238.5579,8.6171,1887.5862],[-231.6509,8.7033,1884.6919],[-224.744,8.7895,1881.7975],[-217.837,8.8757,1878.9032],[-210.9301,8.962,1876.0088],[-204.0231,9.0482,1873.1145],[-197.1162,9.1344,1870.2201],[-190.2092,9.2206,1867.3258],[-183.3022,9.3068,1864.4314],[-176.3953,9.393,1861.537],[-169.4883,9.4792,1858.6427],[-162.5814,9.5654,1855.7483],[-155.6744,9.6516,1852.854],[-148.7675,9.7378,1849.9596],[-141.8605,9.824,1847.0653],[-134.9536,9.9102,1844.1709],[-128.0466,9.9964,1841.2766],[-121.1397,10.0827,1838.3822],[-114.2327,10.1689,1835.4879],[-107.3257,10.2551,1832.5935],[-100.4188,10.3413,1829.6992],[-93.5118,10.4275,1826.8048],[-86.6049,10.5137,1823.9104],[-79.6979,10.5999,1821.0161],[-72.791,10.6861,1818.1217],[-65.884,10.7723,1815.2274],[-58.9771,10.8585,1812.333],[-52.0701,10.9447,1809.4387],[-45.1631,11.0309,1806.5443],[-38.2562,11.1172,1803.65],[-31.3492,11.2034,1800.7556],[-24.4423,11.2896,1797.8613],[-17.5353,11.3758,1794.9669],[-10.6284,11.462,1792.0726],[-3.7214,11.5482,1789.1782],[3.1855,11.6344,1786.2839],[10.0925,11.7206,1783.3895],[16.9995,11.8068,1780.4951],[23.9064,11.893,1777.6008],[30.8134,11.9792,1774.7064],[37.7203,12.0654,1771.8121],[44.6273,12.1516,1768.9177],[51.5342,12.2379,1766.0234],[58.4412,12.3241,1763.129],[65.3481,12.4103,1760.2347],[72.2551,12.4965,1757.3403],[79.162,12.5827,1754.446],[86.069,12.6689,1751.5516],[92.976,12.7551,1748.6573],[99.8829,12.8413,1745.7629],[106.7899,12.9275,1742.8685],[113.6968,13.0137,1739.9742],[120.6038,13.0999,1737.0798],[127.5107,13.1861,1734.1855],[134.4177,13.2724,1731.2911],[141.3246,13.3586,1728.3968],[148.2316,13.4448,1725.5024],[155.1386,13.531,1722.6081],[162.0455,13.6172,1719.7137],[168.9525,13.7034,1716.8194],[175.8594,13.7896,1713.925],[182.7664,13.8758,1711.0307],[189.6733,13.962,1708.1363],[196.5803,14.0482,1705.242],[203.4872,14.1344,1702.3476],[210.3942,14.2206,1699.4532],[217.3011,14.3068,1696.5589],[224.2081,14.3931,1693.6645],[231.1151,14.4793,1690.7702],[238.022,14.5655,1687.8758],[244.929,14.6517,1684.9815],[251.8359,14.7379,1682.0871],[258.7429,14.8241,1679.1928],[265.6498,14.9103,1676.2984],[272.5568,14.9965,1673.4041],[279.4637,15.0827,1670.5097],[286.3707,15.1689,1667.6154],[293.2777,15.2551,1664.721],[300.1846,15.3413,1661.8266],[307.0916,15.4276,1658.9323],[313.9985,15.5138,1656.0379],[320.9055,15.6,1653.1436],[327.8124,15.6862,1650.2492],[334.7194,15.7724,1647.3549],[341.6263,15.8586,1644.4605],[348.5333,15.9448,1641.5662],[355.4402,16.031,1638.6718],[362.3472,16.1172,1635.7775],[369.2542,16.2034,1632.8831],[376.1611,16.2896,1629.9888],[383.0681,16.3758,1627.0944],[389.975,16.462,1624.2001],[396.882,16.5483,1621.3057],[403.7889,16.6345,1618.4113],[410.6959,16.7207,1615.517],[417.6028,16.8069,1612.6226],[424.5098,16.8931,1609.7283],[431.4168,16.9793,1606.8339],[438.3237,17.0655,1603.9396],[445.2307,17.1517,1601.0452],[452.1376,17.2379,1598.1509],[459.0446,17.3241,1595.2565],[465.9515,17.4103,1592.3622],[472.8585,17.4965,1589.4678],[479.7654,17.5828,1586.5735],[486.6724,17.669,1583.6791],[493.5793,17.7552,1580.7847],[500.4863,17.8414,1577.8904],[507.3933,17.9276,1574.996],[514.3002,18.0138,1572.1017],[521.2072,18.1,1569.2073],[528.1141,18.1862,1566.313],[535.0211,18.2724,1563.4186],[541.928,18.3586,1560.5243],[548.835,18.4448,1557.6299],[555.7419,18.531,1554.7356],[562.6489,18.6172,1551.8412],[569.5559,18.7035,1548.9469],[576.4628,18.7897,1546.0525],[583.3698,18.8759,1543.1582],[590.2767,18.9621,1540.2638],[597.1837,19.0483,1537.3694],[604.0906,19.1345,1534.4751],[610.9976,19.2207,1531.5807],[617.9045,19.3069,1528.6864],[624.8115,19.3931,1525.792],[631.7185,19.4793,1522.8977],[638.6254,19.5655,1520.0033],[645.5324,19.6517,1517.109],[652.4393,19.738,1514.2146],[659.3463,19.8242,1511.3203],[666.2532,19.9104,1508.4259],[673.1602,19.9966,1505.5316],[680.0671,20.0828,1502.6372],[686.9741,20.169,1499.7428],[693.881,20.2552,1496.8485],[700.788,20.3414,1493.9541],[707.695,20.4276,1491.0598],[714.6019,20.5138,1488.1654],[721.5089,20.6,1485.2711],[728.4158,20.6862,1482.3767],[735.3228,20.7724,1479.4824],[742.2297,20.8587,1476.588],[749.1367,20.9449,1473.6937],[756.0436,21.0311,1470.7993],[762.9506,21.1173,1467.905],[769.8576,21.2035,1465.0106],[776.7645,21.2897,1462.1162],[783.6715,21.3759,1459.2219],[790.5784,21.4621,1456.3275],[797.4854,21.5483,1453.4332],[804.3923,21.6345,1450.5388],[811.2993,21.7207,1447.6445],[818.2062,21.8069,1444.7501],[825.1132,21.8932,1441.8558],[832.0201,21.9794,1438.9614],[838.9271,22.0656,1436.0671],[845.8341,22.1518,1433.1727],[852.741,22.238,1430.2784],[859.648,22.3242,1427.384],[866.5549,22.4104,1424.4897],[873.4619,22.4966,1421.5953],[880.3688,22.5828,1418.7009],[887.2758,22.669,1415.8066],[894.1827,22.7552,1412.9122],[901.0897,22.8414,1410.0179],[907.9967,22.9276,1407.1235],[914.9036,23.0139,1404.2292],[921.8106,23.1001,1401.3348],[928.7175,23.1863,1398.4405],[935.6245,23.2725,1395.5461],[942.5314,23.3587,1392.6518],[949.4384,23.4449,1389.7574],[956.3453,23.5311,1386.8631],[963.2523,23.6173,1383.9687],[970.1592,23.7035,1381.0743],[977.0662,23.7897,1378.18],[983.9732,23.8759,1375.2856],[990.8801,23.9621,1372.3913],[997.7871,24.0484,1369.4969],[1004.694,24.1346,1366.6026],[1011.601,24.2208,1363.7082],[1018.5079,24.307,1360.8139],[1025.4149,24.3932,1357.9195],[1032.3218,24.4794,1355.0252],[1039.2288,24.5656,1352.1308],[1046.1358,24.6518,1349.2365],[1053.0427,24.738,1346.3421],[1059.9497,24.8242,1343.4478],[1066.8566,24.9104,1340.5534],[1073.7636,24.9966,1337.659],[1080.6705,25.0828,1334.7647],[1087.5775,25.1691,1331.8703],[1094.4844,25.2553,1328.976],[1101.3914,25.3415,1326.0816],[1108.2983,25.4277,1323.1873],[1115.2053,25.5139,1320.2929],[1122.1123,25.6001,1317.3986],[1129.0192,25.6863,1314.5042],[1135.9262,25.7725,1311.6099],[1142.8331,25.8587,1308.7155],[1149.7401,25.9449,1305.8212],[1156.647,26.0311,1302.9268],[1163.554,26.1173,1300.0324],[1170.4609,26.2036,1297.1381],[1177.3679,26.2898,1294.2437],[1184.2749,26.376,1291.3494],[1191.1818,26.4622,1288.455],[1198.0888,26.5484,1285.5607],[1204.9957,26.6346,1282.6663],[1211.9027,26.7208,1279.772],[1218.8096,26.807,1276.8776],[1225.7166,26.8932,1273.9833],[1232.6235,26.9794,1271.0889],[1239.5305,27.0656,1268.1946],[1246.4374,27.1518,1265.3002],[1253.3444,27.238,1262.4059],[1260.2514,27.3243,1259.5115],[1267.1583,27.4105,1256.6171],[1274.0653,27.4967,1253.7228],[1280.9722,27.5829,1250.8284],[1287.8792,27.6691,1247.9341],[1294.7861,27.7553,1245.0397],[1301.6931,27.8415,1242.1454],[1308.6,27.9277,1239.251],[1315.507,28.0139,1236.3567],[1322.414,28.1001,1233.4623],[1329.3209,28.1863,1230.568],[1336.2279,28.2725,1227.6736],[1343.1348,28.3588,1224.7793],[1350.0418,28.445,1221.8849],[1356.9487,28.5312,1218.9905],[1363.8557,28.6174,1216.0962],[1370.7626,28.7036,1213.2018],[1377.6696,28.7898,1210.3075],[1384.5766,28.876,1207.4131],[1391.4835,28.9622,1204.5188],[1398.3905,29.0484,1201.6244]],"expectedDistance":1984.68,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"d61477b7b6cd0f9c91af231d8ceef06650412823aaa3ed318de54942a5a4b0c7","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"zulfarrak","mapId":209,"legs":[{"id":"leg-01-creature-81570","objectiveId":"creature-81570","objectiveName":"Hydromancer Velratha","checkpoints":[[842.5882,9.1004,1213.7976],[844.0309,9.2523,1215.5441],[842.2085,9.1763,1217.2146],[843.0438,9.4041,1220.8595],[846.3849,9.8977,1223.7829],[849.726,10.3913,1226.7064],[849.4223,10.2394,1227.4658],[850.3335,10.3153,1230.0475],[849.9538,10.0875,1231.2625],[850.3335,10.0116,1233.3127],[848.7389,9.6319,1234.072],[847.9795,9.4801,1235.5148],[849.1945,9.6319,1236.5778],[849.1945,9.6319,1238.0206],[847.9795,9.4801,1238.8559],[847.5239,9.4041,1240.5264],[848.7389,9.4801,1242.9563],[848.3592,9.3282,1248.1958],[845.2459,9.1763,1253.5112],[846.8405,9.3282,1258.6747],[845.0181,9.3282,1261.8639],[841.8289,9.1763,1263.7623],[841.3732,9.1763,1265.6037],[838.1081,9.1004,1267.5969],[836.9691,9.1004,1270.1217],[833.552,9.1004,1271.1089],[834.691,9.1004,1271.3367],[833.4761,9.1004,1272.3238],[830.6665,9.1004,1273.1591],[831.6537,9.1004,1275.8168],[833.2483,9.1763,1277.5633],[833.2483,9.2523,1279.7654],[832.413,9.1763,1280.6007],[832.7927,9.2523,1281.5878],[831.5777,9.1763,1283.7899],[831.9574,9.2523,1285.3086],[830.5147,9.1763,1286.6754],[830.5906,9.2523,1288.3459],[829.6794,9.1763,1288.4219],[830.3628,9.1763,1290.548],[828.7682,9.1004,1293.3576],[830.2109,9.1763,1296.0153],[829.2238,9.1763,1298.3692],[827.0217,9.1763,1300.1157],[827.4014,9.2523,1301.9381],[828.996,9.2523,1303.3809],[829.4516,9.4041,1305.4311],[830.5147,9.3282,1306.4183],[830.2869,9.4041,1307.861],[831.3499,9.2523,1307.9369],[831.1221,9.2523,1308.9241],[829.7553,9.4801,1309.9872],[829.9831,9.4801,1311.354],[829.2238,9.7838,1312.1892],[829.3757,9.7838,1313.0245],[828.1607,10.3153,1314.1635],[828.4644,10.1635,1314.9229],[827.5532,10.771,1316.8972],[827.5532,10.5432,1318.1121],[826.4142,10.8469,1320.0864],[827.1736,10.3153,1320.542],[823.5287,11.3025,1323.0478],[822.3138,10.6191,1326.313],[821.0988,11.1506,1327.3761],[821.1748,10.695,1328.8188],[820.1876,10.6191,1330.869],[820.7951,10.0875,1331.4765],[820.5673,9.8597,1332.3118],[819.5802,10.1635,1333.2989],[819.9598,9.556,1335.0454],[819.2005,9.9357,1335.8807],[819.2764,9.7838,1336.7919],[817.9096,10.3913,1337.3994],[818.1374,9.9357,1338.4625],[817.2262,10.0875,1339.1459],[817.6818,9.4801,1340.133],[816.9225,9.6319,1340.8164],[817.454,9.2523,1342.411],[818.8208,9.1004,1343.7019],[818.8208,9.1004,1346.1318],[819.4283,9.1004,1347.6505],[818.1374,9.1763,1348.7895],[817.9855,9.1763,1349.6248],[816.9225,9.2523,1350.0044],[816.2391,9.4041,1351.9028],[816.5428,9.2523,1352.9659],[816.0872,9.2523,1354.4846],[817.6818,9.1004,1354.8642],[818.8208,9.1004,1356.0792],[817.2262,9.0245,1356.9144],[818.8208,9.0245,1358.7369],[816.9984,8.9485,1359.4962],[818.593,9.0245,1361.0908],[816.1631,9.0245,1361.6983],[815.6316,9.1004,1364.1282],[812.6701,9.2523,1364.8116],[812.2905,9.4041,1366.7859],[811.4552,9.9357,1367.773],[811.5311,10.0116,1369.7473],[812.1386,9.7838,1370.7345],[811.1515,10.5432,1372.7847],[811.6071,10.2394,1374.2274],[811.1515,10.3913,1377.037],[811.6071,9.7838,1380.1503],[811.1515,10.0875,1382.1246],[811.6071,9.7079,1385.3138],[811.1515,10.1635,1386.4528],[811.6071,9.8597,1388.1234],[811.1515,10.1635,1389.1864],[811.4552,10.0116,1390.5533],[812.2905,9.556,1390.9329],[811.5311,9.7838,1392.9072],[811.5311,9.7079,1394.7296],[810.9237,9.9357,1394.7296],[811.3793,9.3282,1398.6023],[811.1515,9.2523,1401.6396],[812.1386,9.0245,1407.6384],[812.0627,9.0245,1414.8016],[811.9867,9.0245,1421.9647],[811.9108,9.0245,1429.1278],[811.4172,9.1763,1433.532],[810.9237,9.3282,1437.9361],[812.2145,9.3282,1442.0366],[811.9108,9.3282,1443.1756],[816.0113,9.2143,1447.1242],[820.1117,9.1004,1451.0728],[820.7951,9.1004,1452.8952],[822.8453,9.1004,1454.8695],[823.6047,9.1004,1457.2993],[827.0976,9.3282,1460.1089],[826.7939,9.1763,1462.4629],[825.5789,9.1004,1464.5131],[829.4516,9.1763,1469.2969],[826.5281,9.1384,1472.638],[823.6047,9.1004,1475.9791],[826.4142,9.0245,1479.624],[821.9341,9.1004,1483.4966],[825.1993,9.1004,1482.5854],[827.3254,9.0245,1483.041],[828.1607,9.0245,1484.256],[831.274,8.9485,1481.7501],[834.0076,9.0245,1484.9394],[835.6023,9.1004,1489.6473],[842.4363,9.2523,1490.7863],[843.5753,9.3282,1492.6087],[845.9293,9.4801,1492.6087],[846.309,9.556,1494.7349],[845.5496,9.4801,1495.9498],[845.4737,9.556,1497.8482],[843.8791,9.3282,1498.076],[843.4994,9.3282,1500.0503],[841.5251,9.1763,1502.1005],[842.2085,9.2523,1504.6822],[840.9936,9.1763,1505.8213],[842.5882,9.2523,1506.2769],[840.9936,9.1763,1507.5677],[838.5637,9.0245,1508.4789],[837.6525,8.9485,1509.542],[838.4118,9.0245,1509.9217],[837.3487,8.9485,1510.757],[837.8043,9.0245,1512.5794],[836.3616,9.0245,1514.9333],[836.7413,9.1763,1516.9836],[835.9819,9.2523,1518.5782],[834.8429,9.1763,1518.9579],[835.2226,9.1763,1520.5525],[834.8429,9.1004,1521.7674],[835.6023,9.1763,1523.362],[834.767,9.1763,1524.501],[835.5263,9.2523,1525.716],[835.5263,9.1763,1527.6903],[836.7413,9.2523,1528.9052],[836.6653,8.9485,1532.3982],[837.2728,8.9485,1533.9928],[834.1595,8.9485,1534.4484],[831.5018,8.9485,1535.5874],[834.0076,8.8726,1535.5115],[830.9703,9.0245,1541.4344],[834.1595,9.0245,1543.3327],[837.5006,9.1004,1543.8642],[832.8686,9.1004,1545.2311],[832.5649,9.2523,1547.0535],[833.0964,9.1763,1547.8888],[832.489,9.3282,1548.8],[833.2483,9.2523,1550.4705],[833.4002,9.1763,1554.1913],[834.4632,8.9485,1555.3303],[835.1466,8.8726,1557.7602],[836.8172,8.7967,1558.5195],[838.0321,8.8726,1560.1141],[837.5765,9.0245,1562.544],[838.7915,9.1004,1564.1387],[840.1583,9.7838,1570.0615],[843.4235,9.9357,1573.2508],[846.1571,10.4672,1578.4143],[851.1687,10.3153,1583.7297],[852.3837,10.3153,1585.9317],[853.219,10.0116,1586.3114],[854.0542,9.8597,1587.6782],[854.0542,9.9357,1588.4376],[856.9777,9.594,1591.2092],[859.9012,9.2523,1593.9808],[859.7493,9.2523,1595.6513],[863.546,9.1004,1598.9165],[865.5962,9.2523,1605.6746],[866.7352,9.1763,1606.5099],[867.1149,9.1763,1610.99],[868.3299,9.1763,1612.9643],[868.7855,9.2523,1615.6979],[870.0004,9.1763,1618.5075],[868.7855,9.3282,1620.1021],[868.4058,9.556,1622.9117],[871.9747,9.1763,1625.3416],[874.4046,9.3282,1630.5051],[875.5436,9.2523,1631.72],[876.7585,9.1763,1631.3404],[877.5179,9.1763,1633.1628],[879.7959,9.0245,1634.3018],[879.7959,9.0245,1636.5039],[882.4536,8.8726,1638.9338],[885.8706,8.9485,1638.0985],[885.9466,8.9485,1640.3765],[889.9711,9.0245,1640.0728],[891.3379,9.0245,1641.6674],[897.1848,9.4041,1640.5284],[900.2222,9.556,1641.3637],[897.8682,9.2523,1642.7305],[900.2981,9.3282,1644.0973],[904.0189,9.3282,1645.0844],[905.3857,9.4801,1644.7048],[906.3729,9.4041,1645.8438],[906.5247,9.2523,1646.9068],[909.2583,9.6319,1646.9068],[911.7642,9.7079,1648.0459],[912.2957,9.4801,1649.033],[913.5866,9.556,1648.8811],[913.9663,9.1763,1650.0961],[914.7256,9.3282,1649.7164],[915.5609,9.2523,1650.0961],[916.2443,9.6319,1649.3367],[917.4592,9.556,1649.7164],[918.2186,9.7838,1649.3367],[918.1426,10.3913,1648.1218],[919.5095,10.3153,1648.5015],[920.5725,11.3025,1646.9068],[922.9265,11.0747,1646.9068],[924.0655,11.3025,1645.8438],[923.7618,11.834,1644.9326],[925.0526,11.6822,1644.401],[925.2045,11.9859,1643.4898],[926.8751,11.7581,1642.123],[926.8751,12.2137,1640.8321],[928.09,12.2137,1639.1616],[930.444,11.3025,1638.1744],[931.2792,11.1506,1636.7317],[932.722,10.4672,1635.5167],[932.3423,10.771,1634.2258],[934.8481,10.0875,1631.6441],[934.9241,10.2394,1630.4291],[935.4556,10.0875,1629.8976],[935.9112,10.3913,1628.7586],[935.8353,11.3784,1627.2399],[939.3283,9.1763,1627.8474],[940.3154,9.1004,1628.4549],[941.4544,9.1004,1627.5436],[941.4544,9.0245,1628.2271],[944.3399,9.0245,1627.2399],[945.5549,9.1004,1625.5694],[946.6939,9.1763,1625.1138],[949.959,9.1763,1624.7341],[950.1868,10.0875,1622.8357],[950.9462,10.1635,1622.0005],[951.9333,9.4801,1622.3801],[952.3889,10.0116,1620.9374],[954.1354,9.3282,1620.7096],[954.591,10.3153,1618.5834],[955.2744,9.8597,1618.9631],[954.9707,10.5432,1617.7481],[955.6541,9.8597,1618.2797],[955.73,10.3153,1616.6091],[956.7172,9.7079,1616.4573],[958.0081,9.1763,1615.3183],[958.3877,9.1004,1613.7236],[960.6657,9.0245,1613.7996],[962.5641,9.1004,1612.5846],[965.6015,9.1004,1613.0402],[966.3608,9.1763,1611.7493],[969.0185,9.1763,1610.7622],[970.4612,9.2523,1605.2949],[970.3853,9.3282,1603.7763],[972.5115,9.1763,1605.1431],[973.2708,9.1763,1604.0041],[971.1447,9.2523,1602.2576],[974.4098,9.1763,1602.941],[974.9414,9.1004,1601.9538],[977.7509,9.1004,1602.4095],[976.3082,9.1004,1601.2704],[977.8269,9.1763,1599.5999],[980.7124,9.2523,1598.0053],[980.7883,9.3282,1595.1198],[983.2941,9.3282,1594.9679],[982.5348,9.3282,1594.2845],[984.2813,9.3282,1594.9679],[984.3572,9.3282,1593.6011],[986.863,9.3282,1592.3861],[986.7871,9.3282,1590.4878],[987.5464,9.3282,1589.3488],[990.5079,9.3282,1587.2986],[996.051,9.4041,1586.0836],[1000.1515,9.7838,1588.2857],[1003.4167,10.0116,1590.7915],[1003.4167,9.8597,1589.5766],[1005.315,9.7079,1590.1841],[1006.3022,9.9357,1591.7027],[1007.4412,10.1635,1592.1583],[1009.5673,9.556,1591.7027],[1010.4026,9.8597,1592.4621],[1011.1619,9.6319,1592.0065],[1011.9972,9.556,1592.4621],[1013.8196,9.1004,1591.5509],[1015.2624,9.2523,1592.8418],[1016.857,9.1763,1592.6899],[1021.1852,9.0245,1590.6397],[1025.5135,8.9485,1587.6023],[1025.9691,8.9865,1581.9832],[1026.4247,9.0245,1576.364],[1029.6519,9.0245,1570.4412],[1032.8791,9.0245,1564.5183],[1036.9795,8.9865,1566.2268],[1041.08,8.9485,1567.9354],[1043.7756,8.9865,1563.6831],[1046.4713,9.0245,1559.4307],[1051.1033,9.0245,1558.8233],[1054.3685,8.9485,1560.5698],[1057.3299,9.1004,1559.8104],[1062.6453,9.0245,1563.9109],[1067.7329,9.4801,1564.5183],[1068.5681,9.3282,1565.8092],[1069.7831,9.3282,1565.6573],[1073.2001,9.1004,1571.0487],[1076.1615,9.2523,1573.9342],[1078.8952,9.1004,1576.364],[1081.0973,9.1763,1576.5159],[1082.2363,9.2523,1577.0475],[1082.3122,9.1763,1577.8827],[1083.6031,9.3282,1577.1993],[1085.0458,9.2523,1579.1736],[1086.6405,9.3282,1579.0217],[1087.2479,9.1763,1581.2238],[1087.7795,9.1763,1580.6164],[1088.5388,9.1004,1581.7554],[1089.9816,9.2523,1580.9201],[1091.9558,9.2523,1581.6794],[1093.9301,9.7079,1580.9201],[1095.1451,9.556,1581.6794],[1096.6638,9.9357,1581.6035],[1098.3343,9.4801,1584.5649],[1100.2327,9.6319,1585.7039],[1101.1439,9.1763,1588.5894],[1102.131,9.1004,1589.6525],[1106.2315,9.4041,1590.7156],[1106.6871,9.3282,1592.7658],[1110.5597,9.7079,1595.1198],[1110.18,9.4041,1596.1829],[1114.8879,10.3153,1596.031],[1117.3938,10.771,1596.6385],[1117.09,10.3913,1597.3978],[1117.6975,10.0116,1598.9165],[1118.3809,10.2394,1598.9165],[1122.7851,9.7079,1604.08],[1123.6204,9.2523,1606.5099],[1128.7839,9.556,1609.7751],[1129.5432,9.2523,1612.129],[1131.5175,9.4041,1612.8884],[1133.1881,9.3282,1614.8626],[1134.1752,9.1763,1617.2166],[1135.6939,9.3282,1617.3685],[1136.4532,9.2523,1618.9631],[1138.9591,9.2523,1619.2668],[1141.2371,9.1004,1621.317],[1138.5794,9.1004,1624.6581],[1138.5794,9.1004,1628.6827],[1142.3761,9.0245,1628.1511],[1140.4777,8.9485,1632.859],[1141.0093,8.8726,1634.2258],[1143.8948,8.8726,1631.796],[1141.389,8.8726,1634.8333],[1144.4263,8.8726,1632.3275],[1146.0969,8.9485,1631.796],[1142.528,8.9485,1635.9723],[1146.4006,9.0245,1633.4665],[1149.5139,9.0245,1636.8456],[1152.6272,9.0245,1640.2246],[1156.4239,9.0624,1638.706],[1160.2206,9.1004,1637.1873],[1164.7007,9.1004,1641.2118],[1167.814,9.1004,1645.8438],[1168.4215,9.1004,1647.2865],[1167.814,9.1004,1648.2737],[1165.536,9.1763,1649.4127],[1164.7007,9.2523,1651.5388],[1162.5746,9.3282,1652.6019],[1161.0559,9.8597,1655.4874],[1158.5501,10.1635,1656.7783],[1157.8667,10.2394,1657.9932],[1158.626,10.2394,1658.5248],[1158.3223,10.0116,1659.7397],[1160.2965,9.6319,1661.2584],[1158.7019,9.1763,1664.7514],[1160.6762,9.1763,1664.4476],[1160.6762,9.1763,1665.7385],[1163.182,9.2523,1665.131],[1163.3339,9.2523,1666.6497],[1164.7767,9.3282,1666.8016],[1165.2323,9.4041,1666.1182],[1166.7509,9.4801,1667.6369],[1166.675,9.4041,1669.6111],[1168.1178,9.3282,1671.2058],[1169.6364,9.3282,1669.9908],[1170.3958,9.2523,1670.4464],[1170.3958,9.1763,1672.041],[1171.9904,9.1763,1671.6614],[1175.5593,9.1004,1675.6859],[1179.2041,9.2523,1677.2805],[1179.9635,9.1004,1678.8751],[1183.5324,9.2523,1682.5199],[1185.5067,9.4041,1683.7349],[1186.8735,9.6319,1683.7349],[1188.4681,9.556,1686.0889],[1187.7088,9.3282,1687.9113],[1189.1515,9.1763,1689.2781],[1188.7718,9.2523,1690.493],[1190.2905,9.2523,1692.6192],[1192.7964,9.2523,1693.6063],[1194.9984,9.4801,1696.4918],[1196.5931,9.7079,1696.5678],[1197.808,10.0116,1698.4661],[1197.0487,9.8597,1698.9217],[1197.3524,9.9357,1699.9089],[1198.4155,10.0875,1700.1367],[1198.7192,10.2394,1699.3773],[1203.1234,10.1635,1700.1367],[1205.2495,9.7838,1698.9977],[1206.0848,9.6319,1699.3014],[1207.4516,9.3282,1698.4661],[1209.2741,9.1763,1695.5047],[1210.489,9.1004,1695.8844]],"expectedDistance":1136.72,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-encounter-594","objectiveId":"encounter-594","objectiveName":"Ghaz'rilla","checkpoints":[[1210.489,9.1004,1695.8844],[1209.2741,9.1763,1695.5047],[1207.4516,9.3282,1698.4661],[1206.0848,9.6319,1699.3014],[1205.2495,9.7838,1698.9977],[1203.1234,10.1635,1700.1367],[1198.7192,10.2394,1699.3773],[1198.4155,10.0875,1700.1367],[1197.3524,9.9357,1699.9089],[1197.0487,9.8597,1698.9217],[1197.808,10.0116,1698.4661],[1196.5931,9.7079,1696.5678],[1194.9984,9.4801,1696.4918],[1192.7964,9.2523,1693.6063],[1190.2905,9.2523,1692.6192],[1188.7718,9.2523,1690.493],[1189.1515,9.1763,1689.2781],[1188.4681,9.2523,1688.6706],[1189.0756,9.3282,1687.9872],[1186.8735,9.6319,1683.7349],[1185.5067,9.4041,1683.7349],[1183.5324,9.2523,1682.5199],[1179.9635,9.1004,1678.8751],[1179.2041,9.2523,1677.2805],[1175.5593,9.1004,1675.6859],[1171.9904,9.1763,1671.6614],[1170.3958,9.1763,1672.041],[1170.3958,9.2523,1670.4464],[1169.6364,9.3282,1669.9908],[1168.1178,9.3282,1671.2058],[1166.675,9.4041,1669.6111],[1166.7509,9.4801,1667.6369],[1165.2323,9.4041,1666.1182],[1164.7767,9.3282,1666.8016],[1163.3339,9.2523,1666.6497],[1163.182,9.2523,1665.131],[1160.6762,9.1763,1665.7385],[1160.6762,9.1763,1664.4476],[1158.7019,9.1763,1664.7514],[1160.2965,9.6319,1661.2584],[1158.3223,10.0116,1659.7397],[1158.626,10.2394,1658.5248],[1157.8667,10.2394,1657.9932],[1158.5501,10.1635,1656.7783],[1161.0559,9.8597,1655.4874],[1162.5746,9.3282,1652.6019],[1164.7007,9.2523,1651.5388],[1165.536,9.1763,1649.4127],[1167.814,9.1004,1648.2737],[1168.4215,9.1004,1647.2865],[1167.814,9.1004,1645.8438],[1164.7007,9.1004,1641.2118],[1160.2206,9.1004,1637.1873],[1156.4239,9.0624,1638.706],[1152.6272,9.0245,1640.2246],[1149.5139,9.0245,1636.8456],[1146.4006,9.0245,1633.4665],[1142.528,8.9485,1635.9723],[1146.0969,8.9485,1631.796],[1144.4263,8.8726,1632.3275],[1141.389,8.8726,1634.8333],[1143.8948,8.8726,1631.796],[1141.0093,8.8726,1634.2258],[1140.4777,8.9485,1632.859],[1142.3761,9.0245,1628.1511],[1138.5794,9.1004,1628.6827],[1138.5794,9.1004,1624.6581],[1141.2371,9.1004,1621.317],[1138.9591,9.2523,1619.2668],[1136.4532,9.2523,1618.9631],[1135.6939,9.3282,1617.3685],[1134.1752,9.1763,1617.2166],[1133.1881,9.3282,1614.8626],[1131.5175,9.4041,1612.8884],[1129.5432,9.2523,1612.129],[1128.7839,9.556,1609.7751],[1123.6204,9.2523,1606.5099],[1122.7851,9.7079,1604.08],[1118.3809,10.2394,1598.9165],[1117.6975,10.0116,1598.9165],[1117.09,10.3913,1597.3978],[1117.3938,10.771,1596.6385],[1114.8879,10.3153,1596.031],[1110.18,9.4041,1596.1829],[1110.5597,9.7079,1595.1198],[1106.6871,9.3282,1592.7658],[1106.2315,9.4041,1590.7156],[1102.131,9.1004,1589.6525],[1101.1439,9.1763,1588.5894],[1100.2327,9.6319,1585.7039],[1098.3343,9.4801,1584.5649],[1096.6638,9.9357,1581.6035],[1095.1451,9.556,1581.6794],[1093.9301,9.7079,1580.9201],[1090.5131,9.1004,1582.5147],[1088.5388,9.1004,1581.7554],[1087.7795,9.1763,1580.6164],[1087.2479,9.1763,1581.2238],[1086.6405,9.3282,1579.0217],[1085.0458,9.2523,1579.1736],[1083.6031,9.3282,1577.1993],[1082.3122,9.1763,1577.8827],[1082.2363,9.2523,1577.0475],[1081.0973,9.1763,1576.5159],[1078.8952,9.1004,1576.364],[1076.1615,9.2523,1573.9342],[1073.2001,9.1004,1571.0487],[1069.7831,9.3282,1565.6573],[1068.5681,9.3282,1565.8092],[1067.7329,9.4801,1564.5183],[1062.6453,9.0245,1563.9109],[1057.3299,9.1004,1559.8104],[1054.3685,8.9485,1560.5698],[1051.1033,9.0245,1558.8233],[1046.4713,9.0245,1559.4307],[1043.7756,8.9865,1563.6831],[1041.08,8.9485,1567.9354],[1036.9795,8.9865,1566.2268],[1032.8791,9.0245,1564.5183],[1029.6519,9.0245,1570.4412],[1026.4247,9.0245,1576.364],[1025.9691,8.9865,1581.9832],[1025.5135,8.9485,1587.6023],[1021.1852,9.0245,1590.6397],[1016.857,9.1763,1592.6899],[1015.2624,9.2523,1592.8418],[1013.8196,9.1004,1591.5509],[1011.9972,9.556,1592.4621],[1011.1619,9.6319,1592.0065],[1010.4026,9.8597,1592.4621],[1009.5673,9.556,1591.7027],[1007.4412,10.1635,1592.1583],[1006.3022,9.9357,1591.7027],[1005.315,9.7079,1590.1841],[1003.4167,9.8597,1589.5766],[1003.4167,10.0116,1590.7915],[1000.1515,9.7838,1588.2857],[996.051,9.4041,1586.0836],[990.5079,9.3282,1587.2986],[987.5464,9.3282,1589.3488],[986.7871,9.3282,1590.4878],[986.863,9.3282,1592.3861],[984.3572,9.3282,1593.6011],[984.2813,9.3282,1594.9679],[982.5348,9.3282,1594.2845],[983.2941,9.3282,1594.9679],[980.7883,9.3282,1595.1198],[980.7124,9.2523,1598.0053],[977.8269,9.1763,1599.5999],[976.3082,9.1004,1601.2704],[977.7509,9.1004,1602.4095],[974.9414,9.1004,1601.9538],[974.4098,9.1763,1602.941],[971.1447,9.2523,1602.2576],[973.2708,9.1763,1604.0041],[972.5115,9.1763,1605.1431],[970.3853,9.3282,1603.7763],[970.4612,9.2523,1605.2949],[969.0185,9.1763,1610.7622],[966.3608,9.1763,1611.7493],[965.6015,9.1004,1613.0402],[966.3608,9.1004,1617.4444],[965.2218,9.1004,1622.2283],[965.9811,9.2523,1627.7714],[963.779,9.4041,1630.2773],[962.4882,9.2523,1630.2013],[961.501,9.4041,1631.72],[960.8936,9.2523,1631.4163],[961.1973,9.4041,1632.1756],[960.6657,9.2523,1631.8719],[960.4379,9.7079,1633.6943],[958.9193,9.556,1634.074],[958.5396,9.9357,1635.4408],[957.4006,9.9357,1636.2761],[957.6284,10.5432,1637.8707],[956.6412,10.5432,1638.706],[955.2744,10.0875,1638.63],[954.4392,10.1635,1639.845],[953.452,9.8597,1640.0728],[952.313,10.0875,1641.7433],[952.3889,10.2394,1642.5027],[949.6553,9.6319,1643.262],[949.2756,9.7079,1644.0973],[949.7312,9.9357,1645.1604],[946.2383,9.4041,1646.755],[946.8457,9.4801,1647.4384],[945.403,9.2523,1648.0459],[940.1635,9.1004,1647.3625],[935.9872,9.1004,1647.6662],[931.1274,9.2523,1647.1346],[929.229,9.4801,1647.3625],[929.0012,9.3282,1648.5774],[927.1029,9.4041,1649.1089],[924.2933,9.1763,1651.4629],[917.5352,9.1004,1651.8426],[914.8015,9.1004,1650.8554],[912.6754,9.1004,1651.1592],[911.0808,9.1004,1654.7281],[910.5492,9.1004,1658.8285],[909.1065,9.1004,1662.4733],[909.638,9.1763,1664.068],[909.2583,9.2523,1665.6626],[907.7397,9.4041,1666.4219],[907.7397,9.4801,1667.8647],[907.0563,9.556,1668.3203],[907.5119,9.4041,1669.6871],[906.9803,9.3282,1670.4464],[907.1322,9.1763,1671.7373],[905.8413,9.3282,1671.6614],[905.1579,9.3282,1672.4966],[905.4616,9.1763,1673.4838]],"expectedDistance":558.78,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-81519","objectiveId":"creature-81519","objectiveName":"Antu'sul","checkpoints":[[905.4616,9.1763,1673.4838],[903.6392,9.1763,1673.7116],[903.2596,9.4041,1672.041],[902.1205,9.4041,1672.4966],[902.0446,9.556,1671.6614],[901.2853,9.556,1671.8132],[900.8297,9.556,1671.1298],[900.1463,9.4041,1671.9651],[894.9068,9.3282,1669.4213],[889.6673,9.2523,1666.8775],[889.5155,9.2523,1669.0037],[887.9968,9.4041,1671.3576],[885.5669,9.7838,1672.8763],[883.9723,9.556,1674.9265],[882.3777,9.7079,1675.3062],[879.9478,9.556,1676.9008],[878.8088,9.8597,1676.5212],[877.2142,9.556,1677.7361],[875.9992,10.0116,1676.9768],[874.2527,9.7838,1677.2046],[872.2784,9.1004,1679.027],[870.456,9.0245,1679.1029],[867.2668,8.8726,1685.5573],[867.7983,8.8726,1682.2162],[866.1278,8.8726,1684.4183],[864.685,8.9485,1680.8494],[862.7867,8.9485,1682.7478],[860.6605,8.9485,1682.0643],[859.3696,9.0245,1680.0901],[857.0916,8.9485,1681.9884],[855.3451,9.0245,1680.0141],[853.143,8.9485,1681.7606],[850.2575,9.0245,1681.0772],[848.7389,9.1004,1683.583],[846.9924,9.2523,1683.2034],[845.3218,9.1763,1681.6087],[843.8031,9.4801,1682.2162],[841.9048,9.7079,1681.6087],[841.4492,9.4801,1680.3938],[840.2342,9.6319,1680.0141],[839.2471,9.2523,1677.3564],[838.3359,9.3282,1676.9008],[837.7284,9.6319,1678.1158],[836.3616,9.8597,1678.1917],[835.1466,9.7079,1677.3564],[833.9317,10.2394,1679.027],[832.7168,10.1635,1678.1917],[831.5777,10.3153,1678.4195],[830.6665,10.8469,1680.0141],[831.5777,11.1506,1680.8494],[830.135,11.834,1681.9125],[828.0088,11.5303,1681.4569],[826.0346,11.4544,1681.7606],[825.6549,11.0747,1681.1531],[823.9084,10.9988,1681.3809],[823.3009,10.4672,1680.8494],[819.3524,10.1635,1681.5328],[817.6059,9.7079,1681.5328],[817.3781,9.556,1681.0013],[815.7075,9.4041,1681.305],[816.8465,8.9485,1678.4195],[813.8092,9.1004,1677.7361],[812.5942,9.0245,1679.8623],[811.5311,9.0245,1673.7116],[808.0382,9.0245,1671.2817],[805.5323,9.0245,1676.3693],[807.4307,8.9485,1681.0772],[805.1527,9.0245,1681.3809],[804.3933,9.0245,1683.2793],[805.912,8.9485,1683.7349],[803.4062,9.0245,1684.6461],[804.4693,9.0245,1686.7723],[802.2672,9.1004,1688.5187],[802.6468,9.1004,1690.3412],[803.7859,9.1004,1691.3283],[803.1024,9.1763,1692.3155],[804.1655,9.1763,1693.6823],[803.7859,9.1763,1694.8213],[802.1912,9.3282,1695.8844],[800.9763,9.4801,1695.5047],[799.7613,9.7079,1696.34],[799.3057,9.7838,1697.403],[798.6223,9.9357,1697.0993],[798.0908,10.0875,1698.3142],[798.5464,10.0875,1699.3014],[797.1796,10.1635,1699.2255],[796.5721,10.2394,1700.2126],[796.7999,10.2394,1701.9591],[793.6107,10.695,1702.4906],[793.7626,10.9228,1705.1483],[792.092,11.0747,1703.7815],[792.3957,11.3784,1705.9077],[793.9144,11.3025,1707.4263],[793.3069,11.6062,1708.0338],[795.4331,11.5303,1709.7044],[795.509,11.834,1710.6156],[796.7999,11.834,1711.6027],[797.1796,12.4415,1713.8807],[798.5464,11.834,1713.2733],[799.3057,11.7581,1713.8807],[800.9004,11.3025,1713.9567],[800.8244,11.6822,1715.1716],[802.0394,11.6822,1716.5384],[801.6597,12.0618,1718.2849],[802.419,12.2137,1720.3351],[805.6842,11.91,1723.1447],[805.912,12.5174,1726.258],[808.6456,12.2896,1728.4601],[809.0253,12.8212,1730.4344],[810.4681,13.1249,1732.8263],[810.0884,13.5805,1733.8324],[810.3162,13.5805,1735.1992],[811.1515,13.2768,1735.9586],[811.1515,13.7324,1736.7179],[811.6071,13.6564,1737.2495],[811.1515,14.188,1737.8569],[811.6071,14.1121,1738.7681],[811.1515,15.4789,1741.5018],[809.4809,17.681,1744.8429],[810.0884,17.681,1745.906],[809.8606,17.9088,1747.1968],[810.4681,17.681,1748.2599],[809.8606,18.2125,1749.4749],[810.3921,17.7569,1750.3861],[809.8606,18.2884,1752.5122],[810.2403,18.5922,1755.018],[809.405,19.1996,1756.4608],[809.8606,19.1237,1757.4479],[809.6328,19.3515,1759.3463],[809.0253,19.6552,1760.0297],[807.8863,20.2627,1760.1816],[807.2788,21.098,1763.4467],[805.8361,23.1482,1767.9268],[805.7601,23.5279,1769.7493],[804.3174,25.2744,1773.0144],[804.2415,25.5022,1774.5331],[803.2543,25.9578,1776.0518],[802.419,26.1856,1776.2796],[801.6597,26.1096,1778.102],[800.3688,25.3503,1780.2282],[798.7742,24.6669,1780.8357],[799.2298,23.8316,1782.6581],[798.6223,23.8316,1782.2025],[797.7871,21.7055,1784.4046],[796.4202,20.4146,1785.012],[795.4331,18.5162,1786.6826],[793.5348,17.681,1788.0494],[792.0161,17.7569,1787.9735],[792.2439,17.0735,1789.1125],[791.0289,17.0735,1789.1125],[789.5862,17.5291,1788.2013],[788.4472,17.1494,1788.8847],[787.6878,17.3772,1788.505],[787.46,16.9216,1789.2643],[786.3969,16.7697,1789.0365],[786.2451,16.0104,1790.2515],[781.8409,15.0233,1791.0108],[779.1073,14.8714,1790.783],[779.411,14.7955,1791.5424],[778.272,14.6436,1792.0739],[780.4741,14.4917,1793.6685],[778.1201,14.3399,1793.3648],[779.7147,14.3399,1794.4279],[777.6645,14.2639,1795.1113],[773.3363,14.2639,1795.2631],[772.8807,14.2639,1794.0482],[768.7043,14.3399,1795.6808],[764.5279,14.4158,1797.3134],[761.6424,15.0992,1799.2876],[759.5163,15.327,1799.0598],[758.8329,16.0863,1801.0341],[757.3901,16.2382,1801.4138],[757.2382,16.7697,1802.1731],[756.0992,16.9216,1802.8565],[752.7581,16.5419,1803.3881],[752.3025,16.6938,1804.2234],[750.632,16.3141,1804.7549],[750.632,16.7697,1806.2736],[747.6705,16.3141,1807.5645],[743.5321,15.6687,1806.957],[739.3937,15.0233,1806.3495],[734.9136,14.7955,1805.6661],[730.4335,14.5677,1804.9827],[729.5223,14.5677,1806.3495],[727.1683,14.6436,1806.3495],[725.9534,14.5677,1807.7163],[723.2198,14.4917,1807.7163],[722.3845,14.4158,1810.0703],[719.1952,14.4158,1810.6018],[719.9546,14.3399,1813.1077],[719.1952,14.4158,1813.4873],[716.3857,14.4158,1813.0317],[714.1077,14.4917,1811.9686],[713.8039,14.6436,1813.1077],[713.3483,14.7955,1813.1077],[712.513,14.9473,1816.3728],[711.1462,14.9473,1815.006],[709.6275,15.0992,1816.145],[707.7292,15.2511,1815.5375],[706.2864,15.1751,1814.0948],[704.6918,15.2511,1814.7023],[704.0844,15.2511,1813.9429],[702.4897,15.327,1814.7782],[701.4267,15.327,1813.7911],[699.908,15.2511,1813.5633],[699.3005,15.1751,1811.2093],[697.8578,14.7955,1810.9056],[696.8706,14.6436,1809.8425],[695.8075,14.188,1811.2093],[695.1241,14.3399,1810.45],[693.3776,14.2639,1811.513],[691.9349,14.4917,1810.2981],[689.8847,14.5677,1810.2981],[688.5938,14.6436,1810.9815],[686.9992,14.7955,1810.7537],[687.0751,14.8714,1809.9944],[686.012,14.7195,1811.6649],[685.5564,14.7195,1811.1334],[684.2656,14.4917,1811.589],[683.6581,14.2639,1812.8798],[683.0506,14.2639,1811.3612],[682.3672,14.188,1811.3612],[681.3041,14.1121,1812.728],[679.6336,14.1121,1811.2093],[678.4946,14.1121,1811.2093],[678.8742,14.188,1814.2467],[676.6721,14.188,1814.6263],[674.6219,14.2639,1815.8413],[673.1792,14.3399,1815.6894],[672.3439,14.4158,1816.4488],[671.5846,14.6436,1815.7653],[670.4455,15.0233,1815.9172]],"expectedDistance":485.37,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-81524","objectiveId":"creature-81524","objectiveName":"Witch Doctor Zum'rah","checkpoints":[[670.4455,15.0233,1815.9172],[677.5601,14.9535,1817.8714],[684.6747,14.8838,1819.8255],[691.7892,14.8141,1821.7796],[698.9038,14.7443,1823.7338],[706.0184,14.6746,1825.6879],[713.1329,14.6049,1827.6421],[720.2475,14.5351,1829.5962],[727.362,14.4654,1831.5503],[734.4766,14.3956,1833.5045],[741.5912,14.3259,1835.4586],[748.7057,14.2562,1837.4128],[755.8203,14.1864,1839.3669],[762.9349,14.1167,1841.3211],[770.0494,14.047,1843.2752],[777.164,13.9772,1845.2293],[784.2785,13.9075,1847.1835],[791.3931,13.8378,1849.1376],[798.5077,13.768,1851.0918],[805.6222,13.6983,1853.0459],[812.7368,13.6286,1855],[819.8513,13.5588,1856.9542],[826.9659,13.4891,1858.9083],[834.0805,13.4193,1860.8625],[841.195,13.3496,1862.8166],[848.3096,13.2799,1864.7707],[855.4242,13.2101,1866.7249],[862.5387,13.1404,1868.679],[869.6533,13.0707,1870.6332],[876.7678,13.0009,1872.5873],[883.8824,12.9312,1874.5415],[890.997,12.8615,1876.4956],[898.1115,12.7917,1878.4497],[905.2261,12.722,1880.4039],[912.3407,12.6523,1882.358],[919.4552,12.5825,1884.3122],[926.5698,12.5128,1886.2663],[933.6843,12.4431,1888.2204],[940.7989,12.3733,1890.1746],[947.9135,12.3036,1892.1287],[955.028,12.2338,1894.0829],[962.1426,12.1641,1896.037],[969.2572,12.0944,1897.9911],[976.3717,12.0246,1899.9453],[983.4863,11.9549,1901.8994],[990.6008,11.8852,1903.8536],[997.7154,11.8154,1905.8077],[1004.83,11.7457,1907.7619],[1011.9445,11.676,1909.716],[1019.0591,11.6062,1911.6701]],"expectedDistance":361.54,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-05-creature-37996","objectiveId":"creature-37996","objectiveName":"Chief Ukorz Sandscalp & Ruuzlu","checkpoints":[[1019.0591,11.6062,1911.6701],[1018.9948,13.2739,1904.571],[1018.9306,14.9415,1897.4719],[1018.8663,16.6091,1890.3728],[1018.8021,18.2767,1883.2737],[1018.7378,19.9444,1876.1746],[1018.6736,21.612,1869.0755],[1018.6093,23.2796,1861.9764],[1018.5451,24.9473,1854.8773],[1018.4808,26.6149,1847.7781],[1018.4166,28.2825,1840.679],[1018.3523,29.9502,1833.5799],[1018.2881,31.6178,1826.4808],[1018.2238,33.2854,1819.3817],[1018.1596,34.953,1812.2826],[1018.0953,36.6207,1805.1835],[1018.0311,38.2883,1798.0844],[1017.9668,39.9559,1790.9853],[1017.9026,41.6236,1783.8862],[1017.8383,43.2912,1776.787],[1017.774,44.9588,1769.6879],[1017.7098,46.6265,1762.5888],[1017.6455,48.2941,1755.4897],[1017.5813,49.9617,1748.3906],[1017.517,51.6294,1741.2915],[1017.4528,53.297,1734.1924],[1017.3885,54.9646,1727.0933]],"expectedDistance":189.61,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"dd9bd7d718a60297c2693ba961e33006499acc5c4aa8fb47113b8f0e4705441e","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"blackrock-spire","mapId":229,"legs":[{"id":"leg-01-creature-45808","objectiveId":"creature-45808","objectiveName":"Burning Felguard","checkpoints":[[-77.4251,49.9008,-225.164],[-70.9178,50.3963,-228.5795],[-64.4104,50.8917,-231.995],[-57.9031,51.3871,-235.4105],[-51.3958,51.8826,-238.8261],[-44.8884,52.378,-242.2416],[-38.3811,52.8734,-245.6571],[-31.8738,53.3689,-249.0727],[-25.3664,53.8643,-252.4882],[-18.8591,54.3597,-255.9037],[-12.3517,54.8552,-259.3192],[-5.8444,55.3506,-262.7348],[0.6629,55.846,-266.1503],[7.1703,56.3415,-269.5658],[13.6776,56.8369,-272.9813],[20.1849,57.3323,-276.3969],[26.6923,57.8278,-279.8124],[33.1996,58.3232,-283.2279],[39.7069,58.8186,-286.6434],[46.2143,59.3141,-290.059],[52.7216,59.8095,-293.4745],[59.229,60.3049,-296.89],[65.7363,60.8004,-300.3055],[72.2436,61.2958,-303.7211],[78.751,61.7912,-307.1366],[85.2583,62.2867,-310.5521],[91.7656,62.7821,-313.9676],[98.273,63.2775,-317.3832],[104.7803,63.773,-320.7987],[111.2877,64.2684,-324.2142]],"expectedDistance":213.61,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-44422","objectiveId":"creature-44422","objectiveName":"Crystal Fang","checkpoints":[[111.2877,64.2684,-324.2142],[110.7862,61.7439,-330.8288],[110.2846,59.2193,-337.4434],[109.7831,56.6948,-344.058],[109.2816,54.1703,-350.6726],[108.7801,51.6458,-357.2871],[108.2786,49.1212,-363.9017],[107.7771,46.5967,-370.5163],[107.2756,44.0722,-377.1309],[106.7741,41.5477,-383.7455],[106.2726,39.0231,-390.36],[105.7711,36.4986,-396.9746],[105.2696,33.9741,-403.5892]],"expectedDistance":85.17,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-43519","objectiveId":"creature-43519","objectiveName":"Spirestone Battle Lord","checkpoints":[[105.2696,33.9741,-403.5892],[98.327,33.738,-405.2398],[91.3843,33.502,-406.8904],[84.4417,33.2659,-408.541],[77.4991,33.0299,-410.1916],[70.5565,32.7938,-411.8422],[63.6138,32.5577,-413.4928],[56.6712,32.3217,-415.1434],[49.7286,32.0856,-416.794],[42.786,31.8496,-418.4446],[35.8433,31.6135,-420.0952]],"expectedDistance":71.4,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-43523","objectiveId":"creature-43523","objectiveName":"Spirestone Butcher","checkpoints":[[35.8433,31.6135,-420.0952],[38.5719,31.6135,-422.7618],[35.7705,31.6864,-425.8218],[38.499,31.7592,-426.2881],[35.6248,31.8321,-426.8855],[38.4844,31.8321,-427.0167],[35.6831,31.8612,-428.3427],[38.9653,31.8612,-432.0147],[35.5665,31.8612,-435.6867],[37.9016,31.8612,-438.8342],[35.0856,31.8904,-439.5045],[36.0182,31.9195,-440.7722],[37.9016,31.9195,-441.3697],[35.9599,31.8904,-442.5645]],"expectedDistance":42.2,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-05-creature-43522","objectiveId":"creature-43522","objectiveName":"Shadow Hunter Vosh'gajin","checkpoints":[[35.9599,31.8904,-442.5645],[37.8287,31.8612,-443.162],[37.1584,31.8321,-445.0271],[39.5664,31.7009,-447.3586],[40.0327,31.5406,-450.2875],[37.1001,31.5115,-450.8849],[35.3625,31.3075,-453.1435],[38.295,31.2638,-453.8138],[35.3625,31.0889,-456.6115],[38.295,30.9578,-458.8118],[35.3625,30.7975,-461.4784],[38.295,30.7684,-462.0176],[35.3625,30.7101,-463.431],[38.295,30.6809,-464.3053],[35.3625,30.5061,-467.3653],[38.4262,30.4041,-469.0265],[38.499,30.2583,-471.2122],[35.4353,30.1563,-472.7422],[38.4407,30.0981,-473.7477],[38.4407,29.9378,-476.9534],[35.3625,29.8649,-478.6146],[35.4936,29.7046,-482.2283],[38.499,29.6755,-483.1026],[38.9653,29.6026,-485.0989],[38.499,29.5006,-487.4887],[35.6248,29.4423,-488.7564],[36.2368,29.3112,-491.7436],[38.1056,29.3112,-492.2827],[38.1056,29.2383,-493.3465],[36.2368,29.1655,-494.0167],[38.9653,29.1655,-495.1533],[36.1639,29.1655,-495.8236],[39.9125,29.2675,-497.5576],[42.9871,29.2675,-501.4956],[45.1145,29.2092,-506.8179],[40.0126,29.2092,-506.8179],[34.9108,29.2092,-506.8179],[29.8089,29.2092,-504.1859],[24.707,29.2092,-501.5539],[26.1059,29.2092,-497.8782],[22.4921,29.2529,-498.1405],[20.9476,29.2529,-499.0876],[18.2081,29.2092,-498.0822],[15.6144,29.1655,-499.0294],[10.4852,29.1218,-499.0294],[7.9497,29.0926,-498.0239],[4.948,29.0926,-497.9656],[4.4234,29.1218,-499.0294],[3.5637,29.0926,-497.6159],[3.5054,29.0926,-499.2224],[-0.3706,29.0926,-499.7652],[-4.2467,29.0635,-497.4301],[-0.7058,29.0343,-495.0222],[-7.0444,28.9323,-493.8565],[-6.7093,28.2329,-492.1224],[-7.4524,27.4023,-490.3884],[-5.5144,26.7029,-489.0333],[-2.3087,26.4406,-488.4213],[-1.9007,25.6683,-486.8184],[1.6402,24.5317,-484.4869],[-1.9007,23.4243,-482.2283],[-2.3087,22.6666,-480.6255],[-5.5144,21.734,-478.702],[-7.4524,20.8305,-476.764],[-1.1138,19.1985,-473.2814],[-7.4524,17.8579,-470.5419],[-3.9115,16.7214,-468.2105],[-0.6475,16.2259,-466.6222],[-1.4489,16.2259,-464.9027],[2.0919,16.2551,-463.5622],[2.4271,16.2842,-461.9447],[3.8988,16.3134,-462.1633],[4.9625,16.4882,-461.3619],[5.968,16.6339,-461.7699],[7.294,16.7505,-460.5604],[7.8186,16.7505,-461.289],[8.7512,16.7505,-461.3619],[11.3012,16.7505,-459.2927],[12.7729,16.7068,-461.3619],[14.9004,16.6339,-462.6879],[15.5561,16.6339,-459.2927],[19.6215,16.5319,-464.2325],[22.157,16.5319,-458.8993],[25.4939,16.5028,-457.0195],[28.1605,16.4736,-463.3582],[29.2242,16.4445,-470.2359],[36.1949,16.3352,-469.5292],[43.1656,16.2259,-468.8225],[46.1673,16.3279,-468.8954],[46.5316,16.4299,-470.3379],[49.6062,16.4591,-470.0611],[53.9631,16.3862,-474.622],[58.1743,16.3134,-476.4871],[59.9812,16.3134,-481.2229],[60.1123,16.3134,-479.824],[61.5695,16.3571,-481.2375],[62.8955,16.4008,-479.8386],[64.5566,16.5028,-481.1792],[64.8918,16.5611,-479.7657],[65.9409,17.0711,-482.2138],[68.0684,18.3097,-482.3449],[69.817,19.3442,-480.7566],[72.0173,20.306,-479.824],[72.5419,20.3351,-481.4269],[73.3433,20.3642,-479.926],[73.6784,20.3934,-481.4706],[74.3487,20.5245,-479.9989],[74.6839,20.6265,-481.4998],[75.7476,21.1657,-481.4706],[76.4762,21.6028,-479.9697],[78.0062,22.6083,-480.8295],[79.0845,23.3077,-482.2575],[80.2939,24.0363,-482.1555],[80.4251,24.0654,-480.7566],[82.4359,24.2549,-481.2375],[84.0388,24.284,-479.8969],[85.7728,24.3131,-481.2958],[85.904,24.3131,-479.8823],[92.5632,24.4006,-478.8915],[96.8327,24.5026,-476.356],[100.8253,24.4006,-474.7531],[104.4244,24.3569,-480.1592],[108.9562,24.3131,-484.6909],[109.4954,24.3131,-478.1483],[110.3696,24.3131,-484.6764],[110.7048,24.3131,-478.2066],[112.0017,24.3569,-483.5471],[113.2985,24.4006,-488.8876],[114.8285,24.5026,-487.955],[115.2366,24.5609,-486.7455],[115.9651,24.6191,-487.9258],[118.6317,24.59,-487.1972],[120.9632,24.5609,-483.3504]],"expectedDistance":439.4,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-06-creature-45840","objectiveId":"creature-45840","objectiveName":"War Master Voone","checkpoints":[[120.9632,24.5609,-483.3504],[118.6317,24.59,-487.1972],[115.9651,24.6191,-487.9258],[115.2366,24.5609,-486.7455],[114.8285,24.5026,-487.955],[113.2985,24.4006,-488.8876],[112.0017,24.3569,-483.5471],[110.7048,24.3131,-478.2066],[110.3696,24.3131,-484.6764],[109.4954,24.3131,-478.1483],[108.9562,24.3131,-484.6909],[104.4244,24.3569,-480.1592],[100.8253,24.4006,-474.7531],[96.8327,24.5026,-476.356],[92.5632,24.4006,-478.8915],[85.904,24.3131,-479.8823],[85.7728,24.3131,-481.2958],[84.0388,24.284,-479.8969],[82.4359,24.2549,-481.2375],[80.4251,24.0654,-480.7566],[80.2939,24.0363,-482.1555],[79.0845,23.3077,-482.2575],[78.0062,22.6083,-480.8295],[76.4762,21.6028,-479.9697],[75.7476,21.1657,-481.4706],[74.6839,20.6265,-481.4998],[74.3487,20.5245,-479.9989],[73.6784,20.3934,-481.4706],[73.3433,20.3642,-479.926],[72.5419,20.3351,-481.4269],[72.0173,20.306,-479.824],[69.817,19.3442,-480.7566],[68.0684,18.3097,-482.3449],[65.9409,17.0711,-482.2138],[64.8918,16.5611,-479.7657],[64.5566,16.5028,-481.1792],[62.8955,16.4008,-479.8386],[61.5695,16.3571,-481.2375],[60.1123,16.3134,-479.824],[59.9812,16.3134,-481.2229],[58.1743,16.3134,-476.4871],[53.9631,16.3862,-474.622],[51.4276,16.4299,-478.8915],[50.7719,16.3279,-485.2301],[45.7593,16.3716,-485.4924],[42.9761,16.3716,-486.2792],[39.3733,16.2988,-489.0187],[37.8251,16.2259,-492.3556],[41.5008,16.2259,-492.953],[38.9653,16.2551,-494.2207],[41.7084,16.2842,-494.891],[38.4262,15.1185,-497.1642],[40.8888,13.4573,-499.3682],[38.1457,11.7962,-501.5721],[38.1602,10.3682,-503.5721],[34.5574,9.5667,-504.6503],[34.5574,7.5413,-507.5209],[38.1602,6.3173,-509.3133],[39.2713,5.0787,-510.989],[42.8741,4.9038,-511.2513],[40.7175,4.6415,-515.6227],[42.8741,4.5832,-519.2073],[45.5699,4.5541,-515.6956],[46.109,4.5104,-520.8539],[47.231,4.1752,-520.4022],[51.0925,2.2518,-521.5825],[54.954,0.2846,-518.4496],[58.9611,-1.7554,-518.0416],[62.4438,-3.5914,-521.1745],[65.7515,-5.2599,-518.5006],[69.0592,-6.9283,-515.8267],[69.4381,-7.0012,-518.9013],[73.6784,-7.074,-517.4296],[73.6784,-7.074,-514.2384],[76.3305,-7.0303,-513.8013],[72.7313,-6.9866,-511.9216],[72.7313,-7.0886,-511.3824],[76.3305,-7.2343,-511.1201],[80.5562,-9.7406,-507.6958],[79.6965,-11.4746,-505.3644],[76.549,-13.3398,-502.7706],[76.9425,-14.4618,-501.1641],[80.5416,-16.0355,-498.9019],[80.0754,-17.6384,-496.6979],[80.0899,-18.5418,-495.1096],[80.5562,-18.6293,-494.3082],[76.957,-18.7167,-493.565],[77.4088,-18.7458,-492.6179],[73.8096,-18.7458,-492.0787],[73.1684,-18.7167,-484.6181],[69.0447,-18.7167,-484.5598],[66.4436,-18.7021,-481.1938],[63.8426,-18.6876,-477.8277],[63.1723,-18.6584,-471.0228],[58.1014,-18.6584,-471.0228],[61.1615,-18.6293,-470.3525],[57.9703,-18.6001,-469.7551],[60.8409,-18.571,-468.6185],[58.9757,-18.571,-468.0793],[59.034,-18.571,-466.7533],[60.8992,-18.571,-465.8936],[58.4949,-18.571,-464.4365],[57.9557,-18.571,-461.0996],[55.4931,-18.571,-458.3018],[54.5022,-18.571,-460.9684],[53.5697,-18.571,-458.7681],[52.0979,-18.571,-458.6953],[51.5588,-18.571,-460.9538],[47.9596,-18.571,-461.5513],[41.8213,-18.571,-458.6224],[41.8213,-18.571,-451.7592],[35.6831,-18.571,-447.7666],[32.5465,-18.571,-448.6992],[31.6139,-18.571,-452.0215],[30.6814,-18.571,-449.5589],[29.2096,-18.571,-452.0215],[28.5539,-18.571,-449.5589],[24.6196,-18.571,-448.6263],[18.077,-18.571,-451.2346],[18.1498,-18.571,-458.0978]],"expectedDistance":421.61,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-07-creature-44342","objectiveId":"creature-44342","objectiveName":"Mother Smolderweb","checkpoints":[[18.1498,-18.571,-458.0978],[18.077,-18.571,-451.2346],[24.6196,-18.571,-448.6263],[28.5539,-18.571,-449.5589],[29.2096,-18.571,-452.0215],[30.6814,-18.571,-449.5589],[31.6139,-18.571,-452.0215],[32.5465,-18.571,-448.6992],[35.6831,-18.571,-447.7666],[41.8213,-18.571,-451.7592],[41.8213,-18.571,-458.6224],[47.9596,-18.571,-461.5513],[51.5588,-18.571,-460.9538],[52.0979,-18.571,-458.6953],[53.5697,-18.571,-458.7681],[54.5022,-18.571,-460.9684],[55.4931,-18.571,-458.3018],[57.9557,-18.571,-461.0996],[58.4949,-18.571,-464.4365],[60.8992,-18.571,-465.8936],[59.034,-18.571,-466.7533],[58.9757,-18.571,-468.0793],[60.8409,-18.571,-468.6185],[57.9703,-18.6001,-469.7551],[61.1615,-18.6293,-470.3525],[58.1014,-18.6584,-471.0228],[63.1723,-18.6584,-471.0228],[63.8426,-18.6876,-477.8277],[63.5658,-18.7167,-484.7638],[59.9957,-18.7021,-481.3978],[56.4257,-18.6876,-478.0317],[58.8883,-18.7021,-482.4979],[61.3509,-18.7167,-486.9641],[58.2909,-18.6876,-487.037],[60.4912,-18.7386,-490.7017],[62.6915,-18.7896,-494.3665],[59.2234,-18.8624,-492.7636],[59.6314,-18.9644,-493.565],[59.5877,-18.9644,-497.2407],[55.9157,-18.9644,-500.5084],[53.1908,-18.9644,-505.2186],[49.2565,-18.8624,-506.2678],[49.0088,-18.7604,-507.3607],[42.3605,-18.6584,-507.6229],[35.9453,-18.6584,-510.1001],[29.0639,-18.7604,-511.3387],[28.4373,-18.8624,-513.5681],[27.0385,-18.9644,-513.233],[27.2716,-18.9644,-516.2785],[25.6105,-18.9644,-517.8813],[24.809,-18.9644,-520.7519],[22.6961,-18.9936,-520.7082],[22.361,-18.9936,-521.6991],[21.0933,-19.0227,-520.9705],[20.8893,-18.9936,-522.3694],[19.6798,-18.9936,-522.1799],[19.6361,-18.9644,-526.1726],[18.2227,-18.8624,-527.9649],[18.2372,-18.8624,-531.1706],[17.7418,-18.7604,-532.5695],[17.8875,-18.7604,-534.5075],[19.0241,-18.8624,-535.8627],[18.7618,-18.8624,-536.5184],[18.0187,-18.7604,-537.0284],[17.9167,-18.7604,-538.0047],[15.3812,-18.6876,-539.8115],[15.4978,-18.6876,-542.959],[12.2338,-18.7021,-545.1957],[8.9697,-18.7167,-547.4325],[6.7694,-18.7021,-550.6309],[4.5691,-18.6876,-553.8294],[7.8696,-18.6876,-557.6617],[11.17,-18.6876,-561.494],[9.8367,-18.7021,-567.3591],[8.5034,-18.7167,-573.2242],[5.1665,-18.7021,-571.4537],[1.8297,-18.6876,-569.6833],[2.9662,-18.6876,-573.7196],[-1.9007,-18.6293,-571.3881],[-2.4981,-18.6001,-572.7287],[-2.4981,-18.6001,-574.725],[-4.7713,-18.571,-575.8179],[-5.3104,-18.571,-573.9527],[-6.7093,-18.571,-573.9527],[-7.6419,-18.571,-575.745],[-9.1719,-18.571,-576.6193],[-9.2447,-18.571,-573.9673],[-10.5707,-18.571,-572.6267],[-16.0351,-18.571,-572.9473],[-21.5723,-18.571,-569.013],[-21.5723,-18.571,-567.3518],[-16.1662,-18.571,-566.4921],[-16.1662,-18.571,-565.2972],[-19.372,-18.571,-561.3629],[-24.778,-18.571,-557.7054],[-23.044,-18.571,-553.64],[-25.1715,-18.571,-552.4305],[-27.2115,-18.3961,-553.232],[-28.1732,-18.571,-552.3577],[-29.1786,-18.4398,-552.3577],[-30.4464,-18.4107,-551.0317],[-32.4281,-18.5127,-547.9133],[-31.2915,-18.5418,-548.1028],[-31.8307,-18.5418,-545.9025],[-33.4918,-18.5418,-543.775],[-33.113,-18.571,-542.4199],[-31.9181,-18.571,-541.9536],[-32.399,-18.4398,-540.4381],[-31.5684,-18.4398,-540.4673],[-31.2332,-18.3087,-539.4327],[-29.8344,-18.5127,-538.9227],[-29.6449,-18.5418,-537.8298],[-30.6504,-18.5418,-536.8972],[-31.0438,-18.571,-534.8281],[-29.7761,-18.571,-533.6915],[-29.7032,-18.571,-531.2872],[-28.2461,-18.571,-531.0249],[-27.8381,-18.571,-529.422],[-26.4392,-18.571,-529.1597],[-26.0312,-18.571,-527.0177],[-26.8909,-18.571,-526.4203],[-27.4301,-18.4398,-524.5551],[-28.9018,-18.4398,-523.8994],[-29.0184,-18.3087,-523.0542],[-30.2715,-18.5418,-522.1362],[-28.7998,-18.5418,-520.5334],[-29.7761,-18.571,-519.6299],[-29.2369,-18.5418,-518.7411],[-26.3663,-18.469,-517.8959],[-26.2352,-18.4398,-517.0362],[-24.8363,-18.5418,-516.2347],[-25.5795,-18.3961,-511.5427],[-22.0386,-18.469,-511.7758],[-19.0951,-18.3378,-508.5847],[-22.636,-18.4398,-505.317],[-16.9677,-18.3087,-502.5739],[-17.7837,-18.3087,-499.7579],[-13.8494,-18.2067,-497.4265],[-10.5125,-18.163,-494.3519],[-11.1828,-18.1193,-491.015],[-13.5725,-18.163,-487.8238],[-12.9751,-18.3087,-483.8312],[-15.8384,-18.3233,-479.6637],[-18.7017,-18.3378,-475.4963],[-17.9002,-18.469,-470.7022],[-12.2465,-18.571,-471.766],[-14.1699,-18.7021,-465.165],[-13.7765,-18.8041,-462.2944],[-11.9113,-18.8041,-461.6241],[-13.0333,-18.877,-458.025],[-11.1828,-18.8333,-455.8392],[-11.9113,-18.8333,-454.5132],[-11.3576,-18.877,-453.2309],[-10.4979,-18.877,-453.4203],[-10.9642,-18.877,-451.9486],[-8.2393,-18.877,-452.5461],[-6.3741,-18.8333,-450.8266],[-3.5035,-18.7896,-450.8995],[-3.591,-18.6584,-448.3786],[-0.3852,-18.7896,-447.2857],[-1.1138,-18.8333,-444.0217],[1.2905,-18.877,-440.4808],[-0.5018,-18.877,-437.7559],[0.5619,-18.877,-437.0273],[0.0228,-18.8333,-434.3607],[0.4745,-18.7896,-429.5521],[-1.9152,-18.6147,-423.6943],[1.0574,-18.6147,-419.2937],[1.5382,-18.4836,-415.8403],[4.5837,-18.6147,-414.7474],[7.7821,-18.7021,-417.9094],[10.9806,-18.7896,-421.0715],[14.4924,-18.8114,-418.7018],[18.0041,-18.8333,-416.3321],[21.4794,-18.8551,-418.8092],[24.9547,-18.877,-421.2864],[30.9036,-18.8333,-416.8275],[32.603,-18.8333,-411.9952],[34.3024,-18.8333,-407.1629],[38.6338,-18.7896,-411.9752],[41.417,-18.8333,-416.4341],[43.763,-18.877,-411.6218],[46.2985,-18.877,-416.4541],[48.8339,-18.877,-421.2864],[49.7009,-18.877,-416.4541],[50.5679,-18.877,-411.6218],[54.5605,-18.877,-411.6218],[58.9976,-18.877,-414.4578],[63.4346,-18.877,-417.2938],[62.5385,-18.877,-422.1625],[61.6423,-18.877,-427.0312],[66.3635,-18.8333,-427.7744],[71.8278,-18.8333,-429.6395],[76.1702,-18.877,-425.0349],[73.2996,-18.877,-431.0967],[73.4307,-18.877,-433.6904],[76.6656,-18.877,-430.7251],[79.9005,-18.877,-427.7598],[84.3303,-18.8551,-432.6559],[88.76,-18.8333,-437.5519],[93.7581,-18.8333,-433.3553],[98.7561,-18.8333,-429.1587],[104.0529,-18.8333,-433.5593],[109.3496,-18.8333,-437.9599],[110.6829,-18.8114,-443.06],[112.0162,-18.7896,-448.16],[114.4205,-18.7896,-448.9614],[111.4917,-18.8333,-454.4986],[114.2894,-18.877,-454.9066],[112.06,-18.8551,-458.6588],[109.8305,-18.8333,-462.411],[106.8288,-18.7968,-465.4127],[103.827,-18.7604,-468.4145],[101.0147,-18.7313,-469.5656],[102.3407,-18.6584,-471.0957],[102.5447,-18.6001,-472.276],[101.277,-18.5273,-474.7386],[102.4719,-18.3961,-476.5017],[101.0001,-18.3233,-481.4998],[105.3862,-18.2941,-480.5672],[106.6539,-18.2941,-486.3521],[104.745,-18.3233,-492.8219],[107.8633,-18.163,-496.2608],[112.2202,-18.3233,-497.1496],[110.5591,-18.2941,-497.8199],[110.9671,-16.8661,-503.1568],[113.1674,-16.837,-502.8216],[114.4205,-16.2395,-504.5447],[113.4588,-14.695,-509.8378],[110.9379,-13.8207,-513.4516],[111.4188,-13.6458,-513.7576],[110.7048,-13.6458,-514.0053],[113.5463,-12.5529,-515.3896],[112.8614,-12.2615,-516.089],[113.386,-11.8681,-516.8322],[110.0928,-12.2761,-516.905],[110.5591,-11.9701,-517.6336],[108.9416,-10.8918,-519.8194],[109.6119,-9.7843,-522.3548],[109.4225,-8.5603,-524.934],[112.0017,-8.1669,-525.6043],[113.1965,-7.4383,-526.7991],[111.8268,-6.7389,-528.6643],[114.0125,-5.8063,-530.0923],[114.814,-4.6114,-532.3655],[112.5554,-4.2471,-533.7935],[114.6828,-3.4457,-534.8718],[113.896,-3.1397,-535.8044],[116.7666,-1.26,-538.981],[114.2165,0.8092,-544.081],[115.8048,1.4066,-544.8825],[115.4697,2.0041,-546.2085],[118.5443,2.0332,-545.3779],[119.2583,2.8055,-546.8642],[120.7155,3.3301,-547.5345],[121.648,4.3938,-549.5745],[121.648,4.7581,-550.3322],[119.7829,5.2972,-552.4888],[120.5406,6.565,-554.7183],[119.8849,8.0076,-558.0843],[121.6918,9.5084,-560.0077],[118.4277,10.033,-563.1115],[115.3531,9.8581,-564.6561],[117.976,10.4702,-564.2335],[115.3677,10.3973,-566.3755],[119.2437,11.0967,-565.3118],[117.6846,11.0967,-567.5704],[120.4969,11.5339,-566.6961],[124.2272,11.5047,-563.5924],[128.4894,11.971,-565.4721],[131.4511,11.665,-566.6232],[133.3162,10.8344,-564.6561],[134.9191,10.3973,-564.6561],[136.1285,10.033,-566.5941]],"expectedDistance":944.07,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-08-creature-45749","objectiveId":"creature-45749","objectiveName":"Quartermaster Zigris","checkpoints":[[136.1285,10.033,-566.5941],[139.1863,14.1069,-561.5824],[142.244,18.1808,-556.5708],[145.3017,22.2547,-551.5591],[148.3595,26.3286,-546.5474],[151.4172,30.4025,-541.5358],[154.4749,34.4764,-536.5241],[157.5326,38.5503,-531.5125],[160.5904,42.6242,-526.5008],[163.6481,46.6981,-521.4891],[166.7058,50.7721,-516.4775],[169.7636,54.846,-511.4658],[172.8213,58.9199,-506.4542],[175.879,62.9938,-501.4425],[178.9368,67.0677,-496.4308],[181.9945,71.1416,-491.4192],[185.0522,75.2155,-486.4075],[188.1099,79.2894,-481.3958],[191.1677,83.3633,-476.3842],[194.2254,87.4372,-471.3725]],"expectedDistance":135.77,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-09-creature-40245","objectiveId":"creature-40245","objectiveName":"Halycon","checkpoints":[[194.2254,87.4372,-471.3725],[194.2983,87.4372,-470.0319],[200.564,87.4372,-469.2888],[200.6369,87.4372,-467.9482],[194.2983,87.4372,-467.2925],[195.8283,87.4372,-463.5622],[197.3583,87.4372,-459.8318],[193.1252,87.4372,-457.464],[188.8922,87.4372,-455.0961],[183.7047,87.4372,-459.8318],[181.111,87.4372,-455.2272],[180.5718,87.4372,-457.7627],[178.969,87.4372,-455.2272],[177.9052,87.4372,-457.6898],[176.3024,87.4372,-455.1544],[175.7632,87.4372,-457.6898],[174.7578,87.4372,-453.8866],[170.1677,87.4372,-452.6189],[165.5777,87.4372,-447.6791],[169.7743,87.4372,-446.6154],[165.6068,87.4663,-445.2894],[165.534,87.3935,-444.7648],[169.8326,87.3206,-444.5025],[169.5557,86.8543,-443.1765],[165.6214,84.6249,-438.7613],[160.8274,83.2552,-436.0219],[160.8274,80.8217,-431.2133],[162.0222,79.962,-429.5521],[161.6288,78.5922,-426.9001],[165.7307,77.5067,-424.5686],[169.8326,76.4211,-422.2372],[165.5777,76.3337,-421.698],[165.6505,76.2462,-420.4303],[169.8472,76.2462,-419.7017],[165.6505,76.2462,-416.2301],[169.9054,76.2462,-415.6909],[169.9054,76.2462,-412.5544],[165.6505,76.2462,-409.8841],[169.8472,76.2462,-408.8204],[165.6505,76.2462,-408.1501],[169.8763,76.2754,-407.2904],[165.636,76.3045,-407.0281],[169.8909,76.2317,-406.489],[165.5923,76.1297,-406.2121],[166.758,74.7016,-403.4144],[162.4302,73.3756,-400.8935],[162.4157,71.2045,-396.7551],[164.0185,69.5287,-393.5494],[162.4448,68.4213,-391.3928],[162.4594,66.8621,-388.3328],[166.1606,65.7984,-386.2053],[169.8617,64.7347,-384.0779],[165.5631,64.6327,-383.8156],[169.8326,64.5015,-383.291],[165.6068,64.4724,-383.0287],[165.6505,64.4433,-382.0961],[169.8472,64.4433,-381.4259],[169.9054,64.4433,-380.2164],[165.636,64.4433,-379.6773],[164.9657,64.4724,-376.6172],[169.9637,64.4724,-374.0964],[165.0385,64.5015,-369.9726],[170.634,64.4724,-368.3697],[169.9637,64.4724,-364.0274],[164.9657,64.4724,-361.2879],[169.8326,64.4433,-358.0239],[165.5777,64.4433,-357.4993],[165.6505,64.4433,-356.2316],[169.8472,64.4433,-355.4885],[169.9054,64.4433,-354.2207],[165.636,64.4433,-353.6962],[164.9657,64.4724,-351.3064],[169.9637,64.4724,-349.4413],[165.0385,64.5015,-347.0369],[170.634,64.4724,-344.9678],[165.0385,64.5015,-342.8986],[169.9637,64.4724,-338.906],[164.9657,64.4724,-336.4434],[165.636,64.4433,-333.3688],[169.9054,64.4433,-332.8297],[169.8472,64.4433,-331.3579],[165.7088,64.4433,-330.4254],[168.0403,64.5453,-329.3033],[172.3098,64.5015,-328.6331],[173.5192,64.6035,-327.817],[174.8306,64.5015,-323.1359],[176.0255,64.4724,-322.768],[178.3715,64.4433,-326.5748],[178.8378,64.4433,-324.3709],[179.7121,64.4433,-327.3617],[180.5136,64.4724,-326.1522],[181.7084,64.6035,-330.3525],[183.7047,64.5015,-332.3488],[186.3713,64.4724,-336.764],[190.0288,64.6618,-340.3049],[191.7191,64.6327,-338.3086],[193.3657,64.6327,-337.4343]],"expectedDistance":381.65,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-10-creature-45757","objectiveId":"creature-45757","objectiveName":"Overlord Wyrmthalak","checkpoints":[[193.3657,64.6327,-337.4343],[187.8814,65.4741,-342.2686],[182.397,66.3155,-347.103],[176.9127,67.1569,-351.9373],[171.4284,67.9982,-356.7717],[165.9441,68.8396,-361.6061],[160.4598,69.681,-366.4404],[154.9755,70.5224,-371.2748],[149.4911,71.3638,-376.1091],[144.0068,72.2052,-380.9435],[138.5225,73.0466,-385.7778],[133.0382,73.888,-390.6122],[127.5539,74.7294,-395.4465],[122.0696,75.5708,-400.2809],[116.5852,76.4122,-405.1152],[111.1009,77.2535,-409.9496],[105.6166,78.0949,-414.7839],[100.1323,78.9363,-419.6183],[94.648,79.7777,-424.4526],[89.1637,80.6191,-429.287],[83.6793,81.4605,-434.1214],[78.195,82.3019,-438.9557],[72.7107,83.1433,-443.7901],[67.2264,83.9847,-448.6244],[61.7421,84.8261,-453.4588],[56.2578,85.6675,-458.2931],[50.7735,86.5088,-463.1275],[45.2891,87.3502,-467.9618],[39.8048,88.1916,-472.7962],[34.3205,89.033,-477.6305],[28.8362,89.8744,-482.4649],[23.3519,90.7158,-487.2992]],"expectedDistance":228.13,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-11-creature-137817","objectiveId":"creature-137817","objectiveName":"Pyroguard Emberseer","checkpoints":[[23.3519,90.7158,-487.2992],[18.9272,90.8665,-481.2637],[14.5025,91.0172,-475.2282],[10.0778,91.1679,-469.1927],[5.6532,91.3186,-463.1572],[1.2285,91.4693,-457.1217],[-3.1962,91.62,-451.0862],[-7.6209,91.7707,-445.0507],[-12.0455,91.9214,-439.0152],[-16.4702,92.0721,-432.9797],[-20.8949,92.2228,-426.9442],[-25.3196,92.3735,-420.9087],[-29.7443,92.5242,-414.8732],[-34.1689,92.6749,-408.8377],[-38.5936,92.8256,-402.8022],[-43.0183,92.9763,-396.7667],[-47.443,93.127,-390.7311],[-51.8676,93.2777,-384.6956],[-56.2923,93.4284,-378.6601],[-60.717,93.5791,-372.6246],[-65.1417,93.7298,-366.5891],[-69.5663,93.8805,-360.5536],[-73.991,94.0312,-354.5181],[-78.4157,94.1819,-348.4826],[-82.8404,94.3326,-342.4471],[-87.2651,94.4833,-336.4116],[-91.6897,94.634,-330.3761],[-96.1144,94.7847,-324.3406],[-100.5391,94.9354,-318.3051],[-104.9638,95.0861,-312.2696],[-109.3884,95.2368,-306.2341],[-113.8131,95.3875,-300.1985],[-118.2378,95.5382,-294.163],[-122.6625,95.6889,-288.1275],[-127.0871,95.8396,-282.092],[-131.5118,95.9903,-276.0565],[-135.9365,96.141,-270.021],[-140.3612,96.2917,-263.9855],[-144.7858,96.4424,-257.95]],"expectedDistance":284.44,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-12-encounter-277","objectiveId":"encounter-277","objectiveName":"Solakar Flamewreath","checkpoints":[[-144.7858,96.4424,-257.95],[-140.4222,96.2437,-263.9324],[-136.0585,96.045,-269.9148],[-131.6948,95.8463,-275.8971],[-127.3311,95.6476,-281.8795],[-122.9674,95.4489,-287.8619],[-118.6037,95.2502,-293.8443],[-114.24,95.0515,-299.8266],[-109.8763,94.8528,-305.809],[-105.5126,94.6541,-311.7914],[-101.149,94.4554,-317.7738],[-96.7853,94.2567,-323.7561],[-92.4216,94.058,-329.7385],[-88.0579,93.8593,-335.7209],[-83.6942,93.6606,-341.7033],[-79.3305,93.4619,-347.6856],[-74.9668,93.2632,-353.668],[-70.6031,93.0645,-359.6504],[-66.2395,92.8658,-365.6328],[-61.8758,92.6671,-371.6151],[-57.5121,92.4684,-377.5975],[-53.1484,92.2697,-383.5799],[-48.7847,92.071,-389.5623],[-44.421,91.8722,-395.5446],[-40.0573,91.6735,-401.527],[-35.6936,91.4748,-407.5094],[-31.3299,91.2761,-413.4918],[-26.9663,91.0774,-419.4741],[-22.6026,90.8787,-425.4565],[-18.2389,90.68,-431.4389],[-13.8752,90.4813,-437.4213],[-9.5115,90.2826,-443.4036],[-5.1478,90.0839,-449.386],[-0.7841,89.8852,-455.3684],[3.5796,89.6865,-461.3508],[7.9433,89.4878,-467.3331],[12.3069,89.2891,-473.3155],[16.6706,89.0904,-479.2979],[21.0343,88.8917,-485.2803],[25.398,88.693,-491.2626],[29.7617,88.4943,-497.245],[34.1254,88.2956,-503.2274],[38.4891,88.0969,-509.2098],[42.8528,87.8982,-515.1921],[47.2165,87.6995,-521.1745]],"expectedDistance":325.93,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-13-creature-137968","objectiveId":"creature-137968","objectiveName":"Warchief Rend Blackhand","checkpoints":[[47.2165,87.6995,-521.1745],[40.2879,88.8437,-518.6712],[33.3594,89.9879,-516.168],[26.4308,91.1322,-513.6647],[19.5023,92.2764,-511.1614],[12.5738,93.4206,-508.6581],[5.6452,94.5649,-506.1549],[-1.2833,95.7091,-503.6516],[-8.2119,96.8533,-501.1483],[-15.1404,97.9976,-498.645],[-22.0689,99.1418,-496.1418],[-28.9975,100.286,-493.6385],[-35.926,101.4303,-491.1352],[-42.8546,102.5745,-488.6319],[-49.7831,103.7187,-486.1287],[-56.7116,104.863,-483.6254],[-63.6402,106.0072,-481.1221],[-70.5687,107.1514,-478.6188],[-77.4972,108.2957,-476.1156],[-84.4258,109.4399,-473.6123],[-91.3543,110.5841,-471.109],[-98.2829,111.7284,-468.6057],[-105.2114,112.8726,-466.1025],[-112.1399,114.0168,-463.5992],[-119.0685,115.1611,-461.0959],[-125.997,116.3053,-458.5926],[-132.9256,117.4495,-456.0894],[-139.8541,118.5938,-453.5861],[-146.7826,119.738,-451.0828],[-153.7112,120.8822,-448.5795],[-160.6397,122.0265,-446.0763]],"expectedDistance":223.66,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-14-creature-137969","objectiveId":"creature-137969","objectiveName":"The Beast","checkpoints":[[-160.6397,122.0265,-446.0763],[-158.4977,122.0265,-448.5534],[-156.9677,122.0265,-448.5534],[-154.7674,122.0265,-446.0763],[-151.5033,122.0265,-448.6117],[-148.2393,122.0265,-446.0763],[-146.1847,122.0265,-448.5534],[-144.6401,122.0265,-448.5534],[-140.5565,122.0265,-446.0763],[-136.7496,122.0265,-448.5534],[-139.1539,122.0265,-452.8229],[-136.2214,122.0265,-454.5569],[-138.4217,122.0265,-456.8884],[-136.6877,122.0265,-457.4275],[-137.154,121.7642,-458.5058],[-135.42,120.0265,-461.0996],[-138.4217,117.5858,-464.6405],[-138.4217,116.8135,-466.287],[-136.6877,116.8135,-466.8262],[-136.3526,116.8135,-467.7588],[-138.4946,116.8135,-467.8171],[-138.9609,116.8135,-468.2833],[-137.2851,116.8863,-472.4217],[-133.6277,116.9301,-473.4125],[-132.5057,116.9738,-476.356],[-129.9702,116.9446,-473.6894],[-129.3582,116.9446,-475.4963],[-128.2216,116.9446,-473.8934],[-126.8956,116.9446,-475.4963],[-125.5696,116.9446,-473.9663],[-122.7718,116.9446,-475.4963],[-120.7755,116.9446,-473.9663],[-118.1672,116.9446,-475.4234],[-117.5552,116.9446,-473.8205],[-116.3458,116.9446,-473.8788],[-115.7484,116.9446,-475.4088],[-113.2858,116.9446,-475.4088],[-111.4206,116.9446,-473.8788],[-109.0891,116.9446,-475.3506],[-108.6229,116.9446,-473.8934],[-107.7631,116.9446,-473.9663],[-107.3697,116.9446,-475.3651],[-106.0437,116.9446,-475.6274],[-105.9708,116.9446,-473.8934],[-105.0382,116.9446,-473.6165],[-103.7122,116.9446,-475.6128],[-103.1731,116.9446,-473.6165],[-102.2988,116.9738,-473.9663],[-101.8908,117.1632,-471.7805],[-100.2296,117.0029,-470.8771],[-98.3645,116.9738,-472.9754],[-95.9747,116.9446,-474.1703],[-96.5867,116.9738,-472.2322],[-95.931,117.0029,-472.6548],[-94.7216,116.9738,-474.4617],[-93.9201,117.0029,-472.8588],[-92.1278,117.0029,-473.602],[-91.3555,117.1923,-472.1011],[-90.5541,117.1923,-472.1011],[-90.525,117.0321,-472.8005],[-87.7709,117.0029,-474.4326],[-85.1772,116.9738,-473.6311],[-82.4377,116.9446,-475.6274],[-81.8986,116.9446,-473.6165],[-80.6309,116.9446,-473.6748],[-79.8294,116.9446,-473.9517],[-79.7566,116.9446,-475.6274],[-78.0954,116.9446,-473.9663],[-76.8277,116.9446,-475.4234],[-75.56,116.9446,-473.8934],[-74.6274,116.9446,-473.7623],[-74.0299,116.9009,-475.4234],[-72.8351,116.5658,-475.234],[-71.7859,116.0995,-473.5728],[-69.9208,115.196,-475.234],[-68.7259,114.6277,-473.8351],[-67.4436,114.1615,-475.4234],[-66.9773,114.0886,-473.7623],[-65.7679,114.0157,-473.8205],[-65.0247,114.0157,-475.3506],[-63.5676,113.6514,-473.9517],[-61.8481,112.9229,-475.4817],[-59.7935,111.9903,-473.9517],[-58.3801,111.3637,-475.2923],[-57.8992,111.1014,-473.7623],[-56.8209,110.9994,-473.8934],[-54.5623,110.9557,-475.3651],[-50.9049,110.912,-473.5583],[-50.832,110.912,-475.4234],[-49.4914,110.912,-477.3614],[-48.2237,110.912,-473.3543],[-45.8922,110.9339,-477.5217],[-43.5608,110.9557,-481.6892],[-38.4316,110.9776,-483.9842],[-33.3024,110.9994,-486.2792],[-29.8052,111.0359,-492.3865],[-26.308,111.0723,-498.4939],[-31.583,111.1014,-500.2315],[-29.1641,111.1306,-502.5375],[-27.3718,111.32,-503.2515],[-28.5666,111.32,-503.7761],[-28.5958,111.1014,-504.4901],[-27.9692,111.1743,-505.8452],[-28.5084,111.1743,-506.7778],[-27.7798,111.1743,-507.6521],[-28.5084,111.1014,-508.031],[-27.6778,111.2617,-509.2404],[-29.2078,111.1306,-509.0364],[-32.7195,111.0869,-511.3606],[-36.2313,111.0431,-513.6847],[-41.8996,111.0431,-516.089],[-42.1619,111.0431,-514.151],[-44.7557,111.0431,-515.0253],[-47.1308,111.1743,-513.5536],[-49.098,111.0431,-513.3496],[-51.1671,111.0431,-514.151],[-52.5077,111.0431,-515.4187],[-55.0432,111.0431,-514.4133],[-54.6498,111.0431,-515.885],[-59.5749,111.0431,-514.6173],[-64.369,110.9994,-520.2856],[-64.0703,110.9776,-526.4858],[-63.7716,110.9557,-532.6861],[-66.2706,110.9339,-538.0848],[-68.7696,110.912,-543.4836],[-71.9754,110.912,-537.0284],[-74.6419,110.912,-540.6276],[-75.8368,110.912,-547.4179],[-81.17,110.912,-544.5473],[-84.9732,110.912,-548.8168],[-88.4412,110.912,-547.5491],[-89.505,110.912,-548.7585],[-90.0295,110.8829,-547.9571],[-92.0258,110.8537,-548.0882],[-93.1041,111.014,-549.0499],[-93.2353,110.8829,-547.9571],[-94.503,110.8829,-547.3013],[-95.5522,110.8829,-548.1902],[-97.4173,110.7517,-547.4616],[-98.0147,110.5186,-548.2776],[-100.6231,110.2271,-547.6948],[-102.3571,109.4257,-550.6965],[-108.0983,108.668,-553.4651],[-108.7686,107.8665,-557.9532],[-109.978,107.6625,-560.7509],[-113.1838,107.4877,-563.9566],[-118.7792,107.3565,-566.3464],[-121.9777,107.495,-564.1461],[-125.1762,107.6334,-561.9458]],"expectedDistance":416.21,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-15-creature-137971","objectiveId":"creature-137971","objectiveName":"General Drakkisath","checkpoints":[[-125.1762,107.6334,-561.9458],[-121.9777,107.495,-564.1461],[-118.7792,107.3565,-566.3464],[-113.1838,107.4877,-563.9566],[-109.978,107.6625,-560.7509],[-108.7686,107.8665,-557.9532],[-108.0983,108.668,-553.4651],[-102.3571,109.4257,-550.6965],[-100.6231,110.2271,-547.6948],[-98.0147,110.5186,-548.2776],[-97.4173,110.7517,-547.4616],[-95.5522,110.8829,-548.1902],[-94.503,110.8829,-547.3013],[-93.2353,110.8829,-547.9571],[-93.1041,111.014,-549.0499],[-92.0258,110.8537,-548.0882],[-90.0295,110.8829,-547.9571],[-89.505,110.912,-548.7585],[-88.4412,110.912,-547.5491],[-84.9732,110.912,-548.8168],[-81.17,110.912,-544.5473],[-75.8368,110.912,-547.4179],[-74.6419,110.912,-540.6276],[-71.9754,110.912,-537.0284],[-68.7696,110.912,-543.4836],[-66.2706,110.9339,-538.0848],[-63.7716,110.9557,-532.6861],[-64.0703,110.9776,-526.4858],[-64.369,110.9994,-520.2856],[-59.5749,111.0431,-514.6173],[-54.6498,111.0431,-515.885],[-55.0432,111.0431,-514.4133],[-52.5077,111.0431,-515.4187],[-51.1671,111.0431,-514.151],[-49.098,111.0431,-513.3496],[-47.1308,111.1743,-513.5536],[-44.7557,111.0431,-515.0253],[-42.1619,111.0431,-514.151],[-41.8996,111.0431,-516.089],[-36.2313,111.0431,-513.6847],[-32.7195,111.0869,-511.3606],[-29.2078,111.1306,-509.0364],[-27.6778,111.2617,-509.2404],[-28.5084,111.1014,-508.031],[-27.7798,111.1743,-507.6521],[-28.5084,111.1743,-506.7778],[-27.9692,111.1743,-505.8452],[-28.5958,111.1014,-504.4901],[-28.3044,111.2617,-504.0966],[-29.2078,111.1597,-503.6741],[-28.0129,111.1597,-503.1495],[-31.583,111.1014,-500.2315],[-26.308,111.0723,-498.4939],[-29.8052,111.0359,-492.3865],[-33.3024,110.9994,-486.2792],[-27.8016,110.9776,-482.0462],[-22.3009,110.9557,-477.8132],[-22.9906,110.9557,-472.1497],[-23.6803,110.9557,-466.4862],[-24.37,110.9557,-460.8227],[-29.1689,110.9557,-459.1373],[-33.9678,110.9557,-457.4518],[-38.7667,110.9557,-455.7664],[-35.6994,110.9776,-452.3056],[-32.6321,110.9994,-448.8449],[-38.4316,110.9994,-448.8449],[-35.1093,111.0431,-443.57],[-32.2387,111.0431,-441.7631],[-33.1858,111.0431,-439.4316],[-35.051,111.0431,-438.9071],[-33.113,111.0431,-437.7705],[-34.9781,111.0431,-437.1585],[-32.2387,111.0431,-435.8907],[-34.643,110.9994,-431.767],[-32.1075,110.9557,-427.6432],[-32.5155,110.912,-424.0441],[-35.3716,110.912,-423.9129],[-32.501,110.8537,-423.3155],[-34.0601,110.8246,-422.8492],[-32.0784,110.7954,-421.1735],[-30.5192,110.7663,-418.3611],[-31.2478,110.7954,-416.3648],[-34.031,110.7663,-414.7474],[-32.501,110.7371,-411.0863],[-35.2258,110.7371,-408.2266],[-35.2258,110.7371,-402.5692],[-32.4281,110.7371,-399.7715],[-34.3661,110.7663,-395.8226],[-31.5684,110.7663,-392.952],[-33.9727,110.7954,-391.4074],[-34.7596,110.7663,-389.6879],[-32.3552,110.7371,-387.8228],[-35.153,110.7371,-387.2836],[-32.297,110.7371,-385.1416],[-35.1676,110.7371,-383.5387],[-34.439,110.7371,-381.2073],[-32.2387,110.7371,-380.5516],[-33.0401,110.7371,-379.2984],[-34.439,110.7371,-378.701],[-34.439,110.7371,-375.9761],[-33.113,110.7371,-373.7758],[-34.439,110.7371,-371.0363],[-33.0401,110.7371,-370.4243],[-35.1676,110.7371,-369.1566],[-33.5064,110.7663,-366.2131],[-36.9744,110.8246,-361.9582],[-34.0383,110.8901,-359.1969],[-31.1021,110.9557,-356.4356],[-36.581,110.9994,-355.8965],[-32.3844,111.0213,-354.6579],[-28.1878,111.0431,-353.4193],[-31.2551,111.0431,-350.7527],[-34.3224,111.0431,-348.0861],[-32.1512,111.0431,-342.7165],[-29.9801,111.0431,-337.3469],[-25.3755,111.0431,-339.0153],[-20.7708,111.0431,-340.6837],[-22.8036,111.0431,-336.2176],[-24.8363,111.0431,-331.7514],[-18.9057,111.0431,-331.5164],[-12.9751,111.0431,-331.2814],[-15.0807,111.0431,-326.675],[-17.1862,111.0431,-322.0686],[-11.2848,111.0431,-321.768],[-5.3833,111.0431,-321.4675],[-11.2848,111.0431,-320.6078],[-17.1862,111.0431,-319.748],[-10.986,111.0431,-317.6862],[-4.7858,111.0431,-315.6243],[-10.6873,111.0431,-313.4895],[-16.5888,111.0431,-311.3548],[-10.323,111.0431,-310.0215],[-4.0573,111.0431,-308.6882],[-2.7385,111.0431,-302.1966],[-1.4198,111.0431,-295.7049],[-3.0275,111.0431,-289.9637],[-4.6353,111.0431,-284.2225],[-6.243,111.0431,-278.4813],[-13.7109,111.0431,-278.0151],[-21.1789,111.0431,-277.5488],[-23.8212,111.0431,-282.814],[-26.4635,111.0431,-288.0792],[-29.1058,111.0431,-293.3443],[-31.6048,111.0431,-289.6505],[-34.1038,111.0431,-285.9566]],"expectedDistance":594.89,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"d5d27e1cf604edfbf8b9510a9d868a499386d8eba3d107597147278c33afb175","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"blackrock-depths","mapId":230,"legs":[{"id":"leg-01-creature-47250","objectiveId":"creature-47250","objectiveName":"High Interrogator Gerstahn","checkpoints":[[-458.7233,-69.2454,35.3415],[-459.7716,-69.5949,33.4195],[-456.0775,-69.8944,31.6973],[-460.0961,-70.2438,29.7005],[-465.3128,-70.0941,29.9002],[-466.0616,-70.4435,26.1562],[-467.2597,-70.4435,24.5587],[-467.3845,-70.768,19.4918],[-466.5857,-70.9178,17.0894],[-467.4843,-70.9926,11.1614],[-469.4561,-70.9178,9.539],[-470.6542,-70.8429,7.5422],[-470.2798,-70.7181,5.5703],[-473.4747,-70.6432,2.3754],[-473.8741,-70.5683,0.3537],[-475.8459,-70.5683,-1.2438],[-475.0472,-70.5184,-2.4668],[-475.5214,-70.144,-4.0892],[-476.7695,-69.6947,-5.3372],[-477.1938,-69.1456,-7.0844],[-476.7695,-69.1456,-7.6335],[-477.2687,-68.6963,-8.6819],[-476.8443,-68.8461,-9.1062],[-477.693,-68.272,-10.8784],[-477.5183,-68.272,-13.0249],[-478.5167,-67.7229,-14.872],[-479.4901,-67.2237,-19.2649],[-480.0642,-66.9241,-19.864],[-478.5915,-67.2486,-21.1869],[-479.1407,-66.8742,-21.3366],[-479.0408,-66.999,-21.9856],[-480.9877,-66.4,-21.9856],[-480.7381,-66.7744,-23.3334],[-482.7848,-65.8259,-26.4534],[-484.4572,-65.2518,-30.5219],[-483.3839,-65.0771,-32.7184],[-484.5071,-64.6278,-34.5904],[-484.5071,-64.3782,-36.1879],[-483.7832,-64.3782,-37.9101],[-485.5804,-64.0787,-40.2564],[-484.9314,-64.2285,-41.3047],[-485.0063,-64.1286,-42.5776],[-486.1295,-63.9789,-43.1268],[-486.1544,-63.9539,-44.0253],[-484.3324,-63.8541,-44.7242],[-483.6834,-63.5795,-46.1469],[-481.8863,-63.2051,-47.6945],[-481.9611,-63.0553,-48.9425],[-478.9784,-62.344,-51.2887],[-475.9957,-61.6326,-53.635],[-473.3499,-61.6076,-56.3182],[-470.7042,-61.5827,-59.0014],[-470.3547,-62.007,-61.6222],[-468.2581,-62.7309,-66.8638],[-469.8305,-63.0304,-68.0619],[-468.6325,-63.3049,-70.8574],[-470.6293,-63.3049,-74.4517],[-468.6325,-63.1801,-80.4421],[-470.2549,-62.8307,-85.2344],[-469.0568,-62.4563,-88.4293],[-471.0786,-62.2067,-90.4261],[-470.6792,-61.9072,-92.4479],[-468.2581,-61.8323,-93.646],[-467.5841,-61.8822,-96.2668],[-465.9617,-62.0819,-97.2901],[-466.5358,-62.3315,-98.4632],[-462.068,-62.032,-98.7877],[-462.2676,-62.0819,-99.3369],[-458.4987,-61.6825,-99.7612],[-460.4206,-61.9321,-101.6332],[-457.4004,-62.2317,-104.7033],[-455.154,-62.1817,-104.1042],[-455.1291,-62.631,-105.8015],[-453.8311,-62.1817,-103.8047],[-453.282,-62.6061,-104.8031],[-451.9841,-62.8057,-104.9778],[-451.2852,-63.3798,-106.151],[-449.9374,-63.6544,-106.2508],[-449.6628,-64.1286,-107.5737],[-448.5146,-64.4032,-107.6486],[-448.29,-64.7526,-109.4457],[-446.8174,-64.8525,-108.7218],[-446.0935,-64.9523,-109.0463],[-446.3681,-64.9273,-111.3926],[-444.1217,-64.8774,-112.7654],[-441.6506,-64.8774,-111.1679],[-439.9783,-64.9024,-114.0383],[-436.9082,-64.9273,-109.3209],[-430.4436,-65.2269,-112.1913],[-427.673,-65.2269,-109.6204],[-424.9024,-65.2269,-107.0495],[-420.5687,-65.2518,-107.5362],[-416.235,-65.2768,-108.023],[-412.438,-65.3142,-110.0322],[-408.6409,-65.3517,-112.0415],[-407.4928,-65.3517,-119.2051],[-403.7207,-65.1894,-117.5078],[-399.9486,-65.0272,-115.8105],[-399.075,-64.9773,-119.4047],[-399.075,-64.9273,-124.5216],[-396.7038,-64.8774,-125.0457],[-393.7834,-64.8774,-123.0489],[-391.7118,-64.8774,-126.2438],[-387.3687,-64.8774,-124.6963],[-385.297,-64.8774,-127.9661],[-382.4266,-64.8774,-126.0441],[-379.1568,-64.8774,-126.9177],[-379.9056,-64.8774,-129.9629],[-373.8903,-64.8774,-131.111],[-370.6205,-64.8774,-129.239],[-368.0247,-64.8774,-132.6336],[-362.5584,-64.8774,-131.4355],[-359.9626,-64.8774,-134.8613],[-356.568,-64.8774,-132.9893],[-354.3715,-64.8774,-136.3152],[-351.3014,-64.8774,-137.1139],[-350.5027,-64.8774,-134.5867],[-344.3625,-64.8774,-136.3339],[-340.8182,-64.8774,-140.0093],[-336.5001,-64.8774,-138.4056],[-332.2319,-64.8774,-140.808],[-328.9621,-64.8774,-137.3323],[-332.4316,-64.8774,-134.1312],[-329.9605,-64.8774,-132.9081],[-331.1087,-64.8275,-131.0361],[-328.6377,-64.8275,-129.6883],[-327.2898,-65.0022,-131.1609],[-326.7657,-65.4016,-131.3107],[-323.7704,-67.4733,-130.3622],[-321.574,-69.495,-132.7085],[-320.8252,-69.8195,-131.8349],[-320.5007,-70.2438,-133.3075],[-319.9016,-70.3437,-131.9597],[-317.181,-70.3437,-130.512],[-313.9861,-70.3437,-132.8863],[-310.7912,-70.3437,-135.2606],[-314.5851,-70.3437,-140.8579],[-311.4901,-70.3437,-143.8563],[-308.395,-70.3437,-146.8546]],"expectedDistance":425.08,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-47304","objectiveId":"creature-47304","objectiveName":"Lord Roccor","checkpoints":[[-308.395,-70.3437,-146.8546],[-311.4901,-70.3437,-143.8563],[-314.5851,-70.3437,-140.8579],[-310.7912,-70.3437,-135.2606],[-313.9861,-70.3437,-132.8863],[-317.181,-70.3437,-130.512],[-319.9016,-70.3437,-131.9597],[-320.5007,-70.2438,-133.3075],[-320.8252,-69.8195,-131.8349],[-321.574,-69.495,-132.7085],[-322.1231,-68.9709,-131.8349],[-323.6706,-67.9725,-132.5088],[-325.318,-66.4749,-131.0361],[-327.2898,-65.0022,-131.1609],[-328.6377,-64.8275,-129.6883],[-331.1087,-64.8275,-131.0361],[-329.9605,-64.8774,-132.9081],[-332.4316,-64.8774,-134.1312],[-328.9621,-64.8774,-137.3323],[-332.2319,-64.8774,-140.808],[-336.5001,-64.8774,-138.4056],[-340.8182,-64.8774,-140.0093],[-344.3625,-64.8774,-136.3339],[-350.5027,-64.8774,-134.5867],[-351.3014,-64.8774,-137.1139],[-354.3715,-64.8774,-136.3152],[-356.568,-64.8774,-132.9893],[-359.9626,-64.8774,-134.8613],[-362.5584,-64.8774,-131.4355],[-368.0247,-64.8774,-132.6336],[-370.6205,-64.8774,-129.239],[-373.8903,-64.8774,-131.111],[-379.9056,-64.8774,-129.9629],[-379.1568,-64.8774,-126.9177],[-382.4266,-64.8774,-126.0441],[-385.297,-64.8774,-127.9661],[-387.3687,-64.8774,-124.6963],[-391.7118,-64.8774,-126.2438],[-393.7834,-64.8774,-123.0489],[-396.7038,-64.8774,-125.0457],[-399.075,-64.9273,-124.5216],[-399.075,-64.9773,-119.4047],[-399.9486,-65.0272,-115.8105],[-403.7207,-65.1894,-117.5078],[-407.4928,-65.3517,-119.2051],[-408.6409,-65.3517,-112.0415],[-412.438,-65.3142,-110.0322],[-416.235,-65.2768,-108.023],[-420.5687,-65.2518,-107.5362],[-424.9024,-65.2269,-107.0495],[-427.673,-65.2269,-109.6204],[-430.4436,-65.2269,-112.1913],[-436.9082,-64.9273,-109.3209],[-439.9783,-64.9024,-114.0383],[-441.6506,-64.8774,-111.1679],[-444.1217,-64.8774,-112.7654],[-446.3681,-64.9273,-111.3926],[-447.3665,-64.8774,-113.3894],[-448.5646,-64.8025,-112.5906],[-449.5879,-64.5529,-113.3145],[-450.4865,-64.503,-112.0914],[-452.0091,-64.1785,-112.4159],[-451.8343,-64.3033,-111.1929],[-453.1323,-64.0537,-111.3676],[-454.9044,-63.5545,-112.5158],[-456.7016,-63.255,-110.6438],[-457.4254,-62.9555,-112.1663],[-458.1492,-62.9305,-110.9183],[-459.2225,-62.5811,-112.7404],[-458.7732,-62.4064,-114.263],[-464.3893,-62.3065,-116.4678],[-470.0053,-62.2067,-118.6726],[-475.6213,-62.1069,-120.8774],[-481.2456,-62.4147,-123.0156],[-486.87,-62.7225,-125.1539],[-492.4943,-63.0304,-127.2921],[-497.1868,-62.6061,-129.1142],[-501.8793,-62.1817,-130.9363],[-506.5718,-61.7574,-132.7584],[-506.1475,-61.7824,-136.8331],[-508.6435,-61.6825,-141.2573],[-508.918,-61.6825,-146.3055],[-508.4438,-61.7824,-147.9029],[-509.3174,-61.8323,-149.8997],[-508.9679,-61.9072,-151.1727],[-511.5888,-61.6825,-150.2242],[-512.712,-61.6076,-152.4207],[-515.0332,-61.5328,-153.7685],[-514.6838,-61.6326,-157.5375],[-515.832,-61.408,-158.1615],[-516.9052,-61.0835,-160.982],[-517.5043,-61.0086,-165.5746],[-518.4029,-60.4345,-166.9974],[-518.3529,-60.2598,-169.4934],[-519.4761,-59.6608,-170.8911],[-519.8256,-59.4611,-172.3388],[-518.8022,-59.7606,-172.863],[-519.6259,-59.3862,-174.2108],[-518.7024,-59.5859,-175.334],[-519.6509,-59.1865,-176.3324],[-519.4013,-59.1865,-177.2809],[-520.799,-58.8121,-177.8051],[-520.5245,-58.9369,-179.128],[-519.6009,-59.2115,-179.8019],[-520.2499,-59.1616,-180.8502],[-520.0003,-59.1366,-182.4726],[-521.7225,-58.7872,-185.6425],[-521.5977,-58.7622,-186.8656],[-522.671,-58.6624,-187.6393],[-523.0704,-58.6873,-190.7594],[-524.0688,-58.5376,-191.608],[-523.8691,-58.6624,-193.6797],[-525.2419,-58.3628,-194.5034],[-524.5181,-58.5625,-196.2007],[-526.0906,-58.1881,-196.5751],[-525.9158,-58.263,-198.9463],[-524.7177,-58.5126,-200.968],[-526.2403,-58.238,-203.6388],[-525.8659,-58.2131,-206.4592],[-527.4883,-57.9385,-210.2282],[-526.2902,-58.0134,-211.4263],[-527.8627,-58.0134,-212.6244],[-526.6397,-58.1632,-214.4714],[-523.8441,-58.4876,-216.0689],[-524.6429,-58.912,-218.8644],[-523.4697,-59.1865,-220.0625],[-526.2653,-59.8105,-223.2574],[-525.4166,-60.1849,-224.2807],[-526.3402,-60.2848,-225.2791],[-524.9923,-60.5593,-225.4289],[-528.5117,-61.5577,-230.0465],[-528.5366,-62.5062,-232.1681],[-529.2605,-62.5312,-232.892],[-528.7114,-63.0054,-233.2664],[-529.3603,-63.4297,-234.14],[-530.9827,-63.6544,-234.8388],[-531.2323,-63.1801,-234.3147],[-532.4304,-63.904,-235.1883],[-534.4771,-66.0755,-239.3317],[-535.1261,-65.776,-238.3333],[-535.9997,-66.1504,-239.3317],[-537.7968,-66.4499,-239.1569],[-538.7204,-66.9491,-240.4299],[-540.0432,-67.1987,-240.38],[-540.3178,-67.5481,-243.4251],[-541.1165,-67.8477,-243.8245],[-542.9885,-68.921,-248.3173],[-545.8589,-69.4701,-247.3688],[-547.4564,-69.8694,-249.765],[-550.8509,-70.2688,-249.1909],[-552.4234,-70.6682,-252.6853],[-551.0257,-70.743,-254.8319],[-552.1988,-71.0426,-256.2795],[-551.8743,-71.2173,-257.5775],[-555.0193,-71.5418,-256.8037],[-554.1457,-71.5917,-257.9519],[-560.7102,-72.2656,-255.7055],[-561.6836,-73.5386,-259.6741],[-563.7054,-74.4122,-260.8972],[-565.0345,-75.136,-262.6693],[-566.3886,-74.6618,-260.5477],[-567.4432,-74.512,-260.0735],[-570.3136,-75.2608,-261.4213],[-570.9126,-75.8599,-262.5196],[-573.5833,-76.2093,-262.894],[-574.2822,-76.8333,-263.9423],[-575.7549,-76.7335,-263.5679],[-576.903,-77.4823,-264.7161],[-578.2009,-77.3824,-264.3417],[-578.7251,-78.0064,-265.39],[-579.3741,-77.7069,-264.766],[-579.8233,-78.281,-265.6645],[-580.697,-78.0563,-265.0905],[-580.9216,-78.5555,-265.9141],[-581.8701,-78.7552,-266.0889],[-582.7187,-78.5306,-265.4649],[-583.6422,-79.1546,-266.3884],[-584.2413,-78.88,-265.7145],[-584.7654,-79.3792,-266.5881],[-585.3894,-79.1546,-265.9141],[-586.9619,-79.8285,-266.7628],[-588.3098,-79.7536,-266.014],[-590.2317,-80.2778,-265.9641],[-591.1303,-80.8519,-267.0873],[-592.9523,-81.1514,-266.1637],[-593.152,-81.7754,-270.5317],[-594.1255,-82.1248,-272.7282],[-595.4484,-82.2247,-272.1542],[-595.8477,-82.4992,-275.6236],[-596.4717,-82.5492,-276.647],[-597.3453,-82.4992,-274.5503],[-598.4186,-82.649,-275.4489],[-598.768,-82.624,-272.1542],[-599.8413,-82.7738,-271.5551],[-600.2157,-82.7488,-267.9858],[-603.8599,-83.2231,-270.2322],[-605.9565,-83.2231,-269.134],[-608.0532,-83.3978,-270.1074],[-608.8769,-83.248,-268.5849],[-611.4228,-83.4727,-269.5084],[-612.1217,-83.3229,-267.7362],[-614.0935,-83.1981,-266.014],[-615.3166,-83.3479,-266.8127]],"expectedDistance":565.27,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-46284","objectiveId":"creature-46284","objectiveName":"Houndmaster Grebmar","checkpoints":[[-615.3166,-83.3479,-266.8127],[-618.7361,-83.1981,-262.6194],[-618.3118,-83.0983,-259.7989],[-620.2587,-83.3229,-257.7522],[-620.3585,-83.298,-254.9816],[-619.6846,-83.1981,-254.1579],[-620.658,-83.3728,-252.5355],[-619.0356,-82.674,-250.3391],[-620.2337,-83.0234,-249.141],[-619.2852,-82.624,-247.5934],[-620.658,-82.9485,-246.4453],[-621.0574,-82.7488,-245.2472],[-620.0091,-82.3994,-244.2488],[-621.1822,-82.2995,-243.0257],[-622.0308,-82.1747,-240.3051],[-619.6097,-82.2496,-239.107],[-620.2587,-82.5991,-235.3131],[-618.6363,-82.9485,-233.0916],[-617.1886,-82.8487,-233.2913],[-618.2868,-83.1732,-231.5441],[-617.3383,-83.3728,-229.9217],[-618.9358,-83.5226,-227.251],[-618.7361,-83.5975,-224.73],[-617.3883,-83.8221,-224.8798],[-617.9124,-83.7722,-223.5319],[-617.538,-83.7972,-220.4618],[-615.8657,-83.922,-219.4634],[-615.5911,-83.9968,-218.3902],[-612.7706,-83.9968,-218.9892],[-612.521,-84.1216,-216.5182],[-609.5258,-84.2464,-216.7178],[-608.7271,-84.3962,-215.5197],[-610.9236,-84.4461,-213.7226],[-608.5898,-84.4711,-210.7524],[-606.2561,-84.496,-207.7821],[-605.5946,-84.496,-203.8135],[-604.9332,-84.496,-199.8448],[-610.05,-84.496,-205.1863],[-614.6676,-84.3962,-199.8448],[-618.0747,-84.2589,-201.592],[-621.4817,-84.1216,-203.3392],[-622.6798,-84.3463,-200.4439],[-623.8779,-84.1965,-199.2707],[-625.4753,-83.872,-195.2771],[-625.5003,-84.0218,-192.7312],[-626.6484,-83.1232,-191.2336],[-625.5752,-84.1466,-189.8109],[-626.3988,-83.5975,-189.0122],[-625.5003,-84.2215,-186.4413],[-626.1492,-83.5476,-184.6441],[-625.7,-83.7472,-184.3197],[-626.3988,-83.1482,-183.9203],[-624.2273,-84.2964,-181.7238],[-623.0792,-84.2964,-177.6553],[-623.4785,-84.0468,-176.8566],[-622.8795,-84.0967,-175.9331],[-623.0542,-83.872,-175.2592],[-620.8577,-84.2215,-173.1375],[-617.3883,-84.3088,-174.8348],[-613.9188,-84.3962,-176.5321],[-609.3511,-84.3962,-172.2639]],"expectedDistance":163.03,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-47771","objectiveId":"creature-47771","objectiveName":"Pyromancer Loregrain","checkpoints":[[-609.3511,-84.3962,-172.2639],[-613.9188,-84.3962,-176.5321],[-617.3883,-84.3088,-174.8348],[-620.8577,-84.2215,-173.1375],[-623.0542,-83.872,-175.2592],[-622.4801,-84.3463,-176.7318],[-623.4785,-84.2964,-178.454],[-624.2273,-84.2964,-181.7238],[-626.3988,-83.1482,-183.9203],[-625.7,-83.7472,-184.3197],[-626.1492,-83.5476,-184.6441],[-625.5003,-84.2215,-186.4413],[-626.3988,-83.5975,-189.0122],[-625.5752,-84.1466,-189.8109],[-626.6484,-83.1232,-191.2336],[-625.5003,-84.0218,-192.7312],[-625.4753,-83.872,-195.2771],[-623.8779,-84.1965,-199.2707],[-622.6798,-84.3463,-200.4439],[-621.4817,-84.1216,-203.3392],[-618.0747,-84.2589,-201.592],[-614.6676,-84.3962,-199.8448],[-610.05,-84.496,-205.1863],[-604.9332,-84.496,-199.8448],[-605.5946,-84.496,-203.8135],[-606.2561,-84.496,-207.7821],[-608.5898,-84.4711,-210.7524],[-610.9236,-84.4461,-213.7226],[-608.7271,-84.3962,-215.5197],[-609.5258,-84.2464,-216.7178],[-612.521,-84.1216,-216.5182],[-612.7706,-83.9968,-218.9892],[-615.5911,-83.9968,-218.3902],[-615.8657,-83.922,-219.4634],[-617.538,-83.7972,-220.4618],[-617.9124,-83.7722,-223.5319],[-617.3883,-83.8221,-224.8798],[-618.7361,-83.5975,-224.73],[-618.9358,-83.5226,-227.251],[-617.3383,-83.3728,-229.9217],[-618.2868,-83.1732,-231.5441],[-617.1886,-82.8487,-233.2913],[-618.6363,-82.9485,-233.0916],[-620.2587,-82.5991,-235.3131],[-619.6097,-82.2496,-239.107],[-622.0308,-82.1747,-240.3051],[-621.1822,-82.2995,-243.0257],[-620.0091,-82.3994,-244.2488],[-621.0574,-82.7488,-245.2472],[-620.658,-82.9485,-246.4453],[-619.2852,-82.624,-247.5934],[-620.2337,-83.0234,-249.141],[-619.0356,-82.674,-250.3391],[-619.7595,-82.9984,-251.5871],[-617.8625,-82.4493,-252.3608],[-618.2369,-82.7239,-253.5589],[-616.9639,-82.3245,-253.509],[-616.7643,-82.5991,-256.8287],[-614.443,-82.4992,-257.7772],[-613.0452,-82.8487,-259.4495],[-612.2714,-83.0484,-261.4962],[-610.2746,-83.2231,-260.4479],[-609.2014,-83.4228,-261.646],[-608.3028,-83.5226,-260.5228],[-607.4791,-83.3728,-263.6927],[-605.9066,-83.248,-264.0921],[-604.7085,-83.0484,-266.638],[-603.0612,-83.0733,-266.4633],[-602.1876,-83.0484,-268.9343],[-600.2157,-82.7488,-267.9858],[-599.8413,-82.7738,-271.5551],[-598.768,-82.624,-272.1542],[-598.4186,-82.649,-275.4489],[-596.7213,-82.4493,-273.527],[-595.8477,-82.4992,-275.6236],[-595.4484,-82.2247,-272.1542],[-594.1255,-82.1248,-272.7282],[-593.152,-81.7754,-270.5317],[-592.9523,-81.1514,-266.1637],[-591.1303,-80.8519,-267.0873],[-590.2317,-80.2778,-265.9641],[-588.3098,-79.7536,-266.014],[-586.9619,-79.8285,-266.7628],[-585.3894,-79.1546,-265.9141],[-584.7654,-79.3792,-266.5881],[-584.2413,-78.88,-265.7145],[-583.6422,-79.1546,-266.3884],[-582.7187,-78.5306,-265.4649],[-581.8701,-78.7552,-266.0889],[-580.9216,-78.5555,-265.9141],[-580.697,-78.0563,-265.0905],[-579.8233,-78.281,-265.6645],[-579.3741,-77.7069,-264.766],[-578.7251,-78.0064,-265.39],[-578.2009,-77.3824,-264.3417],[-576.903,-77.4823,-264.7161],[-575.7549,-76.7335,-263.5679],[-574.2822,-76.8333,-263.9423],[-573.5833,-76.2093,-262.894],[-570.9126,-75.8599,-262.5196],[-570.3136,-75.2608,-261.4213],[-567.4432,-74.512,-260.0735],[-566.3886,-74.6618,-260.5477],[-565.0345,-75.136,-262.6693],[-563.7054,-74.4122,-260.8972],[-561.6836,-73.5386,-259.6741],[-560.7102,-72.2656,-255.7055],[-554.1457,-71.5917,-257.9519],[-555.0193,-71.5418,-256.8037],[-551.8743,-71.2173,-257.5775],[-552.1988,-71.0426,-256.2795],[-551.0257,-70.743,-254.8319],[-552.4234,-70.6682,-252.6853],[-550.8509,-70.2688,-249.1909],[-547.4564,-69.8694,-249.765],[-545.8589,-69.4701,-247.3688],[-542.9885,-68.921,-248.3173],[-541.1165,-67.8477,-243.8245],[-540.3178,-67.5481,-243.4251],[-540.0432,-67.1987,-240.38],[-538.7204,-66.9491,-240.4299],[-537.7968,-66.4499,-239.1569],[-535.9997,-66.1504,-239.3317],[-535.1261,-65.776,-238.3333],[-534.4771,-66.0755,-239.3317],[-532.4304,-63.904,-235.1883],[-531.2323,-63.1801,-234.3147],[-530.9827,-63.6544,-234.8388],[-529.3603,-63.4297,-234.14],[-528.7114,-63.0054,-233.2664],[-529.2605,-62.5312,-232.892],[-528.5366,-62.5062,-232.1681],[-528.5117,-61.5577,-230.0465],[-524.9923,-60.5593,-225.4289],[-529.7846,-59.6857,-224.3057],[-530.8579,-59.2364,-222.5335],[-530.7331,-59.2364,-221.2855],[-531.457,-59.1616,-220.0625],[-531.1325,-58.7372,-217.5914],[-532.6301,-58.1881,-215.1204],[-531.3571,-57.8387,-212.5495],[-532.9546,-57.6889,-211.7508],[-531.8563,-57.7638,-210.2033],[-533.4538,-57.5142,-208.456],[-536.0496,-57.015,-209.0052],[-536.0496,-56.7654,-206.584],[-536.9482,-56.6156,-205.4109],[-538.3459,-56.416,-205.2861],[-538.3459,-56.4409,-202.6653],[-540.6423,-56.0416,-202.216],[-541.2413,-55.9667,-200.7683],[-542.2397,-55.742,-200.0445],[-543.8372,-55.143,-199.6451],[-545.4346,-54.8185,-200.4688],[-547.0321,-54.3443,-200.4688],[-548.5047,-53.7951,-198.9213],[-550.5015,-53.3958,-199.3207],[-553.2222,-52.4223,-197.7232],[-554.2954,-52.4723,-198.9463],[-555.219,-52.4972,-198.0227],[-555.9927,-52.4972,-199.9447],[-557.4404,-52.4972,-197.6733],[-559.6369,-52.5471,-199.6701],[-565.1843,-52.7219,-199.4455],[-564.2607,-52.7219,-195.7015],[-567.6616,-52.8467,-194.6032],[-565.7147,-52.7219,-188.3632],[-571.9859,-52.9215,-186.7657],[-572.4851,-52.7967,-180.9001],[-570.014,-52.5971,-175.8332],[-572.6099,-52.5971,-169.2188],[-577.3523,-52.7219,-166.6729],[-580.1978,-52.7219,-160.7074],[-585.4643,-52.7219,-156.9884],[-584.7904,-52.5971,-153.8684],[-585.664,-52.5222,-151.8466],[-587.6608,-52.4723,-149.7749],[-584.8154,-52.4723,-148.502],[-588.5594,-52.5971,-146.8047],[-588.1351,-52.9964,-145.332],[-588.9587,-53.3459,-143.8095],[-587.6608,-53.0963,-142.3867],[-587.7856,-52.7468,-139.4602],[-584.6406,-52.3974,-136.9829],[-585.5642,-52.2227,-135.2544],[-582.8685,-51.8233,-133.5322],[-582.8186,-51.2492,-131.136],[-585.5142,-51.1494,-130.512],[-585.5142,-50.126,-126.119],[-582.7936,-49.4771,-123.598],[-585.5142,-48.3788,-118.7308],[-582.7936,-47.7548,-116.1849],[-584.6656,-46.6566,-111.4425],[-582.8186,-46.0825,-109.0962],[-583.7421,-45.4834,-106.2258],[-584.6656,-45.4086,-105.6268],[-583.7171,-45.3337,-104.5785],[-584.6656,-45.3337,-104.0543],[-583.6672,-45.3337,-103.5301],[-585.6141,-45.3337,-102.8562],[-586.6624,-45.3337,-96.0421],[-589.2583,-45.3337,-95.3682],[-589.7824,-45.3337,-89.1531],[-590.7808,-45.3337,-95.3682],[-593.8509,-45.3337,-95.3183],[-596.8461,-45.3337,-101.9327],[-594.3002,-45.3337,-102.5317],[-596.7712,-45.3087,-105.5519],[-594.3002,-45.2588,-108.2226],[-596.7712,-44.6348,-111.8668],[-594.3002,-43.9609,-113.0399],[-594.5748,-43.0873,-114.6374],[-592.1037,-42.3884,-115.8105],[-594.5748,-41.8393,-116.8588],[-596.7712,-40.4415,-119.3049],[-594.3002,-39.3682,-121.2019],[-596.7712,-38.3948,-123.7728],[-594.3002,-38.3948,-124.5216],[-596.8461,-38.4197,-125.7696],[-594.3252,-38.3948,-126.2937],[-592.7277,-38.3948,-129.7632],[-596.9959,-38.3948,-130.2374],[-598.6682,-38.3449,-133.1078],[-592.8525,-38.3449,-135.9782],[-595.3236,-38.3199,-140.1778],[-590.5811,-38.3199,-144.7767],[-588.0602,-38.3449,-141.1013],[-588.0602,-38.3199,-145.5005],[-585.1898,-38.3449,-142.1808],[-583.5174,-38.3199,-146.9295],[-579.9232,-38.3449,-144.0591],[-578.9248,-38.3199,-148.4021],[-577.1776,-38.3199,-149.2008],[-575.3805,-38.3449,-145.981],[-574.6566,-38.3199,-150.7983],[-571.1372,-38.3199,-148.3272],[-569.2652,-38.2949,-154.3426],[-565.4401,-38.2949,-152.3208],[-564.7599,-38.2949,-156.7138],[-565.7583,-38.2949,-160.7823],[-560.835,-38.2949,-160.5077],[-560.7102,-38.2949,-162.6543],[-555.6682,-38.2949,-163.8524],[-558.6634,-38.2949,-167.0473],[-553.7962,-38.2949,-167.9708],[-556.442,-38.2949,-171.1158],[-555.2439,-38.2949,-173.3123],[-551.1754,-38.2949,-173.5868],[-553.8462,-38.2949,-178.7286],[-549.3783,-38.2949,-181.3993],[-552.723,-38.2949,-186.4662],[-548.6545,-38.3199,-188.8624],[-552.4484,-38.3199,-191.608],[-549.3783,-38.3449,-195.9261],[-554.1706,-38.3199,-199.9197],[-551.4999,-38.3449,-204.7869],[-555.843,-38.3199,-205.5856],[-552.723,-38.3449,-207.9818],[-557.5153,-38.3199,-209.0301],[-555.5684,-38.3199,-213.2983],[-561.7647,-38.2949,-215.6445],[-560.4419,-38.2949,-220.1873],[-565.6647,-38.2949,-220.2622],[-565.4651,-38.2949,-225.2542],[-569.2652,-38.2949,-223.8564],[-570.5132,-38.2949,-224.5803],[-571.5116,-38.2949,-229.722],[-574.7065,-38.2949,-226.8017],[-575.655,-38.2949,-231.6689],[-578.6502,-38.2949,-228.8484],[-579.9731,-38.2949,-233.6408],[-582.2944,-38.2949,-230.6456],[-583.2429,-38.2949,-230.995],[-583.5174,-38.2949,-235.0635],[-585.3395,-38.2949,-235.8622],[-587.8605,-38.2949,-232.1182],[-591.0554,-38.3074,-234.5768],[-594.2503,-38.3199,-237.0353],[-592.6029,-38.3199,-241.7029],[-592.6029,-38.3449,-244.5733],[-594.2004,-38.3948,-247.3938],[-598.4685,-38.3948,-247.868],[-596.946,-38.3948,-251.2875],[-594.3252,-38.4197,-251.8866],[-595.4484,-38.3698,-252.86],[-592.5031,-38.4197,-253.9832],[-592.5031,-39.3932,-257.278],[-594.7744,-40.1669,-259.3496],[-594.1005,-41.2652,-262.22],[-596.6464,-41.39,-262.5695],[-596.6464,-42.014,-264.1669],[-599.1924,-42.4134,-265.39],[-596.6464,-42.8127,-266.613],[-594.3751,-42.9874,-269.4834],[-596.921,-43.0374,-271.8796],[-596.921,-43.0873,-274.7999],[-594.3751,-43.0873,-275.3241],[-597.4452,-43.0873,-275.9231],[-594.3751,-43.0873,-275.998],[-597.4452,-43.0873,-282.3878],[-593.8509,-43.0873,-288.7776],[-591.7917,-43.0873,-285.5827],[-589.7325,-43.0873,-282.3878],[-586.9869,-43.0873,-288.7776],[-584.2912,-43.0873,-285.1459],[-581.5955,-43.0873,-281.5142],[-579.1619,-43.0873,-284.784],[-576.7283,-43.0873,-288.0537],[-575.1683,-43.0873,-284.422],[-573.6083,-43.0873,-280.7903],[-570.897,-43.0873,-283.4611],[-568.1857,-43.0873,-286.1318],[-564.5135,-43.0873,-284.0975],[-560.8412,-43.0873,-282.0633],[-565.6647,-43.0873,-276.647],[-561.8677,-43.0873,-276.5097],[-558.0706,-43.0873,-276.3724],[-560.1049,-43.0873,-272.9404],[-562.1391,-43.0873,-269.5084],[-559.5277,-43.0873,-266.613],[-556.9162,-43.0873,-263.7176],[-549.7028,-43.0873,-264.9157],[-549.5655,-43.0873,-260.9845],[-549.4282,-43.0873,-257.0533],[-544.3114,-43.0873,-252.5855],[-537.1728,-43.0873,-254.133],[-535.6752,-43.0873,-249.0037],[-534.1776,-43.0873,-243.8744],[-529.3603,-43.0873,-243.4002]],"expectedDistance":1065.05,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-05-creature-47733","objectiveId":"creature-47733","objectiveName":"Lord Incendius","checkpoints":[[-529.3603,-43.0873,-243.4002],[-534.1776,-43.0873,-243.8744],[-535.6752,-43.0873,-249.0037],[-537.1728,-43.0873,-254.133],[-544.3114,-43.0873,-252.5855],[-549.4282,-43.0873,-257.0533],[-549.5655,-43.0873,-260.9845],[-549.7028,-43.0873,-264.9157],[-556.9162,-43.0873,-263.7176],[-559.5277,-43.0873,-266.613],[-562.1391,-43.0873,-269.5084],[-560.1049,-43.0873,-272.9404],[-558.0706,-43.0873,-276.3724],[-561.8677,-43.0873,-276.5097],[-565.6647,-43.0873,-276.647],[-560.8412,-43.0873,-282.0633],[-564.5135,-43.0873,-284.0975],[-568.1857,-43.0873,-286.1318],[-570.897,-43.0873,-283.4611],[-573.6083,-43.0873,-280.7903],[-575.1683,-43.0873,-284.422],[-576.7283,-43.0873,-288.0537],[-579.1619,-43.0873,-284.784],[-581.5955,-43.0873,-281.5142],[-584.2912,-43.0873,-285.1459],[-586.9869,-43.0873,-288.7776],[-589.7325,-43.0873,-282.3878],[-591.7917,-43.0873,-285.5827],[-593.8509,-43.0873,-288.7776],[-597.4452,-43.0873,-282.3878],[-603.6602,-43.0124,-286.5312],[-606.0564,-42.9625,-291.8477],[-606.2561,-42.9625,-293.4451],[-607.529,-43.0124,-294.3936],[-612.0218,-43.0374,-293.6198],[-616.8391,-43.0124,-294.2688],[-619.5598,-42.9375,-293.7446],[-624.3147,-42.975,-293.9568],[-629.0696,-43.0124,-294.1689],[-631.7403,-42.9375,-293.6947],[-632.539,-43.0623,-291.7229],[-634.9352,-43.0374,-290.1004],[-638.7291,-43.0873,-290.4998],[-640.8507,-43.1372,-286.6684],[-642.9723,-43.1871,-282.8371],[-643.4965,-43.1372,-286.3814],[-643.821,-43.1622,-283.2614],[-644.6197,-43.1372,-286.2566],[-646.0175,-43.1622,-286.1817],[-646.8162,-43.1622,-283.0367],[-652.2325,-43.1871,-286.5062],[-653.0562,-43.1871,-281.9135],[-657.3993,-43.1871,-280.1913],[-662.3913,-43.1871,-285.1334],[-663.9887,-43.1622,-279.7171],[-667.2585,-43.1622,-284.6592],[-668.8559,-43.1622,-279.3926],[-673.0492,-43.1622,-284.0601],[-675.5702,-43.1622,-278.8435],[-681.3609,-43.1622,-283.1615],[-684.5059,-43.1622,-278.1695],[-690.3715,-43.1622,-282.3129],[-692.9674,-43.1622,-277.5954],[-697.1607,-43.1622,-281.6639],[-698.7082,-43.1622,-277.1961],[-702.9264,-43.1622,-281.0649],[-705.5223,-43.1622,-276.6719],[-710.065,-43.0873,-277.6204],[-711.5377,-43.0623,-274.0761],[-713.4097,-42.9874,-274.0012],[-713.8589,-42.9126,-273.2774],[-714.5079,-42.8377,-278.1695],[-720.7042,-42.8377,-276.1977],[-726.5012,-42.8127,-280.1913],[-732.7225,-42.7878,-278.8684],[-733.9456,-42.7878,-275.1244],[-734.7443,-42.7878,-277.5705],[-735.9424,-42.7878,-274.9746],[-737.0656,-42.7878,-277.3708],[-740.2105,-42.7878,-276.9215],[-742.1325,-42.7878,-274.4006],[-744.7283,-42.7878,-274.3257],[-745.0778,-42.7878,-276.3225],[-747.2742,-42.7878,-274.0511],[-748.9965,-42.7878,-277.246],[-752.4659,-42.8127,-279.6422],[-755.2365,-42.8127,-276.6095],[-758.0071,-42.8127,-273.5769],[-760.84,-42.8252,-276.4722],[-763.673,-42.8377,-279.3676],[-769.8631,-42.8377,-277.8451],[-772.8583,-42.8377,-271.5801],[-770.7367,-42.8377,-265.8393],[-773.2327,-43.0124,-267.0373],[-771.3357,-43.2121,-265.4649],[-776.6023,-43.3369,-261.1468],[-776.1406,-43.3119,-256.6415],[-775.6788,-43.287,-252.1362],[-781.3447,-43.237,-247.5934],[-779.323,-43.237,-244.124],[-783.1918,-43.237,-245.1973],[-781.7691,-43.237,-238.6078],[-788.708,-43.237,-237.9339],[-788.5707,-43.237,-233.803],[-788.4334,-43.237,-229.6721],[-792.3396,-43.237,-229.8344],[-796.2459,-43.237,-229.9966],[-798.3925,-43.237,-227.1262],[-794.0494,-43.237,-221.9345],[-799.9899,-43.237,-219.0641],[-806.6043,-43.237,-221.3354],[-807.1285,-43.237,-227.0513],[-810.6479,-43.237,-225.379],[-811.9707,-43.237,-226.9015],[-810.4981,-43.237,-229.2977],[-813.7679,-43.237,-228.2494],[-814.0924,-43.2121,-229.4475],[-815.8895,-43.1871,-227.9998],[-816.5384,-43.262,-228.4241],[-818.1608,-44.2604,-229.4724],[-818.1109,-45.159,-232.1681],[-819.309,-46.5318,-234.5643],[-821.6553,-47.5302,-234.3646],[-823.5023,-48.0543,-233.1915],[-825.6738,-49.2025,-234.764],[-824.8501,-49.2524,-236.9854],[-826.0482,-49.3023,-236.7358],[-825.3993,-49.3023,-239.6561],[-827.5209,-49.3023,-237.7841],[-831.5145,-49.3023,-238.508],[-831.2649,-49.3023,-243.9742],[-837.7795,-49.3023,-245.7214],[-842.2972,-49.3023,-242.0523],[-846.0163,-49.3023,-246.5202],[-845.4921,-49.3023,-247.7182],[-846.9148,-49.4271,-247.244],[-846.9897,-49.5519,-248.5918],[-848.0131,-49.7516,-248.467],[-847.6636,-49.8515,-249.5403],[-848.7369,-49.9513,-248.7915],[-848.5123,-49.9763,-249.8398],[-850.0598,-49.9763,-248.8414],[-847.9382,-49.9763,-252.7352],[-852.4061,-49.9513,-252.261],[-850.6713,-49.9513,-256.7288],[-848.9366,-49.9513,-261.1967],[-855.4762,-49.9263,-264.5913],[-856.7242,-49.9263,-271.8047],[-851.1081,-49.8764,-275.5238],[-844.1193,-49.9263,-276.7718],[-845.3424,-50.0137,-280.7404],[-846.5654,-50.1011,-284.7091],[-850.0598,-49.9513,-286.0819],[-853.4294,-49.9513,-292.5465],[-852.1814,-50.1011,-296.1657],[-853.9286,-50.0761,-299.1859],[-856.2499,-49.9263,-298.8614],[-856.849,-49.9263,-299.5853],[-856.225,-50.0262,-301.8317],[-859.0205,-49.9513,-305.4759],[-861.9658,-49.8515,-305.6007],[-863.1888,-50.0012,-310.4179],[-866.6583,-50.0387,-312.6269],[-870.1277,-50.0761,-314.8359],[-872.3242,-49.9263,-313.1885],[-877.8903,-49.9263,-316.2836],[-878.9885,-50.1011,-319.6781],[-881.4097,-49.9263,-317.7562],[-881.8839,-50.1011,-321.0509],[-884.33,-49.9263,-318.9543],[-885.6529,-50.0761,-322.1991],[-887.45,-50.0511,-321.9745],[-887.6746,-50.2009,-324.8199],[-888.673,-50.126,-324.8948],[-889.4219,-50.0511,-323.3223],[-890.6699,-49.9763,-323.6967],[-891.3438,-49.9763,-322.1242],[-892.5918,-49.9763,-323.6218],[-893.0411,-49.9263,-319.3786],[-893.4903,-49.8764,-315.1354],[-894.2391,-49.8265,-318.3053],[-894.5636,-49.8015,-318.1056],[-894.6385,-49.6518,-325.3441],[-896.8849,-49.6019,-325.2193],[-896.8849,-49.502,-326.018],[-898.083,-49.5519,-326.4174],[-898.2328,-49.6019,-327.1662],[-896.6353,-49.6019,-327.4906],[-896.5604,-49.6019,-328.2145],[-898.2328,-49.6019,-328.6138],[-898.7819,-49.7017,-332.6324],[-896.236,-49.8015,-336.1767],[-895.3873,-49.9014,-340.2452],[-898.4574,-49.9014,-340.8443],[-899.8552,-49.9014,-344.5633],[-895.3374,-49.9014,-345.4369],[-893.8647,-49.9014,-348.9813],[-899.5307,-49.9014,-352.4507],[-893.4654,-49.9014,-353.5989],[-896.236,-49.8515,-357.0434],[-899.9051,-49.8764,-359.5394],[-897.1345,-49.8265,-362.26],[-893.1908,-49.7516,-362.5595],[-888.049,-49.6268,-365.0555],[-889.9959,-49.6268,-366.8776],[-889.6715,-49.3273,-368.3253],[-892.1675,-49.4521,-370.7714],[-891.5684,-49.2025,-372.3439],[-892.8913,-49.502,-373.2175],[-897.484,-49.8015,-372.1442],[-899.2312,-49.8015,-375.3641],[-903.2997,-49.8265,-376.3625],[-907.3681,-49.8515,-377.3609],[-907.443,-49.9014,-375.3641],[-909.6894,-49.9014,-377.885],[-909.8891,-49.7267,-379.6073],[-910.1387,-49.6518,-378.9333],[-911.2869,-48.8281,-379.9317],[-915.9461,-48.7532,-384.6159],[-920.6053,-48.6783,-389.3001],[-925.2645,-48.6035,-393.9843],[-929.8072,-50.4588,-398.6019],[-934.35,-52.3142,-403.2195],[-938.8927,-54.1695,-407.8371],[-941.1641,-54.7436,-405.8902],[-944.6835,-56.2995,-402.2461],[-948.2028,-57.8553,-398.6019],[-951.7222,-59.4112,-394.9577],[-955.9072,-59.4694,-390.8726],[-960.0921,-59.5276,-386.7874],[-964.2771,-59.5859,-382.7023],[-968.72,-61.3996,-378.2012],[-973.1629,-63.2134,-373.7],[-977.6058,-65.0272,-369.1989],[-973.1629,-66.791,-364.8642],[-968.72,-68.5549,-360.5295],[-964.2771,-70.3187,-356.1947],[-960.2419,-70.377,-352.1429],[-956.2067,-70.4352,-348.091],[-952.1715,-70.4934,-344.0392],[-951.822,-70.743,-343.2404],[-950.9983,-71.1674,-343.1406],[-951.2729,-71.4669,-342.4667],[-949.5257,-71.6915,-340.9192],[-950.7238,-71.6915,-341.1688],[-949.4508,-71.6915,-337.6494],[-953.0451,-71.6416,-335.3031],[-953.1699,-71.6416,-330.1863],[-950.9734,-71.6915,-328.0647],[-949.3759,-71.6915,-329.4625],[-947.8284,-71.6915,-327.7153],[-947.6287,-71.6915,-324.77],[-943.2358,-71.6915,-323.0977],[-943.0361,-71.6915,-320.1773],[-941.6383,-71.6915,-318.2554],[-939.8412,-71.6915,-319.778],[-935.7727,-71.6915,-319.2538],[-937.1205,-71.6915,-313.6628],[-934.1253,-71.6915,-308.4711],[-930.0943,-71.6915,-308.5709],[-926.0632,-71.6915,-308.6707],[-923.692,-71.6915,-305.1264],[-921.3208,-71.6915,-301.5821],[-922.2443,-71.7165,-296.64],[-918.5003,-71.729,-296.1657],[-914.7563,-71.7414,-295.6915],[-917.0277,-71.7664,-292.896],[-916.3038,-71.7664,-292.247],[-913.0341,-71.7664,-293.9942],[-914.6565,-71.7664,-290.6745],[-909.989,-71.7664,-290.7244],[-910.7378,-71.7664,-286.656],[-907.2683,-71.7914,-283.511],[-903.3246,-71.8163,-284.0351],[-904.4478,-71.8413,-278.7187],[-898.4574,-71.7914,-274.75],[-898.4574,-71.7914,-270.9561],[-898.4574,-71.7914,-267.1621],[-892.7166,-71.7914,-263.493]],"expectedDistance":1136.28,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-06-creature-47774","objectiveId":"creature-47774","objectiveName":"Warder Stilgiss","checkpoints":[[-892.7166,-71.7914,-263.493],[-898.4574,-71.7914,-267.1621],[-898.4574,-71.7914,-270.9561],[-898.4574,-71.7914,-274.75],[-904.4478,-71.8413,-278.7187],[-903.3246,-71.8163,-284.0351],[-907.2683,-71.7914,-283.511],[-910.7378,-71.7664,-286.656],[-909.989,-71.7664,-290.7244],[-914.6565,-71.7664,-290.6745],[-913.0341,-71.7664,-293.9942],[-916.3038,-71.7664,-292.247],[-917.0277,-71.7664,-292.896],[-914.7563,-71.7414,-295.6915],[-918.5003,-71.729,-296.1657],[-922.2443,-71.7165,-296.64],[-921.3208,-71.6915,-301.5821],[-923.692,-71.6915,-305.1264],[-926.0632,-71.6915,-308.6707],[-930.0943,-71.6915,-308.5709],[-934.1253,-71.6915,-308.4711],[-937.1205,-71.6915,-313.6628],[-935.7727,-71.6915,-319.2538],[-939.8412,-71.6915,-319.778],[-941.6383,-71.6915,-318.2554],[-943.0361,-71.6915,-320.1773],[-943.2358,-71.6915,-323.0977],[-947.6287,-71.6915,-324.77],[-947.8284,-71.6915,-327.7153],[-949.3759,-71.6915,-329.4625],[-950.9734,-71.6915,-328.0647],[-953.1699,-71.6416,-330.1863],[-953.0451,-71.6416,-335.3031],[-949.4508,-71.6915,-337.6494],[-950.7238,-71.6915,-341.1688],[-949.5257,-71.6915,-340.9192],[-951.2729,-71.4669,-342.4667],[-950.9983,-71.1674,-343.1406],[-951.822,-70.743,-343.2404],[-952.1715,-70.4934,-344.0392],[-956.398,-70.4019,-348.1326],[-960.6246,-70.3104,-352.2261],[-964.8512,-70.2189,-356.3195],[-967.784,-68.896,-359.5144],[-970.7168,-67.5731,-362.7093],[-974.0365,-66.2877,-365.7544],[-977.3562,-65.0022,-368.7996],[-977.3562,-65.0022,-369.798],[-972.9965,-63.1968,-374.0994],[-968.6368,-61.3913,-378.4009],[-964.2771,-59.5859,-382.7023],[-960.0921,-59.5276,-386.7874],[-955.9072,-59.4694,-390.8726],[-951.7222,-59.4112,-394.9577],[-948.2028,-57.8553,-398.6019],[-944.6835,-56.2995,-402.2461],[-941.1641,-54.7436,-405.8902],[-938.8927,-54.1695,-407.8371],[-934.35,-52.3142,-403.2195],[-929.8072,-50.4588,-398.6019],[-925.2645,-48.6035,-393.9843],[-920.6053,-48.6783,-389.3001],[-915.9461,-48.7532,-384.6159],[-911.2869,-48.8281,-379.9317],[-910.1387,-49.6518,-378.9333],[-909.8891,-49.7267,-379.6073],[-909.6894,-49.9014,-377.885],[-907.443,-49.9014,-375.3641],[-907.3681,-49.8515,-377.3609],[-903.2997,-49.8265,-376.3625],[-899.2312,-49.8015,-375.3641],[-897.484,-49.8015,-372.1442],[-892.8913,-49.502,-373.2175],[-891.5684,-49.2025,-372.3439],[-892.1675,-49.4521,-370.7714],[-889.6715,-49.3273,-368.3253],[-889.9959,-49.6268,-366.8776],[-888.049,-49.6268,-365.0555],[-893.1908,-49.7516,-362.5595],[-897.1345,-49.8265,-362.26],[-899.9051,-49.8764,-359.5394],[-896.236,-49.8515,-357.0434],[-893.4654,-49.9014,-353.5989],[-899.5307,-49.9014,-352.4507],[-893.8647,-49.9014,-348.9813],[-895.3374,-49.9014,-345.4369],[-899.8552,-49.9014,-344.5633],[-898.4574,-49.9014,-340.8443],[-895.3873,-49.9014,-340.2452],[-896.236,-49.8015,-336.1767],[-898.7819,-49.7017,-332.6324],[-898.2328,-49.6019,-328.6138],[-896.5604,-49.6019,-328.2145],[-896.6353,-49.6019,-327.4906],[-898.2328,-49.6019,-327.1662],[-898.083,-49.5519,-326.4174],[-896.8849,-49.502,-326.018],[-896.8849,-49.6019,-325.2193],[-894.6385,-49.6518,-325.3441],[-894.5636,-49.8015,-318.1056],[-894.2391,-49.8265,-318.3053],[-893.4903,-49.8764,-315.1354],[-893.0411,-49.9263,-319.3786],[-892.5918,-49.9763,-323.6218],[-891.3438,-49.9763,-322.1242],[-890.6699,-49.9763,-323.6967],[-889.4219,-50.0511,-323.3223],[-888.673,-50.126,-324.8948],[-887.6746,-50.2009,-324.8199],[-887.45,-50.0511,-321.9745],[-885.6529,-50.0761,-322.1991],[-884.33,-49.9263,-318.9543],[-881.8839,-50.1011,-321.0509],[-881.4097,-49.9263,-317.7562],[-878.9885,-50.1011,-319.6781],[-877.8903,-49.9263,-316.2836],[-872.3242,-49.9263,-313.1885],[-870.1277,-50.0761,-314.8359],[-866.6583,-50.0387,-312.6269],[-863.1888,-50.0012,-310.4179],[-861.9658,-49.8515,-305.6007],[-859.0205,-49.9513,-305.4759],[-858.9955,-50.0511,-308.7706],[-857.5229,-50.0511,-307.0234],[-858.3965,-50.0511,-308.5959],[-857.3981,-50.0511,-307.9219],[-857.7974,-50.0511,-308.9952],[-857.0486,-50.0511,-309.9936],[-855.9754,-50.0511,-308.9952],[-854.8272,-50.1011,-311.0669],[-851.9817,-50.1759,-311.2666],[-850.7337,-50.2508,-314.786],[-848.8617,-50.2758,-314.786],[-849.8601,-50.2758,-316.5082],[-848.3126,-50.2758,-315.1853],[-849.935,-50.2758,-317.1821],[-847.7884,-50.2508,-318.8544],[-847.5888,-50.2259,-322.4487],[-845.0428,-50.3007,-324.0461],[-845.4422,-50.5004,-326.043],[-844.6435,-50.5004,-327.6404],[-844.6435,-50.4006,-329.6372],[-843.4454,-50.3007,-331.2346],[-838.6531,-50.3007,-334.4295],[-837.3801,-50.2009,-336.8257],[-836.182,-50.2009,-336.8257],[-834.9839,-50.2009,-335.6276],[-831.4396,-50.2259,-334.754],[-830.2914,-50.2259,-336.4263],[-827.2213,-50.2508,-333.4311],[-828.694,-50.2259,-335.1783],[-825.4991,-50.2259,-335.2532],[-825.3743,-50.2009,-338.3233],[-822.1794,-50.2009,-338.3982],[-823.6521,-50.2009,-340.1204],[-821.3058,-50.151,-340.4699],[-820.9813,-50.1011,-343.1156],[-822.6037,-50.1011,-344.2888]],"expectedDistance":549.49,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-07-creature-47631","objectiveId":"creature-47631","objectiveName":"Fineous Darkvire","checkpoints":[[-822.6037,-50.1011,-344.2888],[-820.9813,-50.1011,-343.1156],[-821.3058,-50.151,-340.4699],[-823.6521,-50.2009,-340.1204],[-822.1794,-50.2009,-338.3982],[-825.3743,-50.2009,-338.3233],[-825.4991,-50.2259,-335.2532],[-828.694,-50.2259,-335.1783],[-827.2213,-50.2508,-333.4311],[-830.2914,-50.2259,-336.4263],[-831.4396,-50.2259,-334.754],[-834.9839,-50.2009,-335.6276],[-836.182,-50.2009,-336.8257],[-837.3801,-50.2009,-336.8257],[-838.6531,-50.3007,-334.4295],[-843.4454,-50.3007,-331.2346],[-844.6435,-50.4006,-329.6372],[-844.6435,-50.5004,-327.6404],[-845.4422,-50.5004,-326.043],[-845.0428,-50.3007,-324.0461],[-847.5888,-50.2259,-322.4487],[-847.7884,-50.2508,-318.8544],[-849.935,-50.2758,-317.1821],[-848.3126,-50.2758,-315.1853],[-849.8601,-50.2758,-316.5082],[-848.8617,-50.2758,-314.786],[-853.5792,-50.1759,-314.5863],[-855.9754,-50.0511,-308.9952],[-857.0486,-50.0511,-309.9936],[-857.7974,-50.0511,-308.9952],[-857.3981,-50.0511,-307.9219],[-858.3965,-50.0511,-308.5959],[-857.5229,-50.0511,-307.0234],[-858.9955,-50.0511,-308.7706],[-859.0205,-49.9513,-305.4759],[-861.9658,-49.8515,-305.6007],[-863.1888,-50.0012,-310.4179],[-865.9843,-50.0511,-312.4896],[-870.1277,-50.0761,-314.8359],[-872.3242,-49.9263,-313.1885],[-877.8903,-49.9263,-316.2836],[-878.9885,-50.1011,-319.6781],[-881.4097,-49.9263,-317.7562],[-881.8839,-50.1011,-321.0509],[-884.33,-49.9263,-318.9543],[-885.6529,-50.0761,-322.1991],[-887.45,-50.0511,-321.9745],[-887.6746,-50.2009,-324.8199],[-888.673,-50.126,-324.8948],[-889.4219,-50.0511,-323.3223],[-890.6699,-49.9763,-323.6967],[-891.3438,-49.9763,-322.1242],[-892.5918,-49.9763,-323.6218],[-893.0411,-49.9263,-319.3786],[-893.4903,-49.8764,-315.1354],[-894.2391,-49.8265,-318.3053],[-894.5636,-49.8015,-318.1056],[-894.6385,-49.6518,-325.3441],[-896.8849,-49.6019,-325.2193],[-896.8849,-49.502,-326.018],[-898.083,-49.5519,-326.4174],[-898.2328,-49.6019,-327.1662],[-896.6353,-49.6019,-327.4906],[-896.5604,-49.6019,-328.2145],[-898.2328,-49.6019,-328.6138],[-898.7819,-49.7017,-332.6324],[-896.236,-49.8015,-336.1767],[-895.3873,-49.9014,-340.2452],[-898.4574,-49.9014,-340.8443],[-899.8552,-49.9014,-344.5633],[-895.3374,-49.9014,-345.4369],[-893.8647,-49.9014,-348.9813],[-899.5307,-49.9014,-352.4507],[-893.4654,-49.9014,-353.5989],[-896.236,-49.8515,-357.0434],[-899.9051,-49.8764,-359.5394],[-897.1345,-49.8265,-362.26],[-893.1908,-49.7516,-362.5595],[-888.049,-49.6268,-365.0555],[-889.9959,-49.6268,-366.8776],[-889.6715,-49.3273,-368.3253],[-892.1675,-49.4521,-370.7714],[-891.5684,-49.2025,-372.3439],[-892.8913,-49.502,-373.2175],[-897.484,-49.8015,-372.1442],[-899.2312,-49.8015,-375.3641],[-903.2997,-49.8265,-376.3625],[-907.3681,-49.8515,-377.3609],[-907.443,-49.9014,-375.3641],[-909.6894,-49.9014,-377.885],[-909.8891,-49.7267,-379.6073],[-910.1387,-49.6518,-378.9333],[-911.2869,-48.8281,-379.9317],[-915.9461,-48.7532,-384.6159],[-920.6053,-48.6783,-389.3001],[-925.2645,-48.6035,-393.9843],[-929.8072,-50.4588,-398.6019],[-934.35,-52.3142,-403.2195],[-938.8927,-54.1695,-407.8371],[-941.1641,-54.7436,-405.8902],[-944.6835,-56.2995,-402.2461],[-948.2028,-57.8553,-398.6019],[-951.7222,-59.4112,-394.9577],[-955.9072,-59.4694,-390.8726],[-960.0921,-59.5276,-386.7874],[-964.2771,-59.5859,-382.7023],[-968.72,-61.3996,-378.2012],[-973.1629,-63.2134,-373.7],[-977.6058,-65.0272,-369.1989],[-973.1629,-66.791,-364.8642],[-968.72,-68.5549,-360.5295],[-964.2771,-70.3187,-356.1947],[-960.2336,-70.3853,-352.0097],[-956.19,-70.4518,-347.8248],[-952.1465,-70.5184,-343.6398],[-950.9983,-71.1674,-343.1406],[-951.2729,-71.4669,-342.4667],[-949.5257,-71.6915,-340.9192],[-950.7238,-71.6915,-341.1688],[-949.4508,-71.6915,-337.6494],[-953.0451,-71.6416,-335.3031],[-958.5613,-71.3421,-336.9006],[-958.3616,-71.4669,-339.5463],[-956.0403,-71.6416,-343.2155],[-959.5846,-71.5917,-343.3153]],"expectedDistance":436.24,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-08-creature-45885","objectiveId":"creature-45885","objectiveName":"Bael'Gar","checkpoints":[[-959.5846,-71.5917,-343.3153],[-956.0403,-71.6416,-343.2155],[-958.3616,-71.4669,-339.5463],[-958.5613,-71.3421,-336.9006],[-953.0451,-71.6416,-335.3031],[-953.1699,-71.6416,-330.1863],[-950.9734,-71.6915,-328.0647],[-949.3759,-71.6915,-329.4625],[-947.8284,-71.6915,-327.7153],[-947.6287,-71.6915,-324.77],[-943.2358,-71.6915,-323.0977],[-943.0361,-71.6915,-320.1773],[-941.6383,-71.6915,-318.2554],[-939.8412,-71.6915,-319.778],[-935.7727,-71.6915,-319.2538],[-937.1205,-71.6915,-313.6628],[-934.1253,-71.6915,-308.4711],[-930.0943,-71.6915,-308.5709],[-926.0632,-71.6915,-308.6707],[-923.692,-71.6915,-305.1264],[-921.3208,-71.6915,-301.5821],[-922.2443,-71.7165,-296.64],[-918.5003,-71.729,-296.1657],[-914.7563,-71.7414,-295.6915],[-917.0277,-71.7664,-292.896],[-916.3038,-71.7664,-292.247],[-913.0341,-71.7664,-293.9942],[-914.6565,-71.7664,-290.6745],[-909.989,-71.7664,-290.7244],[-910.7378,-71.7664,-286.656],[-907.2683,-71.7914,-283.511],[-903.3246,-71.8163,-284.0351],[-904.4478,-71.8413,-278.7187],[-898.4574,-71.7914,-274.75],[-898.4574,-71.7914,-270.9561],[-898.4574,-71.7914,-267.1621],[-892.7166,-71.7914,-263.493],[-888.3985,-71.7414,-264.5913],[-887.7246,-71.7664,-261.8207],[-885.603,-71.7664,-264.0172],[-882.6577,-71.7914,-263.3682],[-881.6593,-71.7664,-257.7023],[-877.2413,-71.7664,-258.0517],[-877.7156,-71.7664,-253.7336],[-876.842,-71.7664,-252.9349],[-873.8967,-71.7664,-254.9317],[-875.4941,-71.7664,-251.5122],[-872.8983,-71.7664,-253.8335],[-870.5021,-71.7414,-252.236],[-871.3757,-71.7165,-247.3189],[-868.056,-71.6915,-242.4017],[-864.1872,-71.6915,-242.564],[-860.3184,-71.6915,-242.7262],[-856.849,-71.704,-239.3941],[-853.3795,-71.7165,-236.0619],[-849.1737,-71.729,-236.6984],[-844.968,-71.7414,-237.3349],[-841.823,-71.7664,-235.2132],[-843.096,-71.8413,-228.0747],[-841.2988,-71.8413,-228.8734],[-838.4534,-71.9661,-223.8564],[-840.1257,-72.0285,-219.1265],[-841.798,-72.0909,-214.3965],[-841.0742,-72.1907,-209.5293],[-837.8793,-72.2656,-209.13],[-839.7014,-72.303,-205.5981],[-841.5235,-72.3405,-202.0663],[-837.5299,-72.4403,-200.0695],[-837.1305,-72.5152,-195.9261],[-834.1602,-72.6275,-192.1571],[-831.19,-72.7398,-188.3882],[-827.8828,-72.6899,-193.2928],[-824.5756,-72.64,-198.1975],[-820.6693,-72.64,-201.1552],[-816.7631,-72.64,-204.113],[-817.7365,-72.7274,-199.1834],[-818.71,-72.8147,-194.2538],[-814.4792,-72.8272,-196.1882],[-810.2485,-72.8397,-198.1226],[-807.6776,-72.8022,-201.9165],[-805.1067,-72.7648,-205.7104],[-800.7637,-72.8646,-202.6653],[-799.7653,-72.9395,-198.1475],[-796.4456,-73.0394,-195.3271],[-790.1057,-73.1392,-194.5782],[-789.7064,-73.1891,-192.5814],[-786.8734,-73.3264,-189.3117],[-784.0404,-73.4637,-186.0419],[-783.3665,-73.6134,-182.3728],[-784.3899,-73.7882,-176.3075],[-782.7425,-73.4387,-173.7366],[-780.0219,-73.264,-172.9379],[-781.6942,-73.2141,-170.6166],[-780.1966,-73.239,-169.9177],[-782.6676,-73.239,-164.5263],[-778.8737,-73.264,-165.0006],[-777.8753,-73.264,-164.3516],[-777.6756,-73.3389,-161.8806],[-771.81,-73.4138,-164.5513],[-766.9802,-73.3139,-161.7183],[-762.1504,-73.2141,-158.8853],[-757.2832,-73.1142,-158.6857],[-752.416,-73.0144,-158.486],[-747.2118,-72.8646,-157.6873],[-742.0077,-72.7149,-156.8885],[-739.3369,-72.615,-155.2911],[-733.9206,-72.4902,-155.2911],[-736.5913,-72.4902,-150.2741],[-731.2,-72.2906,-146.605],[-731.15,-72.1158,-139.3853],[-726.0426,-71.9661,-136.1498],[-720.9351,-71.8163,-132.9144],[-723.3063,-71.783,-127.5958],[-725.6775,-71.7498,-122.2772],[-728.0487,-71.7165,-116.9587],[-724.4763,-71.704,-114.8246],[-720.9039,-71.6915,-112.6905],[-724.3765,-71.6915,-106.8623],[-727.8491,-71.6915,-101.0341],[-725.6526,-71.6915,-97.39],[-721.1442,-71.5917,-95.7551],[-716.6357,-71.4918,-94.1202],[-710.6672,-71.392,-93.9455],[-704.6986,-71.2922,-93.7708],[-699.5069,-71.2922,-95.3682],[-695.5133,-71.3046,-95.9797],[-691.5197,-71.3171,-96.5912],[-688.1667,-71.3587,-92.5477],[-684.8137,-71.4003,-88.5042],[-681.4608,-71.4419,-84.4606],[-677.2675,-71.6416,-84.0613],[-673.0742,-71.8413,-83.6619],[-669.8793,-72.3405,-78.4453],[-666.1602,-72.4778,-77.9835],[-662.4412,-72.615,-77.5217],[-663.477,-72.7024,-71.4252],[-664.5129,-72.7898,-65.3288],[-665.5487,-72.8771,-59.2323],[-666.5846,-72.9645,-53.1358],[-662.7782,-73.0144,-54.3214],[-658.9717,-73.0643,-55.507],[-654.1045,-73.0643,-59.8375],[-649.2373,-73.0643,-64.1681],[-646.4043,-73.1517,-58.4023],[-643.5714,-73.239,-52.6366],[-641.4997,-73.264,-49.6413],[-642.6978,-73.3888,-52.6366],[-641.3749,-73.5635,-51.0641],[-640.3765,-73.7382,-52.5866],[-637.8056,-73.7882,-51.5383],[-634.5857,-73.8131,-48.5681],[-634.8353,-73.8381,-45.1985],[-630.6421,-73.863,-43.002],[-631.8401,-73.863,-39.208],[-628.171,-73.863,-37.336],[-629.3691,-73.863,-33.9914],[-626.2491,-73.863,-32.9181],[-627.4472,-73.863,-30.1226],[-624.2523,-73.863,-28.7248],[-624.8513,-73.863,-25.0557],[-621.931,-73.863,-23.1337],[-622.4052,-73.863,-18.9405],[-620.2087,-73.863,-17.0685],[-620.6081,-73.863,-13.3993],[-618.9358,-73.863,-11.8518],[-618.4615,-73.863,-6.2108],[-614.7675,-73.8381,-0.9193],[-615.3665,-73.8381,1.0775],[-611.1732,-73.863,4.4222],[-612.1217,-73.863,7.6171],[-610.05,-73.863,10.5623],[-611.4727,-73.9629,16.7649],[-610.7489,-74.0378,19.5667],[-607.529,-73.7632,18.743],[-608.0532,-73.863,23.0611],[-605.2327,-73.5885,23.4605],[-605.5821,-73.6134,28.6771],[-608.5274,-73.9379,31.7722],[-607.0298,-73.8381,35.5411],[-609.6257,-74.0877,37.6877],[-606.4807,-73.9379,43.6282],[-608.178,-73.913,47.3972],[-604.8583,-73.8131,50.7169],[-604.8583,-73.8381,51.6154],[-608.3278,-73.863,52.8884],[-605.3325,-73.863,54.9601],[-609.0766,-73.863,56.882],[-606.4807,-73.863,60.2017],[-610.5242,-73.863,62.2734],[-607.9284,-73.863,66.6913],[-612.2465,-73.863,68.763],[-609.6007,-73.863,73.156],[-613.8689,-73.863,74.2043],[-614.6177,-73.863,76.276],[-611.5975,-73.863,79.3461],[-616.4647,-73.863,81.1432],[-613.9188,-73.863,85.8856],[-619.1355,-73.863,88.2319],[-617.0887,-73.8381,93.6482],[-622.0808,-73.8381,95.0959],[-624.6766,-73.8381,99.8882],[-623.7531,-73.8381,106.3778],[-627.4721,-73.8506,108.9362],[-631.1912,-73.863,111.4946],[-629.4689,-73.8381,116.2121],[-632.4641,-73.8381,120.9295],[-638.1051,-73.863,122.4771],[-638.3672,-73.863,126.5081],[-638.6293,-73.863,130.5392],[-644.5698,-73.863,131.8121],[-647.5151,-73.863,136.3549],[-644.8443,-73.863,139.6246],[-650.1858,-73.863,140.4982],[-648.1141,-73.863,144.0925],[-653.2559,-73.863,145.4903],[-652.9813,-73.863,150.7568],[-656.8501,-73.6883,150.4823],[-655.9765,-73.6634,154.0765],[-657.1497,-73.5386,151.8551],[-656.95,-73.6883,153.2778],[-657.9983,-73.6384,152.529],[-658.3977,-73.4637,151.0314],[-661.917,-73.289,153.0781],[-665.4364,-73.1142,155.1248],[-668.6063,-73.0269,158.3322],[-671.7763,-72.9395,161.5396],[-676.6185,-72.6899,163.9514],[-681.4608,-72.4403,166.3631],[-683.8569,-72.4154,169.1649],[-688.2499,-72.1907,171.9667],[-687.8505,-72.1408,175.1615],[-689.448,-72.0659,175.9603],[-688.6493,-72.041,180.2659],[-687.8505,-72.016,184.5715],[-692.6429,-72.0285,182.5341],[-697.4352,-72.041,180.4968],[-702.6269,-72.016,185.5637]],"expectedDistance":1041.98,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-09-creature-45954","objectiveId":"creature-45954","objectiveName":"General Angerforge","checkpoints":[[-702.6269,-72.016,185.5637],[-700.7506,-71.4908,178.4213],[-698.8742,-70.9655,171.2789],[-696.9979,-70.4403,164.1365],[-695.1215,-69.915,156.9941],[-693.2452,-69.3898,149.8518],[-691.3688,-68.8645,142.7094],[-689.4925,-68.3393,135.567],[-687.6161,-67.814,128.4246],[-685.7398,-67.2888,121.2822],[-683.8634,-66.7635,114.1399],[-681.9871,-66.2383,106.9975],[-680.1108,-65.713,99.8551],[-678.2344,-65.1878,92.7127],[-676.3581,-64.6625,85.5704],[-674.4817,-64.1373,78.428],[-672.6054,-63.6121,71.2856],[-670.729,-63.0868,64.1432],[-668.8527,-62.5616,57.0008],[-666.9763,-62.0363,49.8585],[-665.1,-61.5111,42.7161],[-663.2236,-60.9858,35.5737],[-661.3473,-60.4606,28.4313],[-659.4709,-59.9353,21.2889]],"expectedDistance":170.28,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-10-creature-45931","objectiveId":"creature-45931","objectiveName":"Golem Lord Argelmach","checkpoints":[[-659.4709,-59.9353,21.2889],[-663.2649,-59.9353,24.1469],[-667.0588,-59.9353,27.0048],[-662.9654,-59.9353,29.8378],[-658.8719,-59.9353,32.6707],[-661.2681,-59.9353,39.2852],[-666.0604,-59.9353,44.4269],[-671.1772,-59.9353,42.7546],[-671.1273,-59.9353,49.4938],[-677.7916,-59.9353,49.9681],[-681.2611,-59.9353,45.625],[-678.2659,-59.9353,42.2055],[-681.3859,-59.9353,41.6064],[-679.0396,-59.9353,40.9325],[-680.6371,-59.9104,39.9341],[-682.9084,-59.8854,39.5847],[-682.9084,-59.7606,38.8608],[-682.1846,-59.5859,38.4115],[-682.584,-58.8121,37.2135],[-681.0614,-58.1382,36.3399],[-681.7852,-57.04,34.9421],[-679.8384,-56.5408,34.3431],[-681.0364,-55.6172,33.145],[-683.3078,-55.3177,32.7955],[-683.3078,-51.998,28.0531],[-681.0364,-52.023,27.7037],[-681.3609,-52.023,26.8301],[-679.0896,-52.0479,23.76],[-681.7603,-52.023,20.6899],[-684.5059,-51.998,23.1609],[-685.3046,-51.9481,20.64],[-685.7539,-51.8732,23.111],[-689.2982,-49.9263,19.1673],[-691.295,-48.7283,21.6384],[-692.4931,-47.9795,21.6384],[-694.0656,-47.006,19.1673],[-695.6381,-46.0326,21.6384],[-697.5101,-45.3836,20.64],[-698.2839,-45.4335,23.111],[-699.5818,-45.4335,20.5651],[-700.1059,-45.3836,23.0861],[-706.6954,-45.3337,20.0909],[-712.7607,-45.3337,23.2358],[-718.9009,-45.3337,23.2358],[-718.9758,-45.3337,20.1657],[-719.581,-45.3337,20.6899],[-720.1114,-45.3337,23.2109],[-722.7884,-45.3087,21.6883],[-724.9849,-45.2838,19.1673],[-727.5308,-45.3337,20.1657],[-728.3295,-45.6582,19.1673],[-729.8022,-46.5318,19.1673],[-730.526,-47.031,21.6883],[-734.5196,-49.6518,21.2889],[-737.3152,-51.4739,18.768],[-741.3088,-53.6204,18.768],[-742.1075,-53.7702,22.0877],[-743.031,-53.8201,20.615],[-743.7049,-53.7951,23.2109],[-747.9232,-53.7203,23.76],[-749.0464,-53.6703,20.6899],[-752.6656,-53.6204,20.2905],[-755.1367,-53.5955,24.4339],[-755.1866,-53.6204,20.2094],[-759.2551,-53.5955,23.7537],[-763.2736,-53.6204,19.4856],[-767.8164,-53.5955,23.6352],[-768.3405,-53.6204,20.0409],[-770.3373,-53.5955,23.6352],[-771.81,-53.6204,20.1158],[-773.8068,-53.5955,23.7101],[-774.331,-53.6204,20.1158],[-779.2481,-53.6204,20.1158],[-783.6411,-53.5955,23.8349],[-788.5832,-53.5955,23.8349],[-789.1323,-53.6204,20.2406],[-791.1291,-53.5955,23.8349],[-792.5768,-53.6204,20.2905],[-794.5736,-53.5955,23.8848],[-795.1227,-53.6204,20.2905],[-799.8651,-53.5955,24.359],[-804.0584,-53.6204,20.2344],[-808.3266,-53.5955,23.8286],[-808.4015,-53.6204,19.7601],[-808.9256,-53.5955,23.8349],[-809.3749,-53.6204,20.2905],[-811.2968,-53.5955,23.8349],[-812.7695,-53.6204,20.2905],[-814.7912,-53.5955,23.8848],[-815.3404,-53.6204,20.2905],[-818.9346,-53.6204,19.211],[-821.9298,-53.5955,24.0033],[-825.4492,-53.5955,25.1515],[-825.9733,-53.6204,19.3296],[-828.981,-53.6079,24.4745],[-831.9887,-53.5955,29.6194],[-833.1244,-53.6079,25.5852],[-834.2601,-53.6204,21.551],[-838.8278,-53.6204,21.3264],[-843.3955,-53.6204,21.1017]],"expectedDistance":386.31,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-11-creature-47778","objectiveId":"creature-47778","objectiveName":"Ambassador Flamelash","checkpoints":[[-843.3955,-53.6204,21.1017],[-838.8278,-53.6204,21.3264],[-834.2601,-53.6204,21.551],[-833.1244,-53.6079,25.5852],[-831.9887,-53.5955,29.6194],[-828.981,-53.6079,24.4745],[-825.9733,-53.6204,19.3296],[-825.4492,-53.5955,25.1515],[-821.9298,-53.5955,24.0033],[-818.9346,-53.6204,19.211],[-815.3404,-53.6204,20.2905],[-814.7912,-53.5955,23.8848],[-812.7695,-53.6204,20.2905],[-811.2968,-53.5955,23.8349],[-809.3749,-53.6204,20.2905],[-808.9256,-53.5955,23.8349],[-808.4015,-53.6204,19.7601],[-808.3266,-53.5955,23.8286],[-804.0584,-53.6204,20.2344],[-799.8651,-53.6454,15.6355],[-799.8651,-53.6454,13.7572],[-804.0584,-53.6454,12.2846],[-799.7902,-53.6454,10.3377],[-804.0584,-53.6454,9.7387],[-803.9669,-53.6287,4.4721],[-803.8754,-53.6121,-0.7945],[-803.7838,-53.5955,-6.0611],[-799.9899,-53.5705,-0.1954],[-801.188,-53.5705,-5.8614],[-801.188,-53.5705,-9.88],[-804.6574,-53.5705,-13.6739],[-800.1147,-53.5705,-13.0748],[-794.6485,-53.5955,-15.3961],[-799.5157,-53.5955,-17.1184],[-794.2491,-53.6079,-19.8515],[-788.9825,-53.6204,-22.5846],[-791.154,-53.6204,-27.352],[-793.3256,-53.6204,-32.1194],[-797.4315,-53.6204,-34.2784],[-801.5374,-53.6204,-36.4375],[-804.0709,-53.6079,-31.9447],[-806.6043,-53.5955,-27.4518],[-806.467,-53.6079,-31.6826],[-806.3298,-53.6204,-35.9133],[-811.197,-53.6204,-31.0461],[-812.6571,-53.6329,-34.6029],[-814.1173,-53.6454,-38.1597],[-811.6463,-53.6454,-42.5028],[-812.7944,-53.6454,-45.8474],[-816.8629,-53.6454,-47.6445],[-815.54,-53.6454,-54.9079],[-819.8581,-53.6454,-57.7783],[-820.9813,-53.6454,-61.3227],[-817.9362,-53.6454,-62.7703],[-822.1295,-53.7452,-63.1697],[-818.66,-53.8451,-65.5659],[-819.908,-54.0447,-70.4331],[-825.3743,-54.1446,-73.3534],[-822.7785,-54.2444,-78.4203],[-823.7269,-54.2444,-80.7666],[-828.1948,-54.2444,-82.1144],[-825.7237,-54.2444,-87.1314],[-830.1916,-54.2444,-88.4043],[-827.7206,-54.2444,-93.3215],[-832.1884,-54.2444,-94.6444],[-829.7174,-54.2444,-99.5615],[-834.1852,-54.2444,-100.9093],[-835.1337,-54.2444,-103.1807],[-833.6111,-54.1196,-108.3225],[-838.079,-53.9699,-108.8217],[-839.6015,-53.8451,-112.6156],[-840.1257,-53.87,-115.6607],[-839.4518,-53.87,-117.2582],[-837.1305,-53.87,-118.0569],[-839.7763,-53.87,-118.5811],[-837.9043,-53.87,-119.5295],[-838.6281,-53.9449,-121.4515],[-841.0243,-54.0198,-122.5747],[-841.5734,-54.0947,-124.0473],[-839.9759,-54.0947,-125.1705],[-841.3737,-54.0947,-127.6416],[-844.1692,-54.0947,-128.5152],[-845.2924,-54.0947,-130.8365],[-844.0444,-54.0947,-132.1593],[-847.2393,-53.9948,-131.5853],[-847.6387,-53.8201,-132.2841],[-847.439,-52.9715,-134.5618],[-848.5373,-51.8233,-136.5149],[-848.0131,-50.8499,-138.9672],[-849.8102,-50.2508,-139.4165],[-848.9366,-49.9513,-140.6146],[-850.2096,-49.6268,-142.7362],[-852.7805,-49.6518,-143.7346],[-852.2563,-49.6767,-146.3304],[-854.2531,-49.6767,-145.8063],[-855.0518,-49.6767,-151.7717],[-855.8506,-49.6767,-157.7372],[-855.6134,-49.6767,-164.2018],[-855.3763,-49.6767,-170.6665],[-853.5542,-49.6767,-165.3625],[-851.7321,-49.6767,-160.0585],[-851.5325,-49.6767,-166.598],[-851.3328,-49.6767,-173.1375],[-846.6278,-49.6767,-168.3327],[-841.9228,-49.6767,-163.5279],[-840.3503,-49.6767,-170.7913],[-838.7779,-49.6767,-178.0547],[-833.5113,-49.6767,-177.4806],[-828.2447,-49.6767,-176.9065],[-827.5209,-49.6767,-182.9469],[-826.797,-49.6767,-188.9872],[-830.7906,-49.6767,-193.5798],[-834.1852,-49.6767,-196.1757],[-837.3302,-49.6767,-194.728],[-836.7811,-49.6518,-197.848],[-839.1023,-49.6268,-197.2989],[-839.5516,-48.7033,-199.5453],[-840.6249,-47.8546,-200.4439],[-841.0742,-46.9561,-201.9165],[-841.9478,-46.6815,-201.9415],[-843.1708,-44.7097,-205.1114],[-844.3689,-43.7362,-206.5341],[-844.7184,-43.6863,-207.1831],[-843.7699,-43.6863,-207.5824],[-842.7715,-43.6364,-209.3297],[-844.2441,-43.6863,-209.5793],[-845.7168,-43.6863,-211.0519],[-844.1692,-43.6863,-214.0721],[-847.6387,-43.6863,-214.3965],[-848.1878,-43.6863,-220.5118],[-851.2579,-43.6863,-218.8894],[-853.1299,-43.6863,-223.8315],[-854.5277,-43.6863,-217.7662],[-858.5213,-43.6863,-221.3854],[-862.8394,-43.6863,-218.7895],[-865.7098,-43.6863,-222.4586],[-867.7815,-43.6863,-221.585],[-866.7831,-43.6364,-223.3822],[-868.9796,-43.6364,-223.3822],[-869.6535,-43.6364,-225.379],[-868.7799,-43.6364,-227.251],[-869.7284,-43.6863,-228.4491],[-870.8016,-43.6863,-228.1246],[-870.2026,-43.6863,-228.9233],[-871.2509,-43.6863,-228.8484],[-870.7018,-43.6863,-229.8468],[-871.176,-43.6863,-231.7937],[-872.5738,-43.6863,-231.2446],[-874.3709,-43.6863,-231.9185],[-875.8186,-43.6863,-229.8968],[-876.7671,-43.6863,-229.4974],[-877.8404,-43.6863,-229.8968],[-880.1367,-45.4834,-227.251],[-881.0602,-45.5084,-228.4491],[-884.0055,-47.3804,-227.0014],[-886.2519,-49.2774,-224.4804],[-887.1505,-49.4022,-224.3057],[-887.6497,-49.4022,-224.9796],[-888.1738,-49.4521,-224.5054],[-888.4484,-49.6019,-225.9281],[-889.7463,-49.8515,-225.4039],[-890.2955,-49.8515,-225.7284],[-889.3719,-49.8515,-226.602],[-891.2439,-49.8015,-226.8017],[-895.8615,-49.9513,-225.6036],[-899.2561,-49.9513,-227.0513],[-902.476,-50.0511,-226.2526],[-904.348,-49.8515,-229.0231],[-906.6193,-50.0511,-226.7518],[-908.2168,-49.9513,-229.3726],[-909.4648,-49.9513,-229.6971],[-910.588,-50.151,-226.9515],[-912.1854,-50.151,-227.2759],[-915.3803,-50.1011,-229.9217],[-917.4271,-49.9014,-234.4145],[-920.5221,-49.9014,-236.2116],[-922.3941,-50.1011,-233.5908],[-923.1179,-49.9513,-236.2616],[-925.1647,-50.151,-233.9652],[-928.3096,-50.126,-236.9605],[-933.4015,-50.151,-236.5861],[-931.6293,-50.126,-234.764],[-933.0271,-50.0262,-235.5128],[-933.8009,-50.0511,-234.6392],[-935.598,-50.0511,-236.2616],[-936.3218,-50.0511,-235.1384],[-935.4482,-50.0511,-233.0667],[-935.8476,-50.0511,-232.0683],[-937.6447,-50.1011,-229.5223],[-940.6399,-50.151,-230.5956],[-942.9612,-50.2009,-228.1745],[-942.437,-50.2009,-225.2292],[-946.206,-50.1011,-226.5771],[-946.4806,-50.126,-225.4539],[-948.5523,-51.1993,-224.5803],[-948.1779,-51.9481,-222.1841],[-948.9766,-52.5471,-221.3854],[-949.5007,-54.5939,-216.4682],[-952.6208,-56.9401,-213.3233],[-958.4365,-59.511,-212.3249],[-960.9075,-60.2848,-212.6493],[-960.6579,-61.6825,-207.7072],[-962.6547,-61.7075,-208.5559],[-964.0525,-61.7325,-207.7821],[-962.3801,-61.7325,-205.9351],[-962.7046,-61.7325,-205.0116],[-964.7763,-61.7325,-202.1911],[-967.1226,-61.7325,-204.2628],[-969.3939,-61.7325,-199.121],[-971.5155,-61.7325,-204.8618],[-975.3594,-61.7325,-201.6419],[-978.4295,-61.7325,-206.3844],[-977.9802,-61.7325,-210.8023],[-980.3015,-61.7325,-210.6775],[-981.8989,-61.7325,-209.3297],[-982.9722,-61.7325,-210.5777],[-982.6976,-61.7325,-212.9738],[-985.3184,-61.7325,-212.6244],[-983.9706,-61.7325,-214.2218],[-986.5165,-61.7325,-211.8257],[-989.986,-61.7325,-213.2983],[-988.9876,-61.7325,-219.1639],[-990.5351,-61.7325,-222.6334],[-994.2042,-61.7325,-219.2388],[-989.1873,-61.7325,-224.3806],[-991.3089,-61.7075,-225.8532],[-996.5754,-61.6825,-224.1809],[-996.6254,-61.7325,-228.8484],[-999.0215,-61.8073,-228.0497],[-1001.8171,-61.8323,-230.8452],[-1001.4177,-61.8323,-234.0401],[-1003.0401,-61.7574,-237.26],[-1005.4363,-61.5577,-238.0587],[-1008.2068,-61.4579,-236.4363],[-1010.628,-61.3081,-236.8357],[-1010.628,-61.2832,-240.8293]],"expectedDistance":861.9,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-12-creature-47477","objectiveId":"creature-47477","objectiveName":"Magmus","checkpoints":[[-1010.628,-61.2832,-240.8293],[-1014.6465,-61.2832,-241.2286],[-1017.467,-61.4329,-238.0337],[-1019.4638,-61.4579,-240.0555],[-1020.637,-61.6076,-239.2568],[-1023.4387,-61.7075,-234.8388],[-1029.4354,-61.7075,-231.3694],[-1032.6615,-61.6825,-226.9764],[-1034.6583,-61.6825,-225.7783],[-1034.6583,-61.6825,-224.5803],[-1032.2621,-61.7075,-221.5102],[-1034.2589,-61.7325,-222.5834],[-1030.8643,-61.7325,-218.9892],[-1035.9812,-61.7325,-219.1889],[-1034.9079,-61.7325,-213.5229],[-1037.978,-61.7325,-211.8506],[-1040.7735,-61.7325,-214.1719],[-1041.3725,-61.7325,-213.3732],[-1040.7236,-61.7325,-210.7025],[-1043.3194,-61.7325,-211.4513],[-1043.9185,-61.7325,-211.1268],[-1040.474,-61.6326,-205.9101],[-1041.3476,-61.6825,-203.8135],[-1040.474,-61.4329,-202.6653],[-1043.2321,-61.8198,-200.032],[-1045.9901,-62.2067,-197.3987],[-1049.1351,-62.4313,-193.1056],[-1051.4564,-62.5811,-192.3069],[-1053.553,-62.6809,-190.2352],[-1055.3003,-62.8307,-189.4614],[-1056.3486,-62.9555,-189.761],[-1057.2721,-62.8307,-188.1385],[-1059.2439,-62.8307,-187.3398],[-1060.442,-62.656,-185.7174],[-1063.1377,-62.8557,-185.7174],[-1063.1128,-62.8307,-184.6441],[-1064.1112,-62.9056,-184.8438],[-1065.0596,-63.0803,-182.1731],[-1066.2827,-63.2301,-182.1731],[-1067.0564,-63.3798,-179.8518],[-1069.1531,-63.7542,-178.504],[-1073.4462,-65.0771,-172.7631],[-1074.5445,-65.152,-172.0643],[-1076.8658,-65.1769,-173.2623],[-1078.6379,-65.2518,-171.2905],[-1081.059,-65.2518,-172.0143],[-1082.1323,-65.2518,-171.1407],[-1080.46,-65.2518,-169.3436],[-1081.733,-65.2518,-166.2735],[-1084.5909,-65.2518,-169.1439],[-1087.4488,-65.2518,-172.0143],[-1088.9215,-65.2518,-165.4249],[-1095.3112,-65.2518,-165.4748],[-1096.1474,-65.2518,-161.1068],[-1096.9836,-65.2518,-156.7388],[-1094.238,-65.2518,-152.7452],[-1096.9586,-65.2269,-151.5221],[-1099.23,-65.2269,-152.7951],[-1098.2316,-65.2269,-150.0495],[-1099.4297,-65.6013,-150.0744],[-1098.8306,-66.5497,-147.1292],[-1102.0255,-67.5981,-147.6783],[-1104.821,-68.8211,-147.2789],[-1103.4982,-69.9693,-142.9296],[-1108.6399,-71.7664,-143.4039],[-1109.4387,-73.1392,-140.5834],[-1112.8831,-73.888,-141.9874],[-1112.6585,-74.1626,-136.7894],[-1114.6054,-74.2125,-137.3885],[-1115.5289,-74.2374,-133.0392],[-1116.9267,-74.2374,-136.9142],[-1117.8003,-74.2374,-137.713],[-1123.6659,-74.2374,-140.4586],[-1124.6643,-74.2374,-136.7988],[-1125.6627,-74.2374,-133.139],[-1131.7779,-74.2374,-130.5432],[-1133.6749,-74.2374,-134.9767],[-1135.5718,-74.2374,-139.4102],[-1138.5671,-74.2374,-138.5366],[-1140.3018,-74.2624,-134.1031],[-1142.0365,-74.2874,-129.6696],[-1143.946,-74.2874,-134.203],[-1145.8554,-74.2874,-138.7363],[-1146.4295,-74.3123,-134.6023],[-1147.0036,-74.3373,-130.4683],[-1147.9271,-74.3373,-130.5931],[-1148.289,-74.3123,-134.8894],[-1148.6509,-74.2874,-139.1856],[-1150.1111,-74.3123,-135.0516],[-1151.5713,-74.3373,-130.9176],[-1152.0705,-74.3123,-135.3137],[-1152.5697,-74.2874,-139.7098],[-1154.1671,-74.2874,-140.2589],[-1155.0033,-74.3123,-136.025],[-1155.8394,-74.3373,-131.7912],[-1156.2013,-74.3123,-136.6241],[-1156.5633,-74.2874,-141.457],[-1159.4961,-74.3123,-137.7473],[-1162.4289,-74.3373,-134.0376],[-1162.666,-74.3123,-138.9828],[-1162.9031,-74.2874,-143.928],[-1168.8717,-74.3123,-142.9296],[-1174.8403,-74.3373,-141.9312],[-1175.2771,-74.3123,-148.6736],[-1175.7139,-74.2874,-155.4159],[-1179.6857,-74.2874,-158.174],[-1183.6574,-74.2874,-160.9321],[-1186.7837,-74.2874,-161.5311],[-1190.7024,-74.2874,-156.8137],[-1190.2781,-74.2624,-161.8806],[-1189.8538,-74.2374,-166.9474],[-1197.2669,-74.2374,-167.7462],[-1197.7037,-74.2374,-172.0767],[-1198.1405,-74.2374,-176.4073],[-1203.4071,-74.2374,-175.334],[-1202.7332,-74.2874,-179.8768],[-1205.1293,-74.3373,-181.3494],[-1207.3258,-74.2874,-179.3276],[-1207.9997,-74.2874,-183.9203],[-1210.346,-74.2374,-182.9718],[-1211.8935,-75.3357,-185.2432],[-1212.218,-77.1827,-188.7875],[-1215.1134,-79.0298,-189.736],[-1215.8871,-79.9783,-190.9341],[-1216.611,-82.624,-196.001],[-1219.082,-84.3213,-197.2739],[-1219.8807,-85.4944,-199.2707],[-1220.6795,-85.4944,-198.8714],[-1220.8043,-85.5943,-199.8199],[-1222.3268,-85.6442,-201.0679],[-1224.9227,-85.6442,-200.5187],[-1227.3688,-85.6941,-203.514],[-1229.9646,-85.6941,-203.6637],[-1230.0894,-85.6941,-206.5341],[-1231.7118,-85.6941,-205.1863],[-1230.052,-85.6941,-210.353],[-1228.3921,-85.6941,-215.5197],[-1232.7601,-85.6692,-220.0874],[-1237.1281,-85.6442,-224.6551],[-1237.7688,-85.6276,-229.9716],[-1238.4094,-85.6109,-235.2881],[-1239.0501,-85.5943,-240.6046],[-1243.6427,-84.7082,-243.7246],[-1248.2354,-83.8221,-246.8446],[-1246.6379,-82.9735,-250.6511],[-1245.0405,-82.1248,-254.4575],[-1249.0591,-79.9533,-256.0549],[-1249.8328,-79.1795,-257.278],[-1247.8111,-79.3543,-258.8005],[-1248.6098,-78.7303,-259.5992],[-1249.8079,-78.2311,-259.6741],[-1250.2072,-78.0813,-260.7224],[-1256.1103,-78.0938,-261.3839],[-1262.0133,-78.1063,-262.0453],[-1260.8402,-78.1312,-264.8409],[-1264.2473,-78.1312,-268.3852],[-1267.6543,-78.1312,-271.9295],[-1261.0898,-78.1312,-272.6284],[-1254.5253,-78.1312,-273.3273],[-1250.7314,-78.1312,-277.0463],[-1249.5583,-78.1312,-281.2771],[-1248.3851,-78.1312,-285.5078],[-1251.9794,-78.1312,-291.7229],[-1256.3474,-78.1312,-291.1238],[-1260.7154,-78.1312,-290.5248],[-1257.4956,-78.1312,-293.6448],[-1261.5641,-78.1312,-293.7696],[-1263.0367,-78.1312,-292.4966],[-1264.1849,-78.1312,-293.8445],[-1264.1349,-78.1312,-296.2406],[-1265.2831,-78.1312,-297.5635],[-1266.7308,-78.1312,-296.3155],[-1266.0569,-78.1063,-299.7101],[-1266.581,-78.0813,-301.9814],[-1270.2502,-78.1063,-300.0346],[-1274.718,-78.0813,-304.103],[-1274.3187,-78.0563,-308.7706],[-1277.7881,-78.0563,-311.1667],[-1280.3839,-78.0563,-309.6442],[-1278.8614,-78.0563,-312.0403],[-1280.7833,-78.0563,-313.8624],[-1284.2528,-78.0563,-313.3882],[-1286.2496,-78.0563,-315.3101],[-1284.702,-78.0563,-317.6564],[-1285.376,-78.0813,-318.3053],[-1287.6972,-78.256,-316.7578],[-1289.095,-79.9283,-318.9044],[-1289.4445,-82.2496,-323.0977],[-1293.8374,-84.7956,-323.6468],[-1296.2336,-87.2167,-326.043],[-1297.0323,-88.9888,-328.7636],[-1300.2272,-91.0356,-329.6372],[-1299.8278,-91.4849,-330.8353],[-1300.2272,-91.7345,-331.2346],[-1299.6282,-91.8842,-333.4311],[-1301.4253,-91.9341,-332.4327],[-1306.0429,-91.9841,-334.1799],[-1305.5187,-91.9841,-338.523],[-1308.7885,-91.9841,-342.6664],[-1313.5309,-91.9841,-341.5931],[-1314.729,-91.9841,-342.5166],[-1311.7837,-91.9841,-345.6366],[-1316.1923,-91.9841,-346.5726],[-1320.6009,-91.9841,-347.5086],[-1320.7007,-91.9841,-351.6395],[-1320.8005,-91.9841,-355.7704],[-1326.0671,-91.9841,-360.9122],[-1331.5396,-91.9841,-360.9871],[-1328.0639,-91.9841,-365.1055],[-1331.6145,-91.9841,-365.7045],[-1328.1388,-91.9841,-367.1023],[-1331.6145,-91.9841,-367.9759],[-1328.1388,-91.9841,-369.3736],[-1331.6644,-91.9841,-369.9727],[-1328.1887,-91.9841,-374.0911],[-1331.7143,-91.9841,-377.6354],[-1331.6644,-91.9841,-381.7039],[-1328.1887,-91.9841,-382.3778],[-1331.6644,-91.9841,-383.8505],[-1328.2386,-91.9841,-384.774],[-1331.7143,-91.9841,-386.1718],[-1331.7643,-91.9841,-390.1654],[-1335.7891,-91.9841,-390.7145],[-1336.3382,-91.9841,-394.159],[-1337.8108,-91.9841,-390.7145],[-1338.7344,-91.9841,-394.159],[-1340.182,-91.9841,-394.159],[-1340.7811,-91.9841,-390.6396],[-1344.9245,-91.9841,-390.6396],[-1348.4688,-91.9841,-394.159],[-1352.6122,-91.9841,-394.159],[-1353.1363,-91.9841,-390.7145],[-1354.5341,-91.9841,-390.7145],[-1355.4077,-91.9841,-394.159],[-1356.9552,-91.9841,-393.7846],[-1357.5543,-92.009,-397.304],[-1361.7725,-92.9825,-394.9328],[-1360.1501,-92.5831,-398.502],[-1362.6211,-93.2071,-398.8515],[-1363.4199,-93.4567,-400.998],[-1360.9488,-92.8327,-406.2397],[-1363.8692,-93.6065,-410.433],[-1367.2637,-94.4301,-410.9821],[-1367.3136,-94.4301,-417.1223],[-1367.7879,-94.4801,-417.9959],[-1367.3136,-94.4301,-419.6931],[-1367.7879,-94.4801,-423.9364],[-1367.3136,-94.4301,-427.7552],[-1367.3136,-94.4301,-431.9985],[-1367.7879,-94.4801,-432.4477],[-1367.3136,-94.4301,-433.7207],[-1367.7879,-94.4801,-434.5693],[-1367.2637,-94.4301,-440.6908],[-1367.6132,-94.4801,-446.1134],[-1371.2074,-94.505,-447.4612],[-1371.8813,-94.4801,-454.0819],[-1374.1277,-93.6564,-458.3251],[-1379.594,-92.8577,-461.3702],[-1382.5892,-92.034,-465.0394],[-1378.6455,-92.009,-465.6634],[-1378.7204,-91.9841,-467.136],[-1382.5892,-91.9841,-467.9846],[-1378.7204,-91.9841,-469.3075],[-1380.193,-91.9841,-472.0531],[-1384.0618,-91.9841,-472.0531],[-1380.6922,-91.8343,-475.7971],[-1381.466,-91.7844,-475.2979],[-1380.7172,-91.8343,-476.7456],[-1384.3364,-91.9841,-480.24],[-1381.9402,-91.9841,-479.3664],[-1380.2679,-91.9841,-481.7626],[-1382.5892,-91.9841,-484.1089],[-1378.7204,-91.9841,-485.9809],[-1378.7204,-91.9841,-490.0993],[-1382.5892,-91.9841,-494.2426],[-1378.7204,-91.9841,-498.9102],[-1378.7204,-91.9841,-500.3329],[-1382.5892,-91.9841,-501.2065],[-1378.7204,-91.9841,-502.6791],[-1382.5892,-91.9841,-507.3966],[-1378.7204,-91.9841,-511.5899],[-1378.7204,-91.9841,-517.1061],[-1382.5892,-91.9841,-517.9797],[-1378.7204,-91.9841,-519.3774],[-1382.5892,-91.9841,-524.045],[-1378.7204,-91.9841,-528.1634],[-1378.7204,-91.9841,-533.7295],[-1382.5892,-91.9841,-534.6031],[-1382.5892,-91.9841,-535.926],[-1378.7204,-91.9841,-536.3752],[-1381.5908,-91.9841,-541.5669],[-1378.7204,-91.9841,-546.3094],[-1375.7252,-91.9841,-541.7167],[-1376.6237,-91.9841,-546.509],[-1377.5223,-91.9841,-551.3014],[-1377.3975,-91.9841,-553.0236],[-1373.2042,-91.9841,-554.8707],[-1369.0109,-91.9841,-556.7177],[-1373.2541,-91.9841,-557.3167],[-1370.6583,-91.9841,-560.0499],[-1368.0624,-91.9841,-562.783],[-1367.1389,-91.9841,-569.2976],[-1373.3665,-91.9841,-570.0963],[-1379.594,-91.9841,-570.895],[-1376.9732,-91.9841,-574.3894],[-1374.3524,-91.9841,-577.8838],[-1374.3524,-91.9841,-584.2986],[-1380.5799,-91.9841,-587.5091],[-1386.8075,-91.9841,-590.7196],[-1380.5799,-91.9841,-594.1672],[-1374.3524,-91.9841,-597.6148],[-1374.3524,-91.9841,-599.1436],[-1380.5799,-91.9841,-599.6677],[-1386.8075,-91.9841,-600.1919],[-1380.5799,-91.9841,-603.6863],[-1374.3524,-91.9841,-607.1807],[-1380.6174,-91.9841,-607.4553],[-1386.8823,-91.9841,-607.7299],[-1386.8823,-91.9841,-613.6703],[-1380.6174,-91.9841,-616.9276],[-1374.3524,-91.9841,-620.1849],[-1380.5799,-91.9841,-620.7465],[-1386.8075,-91.9841,-621.3081],[-1380.5799,-91.9841,-622.1069],[-1374.3524,-91.9841,-622.9056],[-1374.3524,-91.9841,-629.3203],[-1380.5799,-91.9841,-632.5152],[-1386.8075,-91.9841,-635.7101],[-1380.5799,-91.9841,-639.1421],[-1374.3524,-91.9841,-642.5741],[-1374.3524,-91.9841,-644.0967],[-1380.5799,-91.9841,-644.6333],[-1386.8075,-91.9841,-645.17],[-1380.5799,-91.9841,-648.6768],[-1374.3524,-91.9841,-652.1837],[-1380.6174,-91.9841,-652.4583],[-1386.8823,-91.9841,-652.7329],[-1386.8823,-91.9841,-658.6734]],"expectedDistance":1384.03,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-13-creature-47613","objectiveId":"creature-47613","objectiveName":"Emperor Dagran Thaurissan","checkpoints":[[-1386.8823,-91.9841,-658.6734],[-1380.6174,-91.9841,-661.9306],[-1374.3524,-91.9841,-665.1879],[-1380.5799,-91.9841,-665.7495],[-1386.8075,-91.9841,-666.3111],[-1380.5799,-91.9841,-667.1099],[-1374.3524,-91.9841,-667.9086],[-1374.3524,-91.9841,-674.3233],[-1380.5799,-91.9841,-677.5182],[-1386.8075,-91.9841,-680.7131],[-1380.5799,-91.9841,-684.1451],[-1374.3524,-91.9841,-687.5771],[-1374.3524,-91.9841,-689.5739],[-1376.3741,-91.9965,-692.8063],[-1378.3959,-92.009,-696.0386],[-1382.5892,-92.0215,-698.4972],[-1386.7825,-92.034,-700.9557],[-1384.7108,-92.0465,-704.4626],[-1382.6391,-92.0589,-707.9695],[-1378.371,-92.0589,-708.5186],[-1378.5207,-92.0589,-710.1909],[-1380.6673,-92.034,-713.261],[-1384.7857,-92.034,-713.261],[-1385.3847,-92.009,-716.3311],[-1388.0305,-92.034,-714.4591],[-1390.0273,-92.009,-716.406],[-1393.4468,-92.009,-714.4591],[-1396.8664,-91.9841,-716.5308],[-1394.9944,-91.9841,-718.7273],[-1397.066,-91.9841,-719.0518],[-1395.194,-91.9841,-722.5711],[-1397.3156,-91.9841,-727.5881],[-1397.3905,-91.9841,-732.655],[-1395.2689,-91.9841,-734.5769],[-1396.7416,-91.9841,-737.5222],[-1396.0676,-91.9841,-742.639],[-1394.7448,-91.9841,-745.0352],[-1396.7416,-91.9841,-748.2301],[-1395.2689,-91.9841,-753.453],[-1397.2657,-91.9841,-756.9287],[-1397.2657,-91.9841,-761.2031],[-1395.2689,-91.9841,-763.3247],[-1397.9396,-91.9841,-765.4463],[-1400.0613,-91.9841,-763.9737],[-1403.8053,-91.9841,-764.0985],[-1406.6008,-91.9841,-765.5711],[-1411.6677,-91.9841,-764.5727],[-1414.6629,-91.9841,-766.0454],[-1417.3835,-91.9841,-765.1218],[-1420.229,-91.9841,-766.0454],[-1423.4239,-91.9841,-764.997],[-1425.221,-91.9841,-766.1452],[-1426.494,-91.9841,-765.2217],[-1427.0431,-91.9841,-766.7442],[-1425.9698,-91.9841,-768.2169],[-1425.9698,-91.9841,-771.2121],[-1427.5173,-91.9841,-773.8579],[-1425.9698,-91.9841,-776.9279],[-1427.0431,-91.9841,-778.4006],[-1426.494,-91.9841,-779.9481],[-1425.221,-91.9841,-778.9996],[-1423.4239,-91.9841,-780.1228],[-1420.229,-91.9841,-779.0495],[-1418.2322,-91.9841,-779.998],[-1414.6629,-91.9841,-779.0495],[-1411.6677,-91.9841,-780.5222],[-1406.6008,-91.9841,-779.5238],[-1403.8053,-91.9841,-780.9964],[-1400.0613,-91.9841,-781.1212],[-1397.9396,-91.9841,-779.6486],[-1395.2689,-91.9841,-781.7952],[-1397.2657,-91.9841,-783.9417],[-1397.2657,-91.9841,-788.3347],[-1395.2689,-91.9841,-791.8541],[-1396.7915,-91.9841,-797.1206],[-1394.7947,-91.9841,-800.3405],[-1396.1924,-91.9841,-802.4871],[-1396.1924,-91.9841,-806.256],[-1396.7915,-91.9841,-807.9783],[-1395.2689,-91.9841,-810.7239],[-1397.3905,-91.9841,-812.521],[-1397.3156,-91.9841,-817.5879],[-1395.194,-91.9841,-822.5799],[-1397.066,-91.9841,-826.0494],[-1394.9944,-91.9841,-826.3988],[-1396.8664,-91.9841,-828.5953],[-1394.7198,-91.9841,-830.7169],[-1392.4984,-91.9841,-828.795],[-1392.0491,-91.9841,-830.7918],[-1390.1271,-91.9841,-829.7934],[-1389.2036,-91.9341,-831.915],[-1390.7262,-91.5597,-833.5873],[-1389.5031,-91.1853,-834.1364],[-1389.5031,-90.0871,-835.7588],[-1390.6513,-89.1136,-837.2065],[-1388.2052,-87.8157,-839.3531],[-1386.2833,-87.666,-839.4779],[-1385.9339,-87.616,-842.0987],[-1382.2398,-87.641,-844.3451],[-1378.8452,-87.641,-841.5995],[-1378.8452,-87.641,-838.3796],[-1382.2398,-87.641,-837.9054],[-1382.2398,-87.641,-835.1099],[-1378.8452,-87.641,-832.7886]],"expectedDistance":375.99,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"e37ef68fd9044df072fda37154af1c1ad2bfcbbab75df9b0e3ae39ca761fb409","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"scholomance","mapId":289,"legs":[{"id":"leg-01-creature-48807","objectiveId":"creature-48807","objectiveName":"Jandice Barov","checkpoints":[[-54.2751,-13.013,20.6155],[-59.7066,-16.0262,16.5718],[-65.138,-19.0394,12.5281],[-70.5695,-22.0526,8.4844],[-76.001,-25.0658,4.4407],[-81.4325,-28.079,0.397],[-86.8639,-31.0922,-3.6467],[-92.2954,-34.1054,-7.6904],[-97.7269,-37.1186,-11.7341],[-103.1584,-40.1318,-15.7778],[-108.5898,-43.145,-19.8215],[-114.0213,-46.1581,-23.8653],[-119.4528,-49.1713,-27.909],[-124.8843,-52.1845,-31.9527]],"expectedDistance":96.35,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-48910","objectiveId":"creature-48910","objectiveName":"Rattlegore","checkpoints":[[-124.8843,-52.1845,-31.9527],[-119.0444,-52.1889,-27.5499],[-113.2046,-52.1933,-23.1472],[-107.3648,-52.1976,-18.7444],[-101.525,-52.202,-14.3417],[-95.6852,-52.2064,-9.939],[-89.8453,-52.2107,-5.5362],[-84.0055,-52.2151,-1.1335],[-78.1657,-52.2195,3.2692],[-72.3259,-52.2238,7.672],[-66.4861,-52.2282,12.0747],[-60.6463,-52.2326,16.4775],[-54.8064,-52.2369,20.8802],[-48.9666,-52.2413,25.2829],[-43.1268,-52.2457,29.6857],[-37.287,-52.25,34.0884],[-31.4472,-52.2544,38.4912],[-25.6073,-52.2588,42.8939],[-19.7675,-52.2631,47.2966],[-13.9277,-52.2675,51.6994],[-8.0879,-52.2718,56.1021],[-2.2481,-52.2762,60.5049],[3.5917,-52.2806,64.9076]],"expectedDistance":160.9,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-48867","objectiveId":"creature-48867","objectiveName":"Instructor Malicia","checkpoints":[[3.5917,-52.2806,64.9076],[5.7611,-52.7178,57.8134],[7.9304,-53.155,50.7192],[10.0997,-53.5922,43.625],[12.2691,-54.0295,36.5308],[14.4384,-54.4667,29.4366],[16.6077,-54.9039,22.3424],[18.7771,-55.3411,15.2482],[20.9464,-55.7783,8.154],[23.1157,-56.2155,1.0598],[25.2851,-56.6528,-6.0344],[27.4544,-57.09,-13.1286],[29.6237,-57.5272,-20.2228],[31.793,-57.9644,-27.317],[33.9624,-58.4016,-34.4112],[36.1317,-58.8388,-41.5054],[38.301,-59.2761,-48.5996],[40.4704,-59.7133,-55.6938],[42.6397,-60.1505,-62.788],[44.809,-60.5877,-69.8822],[46.9784,-61.0249,-76.9764],[49.1477,-61.4622,-84.0706],[51.317,-61.8994,-91.1648],[53.4864,-62.3366,-98.259],[55.6557,-62.7738,-105.3532]],"expectedDistance":178.35,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-48925","objectiveId":"creature-48925","objectiveName":"Doctor Theolen Krastinov","checkpoints":[[55.6557,-62.7738,-105.3532],[50.563,-62.7738,-110.728],[45.4704,-62.7738,-116.1028],[40.3777,-62.7738,-121.4776],[35.2851,-62.7738,-126.8524],[30.1924,-62.7738,-132.2272],[25.0998,-62.7738,-137.602],[20.0071,-62.7738,-142.9768],[14.9145,-62.7738,-148.3515],[9.8219,-62.7738,-153.7263],[4.7292,-62.7738,-159.1011],[-0.3634,-62.7738,-164.4759],[-5.4561,-62.7738,-169.8507],[-10.5487,-62.7738,-175.2255],[-15.6414,-62.7738,-180.6003],[-20.734,-62.7738,-185.9751],[-25.8267,-62.7738,-191.3499],[-30.9193,-62.7738,-196.7246],[-36.012,-62.7738,-202.0994]],"expectedDistance":133.28,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-05-creature-48946","objectiveId":"creature-48946","objectiveName":"Lorekeeper Polkelt","checkpoints":[[-36.012,-62.7738,-202.0994],[-41.3678,-62.7738,-196.8662],[-46.7235,-62.7738,-191.6329],[-52.0793,-62.7738,-186.3996],[-57.4351,-62.7738,-181.1663],[-62.7909,-62.7738,-175.9331],[-68.1467,-62.7738,-170.6998],[-73.5024,-62.7738,-165.4665],[-78.8582,-62.7738,-160.2332],[-84.214,-62.7738,-155],[-89.5698,-62.7738,-149.7667],[-94.9256,-62.7738,-144.5334],[-100.2813,-62.7738,-139.3001],[-105.6371,-62.7738,-134.0669],[-110.9929,-62.7738,-128.8336],[-116.3487,-62.7738,-123.6003],[-121.7045,-62.7738,-118.367],[-127.0602,-62.7738,-113.1338],[-132.416,-62.7738,-107.9005]],"expectedDistance":134.79,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-06-creature-48863","objectiveId":"creature-48863","objectiveName":"Lord Alexei Barov","checkpoints":[[-132.416,-62.7738,-107.9005],[-126.8824,-63.5795,-112.7855],[-121.3487,-64.3853,-117.6705],[-115.8151,-65.191,-122.5555],[-110.2814,-65.9967,-127.4405],[-104.7478,-66.8025,-132.3254],[-99.2141,-67.6082,-137.2104],[-93.6805,-68.414,-142.0954],[-88.1468,-69.2197,-146.9804],[-82.6132,-70.0254,-151.8654],[-77.0796,-70.8312,-156.7504],[-71.5459,-71.6369,-161.6354],[-66.0123,-72.4426,-166.5204],[-60.4786,-73.2484,-171.4054],[-54.945,-74.0541,-176.2904],[-49.4113,-74.8598,-181.1753],[-43.8777,-75.6656,-186.0603],[-38.344,-76.4713,-190.9453],[-32.8104,-77.277,-195.8303]],"expectedDistance":133.65,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-07-creature-48857","objectiveId":"creature-48857","objectiveName":"Lady Illucia Barov","checkpoints":[[-32.8104,-77.277,-195.8303],[-29.4087,-77.277,-195.8943],[-27.8079,-77.277,-193.7653],[-26.3992,-77.277,-195.166],[-24.8064,-77.277,-194.2295],[-23.7419,-77.277,-195.0299],[-22.5493,-77.277,-193.7573],[-22.4212,-77.277,-188.8188],[-24.2141,-77.277,-186.1535],[-24.2781,-77.277,-183.8884],[-25.8069,-77.277,-183.6883],[-24.2781,-77.1089,-183.2881],[-25.5428,-76.9409,-183.088],[-25.5428,-76.6447,-182.6237],[-24.2781,-76.5167,-182.3596],[-24.2781,-76.1485,-181.6953],[-25.5428,-75.9084,-181.2951],[-25.2306,-75.172,-179.9104],[-26.4952,-74.5717,-178.7738],[-26.103,-74.2035,-178.1095],[-26.4152,-73.6672,-177.165],[-25.1506,-73.4671,-176.8368],[-25.5428,-73.0349,-176.0284],[-24.2781,-72.8028,-175.5562],[-24.7424,-72.5387,-174.6838],[-26.3111,-72.5067,-174.2516],[-26.6473,-72.5067,-173.5872],[-24.8144,-72.5387,-171.6903],[-27.3517,-72.5707,-169.4972],[-25.4867,-72.5707,-165.5672],[-32.2821,-72.5707,-165.3031],[-30.3452,-72.5707,-158.6978],[-34.111,-72.5707,-156.3276],[-37.8769,-72.5707,-153.9574],[-36.5763,-72.5707,-149.5222],[-35.2756,-72.5707,-145.087],[-39.7418,-72.5707,-142.8219],[-37.9409,-72.5707,-140.0925],[-36.4122,-72.5707,-139.4922],[-37.8769,-72.5387,-135.2261],[-36.4122,-72.5067,-131.5603],[-36.4122,-72.4746,-127.4302],[-37.8769,-72.4746,-126.894],[-36.012,-72.4746,-126.3577],[-35.5397,-72.5067,-118.954],[-35.8119,-72.5387,-111.5583],[-37.7488,-72.5387,-111.4223],[-39.0135,-72.5227,-115.1201],[-40.2781,-72.5067,-118.8179],[-41.2786,-72.5067,-118.6899],[-41.0785,-72.5387,-111.6224],[-46.8114,-72.5067,-113.4233],[-49.1455,-72.5067,-109.4523],[-51.4797,-72.5067,-105.4813],[-56.5482,-72.4746,-105.2812],[-56.6763,-72.4746,-107.5563],[-57.2125,-72.4746,-106.0276],[-57.7488,-72.4746,-107.5003],[-58.9494,-72.4426,-106.0996],[-59.6778,-72.4106,-107.5323],[-60.8143,-72.3786,-107.2042],[-61.2225,-72.3786,-106.0356],[-62.0229,-72.5147,-106.2997],[-62.4151,-72.6507,-107.2362],[-63.0074,-73.0189,-106.4278],[-63.2075,-73.251,-107.3642],[-63.6798,-73.5792,-107.3642],[-63.9519,-73.6752,-106.4278],[-64.4882,-74.0034,-107.3642],[-64.7523,-74.2355,-106.4278],[-65.4166,-74.7398,-106.4918],[-65.8168,-74.9399,-105.2192],[-66.4732,-75.212,-105.1471],[-66.4732,-75.3161,-102.3337],[-68.5382,-75.3481,-104.7529],[-70.9474,-75.3801,-100.5568],[-76.3421,-75.3801,-100.4288],[-80.4081,-75.3801,-104.5608],[-85.0744,-75.3801,-100.893],[-85.4746,-75.3801,-98.7619],[-87.3476,-75.3801,-99.2902],[-90.5492,-75.3801,-98.6259],[-91.6137,-75.3801,-99.2262],[-93.1424,-75.3801,-98.5538],[-94.0709,-75.3801,-99.0901],[-95.1374,-75.3801,-98.2897],[-95.6757,-75.3801,-99.0261],[-96.9503,-75.3801,-99.0261],[-97.8148,-75.3801,-98.0896],[-99.1514,-75.3801,-98.7539],[-99.7517,-75.3801,-97.9535],[-100.7522,-75.3801,-97.9535],[-102.0169,-75.3801,-98.818],[-102.8173,-75.3801,-98.1536],[-103.8178,-75.3801,-98.3537],[-103.0814,-75.3801,-100.0186],[-104.8823,-75.3801,-99.2182],[-106.0189,-75.3801,-100.819],[-105.9388,-75.3481,-103.1421],[-107.9718,-75.3161,-103.4463],[-108.0679,-75.18,-104.6909],[-109.1484,-74.5797,-104.6349],[-109.5486,-74.3796,-105.4433],[-110.5171,-73.7073,-105.6194],[-111.1174,-73.3791,-105.0111],[-111.4776,-73.3471,-106.82],[-112.4861,-72.8428,-104.7309],[-113.3585,-72.6027,-106.5078],[-116.424,-72.7068,-104.5608],[-118.8172,-72.7468,-108.0026],[-123.8758,-72.7868,-106.89]],"expectedDistance":273.3,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-08-creature-48850","objectiveId":"creature-48850","objectiveName":"Ras Frostwhisper","checkpoints":[[-123.8758,-72.7868,-106.89],[-118.8172,-72.7468,-108.0026],[-116.424,-72.7068,-104.5608],[-113.3585,-72.6027,-106.5078],[-112.4861,-72.8428,-104.7309],[-111.4776,-73.3471,-106.82],[-111.1174,-73.3791,-105.0111],[-110.5171,-73.7073,-105.6194],[-109.5486,-74.3796,-105.4433],[-109.1484,-74.5797,-104.6349],[-108.0679,-75.18,-104.6909],[-107.9718,-75.3161,-103.4463],[-105.9388,-75.3481,-103.1421],[-106.0189,-75.3801,-100.819],[-104.8823,-75.3801,-99.2182],[-103.0814,-75.3801,-100.0186],[-103.8178,-75.3801,-98.3537],[-102.8173,-75.3801,-98.1536],[-102.0169,-75.3801,-98.818],[-100.7522,-75.3801,-97.9535],[-99.7517,-75.3801,-97.9535],[-99.1514,-75.3801,-98.7539],[-97.8148,-75.3801,-98.0896],[-96.9503,-75.3801,-99.0261],[-95.6757,-75.3801,-99.0261],[-95.1374,-75.3801,-98.2897],[-94.0709,-75.3801,-99.0901],[-93.1424,-75.3801,-98.5538],[-91.6137,-75.3801,-99.2262],[-90.5492,-75.3801,-98.6259],[-87.3476,-75.3801,-99.2902],[-85.4746,-75.3801,-98.7619],[-85.0744,-75.3801,-100.893],[-80.4081,-75.3801,-104.5608],[-76.3421,-75.3801,-100.4288],[-70.9474,-75.3801,-100.5568],[-68.5382,-75.3481,-104.7529],[-66.4732,-75.3161,-102.3337],[-66.4732,-75.212,-105.1471],[-65.8168,-74.9399,-105.2192],[-65.4166,-74.7398,-106.4918],[-64.7523,-74.2355,-106.4278],[-64.4882,-74.0034,-107.3642],[-63.9519,-73.6752,-106.4278],[-63.6798,-73.5792,-107.3642],[-63.2075,-73.251,-107.3642],[-63.0074,-73.0189,-106.4278],[-62.4151,-72.6507,-107.2362],[-62.0229,-72.5147,-106.2997],[-61.2225,-72.3786,-106.0356],[-60.8143,-72.3786,-107.2042],[-59.6778,-72.4106,-107.5323],[-58.9494,-72.4426,-106.0996],[-57.7488,-72.4746,-107.5003],[-57.2125,-72.4746,-106.0276],[-56.6763,-72.4746,-107.5563],[-56.5482,-72.4746,-105.2812],[-51.4797,-72.5067,-105.4813],[-49.1455,-72.5067,-109.4523],[-46.8114,-72.5067,-113.4233],[-41.0785,-72.5387,-111.6224],[-41.2786,-72.5067,-118.6899],[-40.2781,-72.5067,-118.8179],[-39.0135,-72.5227,-115.1201],[-37.7488,-72.5387,-111.4223],[-36.9805,-72.4706,-107.6244],[-36.2121,-72.4026,-103.8265],[-37.8049,-72.2345,-103.6264],[-36.2841,-71.0739,-102.4378],[-37.2206,-70.2815,-101.4993],[-36.8204,-68.7848,-99.4743],[-38.2691,-67.7123,-98.0016],[-38.2691,-66.3756,-96.5128],[-36.8044,-66.1115,-96.1446],[-37.2046,-65.0469,-94.9521],[-36.2841,-64.4146,-94.2157],[-37.2126,-63.4782,-93.0791],[-36.8124,-62.6137,-91.8785],[-37.7408,-60.4527,-89.0131],[-36.4122,-58.9479,-86.9481],[-37.7569,-58.9159,-86.6199],[-38.029,-59.0119,-84.0186],[-35.956,-59.14,-81.6814],[-37.4767,-59.2681,-78.816],[-35.0115,-59.2681,-78.2157],[-37.3406,-59.2681,-76.0867],[-34.9475,-59.2681,-74.4939],[-37.3406,-59.2681,-72.3648],[-34.9394,-59.2681,-71.8285],[-33.8029,-59.2681,-70.4278],[-37.4047,-59.2681,-67.6905],[-35.9399,-59.2681,-62.2237],[-30.6733,-59.2681,-59.4944],[-28.008,-59.2681,-64.0246],[-26.8154,-59.108,-62.688],[-26.2151,-58.9479,-59.0302],[-24.8224,-58.1875,-60.687],[-24.022,-57.5872,-58.2858],[-22.8214,-56.8188,-58.2778],[-22.4132,-56.6508,-59.0862],[-19.6118,-54.6738,-57.0932],[-18.019,-53.6413,-56.701],[-17.6188,-53.5132,-58.2938],[-16.7464,-53.113,-57.4294],[-16.2741,-52.8409,-61.4874],[-15.0816,-51.9044,-61.4874],[-14.3532,-51.2401,-65.1532],[-13.2166,-50.4397,-63.4884],[-12.8164,-50.3036,-65.4894],[-11.6158,-49.5752,-65.4814],[-10.8635,-48.9829,-67.1462],[-9.7269,-48.2546,-67.6104],[-9.3507,-48.1185,-63.0802],[-8.5423,-47.6463,-61.0952],[-7.2777,-46.7098,-64.3688],[-6.8775,-46.4137,-66.762],[-5.6128,-45.4772,-66.2978],[-4.2201,-45.2051,-66.762],[-3.2196,-45.2371,-62.696],[-1.6188,-45.2691,-59.3583],[0.9824,-45.2691,-63.8886],[6.2491,-45.2691,-61.1592],[7.5857,-45.2691,-55.6925],[4.184,-45.2691,-52.9551],[7.4497,-45.2691,-51.5544],[5.4487,-45.2691,-51.0262],[5.5207,-45.2691,-49.2973],[7.4497,-45.2691,-48.0967],[7.4497,-45.2691,-46.4319],[5.5207,-45.2691,-45.9676],[7.7858,-45.2691,-45.1032],[5.5207,-45.2691,-44.703],[7.9219,-45.2691,-44.2308],[6.7213,-45.2051,-43.4224],[8.9304,-45.2451,-42.2138],[9.8349,-45.3491,-40.661],[11.4357,-45.4772,-40.3328],[13.2045,-45.5732,-41.8936],[16.6703,-46.1095,-38.7641],[16.8063,-46.1735,-36.3629],[17.9989,-46.3416,-34.2978],[19.9839,-46.6458,-33.4974],[19.5837,-46.5097,-31.4964],[21.5847,-46.5417,-30.2958],[21.9849,-46.3096,-28.2868],[23.9939,-46.4137,-27.5024],[24.3861,-46.6458,-25.9097],[26.7793,-47.3821,-25.1013],[28.3721,-47.9824,-23.1003],[30.3731,-48.2546,-21.8997],[31.1895,-48.2466,-19.0903],[32.7903,-48.5427,-18.2899],[33.1825,-48.9109,-16.2969],[32.3821,-48.6148,-15.0963],[32.3821,-49.055,-13.0953],[33.9829,-49.4152,-11.4945],[34.3831,-49.6793,-9.5015],[36.5522,-49.7113,-8.533],[35.8158,-49.8154,-7.2364],[37.9529,-49.6873,-6.4279],[37.5207,-49.7513,-5.7156],[42.5792,-50.0835,-6.8081],[47.6377,-50.4157,-7.9007],[47.7017,-50.3516,-7.3724],[48.7743,-50.4157,-7.3644],[49.2465,-50.4797,-2.8862],[50.0469,-50.4797,-5.1533],[50.5191,-50.4797,-3.2224],[52.258,-50.5117,-5.1533],[53.5246,-50.5437,-3.2224],[55.3275,-50.5757,-5.2253],[55.8638,-50.5757,-3.2304],[57.2645,-50.5757,-1.8297],[59.9298,-50.5757,-5.1613],[65.3245,-50.5757,-3.8947],[68.0539,-50.5757,1.1738],[63.5876,-50.5757,3.7751],[66.1809,-50.5437,5.2399],[62.251,-50.5117,6.3044],[59.7217,-50.5117,6.0803],[59.7217,-50.6158,7.2489],[60.258,-50.9119,7.8732],[59.7217,-51.208,8.4335],[60.258,-51.5042,9.0738],[59.7217,-51.9764,10.0102],[60.258,-52.4166,10.6426],[59.1934,-53.3131,12.0913],[59.2735,-56.8789,17.4379],[59.3535,-60.4446,22.7846],[59.8338,-60.4446,22.6645],[60.25,-61.181,23.8411],[59.7697,-61.6452,24.6415],[60.6422,-61.9414,24.9697],[60.226,-62.5737,25.666],[61.1064,-63.174,26.4584],[60.1779,-63.8784,27.8511],[61.4666,-64.2786,28.6915],[60.5301,-64.4146,29.62],[64.9883,-64.4466,29.9002],[68.1819,-64.4787,30.8366],[63.7157,-64.4787,33.4379],[66.381,-64.4787,38.5064],[71.7837,-64.4787,39.707],[74.5211,-64.4787,36.3033],[75.9218,-64.4787,37.64],[76.45,-64.4787,39.641],[79.4756,-64.4787,38.9687],[80.9243,-64.4787,37.0397],[82.9973,-64.4787,38.9687],[83.8537,-64.4787,37.64],[84.382,-64.4787,39.641],[85.4465,-64.4787,37.3118],[85.5186,-64.4787,39.641],[88.1199,-64.4787,42.6755],[90.7212,-64.4787,45.71],[95.3204,-64.4787,47.676],[99.9197,-64.4787,49.642],[102.354,-64.4787,43.4419],[104.7882,-64.4787,37.2418],[109.6556,-64.4787,35.2728],[114.523,-64.4787,33.3038],[114.7911,-64.4787,38.6395],[115.0593,-64.4787,43.9752],[116.532,-64.4466,37.3699],[116.9962,-64.4306,42.0052],[117.4605,-64.4146,46.6405],[118.7891,-64.3106,44.9116],[119.1733,-64.3106,50.1242],[125.0483,-64.1425,49.636],[128.3219,-64.0064,48.6675],[134.2363,-64.0064,48.6295],[140.1508,-64.0064,48.5915],[146.0652,-64.0064,48.5534],[151.9797,-64.0064,48.5154],[153.1883,-63.9744,45.3038],[155.5495,-63.9744,45.4159],[160.2158,-63.9744,41.4839],[164.8741,-63.9744,41.9562]],"expectedDistance":662.35,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"eeaab9323068fe7e1652fbc30d268e6d3d3659a1c4bc9c9301ef9e693f4acf00","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"stratholme","mapId":329,"legs":[{"id":"leg-01-creature-247226","objectiveId":"creature-247226","objectiveName":"The Unforgiven","checkpoints":[[-144.4793,-5.7533,-267.1877],[-147.1539,-5.647,-265.9301],[-149.0669,-5.647,-268.5516],[-150.8559,-5.647,-269.207],[-151.7416,-5.647,-268.9767],[-158.1603,-5.5585,-265.6555],[-164.579,-5.4699,-262.3344],[-166.6514,-5.6116,-261.8738],[-168.653,-5.4699,-260.4745],[-169.946,-5.6825,-260.5631],[-171.2745,-5.4699,-259.2346],[-172.2133,-5.6116,-259.2877],[-173.1167,-5.5408,-258.4375],[-174.8348,-5.6825,-258.8981],[-174.7108,-5.5408,-258.3489],[-175.9507,-5.647,-258.0478],[-175.7382,-5.4699,-256.8079],[-176.5707,-5.3991,-255.3555],[-176.0216,-5.3991,-254.7532],[-176.8364,-5.4699,-252.238],[-175.7028,-5.5408,-249.0319],[-177.0489,-5.6825,-242.4427],[-177.0312,-5.8419,-237.8374],[-179.3516,-5.9482,-233.8342],[-180.5561,-6.1076,-228.6621],[-182.6108,-6.0544,-223.8264],[-185.0198,-6.0899,-221.6123],[-186.6139,-6.1784,-218.7074],[-186.2065,-6.0544,-217.6092],[-188.6332,-6.1784,-211.6576],[-189.3771,-5.8773,-207.9379],[-191.1307,-5.895,-205.9009],[-192.9552,-6.019,-205.2455],[-194.9744,-5.9482,-203.2396],[-198.4285,-6.0367,-201.5834],[-200.4477,-5.9482,-199.5464],[-201.6522,-5.9836,-199.139],[-202.9453,-5.9836,-197.7928],[-203.4058,-6.0367,-195.7027],[-207.5329,-6.3379,-193.7188],[-210.2607,-6.4796,-191.363],[-211.0932,-6.4441,-189.8751],[-216.3362,-6.267,-189.2906],[-217.4699,-6.2316,-186.9348],[-215.9643,-6.3024,-184.5258],[-217.9658,-6.1961,-182.046],[-219.5246,-6.0367,-182.0283],[-218.1784,-6.0544,-176.431],[-216.4779,-6.2139,-172.977],[-215.8934,-6.0899,-169.5584],[-213.7856,-6.143,-164.5279],[-214.1575,-6.019,-163.7131],[-212.5634,-6.2139,-161.6407],[-212.8999,-6.0544,-160.4362],[-212.0497,-6.1784,-159.6391],[-211.8549,-6.019,-157.9033],[-210.5441,-6.143,-156.5748],[-209.0916,-6.0013,-149.2771],[-210.8098,-6.0722,-146.939],[-211.9434,-6.4796,-141.6782],[-211.7663,-6.7807,-138.0471],[-214.2993,-7.1349,-132.0247],[-213.6793,-7.2766,-129.474],[-215.3975,-7.4892,-124.1955],[-221.8804,-7.9497,-121.1666],[-226.6097,-8.3571,-120.2987],[-222.3586,-8.1977,-118.5805],[-229.3021,-8.7645,-118.9171],[-224.1654,-8.428,-117.3938],[-231.6225,-8.9594,-117.5001],[-230.1346,-8.9594,-115.9059],[-236.4404,-9.6325,-115.3745],[-236.4404,-9.8627,-114.046],[-239.6642,-10.8547,-112.8416],[-240.1601,-11.3152,-110.84],[-241.7543,-11.6694,-109.6355],[-243.3662,-11.9706,-110.0252],[-245.3678,-12.502,-108.4487],[-246.5722,-12.7676,-108.4487],[-247.7767,-13.175,-106.4472],[-248.9812,-13.3876,-105.6324],[-249.3709,-13.3876,-104.0382],[-250.168,-13.4939,-103.2411],[-251.3724,-13.7241,-103.6308],[-251.3724,-13.8127,-102.2315],[-252.7718,-14.1138,-102.3732],[-252.5769,-14.2201,-101.5053],[-251.4433,-14.1138,-100.6905],[-252.6301,-14.1138,-100.0882],[-253.0906,-13.8836,-98.4941],[-255.3224,-13.8481,-96.7936],[-255.6235,-13.6887,-95.9611],[-254.7556,-13.5647,-95.0179],[-256.0132,-13.6533,-94.1455],[-255.163,-13.5824,-92.8126],[-256.4383,-13.7064,-92.1573],[-256.828,-13.8127,-91.2008],[-256.828,-13.8127,-90.4037],[-255.039,-13.5824,-89.6243],[-256.7749,-13.8127,-88.6678],[-257.2,-13.919,-87.1268],[-262.6202,-14.3087,-84.9658],[-266.5701,-14.4327,-80.9095],[-265.3657,-14.3087,-78.04],[-266.1805,-14.3087,-74.834],[-264.1789,-14.3087,-73.6295],[-266.1628,-14.3795,-72.0354],[-266.4284,-14.5389,-69.9629],[-265.1531,-14.6629,-68.5636],[-265.1885,-14.7692,-66.8455],[-263.7715,-14.6098,-66.4558],[-263.0098,-14.5389,-65.4284],[-262.9567,-14.8046,-63.9051],[-261.0614,-14.6098,-60.0968],[-261.026,-14.3795,-58.361],[-259.6267,-13.7419,-55.7572],[-258.8296,-13.2813,-51.6655],[-256.952,-12.5374,-47.6269],[-257.9971,-12.6259,-44.4209],[-255.1276,-12.1477,-42.3839],[-254.4722,-12.1123,-38.7527],[-253.6043,-11.9529,-38.0265],[-253.7637,-11.9529,-36.3261],[-254.7379,-12.0768,-35.8301],[-254.791,-12.006,-34.2005],[-256.6332,-12.0768,-33.2263]],"expectedDistance":359.91,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-54433","objectiveId":"creature-54433","objectiveName":"Cannon Master Willey","checkpoints":[[-256.6332,-12.0768,-33.2263],[-254.5702,-12.1871,-26.0436],[-252.5073,-12.2975,-18.861],[-250.4443,-12.4078,-11.6783],[-248.3814,-12.5181,-4.4956],[-246.3184,-12.6284,2.687],[-244.2555,-12.7387,9.8697],[-242.1925,-12.849,17.0524],[-240.1296,-12.9593,24.235],[-238.0666,-13.0696,31.4177],[-236.0036,-13.1799,38.6004],[-233.9407,-13.2902,45.783],[-231.8777,-13.4005,52.9657],[-229.8148,-13.5108,60.1484],[-227.7518,-13.6211,67.331],[-225.6889,-13.7314,74.5137],[-223.6259,-13.8417,81.6963],[-221.563,-13.952,88.879],[-219.5,-14.0623,96.0617],[-217.4371,-14.1726,103.2443],[-215.3741,-14.2829,110.427],[-213.3112,-14.3932,117.6097],[-211.2482,-14.5035,124.7923],[-209.1852,-14.6138,131.975],[-207.1223,-14.7241,139.1577],[-205.0593,-14.8344,146.3403],[-202.9964,-14.9447,153.523],[-200.9334,-15.055,160.7057],[-198.8705,-15.1653,167.8883],[-196.8075,-15.2756,175.071],[-194.7446,-15.3859,182.2537],[-192.6816,-15.4962,189.4363],[-190.6187,-15.6066,196.619],[-188.5557,-15.7169,203.8017],[-186.4928,-15.8272,210.9843],[-184.4298,-15.9375,218.167],[-182.3668,-16.0478,225.3497],[-180.3039,-16.1581,232.5323],[-178.2409,-16.2684,239.715],[-176.178,-16.3787,246.8977],[-174.115,-16.489,254.0803],[-172.0521,-16.5993,261.263],[-169.9891,-16.7096,268.4457],[-167.9262,-16.8199,275.6283],[-165.8632,-16.9302,282.811],[-163.8003,-17.0405,289.9936],[-161.7373,-17.1508,297.1763],[-159.6743,-17.2611,304.359],[-157.6114,-17.3714,311.5416],[-155.5484,-17.4817,318.7243],[-153.4855,-17.592,325.907],[-151.4225,-17.7023,333.0896],[-149.3596,-17.8126,340.2723],[-147.2966,-17.9229,347.455],[-145.2337,-18.0332,354.6376],[-143.1707,-18.1435,361.8203],[-141.1078,-18.2538,369.003],[-139.0448,-18.3641,376.1856],[-136.9819,-18.4744,383.3683],[-134.9189,-18.5847,390.551],[-132.8559,-18.695,397.7336],[-130.793,-18.8053,404.9163],[-128.73,-18.9157,412.099],[-126.6671,-19.026,419.2816],[-124.6041,-19.1363,426.4643],[-122.5412,-19.2466,433.647],[-120.4782,-19.3569,440.8296]],"expectedDistance":493.27,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-52122","objectiveId":"creature-52122","objectiveName":"Malor the Zealous","checkpoints":[[-120.4782,-19.3569,440.8296],[-115.4832,-19.3569,439.8377],[-111.8874,-19.3569,436.3128],[-113.0919,-19.3569,432.1149],[-110.1959,-19.3569,429.7059],[-107.2998,-19.3569,427.2969],[-104.2355,-19.3569,431.0344],[-99.4352,-19.3569,428.1649],[-97.5754,-19.3569,421.2391],[-94.4933,-19.3569,424.4452],[-93.094,-19.3569,422.9041],[-94.2276,-19.3569,418.7593],[-89.5691,-19.3569,413.3568],[-91.305,-19.3569,408.8932],[-91.3581,-19.3569,407.0865],[-92.4209,-19.3569,405.1558],[-90.2245,-19.3569,401.7549],[-94.9539,-19.3569,402.1623],[-91.8895,-19.3569,399.8419],[-97.6994,-19.3569,401.5069],[-102.5616,-19.3569,400.577],[-107.4238,-19.3569,399.647],[-111.5686,-19.3569,397.1141],[-116.5017,-19.3569,396.8395],[-121.4347,-19.3569,396.565],[-122.5683,-19.3569,396.1753],[-124.1625,-19.3569,394.4571],[-128.0239,-19.3569,394.9885],[-125.5618,-19.3569,392.119],[-128.7679,-19.3569,394.0497],[-129.4941,-19.3569,393.6423],[-126.3589,-19.3569,390.2415],[-132.9481,-19.3569,389.4444],[-133.1607,-19.3569,383.5814],[-128.1656,-19.3569,379.7731],[-124.0208,-19.3569,382.1644],[-122.8163,-19.3569,381.0307],[-124.1625,-19.3569,377.311],[-123.1706,-19.3569,376.5139],[-118.9018,-19.3569,378.5155],[-119.1143,-19.3569,373.7861],[-116.5105,-19.3569,371.7137],[-113.3753,-19.3569,374.7072],[-107.9729,-19.3569,370.5624],[-109.0357,-19.3569,366.4353],[-105.8296,-19.3569,364.5754],[-102.7653,-19.3569,366.9844],[-103.8281,-19.3569,362.9812],[-100.5689,-19.3569,365.5142],[-102.3756,-19.3569,361.9716],[-97.9119,-19.3569,361.7768],[-99.9666,-19.3569,357.3662],[-97.6285,-19.3569,355.0281],[-100.498,-19.3569,351.7689],[-102.4287,-19.3569,352.9026],[-103.3852,-19.3569,350.901],[-101.9151,-19.3569,349.7142],[-103.4738,-18.9849,348.9703],[-102.7476,-18.7192,347.8012],[-105.3691,-17.373,345.9768],[-105.3691,-16.6645,344.2232],[-106.6976,-16.3634,344.6306],[-106.9632,-15.6903,343.3376],[-105.8296,-15.5132,342.1331],[-106.6621,-14.6098,340.5478],[-107.4592,-14.4858,340.6718],[-107.9906,-14.1493,339.9588],[-107.6186,-14.043,339.3389],[-110.1339,-11.9174,336.6288],[-112.1354,-10.1993,333.2811],[-113.2159,-9.7564,332.9091],[-113.9421,-8.9771,331.2972],[-116.174,-8.6051,331.864],[-116.298,-8.6051,330.1459],[-118.211,-8.5874,330.1459],[-119.2737,-8.7291,328.8705],[-118.1578,-8.8885,327.4712],[-119.1498,-9.1188,327.1524],[-118.4944,-9.2605,326.5501],[-120.9033,-9.3668,323.6275],[-122.9757,-9.3668,325.0268],[-126.1641,-9.3668,322.9544],[-127.7051,-9.3668,319.6244],[-125.0482,-9.3313,317.4634],[-125.863,-9.1188,317.552],[-126.9966,-8.5874,315.3733],[-129.5472,-8.6228,313.23],[-128.821,-8.6228,312.4329],[-129.2284,-8.6228,311.441],[-131.4248,-8.6228,308.0933],[-132.6293,-8.6228,308.8372],[-134.5069,-8.6228,306.2334],[-135.1623,-8.6228,302.8857],[-136.3667,-8.6228,303.4879],[-136.4907,-8.6228,301.2915],[-138.634,-8.6228,300.3704],[-138.758,-8.6228,298.05],[-140.1042,-8.6228,298.6345],[-143.0268,-8.5874,296.5798],[-140.2636,-8.5874,295.7828],[-139.803,-8.5697,295.1628],[-135.9416,-8.5343,295.1628],[-136.1542,-8.5343,294.596],[-140.795,-8.6051,291.2305],[-141.9994,-8.6051,292.0276],[-145.3649,-8.6228,290.77],[-146.3037,-8.6228,289.105],[-145.6483,-8.6228,288.237],[-147.1539,-8.6051,286.5366],[-148.2875,-8.6051,286.1469],[-148.9429,-8.6051,285.0841],[-148.6595,-8.7114,284.1985],[-149.0846,-9.1365,283.5608],[-149.6869,-9.2782,283.8797],[-150.2183,-9.6856,283.4014],[-148.8189,-10.1993,279.7525],[-151.8523,-10.2347,280.4079],[-155.169,-10.2347,275.4129],[-160.8416,-10.2347,274.421],[-161.6564,-10.093,268.6288],[-163.0557,-10.1284,270.4355],[-162.0461,-9.845,266.5741],[-161.3198,-9.845,265.9719],[-162.7192,-9.4376,265.2279],[-162.2941,-9.2782,264.5371],[-163.7288,-8.6051,262.7835],[-164.9156,-8.6228,262.1636],[-164.8447,-8.6228,261.2425],[-165.7127,-8.6228,261.5791],[-165.9075,-8.6228,260.038],[-167.112,-8.6228,258.0896],[-168.5113,-8.6228,260.162],[-171.5756,-8.6228,257.9656],[-173.4532,-8.6228,254.9013],[-170.7786,-8.6228,252.634]],"expectedDistance":410.99,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-52148","objectiveId":"creature-52148","objectiveName":"Archivist Galford","checkpoints":[[-170.7786,-8.6228,252.634],[-173.4532,-8.6228,254.9013],[-171.5756,-8.6228,257.9656],[-168.5113,-8.6228,260.162],[-167.112,-8.6228,258.0896],[-165.9075,-8.6228,260.038],[-165.7127,-8.6228,261.5791],[-164.8447,-8.6228,261.2425],[-164.9156,-8.6228,262.1636],[-163.7288,-8.6051,262.7835],[-162.2941,-9.2782,264.5371],[-162.7192,-9.4376,265.2279],[-161.3198,-9.845,265.9719],[-162.0461,-9.845,266.5741],[-163.0557,-10.1284,270.4355],[-161.6564,-10.093,268.6288],[-160.8416,-10.2347,274.421],[-155.169,-10.2347,275.4129],[-151.8523,-10.2347,280.4079],[-148.8189,-10.1993,279.7525],[-150.2183,-9.6856,283.4014],[-149.6869,-9.2782,283.8797],[-149.0846,-9.1365,283.5608],[-148.6595,-8.7114,284.1985],[-148.9429,-8.6051,285.0841],[-148.2875,-8.6051,286.1469],[-147.1539,-8.6051,286.5366],[-145.6483,-8.6228,288.237],[-146.3037,-8.6228,289.105],[-145.3649,-8.6228,290.77],[-141.9994,-8.6051,292.0276],[-140.795,-8.6051,291.2305],[-136.1542,-8.5343,294.596],[-135.9416,-8.5343,295.1628],[-139.803,-8.5697,295.1628],[-140.2636,-8.5874,295.7828],[-143.0268,-8.5874,296.5798],[-140.1042,-8.6228,298.6345],[-138.758,-8.6228,298.05],[-138.634,-8.6228,300.3704],[-136.4907,-8.6228,301.2915],[-136.3667,-8.6228,303.4879],[-135.1623,-8.6228,302.8857],[-134.5069,-8.6228,306.2334],[-132.6293,-8.6228,308.8372],[-131.4248,-8.6228,308.0933],[-128.821,-8.6228,312.4329],[-129.5472,-8.6228,313.23],[-126.9966,-8.5874,315.3733],[-125.863,-9.1188,317.552],[-125.0482,-9.3313,317.4634],[-127.7051,-9.3668,319.6244],[-126.1641,-9.3668,322.9544],[-122.9757,-9.3668,325.0268],[-120.9033,-9.3668,323.6275],[-120.5668,-9.3668,319.0221],[-115.1643,-9.3668,319.6244],[-113.1628,-9.3668,313.7614],[-109.4253,-9.3668,313.3274],[-105.6879,-9.3668,312.8935],[-103.0841,-9.3668,306.6939],[-98.3548,-9.3668,307.7567],[-95.8927,-9.3668,306.1625],[-92.8992,-9.1188,308.9612],[-93.094,-8.9771,309.4394],[-91.5707,-8.8354,308.8903],[-89.3743,-8.6051,312.2912],[-90.0297,-8.6051,314.6825],[-89.888,-8.6228,317.0914],[-87.975,-8.6051,319.1107],[-86.983,-8.8531,321.3071],[-86.3631,-8.8531,320.6517],[-86.3631,-9.0656,322.1573],[-84.6981,-8.9594,320.758],[-84.6981,-9.2251,326.001],[-83.901,-9.2251,326.621],[-82.5194,-9.2251,321.1654],[-79.9156,-9.3313,323.9641],[-77.7015,-9.3668,321.4311],[-72.1573,-9.3668,321.9625],[-69.5535,-9.3668,315.763],[-63.1591,-9.3668,315.763],[-61.441,-9.3668,310.0948],[-55.9145,-9.3668,310.5554],[-54.3204,-9.3668,305.0289],[-49.5157,-9.3668,306.0917],[-49.1792,-9.3668,301.3623],[-46.695,-9.3668,303.9484],[-47.4433,-9.3313,300.2641],[-44.9768,-9.3313,303.2045],[-43.5243,-9.3313,302.4074],[-40.6327,-9.1011,305.3655],[-41.5361,-8.8354,306.3928],[-39.5168,-8.6937,308.4829],[-39.3928,-8.8531,310.0063],[-36.6827,-9.1542,309.156],[-34.628,-9.2605,309.7583],[-35.9742,-9.2251,310.8742],[-36.169,-9.3313,313.2123],[-30.9614,-9.3668,315.887],[-27.2949,-9.3668,313.354],[-24.4254,-9.3668,315.9578],[-25.6298,-9.3668,312.3621],[-21.9633,-9.3668,314.1688],[-22.6364,-9.3668,310.4314],[-19.0406,-9.3668,312.2912],[-20.9005,-9.3668,309.156],[-20.3514,-9.3668,308.4829],[-14.0279,-9.3668,308.8195],[-12.7525,-9.3668,303.0982],[-9.1568,-9.3668,300.6361],[-6.2165,-9.3668,303.1691],[-7.5449,-9.3668,299.6973],[-3.9492,-9.3668,301.504],[-5.0297,-9.3668,298.174],[-1.1683,-9.3668,299.9099],[3.4371,-9.3668,297.3769],[0.4968,-9.3668,294.9148],[3.4902,-9.3313,291.1065],[-0.7786,-9.1896,287.4931],[-1.8414,-9.0834,287.4223],[-1.2391,-8.8177,285.279],[-0.566,-8.8177,284.6767],[-2.1602,-8.3926,284.4996],[-2.231,-7.7372,282.6929],[-3.099,-7.7372,282.7637],[-3.0281,-7.7726,282.0375],[-3.9669,-7.7726,281.6301],[-3.8252,-7.7726,280.3725],[-6.3582,-7.7726,280.3016],[-7.5626,-7.7726,278.6898],[-6.7656,-7.7726,276.4934]],"expectedDistance":402.86,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-05-encounter-478","objectiveId":"encounter-478","objectiveName":"Balnazzar","checkpoints":[[-6.7656,-7.7726,276.4934],[-12.4401,-7.9856,271.77],[-18.1147,-8.1986,267.0466],[-23.7892,-8.4116,262.3232],[-29.4638,-8.6246,257.5999],[-35.1384,-8.8376,252.8765],[-40.8129,-9.0506,248.1531],[-46.4875,-9.2636,243.4297],[-52.1621,-9.4766,238.7063],[-57.8366,-9.6896,233.983],[-63.5112,-9.9026,229.2596],[-69.1857,-10.1156,224.5362],[-74.8603,-10.3286,219.8128],[-80.5349,-10.5416,215.0895],[-86.2094,-10.7546,210.3661],[-91.884,-10.9676,205.6427],[-97.5586,-11.1806,200.9193],[-103.2331,-11.3936,196.1959],[-108.9077,-11.6066,191.4726],[-114.5822,-11.8196,186.7492],[-120.2568,-12.0326,182.0258],[-125.9314,-12.2456,177.3024],[-131.6059,-12.4586,172.5791],[-137.2805,-12.6716,167.8557],[-142.9551,-12.8846,163.1323],[-148.6296,-13.0976,158.4089],[-154.3042,-13.3106,153.6855],[-159.9787,-13.5235,148.9622],[-165.6533,-13.7365,144.2388],[-171.3279,-13.9495,139.5154],[-177.0024,-14.1625,134.792],[-182.677,-14.3755,130.0687],[-188.3516,-14.5885,125.3453],[-194.0261,-14.8015,120.6219],[-199.7007,-15.0145,115.8985],[-205.3753,-15.2275,111.1751],[-211.0498,-15.4405,106.4518],[-216.7244,-15.6535,101.7284],[-222.3989,-15.8665,97.005],[-228.0735,-16.0795,92.2816],[-233.7481,-16.2925,87.5583]],"expectedDistance":295.45,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-06-creature-54238","objectiveId":"creature-54238","objectiveName":"Baroness Anastari","checkpoints":[[-233.7481,-16.2925,87.5583],[-236.5344,-15.9691,80.7316],[-239.3206,-15.6457,73.9049],[-242.1069,-15.3223,67.0782],[-244.8932,-14.9989,60.2515],[-247.6795,-14.6755,53.4248],[-250.4658,-14.3521,46.5981],[-253.2521,-14.0287,39.7714],[-256.0384,-13.7053,32.9447],[-258.8247,-13.3819,26.118],[-261.611,-13.0585,19.2913],[-264.3972,-12.7351,12.4646],[-267.1835,-12.4117,5.6379],[-269.9698,-12.0883,-1.1888],[-272.7561,-11.7649,-8.0155],[-275.5424,-11.4415,-14.8422],[-278.3287,-11.1181,-21.6689],[-281.115,-10.7947,-28.4956],[-283.9013,-10.4713,-35.3223],[-286.6876,-10.1478,-42.149],[-289.4738,-9.8244,-48.9757],[-292.2601,-9.501,-55.8024],[-295.0464,-9.1776,-62.6291],[-297.8327,-8.8542,-69.4558],[-300.619,-8.5308,-76.2825],[-303.4053,-8.2074,-83.1092],[-306.1916,-7.884,-89.9359],[-308.9779,-7.5606,-96.7626],[-311.7642,-7.2372,-103.5893],[-314.5504,-6.9138,-110.4159],[-317.3367,-6.5904,-117.2426],[-320.123,-6.267,-124.0693],[-322.9093,-5.9436,-130.896],[-325.6956,-5.6202,-137.7227],[-328.4819,-5.2968,-144.5494],[-331.2682,-4.9734,-151.3761],[-334.0545,-4.65,-158.2028],[-336.8407,-4.3266,-165.0295],[-339.627,-4.0032,-171.8562],[-342.4133,-3.6798,-178.6829],[-345.1996,-3.3564,-185.5096],[-347.9859,-3.033,-192.3363],[-350.7722,-2.7096,-199.163],[-353.5585,-2.3862,-205.9897],[-356.3448,-2.0627,-212.8164],[-359.1311,-1.7393,-219.6431],[-361.9173,-1.4159,-226.4698],[-364.7036,-1.0925,-233.2965],[-367.4899,-0.7691,-240.1232],[-370.2762,-0.4457,-246.9499],[-373.0625,-0.1223,-253.7766],[-375.8488,0.2011,-260.6033],[-378.6351,0.5245,-267.43],[-381.4214,0.8479,-274.2567],[-384.2077,1.1713,-281.0834],[-386.9939,1.4947,-287.9101],[-389.7802,1.8181,-294.7368],[-392.5665,2.1415,-301.5635],[-395.3528,2.4649,-308.3902],[-398.1391,2.7883,-315.2169],[-400.9254,3.1117,-322.0435],[-403.7117,3.4351,-328.8702],[-406.498,3.7585,-335.6969]],"expectedDistance":457.59,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-07-creature-54239","objectiveId":"creature-54239","objectiveName":"Nerub'enkan","checkpoints":[[-406.498,3.7585,-335.6969],[-406.3967,3.6012,-328.2359],[-406.2953,3.4439,-320.7749],[-406.194,3.2867,-313.3138],[-406.0927,3.1294,-305.8528],[-405.9914,2.9721,-298.3917],[-405.8901,2.8148,-290.9307],[-405.7887,2.6575,-283.4696],[-405.6874,2.5002,-276.0086],[-405.5861,2.3429,-268.5475],[-405.4848,2.1856,-261.0865],[-405.3835,2.0283,-253.6254],[-405.2822,1.871,-246.1644],[-405.1808,1.7137,-238.7033],[-405.0795,1.5565,-231.2423],[-404.9782,1.3992,-223.7813],[-404.8769,1.2419,-216.3202],[-404.7756,1.0846,-208.8592],[-404.6742,0.9273,-201.3981],[-404.5729,0.77,-193.9371],[-404.4716,0.6127,-186.476],[-404.3703,0.4554,-179.015],[-404.269,0.2981,-171.5539],[-404.1677,0.1408,-164.0929],[-404.0663,-0.0165,-156.6318],[-403.965,-0.1737,-149.1708]],"expectedDistance":186.58,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-08-creature-54240","objectiveId":"creature-54240","objectiveName":"Maleki the Pallid","checkpoints":[[-403.965,-0.1737,-149.1708],[-410.0268,-0.4554,-153.162],[-416.0886,-0.737,-157.1531],[-422.1505,-1.0187,-161.1443],[-428.2123,-1.3003,-165.1355],[-434.2741,-1.5819,-169.1266],[-440.3359,-1.8636,-173.1178],[-446.3977,-2.1452,-177.109],[-452.4595,-2.4268,-181.1001],[-458.5213,-2.7085,-185.0913],[-464.5831,-2.9901,-189.0825],[-470.6449,-3.2717,-193.0737],[-476.7068,-3.5534,-197.0648],[-482.7686,-3.835,-201.056],[-488.8304,-4.1166,-205.0472],[-494.8922,-4.3983,-209.0383],[-500.954,-4.6799,-213.0295],[-507.0158,-4.9616,-217.0207],[-513.0776,-5.2432,-221.0118],[-519.1394,-5.5248,-225.003],[-525.2013,-5.8065,-228.9942],[-531.2631,-6.0881,-232.9853],[-537.3249,-6.3697,-236.9765],[-543.3867,-6.6514,-240.9677],[-549.4485,-6.933,-244.9589],[-555.5103,-7.2146,-248.95],[-561.5721,-7.4963,-252.9412],[-567.6339,-7.7779,-256.9324],[-573.6958,-8.0595,-260.9235],[-579.7576,-8.3412,-264.9147],[-585.8194,-8.6228,-268.9059]],"expectedDistance":217.9,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-09-creature-54237","objectiveId":"creature-54237","objectiveName":"Magistrate Barthilas","checkpoints":[[-585.8194,-8.6228,-268.9059],[-578.3808,-8.5754,-268.3139],[-570.9423,-8.5279,-267.7219],[-563.5037,-8.4804,-267.13],[-556.0652,-8.4329,-266.538],[-548.6266,-8.3855,-265.946],[-541.1881,-8.338,-265.3541],[-533.7495,-8.2905,-264.7621],[-526.311,-8.2431,-264.1701],[-518.8724,-8.1956,-263.5782],[-511.4339,-8.1481,-262.9862],[-503.9953,-8.1006,-262.3942],[-496.5568,-8.0532,-261.8023],[-489.1182,-8.0057,-261.2103],[-481.6797,-7.9582,-260.6183],[-474.2411,-7.9108,-260.0264],[-466.8026,-7.8633,-259.4344],[-459.364,-7.8158,-258.8424],[-451.9255,-7.7683,-258.2505],[-444.4869,-7.7209,-257.6585],[-437.0484,-7.6734,-257.0665],[-429.6098,-7.6259,-256.4746],[-422.1713,-7.5785,-255.8826],[-414.7327,-7.531,-255.2906],[-407.2942,-7.4835,-254.6987],[-399.8556,-7.4361,-254.1067],[-392.4171,-7.3886,-253.5147],[-384.9785,-7.3411,-252.9228],[-377.54,-7.2936,-252.3308],[-370.1014,-7.2462,-251.7388],[-362.6629,-7.1987,-251.1469],[-355.2243,-7.1512,-250.5549],[-347.7858,-7.1038,-249.9629],[-340.3472,-7.0563,-249.371],[-332.9087,-7.0088,-248.779],[-325.4701,-6.9613,-248.187],[-318.0316,-6.9139,-247.5951],[-310.593,-6.8664,-247.0031],[-303.1545,-6.8189,-246.4111],[-295.7159,-6.7715,-245.8192],[-288.2774,-6.724,-245.2272],[-280.8388,-6.6765,-244.6352],[-273.4003,-6.6291,-244.0433],[-265.9617,-6.5816,-243.4513],[-258.5232,-6.5341,-242.8593],[-251.0846,-6.4866,-242.2674],[-243.6461,-6.4392,-241.6754],[-236.2075,-6.3917,-241.0834],[-228.769,-6.3442,-240.4915],[-221.3304,-6.2968,-239.8995],[-213.8919,-6.2493,-239.3075]],"expectedDistance":373.11,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"e6ee0cc359a7d9c065c9e4c1321d5ae70bd4f6490832d7557e57a80448a43a60","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"maraudon","mapId":349,"legs":[{"id":"leg-01-creature-54445","objectiveId":"creature-54445","objectiveName":"Noxxion","checkpoints":[[-1018.7236,-43.4519,-460.7064],[-1021.6055,-43.5327,-463.0766],[-1025.0799,-43.3172,-461.9453],[-1031.3824,-43.5866,-465.4198],[-1034.8568,-43.3172,-463.4267],[-1037.1192,-42.9671,-463.1574],[-1040.4859,-42.617,-460.1408],[-1044.1489,-42.617,-460.6795],[-1046.6537,-42.617,-455.1042],[-1048.4852,-42.5631,-453.7845],[-1049.6164,-42.4554,-449.2327],[-1053.1178,-42.3207,-449.5559],[-1055.5149,-42.2399,-445.5697],[-1058.0467,-42.3476,-443.9537],[-1061.6558,-42.4284,-445.5428],[-1065.7227,-42.59,-444.223],[-1068.3892,-42.59,-446.243],[-1069.9244,-42.4823,-445.6505],[-1069.8974,-42.2668,-446.6471],[-1072.1599,-41.2164,-447.2665],[-1074.7994,-40.57,-448.6671],[-1075.9575,-39.8967,-448.6401],[-1077.0618,-39.4388,-450.8218],[-1076.7924,-39.4657,-451.4412],[-1077.4927,-38.9001,-451.9799],[-1077.4927,-38.5769,-452.734],[-1076.954,-38.9001,-452.9495],[-1077.2503,-37.0148,-456.2085],[-1074.5839,-34.7793,-459.8176],[-1073.3988,-34.1329,-460.464],[-1072.5369,-34.0521,-460.1408],[-1068.443,-32.7054,-461.3528],[-1065.8843,-32.1937,-459.4944],[-1065.2918,-32.5169,-459.656],[-1060.0936,-32.1937,-458.5248],[-1062.0598,-32.059,-457.7437],[-1060.2821,-31.5203,-456.9088],[-1061.5211,-31.1163,-455.8583],[-1060.2552,-31.0355,-455.1042],[-1061.0902,-30.9008,-454.5117],[-1058.5315,-30.7123,-453.8114],[-1058.1005,-30.416,-452.4647],[-1057.2117,-30.1736,-448.2631],[-1056.7538,-29.635,-441.2334],[-1056.1882,-30.4699,-437.1934],[-1056.296,-31.4934,-435.1733],[-1054.8146,-31.8166,-434.0421],[-1054.249,-31.9243,-431.1872],[-1052.3367,-31.7896,-429.1402],[-1052.5522,-31.7088,-427.0125],[-1051.7711,-31.7627,-423.8006],[-1049.9127,-31.8166,-421.9085],[-1048.997,-32.0051,-419.6932],[-1052.229,-32.2206,-418.1311],[-1052.633,-32.5438,-417.35],[-1049.6434,-32.463,-418.0234],[-1050.4514,-32.7054,-416.7036],[-1048.162,-32.5707,-416.2996],[-1047.5695,-32.8401,-415.2761],[-1047.9735,-32.9747,-414.8991],[-1046.5999,-33.0286,-413.7948],[-1046.3844,-33.271,-412.7982],[-1047.2463,-33.7827,-411.4516],[-1046.0612,-33.7558,-410.2396],[-1045.6841,-34.0521,-408.2465],[-1046.4652,-34.2137,-407.4654],[-1046.0612,-34.3483,-406.6574],[-1044.8761,-34.3483,-406.2534],[-1044.1759,-34.6715,-404.2064],[-1044.7953,-34.9678,-403.3446],[-1044.3644,-35.1025,-402.5096],[-1045.2801,-35.1025,-401.7555],[-1044.0143,-35.4257,-399.0352],[-1044.7684,-35.9105,-397.2306],[-1043.9065,-35.8836,-396.9613],[-1042.3444,-35.8836,-394.9682],[-1040.9708,-35.9913,-390.7127],[-1041.3209,-35.9913,-388.0463],[-1040.7643,-35.9554,-382.4979],[-1040.2076,-35.9195,-376.9496],[-1039.651,-35.8836,-371.4013],[-1038.7622,-36.2606,-371.9938],[-1037.9811,-35.7489,-370.4856],[-1039.3009,-36.2606,-369.7853],[-1038.843,-36.5569,-368.0346],[-1039.7857,-36.503,-367.7922],[-1039.0585,-36.8532,-365.7991],[-1041.8326,-36.8532,-365.045],[-1042.2097,-37.2302,-362.8633],[-1039.2201,-37.3649,-362.8364],[-1040.3513,-37.3918,-361.6783],[-1037.2539,-37.6612,-359.8468],[-1038.7891,-37.7958,-357.9076],[-1039.7857,-38.119,-355.0257],[-1036.9846,-38.3345,-352.6286],[-1032.5405,-38.2806,-353.0595],[-1031.6787,-38.4422,-351.4704],[-1032.0288,-38.8463,-349.8814],[-1030.736,-39.1964,-349.8544],[-1031.544,-39.0617,-348.6424],[-1030.736,-39.3041,-347.0803],[-1028.7698,-39.8159,-347.5651],[-1028.0426,-40.0313,-346.1645],[-1026.6421,-40.3815,-346.5955],[-1025.9687,-40.57,-345.0333],[-1024.7837,-40.7855,-345.2488],[-1024.1911,-40.8932,-344.3869],[-1022.8175,-40.974,-344.1984],[-1023.033,-40.8663,-342.1514],[-1021.2554,-40.7316,-341.0202],[-1018.2388,-40.8393,-343.0671],[-1015.33,-40.8393,-343.6058],[-1014.3334,-40.7316,-341.8013],[-1012.3134,-40.8124,-343.0671],[-1009.5123,-40.6239,-340.1045],[-1007.3576,-40.7316,-339.6466],[-1006.2264,-41.2164,-337.9228],[-1002.1258,-42.186,-337.1956],[-1001.715,-42.3746,-336.4954],[-1004.0717,-42.2938,-334.3137],[-1002.9338,-42.7247,-333.0478],[-1003.7956,-42.994,-331.1356],[-1000.2337,-43.9636,-328.523],[-1000.6377,-43.9906,-327.7419],[-998.0723,-44.5831,-325.5334],[-995.1365,-44.9602,-324.9947],[-994.6786,-45.0948,-322.5437],[-991.9045,-45.4181,-320.4429],[-991.5274,-45.445,-315.2717],[-988.1338,-45.5527,-312.4706],[-986.0329,-45.7143,-314.2751],[-982.6124,-45.849,-316.0258],[-979.2726,-45.8221,-313.8173],[-975.3403,-45.8221,-315.7295],[-973.5627,-45.7413,-313.9789],[-973.9128,-45.7143,-313.0631],[-973.2933,-45.7143,-312.309],[-971.1387,-45.5797,-311.9858],[-968.7685,-45.4181,-310.693],[-968.3645,-45.3911,-309.5079],[-962.5199,-45.1756,-307.7033],[-960.2844,-45.1487,-306.0604],[-959.8804,-45.1487,-302.8553],[-957.4833,-45.1487,-299.6502],[-958.0489,-45.2026,-295.8525],[-957.6719,-45.1487,-293.8595],[-958.3991,-45.2026,-291.1122],[-957.5911,-45.2295,-289.9272],[-958.3991,-45.2834,-286.3988],[-956.4598,-45.2295,-287.557],[-955.598,-45.3103,-287.3415],[-956.1366,-45.3373,-286.6682],[-954.5745,-45.3642,-286.8567],[-955.3556,-45.3642,-285.914],[-954.2244,-45.445,-286.4527],[-954.0897,-45.5393,-281.5239],[-953.955,-45.6335,-276.595],[-951.8811,-45.5527,-269.6461],[-950.4806,-45.7413,-269.9155],[-949.3224,-45.8221,-268.5419],[-947.0061,-45.7951,-269.4307],[-943.3701,-45.6605,-267.5453],[-941.6464,-45.5797,-265.0674],[-935.1823,-45.5797,-263.9901],[-935.4786,-45.5797,-263.4245],[-933.5932,-45.6605,-262.6973],[-931.9233,-45.6874,-262.7511],[-931.9503,-45.8221,-261.189],[-930.4689,-46.0106,-260.2463],[-929.7148,-46.253,-258.4956],[-930.846,-46.1991,-257.526],[-929.7686,-46.3069,-256.6372],[-928.0988,-46.4685,-256.8796],[-927.2369,-46.3877,-255.7215],[-924.2203,-46.5223,-254.6711],[-922.0387,-45.9567,-254.7519],[-920.5035,-46.4146,-255.0751],[-916.9213,-46.3877,-253.4052],[-915.0629,-46.3069,-255.3983],[-912.2618,-46.253,-257.122],[-913.2583,-46.1991,-261.2698],[-912.8543,-46.1722,-262.5357],[-909.8647,-45.9837,-264.2325],[-908.545,-46.0106,-263.7477],[-905.2591,-45.9029,-264.1248],[-905.4207,-46.0106,-263.0474],[-900.842,-45.9702,-261.6873],[-896.2632,-45.9298,-260.3271],[-895.967,-45.8759,-261.5122],[-894.0547,-45.9567,-259.4652],[-894.1624,-45.5527,-263.8554],[-893.2467,-45.3373,-265.8754],[-892.8427,-45.2026,-269.4845],[-893.5699,-45.2565,-270.6966],[-893.0581,-45.3642,-272.151],[-893.6237,-45.2565,-272.0702],[-893.92,-45.4719,-274.3595],[-893.112,-45.6605,-274.3595],[-893.7853,-45.7143,-275.2214],[-891.3344,-45.7413,-276.4873],[-893.3275,-45.7951,-279.019],[-889.3952,-45.849,-280.8236],[-891.3883,-45.8221,-283.2207],[-896.8558,-45.8221,-283.894],[-895.536,-45.8759,-286.1026],[-898.2563,-46.0106,-287.7725],[-895.132,-46.0106,-290.8968],[-895.3206,-46.0375,-292.6744],[-897.5561,-46.0914,-292.4589],[-894.4856,-46.0645,-293.9133],[-893.6237,-46.0375,-297.1184],[-896.0208,-46.1453,-300.2427],[-894.5664,-46.0914,-304.3097],[-895.7784,-46.1722,-307.1108],[-897.0443,-46.6839,-308.3228],[-899.3606,-47.4381,-309.2116],[-899.7915,-48.1653,-312.0396],[-901.0574,-48.5423,-312.6322],[-901.5692,-48.7848,-313.5479],[-900.9766,-48.7309,-313.7903],[-903.1582,-49.0272,-316.4298],[-901.9193,-49.108,-318.7461],[-902.2964,-49.2696,-321.3048],[-905.7977,-49.5389,-322.0859],[-905.8516,-49.6466,-322.84],[-907.2791,-49.6736,-322.4091],[-907.9524,-49.5389,-321.5741],[-909.8108,-49.6466,-322.2205],[-909.5954,-49.6466,-323.0016],[-913.4469,-49.5928,-322.4629],[-913.9586,-49.4042,-327.311],[-915.7093,-49.2157,-331.378],[-914.1337,-49.31,-335.5123],[-912.5581,-49.4042,-339.6466],[-912.8543,-49.7005,-343.6058],[-916.7328,-49.4312,-341.5319],[-918.8336,-49.8082,-346.38],[-924.4358,-49.8352,-346.38],[-928.4758,-50.0506,-348.7501],[-932.5159,-50.2661,-351.1203],[-939.3839,-50.32,-351.2819],[-939.3301,-50.32,-358.3116],[-943.8549,-50.1853,-361.0588],[-944.5821,-50.1584,-368.3847],[-948.6356,-50.0641,-367.3209],[-952.6891,-49.9698,-366.257],[-956.2982,-49.916,-367.8461],[-959.9343,-49.8352,-366.3108],[-963.5703,-49.7544,-364.7756],[-967.57,-49.714,-366.1223],[-971.5696,-49.6736,-367.469],[-975.3672,-50.0506,-365.4759],[-981.333,-50.118,-366.2435],[-987.2988,-50.1853,-367.0111],[-987.622,-50.2122,-365.8799],[-993.6551,-50.2122,-366.5802],[-993.7898,-50.2122,-367.3074],[-995.8906,-50.2122,-366.8765],[-995.8906,-50.2392,-365.1258],[-994.8402,-50.2392,-364.3986],[-995.2442,-50.2122,-363.7252],[-994.113,-50.2392,-362.9172],[-993.9783,-50.724,-361.0588],[-995.2442,-52.1245,-358.3385],[-992.4701,-52.9999,-355.8606],[-989.6959,-53.8752,-353.3827],[-995.4328,-55.168,-351.7128],[-994.5709,-55.5451,-350.447],[-995.6482,-56.7571,-348.2923],[-993.9245,-56.811,-347.3227],[-993.5205,-57.7267,-345.3296],[-995.1096,-60.0161,-341.7205],[-996.3216,-61.0395,-340.3738],[-993.7898,-61.9553,-336.3068],[-992.093,-61.7667,-335.0679],[-998.5032,-64.6756,-333.2633],[-997.372,-64.8372,-331.6204],[-997.7221,-65.7799,-328.3883],[-1000.934,-66.9111,-327.1763],[-1002.422,-67.8268,-325.1024],[-1000.8262,-67.8807,-323.244],[-1002.7991,-68.581,-322.4629],[-1005.2029,-69.0119,-323.244],[-1005.3376,-69.2274,-322.4091],[-1007.0883,-69.5506,-322.0051],[-1007.5192,-70.4124,-317.6149],[-1008.5966,-70.4932,-317.6418],[-1008.2464,-70.7626,-315.3255],[-1011.263,-71.0858,-315.3794],[-1013.3907,-71.5167,-313.2517],[-1016.4612,-71.8399,-313.1978],[-1016.4612,-71.9477,-311.7972],[-1017.7809,-71.813,-311.8511],[-1018.7775,-71.7052,-312.5783],[-1020.9052,-71.3012,-311.3124],[-1020.4473,-71.409,-309.2385],[-1021.0938,-71.4898,-306.0604],[-1023.4908,-71.409,-305.2793],[-1025.2954,-71.6783,-301.1046],[-1030.6821,-71.7052,-301.0507],[-1034.803,-71.8399,-299.3808],[-1037.4694,-71.8399,-301.4009],[-1038.1697,-72.0015,-304.8753],[-1041.9134,-72.0015,-299.5963],[-1042.9908,-72.1362,-302.4513],[-1046.7345,-72.5671,-304.5521],[-1046.2767,-72.621,-307.6764],[-1047.2193,-72.6749,-308.8345],[-1049.3471,-72.8903,-308.4305],[-1048.2159,-72.6749,-310.0466],[-1049.2663,-72.6749,-311.2855],[-1051.3941,-72.7557,-312.1204],[-1053.7911,-72.9711,-311.2047],[-1055.1378,-72.7557,-314.7599],[-1057.077,-72.6749,-315.945],[-1057.3195,-72.8903,-313.1978],[-1060.1205,-72.7287,-314.1405],[-1060.5784,-72.9442,-310.1004],[-1064.8609,-72.7557,-309.8311],[-1067.9313,-72.7018,-306.6529],[-1065.0494,-72.8903,-304.579],[-1069.278,-72.6749,-303.6094],[-1069.1702,-72.6749,-301.8857],[-1073.7893,-72.5941,-301.4143],[-1078.4085,-72.5133,-300.943],[-1078.3815,-72.4863,-297.1454],[-1081.829,-72.5133,-297.4147],[-1083.7682,-72.5133,-295.7448],[-1084.7109,-72.4325,-292.405],[-1088.1854,-72.3517,-292.7282],[-1089.4512,-72.1901,-289.3346],[-1089.1819,-72.1093,-286.749],[-1089.9091,-72.0823,-286.345],[-1089.7206,-72.0554,-285.0252],[-1092.387,-72.4863,-283.1129],[-1092.3331,-72.7557,-281.2545],[-1094.3262,-73.2405,-279.0998],[-1096.9657,-73.6175,-277.8609],[-1096.6964,-73.7522,-275.0598],[-1098.474,-74.1023,-273.3899],[-1097.3967,-74.1562,-270.2118],[-1097.4236,-74.2909,-268.4611],[-1099.2281,-74.5602,-268.4072],[-1097.6929,-74.5063,-264.6096],[-1100.1977,-74.8565,-264.9597],[-1100.8442,-75.0181,-263.8285],[-1099.2551,-74.8834,-261.0274],[-1102.9988,-75.4221,-261.2967],[-1105.5306,-75.853,-260.6773],[-1103.4567,-75.6645,-259.4383],[-1107.3621,-76.2705,-259.8827],[-1111.2675,-76.8765,-260.3271],[-1115.496,-77.7922,-257.9031],[-1115.1728,-77.8461,-256.0716],[-1116.2771,-78.277,-255.2367],[-1117.139,-78.5194,-253.5937],[-1116.1963,-78.3578,-251.9238],[-1118.0278,-78.9235,-246.4832],[-1117.3275,-78.9235,-241.0157],[-1119.8323,-79.0581,-237.9857],[-1122.3372,-79.1928,-234.9557],[-1119.8862,-79.1389,-233.4205],[-1118.5395,-79.1928,-227.2796],[-1121.2598,-79.2467,-228.1953],[-1123.8454,-79.2467,-222.2699],[-1119.9131,-79.2467,-216.56],[-1125.5692,-79.1928,-215.9675],[-1122.8489,-79.1389,-214.7016],[-1119.9939,-79.1928,-212.089],[-1123.7108,-79.4083,-209.7458],[-1123.6838,-79.6776,-208.1837],[-1122.3372,-79.4083,-206.8101],[-1122.795,-79.6237,-206.2175],[-1120.6404,-79.6237,-203.7935],[-1119.4014,-79.9469,-197.2217],[-1123.3876,-79.9739,-194.1109],[-1127.3738,-80.0008,-191]],"expectedDistance":1101.32,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-54474","objectiveId":"creature-54474","objectiveName":"Razorlash","checkpoints":[[-1127.3738,-80.0008,-191],[-1123.3876,-79.9739,-194.1109],[-1119.4014,-79.9469,-197.2217],[-1120.6404,-79.6237,-203.7935],[-1122.795,-79.6237,-206.2175],[-1122.3372,-79.4083,-206.8101],[-1123.6838,-79.6776,-208.1837],[-1123.7108,-79.4083,-209.7458],[-1119.9939,-79.1928,-212.089],[-1122.8489,-79.1389,-214.7016],[-1125.5692,-79.1928,-215.9675],[-1119.9131,-79.2467,-216.56],[-1123.8454,-79.2467,-222.2699],[-1121.2598,-79.2467,-228.1953],[-1118.5395,-79.1928,-227.2796],[-1114.3918,-79.0581,-222.0814],[-1112.8835,-78.4925,-226.3638],[-1111.3752,-77.9269,-230.6463],[-1107.3621,-77.1458,-231.8314],[-1104.2917,-76.6072,-235.0365],[-1101.1943,-76.0146,-233.4474],[-1101.0058,-75.9608,-234.5786],[-1101.0058,-75.9877,-233.5013],[-1098.9319,-75.6376,-231.4004],[-1098.3124,-75.5029,-232.1546],[-1096.05,-75.0989,-230.2154],[-1097.0465,-75.2066,-232.8548],[-1093.9222,-74.5333,-230.0807],[-1092.7641,-74.3986,-229.7036],[-1092.0369,-74.3986,-231.0772],[-1090.9057,-74.2639,-230.4578],[-1089.7206,-74.1293,-230.5655],[-1087.3774,-73.9677,-228.33],[-1083.8221,-73.6445,-227.5489],[-1082.7986,-73.4829,-228.0068],[-1082.7448,-73.4021,-227.0103],[-1080.9672,-73.3213,-227.8183],[-1079.2703,-73.1058,-230.1884],[-1073.6681,-72.6479,-231.0772],[-1073.2641,-72.621,-233.0703],[-1071.2711,-72.5133,-234.8479],[-1066.4769,-72.1901,-233.6629],[-1064.6723,-72.1901,-234.3901],[-1060.8208,-71.9746,-232.1815],[-1059.3395,-72.0285,-231.6967],[-1059.8243,-72.0823,-232.6663],[-1057.2386,-72.0823,-232.3162],[-1052.9831,-72.0823,-230.5924],[-1047.4887,-72.1227,-233.3397],[-1041.9942,-72.1631,-236.0869],[-1042.9908,-72.1362,-231.0772],[-1039.7857,-72.1631,-227.7375],[-1037.3886,-72.1901,-227.7644],[-1036.9038,-72.1362,-221.1657],[-1033.2677,-72.1901,-223.1049],[-1033.0253,-72.0285,-221.2195],[-1029.8202,-71.5706,-220.3577],[-1028.9584,-71.1935,-218.7416],[-1025.3762,-70.4394,-216.7486],[-1024.0565,-70.3047,-217.0179],[-1021.5247,-69.2004,-214.7016],[-1020.9322,-68.7426,-214.7016],[-1020.8514,-68.8772,-213.8936],[-1020.0972,-68.5001,-213.8936],[-1019.5047,-68.6348,-213.0856],[-1018.4543,-68.15,-213.4896],[-1017.2422,-67.9615,-213.0856],[-1016.8382,-68.15,-212.2776],[-1015.0606,-68.0423,-212.7893],[-1012.6635,-67.8807,-211.2002],[-1008.5158,-67.5305,-211.8197],[-1004.3613,-67.2881,-209.3149],[-1003.2772,-67.3959,-204.009],[-999.796,-67.3151,-202.8777],[-999.7691,-67.5575,-195.4441],[-993.1434,-67.6113,-192.4006],[-987.218,-67.5844,-192.5352],[-982.37,-67.5575,-190.8115],[-981.5889,-67.4497,-191.1616],[-982.6662,-67.6383,-188.6299],[-982.1006,-67.7729,-185.1016],[-979.7574,-67.7191,-185.2093],[-978.8955,-67.8268,-181.8157],[-979.2995,-67.9345,-179.4186],[-977.2526,-67.6921,-179.0684],[-976.0675,-67.3959,-177.8564],[-973.6704,-66.938,-177.4794],[-972.4584,-66.7495,-176.0249],[-970.196,-66.4801,-175.6748],[-968.9301,-66.2647,-176.4559],[-967.1255,-65.9684,-176.1865],[-966.7754,-65.8876,-176.6714],[-965.9943,-65.7529,-175.998],[-964.0012,-65.5644,-177.4255],[-960.7962,-65.0526,-176.1057],[-956.9177,-64.4601,-178.9607],[-954.4398,-64.0561,-178.6644],[-954.0358,-63.9753,-179.4724],[-952.3659,-63.7868,-179.7418],[-950.8307,-63.5982,-181.7349],[-946.1173,-63.1673,-181.277],[-942.9661,-62.871,-181.8157],[-938.2527,-62.467,-178.6914],[-937.9026,-62.4132,-175.8095],[-936.6367,-62.2516,-174.0319],[-935.9364,-62.1977,-174.3012],[-938.3605,-62.2516,-172.4158],[-937.2023,-62.063,-171.1769],[-939.0607,-61.8745,-169.2646],[-937.1215,-61.7398,-168.8875],[-939.4647,-61.659,-168.4297],[-938.0911,-61.6321,-167.5678],[-940.1919,-61.4705,-166.5712],[-940.0034,-61.3897,-165.7632],[-941.5925,-61.255,-165.6286],[-940.4613,-61.0665,-164.0126],[-941.9157,-60.5009,-162.8005],[-941.5117,-60.1507,-160.1341],[-943.7202,-59.9083,-158.8682],[-945.444,-59.7467,-159.9995],[-945.5068,-59.9981,-153.9035],[-945.5697,-60.2495,-147.8075],[-945.6325,-60.5009,-141.7115],[-948.4202,-60.9183,-138.5872],[-951.2078,-61.3358,-135.4629],[-951.6118,-61.5243,-133.4699],[-956.1636,-61.8206,-131.6653],[-956.1097,-62.1169,-128.4063],[-959.3148,-62.3593,-125.7938],[-959.6919,-62.6286,-123.0196],[-962.3044,-62.6556,-122.0769],[-961.9004,-62.8441,-120.1377],[-962.7084,-62.9518,-118.9257],[-964.9709,-62.9518,-117.9561],[-964.3783,-63.1673,-115.9361],[-969.0378,-63.3289,-112.4347],[-968.7416,-63.5982,-109.8491],[-970.2498,-63.5982,-108.5024],[-969.0648,-63.679,-107.8021],[-968.8493,-63.6252,-105.1896],[-970.2498,-63.4905,-102.7117],[-968.4722,-63.5444,-99.9106],[-969.9266,-63.4366,-98.6178],[-968.176,-63.4636,-96.921],[-968.8493,-63.1673,-94.2478],[-966.8562,-62.9788,-91.844],[-967.341,-62.3862,-88.2551],[-965.5095,-62.1977,-85.9118],[-966.6407,-61.7937,-84.1881],[-964.9439,-61.9822,-84.1612],[-966.7215,-61.7129,-83.6494],[-965.9674,-61.8745,-82.5721],[-967.6642,-61.7129,-80.7945],[-966.5869,-61.9284,-79.4478],[-967.5026,-61.8206,-77.4008],[-968.7685,-61.7398,-76.4043],[-968.9032,-61.4435,-69.5631],[-968.149,-61.4705,-68.5935],[-967.1255,-61.7398,-62.5604],[-964.6207,-61.7667,-55.7731],[-965.0517,-61.7667,-56.0694],[-966.3714,-61.7667,-50.8174],[-968.8493,-61.7667,-48.5549],[-968.9032,-62.0092,-45.4845],[-970.2229,-62.1977,-43.2221],[-969.9536,-62.5748,-40.4749],[-972.216,-62.4132,-39.6938],[-971.1656,-62.6017,-38.3471],[-973.4549,-62.3862,-37.0812],[-972.6739,-62.5478,-34.1993],[-968.7146,-62.7902,-32.1254],[-968.6608,-62.6286,-26.7387],[-972.7277,-62.494,-22.16],[-971.2599,-62.494,-18.322],[-969.792,-62.494,-14.4839],[-968.9032,-62.5209,-9.5551],[-972.6335,-62.5074,-7.6563],[-976.3638,-62.494,-5.7574]],"expectedDistance":551.92,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-54579","objectiveId":"creature-54579","objectiveName":"Lord Vyletongue","checkpoints":[[-976.3638,-62.494,-5.7574],[-970.8592,-62.1425,-10.7047],[-965.3547,-61.7911,-15.652],[-959.8501,-61.4397,-20.5993],[-954.3456,-61.0883,-25.5466],[-948.841,-60.7369,-30.4939],[-943.3364,-60.3854,-35.4412],[-937.8319,-60.034,-40.3884],[-932.3273,-59.6826,-45.3357],[-926.8228,-59.3312,-50.283],[-921.3182,-58.9798,-55.2303],[-915.8137,-58.6283,-60.1776],[-910.3091,-58.2769,-65.1249],[-904.8046,-57.9255,-70.0722],[-899.3,-57.5741,-75.0194],[-893.7954,-57.2227,-79.9667],[-888.2909,-56.8712,-84.914],[-882.7863,-56.5198,-89.8613],[-877.2818,-56.1684,-94.8086],[-871.7772,-55.817,-99.7559],[-866.2727,-55.4656,-104.7032],[-860.7681,-55.1141,-109.6504],[-855.2636,-54.7627,-114.5977],[-849.759,-54.4113,-119.545],[-844.2545,-54.0599,-124.4923],[-838.7499,-53.7085,-129.4396],[-833.2453,-53.3571,-134.3869],[-827.7408,-53.0056,-139.3342],[-822.2362,-52.6542,-144.2814],[-816.7317,-52.3028,-149.2287],[-811.2271,-51.9514,-154.176],[-805.7226,-51.6,-159.1233],[-800.218,-51.2485,-164.0706],[-794.7135,-50.8971,-169.0179],[-789.2089,-50.5457,-173.9652],[-783.7043,-50.1943,-178.9125],[-778.1998,-49.8429,-183.8597],[-772.6952,-49.4914,-188.807],[-767.1907,-49.14,-193.7543],[-761.6861,-48.7886,-198.7016],[-756.1816,-48.4372,-203.6489],[-750.677,-48.0858,-208.5962],[-745.1725,-47.7343,-213.5435]],"expectedDistance":311.2,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-55104","objectiveId":"creature-55104","objectiveName":"Celebras the Cursed","checkpoints":[[-745.1725,-47.7343,-213.5435],[-744.6843,-48.704,-206.2919],[-744.1961,-49.6736,-199.0404],[-743.7079,-50.6432,-191.7888],[-743.2198,-51.6128,-184.5373],[-742.7316,-52.5824,-177.2858],[-742.2434,-53.552,-170.0342],[-741.7553,-54.5216,-162.7827],[-741.2671,-55.4912,-155.5312],[-740.7789,-56.4608,-148.2796],[-740.2907,-57.4304,-141.0281],[-739.8026,-58.4,-133.7766],[-739.3144,-59.3697,-126.525],[-738.8262,-60.3393,-119.2735],[-738.3381,-61.3089,-112.022],[-737.8499,-62.2785,-104.7704],[-737.3617,-63.2481,-97.5189],[-736.8735,-64.2177,-90.2673],[-736.3854,-65.1873,-83.0158],[-735.8972,-66.1569,-75.7643],[-735.409,-67.1265,-68.5127],[-734.9209,-68.0961,-61.2612],[-734.4327,-69.0658,-54.0097],[-733.9445,-70.0354,-46.7581],[-733.4563,-71.005,-39.5066],[-732.9682,-71.9746,-32.2551],[-732.48,-72.9442,-25.0035],[-731.9918,-73.9138,-17.752],[-731.5037,-74.8834,-10.5004],[-731.0155,-75.853,-3.2489],[-730.5273,-76.8226,4.0026],[-730.0391,-77.7922,11.2542],[-729.551,-78.7619,18.5057],[-729.0628,-79.7315,25.7572],[-728.5746,-80.7011,33.0088],[-728.0865,-81.6707,40.2603],[-727.5983,-82.6403,47.5118],[-727.1101,-83.6099,54.7634],[-726.6219,-84.5795,62.0149],[-726.1338,-85.5491,69.2664],[-725.6456,-86.5187,76.518]],"expectedDistance":293.29,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-05-creature-89018","objectiveId":"creature-89018","objectiveName":"Landslide","checkpoints":[[-725.6456,-86.5187,76.518],[-720.0434,-86.815,76.518],[-717.2423,-86.9766,74.1209],[-714.4412,-87.1382,73.7169],[-713.6332,-87.2459,75.3329],[-712.8521,-87.5691,74.5249],[-712.0441,-87.7846,75.7369],[-710.3204,-88.0001,75.6022],[-709.0006,-88.1078,72.0403],[-705.3915,-88.1886,71.6363],[-702.6712,-88.3233,68.0204],[-699.924,-88.2963,71.9864],[-697.5808,-88.3771,70.9293],[-695.6954,-88.2694,74.8683],[-691.9786,-88.2963,74.4374],[-690.1202,-88.4579,71.7911],[-686.6188,-88.3771,73.8448],[-684.9759,-88.3502,80.8274],[-681.6731,-88.4175,82.6319],[-678.3704,-88.4849,84.4365],[-674.2226,-88.5926,89.8501],[-669.2601,-88.5926,89.3114],[-669.6372,-88.4849,90.9275],[-668.4184,-88.2425,89.7154],[-666.8024,-87.6499,90.5235],[-666.3984,-87.3267,92.5435],[-664.8093,-86.815,93.7286],[-661.6042,-86.7342,94.5366],[-660.4191,-86.7611,97.3377],[-657.241,-86.7611,100.1118],[-652.8508,-86.6265,100.866],[-649.9958,-86.7342,104.3404],[-647.5987,-86.6534,104.7444],[-645.2555,-86.5187,103.6671],[-644.4475,-86.4649,102.078],[-642.0235,-86.6534,102.5358],[-640.8115,-86.815,104.1249],[-638.8453,-87.1113,104.1788],[-637.7949,-87.2459,102.886],[-636.933,-87.4075,103.4247],[-636.2328,-87.3806,102.2665],[-634.4821,-87.7846,103.1553],[-632.1658,-88.0539,102.6166],[-629.634,-88.7273,104.1249],[-627.6409,-88.9158,103.7209],[-625.6209,-89.4545,104.502],[-624.9476,-89.8585,105.9025],[-623.17,-89.7777,103.9903],[-622.3889,-89.9393,103.9903],[-621.4732,-90.451,106.6836],[-620.2611,-90.5318,106.3335],[-617.8641,-90.6396,107.1415],[-616.9483,-90.7204,109.3231],[-614.4435,-90.855,110.5351],[-613.7163,-90.9358,112.7975],[-609.9994,-91.2321,113.2554],[-608.3296,-91.4206,112.1781],[-606.6597,-91.6092,112.0703],[-605.6901,-91.7977,112.6898],[-603.8586,-91.663,112.609],[-603.3468,-92.2287,113.6864],[-601.8924,-92.5788,113.9288],[-600.5996,-93.2521,117.1877],[-599.1452,-93.6023,116.8645],[-599.226,-93.6561,120.6622],[-598.4988,-93.7639,119.8272],[-598.3641,-93.8716,122.5475],[-597.583,-94.0871,124.1366],[-596.0478,-94.4372,122.5206],[-594.4588,-94.7604,122.8438],[-593.3814,-95.1375,125.5102],[-591.9809,-95.2452,119.4501],[-588.3448,-95.2991,117.5379],[-584.224,-95.2722,112.0703],[-583.4429,-95.2991,109.2692],[-579.6453,-95.5684,110.1311],[-576.8172,-95.8647,104.5559],[-575.6052,-96.134,103.3439],[-574.0431,-95.8108,98.5227],[-572.7503,-96.0532,97.4723],[-571.4844,-95.5415,94.4019],[-570.6764,-95.757,93.6208],[-569.222,-96.161,93.4054],[-562.5694,-96.1879,96.799],[-558.6371,-96.2014,97.1895],[-554.7048,-96.2148,97.5801],[-559.8221,-96.2148,93.5131],[-559.2296,-96.2148,93.1899],[-558.3139,-96.2148,90.8467],[-551.8498,-96.2148,88.6381],[-552.0249,-96.2148,84.6115],[-552.1999,-96.2148,80.585],[-556.2265,-96.2148,79.0901],[-560.2531,-96.2148,77.5953],[-557.2365,-96.2148,72.1211],[-560.684,-96.2148,68.6399],[-566.8249,-96.2148,70.2627],[-565.8553,-96.2148,66.4886],[-564.8857,-96.2148,62.7145],[-570.4205,-96.2148,60.8157],[-575.9554,-96.2148,58.9169],[-574.5818,-96.2148,55.3448],[-573.2081,-96.2148,51.7727],[-577.8138,-96.2148,51.2745],[-582.4194,-96.2148,50.7762],[-582.0962,-96.2148,49.4564],[-577.4232,-96.2148,49.0659],[-572.7503,-96.2148,48.6754],[-577.2212,-96.2148,47.6788],[-581.6922,-96.2148,46.6823],[-581.3152,-96.2148,43.2617],[-576.7499,-96.2148,43.1001],[-572.1847,-96.2148,42.9385],[-572.5887,-96.2148,38.5214],[-567.9157,-96.2148,38.2251],[-563.2427,-96.2148,37.9289],[-562.7579,-96.2148,36.9323],[-559.6875,-96.2148,34.5083],[-557.3846,-96.2148,30.0373],[-555.0818,-96.2148,25.5663],[-551.3919,-96.2148,22.4959],[-547.702,-96.2148,19.4255],[-547.5673,-96.2148,26.4821],[-543.5004,-96.2148,26.8322],[-541.3726,-96.2148,21.4455],[-539.2987,-96.2148,21.7956],[-537.8443,-96.2148,27.5325],[-535.9051,-96.2148,21.7956],[-533.5619,-96.2148,27.4517],[-532.9963,-96.2148,23.7214],[-532.4307,-96.2148,19.9911],[-528.7004,-96.2148,17.6883],[-524.9701,-96.2148,15.3854],[-521.2936,-96.2148,20.5836],[-517.6172,-96.2148,25.7818],[-518.9908,-96.2148,31.9496],[-520.3644,-96.2148,38.1174],[-516.0281,-96.2148,40.7569],[-511.6918,-96.2148,43.3964],[-509.16,-96.2148,46.9247],[-503.8541,-96.2014,45.1201],[-498.5482,-96.1879,43.3156],[-493.2827,-96.1744,46.8439],[-488.0172,-96.161,50.3722],[-492.2592,-96.1744,55.301],[-496.5012,-96.1879,60.2299],[-492.1649,-96.1744,62.0344],[-487.8286,-96.161,63.839],[-492.138,-96.1744,64.5797],[-496.4474,-96.1879,65.3203],[-492.1784,-96.1879,65.8994],[-487.9094,-96.1879,66.4785],[-487.667,-96.2148,69.1516],[-482.9267,-96.2014,69.6499],[-478.1864,-96.1879,70.1482],[-476.9205,-96.161,71.4208],[-479.1291,-96.1744,74.8582],[-481.3376,-96.1879,78.2956],[-480.0717,-96.161,78.0801],[-482.2668,-96.1744,81.5411],[-484.4619,-96.1879,85.0021],[-480.772,-96.161,85.3253],[-482.1052,-95.8782,89.4596],[-483.4384,-95.5954,93.5939],[-486.3203,-95.0567,95.0483],[-483.4923,-93.8447,98.4419],[-484.7582,-93.5484,99.8425],[-484.8121,-93.6023,104.502],[-482.792,-93.6292,108.2188],[-481.5531,-93.7369,112.0165],[-482.7651,-93.8985,114.629],[-477.3649,-93.9255,115.9353],[-471.9647,-93.9524,117.2416],[-473.5807,-94.114,119.9888],[-473.7827,-94.114,124.1231],[-473.9847,-94.114,128.2574],[-478.6712,-94.105,130.9688],[-483.3576,-94.096,133.6801],[-488.0441,-94.0871,136.3914],[-490.6297,-94.0871,132.6745],[-494.2927,-94.0871,137.1455],[-495.9087,-94.0871,137.4149],[-496.6359,-94.0601,140.9432],[-499.841,-94.0601,137.8189],[-501.7533,-94.0332,143.017],[-504.0157,-94.0332,145.468],[-506.4936,-94.0332,140.7816],[-511.6918,-94.0332,143.044],[-515.8126,-94.0332,148.2691],[-510.6952,-94.0332,152.7939],[-514.2505,-94.0332,159.2849],[-510.4528,-94.0332,161.1164],[-506.6552,-94.0332,162.9479],[-501.6456,-94.0332,159.7428],[-499.1677,-94.0332,162.8132],[-500.1103,-94.0332,165.6682],[-496.5282,-94.0332,168.1192],[-498.3327,-94.0332,173.3712],[-496.3127,-94.0332,178.7849],[-489.7678,-94.0332,176.0646],[-488.6636,-94.0332,180.2662],[-487.5593,-94.0332,184.4679],[-481.58,-94.0332,180.1854],[-480.1795,-94.0332,187.3228],[-477.3784,-94.0332,185.6529],[-477.4322,-94.0332,190.3933],[-477.4861,-94.0332,195.1336],[-473.6211,-94.0332,197.4364],[-469.7562,-94.0332,199.7392],[-470.3487,-94.0332,205.6646],[-469.1636,-94.0332,208.9774],[-465.4064,-94.0332,209.6777],[-461.6492,-94.0332,210.378],[-468.2479,-94.0332,212.2364],[-464.5176,-94.0332,212.7751],[-460.7873,-94.0332,213.3138],[-465.3795,-94.0332,218.0844],[-469.9716,-94.0332,222.855],[-464.0058,-94.0332,225.9793],[-458.0401,-94.0332,229.1036],[-455.6026,-94.0332,232.1336],[-453.1651,-94.0332,235.1636],[-453.0304,-94.0063,242.2539],[-445.7583,-94.0197,243.9238],[-438.4863,-94.0332,245.5937],[-438.0015,-93.9659,249.4081],[-437.5166,-93.8985,253.2226],[-433.1938,-93.4272,253.4785],[-428.871,-92.9559,253.7344],[-428.7902,-92.902,254.4616],[-427.3088,-92.8212,255.108],[-422.4608,-92.2017,256.1314],[-421.1141,-92.0671,257.2357],[-419.2287,-92.1209,257.5051],[-418.2861,-92.094,256.293],[-415.9428,-92.1209,256.293],[-415.081,-92.094,254.4346],[-413.4649,-92.2287,253.3842],[-412.6569,-92.094,251.1218],[-409.8289,-92.4172,250.6101],[-408.4014,-92.5519,251.1218],[-408.3206,-92.6057,251.8759],[-405.9235,-93.0636,251.6335],[-405.3041,-93.2252,252.4415],[-402.5838,-93.4945,252.1722],[-401.2371,-93.8177,252.5762],[-399.6211,-93.8177,252.1722],[-399.1093,-93.9255,252.9533],[-395.7157,-93.8985,250.8794],[-389.7903,-94.0063,254.9464],[-386.8545,-94.0332,252.2799],[-380.4443,-94.0063,251.6066],[-381.9796,-93.9793,244.7385],[-376.8891,-93.9524,243.3919],[-372.9029,-93.71,242.9878],[-373.4416,-93.1444,241.6681],[-373.9803,-93.3868,240.9948],[-373.8995,-93.3868,239.6481],[-373.0915,-92.8212,239.4595],[-373.4147,-93.8985,237.655],[-374.1419,-94.2487,237.251],[-373.4955,-94.6796,236.4093],[-370.3712,-94.7604,235.6417],[-369.8864,-95.1375,235.0492],[-368.6205,-94.7604,234.9684],[-368.4858,-95.4338,233.8372],[-366.7621,-95.1644,233.2985],[-365.5231,-96.4572,230.8745],[-362.3719,-96.5919,230.7398],[-361.0791,-97.6154,228.5312],[-358.8436,-97.9386,228.2619],[-360.5673,-99.2045,223.5216],[-355.8136,-100.0125,221.8921],[-351.0598,-100.8205,220.2626],[-350.7096,-101.0898,219.3469],[-351.4638,-101.7631,213.233],[-357.6585,-101.8439,209.1121],[-356.8505,-102.0325,206.1225],[-361.3754,-102.9482,206.3379],[-360.6751,-103.2176,203.483],[-361.1329,-103.9448,200.628],[-363.0452,-104.8605,199.8739],[-364.9845,-106.0725,198.0693],[-365.6578,-107.2307,192.6557],[-367.4893,-107.5539,194.3256],[-369.1053,-108.6851,191.0397],[-370.3442,-108.8467,192.7365],[-370.9906,-109.143,192.2786],[-370.8021,-109.6008,189.0466],[-371.3947,-109.6278,190.0431],[-370.9368,-109.8971,187.2151],[-373.0107,-110.9206,185.0335],[-376.6736,-111.7824,187.5114],[-382.7337,-112.7521,183.3636],[-388.5783,-112.6982,182.4209],[-392.0258,-112.8598,176.7918],[-393.5071,-113.3715,176.3608],[-394.8538,-113.2907,176.7918],[-396.416,-113.8294,176.2531],[-398.5437,-113.3177,177.3035],[-400.7253,-113.8563,176.8457],[-403.5264,-113.7755,175.9838],[-404.7654,-113.2369,176.4147],[-407.8358,-113.3715,175.2296],[-409.4788,-113.9102,173.9368],[-411.6604,-113.5331,173.7752],[-412.3068,-113.9371,172.9403],[-413.1148,-113.4793,173.3443],[-414.1383,-113.6947,172.4016],[-414.2729,-114.5297,170.4624],[-415.5388,-114.7451,168.981],[-416.7508,-114.2065,169.8429],[-417.7474,-115.4185,166.6378],[-420.2522,-115.9841,164.6447],[-421.572,-117.1692,161.305],[-420.6562,-117.5193,160.5239],[-424.4269,-117.6001,159.3657],[-422.0298,-118.1926,157.5612],[-427.4435,-118.3273,156.026],[-425.208,-119.3239,152.5785],[-422.1106,-119.4316,152.7939],[-424.4808,-119.674,151.5011],[-420.4003,-119.9433,151.2722],[-416.3199,-120.2127,151.0433],[-416.3738,-120.6436,147.0302],[-412.7377,-120.8321,144.7408],[-410.7446,-120.9937,146.7608],[-410.9332,-120.9129,149.3464],[-408.186,-122.2327,148.2152],[-406.0582,-123.0946,145.6296],[-405.3041,-123.4986,146.2491],[-405.0347,-123.7948,147.4611],[-403.7688,-124.2527,146.5184],[-401.9643,-124.953,147.1648],[-400.6984,-125.3839,146.1952],[-398.5168,-126.0842,140.9701],[-395.7157,-127.0269,137.1186],[-390.8676,-128.8045,139.1117],[-387.5009,-129.9896,138.4114],[-384.0265,-131.4978,143.3941],[-380.9022,-131.6325,140.9432],[-376.916,-131.6594,145.7912],[-372.068,-131.6864,143.7173],[-369.9402,-131.6864,148.296],[-367.8664,-131.6864,148.296],[-366.3311,-131.6864,143.852],[-363.2607,-131.6864,148.0536],[-361.8602,-131.6864,143.3403],[-358.8436,-131.6864,147.7843],[-357.039,-131.6864,142.9362],[-355.2345,-131.6864,147.7843],[-353.4569,-131.6864,143.2056],[-352.2449,-131.6864,148.6731],[-349.4707,-131.6864,144.1483],[-348.2587,-131.6864,149.8043],[-345.9963,-131.6864,144.8755],[-345.5923,-131.6864,150.5315],[-341.2088,-131.6594,146.9224],[-336.8254,-131.6325,143.3133],[-332.8325,-131.5517,145.4949],[-331.4319,-131.417,146.8955],[-329.8159,-131.3362,147.0302],[-330.3815,-131.4709,144.3099],[-328.6039,-131.3362,144.8755],[-329.4119,-131.4709,142.9901],[-326.4223,-131.3632,141.9128],[-325.4257,-131.4978,138.3575],[-322.8401,-131.444,136.9031],[-322.059,-131.5517,135.718],[-323.8636,-131.6325,131.5972],[-320.9817,-131.6594,128.015],[-317.8843,-131.6864,121.3355],[-322.1668,-131.6864,117.4571],[-321.0355,-131.6864,110.589],[-317.1571,-131.6864,105.2023],[-313.3595,-131.6864,104.6367],[-309.5618,-131.6864,104.0711],[-308.2421,-131.6594,97.9302],[-302.7207,-131.6594,98.3881],[-302.5052,-131.6594,95.9102],[-305.1986,-131.6325,94.5366],[-305.441,-131.6325,93.136],[-302.8823,-131.6325,91.3853],[-305.6026,-131.6056,90.0656],[-308.2152,-131.3901,85.7293],[-303.9058,-131.1746,82.8474],[-301.778,-130.9592,79.4537],[-301.8454,-130.9592,74.4946],[-301.9127,-130.9592,69.5354],[-306.3433,-130.9592,68.6332],[-310.7738,-130.9592,67.7309],[-313.3864,-130.9592,64.0612],[-309.5888,-130.9592,59.8158],[-305.7911,-130.9592,55.5704],[-310.5853,-130.9592,58.4927],[-315.3795,-130.9592,61.415],[-311.3395,-130.9592,57.55],[-307.2994,-130.9592,53.685],[-313.6961,-130.9592,52.4595],[-320.0929,-130.9592,51.2341],[-315.8239,-130.9592,47.1402],[-311.5549,-130.9592,43.0462],[-311.9859,-130.9592,40.0566],[-315.191,-130.9592,36.2186],[-318.3961,-130.9592,32.3805],[-314.2887,-130.9592,28.7445],[-310.1813,-130.9592,25.1085],[-307.5149,-130.9592,25.3778],[-304.0674,-130.9592,24.0581],[-304.5926,-130.9592,19.5871],[-305.1178,-130.9592,15.1161],[-302.6399,-130.9592,13.123],[-303.2324,-130.9592,11.6417],[-297.1993,-130.9592,11.709],[-291.1662,-130.9592,11.7763],[-284.9984,-130.9592,11.4127],[-278.8306,-130.9592,11.0491],[-277.9148,-130.9592,9.5947],[-283.9884,-130.9322,8.5578],[-290.0619,-130.9053,7.5208],[-287.2608,-130.9053,2.987],[-284.4597,-130.9053,-1.5468],[-281.6586,-130.9053,-6.0806],[-275.2888,-130.9322,-5.4881],[-268.919,-130.9592,-4.8956],[-265.3099,-130.9592,-7.2927],[-265.0855,-130.9592,-14.044],[-264.861,-130.9592,-20.7954],[-264.6366,-130.9592,-27.5467],[-260.9332,-130.9592,-22.0792],[-257.2298,-130.9592,-16.6117],[-257.1401,-130.9592,-23.2104],[-257.0503,-130.9592,-29.8091],[-256.9605,-130.9592,-36.4079],[-249.4999,-130.9592,-36.9466],[-245.6843,-130.9592,-32.0177],[-241.8687,-130.9592,-27.0889],[-238.0531,-130.9592,-22.16],[-235.1443,-130.9592,-28.7587],[-232.2355,-130.9592,-35.3575],[-229.3266,-130.9592,-41.9562],[-226.3909,-130.9592,-35.0881],[-223.4551,-130.9592,-28.2201],[-220.8156,-130.9592,-34.5091],[-218.1761,-130.9592,-40.7981],[-219.9133,-130.9592,-47.8008],[-221.6506,-130.9592,-54.8035],[-215.8329,-130.9053,-55.1806],[-218.5801,-130.8514,-59.1937],[-213.5166,-130.7706,-60.4596],[-213.8667,-130.3397,-62.8028],[-217.3277,-129.9222,-64.4323],[-220.7887,-129.5048,-66.0618],[-216.1292,-129.5048,-68.7821],[-221.5428,-129.5048,-72.1218],[-220.3712,-129.5048,-79.0875],[-219.1996,-129.5048,-86.0532],[-223.4955,-129.5048,-90.4872],[-227.7914,-129.5048,-94.9211],[-231.3871,-129.5048,-93.5879],[-234.9827,-129.5048,-92.2547],[-235.8984,-129.5048,-86.538],[-239.6153,-129.5048,-89.3391],[-241.0158,-129.5048,-94.9211],[-242.2817,-129.5048,-89.2583],[-244.2209,-129.5048,-94.7865],[-247.2913,-129.5048,-88.9351],[-248.4495,-129.5048,-94.7326],[-254.8597,-129.5048,-96.3486],[-254.6981,-129.5048,-100.9442],[-254.5365,-129.5048,-105.5397],[-260.3811,-129.5048,-108.7448],[-259.5731,-129.5048,-111.4651],[-255.4522,-129.5048,-111.6806],[-254.8597,-129.5048,-112.4886],[-258.3341,-129.5048,-114.6163],[-255.3041,-129.5048,-116.8922],[-252.2741,-129.5048,-119.1681],[-256.2064,-129.5048,-123.9623],[-250.3887,-129.5317,-127.6253],[-254.5903,-129.6933,-128.9181],[-258.792,-129.8549,-130.2109],[-252.2471,-130.205,-132.1501],[-250.6311,-130.636,-134.5472],[-246.9008,-130.7572,-134.9781],[-243.1705,-130.8784,-135.4091],[-247.3991,-130.8784,-140.3918],[-243.6553,-130.9592,-138.695],[-245.1905,-130.7976,-142.6273],[-239.4537,-130.7976,-143.5161],[-239.5614,-130.7168,-148.5527],[-237.0566,-130.8514,-150.061],[-241.77,-130.7168,-155.6901],[-239.1574,-130.8514,-157.5216],[-238.4033,-130.9322,-163.447],[-241.8508,-130.8514,-167.9179],[-237.3528,-131.1208,-170.6113],[-237.676,-131.1477,-173.4393],[-232.6933,-131.1746,-174.8937],[-226.4986,-131.1208,-175.2708],[-224.4247,-131.0938,-177.3447],[-227.9261,-131.0938,-181.7349],[-222.8626,-130.9322,-184.6706],[-224.8557,-130.8514,-187.8488],[-224.5324,-130.7706,-191.5926],[-220.9772,-130.8514,-191.9427],[-220.8425,-130.9322,-196.4137],[-224.0746,-130.8784,-198.5414],[-222.8626,-130.9592,-200.2652],[-224.8018,-130.8784,-199.5918],[-223.7244,-130.9592,-200.6692],[-225.3943,-130.8514,-200.346],[-224.2362,-130.9322,-201.7465],[-226.3639,-130.8245,-202.5545],[-224.8826,-130.9322,-203.8743],[-226.0946,-130.9053,-205.8674],[-223.913,-131.013,-206.0559],[-226.4447,-131.0669,-209.2341],[-226.0138,-131.0669,-209.9613],[-226.6063,-131.3093,-211.281],[-226.3639,-131.5517,-213.1664],[-225.2327,-131.3632,-213.8936],[-225.6367,-131.1208,-217.8798],[-227.6567,-130.9861,-221.8659],[-223.913,-131.04,-224.8017],[-225.7714,-131.04,-228.6801],[-221.7044,-131.0669,-231.0234],[-226.6871,-130.8245,-235.4405],[-229.7576,-130.8245,-236.7064],[-229.8384,-130.7437,-240.2885],[-226.0407,-130.8514,-241.2851],[-223.913,-130.9861,-243.0627],[-227.7914,-130.8514,-243.332],[-228.1146,-130.8514,-244.0592],[-224.9095,-130.9861,-246.3216],[-229.0304,-130.8514,-248.4494],[-235.4406,-130.8514,-250.254],[-236.464,-130.9188,-255.6003],[-237.4875,-130.9861,-260.9466],[-238.6726,-131.0669,-264.1517],[-237.5414,-131.0938,-268.7573],[-239.2382,-131.0938,-268.2725],[-240.5849,-131.2285,-268.5688],[-243.9246,-131.2285,-267.276],[-245.406,-131.3632,-267.8147],[-246.8873,-131.2285,-267.1952],[-247.6415,-131.1746,-267.6261],[-249.1498,-131.1746,-270.6696],[-250.0386,-130.8245,-271.0736],[-251.4122,-130.3128,-273.3361],[-252.5703,-129.6394,-273.363],[-253.5399,-129.2624,-274.4134],[-254.5365,-128.6429,-274.3057],[-254.6981,-128.6698,-275.4369],[-255.6946,-128.0503,-275.2214],[-256.3949,-127.8079,-276.4065],[-257.3914,-127.2693,-276.9452],[-257.7146,-126.9999,-276.2987],[-257.8493,-126.9999,-277.43],[-258.792,-126.5151,-277.5916],[-259.8155,-126.0034,-279.2884],[-260.7312,-125.4647,-278.6958],[-261.8894,-124.8991,-278.8305],[-263.3438,-124.1988,-279.7462],[-264.5827,-124.0372,-274.1441],[-266.3334,-123.3639,-276.3526],[-268.0033,-123.2023,-273.9555],[-268.4073,-123.2292,-271.5584],[-271.2353,-122.502,-271.1544],[-272.3935,-122.2058,-271.9894],[-274.3057,-121.7479,-271.5584],[-275.1407,-121.4785,-269.9424],[-276.0834,-121.2361,-269.8347],[-276.7028,-120.9668,-265.5253],[-277.6455,-120.886,-266.5488],[-278.265,-120.6705,-262.5895],[-277.9687,-120.3743,-258.0647],[-279.3962,-120.3743,-255.8831],[-278.4805,-120.2127,-254.7249],[-277.3223,-119.9703,-255.5868],[-276.7836,-119.8087,-254.2671],[-274.3865,-119.2431,-256.3679],[-271.9895,-118.5158,-256.2871],[-271.6124,-118.2196,-254.698],[-270.6966,-117.9233,-255.0751],[-270.4812,-117.6001,-252.3817],[-269.5116,-117.1961,-251.9777],[-267.2761,-116.038,-248.3686],[-266.0641,-115.0145,-243.1704],[-260.8389,-112.8867,-241.0696],[-259.9501,-112.2807,-237.2316],[-259.0613,-111.6747,-233.3935],[-254.2671,-111.2707,-232.5586],[-249.473,-110.8667,-231.7236],[-250.658,-110.9206,-224.667],[-246.8873,-110.9206,-224.2765],[-243.1166,-110.9206,-223.886],[-246.9143,-110.9206,-222.1218],[-250.7119,-110.9206,-220.3577],[-244.1132,-110.8936,-217.7451],[-247.9108,-110.8936,-216.8024],[-251.7085,-110.8936,-215.8597],[-245.9716,-110.8667,-212.4661],[-239.5614,-110.759,-211.0117],[-242.0932,-110.732,-205.0863],[-241.7969,-110.5704,-204.0628],[-239.7499,-110.1126,-202.5815],[-237.7568,-110.0048,-201.7735],[-233.3128,-109.0891,-201.4503],[-229.4613,-108.739,-200.4268],[-227.3605,-108.6043,-200.75],[-224.4247,-108.6043,-199.2956],[-222.4316,-108.5235,-199.2956],[-220.0345,-108.5235,-197.895],[-219.2265,-108.5235,-195.067],[-215.3481,-108.6582,-194.7438],[-213.1126,-108.8736,-192.0504],[-209.4766,-109.116,-192.8046],[-208.9648,-109.116,-189.5187],[-207.9952,-109.0622,-187.9565],[-207.2141,-109.116,-188.3605],[-205.652,-109.3315,-184.4282],[-204.2514,-109.5739,-183.2162],[-202.1506,-110.0048,-182.6506],[-200.3191,-110.2742,-180.7922],[-197.922,-110.732,-179.4724],[-198.0567,-110.8398,-178.7452],[-195.9559,-111.0822,-178.3951],[-196.737,-111.0552,-177.5332],[-194.286,-111.2168,-176.9676],[-194.9324,-111.1899,-175.7287],[-199.9151,-110.8667,-174.2743],[-200.6693,-110.732,-172.8468],[-200.3999,-110.3819,-171.1769],[-198.5954,-110.0587,-168.9953],[-199.0802,-109.2507,-164.9283],[-197.6527,-108.8467,-161.9387],[-199.1071,-108.3349,-159.6224],[-199.3226,-107.5808,-156.2018],[-200.9925,-107.2307,-155.7978],[-201.8005,-106.5573,-154.3434],[-201.1002,-106.288,-152.862],[-203.1741,-104.8605,-149.9532],[-201.5312,-104.9413,-148.7681],[-201.2079,-104.4026,-146.7751],[-204.036,-103.3792,-145.9401],[-204.9517,-102.7058,-144.6742],[-201.585,-103.2984,-143.57],[-200.8578,-102.5442,-140.2841],[-204.2514,-101.4669,-139.5299],[-208.4531,-100.7935,-140.9574],[-212.7355,-98.9082,-139.7992],[-215.0788,-98.1002,-140.0147],[-219.7024,-95.8557,-136.9084],[-224.326,-93.6112,-133.802],[-228.9496,-91.3668,-130.6957],[-227.8183,-91.259,-128.6218],[-231.4005,-89.643,-126.1978],[-230.0538,-89.6161,-121.8076],[-232.5587,-88.8081,-117.7945],[-236.5448,-88.3771,-120.5956],[-239.4806,-88.0001,-118.01],[-240.9889,-87.8385,-114.7241],[-246.4295,-87.2459,-115.6667],[-248.261,-87.0574,-114.0777],[-250.3618,-86.815,-114.5625],[-252.1933,-86.5726,-112.9464],[-253.4322,-86.3033,-113.9969],[-254.3479,-85.9801,-117.202],[-256.3141,-85.8454,-115.5321],[-257.6608,-85.4953,-120.3532],[-259.5461,-85.4953,-116.7441],[-263.6131,-85.0104,-118.3062],[-265.7409,-84.4718,-123.3967],[-270.9929,-84.0408,-121.0265],[-272.0433,-83.7176,-124.4471],[-271.5855,-83.4752,-128.5949],[-274.1172,-83.0712,-129.5914],[-275.006,-83.0443,-128.4602],[-276.4335,-82.4248,-129.8338],[-276.8375,-81.9131,-131.4498],[-278.2381,-80.9165,-132.8504],[-279.8002,-80.4856,-132.5002],[-280.9045,-79.4083,-134.5741],[-281.3085,-78.304,-137.1867],[-283.2477,-77.2805,-138.2371],[-283.1669,-76.9842,-139.099],[-283.8402,-76.4994,-139.9609],[-285.1061,-76.0685,-140.2841],[-285.9141,-75.3952,-141.7654],[-285.8603,-74.8565,-143.0313],[-286.9107,-74.0485,-144.2972],[-287.8803,-73.8599,-144.5396],[-288.6075,-72.9711,-146.1286],[-290.008,-72.4055,-146.9636],[-290.8968,-71.1666,-149.1991],[-292.5667,-70.7895,-149.6031],[-295.0985,-69.5775,-151.3268],[-293.5633,-69.0388,-152.7812],[-295.9065,-68.3116,-153.7778],[-297.1454,-67.4497,-155.2053],[-295.0177,-67.4497,-155.6631],[-296.0412,-66.8033,-156.7405],[-298.3305,-66.2377,-157.4138],[-298.0343,-65.5105,-159.0298],[-295.7449,-65.4567,-159.5685],[-294.5059,-65.1873,-160.4035],[-297.8726,-64.487,-161.1307],[-297.334,-64.2985,-161.6693],[-293.3478,-64.4062,-162.2619],[-298.2228,-63.275,-163.4739],[-300.2159,-62.467,-164.6859],[-295.8661,-62.6286,-165.3188],[-291.5163,-62.7902,-165.9518],[-296.122,-61.6321,-167.4331],[-295.3948,-61.0934,-168.6182],[-300.0543,-60.447,-169.0761],[-295.1793,-60.2854,-170.3689],[-294.9638,-59.8545,-171.5809],[-301.4548,-59.8545,-174.5975],[-306.3837,-59.8545,-173.5201],[-308.5653,-59.8545,-176.5906],[-307.4341,-59.8545,-172.9276],[-309.6965,-59.8545,-173.3316],[-311.5549,-59.8545,-176.0788],[-314.4368,-59.8545,-176.0788],[-317.0224,-59.8545,-172.6044],[-320.9278,-59.8545,-172.6717],[-324.8332,-59.8545,-172.739],[-326.9071,-59.8545,-177.7487],[-329.4927,-59.8545,-181.1423],[-330.0852,-59.8545,-183.6741],[-335.2363,-59.8545,-178.2874],[-340.0069,-59.8545,-180.0515],[-344.7775,-59.8545,-181.8157],[-348.4405,-59.8275,-187.3505],[-352.1035,-59.8006,-192.8854]],"expectedDistance":2815.18,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-06-creature-56538","objectiveId":"creature-56538","objectiveName":"Tinkerer Gizlock","checkpoints":[[-352.1035,-59.8006,-192.8854],[-348.4405,-59.8275,-187.3505],[-344.7775,-59.8545,-181.8157],[-340.0069,-59.8545,-180.0515],[-335.2363,-59.8545,-178.2874],[-330.0852,-59.8545,-183.6741],[-329.4927,-59.8545,-181.1423],[-326.9071,-59.8545,-177.7487],[-324.8332,-59.8545,-172.739],[-320.9278,-59.8545,-172.6717],[-317.0224,-59.8545,-172.6044],[-314.4368,-59.8545,-176.0788],[-311.5549,-59.8545,-176.0788],[-309.6965,-59.8545,-173.3316],[-307.4341,-59.8545,-172.9276],[-308.5653,-59.8545,-176.5906],[-306.3837,-59.8545,-173.5201],[-301.4548,-59.8545,-174.5975],[-294.9638,-59.8545,-171.5809],[-295.1793,-60.2854,-170.3689],[-300.0543,-60.447,-169.0761],[-295.3948,-61.0934,-168.6182],[-296.122,-61.6321,-167.4331],[-300.4313,-61.5782,-166.7059],[-295.8257,-62.7364,-165.2246],[-300.2159,-62.467,-164.6859],[-298.2228,-63.275,-163.4739],[-302.209,-63.1673,-162.8813],[-297.334,-64.2985,-161.6693],[-297.8726,-64.487,-161.1307],[-294.5059,-65.1873,-160.4035],[-295.7449,-65.4567,-159.5685],[-298.0343,-65.5105,-159.0298],[-298.3305,-66.2377,-157.4138],[-296.0412,-66.8033,-156.7405],[-295.0177,-67.4497,-155.6631],[-297.1454,-67.4497,-155.2053],[-295.9065,-68.3116,-153.7778],[-293.5633,-69.0388,-152.7812],[-295.0985,-69.5775,-151.3268],[-292.5667,-70.7895,-149.6031],[-290.8968,-71.1666,-149.1991],[-290.008,-72.4055,-146.9636],[-288.6075,-72.9711,-146.1286],[-287.8803,-73.8599,-144.5396],[-286.9107,-74.0485,-144.2972],[-285.8603,-74.8565,-143.0313],[-285.9141,-75.3952,-141.7654],[-285.1061,-76.0685,-140.2841],[-283.8402,-76.4994,-139.9609],[-283.1669,-76.9842,-139.099],[-283.2477,-77.2805,-138.2371],[-281.3085,-78.304,-137.1867],[-280.9045,-79.4083,-134.5741],[-279.8002,-80.4856,-132.5002],[-278.2381,-80.9165,-132.8504],[-276.8375,-81.9131,-131.4498],[-276.4335,-82.4248,-129.8338],[-275.006,-83.0443,-128.4602],[-274.1172,-83.0712,-129.5914],[-271.5855,-83.4752,-128.5949],[-272.0433,-83.7176,-124.4471],[-270.9929,-84.0408,-121.0265],[-265.7409,-84.4718,-123.3967],[-263.6131,-85.0104,-118.3062],[-259.5461,-85.4953,-116.7441],[-257.6608,-85.4953,-120.3532],[-256.3141,-85.8454,-115.5321],[-254.3479,-85.9801,-117.202],[-253.4322,-86.3033,-113.9969],[-252.1933,-86.5726,-112.9464],[-250.3618,-86.815,-114.5625],[-248.261,-87.0574,-114.0777],[-246.4295,-87.2459,-115.6667],[-240.9889,-87.8385,-114.7241],[-239.4806,-88.0001,-118.01],[-236.5448,-88.3771,-120.5956],[-232.5587,-88.8081,-117.7945],[-230.0538,-89.6161,-121.8076],[-231.4005,-89.643,-126.1978],[-227.8183,-91.259,-128.6218],[-228.9496,-91.3668,-130.6957],[-224.326,-93.6112,-133.802],[-219.7024,-95.8557,-136.9084],[-215.0788,-98.1002,-140.0147],[-212.7355,-98.9082,-139.7992],[-208.4531,-100.7935,-140.9574],[-204.2514,-101.4669,-139.5299],[-200.8578,-102.5442,-140.2841],[-201.585,-103.2984,-143.57],[-204.9517,-102.7058,-144.6742],[-204.036,-103.3792,-145.9401],[-201.2079,-104.4026,-146.7751],[-201.5312,-104.9413,-148.7681],[-203.1741,-104.8605,-149.9532],[-201.1002,-106.288,-152.862],[-201.8005,-106.5573,-154.3434],[-200.9925,-107.2307,-155.7978],[-199.3226,-107.5808,-156.2018],[-199.1071,-108.3349,-159.6224],[-197.6527,-108.8467,-161.9387],[-199.0802,-109.2507,-164.9283],[-198.5954,-110.0587,-168.9953],[-200.3999,-110.3819,-171.1769],[-200.6693,-110.732,-172.8468],[-199.9151,-110.8667,-174.2743],[-194.9324,-111.1899,-175.7287],[-194.286,-111.2168,-176.9676],[-196.737,-111.0552,-177.5332],[-195.9559,-111.0822,-178.3951],[-198.0567,-110.8398,-178.7452],[-197.922,-110.732,-179.4724],[-200.3191,-110.2742,-180.7922],[-202.1506,-110.0048,-182.6506],[-204.2514,-109.5739,-183.2162],[-205.652,-109.3315,-184.4282],[-207.2141,-109.116,-188.3605],[-207.9952,-109.0622,-187.9565],[-208.9648,-109.116,-189.5187],[-209.4766,-109.116,-192.8046],[-213.1126,-108.8736,-192.0504],[-215.3481,-108.6582,-194.7438],[-219.2265,-108.5235,-195.067],[-220.0345,-108.5235,-197.895],[-222.4316,-108.5235,-199.2956],[-224.4247,-108.6043,-199.2956],[-227.3605,-108.6043,-200.75],[-229.4613,-108.739,-200.4268],[-233.3128,-109.0891,-201.4503],[-237.7568,-110.0048,-201.7735],[-241.7969,-110.5704,-204.0628],[-242.0932,-110.732,-205.0863],[-239.5614,-110.759,-211.0117],[-245.9716,-110.8667,-212.4661],[-251.7085,-110.8936,-215.8597],[-247.9108,-110.8936,-216.8024],[-244.1132,-110.8936,-217.7451],[-250.7119,-110.9206,-220.3577],[-246.9143,-110.9206,-222.1218],[-243.1166,-110.9206,-223.886],[-246.8873,-110.9206,-224.2765],[-250.658,-110.9206,-224.667],[-249.473,-110.8667,-231.7236],[-254.2671,-111.2707,-232.5586],[-259.0613,-111.6747,-233.3935],[-259.9501,-112.2807,-237.2316],[-260.8389,-112.8867,-241.0696],[-266.0641,-115.0145,-243.1704],[-267.2761,-116.038,-248.3686],[-269.5116,-117.1961,-251.9777],[-270.4812,-117.6001,-252.3817],[-270.6966,-117.9233,-255.0751],[-271.6124,-118.2196,-254.698],[-271.9895,-118.5158,-256.2871],[-274.3865,-119.2431,-256.3679],[-276.7836,-119.8087,-254.2671],[-277.3223,-119.9703,-255.5868],[-278.4805,-120.2127,-254.7249],[-279.3962,-120.3743,-255.8831],[-278.7767,-120.2665,-256.9335],[-282.5205,-120.2531,-259.4652],[-286.2643,-120.2396,-261.997],[-287.0453,-120.4012,-258.3879],[-292.2974,-120.4281,-257.7954],[-297.5225,-120.2665,-262.5895],[-298.6537,-120.078,-267.7877],[-302.1551,-120.078,-266.5219],[-302.5322,-120.0511,-267.3299],[-304.5522,-119.9703,-267.3837],[-307.6226,-119.7548,-263.7746],[-309.1848,-119.5663,-265.5792],[-311.3125,-119.3239,-263.64],[-310.3968,-119.2969,-268.2456],[-311.8512,-119.1084,-266.0909],[-311.2587,-119.1623,-268.7843],[-313.5211,-118.7044,-268.5957],[-314.1944,-118.3812,-272.6088],[-318.1537,-117.9502,-274.0363],[-317.4803,-117.9772,-277.43],[-320.2275,-117.9772,-278.0494],[-321.6012,-117.9772,-280.2041],[-320.039,-118.0041,-284.729],[-323.5673,-118.0041,-287.1261],[-327.0956,-118.0041,-289.5231],[-324.4292,-117.9502,-293.2669],[-329.8967,-117.9233,-294.6136],[-328.981,-117.6809,-296.9568],[-322.6516,-117.3846,-298.8691],[-326.9609,-117.0345,-303.394],[-320.8739,-116.819,-304.5252],[-320.0929,-116.6844,-306.4105],[-325.318,-116.6844,-309.5348],[-320.8605,-116.6709,-311.7972],[-316.403,-116.6574,-314.0597],[-321.7358,-116.6574,-319.2578],[-319.9043,-116.6036,-324.456],[-324.6985,-116.6036,-325.695],[-329.4927,-116.6036,-326.9339],[-330.9471,-116.5497,-329.9505],[-331.4319,-116.7382,-335.4988],[-326.53,-116.9537,-339.5388],[-328.8059,-117.5462,-343.2018],[-331.0818,-118.1388,-346.8648],[-329.0618,-118.8121,-348.7501],[-335.041,-120.1049,-352.4939],[-332.1053,-120.4012,-353.5713],[-334.637,-121.3169,-356.3454],[-331.809,-121.5593,-357.5844],[-333.2095,-122.6098,-361.5167],[-331.4589,-123.5255,-365.1258],[-333.1557,-124.4951,-368.7349],[-333.1018,-124.7375,-369.8122],[-327.8901,-124.7644,-373.3136],[-322.6785,-124.7914,-376.815],[-324.7793,-124.8183,-379.5352],[-319.635,-124.8183,-382.9289],[-314.4907,-124.8183,-386.3225],[-320.5642,-124.8183,-384.895],[-326.6377,-124.8183,-383.4676],[-328.9608,-124.8183,-387.5884],[-324.9611,-124.8183,-392.9886],[-320.9615,-124.8183,-398.3888],[-315.1001,-124.8183,-402.2941],[-309.2386,-124.8183,-406.1995],[-305.5487,-124.7914,-399.6816],[-304.5387,-124.8318,-396.0186],[-303.5287,-124.8722,-392.3556],[-303.421,-124.9799,-393.4061],[-302.9631,-125.1684,-392.3826],[-302.3167,-125.5186,-392.7866],[-299.3001,-127.0807,-390.9282],[-297.1993,-128.1581,-391.2783],[-294.3982,-129.5048,-390.8743],[-288.5806,-131.4978,-388.4503],[-285.2408,-132.3732,-391.8978],[-281.901,-133.2485,-395.3453],[-281.3624,-133.6256,-391.5476],[-280.4735,-133.868,-392.0055],[-280.3658,-134.0296,-388.4772],[-279.4501,-134.2451,-388.9351],[-278.3458,-134.1643,-388.5311],[-277.1338,-134.9992,-389.3929],[-275.6255,-134.7029,-388.8273],[-275.437,-135.1339,-389.2313],[-274.6559,-134.8376,-388.9081],[-274.0364,-135.3224,-389.3929],[-273.2284,-134.9453,-389.0697],[-273.0129,-135.3763,-389.4737],[-272.6897,-134.9184,-388.9351],[-272.5551,-135.5648,-389.5815],[-271.5047,-135.5648,-388.6119],[-269.9156,-136.723,-388.4772],[-268.0572,-137.1808,-387.2113],[-267.7878,-136.8307,-386.4841],[-266.4142,-137.5579,-386.0801],[-265.9294,-137.3694,-385.1913],[-265.1483,-138.2043,-384.895],[-265.2022,-137.935,-384.2756],[-263.9363,-139.1739,-383.4945],[-262.5896,-139.4433,-379.4544],[-262.5627,-139.3625,-377.1651],[-258.0648,-139.3759,-376.7072],[-253.5669,-139.3894,-376.2493],[-254.0247,-139.3894,-375.7915],[-249.5942,-139.4433,-375.1989],[-245.1636,-139.4971,-374.6064],[-249.9308,-139.4971,-374.162],[-254.6981,-139.4971,-373.7176],[-250.658,-139.5106,-371.8457],[-246.618,-139.5241,-369.9738],[-249.1498,-139.5241,-364.4524],[-254.2941,-139.5241,-363.0923],[-259.4384,-139.5241,-361.7321],[-256.1794,-139.5241,-358.8098],[-252.9205,-139.5241,-355.8875],[-253.1359,-139.5241,-355.2142],[-259.5192,-139.4971,-354.4601],[-254.8597,-139.6318,-351.7936],[-261.647,-139.6587,-350.6624],[-262.9128,-139.6857,-346.8648],[-257.9975,-139.9011,-344.6024],[-253.0821,-140.1166,-342.3399],[-259.4115,-139.8473,-340.9933],[-255.2502,-140.0358,-340.9259],[-251.089,-140.2243,-340.8586],[-256.5026,-139.955,-338.1922],[-252.7454,-140.157,-337.6535],[-248.9882,-140.359,-337.1148],[-243.79,-140.8169,-337.8959],[-242.5241,-140.9785,-339.1887],[-242.3894,-141.2747,-337.5458],[-240.3963,-142.2174,-336.7647],[-237.8646,-143.2409,-336.63],[-237.2182,-144.3452,-331.5934],[-236.4102,-144.83,-330.3814],[-234.7134,-145.0454,-333.3441],[-234.1747,-145.3148,-332.4284],[-233.5013,-145.3148,-334.1791],[-233.2051,-145.4495,-333.5596],[-231.4813,-146.1767,-333.398],[-230.1616,-146.8231,-331.2702],[-226.6063,-148.2236,-331.6742],[-226.0946,-148.6276,-328.5499],[-224.9634,-149.2202,-326.5838],[-224.2631,-149.4895,-326.503],[-223.5359,-150.2436,-320.1197],[-222.7683,-150.2167,-325.089],[-222.0007,-150.1898,-330.0582],[-221.5159,-150.4591,-325.668],[-220.1692,-150.486,-327.7958],[-218.6071,-150.6476,-332.7785],[-216.9372,-150.8092,-332.2398],[-213.5435,-151.8597,-333.7212],[-212.4123,-152.7215,-336.2529],[-210.3654,-153.6911,-338.3538],[-206.1099,-154.4453,-337.9228],[-205.1133,-155.4149,-340.4546],[-206.9179,-155.8728,-342.7709],[-208.103,-156.9501,-344.8178],[-205.3019,-158.9163,-347.8075],[-204.9248,-159.9397,-349.4504],[-206.2445,-160.0475,-350.016],[-201.9352,-160.1552,-355.9683],[-203.228,-160.1821,-356.1838],[-199.3765,-160.2091,-362.0015],[-204.0898,-160.1821,-357.9884],[-205.5712,-160.1552,-360.9241],[-202.2314,-160.1821,-366.4725],[-206.0695,-160.1687,-365.5432],[-209.9075,-160.1552,-364.614],[-214.3246,-160.1552,-368.9503],[-207.8605,-160.1821,-372.344],[-212.1834,-160.1687,-372.8557],[-216.5062,-160.1552,-373.3675],[-216.1561,-160.1552,-374.3909],[-210.5,-160.2091,-373.9331],[-204.844,-160.2629,-373.4752],[-199.1879,-160.3168,-373.0173],[-197.9759,-160.7747,-378.6464],[-197.5988,-160.9093,-378.4579],[-197.7874,-160.9363,-376.5187],[-195.929,-161.7712,-381.7438],[-195.1479,-162.2022,-381.9862],[-193.7743,-162.9024,-384.2756],[-191.054,-164.3299,-384.895],[-189.4649,-164.8416,-388.1001],[-187.5795,-165.5419,-389.5276],[-185.1825,-166.9425,-388.7196],[-183.6203,-168.1275,-386.5919],[-181.8966,-168.8278,-387.5884],[-180.8731,-169.3396,-386.4572],[-180.1728,-169.8782,-383.3868],[-178.7184,-170.4438,-382.471],[-177.2101,-171.0364,-377.9462],[-176.7792,-171.2518,-378.7542],[-176.2136,-171.3596,-372.2093],[-175.4864,-171.3326,-371.5898],[-174.0521,-172.2215,-371.4552],[-172.1533,-172.8409,-370.1893],[-170.9413,-173.5951,-370.5664],[-169.5138,-174.1607,-370.324],[-169.4061,-174.1876,-369.5967],[-167.7631,-174.6993,-369.893],[-167.9247,-174.6724,-368.9773],[-166.3087,-174.834,-369.9738],[-165.4469,-174.8071,-363.3482],[-161.555,-174.8475,-364.8699],[-157.663,-174.8879,-366.3916],[-153.7307,-174.8744,-365.2604],[-149.7984,-174.8609,-364.1292],[-148.9096,-174.8879,-357.9345],[-154.1078,-174.8879,-352.7363],[-149.556,-174.9148,-348.8579],[-155.9124,-174.9148,-345.8144],[-154.9966,-174.9687,-343.4712],[-151.3067,-174.9956,-343.6058],[-149.3675,-174.9956,-340.6162],[-146.2163,-174.9687,-338.4346],[-146.4048,-174.8071,-334.2868],[-144.8157,-174.6455,-332.7516],[-146.0816,-174.3761,-330.0852],[-143.9808,-174.3223,-328.6577],[-141.6376,-174.4031,-328.2537],[-143.6845,-174.2953,-321.4664],[-139.8869,-174.0529,-321.4125],[-139.1866,-173.8375,-317.3725],[-135.6044,-173.6489,-318.0458],[-135.4159,-173.5951,-314.8407]],"expectedDistance":1377.72,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-07-creature-55342","objectiveId":"creature-55342","objectiveName":"Princess Theradras","checkpoints":[[-135.4159,-173.5951,-314.8407],[-135.6044,-173.6489,-318.0458],[-139.1866,-173.8375,-317.3725],[-139.8869,-174.0529,-321.4125],[-143.6845,-174.2953,-321.4664],[-141.6376,-174.4031,-328.2537],[-143.9808,-174.3223,-328.6577],[-146.0816,-174.3761,-330.0852],[-144.8157,-174.6455,-332.7516],[-146.4048,-174.8071,-334.2868],[-146.2163,-174.9687,-338.4346],[-149.3675,-174.9956,-340.6162],[-151.3067,-174.9956,-343.6058],[-154.9966,-174.9687,-343.4712],[-155.9124,-174.9148,-345.8144],[-149.556,-174.9148,-348.8579],[-154.1078,-174.8879,-352.7363],[-148.9096,-174.8879,-357.9345],[-149.7984,-174.8609,-364.1292],[-153.7307,-174.8744,-365.2604],[-157.663,-174.8879,-366.3916],[-161.555,-174.8475,-364.8699],[-165.4469,-174.8071,-363.3482],[-165.797,-174.834,-367.1189],[-166.1471,-174.8609,-370.8896],[-167.7631,-174.6993,-369.893],[-169.4061,-174.1876,-369.5967],[-169.5138,-174.1607,-370.324],[-172.1533,-172.8409,-370.1893],[-174.0521,-172.2215,-371.4552],[-175.4864,-171.3326,-371.5898],[-176.2136,-171.3596,-372.2093],[-176.7792,-171.2518,-378.7542],[-177.2101,-171.0364,-377.9462],[-178.7184,-170.4438,-382.471],[-180.1728,-169.8782,-383.3868],[-180.8731,-169.3396,-386.4572],[-181.8966,-168.8278,-387.5884],[-183.6203,-168.1275,-386.5919],[-185.1825,-166.9425,-388.7196],[-187.5795,-165.5419,-389.5276],[-189.4649,-164.8416,-388.1001],[-191.054,-164.3299,-384.895],[-193.7743,-162.9024,-384.2756],[-195.1479,-162.2022,-381.9862],[-195.929,-161.7712,-381.7438],[-197.7874,-160.9363,-376.5187],[-197.5988,-160.9093,-378.4579],[-197.9759,-160.7747,-378.6464],[-199.1879,-160.3168,-373.0173],[-204.844,-160.2629,-373.4752],[-210.5,-160.2091,-373.9331],[-216.1561,-160.1552,-374.3909],[-216.5062,-160.1552,-373.3675],[-212.1834,-160.1687,-372.8557],[-207.8605,-160.1821,-372.344],[-214.3246,-160.1552,-368.9503],[-209.9075,-160.1552,-364.614],[-206.0695,-160.1687,-365.5432],[-202.2314,-160.1821,-366.4725],[-205.5712,-160.1552,-360.9241],[-204.0898,-160.1821,-357.9884],[-199.3765,-160.2091,-362.0015],[-203.228,-160.1821,-356.1838],[-201.9352,-160.1552,-355.9683],[-206.2445,-160.0475,-350.016],[-204.9248,-159.9397,-349.4504],[-205.3019,-158.9163,-347.8075],[-208.103,-156.9501,-344.8178],[-206.9179,-155.8728,-342.7709],[-205.1133,-155.4149,-340.4546],[-206.1099,-154.4453,-337.9228],[-210.3654,-153.6911,-338.3538],[-212.4123,-152.7215,-336.2529],[-213.5435,-151.8597,-333.7212],[-216.9372,-150.8092,-332.2398],[-217.2334,-150.6476,-331.0548],[-218.9033,-150.486,-331.5934],[-220.1692,-150.486,-327.7958],[-221.5159,-150.4591,-325.668],[-222.0007,-150.1898,-330.0582],[-222.7683,-150.2167,-325.089],[-223.5359,-150.2436,-320.1197],[-224.2631,-149.4895,-326.503],[-224.9634,-149.2202,-326.5838],[-226.0946,-148.6276,-328.5499],[-226.6063,-148.2236,-331.6742],[-227.9261,-147.5772,-333.802],[-233.2051,-145.4495,-333.5596],[-234.04,-145.0454,-335.0948],[-236.4102,-144.83,-330.3814],[-237.2182,-144.3452,-331.5934],[-237.8646,-143.2409,-336.63],[-240.3963,-142.2174,-336.7647],[-242.3894,-141.2747,-337.5458],[-242.5241,-140.9785,-339.1887],[-243.79,-140.8169,-337.8959],[-248.9882,-140.359,-337.1148],[-252.7454,-140.157,-337.6535],[-256.5026,-139.955,-338.1922],[-251.089,-140.2243,-340.8586],[-255.2502,-140.0358,-340.9259],[-259.4115,-139.8473,-340.9933],[-253.0821,-140.1166,-342.3399],[-257.9975,-139.9011,-344.6024],[-262.9128,-139.6857,-346.8648],[-261.647,-139.6587,-350.6624],[-254.8597,-139.6318,-351.7936],[-259.5192,-139.4971,-354.4601],[-253.1359,-139.5241,-355.2142],[-252.9205,-139.5241,-355.8875],[-256.1794,-139.5241,-358.8098],[-259.4384,-139.5241,-361.7321],[-254.2941,-139.5241,-363.0923],[-249.1498,-139.5241,-364.4524],[-246.618,-139.5241,-369.9738],[-250.658,-139.5106,-371.8457],[-254.6981,-139.4971,-373.7176],[-249.9308,-139.4971,-374.162],[-245.1636,-139.4971,-374.6064],[-249.5942,-139.4433,-375.1989],[-254.0247,-139.3894,-375.7915],[-253.5669,-139.3894,-376.2493],[-258.0648,-139.3759,-376.7072],[-262.5627,-139.3625,-377.1651],[-262.5896,-139.4433,-379.4544],[-263.9363,-139.1739,-383.4945],[-265.2022,-137.935,-384.2756],[-265.1483,-138.2043,-384.895],[-265.9294,-137.3694,-385.1913],[-266.4142,-137.5579,-386.0801],[-267.7878,-136.8307,-386.4841],[-268.0572,-137.1808,-387.2113],[-269.9156,-136.723,-388.4772],[-271.5047,-135.5648,-388.6119],[-272.5551,-135.5648,-389.5815],[-272.6897,-134.9184,-388.9351],[-273.0129,-135.3763,-389.4737],[-273.2284,-134.9453,-389.0697],[-274.0364,-135.3224,-389.3929],[-274.6559,-134.8376,-388.9081],[-275.437,-135.1339,-389.2313],[-275.6255,-134.7029,-388.8273],[-277.1338,-134.9992,-389.3929],[-278.3458,-134.1643,-388.5311],[-279.4501,-134.2451,-388.9351],[-280.3658,-134.0296,-388.4772],[-280.4735,-133.868,-392.0055],[-281.3624,-133.6256,-391.5476],[-281.901,-133.2485,-395.3453],[-285.2408,-132.3732,-391.8978],[-288.5806,-131.4978,-388.4503],[-294.3982,-129.5048,-390.8743],[-297.1993,-128.1581,-391.2783],[-299.3001,-127.0807,-390.9282],[-302.3167,-125.5186,-392.7866],[-302.9631,-125.1684,-392.3826],[-303.421,-124.9799,-393.4061],[-303.5287,-124.8722,-392.3556],[-304.5387,-124.8318,-396.0186],[-305.5487,-124.7914,-399.6816],[-309.2386,-124.8183,-406.1995],[-315.1001,-124.8183,-402.2941],[-320.9615,-124.8183,-398.3888],[-324.9611,-124.8183,-392.9886],[-328.9608,-124.8183,-387.5884],[-326.6377,-124.8183,-383.4676],[-320.5642,-124.8183,-384.895],[-314.4907,-124.8183,-386.3225],[-319.635,-124.8183,-382.9289],[-324.7793,-124.8183,-379.5352],[-322.6785,-124.7914,-376.815],[-327.8901,-124.7644,-373.3136],[-333.1018,-124.7375,-369.8122],[-333.1557,-124.4951,-368.7349],[-331.4589,-123.5255,-365.1258],[-333.2095,-122.6098,-361.5167],[-331.809,-121.5593,-357.5844],[-334.637,-121.3169,-356.3454],[-332.1053,-120.4012,-353.5713],[-335.041,-120.1049,-352.4939],[-329.0618,-118.8121,-348.7501],[-331.0818,-118.1388,-346.8648],[-328.8059,-117.5462,-343.2018],[-326.53,-116.9537,-339.5388],[-331.4319,-116.7382,-335.4988],[-330.9471,-116.5497,-329.9505],[-329.4927,-116.6036,-326.9339],[-324.6985,-116.6036,-325.695],[-319.9043,-116.6036,-324.456],[-321.7358,-116.6574,-319.2578],[-316.403,-116.6574,-314.0597],[-320.8605,-116.6709,-311.7972],[-325.318,-116.6844,-309.5348],[-320.0929,-116.6844,-306.4105],[-320.8739,-116.819,-304.5252],[-326.9609,-117.0345,-303.394],[-322.6516,-117.3846,-298.8691],[-328.981,-117.6809,-296.9568],[-329.8967,-117.9233,-294.6136],[-324.4292,-117.9502,-293.2669],[-327.0956,-118.0041,-289.5231],[-323.5673,-118.0041,-287.1261],[-320.039,-118.0041,-284.729],[-321.6012,-117.9772,-280.2041],[-320.2275,-117.9772,-278.0494],[-317.4803,-117.9772,-277.43],[-318.1537,-117.9502,-274.0363],[-314.1944,-118.3812,-272.6088],[-313.5211,-118.7044,-268.5957],[-311.2587,-119.1623,-268.7843],[-311.8512,-119.1084,-266.0909],[-310.3968,-119.2969,-268.2456],[-311.3125,-119.3239,-263.64],[-309.1848,-119.5663,-265.5792],[-307.6226,-119.7548,-263.7746],[-304.5522,-119.9703,-267.3837],[-302.5322,-120.0511,-267.3299],[-302.1551,-120.078,-266.5219],[-298.6537,-120.078,-267.7877],[-297.5225,-120.2665,-262.5895],[-292.2974,-120.4281,-257.7954],[-287.0453,-120.4012,-258.3879],[-286.2643,-120.2396,-261.997],[-282.5205,-120.2531,-259.4652],[-278.7767,-120.2665,-256.9335],[-279.3962,-120.3743,-255.8831],[-278.4805,-120.2127,-254.7249],[-277.3223,-119.9703,-255.5868],[-276.7836,-119.8087,-254.2671],[-274.3865,-119.2431,-256.3679],[-271.9895,-118.5158,-256.2871],[-271.6124,-118.2196,-254.698],[-270.6966,-117.9233,-255.0751],[-270.4812,-117.6001,-252.3817],[-269.5116,-117.1961,-251.9777],[-267.2761,-116.038,-248.3686],[-266.0641,-115.0145,-243.1704],[-260.8389,-112.8867,-241.0696],[-259.9501,-112.2807,-237.2316],[-259.0613,-111.6747,-233.3935],[-254.2671,-111.2707,-232.5586],[-249.473,-110.8667,-231.7236],[-250.658,-110.9206,-224.667],[-246.8873,-110.9206,-224.2765],[-243.1166,-110.9206,-223.886],[-246.9143,-110.9206,-222.1218],[-250.7119,-110.9206,-220.3577],[-244.1132,-110.8936,-217.7451],[-247.9108,-110.8936,-216.8024],[-251.7085,-110.8936,-215.8597],[-245.9716,-110.8667,-212.4661],[-239.5614,-110.759,-211.0117],[-242.0932,-110.732,-205.0863],[-241.7969,-110.5704,-204.0628],[-239.7499,-110.1126,-202.5815],[-237.7568,-110.0048,-201.7735],[-233.3128,-109.0891,-201.4503],[-229.4613,-108.739,-200.4268],[-227.3605,-108.6043,-200.75],[-224.4247,-108.6043,-199.2956],[-222.4316,-108.5235,-199.2956],[-220.0345,-108.5235,-197.895],[-218.4455,-108.4427,-198.299],[-215.2404,-108.6043,-197.895],[-213.759,-108.739,-197.1678],[-209.3688,-108.9814,-198.2182],[-208.4262,-109.116,-197.1948],[-207.0795,-109.1968,-198.0836],[-206.3523,-109.2776,-198.0297],[-205.7059,-109.3584,-196.8446],[-204.7363,-109.4662,-196.8177],[-203.3088,-109.4662,-198.8377],[-202.0429,-109.7086,-199.511],[-196.71,-110.2742,-200.7769],[-192.5353,-110.4627,-201.1001],[-192.1313,-110.6243,-201.6119],[-184.7448,-110.8128,-201.8273],[-181.9168,-110.8398,-205.194],[-184.8054,-110.8128,-209.7458],[-180.4152,-110.6782,-214.0283],[-180.0112,-110.2472,-215.6443],[-178.4491,-110.0587,-215.5096],[-176.8869,-108.4157,-217.8798],[-176.0789,-108.2003,-218.2838],[-174.84,-108.308,-217.8528],[-173.2441,-108.308,-219.8459],[-170.8403,-108.6582,-220.6539],[-168.8405,-108.6312,-223.455],[-166.5242,-108.7928,-225.502],[-165.2583,-108.6582,-228.6263],[-163.3191,-108.7928,-230.5116],[-160.0197,-108.8063,-226.4177],[-156.7204,-108.8198,-222.3238],[-153.1382,-108.8198,-225.3404],[-149.556,-108.8198,-228.3569],[-151.8319,-108.8198,-234.3227],[-154.1078,-108.8198,-240.2885],[-151.2798,-108.8063,-243.1165],[-148.4518,-108.7928,-245.9446],[-152.9766,-108.7928,-245.8907],[-152.5726,-108.7928,-248.1531],[-150.2563,-108.739,-251.2236],[-155.7238,-108.739,-253.6745],[-153.2459,-108.6851,-256.3948],[-153.0305,-108.6851,-259.3844],[-155.468,-108.6851,-262.3606],[-157.9054,-108.6851,-265.3368],[-152.0609,-108.6582,-269.6731],[-156.7204,-108.6582,-273.9555],[-150.5795,-108.6582,-278.1572],[-144.5733,-108.6582,-275.1406],[-143.092,-108.6582,-281.6047],[-141.7722,-108.6582,-276.0563],[-137.382,-108.6582,-280.3927],[-134.7964,-108.6582,-274.0633],[-130.8641,-108.6582,-272.7435],[-128.3324,-108.6582,-277.403],[-127.1203,-108.6582,-270.9928],[-123.188,-108.6582,-275.8409],[-120.6563,-108.6582,-271.6796],[-118.1245,-108.6582,-267.5184],[-112.9263,-108.6582,-272.7435],[-107.9167,-108.6582,-271.8816],[-106.7855,-108.6582,-267.7473],[-105.6543,-108.6582,-263.613],[-103.4861,-108.6582,-266.9797],[-101.3179,-108.6582,-270.3464],[-100.5234,-108.6582,-266.1852],[-99.7289,-108.6582,-262.0239],[-97.251,-108.6582,-261.2159],[-95.6754,-108.6582,-265.3502],[-94.0997,-108.6582,-269.4845],[-88.4168,-108.6582,-270.0771],[-85.0231,-108.6582,-270.939],[-83.838,-108.6582,-272.0163],[-81.5352,-108.6312,-268.6496],[-79.2324,-108.6043,-265.2829],[-77.2258,-108.5774,-260.8523],[-75.2193,-108.5504,-256.4217],[-78.1281,-108.5774,-253.3244],[-81.0369,-108.6043,-250.227],[-75.0442,-108.5639,-249.9577],[-69.0515,-108.5235,-249.6883],[-65.7925,-108.5774,-244.8134],[-69.4286,-108.6178,-243.1839],[-73.0646,-108.6582,-241.5544],[-66.9507,-108.537,-240.504],[-60.8367,-108.4157,-239.4536],[-58.0356,-108.2541,-237.4605],[-54.9114,-108.2003,-236.5448],[-53.7801,-107.8501,-232.4778],[-55.6386,-107.7963,-228.9495],[-54.3727,-108.0117,-224.0206],[-58.9245,-108.2541,-220.4385],[-57.066,-108.4427,-217.8798],[-52.7836,-108.4965,-217.4488],[-52.4873,-108.4157,-216.8294],[-53.2684,-108.3888,-216.2368],[-52.7297,-108.2003,-215.1864],[-53.7801,-108.2541,-214.3515],[-52.7297,-108.1464,-213.4896],[-54.3457,-109.0891,-210.7962],[-52.9183,-109.4123,-209.261],[-52.2449,-109.8432,-207.1063],[-53.9148,-110.355,-204.0628],[-52.622,-111.0283,-200.0228],[-54.2919,-111.4054,-197.0332],[-53.1876,-112.1865,-192.3467],[-52.6489,-113.183,-186.6907],[-53.9821,-113.5466,-182.3543],[-55.3154,-113.9102,-178.018],[-54.8575,-113.991,-175.8095],[-53.4569,-114.3411,-175.1092],[-53.9956,-114.1795,-173.574],[-52.3796,-114.6643,-172.3889],[-52.0295,-115.1491,-171.5001],[-50.0364,-115.203,-171.0692],[-48.4473,-115.6609,-169.4531],[-48.1241,-116.415,-168.1334],[-45.4577,-117.8694,-164.7667],[-42.4142,-118.0849,-162.9352],[-41.8486,-118.4081,-161.9387],[-38.9667,-118.0849,-161.5885],[-38.9397,-118.6505,-160.0803],[-37.3237,-118.462,-160.0803],[-37.5122,-118.8929,-159.0568],[-36.4618,-118.7852,-158.6797],[-36.9466,-119.2161,-157.5485],[-36.3541,-119.7548,-155.5015],[-34.6303,-120.078,-153.7239],[-33.6607,-120.6705,-151.3807],[-34.0378,-120.9668,-150.438],[-32.0447,-121.2092,-148.6873],[-31.6138,-121.4785,-147.5831],[-30.7788,-121.6132,-147.2868],[-30.4287,-121.9364,-145.8324],[-28.9474,-122.4212,-144.7012],[-28.6511,-122.8522,-142.5195],[-27.1428,-123.2292,-141.6846],[-24.0185,-123.3908,-142.1963],[-25.6615,-123.7679,-139.6376],[-19.7832,-123.7948,-140.6073],[-17.2245,-123.7679,-138.5872],[-19.3859,-123.8487,-133.9008],[-20.1939,-123.8756,-127.8946],[-22.187,-123.8891,-124.097],[-24.1801,-123.9026,-120.2993],[-29.2975,-124.0372,-116.2862],[-28.6915,-123.9699,-110.9938],[-28.0855,-123.9026,-105.7013],[-29.513,-123.741,-104.3008],[-29.1898,-123.6602,-101.9037],[-29.5399,-124.4412,-98.0791],[-29.2167,-124.4951,-95.9177],[-29.6207,-124.953,-94.3757],[-29.2706,-125.2762,-90.329],[-29.7015,-125.8149,-88.4436],[-29.2975,-125.8687,-86.3697],[-29.7554,-126.5421,-82.9761],[-29.3783,-126.8383,-78.6398],[-29.8362,-127.0807,-78.0203],[-29.5938,-126.9191,-77.1584],[-30.1324,-127.1077,-76.7275],[-29.89,-126.7845,-74.7883],[-31.7485,-127.3231,-71.26],[-31.8023,-127.1346,-68.2703],[-32.9605,-127.4578,-66.4388],[-32.745,-127.1885,-65.7116],[-33.7685,-127.4847,-62.6412],[-33.6069,-127.2423,-61.8063],[-34.1455,-127.5117,-61.3215],[-33.9301,-127.377,-60.2441],[-35.7346,-127.6194,-58.1972],[-36.1925,-127.4309,-56.4195],[-38.8589,-127.8618,-52.8104],[-41.7678,-127.9157,-46.7504],[-42.495,-128.185,-46.481],[-42.6835,-127.9426,-45.3498],[-43.5454,-128.2658,-44.6226],[-44.0302,-128.1311,-42.8989],[-43.4915,-127.9695,-41.7677],[-44.3534,-128.0503,-39.209],[-46.3195,-128.7776,-38.2124],[-46.7505,-128.8853,-37.4044],[-47.9625,-129.6394,-36.8658],[-48.5281,-129.7741,-35.4652],[-50.0094,-130.7706,-34.6303],[-50.9521,-130.7976,-30.9404],[-51.1002,-130.205,-26.8061],[-51.2484,-129.6125,-22.6717],[-51.6524,-129.6933,-21.0557],[-52.8375,-130.4744,-19.8706],[-52.8375,-130.4474,-17.4736],[-52.4335,-131.0669,-14.6994],[-53.2415,-131.2016,-11.0903],[-55.477,-131.1746,-7.158],[-55.0999,-131.3901,-0.9363],[-56.5004,-131.2554,0.572],[-54.9922,-131.4709,1.5685],[-56.1772,-131.3901,2.969],[-54.6959,-131.417,5.4739],[-55.6655,-131.3362,7.063],[-54.8036,-131.1746,8.248],[-55.7732,-131.2824,8.1134],[-54.1033,-130.8784,9.4331],[-52.8105,-129.8549,10.3489],[-53.8071,-128.2927,13.3654],[-53.5916,-126.6767,19.3716],[-57.066,-126.3535,23.3039],[-58.1703,-125.7071,28.8253],[-53.7532,-124.4951,30.8453],[-53.9417,-123.7679,36.0704],[-48.4473,-124.0103,37.7403],[-48.2453,-124.32,41.74],[-48.0433,-124.6298,45.7396],[-42.8451,-125.6533,50.1298],[-38.8589,-126.0303,49.7258],[-36.8658,-126.2458,54.116],[-34.8458,-126.0573,54.493],[-35.2498,-125.9765,57.6712],[-33.2567,-126.3535,60.4992],[-34.4687,-126.2189,64.1083],[-32.0717,-125.761,69.7172],[-34.0647,-124.6567,75.2992],[-30.8596,-124.2527,80.9082]],"expectedDistance":1757.38,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-08-creature-203506","objectiveId":"creature-203506","objectiveName":"Meshlok the Harvester","checkpoints":[[-30.8596,-124.2527,80.9082],[-34.0647,-124.6567,75.2992],[-32.0717,-125.761,69.7172],[-34.4687,-126.2189,64.1083],[-33.2567,-126.3535,60.4992],[-35.2498,-125.9765,57.6712],[-34.8458,-126.0573,54.493],[-36.8658,-126.2458,54.116],[-38.8589,-126.0303,49.7258],[-42.8451,-125.6533,50.1298],[-48.0433,-124.6298,45.7396],[-48.2453,-124.32,41.74],[-48.4473,-124.0103,37.7403],[-53.9417,-123.7679,36.0704],[-53.7532,-124.4951,30.8453],[-58.1703,-125.7071,28.8253],[-57.066,-126.3535,23.3039],[-53.5916,-126.6767,19.3716],[-53.8071,-128.2927,13.3654],[-52.8105,-129.8549,10.3489],[-54.1033,-130.8784,9.4331],[-55.7732,-131.2824,8.1134],[-54.8036,-131.1746,8.248],[-55.6655,-131.3362,7.063],[-54.6959,-131.417,5.4739],[-56.1772,-131.3901,2.969],[-54.9922,-131.4709,1.5685],[-56.5004,-131.2554,0.572],[-55.0999,-131.3901,-0.9363],[-55.477,-131.1746,-7.158],[-53.2415,-131.2016,-11.0903],[-52.4335,-131.0669,-14.6994],[-52.8375,-130.4474,-17.4736],[-52.8375,-130.4744,-19.8706],[-51.6524,-129.6933,-21.0557],[-51.2484,-129.6125,-22.6717],[-51.1002,-130.205,-26.8061],[-50.9521,-130.7976,-30.9404],[-50.0094,-130.7706,-34.6303],[-48.5281,-129.7741,-35.4652],[-47.9625,-129.6394,-36.8658],[-46.7505,-128.8853,-37.4044],[-46.3195,-128.7776,-38.2124],[-44.3534,-128.0503,-39.209],[-43.4915,-127.9695,-41.7677],[-44.0302,-128.1311,-42.8989],[-43.5454,-128.2658,-44.6226],[-42.6835,-127.9426,-45.3498],[-42.495,-128.185,-46.481],[-41.7678,-127.9157,-46.7504],[-38.8589,-127.8618,-52.8104],[-36.1925,-127.4309,-56.4195],[-35.7346,-127.6194,-58.1972],[-33.9301,-127.377,-60.2441],[-34.1455,-127.5117,-61.3215],[-33.6069,-127.2423,-61.8063],[-33.7685,-127.4847,-62.6412],[-32.745,-127.1885,-65.7116],[-32.9605,-127.4578,-66.4388],[-31.8023,-127.1346,-68.2703],[-31.7485,-127.3231,-71.26],[-30.7519,-127.0538,-72.7413],[-30.7519,-127.1885,-74.6267],[-29.5938,-126.9191,-77.1584],[-29.8362,-127.0807,-78.0203],[-29.3783,-126.8383,-78.6398],[-29.3244,-126.569,-80.8753],[-29.7554,-126.5421,-82.9761],[-29.2975,-125.8687,-86.3697],[-29.7015,-125.8149,-88.4436],[-29.2706,-125.2762,-90.329],[-29.6207,-124.953,-94.3757],[-29.2167,-124.4951,-95.9177],[-29.5399,-124.4412,-98.0791],[-29.1898,-123.6602,-101.9037],[-29.513,-123.741,-104.3008],[-28.0855,-123.9026,-105.7013],[-28.6915,-123.9699,-110.9938],[-29.2975,-124.0372,-116.2862],[-24.1801,-123.9026,-120.2993],[-22.187,-123.8891,-124.097],[-20.1939,-123.8756,-127.8946],[-19.3859,-123.8487,-133.9008],[-17.2245,-123.7679,-138.5872],[-19.7832,-123.7948,-140.6073],[-25.6615,-123.7679,-139.6376],[-24.0185,-123.3908,-142.1963],[-27.1428,-123.2292,-141.6846],[-28.6511,-122.8522,-142.5195],[-28.9474,-122.4212,-144.7012],[-30.4287,-121.9364,-145.8324],[-30.7788,-121.6132,-147.2868],[-31.6138,-121.4785,-147.5831],[-32.0447,-121.2092,-148.6873],[-34.0378,-120.9668,-150.438],[-33.6607,-120.6705,-151.3807],[-34.6303,-120.078,-153.7239],[-36.3541,-119.7548,-155.5015],[-36.9466,-119.2161,-157.5485],[-36.4618,-118.7852,-158.6797],[-37.5122,-118.8929,-159.0568],[-37.3237,-118.462,-160.0803],[-38.9397,-118.6505,-160.0803],[-38.9667,-118.0849,-161.5885],[-41.8486,-118.4081,-161.9387],[-42.4142,-118.0849,-162.9352],[-45.4577,-117.8694,-164.7667],[-48.1241,-116.415,-168.1334],[-48.4473,-115.6609,-169.4531],[-49.6324,-115.4724,-170.2612],[-50.4404,-115.6609,-170.2612],[-53.9956,-114.1795,-173.574],[-53.4569,-114.3411,-175.1092],[-54.8575,-113.991,-175.8095],[-55.3154,-113.9102,-178.018],[-53.9821,-113.5466,-182.3543],[-52.6489,-113.183,-186.6907],[-53.1876,-112.1865,-192.3467],[-54.2919,-111.4054,-197.0332],[-52.622,-111.0283,-200.0228],[-53.9148,-110.355,-204.0628],[-52.2449,-109.8432,-207.1063],[-52.9183,-109.4123,-209.261],[-54.3457,-109.0891,-210.7962],[-52.7297,-108.1464,-213.4896],[-53.7801,-108.2541,-214.3515],[-52.7297,-108.2003,-215.1864],[-53.2684,-108.3888,-216.2368],[-52.4873,-108.4157,-216.8294],[-52.7836,-108.4965,-217.4488],[-57.066,-108.4427,-217.8798],[-58.9245,-108.2541,-220.4385],[-54.3727,-108.0117,-224.0206],[-55.6386,-107.7963,-228.9495],[-53.7801,-107.8501,-232.4778],[-54.9114,-108.2003,-236.5448],[-58.0356,-108.2541,-237.4605],[-60.8367,-108.4157,-239.4536],[-66.9507,-108.537,-240.504],[-73.0646,-108.6582,-241.5544],[-69.4286,-108.6178,-243.1839],[-65.7925,-108.5774,-244.8134],[-69.0515,-108.5235,-249.6883],[-75.0442,-108.5639,-249.9577],[-81.0369,-108.6043,-250.227],[-78.1281,-108.5774,-253.3244],[-75.2193,-108.5504,-256.4217],[-77.2258,-108.5774,-260.8523],[-79.2324,-108.6043,-265.2829],[-81.5352,-108.6312,-268.6496],[-83.838,-108.6582,-272.0163],[-85.0231,-108.6582,-270.939],[-88.4168,-108.6582,-270.0771],[-94.0997,-108.6582,-269.4845],[-95.6754,-108.6582,-265.3502],[-97.251,-108.6582,-261.2159],[-99.7289,-108.6582,-262.0239],[-100.5234,-108.6582,-266.1852],[-101.3179,-108.6582,-270.3464],[-103.4861,-108.6582,-266.9797],[-105.6543,-108.6582,-263.613],[-106.7855,-108.6582,-267.7473],[-107.9167,-108.6582,-271.8816],[-112.9263,-108.6582,-272.7435],[-118.1245,-108.6582,-267.5184],[-120.6563,-108.6582,-271.6796],[-123.188,-108.6582,-275.8409],[-127.1203,-108.6582,-270.9928],[-128.3324,-108.6582,-277.403],[-130.8641,-108.6582,-272.7435],[-134.7964,-108.6582,-274.0633],[-137.382,-108.6582,-280.3927],[-141.7722,-108.6582,-276.0563],[-143.092,-108.6582,-281.6047],[-144.5733,-108.6582,-275.1406],[-150.5795,-108.6582,-278.1572],[-156.7204,-108.6582,-273.9555],[-152.0609,-108.6582,-269.6731],[-157.9054,-108.6851,-265.3368],[-155.468,-108.6851,-262.3606],[-153.0305,-108.6851,-259.3844],[-153.2459,-108.6851,-256.3948],[-155.7238,-108.739,-253.6745],[-150.2563,-108.739,-251.2236],[-152.5726,-108.7928,-248.1531],[-152.9766,-108.7928,-245.8907],[-148.4518,-108.7928,-245.9446],[-151.2798,-108.8063,-243.1165],[-154.1078,-108.8198,-240.2885],[-151.8319,-108.8198,-234.3227],[-149.556,-108.8198,-228.3569],[-153.1382,-108.8198,-225.3404],[-156.7204,-108.8198,-222.3238],[-160.0197,-108.8063,-226.4177],[-163.3191,-108.7928,-230.5116],[-165.2583,-108.6582,-228.6263],[-166.5242,-108.7928,-225.502],[-168.8405,-108.6312,-223.455],[-170.8403,-108.6582,-220.6539],[-173.2441,-108.308,-219.8459],[-174.84,-108.308,-217.8528],[-176.0789,-108.2003,-218.2838],[-176.8869,-108.4157,-217.8798],[-178.4491,-110.0587,-215.5096],[-180.0112,-110.2472,-215.6443],[-180.4152,-110.6782,-214.0283],[-184.8054,-110.8128,-209.7458],[-181.9168,-110.8398,-205.194],[-184.7448,-110.8128,-201.8273],[-192.1313,-110.6243,-201.6119],[-192.5353,-110.4627,-201.1001],[-196.71,-110.2742,-200.7769],[-202.0429,-109.7086,-199.511],[-203.3088,-109.4662,-198.8377],[-204.7363,-109.4662,-196.8177],[-205.7059,-109.3584,-196.8446],[-206.3523,-109.2776,-198.0297],[-207.0795,-109.1968,-198.0836],[-208.4262,-109.116,-197.1948],[-209.3688,-108.9814,-198.2182],[-213.759,-108.739,-197.1678],[-215.2404,-108.6043,-197.895],[-218.4455,-108.4427,-198.299],[-220.0345,-108.5235,-197.895],[-222.4316,-108.5235,-199.2956],[-224.4247,-108.6043,-199.2956],[-227.3605,-108.6043,-200.75],[-229.4613,-108.739,-200.4268],[-233.3128,-109.0891,-201.4503],[-237.7568,-110.0048,-201.7735],[-241.7969,-110.5704,-204.0628],[-242.0932,-110.732,-205.0863],[-239.5614,-110.759,-211.0117],[-245.9716,-110.8667,-212.4661],[-251.7085,-110.8936,-215.8597],[-247.9108,-110.8936,-216.8024],[-244.1132,-110.8936,-217.7451],[-250.7119,-110.9206,-220.3577],[-246.9143,-110.9206,-222.1218],[-243.1166,-110.9206,-223.886],[-246.8873,-110.9206,-224.2765],[-250.658,-110.9206,-224.667],[-249.473,-110.8667,-231.7236],[-254.2671,-111.2707,-232.5586],[-259.0613,-111.6747,-233.3935],[-259.9501,-112.2807,-237.2316],[-260.8389,-112.8867,-241.0696],[-266.0641,-115.0145,-243.1704],[-267.2761,-116.038,-248.3686],[-269.5116,-117.1961,-251.9777],[-270.4812,-117.6001,-252.3817],[-270.6966,-117.9233,-255.0751],[-271.6124,-118.2196,-254.698],[-271.9895,-118.5158,-256.2871],[-274.3865,-119.2431,-256.3679],[-276.7836,-119.8087,-254.2671],[-277.3223,-119.9703,-255.5868],[-278.4805,-120.2127,-254.7249],[-279.3962,-120.3743,-255.8831],[-277.9687,-120.3743,-258.0647],[-278.265,-120.6705,-262.5895],[-277.6455,-120.886,-266.5488],[-276.7028,-120.9668,-265.5253],[-276.0834,-121.2361,-269.8347],[-275.1407,-121.4785,-269.9424],[-274.3057,-121.7479,-271.5584],[-272.3935,-122.2058,-271.9894],[-271.2353,-122.502,-271.1544],[-268.4073,-123.2292,-271.5584],[-268.0033,-123.2023,-273.9555],[-266.3334,-123.3639,-276.3526],[-264.5827,-124.0372,-274.1441],[-264.2595,-123.9834,-276.4873],[-262.8051,-124.6836,-275.5715],[-261.8894,-124.8991,-278.8305],[-260.7312,-125.4647,-278.6958],[-259.8155,-126.0034,-279.2884],[-258.792,-126.5151,-277.5916],[-257.8493,-126.9999,-277.43],[-257.7146,-126.9999,-276.2987],[-257.3914,-127.2693,-276.9452],[-256.3949,-127.8079,-276.4065],[-255.6946,-128.0503,-275.2214],[-254.6981,-128.6698,-275.4369],[-254.5365,-128.6429,-274.3057],[-253.5399,-129.2624,-274.4134],[-252.5703,-129.6394,-273.363],[-251.4122,-130.3128,-273.3361],[-250.0386,-130.8245,-271.0736],[-249.1498,-131.1746,-270.6696],[-247.6415,-131.1746,-267.6261],[-246.8873,-131.2285,-267.1952],[-245.406,-131.3632,-267.8147],[-243.9246,-131.2285,-267.276],[-240.9619,-131.04,-267.3837],[-237.5414,-131.0938,-268.7573],[-238.6726,-131.0669,-264.1517],[-237.4875,-130.9861,-260.9466],[-236.464,-130.9188,-255.6003],[-235.4406,-130.8514,-250.254],[-229.0304,-130.8514,-248.4494],[-224.9095,-130.9861,-246.3216],[-228.1146,-130.8514,-244.0592],[-227.7914,-130.8514,-243.332],[-223.913,-130.9861,-243.0627],[-226.0407,-130.8514,-241.2851],[-229.8384,-130.7437,-240.2885],[-229.7576,-130.8245,-236.7064],[-226.6871,-130.8245,-235.4405],[-221.7044,-131.0669,-231.0234],[-225.7714,-131.04,-228.6801],[-223.913,-131.04,-224.8017],[-227.6567,-130.9861,-221.8659],[-225.6367,-131.1208,-217.8798],[-225.0711,-131.1477,-213.0048],[-226.2023,-131.3362,-212.2776],[-226.6063,-131.3093,-211.281],[-226.0138,-131.0669,-209.9613],[-226.4447,-131.0669,-209.2341],[-223.913,-131.013,-206.0559],[-226.0946,-130.9053,-205.8674],[-224.8826,-130.9322,-203.8743],[-226.3639,-130.8245,-202.5545],[-224.2362,-130.9322,-201.7465],[-225.3943,-130.8514,-200.346],[-223.7244,-130.9592,-200.6692],[-224.8018,-130.8784,-199.5918],[-222.8626,-130.9592,-200.2652],[-224.0746,-130.8784,-198.5414],[-220.8425,-130.9322,-196.4137],[-220.9772,-130.8514,-191.9427],[-224.5324,-130.7706,-191.5926],[-224.8557,-130.8514,-187.8488],[-222.8626,-130.9322,-184.6706],[-227.9261,-131.0938,-181.7349],[-224.4247,-131.0938,-177.3447],[-226.4986,-131.1208,-175.2708],[-232.6933,-131.1746,-174.8937],[-237.676,-131.1477,-173.4393],[-237.3528,-131.1208,-170.6113],[-241.8508,-130.8514,-167.9179],[-238.4033,-130.9322,-163.447],[-239.1574,-130.8514,-157.5216],[-241.77,-130.7168,-155.6901],[-237.0566,-130.8514,-150.061],[-239.5614,-130.7168,-148.5527],[-239.4537,-130.7976,-143.5161],[-245.1905,-130.7976,-142.6273],[-243.6553,-130.9592,-138.695],[-247.3991,-130.8784,-140.3918],[-243.1705,-130.8784,-135.4091],[-246.9008,-130.7572,-134.9781],[-250.6311,-130.636,-134.5472],[-252.2471,-130.205,-132.1501],[-246.2409,-129.9626,-130.4802],[-252.7858,-129.6125,-128.541],[-250.3887,-129.5317,-127.6253],[-256.2064,-129.5048,-123.9623],[-252.2741,-129.5048,-119.1681],[-255.3041,-129.5048,-116.8922],[-258.3341,-129.5048,-114.6163],[-254.8597,-129.5048,-112.4886],[-255.4522,-129.5048,-111.6806],[-259.5731,-129.5048,-111.4651],[-260.3811,-129.5048,-108.7448],[-254.5365,-129.5048,-105.5397],[-254.6981,-129.5048,-100.9442],[-254.8597,-129.5048,-96.3486],[-248.4495,-129.5048,-94.7326],[-247.2913,-129.5048,-88.9351],[-244.2209,-129.5048,-94.7865],[-242.2817,-129.5048,-89.2583],[-241.0158,-129.5048,-94.9211],[-239.6153,-129.5048,-89.3391],[-235.8984,-129.5048,-86.538],[-234.9827,-129.5048,-92.2547],[-231.3871,-129.5048,-93.5879],[-227.7914,-129.5048,-94.9211],[-223.4955,-129.5048,-90.4872],[-219.1996,-129.5048,-86.0532],[-220.3712,-129.5048,-79.0875],[-221.5428,-129.5048,-72.1218],[-216.1292,-129.5048,-68.7821],[-220.7887,-129.5048,-66.0618],[-217.3277,-129.9222,-64.4323],[-213.8667,-130.3397,-62.8028],[-213.5166,-130.7706,-60.4596],[-218.5801,-130.8514,-59.1937],[-215.8329,-130.9053,-55.1806],[-221.6506,-130.9592,-54.8035],[-219.9133,-130.9592,-47.8008],[-218.1761,-130.9592,-40.7981],[-220.8156,-130.9592,-34.5091],[-223.4551,-130.9592,-28.2201],[-226.3909,-130.9592,-35.0881],[-229.3266,-130.9592,-41.9562],[-232.2355,-130.9592,-35.3575],[-235.1443,-130.9592,-28.7587],[-238.0531,-130.9592,-22.16],[-241.8687,-130.9592,-27.0889],[-245.6843,-130.9592,-32.0177],[-249.4999,-130.9592,-36.9466],[-256.9605,-130.9592,-36.4079],[-257.0503,-130.9592,-29.8091],[-257.1401,-130.9592,-23.2104],[-257.2298,-130.9592,-16.6117],[-260.9332,-130.9592,-22.0792],[-264.6366,-130.9592,-27.5467],[-264.861,-130.9592,-20.7954],[-265.0855,-130.9592,-14.044],[-265.3099,-130.9592,-7.2927],[-268.919,-130.9592,-4.8956],[-275.2888,-130.9322,-5.4881],[-281.6586,-130.9053,-6.0806],[-284.4597,-130.9053,-1.5468],[-287.2608,-130.9053,2.987],[-290.0619,-130.9053,7.5208],[-283.9884,-130.9322,8.5578],[-277.9148,-130.9592,9.5947],[-278.8306,-130.9592,11.0491],[-284.9984,-130.9592,11.4127],[-291.1662,-130.9592,11.7763],[-297.1993,-130.9592,11.709],[-303.2324,-130.9592,11.6417],[-302.6399,-130.9592,13.123],[-305.1178,-130.9592,15.1161],[-304.5926,-130.9592,19.5871],[-304.0674,-130.9592,24.0581],[-307.5149,-130.9592,25.3778],[-310.1813,-130.9592,25.1085],[-314.2887,-130.9592,28.7445],[-318.3961,-130.9592,32.3805],[-315.191,-130.9592,36.2186],[-311.9859,-130.9592,40.0566],[-311.5549,-130.9592,43.0462],[-315.8239,-130.9592,47.1402],[-320.0929,-130.9592,51.2341],[-313.6961,-130.9592,52.4595],[-307.2994,-130.9592,53.685],[-311.3395,-130.9592,57.55],[-315.3795,-130.9592,61.415],[-310.5853,-130.9592,58.4927],[-305.7911,-130.9592,55.5704],[-309.5888,-130.9592,59.8158],[-313.3864,-130.9592,64.0612],[-310.7738,-130.9592,67.7309],[-306.3433,-130.9592,68.6332],[-301.9127,-130.9592,69.5354],[-301.8454,-130.9592,74.4946],[-301.778,-130.9592,79.4537],[-303.9058,-131.1746,82.8474],[-308.2152,-131.3901,85.7293],[-305.6026,-131.6056,90.0656],[-302.8823,-131.6325,91.3853],[-305.441,-131.6325,93.136],[-305.1986,-131.6325,94.5366],[-302.5052,-131.6594,95.9102],[-302.7207,-131.6594,98.3881],[-308.2421,-131.6594,97.9302],[-309.5618,-131.6864,104.0711],[-313.3595,-131.6864,104.6367],[-317.1571,-131.6864,105.2023],[-321.0355,-131.6864,110.589],[-322.1668,-131.6864,117.4571],[-317.8843,-131.6864,121.3355],[-320.9817,-131.6594,128.015],[-323.8636,-131.6325,131.5972],[-322.059,-131.5517,135.718],[-322.8401,-131.444,136.9031],[-325.4257,-131.4978,138.3575],[-326.4223,-131.3632,141.9128],[-329.4119,-131.4709,142.9901],[-328.6039,-131.3362,144.8755],[-330.3815,-131.4709,144.3099],[-329.8159,-131.3362,147.0302],[-331.4319,-131.417,146.8955],[-332.8325,-131.5517,145.4949],[-336.8254,-131.6325,143.3133],[-341.2088,-131.6594,146.9224],[-345.5923,-131.6864,150.5315],[-345.9963,-131.6864,144.8755],[-348.2587,-131.6864,149.8043],[-349.4707,-131.6864,144.1483],[-352.2449,-131.6864,148.6731],[-353.4569,-131.6864,143.2056],[-355.2345,-131.6864,147.7843],[-357.039,-131.6864,142.9362],[-358.8436,-131.6864,147.7843],[-361.8602,-131.6864,143.3403],[-363.2607,-131.6864,148.0536],[-366.3311,-131.6864,143.852],[-367.8664,-131.6864,148.296],[-369.9402,-131.6864,148.296],[-372.068,-131.6864,143.7173],[-376.916,-131.6594,145.7912],[-380.9022,-131.6325,140.9432],[-384.0265,-131.4978,143.3941],[-387.5009,-129.9896,138.4114],[-390.8676,-128.8045,139.1117],[-395.7157,-127.0269,137.1186],[-398.5168,-126.0842,140.9701],[-400.6984,-125.3839,146.1952],[-401.9643,-124.953,147.1648],[-403.7688,-124.2527,146.5184],[-405.0347,-123.7948,147.4611],[-405.3041,-123.4986,146.2491],[-406.0582,-123.0946,145.6296],[-408.186,-122.2327,148.2152],[-410.9332,-120.9129,149.3464],[-410.7446,-120.9937,146.7608],[-412.7377,-120.8321,144.7408],[-416.3738,-120.6436,147.0302],[-416.3199,-120.2127,151.0433],[-420.4003,-119.9433,151.2722],[-424.4808,-119.674,151.5011],[-422.1106,-119.4316,152.7939],[-425.208,-119.3239,152.5785],[-427.4435,-118.3273,156.026],[-422.0298,-118.1926,157.5612],[-424.4269,-117.6001,159.3657],[-420.6562,-117.5193,160.5239],[-421.572,-117.1692,161.305],[-420.2522,-115.9841,164.6447],[-417.7474,-115.4185,166.6378],[-416.5354,-115.9572,165.7759],[-415.5388,-114.7451,168.981],[-414.2729,-114.5297,170.4624],[-414.1383,-113.6947,172.4016],[-413.1148,-113.4793,173.3443],[-412.3068,-113.9371,172.9403],[-411.6604,-113.5331,173.7752],[-409.4788,-113.9102,173.9368],[-407.8358,-113.3715,175.2296],[-404.7654,-113.2369,176.4147],[-403.5264,-113.7755,175.9838],[-400.7253,-113.8563,176.8457],[-396.9816,-112.779,177.8422],[-393.5071,-113.3715,176.3608],[-392.0258,-112.8598,176.7918],[-388.5783,-112.6982,182.4209],[-382.7337,-112.7521,183.3636],[-376.6736,-111.7824,187.5114],[-373.0107,-110.9206,185.0335],[-370.9368,-109.8971,187.2151],[-370.3442,-109.8702,186.2185],[-370.9906,-109.143,192.2786],[-370.3442,-108.8467,192.7365],[-369.1053,-108.6851,191.0397],[-367.4893,-107.5539,194.3256],[-365.6578,-107.2307,192.6557],[-364.9845,-106.0725,198.0693],[-363.0452,-104.8605,199.8739],[-361.1329,-103.9448,200.628],[-360.6751,-103.2176,203.483],[-361.3754,-102.9482,206.3379],[-356.8505,-102.0325,206.1225],[-357.6585,-101.8439,209.1121],[-351.4638,-101.7631,213.233],[-350.7096,-101.0898,219.3469],[-351.0598,-100.8205,220.2626],[-357.2545,-99.8239,222.121],[-356.3388,-99.1775,224.8683],[-359.6516,-98.5581,226.2688],[-358.8436,-97.9386,228.2619],[-361.0791,-97.6154,228.5312],[-362.3719,-96.5919,230.7398],[-365.5231,-96.4572,230.8745],[-366.4119,-95.8378,232.275],[-367.193,-96.0532,232.2481],[-367.5431,-95.3799,233.2716],[-368.4858,-95.4338,233.8372],[-368.6205,-94.7604,234.9684],[-369.8864,-95.1375,235.0492],[-370.3712,-94.7604,235.6417],[-373.4955,-94.6796,236.4093],[-374.1419,-94.2487,237.251],[-373.4147,-93.8985,237.655],[-373.0915,-92.8212,239.4595],[-373.8995,-93.3868,239.6481],[-373.9803,-93.3868,240.9948],[-373.4416,-93.1444,241.6681],[-372.9029,-93.71,242.9878],[-376.8891,-93.9524,243.3919],[-381.9796,-93.9793,244.7385],[-380.4443,-94.0063,251.6066],[-386.8545,-94.0332,252.2799],[-389.7903,-94.0063,254.9464],[-395.7157,-93.8985,250.8794],[-399.1093,-93.9255,252.9533],[-399.6211,-93.8177,252.1722],[-401.2371,-93.8177,252.5762],[-402.5838,-93.4945,252.1722],[-405.3041,-93.2252,252.4415],[-405.9235,-93.0636,251.6335],[-407.1894,-92.8481,251.5527],[-407.2702,-92.7943,250.7986],[-408.7246,-92.6057,251.2026],[-409.8289,-92.4172,250.6101],[-412.6569,-92.094,251.1218],[-413.4649,-92.2287,253.3842],[-415.081,-92.094,254.4346],[-415.9428,-92.1209,256.293],[-418.2861,-92.094,256.293],[-419.2287,-92.1209,257.5051],[-422.4338,-92.1479,257.1011],[-424.5885,-92.4172,255.5389],[-428.7902,-92.902,254.4616],[-428.871,-92.9559,253.7344],[-432.9918,-93.5215,253.2226],[-435.6582,-93.7369,253.5997],[-436.3316,-93.7639,253.2226],[-436.3854,-93.8177,252.4685],[-437.5705,-93.9524,252.4685],[-438.4863,-94.0332,245.5937],[-445.7583,-94.0197,243.9238],[-453.0304,-94.0063,242.2539],[-453.1651,-94.0332,235.1636],[-455.6026,-94.0332,232.1336],[-458.0401,-94.0332,229.1036],[-464.0058,-94.0332,225.9793],[-469.9716,-94.0332,222.855],[-465.3795,-94.0332,218.0844],[-460.7873,-94.0332,213.3138],[-464.5176,-94.0332,212.7751],[-468.2479,-94.0332,212.2364],[-461.6492,-94.0332,210.378],[-465.4064,-94.0332,209.6777],[-469.1636,-94.0332,208.9774],[-470.3487,-94.0332,205.6646],[-469.7562,-94.0332,199.7392],[-473.6211,-94.0332,197.4364],[-477.4861,-94.0332,195.1336],[-477.4322,-94.0332,190.3933],[-477.3784,-94.0332,185.6529],[-480.1795,-94.0332,187.3228],[-481.58,-94.0332,180.1854],[-487.5593,-94.0332,184.4679],[-488.6636,-94.0332,180.2662],[-489.7678,-94.0332,176.0646],[-496.3127,-94.0332,178.7849],[-498.3327,-94.0332,173.3712],[-496.5282,-94.0332,168.1192],[-500.1103,-94.0332,165.6682],[-499.1677,-94.0332,162.8132],[-501.6456,-94.0332,159.7428],[-506.6552,-94.0332,162.9479],[-510.4528,-94.0332,161.1164],[-514.2505,-94.0332,159.2849],[-510.6952,-94.0332,152.7939],[-515.8126,-94.0332,148.2691],[-511.6918,-94.0332,143.044],[-506.4936,-94.0332,140.7816],[-504.0157,-94.0332,145.468],[-501.7533,-94.0332,143.017],[-499.841,-94.0601,137.8189],[-496.6359,-94.0601,140.9432],[-495.9087,-94.0871,137.4149],[-494.2927,-94.0871,137.1455],[-490.6297,-94.0871,132.6745],[-488.0441,-94.0871,136.3914],[-483.3576,-94.096,133.6801],[-478.6712,-94.105,130.9688],[-473.9847,-94.114,128.2574],[-473.7827,-94.114,124.1231],[-473.5807,-94.114,119.9888],[-471.9647,-93.9524,117.2416],[-477.3649,-93.9255,115.9353],[-482.7651,-93.8985,114.629],[-481.5531,-93.7369,112.0165],[-482.792,-93.6292,108.2188],[-484.8121,-93.6023,104.502],[-484.7582,-93.5484,99.8425],[-483.4923,-93.8447,98.4419],[-486.3203,-95.0567,95.0483],[-483.4384,-95.5954,93.5939],[-482.1052,-95.8782,89.4596],[-480.772,-96.161,85.3253],[-484.4619,-96.1879,85.0021],[-482.2668,-96.1744,81.5411],[-480.0717,-96.161,78.0801],[-481.3376,-96.1879,78.2956],[-479.1291,-96.1744,74.8582],[-476.9205,-96.161,71.4208],[-478.1864,-96.1879,70.1482],[-482.9267,-96.2014,69.6499],[-487.667,-96.2148,69.1516],[-487.9094,-96.1879,66.4785],[-492.1784,-96.1879,65.8994],[-496.4474,-96.1879,65.3203],[-492.138,-96.1744,64.5797],[-487.8286,-96.161,63.839],[-492.1649,-96.1744,62.0344],[-496.5012,-96.1879,60.2299],[-492.2592,-96.1744,55.301],[-488.0172,-96.161,50.3722],[-493.2827,-96.1744,46.8439],[-498.5482,-96.1879,43.3156],[-503.8541,-96.2014,45.1201],[-509.16,-96.2148,46.9247],[-511.6918,-96.2148,43.3964],[-516.0281,-96.2148,40.7569],[-520.3644,-96.2148,38.1174],[-518.9908,-96.2148,31.9496],[-517.6172,-96.2148,25.7818],[-521.2936,-96.2148,20.5836],[-524.9701,-96.2148,15.3854],[-528.7004,-96.2148,17.6883],[-532.4307,-96.2148,19.9911],[-532.9963,-96.2148,23.7214],[-533.5619,-96.2148,27.4517],[-535.9051,-96.2148,21.7956],[-537.8443,-96.2148,27.5325],[-539.2987,-96.2148,21.7956],[-541.3726,-96.2148,21.4455],[-543.5004,-96.2148,26.8322],[-547.5673,-96.2148,26.4821],[-547.702,-96.2148,19.4255],[-551.3919,-96.2148,22.4959],[-555.0818,-96.2148,25.5663],[-557.3846,-96.2148,30.0373],[-559.6875,-96.2148,34.5083],[-562.7579,-96.2148,36.9323],[-563.2427,-96.2148,37.9289],[-567.9157,-96.2148,38.2251],[-572.5887,-96.2148,38.5214],[-572.1847,-96.2148,42.9385],[-576.7499,-96.2148,43.1001],[-581.3152,-96.2148,43.2617],[-581.6922,-96.2148,46.6823],[-577.2212,-96.2148,47.6788],[-572.7503,-96.2148,48.6754],[-577.4232,-96.2148,49.0659],[-582.0962,-96.2148,49.4564],[-582.4194,-96.2148,50.7762],[-577.8138,-96.2148,51.2745],[-573.2081,-96.2148,51.7727],[-574.5818,-96.2148,55.3448],[-575.9554,-96.2148,58.9169],[-570.4205,-96.2148,60.8157],[-564.8857,-96.2148,62.7145],[-565.8553,-96.2148,66.4886],[-566.8249,-96.2148,70.2627],[-560.684,-96.2148,68.6399],[-557.2365,-96.2148,72.1211],[-560.2531,-96.2148,77.5953],[-556.2265,-96.2148,79.0901],[-552.1999,-96.2148,80.585],[-552.0249,-96.2148,84.6115],[-551.8498,-96.2148,88.6381],[-558.3139,-96.2148,90.8467],[-559.2296,-96.2148,93.1899],[-559.8221,-96.2148,93.5131],[-554.7048,-96.2148,97.5801],[-558.6371,-96.2014,97.1895],[-562.5694,-96.1879,96.799],[-569.222,-96.161,93.4054],[-570.6764,-95.757,93.6208],[-571.4844,-95.5415,94.4019],[-572.7503,-96.0532,97.4723],[-574.0431,-95.8108,98.5227],[-575.6052,-96.134,103.3439],[-576.8172,-95.8647,104.5559],[-579.6453,-95.5684,110.1311],[-583.4429,-95.2991,109.2692],[-584.224,-95.2722,112.0703],[-588.3448,-95.2991,117.5379],[-591.9809,-95.2452,119.4501],[-593.3814,-95.1375,125.5102],[-594.4588,-94.7604,122.8438],[-596.0478,-94.4372,122.5206],[-596.8289,-94.2217,120.9315],[-598.3641,-93.8716,122.5475],[-598.4988,-93.7639,119.8272],[-599.226,-93.6561,120.6622],[-599.1452,-93.6023,116.8645],[-600.5996,-93.2521,117.1877],[-601.8924,-92.5788,113.9288],[-603.3468,-92.2287,113.6864],[-604.2895,-91.4745,112.3935],[-605.6901,-91.7977,112.6898],[-606.6597,-91.6092,112.0703],[-608.3296,-91.4206,112.1781],[-609.9994,-91.2321,113.2554],[-613.7163,-90.9358,112.7975],[-614.4435,-90.855,110.5351],[-616.9483,-90.7204,109.3231],[-617.8641,-90.6396,107.1415],[-620.2611,-90.5318,106.3335],[-621.4732,-90.451,106.6836],[-622.3889,-89.9393,103.9903],[-623.17,-89.7777,103.9903],[-623.8433,-89.3737,102.5897],[-625.6209,-89.4545,104.502],[-627.6409,-88.9158,103.7209],[-629.634,-88.7273,104.1249],[-632.1658,-88.0539,102.6166],[-634.4821,-87.7846,103.1553],[-636.2328,-87.3806,102.2665],[-636.933,-87.4075,103.4247],[-637.7949,-87.2459,102.886],[-638.8453,-87.1113,104.1788],[-640.8115,-86.815,104.1249],[-642.0235,-86.6534,102.5358],[-644.4475,-86.4649,102.078],[-645.2555,-86.5187,103.6671],[-647.5987,-86.6534,104.7444],[-649.9958,-86.7342,104.3404],[-652.8508,-86.6265,100.866],[-657.241,-86.7611,100.1118],[-660.4191,-86.7611,97.3377],[-661.6042,-86.7342,94.5366],[-664.8093,-86.815,93.7286],[-666.3984,-87.3267,92.5435],[-666.8024,-87.6499,90.5235],[-668.4184,-88.2425,89.7154],[-668.0414,-88.3502,88.0994],[-669.2601,-88.5926,89.3114],[-674.2226,-88.5926,89.8501],[-678.3704,-88.4849,84.4365],[-681.6731,-88.4175,82.6319],[-684.9759,-88.3502,80.8274],[-686.6188,-88.3771,73.8448],[-690.1202,-88.4579,71.7911],[-691.9786,-88.2963,74.4374],[-695.6954,-88.2694,74.8683],[-697.5808,-88.3771,70.9293],[-699.924,-88.2963,71.9864],[-702.6443,-88.1617,75.6022],[-705.3915,-88.1886,71.6363],[-709.0006,-88.1078,72.0403],[-711.5055,-88.0539,68.1753],[-713.9025,-88.0539,66.5593],[-716.4343,-87.8115,67.7174],[-720.4205,-87.4614,66.1014],[-725.2416,-87.4614,64.8894],[-729.6318,-87.7846,62.8963],[-735.638,-87.6769,62.1152],[-736.85,-87.2729,63.3003],[-739.0585,-87.4883,63.0579],[-740.1089,-87.0843,63.9198],[-741.8058,-87.4883,63.2734],[-742.4791,-87.0305,64.0006],[-743.4218,-87.4075,63.5427],[-744.122,-87.4075,63.8121],[-744.9301,-87.4614,64.5931],[-746.7885,-87.9731,65.1587],[-748.3506,-87.9462,67.2865],[-749.5357,-88.0001,66.4785],[-750.3976,-88.0001,68.2359],[-751.2191,-88.0405,63.94],[-752.0405,-88.0809,59.6441],[-752.5253,-88.0899,66.2361],[-753.0101,-88.0988,72.8281],[-753.4949,-88.1078,79.4201],[-756.3768,-88.1347,85.938],[-757.0861,-88.1347,78.6278],[-757.7953,-88.1347,71.3176],[-758.5046,-88.1347,64.0073],[-759.9321,-88.1347,71.0303],[-761.3596,-88.1347,78.0532],[-762.787,-88.1347,85.0761],[-763.209,-88.1347,77.8736],[-763.631,-88.1347,70.6711],[-764.0529,-88.1347,63.4687],[-765.8575,-88.1347,63.1993],[-767.3927,-88.1213,68.145],[-768.9279,-88.1078,73.0907],[-770.9883,-88.0943,65.9903],[-773.0487,-88.0809,58.8899],[-776.2269,-88.0809,54.8701],[-779.836,-88.0809,52.4461],[-784.7918,-88.1078,47.7866],[-789.6937,-88.0674,49.416],[-794.5956,-88.027,51.0455],[-800.2247,-88.027,46.3321],[-800.3594,-88.027,45.2279],[-802.2178,-87.9462,44.2852],[-802.8642,-88.0001,42.9924],[-805.0728,-87.4883,42.319],[-806.4733,-87.3537,40.3798],[-808.7088,-86.5457,39.7873],[-811.3214,-86.5187,35.9088],[-813.2067,-86.6803,31.7072],[-814.7958,-86.5457,30.5221],[-816.8158,-86.6803,26.509],[-817.7047,-86.5457,25.6741],[-817.6239,-86.7073,24.0311],[-818.7281,-86.5726,21.7687],[-817.0582,-87.5691,20.0719],[-818.2972,-87.0843,19.8025],[-817.57,-88.0001,16.0318],[-819.9401,-87.1651,13.3924],[-819.4823,-87.6769,12.2342],[-821.0175,-87.1651,10.6182],[-821.0983,-87.4614,8.8944],[-823.63,-87.2729,2.1341],[-823.226,-87.7307,1.353],[-824.0071,-87.4345,0.141],[-823.5762,-87.9193,-1.7174],[-824.4919,-87.2998,-4.0068],[-824.0071,-87.623,-6.1345],[-822.7951,-88.1617,-7.7236],[-822.822,-88.0539,-11.3058],[-822.2564,-88.0809,-12.7602],[-822.6335,-87.9731,-14.4301],[-822.0679,-88.0539,-14.6186],[-822.7951,-87.9731,-16.3154],[-822.418,-88.0001,-21.0557],[-822.822,-87.8385,-23.0757],[-824.4381,-87.1651,-25.8768],[-824.8421,-87.5961,-28.2739],[-824.4381,-88.1078,-29.863],[-826.2426,-88.0539,-33.6607],[-828.0472,-88.0001,-37.4583],[-826.8351,-88.0809,-42.2525],[-828.0472,-88.0001,-45.4576],[-827.6432,-87.3267,-48.6896],[-825.8117,-87.5153,-51.9216],[-826.2965,-87.0574,-53.3222],[-824.6266,-87.6499,-53.9147],[-825.4346,-87.2459,-54.0225],[-824.5727,-87.4345,-54.6419],[-825.2191,-87.0035,-55.0459],[-825.2191,-86.9766,-55.8809],[-825.9733,-86.815,-56.6619],[-824.6805,-87.623,-58.278],[-825.9733,-87.0574,-59.059],[-826.3773,-87.0035,-60.2711],[-825.6231,-87.4883,-61.8871],[-826.0271,-87.5422,-63.8802],[-827.2391,-87.1113,-65.4692],[-828.8282,-87.0574,-66.2772],[-829.6362,-87.1651,-70.2634],[-832.8481,-87.2459,-74.6536],[-832.8481,-87.2729,-78.2358],[-834.8412,-87.2998,-81.0369],[-836.6255,-87.2729,-82.5182],[-836.033,-87.7846,-84.7537],[-836.5716,-87.6499,-84.9692],[-837.6221,-88.1078,-87.5009],[-839.9989,-87.6499,-88.9284],[-841.6688,-87.9462,-91.4602],[-841.7766,-88.431,-92.7799],[-844.5777,-88.5387,-94.4027],[-845.6281,-88.5657,-96.0793],[-851.7959,-88.5657,-97.1364],[-855.2434,-88.5387,-99.3719],[-858.2599,-88.4579,-104.0584],[-863.2157,-88.2694,-105.5936],[-865.6128,-87.8654,-110.4686],[-865.9899,-88.2425,-112.7579],[-867.2557,-87.623,-114.6702],[-866.8517,-87.3267,-116.6902],[-864.8587,-87.7846,-119.4913],[-864.4547,-87.2998,-122.2924],[-862.8656,-87.3537,-126.3055],[-863.8621,-86.7881,-129.7261],[-863.1349,-86.7881,-133.3352],[-861.5997,-87.2459,-133.7661],[-861.5997,-87.3267,-135.8939],[-862.5962,-86.8689,-136.9443],[-862.0306,-87.2459,-137.052],[-862.677,-87.6769,-139.2606],[-861.896,-88.027,-139.1798],[-862.8656,-88.1347,-141.3614],[-862.0576,-88.1886,-143.543],[-863.5658,-88.1617,-145.967],[-862.7848,-88.1078,-150.9498],[-861.2226,-88.2155,-152.889],[-860.9802,-88.1347,-157.4946],[-860.6301,-86.9497,-160.9691],[-860.5223,-86.6803,-165.9248],[-862.0037,-86.7611,-171.7694],[-864.9125,-86.8689,-174.7321],[-863.108,-86.7611,-175.4324],[-860.8725,-86.5726,-175.4863],[-861.1957,-86.2763,-176.6714],[-860.6301,-85.8185,-177.6679],[-861.3842,-85.2798,-180.4151],[-860.4685,-84.3102,-183.297],[-861.869,-84.1486,-186.2328],[-861.9498,-83.96,-188.172],[-859.7413,-83.0712,-188.4952],[-860.8186,-83.179,-190.9462],[-857.7482,-81.6437,-192.5891],[-856.6439,-80.4048,-196.6292],[-852.0383,-78.3578,-196.6292],[-851.2572,-77.5229,-198.9724],[-848.887,-76.9034,-197.1409],[-850.2337,-76.9034,-199.8612],[-849.1833,-76.7418,-200.3191],[-847.271,-76.5802,-197.7334],[-844.5777,-76.2301,-200.8039],[-840.8608,-75.5837,-198.0836],[-836.814,-75.0181,-201.154],[-832.7134,-74.7218,-200.75],[-830.2624,-74.7218,-195.875],[-825.5693,-74.7218,-197.7873],[-820.7481,-74.7218,-195.9827],[-817.6239,-74.7487,-191.0539],[-812.8835,-74.8295,-191.5387],[-810.9174,-76.0146,-189.6264],[-809.7592,-76.7957,-189.6533],[-809.3014,-76.9304,-189.1685],[-806.204,-77.065,-188.2259],[-801.5714,-77.065,-188.8453],[-795.9962,-76.5264,-188.7107],[-793.6799,-76.4186,-190.2998],[-789.8553,-74.2909,-190.219],[-787.7545,-73.7253,-188.3067],[-784.1184,-72.3517,-187.4448],[-784.1723,-71.8399,-189.4109],[-781.2366,-71.4359,-189.8149],[-777.7217,-70.6818,-191.8484],[-774.2069,-69.9276,-193.8819],[-773.9375,-69.2274,-196.683],[-773.0757,-68.6079,-198.6222],[-771.8098,-68.4193,-198.9454],[-771.9445,-68.0423,-200.2113],[-774.0453,-67.746,-201.0193],[-775.2842,-66.938,-203.578],[-773.3181,-66.5609,-205.0324],[-773.6682,-66.0223,-206.9447],[-771.9175,-66.0223,-207.1063],[-768.6855,-65.4297,-205.9212],[-767.662,-65.1065,-204.8708],[-767.4735,-64.3793,-202.8777],[-764.6993,-64.2985,-202.0428],[-763.7836,-63.0865,-198.5414],[-766.7732,-62.3862,-197.2756],[-766.5847,-61.6321,-195.4171],[-768.5239,-61.6051,-195.7673],[-768.3354,-61.2011,-194.6361],[-769.1299,-59.8006,-190.9866],[-769.9244,-58.4,-187.3371],[-772.4831,-57.7536,-183.9704],[-773.1834,-57.8075,-183.7818],[-774.0453,-57.5382,-182.2466],[-773.5335,-57.4304,-181.681],[-774.3416,-57.2688,-180.1727],[-777.2773,-56.7571,-177.641],[-776.0653,-56.6763,-175.0823],[-778.3008,-56.407,-172.8198],[-775.9037,-56.5147,-171.0153],[-776.7656,-56.4339,-170.3689],[-781.9907,-56.1376,-170.0457],[-781.6675,-56.0299,-168.5643],[-782.7179,-55.7336,-161.2653],[-782.7448,-55.7875,-157.764],[-779.7821,-56.003,-157.0368],[-775.4728,-56.1646,-153.1852],[-777.008,-56.003,-146.5865],[-775.8902,-56.0703,-143.0043],[-774.7725,-56.1376,-139.4222],[-776.9272,-56.1107,-136.3113],[-779.0819,-56.0838,-133.2005],[-780.4016,-56.2992,-129.1335],[-778.8664,-56.2723,-128.5141],[-781.2904,-56.4878,-125.686],[-780.5632,-56.811,-125.5514],[-781.0211,-57.1611,-124.9588],[-781.479,-57.5112,-122.1847],[-780.7517,-57.5786,-117.6194],[-780.0245,-57.6459,-113.0542],[-779.7013,-57.619,-113.8083],[-778.0853,-57.6728,-108.7448],[-778.4085,-57.5382,-108.0445],[-777.5467,-57.619,-107.5867],[-777.1157,-57.2688,-104.7048],[-775.9845,-57.3496,-103.0079],[-775.796,-57.1072,-101.7151],[-774.9072,-57.6998,-100.4762],[-775.4997,-57.6998,-99.9914],[-774.1261,-57.619,-98.0791],[-774.8533,-57.592,-96.1331],[-773.2642,-57.5112,-94.268],[-773.2642,-57.4574,-92.6722],[-774.4762,-57.3496,-91.8642],[-774.0722,-57.188,-90.2751],[-775.2573,-57.0264,-89.09],[-775.6344,-56.784,-85.8849],[-774.0453,-56.6763,-84.6729],[-774.0453,-56.4339,-81.8718],[-775.6344,-56.38,-79.8787],[-774.8533,-56.2992,-77.1046],[-772.8602,-56.1646,-76.2965],[-772.0522,-56.1915,-73.0914]],"expectedDistance":3990.52,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"6017acab810b07389aa0bdbcbee70d7f2d17115c1f304c07e014191e83779180","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"ragefire-chasm","mapId":389,"legs":[{"id":"leg-01-creature-48644","objectiveId":"creature-48644","objectiveName":"Oggleflint","checkpoints":[[-5.208,-17.7611,-15.0256],[-3.523,-18.096,-16.3443],[-3.9207,-18.9647,-19.1387],[-1.6496,-19.331,-20.1853],[-0.5088,-19.9275,-21.7656],[-1.974,-20.4613,-24.4344],[-0.2053,-20.7229,-25.2717],[0.5168,-21.0683,-26.5275],[3.5833,-20.9009,-25.2612],[3.6042,-21.1416,-26.2345],[4.5671,-21.173,-26.6636],[3.3635,-21.3718,-27.6683],[3.9391,-21.4346,-28.6312],[5.4776,-21.4032,-29.0917],[6.2939,-21.4346,-30.7034],[5.9486,-21.4974,-32.2419],[4.5252,-21.5916,-33.8013],[5.7916,-21.623,-36.3759],[5.0694,-21.6858,-38.2702],[6.744,-21.623,-38.6365],[5.4985,-21.6858,-39.6203],[7.2987,-21.623,-39.6517],[7.4243,-21.6858,-42.1138],[9.7372,-21.5916,-42.794],[10.564,-21.6544,-45.2352],[13.2956,-21.5916,-43.4429],[13.7247,-21.6858,-45.0154],[15.6295,-21.623,-42.8464],[14.5305,-21.6858,-44.9212],[17.3668,-21.623,-42.2812],[18.7692,-21.6858,-45.2771],[22.9137,-21.6858,-44.4058],[24.3893,-21.6858,-42.4147],[22.8823,-21.623,-40.5413],[26.0639,-21.6858,-42.1635],[26.5453,-21.6858,-42.1949],[26.9979,-21.5916,-40.4575],[31.93,-21.6544,-41.7239],[35.47,-21.5602,-39.6726],[38.6726,-21.6544,-40.8762],[42.2728,-21.6544,-40.4785],[44.2718,-21.5602,-38.469],[46.6684,-21.5916,-38.4795],[47.9871,-21.5602,-39.704],[48.8872,-21.5288,-41.7134],[50.8966,-21.2358,-42.1111],[52.4037,-20.9323,-40.1017],[54.2876,-20.5973,-40.468],[56.1714,-20.0636,-39.1912],[58.1704,-19.4042,-40.9808],[60.3682,-18.6402,-41.3262],[60.431,-18.6716,-39.6621],[61.4985,-18.3681,-39.3796],[62.6497,-18.0646,-40.6459],[63.5707,-17.9286,-39.3377],[64.5441,-17.6251,-40.6355],[65.4546,-17.1227,-40.5727],[65.8523,-17.0913,-39.0865],[66.7209,-16.9866,-38.7621],[67.5896,-16.7878,-40.311],[69.3269,-17.5204,-39.861],[70.4049,-17.5204,-41.4204],[71.7969,-17.6251,-41.8704],[73.126,-17.7611,-41.4099],[75.0936,-18.2321,-39.6935],[76.203,-18.3995,-39.8087],[77.3437,-18.9333,-38.4167],[78.2124,-18.9961,-38.7412],[78.2752,-19.2996,-36.8782],[78.7357,-19.4356,-36.4701],[82.3359,-20.4613,-38.8039],[84.6803,-21.4241,-38.0713],[85.8734,-22.1254,-36.8678],[86.2816,-22.1882,-37.2655],[91.5354,-25.6209,-36.9096],[92.4041,-25.757,-38.0295],[93.2099,-26.2594,-38.0295],[93.8405,-26.228,-39.2958],[94.9734,-27.1908,-38.5632],[96.1691,-27.756,-39.3691],[96.3052,-27.599,-40.4366],[97.289,-28.2374,-40.6878],[98.3565,-28.6351,-40.4262],[100.1566,-28.6979,-41.1588],[101.873,-29.1584,-39.9866],[103.4638,-29.2212,-40.3843],[104.615,-28.9281,-41.9437],[106.1535,-29.3677,-40.3843],[107.0954,-29.3677,-40.7192],[108.5502,-29.8596,-39.5889],[109.8166,-29.7863,-41.4099],[112.4749,-30.4561,-40.6669],[114.0029,-30.5608,-41.703],[116.3368,-30.969,-41.0855],[116.5984,-31.3039,-39.9029],[117.6241,-31.5341,-39.1598],[118.6183,-31.5655,-39.4842],[119.2672,-31.5027,-40.5413],[120.6696,-31.8272,-40.0808],[121.0673,-31.8272,-40.8762],[121.8732,-32.0574,-40.8762],[122.3546,-32.026,-41.8914],[123.9559,-32.1621,-42.2891],[125.0652,-32.3295,-41.6716],[126.6561,-32.3609,-42.0693],[127.7968,-32.5284,-41.3681],[128.5399,-32.8319,-39.1075],[130.5493,-33.0621,-37.9039],[131.4075,-33.2296,-36.6061],[133.867,-33.0621,-36.8678],[135.4787,-32.8947,-37.6632],[137.8754,-32.8633,-37.6736],[139.2046,-33.0307,-36.8259],[139.2046,-33.0307,-35.2246],[140.5023,-33.1563,-33.6966],[141.7478,-33.2924,-34.806],[142.428,-33.3552,-33.2989],[144.3328,-33.7633,-33.2257],[145.9132,-34.1924,-33.9897],[148.268,-34.8309,-32.4721],[150.0785,-35.3646,-33.6966],[151.4182,-35.7728,-32.5349],[152.8206,-36.2961,-32.4721],[153.752,-36.6205,-33.8955],[155.5417,-37.3531,-33.0687],[156.9337,-37.8555,-33.9269],[158.514,-38.4939,-32.9745],[160.4502,-38.9649,-34.3246],[161.0781,-39.3626,-32.3361],[164.94,-40.2207,-35.1514],[167.2111,-40.8906,-34.8793],[168.4461,-41.3929,-33.4664],[170.8427,-42.1674,-33.0687],[172.0882,-42.3976,-34.7955],[173.7522,-42.9628,-34.0629],[174.2232,-42.9209,-35.4549],[174.8721,-43.193,-33.8013],[176.3373,-43.4652,-34.2723],[177.5408,-43.5279,-36.2817],[179.9061,-43.9989,-35.4968],[180.7015,-43.9256,-36.8887],[183.4959,-44.3547,-36.0724],[185.4949,-44.7211,-34.2723],[188.7497,-45.056,-34.9421],[189.9952,-45.1606,-33.4664],[193.6059,-45.8932,-33.0687],[195.563,-46.427,-35.3502],[198.1376,-47.1596,-34.7327],[198.3469,-47.2328,-36.9096],[200.1784,-47.8922,-37.1399],[200.7645,-48.1538,-35.3607],[201.9471,-48.6143,-34.5444],[203.9566,-49.4516,-35.3084],[204.8462,-49.8598,-37.2341],[206.6149,-50.6028,-37.4015],[208.4569,-51.2308,-36.3026],[209.807,-51.6599,-37.7574],[211.4187,-52.1832,-36.5538],[212.4339,-52.4867,-38.6679],[214.4747,-53.1251,-38.2493],[215.4062,-53.4286,-36.0933],[217.8028,-54.1298,-36.1038],[219.268,-54.5275,-37.4643],[221.2252,-54.988,-37.5167],[221.7589,-55.0822,-36.198],[224.1582,-55.4904,-36.5957],[225.2283,-55.595,-38.7202],[227.0206,-55.8671,-38.5842],[228.2032,-56.0346,-36.0724],[229.1975,-56.1602,-36.3445],[230.3383,-56.2544,-34.6386],[233.4675,-56.3486,-36.0724],[235.456,-56.2858,-38.469],[238.4702,-56.5579,-38.5318],[239.0144,-56.7253,-40.468],[240.1761,-57.1544,-40.1854],[240.6994,-57.1544,-42.1216],[242.039,-57.5207,-40.468],[242.5519,-57.6254,-40.918],[244.3154,-58.0388,-37.3178],[246.0789,-58.4522,-33.7176],[246.6021,-58.6929,-34.1885],[248.936,-59.2267,-30.8081],[250.485,-59.4988,-31.4883],[251.8874,-59.5616,-30.1487],[253.8863,-59.7604,-30.1592],[255.1108,-59.6872,-27.7207],[254.305,-59.5197,-26.5903],[258.418,-60.0221,-23.6913],[264.6766,-60.6186,-24.2774],[265.9325,-60.6186,-23.0843],[268.0466,-60.357,-23.3669],[266.3721,-59.3209,-21.6505],[268.4443,-58.0231,-20.4678],[268.6327,-58.1278,-20.8655],[271.0817,-57.6045,-20.0597],[272.3062,-57.6987,-20.6248],[273.5725,-57.9289,-19.8294],[274.7447,-58.0231,-20.8551],[275.5192,-58.1906,-20.0492],[276.6495,-58.1278,-21.6505],[278.2717,-58.4313,-21.4307],[279.1404,-59.1639,-20.6981],[280.8672,-59.7604,-21.5458],[281.7359,-60.4616,-21.3365],[281.7359,-60.7965,-20.876],[284.2712,-60.6919,-20.269],[284.5433,-60.7233,-19.6829],[281.9347,-61.121,-19.8818],[282.2173,-61.257,-18.3642],[281.4847,-61.4873,-17.1502],[279.9253,-61.6233,-17.7153],[279.7997,-61.8955,-14.3872],[277.403,-62.2618,-12.7964],[274.6715,-62.5234,-13.9267],[273.2795,-62.8583,-10.0125],[272.1387,-63.0258,-10.1381],[269.8676,-63.2979,-9.0706],[270.0665,-63.2979,-6.475],[267.6698,-63.5281,-5.5436],[265.1999,-63.727,-7.3437],[264.3312,-63.7898,-6.5483],[262.4579,-63.7898,-8.2124],[259.9251,-63.5595,-8.8717],[255.2678,-63.1618,-5.5331],[253.1328,-62.8897,-7.867],[250.0663,-62.492,-5.6064],[246.5289,-62.021,-5.6064],[245.3358,-61.9164,-8.4008],[241.3378,-61.5187,-7.1972],[239.6738,-61.4873,-10.0648],[237.4027,-61.3198,-8.9345],[236.534,-61.4559,-10.3997],[234.87,-61.3617,-9.1962],[233.8652,-61.4978,-9.3322],[233.4675,-61.5605,-10.3997],[232.2744,-61.6233,-9.0706],[231.6151,-61.6861,-10.6718],[228.2765,-61.7489,-8.4112],[227.7427,-61.7803,-11.8126],[224.8725,-61.7803,-13.215],[221.25,-61.7489,-11.6766],[217.6275,-61.7175,-10.1381],[217.3554,-61.7489,-5.3343],[214.2863,-61.7175,-4.2668],[209.7546,-61.6547,-5.0622],[206.8347,-61.6547,-7.1763],[205.4113,-61.4245,-5.9518],[203.8519,-61.4559,-5.7424],[203.7786,-61.6861,-4.7168],[203.1821,-61.7175,-4.5179],[203.5589,-61.7489,-3.3353],[202.0413,-61.8222,-2.7597],[200.4191,-61.9269,-3.3248],[198.6085,-61.8536,-2.6132],[198.6609,-61.8222,-0.6456],[197.4573,-61.4873,-0.2479],[196.3374,-61.121,-1.9433],[194.9141,-60.5558,1.5261],[193.4907,-59.9907,4.9955],[192.1511,-59.5197,3.5303],[190.5394,-59.0174,3.5407],[189.0742,-58.6511,5.4037],[187.0647,-57.9917,1.2592],[186.531,-57.8243,1.3952],[185.8088,-57.7615,6.1886],[184.7623,-57.3952,6.3665],[183.9564,-56.9556,4.3675],[181.3504,-55.8148,4.378],[179.8957,-55.2497,7.1096],[177.0803,-53.8891,4.8699],[176.6722,-53.7635,6.0525],[175.8035,-53.4286,6.513],[174.0767,-52.4867,2.086],[172.2137,-51.6494,3.0907],[170.6439,-50.8226,2.8814],[168.7286,-49.8598,3.6559],[167.86,-49.3574,3.1116],[167.3367,-49.2527,5.8537],[166.5413,-48.8864,6.3979],[165.7982,-48.2585,3.7919],[163.7364,-46.72,2.1174],[159.0059,-43.6954,2.6721],[158.0116,-43.0988,1.2697],[156.0336,-42.2302,3.9803],[155.1335,-41.8011,3.928],[154.3381,-41.3301,2.7349],[153.8672,-40.9324,0.3277],[151.8682,-40.0324,2.1279],[149.6704,-39.5614,3.1954],[149.0738,-39.53,5.8014],[148.0691,-39.394,6.1886],[149.4715,-39.5614,7.12],[148.5401,-38.9962,8.5853],[149.6076,-38.7974,9.8621],[149.6076,-38.3055,11.4634],[150.9263,-38.3997,11.6203],[150.6542,-38.2636,13.1484],[151.9205,-38.2636,15.2834],[149.4297,-38.3578,18.7476],[151.7321,-38.2322,19.5351],[150.0681,-38.3578,21.4007],[147.6086,-38.5567,22.0705],[147.4726,-38.6299,24.3337],[149.482,-38.6299,26.7304],[148.2784,-38.7346,27.9339],[148.2784,-38.7346,31.5342],[150.2774,-38.6613,35.5321],[148.268,-38.6927,39.1324]],"expectedDistance":694.84,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-48706","objectiveId":"creature-48706","objectiveName":"Taragaman the Hungerer","checkpoints":[[148.268,-38.6927,39.1324],[150.2774,-38.6613,35.5321],[148.2784,-38.7346,31.5342],[148.2784,-38.7346,27.9339],[149.482,-38.6299,26.7304],[147.4726,-38.6299,24.3337],[147.6086,-38.5567,22.0705],[150.0681,-38.3578,21.4007],[151.7321,-38.2322,19.5351],[149.4297,-38.3578,18.7476],[151.9205,-38.2636,15.2834],[150.6542,-38.2636,13.1484],[150.9263,-38.3997,11.6203],[149.6076,-38.3055,11.4634],[149.6076,-38.7974,9.8621],[148.5401,-38.9962,8.5853],[149.4715,-39.5614,7.12],[148.0691,-39.394,6.1886],[149.0738,-39.53,5.8014],[149.6704,-39.5614,3.1954],[151.8682,-40.0324,2.1279],[152.3392,-40.4301,4.535],[154.3381,-41.3301,2.7349],[155.1335,-41.8011,3.928],[156.0336,-42.2302,3.9803],[158.0116,-43.0988,1.2697],[159.0059,-43.6954,2.6721],[163.7364,-46.72,2.1174],[165.7982,-48.2585,3.7919],[166.5413,-48.8864,6.3979],[167.3367,-49.2527,5.8537],[168.2053,-49.7551,6.3979],[169.1682,-50.0586,3.1849],[172.2137,-51.6494,3.0907],[174.0767,-52.4867,2.086],[175.8035,-53.4286,6.513],[176.6722,-53.7635,6.0525],[177.0803,-53.8891,4.8699],[179.8957,-55.2497,7.1096],[181.3504,-55.8148,4.378],[183.9564,-56.9556,4.3675],[184.7623,-57.3952,6.3665],[185.8088,-57.7615,6.1886],[186.531,-57.8243,1.3952],[187.0647,-57.9917,1.2592],[189.0742,-58.6511,5.4037],[190.5394,-59.0174,3.5407],[192.1511,-59.5197,3.5303],[193.4907,-59.9907,4.9955],[194.9141,-60.5558,1.5261],[196.3374,-61.121,-1.9433],[197.4573,-61.4873,-0.2479],[198.6609,-61.8222,-0.6456],[198.6085,-61.8536,-2.6132],[200.4191,-61.9269,-3.3248],[202.0413,-61.8222,-2.7597],[203.5589,-61.7489,-3.3353],[203.1821,-61.7175,-4.5179],[204.574,-61.6861,-4.6435],[204.6473,-61.4559,-5.6692],[206.8347,-61.6547,-7.1763],[209.7546,-61.6547,-5.0622],[214.2863,-61.7175,-4.2668],[217.3554,-61.7489,-5.3343],[217.6275,-61.7175,-10.1381],[221.25,-61.7489,-11.6766],[224.8725,-61.7803,-13.215],[227.7427,-61.7803,-11.8126],[228.2765,-61.7489,-8.4112],[231.6151,-61.6861,-10.6718],[232.2744,-61.6233,-9.0706],[233.4675,-61.5605,-10.3997],[233.8652,-61.4978,-9.3322],[234.87,-61.3617,-9.1962],[236.534,-61.4559,-10.3997],[237.4027,-61.3198,-8.9345],[239.6738,-61.4873,-10.0648],[241.3378,-61.5187,-7.1972],[245.3358,-61.9164,-8.4008],[246.5289,-62.021,-5.6064],[250.0663,-62.492,-5.6064],[253.1328,-62.8897,-7.867],[255.2678,-63.1618,-5.5331],[259.9251,-63.5595,-8.8717],[262.4579,-63.7898,-8.2124],[264.3312,-63.7898,-6.5483],[265.1999,-63.727,-7.3437],[267.6698,-63.5281,-5.5436],[270.0665,-63.2979,-6.475],[269.8676,-63.2979,-9.0706],[272.1387,-63.0258,-10.1381],[276.0111,-62.5967,-8.8822],[277.403,-62.2618,-12.7964],[279.7997,-61.8955,-14.3872],[279.9253,-61.6233,-17.7153],[281.4847,-61.4873,-17.1502],[282.2173,-61.257,-18.3642],[281.9347,-61.121,-19.8818],[284.5433,-60.7233,-19.6829],[284.2712,-60.6919,-20.269],[286.5449,-60.1895,-20.9283],[286.4089,-60.0535,-22.5924],[284.8678,-60.357,-23.5343],[286.8694,-59.9488,-24.6751],[285.2027,-60.1895,-25.0833],[287.1415,-59.9279,-26.6113],[286.2702,-60.1372,-28.066],[287.4764,-60.1058,-29.2591],[286.6679,-60.3674,-30.8709],[287.2043,-60.4302,-32.3256],[286.333,-60.4302,-33.7908],[288.8055,-60.4302,-34.6072],[287.8715,-60.493,-35.6642],[289.5381,-60.5872,-36.6061],[291.4665,-60.4198,-36.8154],[291.6758,-60.2942,-38.1446],[292.3665,-60.0325,-38.5318],[292.7328,-60.3256,-41.0332],[293.6224,-60.5558,-41.7134],[296.7098,-60.7128,-41.3785],[295.6214,-60.6814,-40.9599],[297.5052,-60.7128,-39.7877],[296.6889,-60.6814,-38.626],[297.882,-60.7128,-38.3539],[298.332,-60.7128,-37.0666],[297.3378,-60.6186,-34.4711],[298.8972,-60.5872,-32.1582],[298.4995,-60.493,-30.1592],[300.1322,-60.4616,-29.5312],[298.9809,-60.2628,-28.3172],[299.8705,-59.9593,-26.9566],[298.8344,-59.5511,-25.2507],[299.4938,-59.122,-23.4506],[300.6973,-58.965,-22.9796],[299.9333,-57.8975,-20.4678],[301.6497,-57.5312,-19.6201],[301.0008,-56.8719,-18.2282],[302.4765,-56.5998,-17.2967],[301.6288,-55.7311,-15.8733],[303.1463,-55.0613,-14.0628],[301.7439,-53.8263,-12.4615],[302.3091,-53.3553,-11.08],[299.8077,-51.0215,-8.2647],[300.8752,-50.5924,-6.4227],[299.6612,-49.6923,-5.4808],[298.0181,-48.855,-5.2819],[297.6832,-48.5934,-4.5493],[296.7203,-48.0282,-2.3934],[297.725,-48.091,-1.3363],[298.1437,-47.8294,0.9138],[297.1913,-47.5154,4.5141],[295.9772,-47.2538,2.9965],[296.9296,-47.484,4.6396],[293.9992,-46.9293,2.9965],[293.141,-46.5944,1.9185],[290.5873,-46.3851,4.7652],[287.0682,-45.956,5.1315],[285.9772,-45.4327,3.5198],[283.5046,-45.663,2.4418],[282.1336,-46.6886,4.0745],[278.5438,-47.4631,1.3848],[274.19,-48.6876,1.5941],[273.8656,-49.3155,3.8861],[271.9294,-49.1481,3.3419],[270.8096,-49.483,4.7966],[268.4024,-49.4202,4.7862],[265.9534,-49.1167,3.4151],[263.4835,-49.3888,4.3466],[261.5578,-49.1167,3.1535],[259.6739,-49.1167,3.3838],[258.1459,-49.4202,4.7862],[256.1574,-49.4516,4.9955],[253.1537,-48.855,2.3267],[250.2128,-48.7609,2.4523],[248.4755,-48.0596,1.8557],[246.3928,-47.8922,3.5093],[244.7811,-47.1596,3.1116],[243.3891,-46.1549,1.8871],[241.9239,-45.8514,2.8814],[241.2332,-45.2862,2.2325],[241.0343,-44.7211,0.9034],[239.9773,-44.4594,0.872],[238.4807,-44.3966,2.0546],[237.7481,-43.9989,1.7825],[236.9422,-43.9989,3.8861],[236.1887,-44.0303,4.1059],[235.5398,-43.8315,2.4628],[234.0641,-44.0303,3.143],[233.5303,-43.8943,1.6674],[231.2593,-43.9884,1.929],[230.8616,-43.7896,0.7882],[229.7312,-43.5593,0.8615],[228.7789,-43.6849,2.7453],[227.9835,-43.5907,2.7453],[227.1253,-43.7268,3.8756],[226.288,-43.5698,2.7244],[224.4225,-43.3605,3.8756],[222.222,-42.7953,1.8767],[220.6809,-42.5651,2.85],[217.7086,-41.529,0.6312],[217.0598,-41.5604,2.1906],[215.5945,-41.1627,2.0127],[214.3282,-40.5975,-0.1432],[212.2874,-40.158,1.5208],[211.4815,-39.687,-0.0804],[210.6861,-39.2579,-0.4153],[209.0848,-39.1532,2.3162],[207.8708,-38.6613,1.9185],[206.9184,-38.4311,3.1954],[205.7253,-37.5938,1.7929],[205.2753,-37.5206,2.6407],[203.4961,-36.5891,1.3011],[202.6693,-36.4217,2.557],[200.44,-35.3541,1.3115],[198.9225,-35.0925,3.8652],[197.7294,-34.6843,3.457],[196.0653,-34.318,4.9536],[195.3327,-34.1924,6.4398],[193.1977,-33.5645,6.0839],[192.7267,-33.4703,6.9317],[191.3557,-33.2296,7.0991],[190.3615,-32.8633,5.3513],[189.3672,-32.7272,5.5816],[189.3672,-32.9889,7.5805],[188.2788,-32.8214,7.1305],[186.7508,-32.7168,8.3027],[186.2693,-32.7168,10.4586],[184.3332,-32.5179,11.8297],[183.611,-32.4551,10.5528],[182.4284,-32.3295,11.3378],[181.6434,-32.2353,10.3644],[178.6293,-31.7958,10.6052],[175.0709,-30.8957,7.905],[174.6837,-31.0318,9.7156],[173.8045,-30.8329,9.6109],[173.5429,-30.9585,11.1389],[172.151,-30.5922,11.3064],[171.2195,-30.1003,10.3121],[170.0264,-29.7968,10.7098],[169.3461,-29.4933,10.1237],[167.4727,-29.1584,11.1285],[164.4586,-27.9653,9.1295],[163.5899,-27.8711,10.2389],[162.8573,-27.4315,9.0353],[162.2084,-27.4315,10.1028],[161.5177,-27.2327,9.9563],[161.9049,-27.0966,8.7527],[160.2513,-27.0024,10.8773],[159.0791,-26.5943,10.7203],[157.9384,-25.9663,12.332],[155.6464,-24.8988,13.1798],[153.4904,-24.2918,11.0657],[150.1623,-22.7219,13.0751],[149.5134,-22.7638,11.5262],[147.033,-21.9998,13.2739],[145.4841,-21.8323,11.1285],[143.5374,-21.466,11.3901],[142.7315,-21.2358,12.7821],[141.3919,-20.9323,13.2425],[141.0779,-21.0264,12.0076],[139.8116,-20.8171,12.1541],[138.5975,-20.5555,13.7868],[135.9392,-20.5973,12.5309],[133.7205,-20.4718,13.9228],[131.3866,-20.5346,12.4053],[130.7796,-20.3252,14.1949],[130.1412,-20.388,12.646],[129.0213,-20.1892,13.2635],[128.2155,-19.8543,15.0845],[126.8235,-19.5298,15.6183],[126.4572,-19.6659,14.3624],[123.8407,-19.2996,15.0636],[122.7418,-18.8286,17.251],[119.6544,-18.6926,17.7428],[119.9893,-18.5251,20.8119],[117.6241,-18.5984,22.0495],[116.881,-18.4309,24.8779],[117.9171,-18.1588,26.9083],[117.3205,-17.96,28.8445],[115.1855,-18.1274,28.0491],[116.274,-17.8972,29.7969],[114.9343,-17.8658,30.4039],[115.5414,-17.5623,34.5379],[116.8705,-17.489,38.1486],[114.9657,-17.489,41.9477],[116.2949,-17.5623,43.5385],[114.432,-17.96,47.5259],[116.7449,-18.2949,49.7342],[116.1798,-18.5356,52.5077],[117.4985,-18.8077,53.1252],[119.466,-18.9751,52.2146],[120.8161,-19.4984,53.4705],[122.836,-19.9275,53.6484],[127.4724,-21.1834,58.1592],[132.1087,-22.4393,62.67],[135.9183,-22.0835,66.3958],[136.3265,-22.0207,67.9447],[136.8707,-21.6858,67.704],[137.7394,-21.5602,68.3634],[138.0952,-21.8323,69.3681],[139.236,-21.6021,69.8705],[139.4348,-21.7695,70.4565],[140.9419,-21.466,70.5821],[144.4793,-21.7486,71.7752],[145.2015,-21.7172,71.2519],[146.6876,-21.6544,71.7857],[147.0853,-21.6963,70.7287],[148.268,-21.6963,71.1473],[151.3763,-21.1939,75.4906],[153.0194,-21.0997,75.9825],[154.3381,-20.859,77.5628],[155.1126,-21.0264,76.1395],[155.4475,-20.7857,77.8454],[157.122,-20.7229,78.0443],[160.2513,-20.6601,78.0443],[161.7793,-20.8276,76.4221],[164.9295,-20.7334,76.5058],[165.6621,-20.5032,78.128],[167.9123,-20.8381,76.757],[169.6496,-20.8381,78.421],[171.3869,-21.2358,77.1442],[171.6695,-21.0997,78.7873],[174.4011,-21.4346,78.0966],[176.8606,-21.4032,80.3677],[179.5293,-21.5393,81.1631],[180.2934,-21.7381,79.6979],[181.4132,-21.8009,80.8072],[181.5911,-21.8009,83.0051],[182.847,-22.1672,83.6749],[182.7947,-22.1358,85.1296],[183.454,-22.3347,85.7994],[184.7309,-22.6696,85.2657],[185.139,-22.7952,86.0611],[187.4415,-23.2243,85.6948],[187.431,-23.3185,87.4949],[190.2359,-23.8208,88.3008],[190.2673,-23.8522,90.7288],[194.2757,-24.522,93.1255],[194.2652,-24.5953,96.7257],[197.4782,-24.9721,100.0853],[195.877,-24.6999,102.0842],[196.0863,-24.5325,105.2763],[198.8806,-24.6685,106.888],[196.934,-24.2918,109.5359],[200.1261,-24.2499,110.4046],[197.7922,-23.8836,111.8593],[197.7922,-23.3603,114.4548],[199.9272,-22.9626,116.9248],[197.9283,-22.3033,120.7239],[199.8016,-22.2614,122.1891],[199.2679,-22.1882,123.9264],[196.6619,-22.094,124.8578],[196.8712,-22.1568,125.9254],[194.6001,-22.094,126.7208],[196.5991,-22.23,127.7255],[195.1862,-22.3347,129.4523],[197.1329,-23.0359,132.0479],[194.6001,-23.622,134.9783],[194.9978,-24.1976,137.1866],[191.1987,-24.6685,139.7298],[190.0056,-25.0035,141.2578],[192.2767,-25.1395,142.5974],[192.6744,-25.1709,144.722],[189.137,-25.1709,144.9836],[186.8659,-25.1709,148.7853],[188.2055,-25.1709,155.057],[193.6059,-25.1709,157.6525],[198.0643,-25.1709,153.5813],[199.9272,-25.1709,157.3202],[202.0622,-24.9721,156.3259],[202.596,-24.8046,154.1909],[205.4636,-23.7999,155.9282],[207.7243,-22.9626,153.856],[210.9896,-21.7904,153.7304],[213.0618,-21.1939,154.463],[213.0618,-21.2672,156.8597],[214.6631,-20.7648,157.3307],[216.4004,-20.3566,156.4411],[217.2691,-20.2834,157.7807],[218.525,-20.0845,156.9225],[220.3277,-19.7915,157.8749],[223.525,-19.2368,155.9282],[224.0378,-19.1007,156.5248],[224.9065,-18.9961,155.2584],[225.8694,-18.7972,155.5201],[227.4706,-18.6716,153.9397],[227.8683,-18.567,154.7456],[228.6637,-18.567,153.9397],[229.4487,-18.5356,154.0235],[229.7103,-18.703,151.4149],[232.264,-18.7658,154.6697],[232.871,-18.7658,149.6644],[236.7381,-18.7501,151.5653],[240.6052,-18.7344,153.4662],[245.0113,-18.7344,151.059]],"expectedDistance":938.16,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-48740","objectiveId":"creature-48740","objectiveName":"Jergosh the Invoker","checkpoints":[[245.0113,-18.7344,151.059],[248.5069,-18.7344,153.2581],[252.0025,-18.7344,155.4573],[252.4002,-18.703,151.0486],[254.9329,-18.7344,149.047],[255.8121,-18.7344,152.0742],[255.7388,-18.6716,155.8759],[256.7226,-18.5984,155.9282],[259.2553,-18.7344,151.8361],[260.8461,-18.7658,153.2385],[262.9288,-18.8286,151.2082],[265.315,-19.0275,153.1234],[266.9477,-19.4984,149.4996],[268.4024,-19.8333,150.7974],[269.8676,-20.2624,148.126],[270.7363,-20.5659,147.9271],[272.348,-20.9637,149.7299],[273.8761,-21.466,147.3306],[275.4669,-21.9265,148.3274],[275.8541,-22.1986,146.7236],[278.2612,-23.2243,147.3201],[280.2707,-24.2604,145.9255],[282.6778,-25.2232,148.262],[283.6093,-25.3279,146.2003],[284.907,-25.2651,146.5247],[286.3749,-25.2651,148.7879],[288.2718,-25.2965,153.7304],[293.4026,-25.129,154.5363],[295.4121,-25.0662,158.1365],[293.2143,-25.0662,159.7901],[294.0515,-24.836,160.1146],[292.9108,-24.3964,161.4542],[293.905,-23.8941,162.4484],[294.2713,-23.1615,163.8509],[293.5387,-22.5649,165.2533],[294.6795,-21.6021,167.1162],[293.2771,-21.1625,168.5186],[292.4817,-20.6915,171.2607],[294.8679,-20.3252,173.0084],[295.7889,-20.0531,175.3423],[295.1504,-20.7543,177.7913],[292.4817,-21.2881,179.7903],[294.8155,-21.9893,182.187],[294.0097,-22.387,183.7882],[291.4141,-22.7952,185.5256],[294.1457,-23.465,187.2629],[294.7004,-24.2081,189.356],[297.6727,-24.6058,189.9317],[298.3634,-24.836,192.8516],[300.4775,-24.7313,194.1599],[300.4775,-24.6999,197.4147],[303.2196,-24.7313,201.9255],[303.8057,-24.9302,208.0611],[305.5116,-25.1604,212.8989],[307.542,-24.8255,213.0664],[309.3735,-24.4592,212.2055],[310.1689,-24.1557,213.0768],[310.1689,-24.2185,214.44],[310.598,-24.0197,214.8168],[310.9748,-23.7894,213.8539],[311.8539,-23.2243,215.2459],[313.3714,-22.094,215.2563],[314.1354,-22.0207,217.7053],[314.9308,-21.8218,216.9099],[316.1972,-21.8218,218.5949],[317.4636,-21.3927,216.4076],[320.2893,-21.0892,217.3076],[322.2255,-20.4299,214.89],[324.6954,-19.9275,214.3667],[325.8676,-20.0531,216.1878],[326.3804,-19.6554,214.092],[327.1444,-19.8543,216.1328],[328.8399,-19.9903,214.9083],[332.3041,-20.3252,216.9099],[334.6694,-20.4927,214.7304],[337.851,-20.6915,214.1757],[340.2581,-20.8276,215.6017],[343.8583,-21.1311,214.2307],[346.4015,-21.0997,216.3762],[349.6276,-21.2986,215.2459],[352.163,-21.0997,217.946],[353.1075,-21.33,215.4316],[354.5413,-21.0997,218.4039],[357.7439,-21.5183,213.0009],[361.2499,-21.3509,216.3736],[366.4933,-21.5497,217.5876],[371.1192,-21.7904,217.5353],[372.2966,-21.7904,213.5255],[373.474,-21.7904,209.5158]],"expectedDistance":257.85,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-48750","objectiveId":"creature-48750","objectiveName":"Bazzalan","checkpoints":[[373.474,-21.7904,209.5158],[372.2966,-21.7904,213.5255],[371.1192,-21.7904,217.5353],[366.4933,-21.5497,217.5876],[361.2499,-21.3509,216.3736],[357.7439,-21.5183,213.0009],[354.5413,-21.0997,218.4039],[353.1075,-21.33,215.4316],[352.163,-21.0997,217.946],[352.0164,-20.7648,221.0963],[347.9923,-20.5346,222.7812],[347.1969,-19.8333,225.1884],[345.7317,-19.4984,225.9105],[346.1818,-18.5879,226.7687],[345.0514,-18.6507,226.842],[344.4758,-18.0228,227.5955],[342.8746,-17.8553,228.0037],[341.357,-18.0856,227.9828],[339.5569,-16.9552,229.5212],[338.1545,-17.2588,229.3747],[336.8462,-15.6993,231.6353],[334.6694,-15.6366,231.9284],[333.4763,-15.4691,233.1319],[331.7494,-15.4377,233.1947],[331.0168,-15.4063,234.7332],[329.8132,-15.3644,235.1309],[329.5411,-15.1656,236.6694],[329.9388,-15.1656,237.2031],[328.4736,-13.9306,238.1346],[328.9446,-14.0248,238.3962],[328.7143,-13.2294,239.5789],[327.5107,-11.963,240.5731],[327.9712,-11.827,241.1697],[327.0084,-11.1886,241.2534],[327.3328,-10.8641,243.9955],[326.7467,-11.063,244.9164],[326.8828,-10.9897,245.984],[325.5955,-11.2932,247.4701],[325.7106,-11.199,248.9249],[326.977,-11.063,248.3178],[325.9095,-10.9583,252.1169],[326.4642,-10.7176,254.7962],[329.1329,-10.4874,251.9913],[330.2632,-10.0583,256.3974],[332.796,-9.7966,253.7287],[333.8007,-9.4303,257.6638],[335.4124,-9.2001,257.0673],[336.2183,-8.928,259.6],[338.5417,-8.5303,261.0547],[343.9316,-7.6302,256.387],[344.9363,-7.4627,259.9872],[348.2043,-6.929,257.7266],[350.8129,-6.5627,261.3896],[353.5471,-6.1022,257.1928],[354.3529,-5.9661,256.7847],[355.6821,-5.6626,253.3833],[355.8286,-5.558,251.5518],[358.0997,-5.3591,251.5099],[358.4032,-5.2963,249.5947],[361.9511,-4.9928,248.0667],[363.1547,-4.93,248.0771],[363.8768,-4.8568,246.2561],[365.8758,-4.4695,245.9212],[367.0689,-4.0928,244.7385],[367.8852,-3.9253,245.1362],[368.6806,-3.7892,244.7385],[368.6702,-3.6637,243.9431],[370.261,-3.4648,243.5245],[371.182,-3.2974,240.8034],[372.3855,-3.2974,240.4057],[374.3008,-3.6637,238.3858],[375.3892,-3.6951,238.3125],[377.5243,-3.7265,236.5647],[378.8011,-3.8311,236.5857],[381.5222,-3.9358,234.8902],[383.0921,-4.1974,234.5134],[382.349,-3.8625,234.2099],[383.4165,-4.1974,234.1157],[383.3746,-3.8625,233.425],[384.484,-4.0928,232.954],[386.797,-4.4277,233.1424],[388.4087,-4.1242,230.8085],[393.9765,-3.3601,229.3433],[397.4093,-2.5229,225.8687],[401.941,-1.6856,223.1266],[402.412,-0.6914,215.7875],[403.2074,-0.4925,214.9921],[401.8782,-0.2623,212.9198],[401.1561,0.4075,210.183],[403.5213,0.9413,209.6493],[403.7097,1.1715,208.7911],[405.2901,1.339,208.7806],[404.5156,1.5065,207.9224],[404.7144,1.8728,206.7816],[403.1864,2.0088,206.3211],[402.5899,2.7728,204.9083],[402.862,3.0973,203.3174],[402.2026,3.4008,202.0092],[401.2084,3.4426,201.6115],[400.9467,3.6729,198.409],[402.8411,4.4997,194.0552],[403.2492,5.0334,191.2608],[405.3215,5.5044,189.0735],[403.9504,6.0382,186.2686],[406.1692,6.1637,185.8081],[406.1692,6.2998,185.0023],[403.9504,6.3312,184.6674],[404.683,6.4359,183.5371],[404.6307,6.6452,181.6009],[403.0294,6.8754,180.8055],[401.8259,7.6394,178.796],[402.8829,7.1999,176.1796],[401.648,7.7336,173.2387],[400.256,8.1732,172.3805],[399.5967,8.0057,170.5804],[398.0791,8.4348,169.6594],[397.9221,8.1627,168.1942],[397.1163,8.4034,167.7965],[396.5825,7.8906,166.1952],[392.6788,8.1732,165.5463],[389.6227,7.9639,162.3856],[391.2868,7.9272,157.9468],[392.9509,7.8906,153.508],[388.8901,7.8906,150.6195]],"expectedDistance":309.99,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"d88e8e1fbe3c2d2405cdc09fb300044d562efea28b73bf17f148e80ca2dc94d5","generationStatus":"Candidate","generationIssues":[]},{"schemaVersion":1,"id":"primary","dungeonId":"dire-maul","mapId":429,"legs":[{"id":"leg-01-encounter-156","objectiveId":"encounter-156","objectiveName":"Lord Hel'nurath","checkpoints":[[43.9376,-2.6399,153.9802],[44.5375,-2.6399,156.3422],[45.8498,-2.6399,152.8179],[46.6371,-2.6399,156.4547],[50.1615,-2.6399,152.4429],[55.7105,-2.6399,154.88],[58.4474,-2.6399,160.6914],[52.9735,-2.6399,163.6534],[52.9735,-2.6399,167.5901],[58.4474,-2.6399,170.9645],[58.4474,-2.6399,174.8638],[52.9735,-2.6399,175.3887],[55.223,-2.6024,177.7226],[50.4239,-2.5649,179.5691],[51.0988,-2.9773,182.203],[53.0859,-3.4272,182.9904],[52.2611,-3.671,188.2581],[51.4362,-3.9147,193.5259],[45.353,-3.9896,196.3004],[44.2095,-4.0084,201.1557],[43.0659,-4.0271,206.0111],[38.6699,-4.0271,206.0111],[36.4109,-4.0646,199.1499],[33.6364,-4.0271,206.0861],[31.2369,-4.0646,199.2248],[28.9123,-4.0459,202.6555],[26.5878,-4.0271,206.0861],[24.2632,-4.0646,199.2248],[21.2638,-4.0646,199.1499],[18.3768,-4.0271,206.0111],[12.6404,-4.0271,206.0111],[11.2344,-4.0271,201.6994],[9.8284,-4.0271,197.3877],[3.9045,-3.9896,195.588],[3.9232,-3.9522,190.6952],[3.942,-3.9147,185.8024],[3.2671,-3.8772,184.94],[-0.5572,-3.9147,184.79],[-2.5068,-3.4272,183.0279],[-5.3188,-2.9773,182.203],[-9.1243,-3.2023,182.5967],[-12.9299,-3.4272,182.9904],[-19.3037,-2.9773,182.1655],[-26.0899,-2.9773,182.1655],[-28.1145,-3.1648,182.578],[-30.8515,-3.8772,183.9277],[-34.8633,-3.7272,183.8152],[-35.4257,-3.8772,185.0525],[-38.7251,-3.8772,184.79],[-43.5242,-3.9522,185.5399],[-45.6988,-4.0271,188.3519],[-44.5927,-4.0271,192.8698],[-43.4867,-4.0271,197.3877],[-46.0924,-4.0271,201.6994],[-48.6982,-4.0271,206.0111],[-51.3602,-4.0646,199.1499],[-52.8224,-4.0459,202.618],[-54.2847,-4.0271,206.0861],[-56.7967,-4.0646,199.2248],[-61.6708,-4.0646,199.2248],[-64.1453,-4.0271,206.0861],[-68.9444,-4.0271,206.0861],[-69.3568,-4.0646,199.1499],[-71.7002,-4.0459,202.5805],[-74.0435,-4.0271,206.0111],[-74.9433,-4.0084,201.2682],[-75.8431,-3.9896,196.5254],[-80.0424,-3.9522,194.9506],[-82.7231,-3.9896,198.5312],[-85.4038,-4.0271,202.1118],[-86.8661,-4.0084,197.2565],[-88.3283,-3.9896,192.4011],[-95.7894,-3.9896,192.3261],[-101.3759,-4.0646,195.0631],[-99.0888,-4.1021,201.3245],[-102.8006,-4.1021,196.7878],[-107.4872,-4.1021,201.6244],[-110.4867,-4.1021,199.3561],[-113.4861,-4.1021,197.0877],[-118.6227,-4.1021,197.0877],[-120.8347,-4.1021,201.6994],[-121.4346,-4.1021,201.5869],[-122.297,-4.1021,196.9003],[-127.0211,-4.1021,200.0497],[-128.3146,-4.0834,196.0754],[-129.6081,-4.0646,192.1012],[-133.8073,-4.0271,188.8393],[-136.1319,-4.0646,195.513],[-140.3311,-4.0646,200.3871],[-142.3932,-4.0271,193.7134],[-146.5924,-4.0459,194.2945],[-150.7917,-4.0646,194.8757],[-151.8602,-4.0834,200.7058],[-152.9288,-4.1021,206.536],[-157.5591,-4.0834,207.0609],[-162.1895,-4.0646,207.5858],[-160.2961,-4.0646,213.2847],[-158.4027,-4.0646,218.9837],[-158.9651,-4.0646,221.9831],[-164.4391,-4.0646,226.8947],[-160.2211,-4.0834,228.2632],[-156.0032,-4.1021,229.6317],[-153.9036,-4.1021,236.4554],[-159.7525,-4.1021,240.0922],[-153.1537,-4.1021,242.0794],[-150.3042,-4.1021,243.804],[-147.6422,-4.1021,247.7408],[-152.3289,-4.1021,248.9406],[-157.0155,-4.1021,250.1403],[-153.0037,-4.0896,255.4519],[-148.992,-4.0771,260.7634],[-144.9802,-4.0646,266.0749],[-140.9435,-4.0521,269.3243],[-136.9067,-4.0396,272.5737],[-132.87,-4.0271,275.8231]],"expectedDistance":569.37,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-248429","objectiveId":"creature-248429","objectiveName":"Zevrim Thornhoof","checkpoints":[[-132.87,-4.0271,275.8231],[-129.0149,-5.239,281.8578],[-125.1598,-6.4508,287.8925],[-121.3047,-7.6626,293.9272],[-117.4497,-8.8744,299.9619],[-113.5946,-10.0863,305.9966],[-109.7395,-11.2981,312.0313],[-105.8844,-12.5099,318.066],[-102.0293,-13.7218,324.1007],[-98.1742,-14.9336,330.1354],[-94.3192,-16.1454,336.1701],[-90.4641,-17.3572,342.2048],[-86.609,-18.5691,348.2395],[-82.7539,-19.7809,354.2742],[-78.8988,-20.9927,360.3089],[-75.0437,-22.2045,366.3436],[-71.1886,-23.4164,372.3783],[-67.3336,-24.6282,378.413],[-63.4785,-25.84,384.4477],[-59.6234,-27.0519,390.4824],[-55.7683,-28.2637,396.5171],[-51.9132,-29.4755,402.5518],[-48.0581,-30.6873,408.5865],[-44.2031,-31.8992,414.6212],[-40.348,-33.111,420.6559],[-36.4929,-34.3228,426.6906],[-32.6378,-35.5347,432.7253],[-28.7827,-36.7465,438.76],[-24.9276,-37.9583,444.7947]],"expectedDistance":203.36,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-248418","objectiveId":"creature-248418","objectiveName":"Hydrospawn","checkpoints":[[-24.9276,-37.9583,444.7947],[-19.7598,-41.6139,444.1073],[-14.5921,-45.2694,443.4199],[-9.4243,-48.925,442.7325],[-4.2565,-52.5806,442.0452],[0.9113,-56.2361,441.3578],[6.0791,-59.8917,440.6704]],"expectedDistance":38.2,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-248299","objectiveId":"creature-248299","objectiveName":"Lethtendris","checkpoints":[[6.0791,-59.8917,440.6704],[5.9121,-52.9487,440.3773],[5.7451,-46.0057,440.0842],[5.578,-39.0626,439.7911],[5.411,-32.1196,439.4979],[5.244,-25.1766,439.2048],[5.077,-18.2336,438.9117],[4.91,-11.2906,438.6185],[4.743,-4.3475,438.3254],[4.576,2.5955,438.0323],[4.4089,9.5385,437.7392],[4.2419,16.4815,437.446]],"expectedDistance":76.46,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-05-creature-248034","objectiveId":"creature-248034","objectiveName":"Illyanna Ravenoak","checkpoints":[[4.2419,16.4815,437.446],[3.6352,16.5743,429.9982],[3.0284,16.667,422.5503],[2.4217,16.7597,415.1024],[1.8149,16.8525,407.6545],[1.2081,16.9452,400.2067],[0.6014,17.0379,392.7588],[-0.0054,17.1307,385.3109],[-0.6121,17.2234,377.8631],[-1.2189,17.3161,370.4152],[-1.8256,17.4088,362.9673],[-2.4324,17.5016,355.5195],[-3.0392,17.5943,348.0716],[-3.6459,17.687,340.6237],[-4.2527,17.7798,333.1758],[-4.8594,17.8725,325.728],[-5.4662,17.9652,318.2801],[-6.0729,18.058,310.8322],[-6.6797,18.1507,303.3844],[-7.2865,18.2434,295.9365],[-7.8932,18.3362,288.4886],[-8.5,18.4289,281.0407],[-9.1067,18.5216,273.5929],[-9.7135,18.6143,266.145],[-10.3202,18.7071,258.6971],[-10.927,18.7998,251.2493],[-11.5338,18.8925,243.8014],[-12.1405,18.9853,236.3535],[-12.7473,19.078,228.9056],[-13.354,19.1707,221.4578],[-13.9608,19.2635,214.0099],[-14.5675,19.3562,206.562],[-15.1743,19.4489,199.1142],[-15.7811,19.5417,191.6663],[-16.3878,19.6344,184.2184],[-16.9946,19.7271,176.7705],[-17.6013,19.8198,169.3227],[-18.2081,19.9126,161.8748],[-18.8148,20.0053,154.4269],[-19.4216,20.098,146.9791],[-20.0284,20.1908,139.5312],[-20.6351,20.2835,132.0833],[-21.2419,20.3762,124.6354],[-21.8486,20.469,117.1876],[-22.4554,20.5617,109.7397],[-23.0621,20.6544,102.2918],[-23.6689,20.7472,94.844],[-24.2757,20.8399,87.3961],[-24.8824,20.9326,79.9482],[-25.4892,21.0253,72.5003],[-26.0959,21.1181,65.0525],[-26.7027,21.2108,57.6046],[-27.3094,21.3035,50.1567],[-27.9162,21.3963,42.7089],[-28.523,21.489,35.261],[-29.1297,21.5817,27.8131],[-29.7365,21.6745,20.3652],[-30.3432,21.7672,12.9174],[-30.95,21.8599,5.4695],[-31.5567,21.9527,-1.9784],[-32.1635,22.0454,-9.4262],[-32.7703,22.1381,-16.8741],[-33.377,22.2308,-24.322],[-33.9838,22.3236,-31.7698],[-34.5905,22.4163,-39.2177],[-35.1973,22.509,-46.6656],[-35.804,22.6018,-54.1135],[-36.4108,22.6945,-61.5613],[-37.0176,22.7872,-69.0092],[-37.6243,22.88,-76.4571],[-38.2311,22.9727,-83.9049],[-38.8378,23.0654,-91.3528],[-39.4446,23.1582,-98.8007],[-40.0513,23.2509,-106.2486],[-40.6581,23.3436,-113.6964],[-41.2649,23.4363,-121.1443],[-41.8716,23.5291,-128.5922],[-42.4784,23.6218,-136.04],[-43.0851,23.7145,-143.4879],[-43.6919,23.8073,-150.9358],[-44.2986,23.9,-158.3837],[-44.9054,23.9927,-165.8315],[-45.5122,24.0855,-173.2794],[-46.1189,24.1782,-180.7273],[-46.7257,24.2709,-188.1751],[-47.3324,24.3637,-195.623],[-47.9392,24.4564,-203.0709],[-48.5459,24.5491,-210.5188],[-49.1527,24.6418,-217.9666],[-49.7594,24.7346,-225.4145],[-50.3662,24.8273,-232.8624],[-50.973,24.92,-240.3102],[-51.5797,25.0128,-247.7581],[-52.1865,25.1055,-255.206],[-52.7932,25.1982,-262.6539],[-53.4,25.291,-270.1017],[-54.0067,25.3837,-277.5496],[-54.6135,25.4764,-284.9975],[-55.2203,25.5692,-292.4453],[-55.827,25.6619,-299.8932],[-56.4338,25.7546,-307.3411],[-57.0405,25.8473,-314.789],[-57.6473,25.9401,-322.2368],[-58.254,26.0328,-329.6847],[-58.8608,26.1255,-337.1326],[-59.4676,26.2183,-344.5804],[-60.0743,26.311,-352.0283],[-60.6811,26.4037,-359.4762],[-61.2878,26.4965,-366.9241],[-61.8946,26.5892,-374.3719],[-62.5013,26.6819,-381.8198],[-63.1081,26.7747,-389.2677],[-63.7149,26.8674,-396.7155],[-64.3216,26.9601,-404.1634],[-64.9284,27.0528,-411.6113],[-65.5351,27.1456,-419.0591],[-66.1419,27.2383,-426.507],[-66.7486,27.331,-433.9549],[-67.3554,27.4238,-441.4028],[-67.9622,27.5165,-448.8506],[-68.5689,27.6092,-456.2985],[-69.1757,27.702,-463.7464],[-69.7824,27.7947,-471.1942],[-70.3892,27.8874,-478.6421],[-70.9959,27.9802,-486.09],[-71.6027,28.0729,-493.5379],[-72.2095,28.1656,-500.9857],[-72.8162,28.2583,-508.4336],[-73.423,28.3511,-515.8815],[-74.0297,28.4438,-523.3293],[-74.6365,28.5365,-530.7772],[-75.2432,28.6293,-538.2251]],"expectedDistance":978.98,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-06-creature-248025","objectiveId":"creature-248025","objectiveName":"Magister Kalendris","checkpoints":[[-75.2432,28.6293,-538.2251],[-74.2009,28.6293,-545.0507],[-73.1586,28.6293,-551.8763],[-72.1163,28.6293,-558.7019],[-71.074,28.6293,-565.5275],[-70.0317,28.6293,-572.3531],[-75.3182,28.6293,-575.615],[-72.5063,28.6293,-577.4147],[-67.2947,28.6293,-576.1024],[-66.8823,28.6293,-577.9021],[-64.0328,28.6293,-576.6273],[-62.0832,28.6293,-576.6648],[-60.546,28.6293,-577.9396],[-58.5589,28.6293,-576.6273],[-55.6344,28.6293,-577.9021],[-55.222,28.6293,-576.1024],[-49.823,28.6293,-577.4147],[-44.0303,28.6293,-577.4147],[-38.2376,28.6293,-577.4147],[-31.1327,28.6293,-576.5148],[-24.0278,28.6293,-575.615],[-16.9979,28.6293,-576.5148],[-9.9679,28.6293,-577.4147],[-4.1378,28.6293,-577.4147],[1.6924,28.6293,-577.4147],[7.2414,28.6293,-576.0274],[7.6538,28.6293,-577.8271],[10.6532,28.6293,-576.4398],[12.5279,28.6293,-576.4398],[14.0276,28.6293,-577.8271],[15.9397,28.6293,-576.4398],[18.0768,28.6293,-577.8271],[20.1765,28.6293,-576.0274],[24.6381,28.6293,-577.4147],[30.1808,28.6293,-577.4147],[35.7236,28.6293,-577.4147],[41.2663,28.6293,-577.4147],[48.0338,28.6293,-576.5148],[54.8012,28.6293,-575.615],[61.7046,28.6293,-576.5148],[68.608,28.6293,-577.4147],[74.157,28.6293,-577.4147],[79.706,28.6293,-577.4147],[84.9175,28.6293,-576.1024],[85.3299,28.6293,-577.9021],[88.1794,28.6293,-576.6273],[90.1665,28.6293,-577.9396],[91.7037,28.6293,-576.6648],[93.6534,28.6293,-576.6273],[96.2404,28.6293,-577.9021],[96.6528,28.6293,-576.1024],[101.3769,28.6293,-577.4147],[105.2762,28.6293,-576.5148],[109.1755,28.6293,-575.615],[112.8498,28.6293,-576.5148],[116.5241,28.6293,-577.4147],[122.1481,28.6293,-577.4147],[127.772,28.6293,-577.4147],[134.7832,28.6293,-575.615],[138.345,28.6293,-570.9659],[134.8394,28.6293,-565.1732],[131.3338,28.6293,-559.3805],[134.8394,28.6293,-556.4748],[138.345,28.6293,-553.5691],[137.8951,28.6293,-549.2012],[137.4452,28.6293,-544.8332],[133.9958,28.6293,-541.9088],[130.5465,28.6293,-538.9843],[136.6204,28.5168,-538.4594],[130.6215,28.4043,-537.9345],[130.6215,27.542,-535.1225],[136.5829,26.6421,-532.3856],[133.2835,25.6673,-529.3111],[127.997,25.5923,-528.9737],[129.8716,24.3926,-526.6491],[127.2096,23.3803,-524.9619],[131.6525,22.1242,-522.9373],[136.0955,20.8682,-520.9127],[130.434,20.3808,-520.1628],[134.8957,18.3562,-516.9009],[129.4217,17.9063,-516.0761],[129.7966,15.2818,-511.755],[125.335,14.6444,-510.6209],[125.2975,13.1822,-508.2869],[126.3848,12.6947,-507.4996],[126.0098,11.1575,-505.1],[127.7345,10.3702,-503.7878],[127.7345,8.608,-500.9758],[124.9225,6.9958,-498.3513],[125.335,3.8089,-493.1772],[124.9225,2.3092,-490.8527],[128.8218,0.9969,-488.7531],[129.6842,-2.2275,-483.3166],[125.8599,-3.3523,-481.5169],[125.26,-3.8397,-480.7296],[128.6718,-3.4647,-481.3294],[134.1833,-3.7647,-480.842],[130.584,-4.2896,-477.1302],[124.6226,-4.2896,-476.6803],[124.4351,-4.3271,-476.0054],[122.9354,-4.3271,-475.9305],[117.0678,-4.3271,-475.9305],[111.2001,-4.3271,-475.9305],[105.6324,-4.3271,-478.1238],[100.0647,-4.3271,-480.3171],[104.6388,-4.3271,-482.323],[109.213,-4.3271,-484.3289],[104.6388,-4.3271,-486.466],[100.0647,-4.3271,-488.6031],[100.0647,-4.3271,-492.9898],[104.6388,-4.3271,-494.677],[109.213,-4.3271,-496.3641],[104.6388,-4.3271,-498.7637],[100.0647,-4.3271,-501.1633],[104.6388,-4.3271,-503.7175],[109.213,-4.3271,-506.2717],[104.6388,-4.3271,-507.8839],[100.0647,-4.3271,-509.4961],[100.0647,-4.3271,-513.9296],[104.6388,-4.3271,-516.1651],[109.213,-4.3271,-518.4007],[104.6388,-4.3271,-520.2566],[100.0647,-4.3271,-522.1125],[99.9897,-4.3271,-524.7745],[104.5638,-4.3271,-526.3867],[109.138,-4.3271,-527.9989],[104.3389,-4.3271,-528.2051],[99.5398,-4.3271,-528.4113],[104.1514,-4.3271,-531.2983],[108.7631,-4.3271,-534.1852],[102.9141,-4.3271,-532.8167],[97.0652,-4.3271,-531.4482],[92.9035,-4.3271,-531.4482],[97.4652,-4.3271,-536.7972],[102.0268,-4.3271,-542.1462],[106.5885,-4.3271,-547.4952],[100.827,-4.3271,-550.6946],[95.0656,-4.3271,-553.894],[89.3042,-4.3271,-557.0934],[82.6804,-4.3271,-556.856],[76.0567,-4.3271,-556.6185],[69.4329,-4.3271,-556.3811],[69.9203,-4.3271,-551.257],[70.4077,-4.3271,-546.133],[70.8951,-4.3271,-541.0089],[63.9589,-4.3271,-541.0089],[63.709,-4.3271,-546.1205],[63.459,-4.3271,-551.232],[63.2091,-4.3271,-556.3436],[61.8343,-4.3271,-551.232],[60.4596,-4.3271,-546.1205],[59.0848,-4.3271,-541.0089],[52.2986,-4.3271,-541.0089],[48.9211,-4.3271,-546.3579],[45.5436,-4.3271,-551.7069],[42.1661,-4.3271,-557.0559],[44.2282,-4.3271,-562.18],[46.2903,-4.3271,-567.304],[48.3524,-4.3271,-572.4281],[47.7526,-4.3271,-573.1404],[41.3038,-4.3271,-574.6777],[36.4437,-4.3271,-575.1088],[31.5837,-4.3271,-575.54]],"expectedDistance":787.89,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-07-creature-248037","objectiveId":"creature-248037","objectiveName":"Immol'thar","checkpoints":[[31.5837,-4.3271,-575.54],[29.2907,-5.0883,-582.6134],[26.9976,-5.8495,-589.6868],[24.7046,-6.6107,-596.7602],[22.4115,-7.372,-603.8336],[20.1185,-8.1332,-610.907],[17.8255,-8.8944,-617.9804],[15.5324,-9.6556,-625.0538],[13.2394,-10.4169,-632.1272],[10.9464,-11.1781,-639.2006],[8.6533,-11.9393,-646.274],[6.3603,-12.7005,-653.3474],[4.0672,-13.4617,-660.4208],[1.7742,-14.223,-667.4942],[-0.5188,-14.9842,-674.5676],[-2.8119,-15.7454,-681.6409],[-5.1049,-16.5066,-688.7143],[-7.3979,-17.2678,-695.7877],[-9.691,-18.0291,-702.8611],[-11.984,-18.7903,-709.9345],[-14.2771,-19.5515,-717.0079],[-16.5701,-20.3127,-724.0813],[-18.8631,-21.074,-731.1547],[-21.1562,-21.8352,-738.2281],[-23.4492,-22.5964,-745.3015],[-25.7423,-23.3576,-752.3749],[-28.0353,-24.1188,-759.4483],[-30.3283,-24.8801,-766.5217],[-32.6214,-25.6413,-773.5951],[-34.9144,-26.4025,-780.6685],[-37.2074,-27.1637,-787.7419],[-39.5005,-27.925,-794.8153],[-41.7935,-28.6862,-801.8887],[-44.0866,-29.4474,-808.9621]],"expectedDistance":246.66,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-08-creature-248077","objectiveId":"creature-248077","objectiveName":"Guard Mol'dar","checkpoints":[[-44.0866,-29.4474,-808.9621],[-40.4081,-29.4078,-802.4268],[-36.7297,-29.3682,-795.8916],[-33.0512,-29.3286,-789.3563],[-29.3728,-29.289,-782.8211],[-25.6944,-29.2494,-776.2858],[-22.0159,-29.2098,-769.7505],[-18.3375,-29.1702,-763.2153],[-14.659,-29.1307,-756.68],[-10.9806,-29.0911,-750.1448],[-7.3022,-29.0515,-743.6095],[-3.6237,-29.0119,-737.0743],[0.0547,-28.9723,-730.539],[3.7331,-28.9327,-724.0038],[7.4116,-28.8931,-717.4685],[11.09,-28.8535,-710.9332],[14.7685,-28.8139,-704.398],[18.4469,-28.7743,-697.8627],[22.1253,-28.7347,-691.3275],[25.8038,-28.6951,-684.7922],[29.4822,-28.6555,-678.257],[33.1607,-28.6159,-671.7217],[36.8391,-28.5764,-665.1865],[40.5175,-28.5368,-658.6512],[44.196,-28.4972,-652.1159],[47.8744,-28.4576,-645.5807],[51.5529,-28.418,-639.0454],[55.2313,-28.3784,-632.5102],[58.9097,-28.3388,-625.9749],[62.5882,-28.2992,-619.4397],[66.2666,-28.2596,-612.9044],[69.945,-28.22,-606.3691],[73.6235,-28.1804,-599.8339],[77.3019,-28.1408,-593.2986],[80.9804,-28.1012,-586.7634],[84.6588,-28.0617,-580.2281],[88.3372,-28.0221,-573.6929],[92.0157,-27.9825,-567.1576],[95.6941,-27.9429,-560.6224],[99.3726,-27.9033,-554.0871],[103.051,-27.8637,-547.5518],[106.7294,-27.8241,-541.0166],[110.4079,-27.7845,-534.4813],[114.0863,-27.7449,-527.9461],[117.7648,-27.7053,-521.4108],[121.4432,-27.6657,-514.8756],[125.1216,-27.6261,-508.3403],[128.8001,-27.5865,-501.8051],[132.4785,-27.5469,-495.2698],[136.1569,-27.5074,-488.7345],[139.8354,-27.4678,-482.1993],[143.5138,-27.4282,-475.664],[147.1923,-27.3886,-469.1288],[150.8707,-27.349,-462.5935],[154.5491,-27.3094,-456.0583],[158.2276,-27.2698,-449.523],[161.906,-27.2302,-442.9878],[165.5845,-27.1906,-436.4525],[169.2629,-27.151,-429.9172],[172.9413,-27.1114,-423.382],[176.6198,-27.0718,-416.8467],[180.2982,-27.0322,-410.3115],[183.9766,-26.9927,-403.7762],[187.6551,-26.9531,-397.241],[191.3335,-26.9135,-390.7057],[195.012,-26.8739,-384.1704],[198.6904,-26.8343,-377.6352],[202.3688,-26.7947,-371.0999],[206.0473,-26.7551,-364.5647],[209.7257,-26.7155,-358.0294],[213.4042,-26.6759,-351.4942],[217.0826,-26.6363,-344.9589],[220.761,-26.5967,-338.4237],[224.4395,-26.5571,-331.8884],[228.1179,-26.5175,-325.3531],[231.7964,-26.4779,-318.8179],[235.4748,-26.4384,-312.2826],[239.1532,-26.3988,-305.7474],[242.8317,-26.3592,-299.2121],[246.5101,-26.3196,-292.6769],[250.1885,-26.28,-286.1416],[253.867,-26.2404,-279.6064],[257.5454,-26.2008,-273.0711],[261.2239,-26.1612,-266.5358],[264.9023,-26.1216,-260.0006],[268.5807,-26.082,-253.4653],[272.2592,-26.0424,-246.9301],[275.9376,-26.0028,-240.3948],[279.6161,-25.9632,-233.8596],[283.2945,-25.9237,-227.3243],[286.9729,-25.8841,-220.7891],[290.6514,-25.8445,-214.2538],[294.3298,-25.8049,-207.7185],[298.0083,-25.7653,-201.1833],[301.6867,-25.7257,-194.648],[305.3651,-25.6861,-188.1128],[309.0436,-25.6465,-181.5775],[312.722,-25.6069,-175.0423],[316.4004,-25.5673,-168.507],[320.0789,-25.5277,-161.9717],[323.7573,-25.4881,-155.4365],[327.4358,-25.4485,-148.9012],[331.1142,-25.4089,-142.366],[334.7926,-25.3694,-135.8307],[338.4711,-25.3298,-129.2955],[342.1495,-25.2902,-122.7602],[345.828,-25.2506,-116.225],[349.5064,-25.211,-109.6897],[353.1848,-25.1714,-103.1544],[356.8633,-25.1318,-96.6192],[360.5417,-25.0922,-90.0839],[364.2202,-25.0526,-83.5487],[367.8986,-25.013,-77.0134],[371.577,-24.9734,-70.4782],[375.2555,-24.9338,-63.9429],[378.9339,-24.8942,-57.4077],[382.6123,-24.8547,-50.8724],[386.2908,-24.8151,-44.3371],[389.9692,-24.7755,-37.8019],[393.6477,-24.7359,-31.2666],[397.3261,-24.6963,-24.7314],[401.0045,-24.6567,-18.1961],[404.683,-24.6171,-11.6609],[408.3614,-24.5775,-5.1256],[412.0399,-24.5379,1.4096],[415.7183,-24.4983,7.9449]],"expectedDistance":937.43,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-09-creature-248079","objectiveId":"creature-248079","objectiveName":"Guard Fengus","checkpoints":[[415.7183,-24.4983,7.9449],[409.5882,-24.5733,6.9138],[403.4581,-24.6483,5.8828],[403.983,-24.7233,-0.0411],[407.4136,-24.6295,-2.1782],[410.8442,-24.5358,-4.3153],[414.9497,-24.4046,-4.8965],[419.0552,-24.2734,-5.4776],[424.6416,-24.0109,-1.4658],[424.9041,-23.8609,3.5207],[425.9539,-23.2236,2.8459],[429.4782,-20.974,2.9958],[430.1531,-20.4866,-1.9532],[431.8778,-19.3243,-1.9532],[432.2527,-19.0243,-6.5649],[436.0395,-16.5498,-6.5649],[439.4514,-14.3752,-1.9532],[443.2382,-11.9382,-6.3024],[443.6131,-11.6757,-1.3534],[447.4749,-9.1262,-6.3024],[450.9617,-6.8391,-1.3534],[454.786,-4.3271,-5.965],[455.2734,-4.1021,-10.9141],[462.2096,-3.8772,-9.9018],[462.4721,-3.8772,-10.3517],[469.5957,-3.8772,-10.1267],[471.133,-3.8397,-12.3013],[475.1447,-3.8209,-12.6762],[479.1565,-3.8022,-13.0512],[480.4312,-3.7272,-14.4009],[480.3937,-3.7647,-17.7003],[482.2309,-3.0898,-22.1995],[481.4435,-3.4272,-26.1737],[482.2309,-3.0898,-29.3981],[482.2309,-3.0898,-33.4099],[481.4435,-3.4272,-37.0092],[482.2684,-3.0898,-39.8212],[482.2309,-3.0898,-43.8329],[481.481,-3.4272,-46.2325],[482.6433,-2.9773,-48.5945],[482.6433,-2.9773,-50.5817],[481.5185,-3.4272,-52.2689],[482.6433,-2.9773,-54.106],[482.6433,-2.9773,-56.1306],[481.5185,-3.4272,-58.3052],[482.6433,-2.9773,-60.6673],[482.6433,-2.9773,-62.392],[481.5185,-3.4272,-67.3411],[482.6808,-2.9773,-73.3774],[483.8431,-2.5274,-74.5397],[483.4307,-2.6399,-81.8508],[483.8431,-2.5274,-85.0378],[483.4307,-2.6399,-87.8122],[483.5181,-2.5899,-93.0238],[483.6056,-2.5399,-98.2353],[483.6931,-2.4899,-103.4468],[482.7558,-2.8649,-104.5341],[482.7183,-2.9023,-105.8089],[481.7435,-3.3523,-106.2213],[481.481,-3.4272,-107.946],[482.2309,-3.0523,-109.5207],[482.2309,-3.0148,-113.045],[481.4435,-3.3898,-115.8195],[475.1072,-3.7647,-118.8564],[472.5015,-3.7647,-121.6497],[469.8957,-3.7647,-124.4429],[463.8968,-3.5022,-127.4423],[463.9343,-3.2023,-128.3422],[463.3344,-3.3898,-127.8548],[463.4094,-2.9773,-128.9046],[462.1346,-2.9398,-128.9796],[461.3473,-2.5274,-130.0669],[461.5347,-2.4524,-131.5291],[459.6976,-2.4524,-131.679],[459.0977,-2.4899,-133.7037],[457.7105,-2.4524,-134.641],[457.298,-2.3025,-137.228],[457.8229,-2.115,-137.8654],[453.1363,0.1346,-143.0769],[448.3747,2.0467,-147.5761],[443.6131,3.9589,-152.0752],[439.5638,3.9964,-156.0495],[436.3957,3.5277,-159.2739],[433.2275,3.059,-162.4983],[426.7091,3.0537,-162.6322],[420.1907,3.0483,-162.7661],[413.6722,3.043,-162.9],[407.1538,3.0376,-163.0339],[400.6354,3.0323,-163.1678],[394.117,3.0269,-163.3017],[387.5985,3.0215,-163.4356],[383.3993,3.0028,-165.7227],[379.2001,2.9841,-168.0098],[386.4987,2.9841,-169.272],[393.7974,2.9841,-170.5343],[401.096,2.9841,-171.7966],[395.2096,2.9841,-173.0838],[389.3232,2.9841,-174.3711],[383.4368,2.9841,-175.6583],[388.8358,2.9841,-175.7333],[383.4368,3.1715,-176.3332],[388.3484,3.359,-176.8581],[387.7485,4.2963,-179.1452],[383.1744,5.0462,-180.8699],[383.1744,6.2834,-183.7568],[387.7485,6.7708,-184.9191],[383.4368,8.4205,-188.8184],[388.3484,9.5828,-191.5929],[383.4368,10.8951,-194.8548],[388.3484,11.0451,-195.4172],[387.4111,11.1388,-200.7787],[386.4737,11.2325,-206.1402],[384.5616,11.2513,-211.2205],[382.6495,11.27,-216.3008],[383.3993,11.2888,-221.4935],[384.1492,11.3075,-226.6863],[381.6746,11.3825,-227.0238],[381.1872,11.9824,-228.5235],[375.4133,11.6449,-229.3483],[371.3641,11.9074,-231.3355],[371.3266,12.2448,-232.1978],[370.4267,12.2448,-232.7227],[369.9393,12.2448,-235.0098],[368.852,12.2073,-234.5599],[368.0647,12.2073,-235.3097],[367.9147,12.2448,-236.6595],[366.4525,12.2448,-236.8844],[364.9153,12.2073,-238.0092],[363.3031,12.2448,-240.4088],[362.6282,12.2448,-243.8581],[360.0037,12.2823,-246.4826],[359.1788,12.2448,-248.4698],[359.0289,12.2448,-249.8945],[359.7037,12.2448,-250.9068],[358.4665,12.2823,-252.9314],[359.1413,12.2448,-253.5313],[358.429,12.2823,-254.2062],[358.504,12.2823,-254.8811],[357.0417,11.9824,-255.481],[356.7043,11.9074,-258.1805]],"expectedDistance":549.3,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-10-creature-248080","objectiveId":"creature-248080","objectiveName":"Guard Slip'kik","checkpoints":[[356.7043,11.9074,-258.1805],[356.9293,11.6449,-261.3674],[359.1413,11.9824,-267.1038],[359.1039,11.6449,-268.1911],[360.6411,11.9824,-269.3909],[361.4284,11.9449,-271.0031],[361.6534,11.3075,-273.9275],[363.0781,11.3075,-276.1771],[366.6774,11.3075,-278.9984],[371.514,11.7574,-281.0324],[372.4514,11.4575,-282.0541],[376.2757,11.3075,-283.8913],[382.1246,11.495,-284.4912],[381.9933,11.3825,-289.8339],[381.8621,11.27,-295.1767],[384.4679,11.2513,-300.4069],[387.0736,11.2325,-305.6372],[385.3302,11.1575,-311.0362],[383.5868,11.0825,-316.4352],[388.5359,10.9701,-316.9601],[386.6612,10.5576,-318.2349],[382.0121,10.2577,-319.0222],[382.0121,9.0204,-321.8717],[386.6612,8.0831,-323.9338],[383.5868,5.9835,-328.8079],[388.5359,4.8212,-331.6199],[388.5734,3.509,-334.7318],[383.6243,3.359,-335.0317],[383.5868,3.134,-335.6316],[388.6109,3.059,-335.9316],[384.7116,3.0215,-339.9808],[378.6377,3.059,-343.9176],[379.3501,3.0965,-348.0418],[376.5381,3.6964,-350.0289],[376.3506,3.9214,-351.3037],[382.9869,3.8464,-351.5662],[388.7983,3.134,-354.7156],[385.3302,2.8153,-356.1403],[381.8621,2.4966,-357.565],[381.8621,1.2219,-363.264],[385.3302,0.9032,-364.6887],[388.7983,0.5845,-366.1134],[385.2927,0.0034,-368.8129],[381.7871,-0.5778,-371.5124],[388.7608,-1.1027,-374.062],[383.8492,-1.3651,-378.6361],[378.9377,-1.6276,-383.2103],[383.868,-1.6276,-386.5096],[388.7983,-1.6276,-389.809],[385.274,-1.6276,-396.3703],[381.7496,-1.6276,-402.9316],[386.68,-1.6276,-406.1935],[391.6103,-1.6276,-409.4554],[390.1856,-1.6651,-413.0172],[388.7608,-1.7026,-416.579],[381.7871,-1.7776,-417.1789],[385.2927,-2.2275,-419.4472],[388.7983,-2.6774,-421.7156],[385.3302,-3.0898,-423.684],[381.8621,-3.5022,-425.6523],[381.8621,-4.3271,-429.5891],[381.8621,-5.1519,-433.5259],[385.3302,-5.5643,-435.4943],[388.7983,-5.9768,-437.4626],[385.2927,-6.4454,-439.731],[381.7871,-6.9141,-441.9993],[388.7608,-7.0266,-442.5992],[383.8492,-7.0828,-447.6045],[378.9377,-7.1391,-452.6098],[383.868,-7.1391,-456.1529],[388.7983,-7.1391,-459.696],[390.2043,-7.1391,-464.4014],[391.6103,-7.1391,-469.1067],[386.68,-7.1391,-472.1062],[381.7496,-7.1391,-475.1056],[386.68,-7.1391,-476.9428],[391.6103,-7.1391,-478.7799],[388.7608,-7.1391,-482.5667],[381.7871,-7.1391,-482.7542],[388.7233,-7.3265,-483.7103],[395.6595,-7.514,-484.6663],[396.2969,-8.3388,-487.5908],[392.3976,-9.6886,-492.9898],[394.3473,-11.7507,-499.6635],[387.8235,-12.1256,-501.9881],[393.035,-12.5006,-502.2505],[386.6987,-12.613,-503.8627],[386.6237,-12.7255,-509.946],[391.1604,-12.7443,-511.8816],[395.697,-12.763,-513.8171],[394.5535,-12.763,-518.8271],[393.41,-12.763,-523.8371],[397.8716,-12.7818,-523.6122],[402.3333,-12.8005,-523.3872],[407.4698,-12.838,-518.6256],[409.082,-13.5504,-520.0878],[408.8196,-14.1877,-523.4622],[412.7563,-15.6875,-525.0369],[411.2941,-16.0249,-528.8987],[411.2191,-17.1872,-534.4102],[414.856,-17.937,-532.498],[415.6433,-18.237,-532.9854],[417.6867,-18.2557,-538.122],[419.73,-18.2745,-543.2585],[423.7043,-18.2745,-539.528],[427.6786,-18.2745,-535.7974],[433.0776,-18.2745,-537.2596],[433.265,-18.2745,-542.3587],[433.4525,-18.2745,-547.4577],[434.3523,-18.2745,-543.146],[435.2522,-18.2745,-538.8343],[434.8772,-18.3495,-544.1209],[436.6769,-19.1743,-550.3822],[439.9013,-19.9617,-549.0324],[443.5006,-21.049,-549.8198],[445.9002,-21.6114,-547.4577],[449.3495,-22.5862,-546.9328],[451.5991,-23.1861,-543.446],[453.2488,-23.6735,-544.4208],[453.8487,-23.786,-541.9463],[456.5857,-23.8984,-544.4208],[458.7228,-23.8984,-542.0213],[462.2846,-23.8609,-544.4208],[463.7093,-23.8234,-542.0213],[465.8464,-23.9734,-544.4208],[466.5588,-24.1609,-542.0213],[467.7961,-24.5358,-542.0213],[468.321,-24.7233,-544.4208],[468.9209,-24.9107,-544.3083],[468.9959,-25.0607,-546.9703],[469.7832,-25.1732,-546.3704],[474.6948,-25.2482,-549.3324],[479.6064,-25.3232,-552.2943],[484.5367,-25.3232,-548.0014],[489.467,-25.3232,-543.7084],[495.694,-25.3357,-541.8838],[501.921,-25.3482,-540.0591],[508.1479,-25.3607,-538.2345],[511.3255,-25.3607,-542.2087],[514.503,-25.3607,-546.183],[517.6805,-25.3607,-550.1572],[521.5954,-25.3607,-546.2205],[525.5103,-25.3607,-542.2837],[529.4252,-25.3607,-538.3469],[530.55,-25.3607,-543.1835],[531.6748,-25.3607,-548.0201],[534.3743,-25.3607,-543.221],[537.0738,-25.3607,-538.4219],[538.7047,-25.3607,-543.2585],[540.3357,-25.3607,-548.0951],[544.2724,-25.3607,-544.1209],[548.2092,-25.3607,-540.1466],[552.146,-25.3607,-536.1723]],"expectedDistance":728.48,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-11-creature-248081","objectiveId":"creature-248081","objectiveName":"Captain Kromcrush","checkpoints":[[552.146,-25.3607,-536.1723],[552.1835,-25.3607,-542.3399],[552.221,-25.3607,-548.5075],[557.8949,-25.3607,-550.2822],[563.5688,-25.3607,-552.0569],[569.2428,-25.3607,-553.8316],[566.3933,-25.3607,-559.6055],[563.5438,-25.3607,-565.3794],[560.6944,-25.3607,-571.1533],[560.6569,-25.3607,-577.7521],[560.6194,-25.3607,-584.3509],[554.9205,-25.3607,-584.6883],[549.2215,-25.3607,-585.0257],[543.5226,-25.3607,-585.3632],[541.8916,-25.3607,-590.6309],[540.2607,-25.3607,-595.8987],[538.6672,-25.3607,-591.1371],[537.0738,-25.3607,-586.3755],[531.6748,-25.3607,-586.3755],[530.55,-25.3607,-591.1746],[529.4252,-25.3607,-595.9737],[528.3004,-25.3607,-590.7059],[527.1756,-25.3607,-585.4382],[524.045,-25.3607,-591.362],[520.9143,-25.3607,-597.2859],[515.042,-25.3607,-593.7429],[509.1696,-25.3607,-590.1998],[504.9548,-25.3607,-585.9131],[500.7399,-25.3607,-581.6264],[496.5251,-25.3607,-577.3397],[490.3528,-25.3607,-579.0831],[484.1805,-25.3607,-580.8265],[481.706,-25.3607,-580.789],[475.1072,-25.3607,-578.3145],[479.2314,-25.3607,-581.8013],[472.9701,-25.3607,-582.5512],[475.0322,-25.3607,-585.9068],[477.0943,-25.3607,-589.2624],[482.7558,-25.3607,-592.7868],[482.8308,-25.3607,-589.2624],[483.4307,-25.1357,-592.7868],[483.9556,-24.9107,-589.5999],[486.0177,-23.9359,-591.1371],[488.3422,-22.8861,-587.9502],[492.204,-21.1614,-587.9502],[493.7412,-20.4866,-591.1371],[497.3406,-18.8744,-591.9244],[498.6153,-18.237,-589.075],[502.4865,-16.5123,-589.075],[505.0829,-15.425,-591.9244],[510.2663,-13.1379,-591.9244],[512.5908,-12.1256,-588.7375],[516.4526,-10.4009,-588.7375],[517.9898,-9.6886,-591.9244],[520.3894,-8.6388,-589.9373],[521.1767,-8.3013,-586.7504],[524.2887,-6.9141,-586.7504],[526.6132,-5.8643,-589.9373],[528.9753,-4.852,-589.5999],[529.3502,-4.702,-592.7868],[530.1001,-4.5895,-589.5999],[530.475,-4.627,-592.7868],[530.9249,-4.6645,-589],[530.9999,-4.6645,-592.7868],[532.0122,-4.6645,-596.6111],[532.4809,-4.6645,-592.7868],[532.9496,-4.6645,-588.9625],[534.7117,-4.6645,-592.7305],[536.4739,-4.6645,-596.4986],[537.7674,-4.6645,-591.0621],[539.0609,-4.6645,-585.6256],[546.0596,-4.6645,-585.4007],[553.0583,-4.6645,-585.1757],[560.057,-4.6645,-584.9507],[563.3314,-4.6645,-579.8892],[566.6058,-4.6645,-574.8276],[569.8802,-4.6645,-569.7661],[576.3852,-4.6645,-567.7415],[582.8902,-4.6645,-565.7168],[587.1457,-4.6645,-566.7479],[591.4011,-4.6645,-567.7789],[589.8639,-4.6645,-563.7297],[585.0648,-4.6645,-561.5926],[585.5147,-4.3646,-560.9927],[588.7766,-4.2146,-560.7678],[588.7017,-2.0025,-556.8685],[585.4773,-0.2403,-553.869],[585.4773,3.284,-547.8702],[588.7017,5.0462,-544.8707],[585.4398,6.8083,-541.2714],[588.6642,6.8083,-537.4471],[585.3273,6.8458,-534.1102],[581.503,6.9208,-534.1102],[581.0156,6.9583,-536.8472],[580.1158,7.2208,-535.6849],[577.3788,8.683,-538.5719],[574.4543,10.2577,-539.7342],[570.5925,12.3198,-535.4975],[566.7307,14.3819,-531.2608],[564.1062,15.7879,-533.8853],[561.4817,17.1939,-536.5098],[557.8824,19.106,-534.1102],[554.6205,20.9057,-530.8858],[551.3586,22.7054,-534.1102],[550.5713,23.1553,-535.6849],[550.0464,23.4177,-532.9479],[547.4968,24.73,-533.4354],[544.8348,26.1547,-536.1723],[542.1728,27.5795,-534.1102],[540.9731,27.9544,-536.8472],[540.3732,27.9544,-533.5853],[539.7733,27.9544,-537.2596],[537.7861,27.9544,-532.8355],[536.8113,27.9544,-537.7283],[535.8365,27.9544,-542.6211],[532.2747,27.9544,-537.7096],[531.4686,27.9544,-543.221],[530.6625,27.9544,-548.7325],[527.1381,27.9544,-542.4337],[523.6138,27.9544,-536.1349],[518.3601,27.9731,-536.1911],[513.1064,27.9919,-536.2473],[509.4414,28.0294,-532.4605],[505.7765,28.0669,-528.6737],[502.1116,28.1044,-524.8869],[500.2588,28.1044,-530.5484],[498.406,28.1044,-536.2098],[496.5532,28.1044,-541.8713],[495.7284,28.1044,-542.2837],[495.6534,28.1919,-536.7722],[495.5784,28.2793,-531.2608],[495.5034,28.3668,-525.7493],[489.9919,28.4043,-525.7118],[489.8795,28.5543,-525.1119],[492.6914,28.7043,-524.5495],[487.3299,29.3041,-522.3749],[487.3299,29.5291,-520.9877],[490.1419,29.4916,-520.6502],[492.6914,29.5291,-519.3005],[489.8795,29.5291,-518.7756],[493.0289,29.5291,-515.9636],[489.8045,29.5291,-513.6765],[492.9539,29.5291,-509.1305],[489.3921,29.5291,-506.8716],[492.9539,29.5291,-502.3255],[489.3921,29.5291,-500.0385],[489.8045,29.5291,-495.4268],[493.0289,29.5291,-493.1023],[492.6914,29.5291,-490.1778],[489.8795,29.5291,-489.5779],[489.8795,29.5291,-488.4531],[492.7664,29.5291,-487.8532],[490.7043,29.5291,-484.7788],[495.0535,29.5291,-484.3664],[496.5157,29.5291,-481.1795],[500.7243,29.5291,-480.4671],[501.3336,29.5291,-483.3166],[502.4677,29.5291,-480.4671],[502.9926,29.5291,-483.3166],[503.5925,29.5291,-483.654],[503.6675,29.5291,-480.4671],[507.4543,29.5291,-483.654],[511.1661,29.5291,-480.1297],[514.9342,29.5291,-481.8918],[518.7022,29.5291,-483.654],[522.5265,29.5291,-480.1297],[526.8007,29.5291,-480.1297],[527.2506,29.5291,-483.654],[529.7626,29.5291,-478.405],[529.8376,29.5291,-482.0793],[531.8997,29.5291,-483.804],[537.6362,29.5291,-485.3787],[539.5108,29.5291,-481.8918],[541.3855,29.5291,-478.405],[545.5847,29.5291,-478.405],[546.1096,29.5291,-485.4537],[550.9649,29.5291,-481.9668],[555.8203,29.5291,-478.48],[560.4132,29.5291,-482.0043],[565.0061,29.5291,-485.5287],[569.8427,29.5291,-485.4912],[574.6793,29.5291,-485.4537],[575.2417,29.5291,-478.405],[576.9851,29.5291,-481.8918],[578.7285,29.5291,-485.3787],[580.2282,29.5291,-481.8918],[581.728,29.5291,-478.405],[584.7274,29.5291,-481.8918],[587.7268,29.5291,-485.3787],[589.2266,29.5291,-481.8918],[590.7263,29.5291,-478.405],[594.1756,29.5291,-478.405],[594.7005,29.5291,-485.4537],[599.3872,29.5291,-481.9668],[604.0738,29.5291,-478.48],[608.5167,29.5291,-482.0043],[612.9596,29.5291,-485.5287],[617.6275,29.5291,-485.4912],[622.2954,29.5291,-485.4537],[622.8203,29.5291,-478.405],[625.4448,29.5291,-485.3787],[627.5819,29.5291,-478.405]],"expectedDistance":944.5,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-12-creature-248076","objectiveId":"creature-248076","objectiveName":"King Gordok","checkpoints":[[627.5819,29.5291,-478.405],[629.7377,29.5291,-481.8918],[631.8936,29.5291,-485.3787],[634.0682,29.5291,-478.405],[636.7302,29.5291,-485.3787],[637.2176,29.5291,-478.405],[641.4168,29.5291,-482.6667],[645.616,29.5291,-486.9284],[649.8152,29.5291,-491.1901],[655.3892,29.5416,-489.9778],[660.9632,29.5541,-488.7656],[666.5371,29.5666,-487.5533],[672.2486,29.5666,-489.1905],[677.96,29.5666,-490.8277],[683.6714,29.5666,-492.4649],[686.1835,29.5666,-487.7408],[688.6955,29.5666,-483.0166],[689.8953,29.1542,-483.3916],[690.6826,28.7792,-481.0295],[691.8824,28.3668,-481.0295],[692.4073,28.3293,-477.3177],[697.6594,28.3168,-476.4679],[702.9116,28.3043,-475.618],[708.1637,28.2918,-474.7682],[708.1825,28.2918,-470.8689],[708.2012,28.2918,-466.9696],[715.3108,28.2918,-465.4699],[722.4205,28.2918,-463.9702],[729.8113,28.2918,-465.095],[737.2021,28.2918,-466.2198],[738.4018,28.2918,-467.4195],[744.1758,28.2918,-463.2953],[749.3873,28.2918,-467.3071],[754.3364,28.2918,-472.7061],[752.8367,28.2918,-474.4307],[756.6422,28.1794,-475.2931],[760.4477,28.0669,-476.1554],[761.4226,27.8794,-477.9926],[762.1349,28.1794,-477.1677],[762.3224,28.1419,-480.3921],[762.9598,28.3293,-480.5796],[763.8221,28.7792,-480.2047],[765.0969,29.1542,-481.0295],[766.2966,30.0165,-480.2047],[767.1965,30.129,-480.8795],[769.0336,31.6287,-479.0424],[770.2334,32.1536,-479.4173],[771.2832,33.3159,-477.6926],[771.9956,33.4659,-478.1051],[771.3957,33.5409,-477.1677],[773.3453,33.8033,-477.2802],[774.3201,33.9908,-475.2556],[776.6822,34.6656,-474.5432],[780.544,35.6405,-472.3686],[783.1685,36.4278,-473.3059],[785.1931,37.0277,-473.3059],[789.6173,37.3276,-478.2175],[795.7911,37.3276,-477.9051],[801.965,37.3276,-477.5926],[808.1388,37.3276,-477.2802],[810.051,37.3089,-481.2357],[811.9631,37.2902,-485.1912],[817.3809,37.3089,-489.8638],[822.7986,37.3276,-494.5364]],"expectedDistance":274.23,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"e5ab458aa64049a1902cf3b6ef1b82d68d4bebd20abe936f5efb54db0aeb6505","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"shattered-halls","mapId":540,"legs":[{"id":"leg-01-creature-151089","objectiveId":"creature-151089","objectiveName":"Grand Warlock Nethekurse","checkpoints":[[41.4744,-13.7128,-19.7978],[37.2359,-13.617,-13.6469],[32.9974,-13.5213,-7.496],[28.7589,-13.4255,-1.3452],[24.5205,-13.3298,4.8057],[20.282,-13.234,10.9566],[16.0435,-13.1383,17.1074],[11.805,-13.0425,23.2583],[7.5665,-12.9468,29.4092],[3.328,-12.851,35.56],[-0.9105,-12.7553,41.7109],[-5.149,-12.6595,47.8618],[-9.3875,-12.5638,54.0127],[-13.626,-12.468,60.1635],[-17.8645,-12.3723,66.3144],[-22.103,-12.2765,72.4653],[-26.3415,-12.1807,78.6161],[-30.58,-12.085,84.767],[-34.8185,-11.9892,90.9179],[-39.0569,-11.8935,97.0687],[-43.2954,-11.7977,103.2196],[-47.5339,-11.702,109.3705],[-51.7724,-11.6062,115.5213],[-56.0109,-11.5105,121.6722],[-60.2494,-11.4147,127.8231],[-64.4879,-11.319,133.9739],[-68.7264,-11.2232,140.1248],[-72.9649,-11.1275,146.2757],[-77.2034,-11.0317,152.4266],[-81.4419,-10.936,158.5774],[-85.6804,-10.8402,164.7283],[-89.9189,-10.7444,170.8792],[-94.1574,-10.6487,177.03],[-98.3959,-10.5529,183.1809],[-102.6343,-10.4572,189.3318],[-106.8728,-10.3614,195.4826],[-111.1113,-10.2657,201.6335],[-115.3498,-10.1699,207.7844],[-119.5883,-10.0742,213.9352],[-123.8268,-9.9784,220.0861],[-128.0653,-9.8827,226.237],[-132.3038,-9.7869,232.3878],[-136.5423,-9.6912,238.5387],[-140.7808,-9.5954,244.6896],[-145.0193,-9.4997,250.8404],[-149.2578,-9.4039,256.9913],[-153.4963,-9.3081,263.1422],[-157.7348,-9.2124,269.2931],[-161.9733,-9.1166,275.4439],[-166.2117,-9.0209,281.5948],[-170.4502,-8.9251,287.7457]],"expectedDistance":373.52,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-151179","objectiveId":"creature-151179","objectiveName":"Warbringer O'mrogg","checkpoints":[[-170.4502,-8.9251,287.7457],[-175.3235,-8.8917,282.1297],[-180.1968,-8.8582,276.5137],[-185.0701,-8.8247,270.8977],[-189.9434,-8.7913,265.2817],[-194.8166,-8.7578,259.6657],[-199.6899,-8.7243,254.0497],[-204.5632,-8.6909,248.4337],[-209.4365,-8.6574,242.8177],[-214.3097,-8.624,237.2017],[-219.183,-8.5905,231.5857],[-224.0563,-8.557,225.9697],[-228.9296,-8.5236,220.3537],[-233.8029,-8.4901,214.7377],[-238.6761,-8.4566,209.1217],[-243.5494,-8.4232,203.5057],[-248.4227,-8.3897,197.8897],[-253.296,-8.3562,192.2737],[-258.1693,-8.3228,186.6577],[-263.0425,-8.2893,181.0417],[-267.9158,-8.2558,175.4257],[-272.7891,-8.2224,169.8098],[-277.6624,-8.1889,164.1938],[-282.5357,-8.1554,158.5778],[-287.4089,-8.122,152.9618],[-292.2822,-8.0885,147.3458],[-297.1555,-8.0551,141.7298],[-302.0288,-8.0216,136.1138],[-306.9021,-7.9881,130.4978],[-311.7753,-7.9547,124.8818],[-316.6486,-7.9212,119.2658],[-321.5219,-7.8877,113.6498],[-326.3952,-7.8543,108.0338],[-331.2685,-7.8208,102.4178],[-336.1417,-7.7873,96.8018],[-341.015,-7.7539,91.1858],[-345.8883,-7.7204,85.5698],[-350.7616,-7.6869,79.9538],[-355.6348,-7.6535,74.3378],[-360.5081,-7.62,68.7218],[-365.3814,-7.5865,63.1058],[-370.2547,-7.5531,57.4898],[-375.128,-7.5196,51.8738],[-380.0012,-7.4861,46.2579]],"expectedDistance":319.73,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-151195","objectiveId":"creature-151195","objectiveName":"Warchief Kargath Bladefist","checkpoints":[[-380.0012,-7.4861,46.2579],[-374.6628,-7.0229,41.3549],[-369.3244,-6.5597,36.4519],[-363.986,-6.0965,31.5489],[-358.6475,-5.6332,26.646],[-353.3091,-5.17,21.743],[-347.9707,-4.7068,16.84],[-342.6322,-4.2436,11.9371],[-337.2938,-3.7803,7.0341],[-331.9554,-3.3171,2.1311],[-326.617,-2.8539,-2.7719],[-321.2785,-2.3907,-7.6748],[-315.9401,-1.9274,-12.5778],[-310.6017,-1.4642,-17.4808],[-305.2633,-1.001,-22.3837],[-299.9248,-0.5378,-27.2867],[-294.5864,-0.0745,-32.1897],[-289.248,0.3887,-37.0927],[-283.9095,0.8519,-41.9956],[-278.5711,1.3151,-46.8986],[-273.2327,1.7784,-51.8016],[-267.8943,2.2416,-56.7045],[-262.5558,2.7048,-61.6075],[-257.2174,3.168,-66.5105],[-251.879,3.6313,-71.4134],[-246.5405,4.0945,-76.3164],[-241.2021,4.5577,-81.2194],[-235.8637,5.0209,-86.1224]],"expectedDistance":196.1,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"c99722db0c53141b45430d615982017d6c6d9ad45c079818ce71c8a4708e8a60","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"blood-furnace","mapId":542,"legs":[{"id":"leg-01-creature-138123","objectiveId":"creature-138123","objectiveName":"The Maker","checkpoints":[[3.016,-44.7397,15.2027],[5.2273,-44.7033,14.3279],[2.8945,-44.7397,13.4652],[1.3027,-44.6061,10.3304],[4.3039,-44.4359,6.5881],[0.4279,-43.9742,1.7279],[4.6927,-43.7798,-0.7386],[3.8908,-43.549,-2.3303],[-0.5077,-43.3424,-2.6706],[3.2347,-43.306,-4.2744],[-0.7021,-43.1115,-5.611],[3.0281,-43.0143,-8.6121],[-1.905,-42.8807,-10.216],[2.372,-42.8078,-12.7433],[1.8374,-42.6377,-15.4771],[-2.9013,-42.4433,-17.4212],[1.0233,-42.2489,-21.3458],[-3.2415,-42.1881,-21.5402],[-4.1649,-42.1152,-23.5936],[0.3672,-42.1152,-24.5292],[-3.8976,-41.9816,-26.4733],[0.3672,-41.775,-29.9483],[-4.5659,-41.5441,-32.9494],[-0.7021,-41.3376,-36.0114],[-5.0398,-41.2404,-36.874],[-4.7117,-41.1675,-38.004],[-0.7142,-41.1675,-38.5994],[-0.2404,-41.2039,-40.5313],[-4.4323,-41.2039,-40.7986],[-4.6388,-41.2768,-46.5944],[0.1606,-41.2768,-48.7936],[0.355,-41.2768,-51.8555],[-4.7117,-41.2768,-54.1884],[0.2943,-41.2768,-56.5942],[-4.7725,-41.2768,-58.5261],[0.3672,-41.2768,-59.4009],[0.5008,-41.2768,-60.3365],[-5.0398,-41.2768,-63.3377],[-0.374,-41.2768,-64.5406],[4.2918,-41.2768,-65.7435],[1.321,-41.2768,-72.1422],[-1.6498,-41.2768,-78.5409],[-6.8502,-41.2586,-81.5375],[-12.0506,-41.2404,-84.5341],[-12.245,-41.1067,-79.4355],[-12.4394,-40.9731,-74.3369],[-13.6058,-40.7058,-75.5762],[-14.0797,-40.645,-73.1066],[-14.9424,-40.5114,-71.843],[-15.3433,-40.7058,-75.6977],[-16.4612,-40.6693,-75.1023],[-16.8257,-40.3777,-71.1504],[-17.9557,-40.2319,-71.2476],[-18.2473,-39.9403,-70.6401],[-19.8026,-40.2683,-69.5223],[-24.6779,-40.3048,-72.0009],[-27.0351,-40.2805,-70.2756],[-30.4889,-40.1833,-69.4615],[-34.3785,-40.1651,-69.4129],[-38.2682,-40.1468,-69.3643],[-41.5974,-40.1104,-74.0453],[-46.9071,-40.1104,-71.8825],[-48.1829,-40.1468,-67.7361],[-49.5073,-40.0496,-68.8783],[-49.24,-39.9767,-67.8698],[-50.37,-39.6365,-67.4688],[-53.4441,-38.4093,-67.6754],[-56.3723,-37.2186,-68.6717],[-59.7745,-35.8456,-67.4688],[-61.3783,-35.1773,-67.8698],[-62.8485,-34.5455,-66.7398],[-64.3187,-33.8772,-67.8698],[-67.8423,-32.2855,-66.8735],[-68.9723,-31.7509,-68.0035],[-69.7743,-31.3742,-68.0035],[-70.8435,-30.9004,-66.9342],[-73.6503,-29.6003,-67.6025],[-79.2395,-27.0001,-67.2744],[-81.5116,-25.943,-68.6717],[-84.9137,-24.3877,-67.8698],[-89.9804,-21.9698,-68.5867],[-93.1274,-20.4631,-67.5174],[-95.1322,-19.5276,-67.9913],[-95.521,-19.3939,-66.9221],[-96.3108,-19.0658,-67.9913],[-97.5137,-18.5069,-67.5296],[-98.0483,-18.2518,-68.8054],[-99.1783,-17.7171,-68.8054],[-100.5027,-17.1096,-67.5296],[-101.6935,-16.575,-67.5296],[-103.2396,-15.8824,-68.5988],[-106.5263,-14.4244,-67.7969],[-111.1192,-12.2859,-68.5988],[-113.9381,-10.9493,-68.2222],[-115.9429,-9.953,-68.7203],[-119.3815,-8.4099,-67.967],[-120.4507,-7.9117,-68.5016],[-121.5078,-7.4743,-67.8698],[-122.4434,-7.0369,-68.0764],[-123.707,-6.4415,-66.9342],[-126.6474,-5.0078,-68.0764],[-128.4457,-4.2423,-67.566],[-131.0459,-3.0394,-68.6353],[-133.0507,-2.1038,-67.4688],[-133.9741,-1.6664,-67.9306],[-134.6546,-1.3627,-67.0679],[-135.1163,-1.1682,-68.3315],[-136.1126,-0.6458,-67.1286],[-136.5014,-0.4514,-67.9184],[-138.968,0.9824,-67.0436],[-140.5111,1.6993,-68.3437],[-142.0056,2.3675,-68.453],[-142.8075,2.9629,-67.5174],[-144.0104,3.3274,-68.1857],[-145.1768,3.9592,-67.6025],[-145.7722,3.8985,-68.8054],[-146.6349,4.2995,-68.8054],[-148.178,5.3565,-67.6025],[-148.4332,5.3201,-68.0642],[-149.1136,5.7454,-67.6025],[-149.5145,5.6117,-68.5988],[-150.523,6.28,-68.0035],[-151.1184,6.4136,-68.4652],[-151.8474,6.9482,-67.8698],[-152.1026,6.6809,-68.8054],[-154.7635,7.3492,-70.8588],[-154.2897,7.1062,-71.6607],[-155.286,7.5436,-71.3327],[-155.6019,7.8109,-72.9122],[-156.416,8.2483,-73.301],[-157.303,8.6493,-72.1346],[-157.303,8.6858,-70.9439],[-159.4657,9.3783,-71.1626],[-160.1705,9.512,-70.0083],[-162.7342,9.6456,-69.1942],[-163.6516,9.6456,-76.0015],[-164.5689,9.6456,-82.8088],[-166.2335,9.6092,-78.6017],[-170.8416,9.6456,-78.6017],[-172.9816,9.6639,-83.7489],[-175.1216,9.6821,-88.8961],[-179.6917,9.6821,-83.7611],[-184.2618,9.6821,-78.626],[-187.2568,9.6639,-80.8935],[-190.2519,9.6456,-83.1611],[-191.309,9.6821,-90.0292],[-197.2992,9.6456,-86.7364],[-198.1011,9.6092,-83.4072],[-198.5021,9.6092,-85.6672],[-202.3051,9.6092,-85.6064],[-205.7802,9.6092,-83.3464],[-209.7777,9.6092,-83.2128],[-210.3001,9.6092,-85.6064],[-211.8311,9.6456,-86.4691],[-211.9647,9.6821,-83.7352],[-215.379,9.7185,-82.3592],[-215.9258,9.6821,-75.8071],[-218.5867,9.6821,-71.9402],[-224.018,9.6821,-72.6388],[-229.4492,9.6821,-73.3375],[-234.6375,9.6456,-68.2708],[-239.3032,9.6274,-66.8674],[-243.969,9.6092,-65.464],[-239.5098,9.6092,-59.9356],[-239.7771,9.6092,-55.5371],[-244.7709,9.6092,-52.8033],[-239.9107,9.6092,-48.5385],[-244.7102,9.6092,-46.8617],[-240.4089,9.4512,-44.0306],[-245.6093,9.2568,-42.9007],[-241.4782,9.0624,-41.3697],[-245.4999,8.5278,-38.5386],[-248.7684,8.4914,-38.6723],[-247.8936,8.1511,-36.4731],[-250.105,8.1147,-36.9348],[-248.3067,7.7502,-34.0673],[-249.1086,7.4586,-32.0625],[-247.2375,7.0941,-28.2715],[-249.303,7.0576,-26.8742],[-252.0369,7.0941,-28.1136],[-252.0369,7.0576,-26.5219],[-255.9736,7.0576,-27.0565],[-257.3102,7.0576,-23.545],[-262.1825,7.0576,-22.2814],[-261.9881,7.0941,-19.2073],[-262.8508,7.0212,-16.1454],[-264.1752,6.9847,-17.1539],[-264.9771,6.9847,-16.8137],[-265.5846,6.9847,-13.0106],[-268.1848,7.0212,-15.6715],[-270.0803,7.0576,-13.1564],[-269.5457,7.0576,-9.7543],[-275.548,7.4586,-10.5562],[-274.8433,7.4221,-7.5429],[-276.0461,7.5801,-5.939],[-279.7885,8.1754,-6.34],[-282.4494,8.5521,-8.3448],[-283.7131,8.8194,-7.9438],[-283.9196,8.9531,-6.9718],[-285.7179,9.2204,-8.0289],[-285.3777,9.2204,-3.436],[-286.5077,9.4148,0.7923],[-288.9742,9.6456,-3.2052],[-290.0313,9.6456,1.5213],[-293.2876,9.6092,-3.0108],[-296.8234,9.6092,-2.8042],[-298.1599,9.6092,2.2625],[-302.364,9.6092,2.3962],[-308.1719,9.6092,-2.0752],[-308.9738,9.6092,2.785],[-314.5752,9.6092,-1.6864],[-314.9032,9.6274,4.0183],[-315.2313,9.6456,9.7229],[-321.7333,9.6639,11.8796],[-328.2353,9.6821,14.0363],[-330.029,9.7003,19.7409],[-331.8227,9.7185,25.4456],[-328.4191,9.7185,27.0859],[-325.0154,9.7185,28.7262],[-325.8903,9.6821,29.7225],[-328.6272,9.6456,29.9291],[-326.109,9.6092,31.46],[-328.5057,9.6092,31.9946],[-326.2426,9.6092,35.3968],[-328.5057,9.6092,38.2643],[-326.109,9.6092,41.9215],[-328.372,9.6092,42.0552],[-325.0397,9.6456,42.9179],[-328.5057,9.6821,43.3188],[-331.1119,9.6639,47.0855],[-333.7182,9.6456,50.8521],[-329.4458,9.6456,50.9189],[-325.1734,9.6456,50.9858],[-328.7411,9.6274,52.9541],[-332.3087,9.6092,54.9225],[-334.3439,9.6456,58.3261],[-336.3791,9.6821,61.7298],[-341.2484,9.6942,64.1528],[-346.1177,9.7064,66.5758],[-350.987,9.7185,68.9988],[-353.9517,9.7185,74.1339],[-356.9164,9.7185,79.2689],[-349.8722,9.7064,80.403],[-342.828,9.6942,81.537],[-335.7838,9.6821,82.6711],[-329.4038,9.6699,84.3559],[-323.0238,9.6578,86.0408],[-316.6438,9.6456,87.7256],[-317.1784,9.6821,89.8641],[-323.0683,9.6821,90.099],[-328.9583,9.6821,90.3339],[-334.8482,9.6821,90.5689],[-331.0572,9.7185,92.8167],[-331.0572,9.7185,97.5918],[-325.143,9.7064,98.0171],[-319.2288,9.6942,98.4423],[-313.3146,9.6821,98.8676],[-313.3146,9.6821,103.5334],[-314.9306,9.7003,108.7155],[-316.5466,9.7185,113.8977],[-318.1444,9.7185,117.962],[-319.7422,9.7185,122.0263],[-323.849,9.7185,125.5257],[-328.8428,9.7185,128.7941],[-333.6088,9.7185,129.669],[-330.875,9.7185,135.8292],[-328.1411,9.7185,141.9895]],"expectedDistance":1010.99,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-138115","objectiveId":"creature-138115","objectiveName":"Broggok","checkpoints":[[-328.1411,9.7185,141.9895],[-327.971,9.6821,142.9858],[-325.2341,9.6456,143.1195],[-326.1697,9.6092,144.7233],[-328.5664,9.6092,145.258],[-326.1697,9.6092,148.2014],[-328.5057,9.6092,150.5981],[-326.109,9.5849,153.5294],[-328.4449,9.5849,155.0603],[-327.6399,9.5849,157.5998],[-324.8301,9.5849,158.1951],[-324.2955,9.6092,160.528],[-326.2274,9.6092,161.5244],[-325.2311,9.6092,164.5863],[-322.7646,9.6092,166.7247],[-322.0963,9.7185,169.2642],[-323.6394,9.7185,170.0661],[-321.5738,9.7185,169.9932],[-323.5057,9.6092,170.9288],[-320.0307,9.6456,170.5886],[-318.2325,9.6456,175.8619],[-319.97,9.6092,181.8642],[-323.7002,9.6456,182.5325],[-326.838,9.6821,178.2069],[-327.1661,9.6821,183.869],[-332.9041,9.6456,180.6613],[-335.0304,9.6092,186.2505],[-341.3153,9.6092,187.3197],[-342.5789,9.6092,182.8605],[-347.111,9.6092,183.869],[-350.5739,9.6092,189.1302],[-355.7014,9.6092,185.2663],[-358.1679,9.6092,190.8555],[-363.1739,9.6092,191.5967],[-365.3731,9.6092,186.4692],[-370.1118,9.6092,187.0038],[-373.3073,9.6092,192.3379],[-378.1068,9.6092,192.5323],[-379.5162,9.6092,187.5992],[-384.1212,9.6092,187.9273],[-387.3776,9.6092,193.1276],[-392.3714,9.6092,193.1276],[-393.7079,9.6092,187.9273],[-398.3008,9.6092,187.9273],[-398.9691,9.6092,192.3257],[-403.2369,9.6092,187.5992],[-406.8365,9.6092,192.3986],[-411.3716,9.6092,192.2042],[-412.3801,9.6092,187.0038],[-414.8467,9.6092,191.9977],[-419.6461,9.6092,191.3901],[-421.8453,9.6092,185.8617],[-426.6447,9.6092,185.3271],[-427.8476,9.6092,189.6526],[-432.319,9.6092,189.0572],[-434.5911,9.6092,183.5896],[-438.9167,9.6092,182.7269],[-441.043,9.6092,187.3926],[-445.9032,9.6092,186.1897],[-447.5678,9.6092,180.3332],[-452.0391,9.6456,179.264],[-455.3805,9.6821,183.7961],[-454.7851,9.7185,178.9967],[-458.4424,9.7185,177.733],[-458.1751,9.6821,172.1924],[-461.4436,9.6456,170.1876],[-460.7875,9.6092,169.1184],[-458.1873,9.6092,168.9969],[-459.1107,9.6092,165.133],[-456.3039,9.6092,163.4684],[-455.3684,9.6092,158.8027],[-457.5068,9.6092,156.1296],[-455.2469,9.6092,153.5294],[-459.1714,9.6821,147.9979],[-454.9066,9.6092,142.4512],[-457.1666,9.6092,141.9895],[-458.3695,9.6456,141.1268],[-454.8459,9.6821,140.7259],[-451.7718,9.6821,136.9228],[-455.101,9.6639,135.1245],[-458.4303,9.6456,133.3262],[-455.101,9.6274,131.528],[-451.7718,9.6092,129.7297],[-450.0708,9.6456,125.9631],[-448.3697,9.6821,122.1964],[-453.2592,9.6942,119.8636],[-458.1488,9.7064,117.5307],[-463.0383,9.7185,115.1978],[-466.2415,9.7185,109.8637],[-469.4446,9.7185,104.5297],[-462.4207,9.7064,103.3268],[-455.3967,9.6942,102.1239],[-448.3727,9.6821,100.921],[-445.3837,9.6456,96.2553],[-445.8455,9.6821,94.056],[-451.7141,9.6821,93.7887],[-457.5828,9.6821,93.5214],[-463.4514,9.6821,93.2541],[-459.6575,9.7185,91.0913],[-466.5275,9.7185,91.0913],[-473.3976,9.7185,91.0913],[-480.2676,9.7185,91.0913],[-484.0616,9.6821,89.7669],[-484.0616,9.6821,85.1741],[-480.2676,9.7185,81.9056],[-483.0288,9.7185,75.9033],[-481.3931,9.7185,71.801],[-479.7573,9.7185,67.6987],[-477.9089,9.7185,63.9852],[-476.0605,9.7185,60.2717],[-471.249,9.7185,57.3313],[-466.4374,9.7185,54.3909],[-463.7339,9.7185,48.2534],[-461.0305,9.7185,42.1159],[-460.1556,9.6821,41.1196],[-457.4218,9.6456,40.9252],[-457.2395,9.6092,39.3213],[-454.8459,9.6092,38.7867],[-457.2395,9.6821,35.8949],[-454.9066,9.6821,33.2947],[-456.8386,9.6821,30.3665],[-454.5786,9.6092,27.584],[-456.8386,9.6092,25.1175],[-457.3003,9.6092,21.9948],[-455.0403,9.6092,21.8612],[-458.3695,9.6092,20.9377],[-454.9066,9.6092,20.5368],[-457.7073,9.6092,16.1322],[-460.508,9.6092,11.7277],[-463.8433,9.6092,7.791],[-467.1786,9.6092,3.8542]],"expectedDistance":586.67,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-138524","objectiveId":"creature-138524","objectiveName":"Keli'dan the Breaker","checkpoints":[[-467.1786,9.6092,3.8542],[-463.8433,9.6092,7.791],[-460.508,9.6092,11.7277],[-454.9735,9.6092,11.1263],[-449.4389,9.6092,10.5248],[-445.1741,9.6092,6.3208],[-440.9093,9.6092,2.1167],[-443.222,9.6092,-3.1728],[-445.5346,9.6092,-8.4623],[-447.8472,9.6092,-13.7518],[-453.157,9.6092,-14.3066],[-458.4667,9.6092,-14.8615],[-463.7765,9.6092,-15.4164],[-464.6391,9.6092,-17.1417],[-461.1702,9.6092,-20.7079],[-457.7012,9.6092,-24.274],[-458.5032,9.6092,-25.5377],[-462.8713,9.6092,-22.4393],[-467.2393,9.6092,-19.341],[-464.2382,9.6092,-24.2437],[-461.237,9.6092,-29.1464],[-466.3696,9.6092,-30.7462],[-471.5021,9.6092,-32.346],[-476.6347,9.6092,-33.9458],[-472.9045,9.6092,-40.0088],[-469.1743,9.6092,-46.0719],[-469.4659,9.6456,-51.1569],[-469.7575,9.6821,-56.2418],[-473.3662,9.6456,-58.6901],[-476.9749,9.6092,-61.1385],[-472.5384,9.6092,-65.5734],[-468.102,9.6092,-70.0083],[-461.0305,9.6092,-70.871],[-463.7339,9.6092,-73.8068],[-466.4374,9.6092,-76.7427],[-460.7753,9.6092,-77.2773],[-465.6476,9.6092,-78.544],[-459.9734,9.6092,-79.5403],[-464.8457,9.6092,-80.807],[-459.4388,9.6092,-81.0743],[-464.712,9.6092,-81.4752],[-459.8397,9.6092,-84.8045],[-454.5664,9.6092,-86.7971],[-453.7645,9.6092,-85.5942],[-453.3635,9.6092,-83.3343],[-450.168,9.6092,-85.6064],[-447.1668,9.6092,-83.3464],[-443.7039,9.6092,-83.2128],[-443.1815,9.6092,-85.6064],[-441.6505,9.6456,-85.7887],[-440.6542,9.6821,-89.0571],[-437.0455,9.7185,-93.7958],[-436.8025,9.7185,-90.3815],[-435.4356,9.7185,-86.7227],[-434.0686,9.7185,-83.0639],[-430.788,9.7003,-87.6021],[-427.5074,9.6821,-92.1403],[-423.1454,9.6639,-90.3056],[-418.7834,9.6456,-88.4709],[-414.4518,9.6274,-92.804],[-410.1201,9.6092,-97.1372],[-414.5793,9.6092,-102.7385],[-409.379,9.6092,-103.5404],[-413.8382,9.6092,-109.4091],[-409.3668,9.6456,-111.5354],[-414.3728,9.6456,-113.0056],[-409.4397,9.354,-115.9339],[-413.097,8.9895,-117.4648],[-417.9693,8.9531,-117.5377],[-413.1699,8.3941,-120.1379],[-413.7896,8.1268,-121.2193],[-412.453,6.5837,-125.2047],[-409.8771,5.9519,-126.4197],[-412.2829,4.9434,-128.6189],[-412.0035,4.4453,-129.6274],[-412.7325,3.9471,-130.6238],[-409.9743,3.7527,-131.0004],[-409.4883,3.3517,-131.8631],[-407.1433,2.9265,-132.4585],[-406.4142,3.0601,-131.9968],[-405.1719,2.3918,-132.8108],[-405.4999,0.8244,-135.2652],[-404.294,-0.6093,-137.2701],[-405.099,-1.8487,-139.2749],[-403.5042,-2.6749,-140.8787],[-403.5164,-3.3796,-142.3489],[-402.5048,-3.9871,-143.0415],[-402.3712,-4.4124,-143.8434],[-400.3056,-5.1414,-143.8556],[-400.1112,-5.5424,-144.7547],[-395.8464,-7.0369,-145.1435],[-395.1052,-7.5108,-146.2614],[-392.3106,-8.0454,-146.7352],[-393.4285,-8.0818,-147.4157],[-392.6265,-8.3492,-148.011],[-389.8319,-9.0903,-148.2054],[-389.9656,-9.6492,-149.8701],[-388.1066,-10.5727,-150.8056],[-385.1054,-11.5083,-150.7449],[-383.2464,-12.6018,-152.0723],[-383.9511,-12.6383,-154.1045],[-382.2136,-13.3794,-155.5777],[-378.2526,-15.0076,-155.602],[-375.7131,-16.3077,-158.0078],[-371.0352,-18.5677,-160.0005],[-371.5698,-18.5069,-161.738],[-369.5164,-19.6126,-162.6128],[-367.1106,-20.6818,-161.8109],[-366.1021,-21.1982,-166.2762],[-365.0937,-21.7146,-170.7415],[-364.2006,-22.1277,-166.9748],[-363.3075,-22.5409,-163.2082],[-361.6794,-23.3246,-169.247],[-360.0512,-24.1083,-175.2857],[-358.7147,-24.7401,-174.8848],[-358.3137,-24.9102,-173.2688],[-356.2481,-25.3476,-174.5324],[-354.9845,-25.4205,-169.9395],[-352.846,-25.4934,-172.078],[-346.8437,-25.4934,-167.6067],[-345.8352,-25.4934,-172.8678],[-340.1731,-25.4934,-168.3357],[-341.7709,-25.4934,-172.7038],[-343.3687,-25.4934,-177.0718],[-338.3673,-25.4934,-174.739],[-333.3658,-25.4934,-172.4061],[-329.7982,-25.4934,-167.8071],[-326.2305,-25.4934,-163.2082],[-329.5749,-25.4934,-162.6736],[-326.3034,-25.4934,-162.0782],[-328.1776,-25.5177,-160.0734],[-326.3034,-25.542,-158.1415],[-326.3034,-25.542,-155.274],[-328.3112,-25.5177,-154.144],[-325.4407,-25.4934,-152.61],[-328.773,-25.4934,-152.0116],[-327.482,-25.4205,-151.2795],[-331.7969,-25.3841,-150.2224],[-336.1118,-25.3476,-149.1653],[-338.8001,-25.4205,-149.4326],[-342.4088,-25.4205,-148.4242],[-346.7465,-25.4205,-146.3464],[-345.6104,-25.3355,-141.2797],[-344.4744,-25.2504,-136.213],[-343.8608,-25.2018,-131.2738],[-343.2472,-25.1532,-126.3347],[-341.376,-25.0499,-121.2072],[-339.5048,-24.9466,-116.0797],[-339.9058,-24.9102,-114.0749],[-343.9033,-24.9102,-111.2803],[-344.3043,-24.7401,-108.8623],[-347.9129,-24.6064,-104.476],[-343.3368,-24.5578,-101.8758],[-338.7606,-24.5092,-99.2756],[-340.2673,-24.5092,-93.492],[-335.8916,-24.5275,-91.0316],[-331.5159,-24.5457,-88.5711]],"expectedDistance":649.13,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"8dac9f75102a073958acc1555b2318c6f9efa3e0f9650a9c919cc4c61a5dd11f","generationStatus":"Candidate","generationIssues":[]},{"schemaVersion":1,"id":"primary","dungeonId":"hellfire-ramparts","mapId":543,"legs":[{"id":"leg-01-creature-202692","objectiveId":"creature-202692","objectiveName":"Watchkeeper Gargolmar","checkpoints":[[5.4691,129.4114,-94.0819],[2.1797,129.4128,-87.522],[-1.1097,129.4142,-80.962],[-4.3991,129.4156,-74.4021],[-7.6885,129.417,-67.8422],[-10.9779,129.4184,-61.2822],[-14.2673,129.4198,-54.7223],[-17.5567,129.4212,-48.1623],[-20.8461,129.4226,-41.6024],[-24.1355,129.424,-35.0425],[-27.4249,129.4254,-28.4825],[-30.7143,129.4268,-21.9226],[-34.0037,129.4282,-15.3626],[-37.2931,129.4296,-8.8027],[-40.5825,129.431,-2.2428],[-43.8719,129.4324,4.3172],[-47.1613,129.4338,10.8771],[-50.4507,129.4352,17.4371],[-53.7401,129.4366,23.997],[-57.0295,129.438,30.5569],[-60.3189,129.4394,37.1169],[-63.6083,129.4408,43.6768],[-66.8977,129.4421,50.2368],[-70.1871,129.4435,56.7967],[-73.4765,129.4449,63.3566],[-76.7659,129.4463,69.9166],[-80.0553,129.4477,76.4765],[-83.3447,129.4491,83.0365]],"expectedDistance":198.14,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-202694","objectiveId":"creature-202694","objectiveName":"Omor the Unscarred","checkpoints":[[-83.3447,129.4491,83.0365],[-78.3844,129.4303,84.7716],[-73.4241,129.4114,86.5068],[-75.0273,129.4303,79.8396],[-76.6304,129.4491,73.1725],[-71.4626,129.4303,74.2664],[-66.2949,129.4114,75.3603],[-69.8218,129.4303,72.6255],[-73.3487,129.4491,69.8907],[-66.144,129.4114,67.8915],[-68.445,129.4303,64.1949],[-70.7459,129.4491,60.4982],[-77.7432,129.4869,62.1014],[-76.0835,129.5246,58.4424],[-79.6104,129.5623,60.3096],[-80.4214,129.6,58.5745],[-78.6862,129.6189,56.2169],[-79.2143,129.5812,55.7454],[-81.2889,129.5246,55.4436],[-83.5522,129.5623,57.5371],[-84.8158,129.5812,57.4051],[-86.287,129.5434,54.048],[-87.8712,129.6,56.1038],[-89.0783,129.5434,53.501],[-91.4028,129.6,54.8212],[-90.8559,129.6943,57.8955],[-93.4633,129.6377,58.6311],[-98.0134,129.5434,56.4244],[-98.0889,129.4869,59.2346],[-100.635,129.5246,56.9713],[-100.7671,129.5246,60.5171],[-103.8413,129.5246,61.2527],[-104.4637,129.5623,58.7819],[-104.3883,129.8829,55.3871],[-105.6519,129.9772,56.4621],[-107.0853,130.4676,56.2735],[-107.3116,131.1277,54.5006],[-106.3875,131.2597,53.0861],[-108.066,132.4102,51.3886],[-109.1411,132.7309,51.3886],[-109.4806,133.0326,50.8606],[-108.745,133.0138,50.4079],[-109.0091,133.2401,49.9364],[-110.4047,133.6362,49.8987],[-110.5745,134.0322,49.0122],[-113.1772,134.6169,48.8802],[-112.4417,134.8809,47.7109],[-114.7992,135.1261,48.1069],[-111.5175,135.8428,44.995],[-114.2711,137.2008,41.9396],[-113.347,137.4082,41.4681],[-113.5356,137.71,40.7891],[-112.1022,137.8798,40.4119],[-112.6303,138.1815,39.6763],[-111.7061,138.7285,38.8276],[-111.3666,139.4829,37.5639],[-114.1768,139.8412,35.6779],[-112.2908,140.2373,35.7533],[-113.9505,140.2373,35.0178],[-109.8389,141.218,34.5651],[-110.8385,141.8027,32.1699],[-109.6315,142.4063,31.2457],[-108.9713,142.9721,29.6426],[-109.7635,143.2738,27.5113],[-105.8217,144.1037,27.7188],[-105.8028,144.5375,26.606],[-103.2,145.0467,27.6056],[-102.7285,145.5371,26.1345],[-101.3517,145.8389,26.4363],[-100.9557,146.4047,24.4371],[-100.0126,146.8762,23.8901],[-100.0126,147.2722,21.0233],[-98.1455,147.6306,22.6265],[-96.6178,148.0644,21.2497],[-94.1423,148.5736,23.9844],[-92.0064,149.1394,22.3813],[-90.5305,149.3658,25.5121],[-89.0783,149.7052,26.2477],[-87.9467,150.007,24.3239],[-86.7396,150.2333,24.9274],[-86.9471,150.139,27.4547],[-85.872,150.4219,27.5302],[-86.551,150.2899,29.85],[-85.2119,150.6671,30.2461],[-85.3439,150.6105,31.0382],[-83.2127,150.9878,31.3023],[-83.6842,150.8746,31.9813],[-82.8732,151.1009,33.641],[-81.1569,151.3084,33.0374],[-81.6284,151.365,35.1121],[-79.8367,151.365,35.9797],[-77.8375,151.365,34.3765],[-76.5738,151.4781,31.6418],[-74.5746,151.4027,34.7726],[-73.8391,151.4027,33.8484],[-73.1035,151.2895,36.9793],[-71.4249,151.4215,34.6406],[-70.6139,151.2707,38.2995],[-67.4077,151.4027,38.5635],[-64.6729,151.7233,33.773],[-61.3346,151.8553,35.2441],[-58.8073,151.9874,34.0559],[-57.7511,151.9874,28.9259],[-53.8847,151.9874,32.0567],[-54.0167,152.0251,27.2473],[-52.4136,152.1571,27.7188],[-51.7535,152.2514,22.1738],[-48.2832,152.3268,20.5141],[-43.8132,152.2325,22.3813],[-41.4745,152.176,19.6465],[-36.882,152.0817,20.4104],[-32.2895,151.9874,21.1742],[-29.6868,152.0628,19.0619],[-29.2907,152.1382,18.1943],[-30.9127,152.308,15.8556],[-29.3661,152.5532,13.4603],[-30.0263,152.7795,9.9334],[-26.8011,152.9115,7.8587],[-29.5359,153.2699,2.5024],[-25.4243,153.0435,3.3511],[-27.1406,152.8927,1.6537],[-26.0656,152.7229,2.0497],[-24.8208,152.6852,0.9747],[-26.7445,152.6852,-1.5526],[-24.2172,152.6852,-2.2127],[-22.6707,152.6852,-4.344],[-25.33,152.6852,-5.683],[-26.2919,152.6852,-10.3604],[-21.8785,152.6852,-9.7569],[-26.7445,152.6852,-12.6803],[-22.7084,152.6852,-11.5769],[-18.6723,152.6852,-10.4736],[-17.5847,152.6852,-15.4528],[-16.497,152.6852,-20.4319],[-15.4094,152.6852,-25.4111],[-9.701,152.6726,-25.3231],[-3.9926,152.66,-25.235],[1.7159,152.6475,-25.147],[2.3477,152.6475,-17.8103],[2.9795,152.6475,-10.4736],[7.6758,152.6098,-10.5396],[12.372,152.572,-10.6056],[15.1822,152.572,-11.2846],[17.4455,152.572,-13.0952],[18.1056,152.6098,-11.907],[17.1626,152.6475,-8.8327],[21.293,152.8738,-8.7007],[20.5009,153.1378,-5.287],[24.5181,153.6659,-4.2874],[22.8584,153.9488,-0.685],[26.7814,154.1752,-0.0249],[27.5735,154.1374,1.7102],[31.6285,154.1374,2.2572],[32.1943,154.1752,3.9546],[32.9865,154.1563,4.2941],[32.911,154.2129,5.1617],[34.1558,154.1752,4.4073],[34.948,154.0997,7.6701],[38.2863,153.798,9.9334],[37.4941,153.4773,16.2516],[39.7762,153.4019,15.8556],[37.513,153.4962,18.2509],[37.9845,153.5905,19.307],[40.7192,153.5716,18.7601],[43.7181,153.3453,20.5707],[41.3039,153.4396,21.7589],[44.0387,153.3453,22.5699],[42.4355,153.4773,26.4363],[46.434,153.4773,27.8508],[45.623,153.5151,30.4536],[46.0379,153.5716,31.1325],[49.9797,153.5905,31.5286],[49.9986,153.8168,34.9235],[54.5251,153.9677,36.0551],[55.7887,154.1186,38.1109],[52.8465,154.1186,39.6386],[53.0351,154.0997,42.9014],[57.0524,154.0997,43.2409],[57.9766,154.0997,44.6555],[55.3738,154.0997,46.5792],[59.1836,154.0243,47.3148],[57.8445,153.8734,50.6342],[63.4272,153.4396,51.9733],[60.2209,153.2321,54.1611],[60.9565,152.9681,55.2928],[64.4268,152.9115,55.6322],[63.9742,152.8172,58.103],[67.8406,152.7606,58.235],[67.9726,152.6852,60.2908],[65.3887,152.6098,63.6291],[66.0488,152.4589,66.2318],[71.3109,152.2325,66.0998],[69.6323,152.1382,68.5705],[73.6684,151.9874,69.042],[78.7419,151.8176,68.8345],[80.4016,151.9496,71.2298],[83.1741,152.0817,72.7009],[86.9273,152.6663,77.416],[87.776,152.9115,77.7933],[88.8134,152.6663,79.1512],[82.9666,152.572,83.1119],[85.626,152.4966,82.7724],[81.3635,152.6098,85.7146],[81.8916,152.572,87.1858],[82.7403,152.572,87.3178],[82.6649,152.6098,87.8647],[86.0786,152.5532,85.7995],[89.4923,152.4966,83.7343],[92.4346,152.3646,86.4691],[97.8475,152.1948,85.1866],[103.4679,152.0628,85.2997],[107.4663,151.8553,89.2981],[106.8534,151.6102,96.2411],[106.2404,151.365,103.1841],[109.2392,151.1009,108.3825],[112.238,150.8369,113.5809],[112.6435,150.62,118.3833],[113.049,150.4031,123.1856],[111.031,150.4785,125.9958],[115.8404,150.4408,127.184]],"expectedDistance":721.74,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"6e866f6fc0fe15f33771ca2b5b84bf3181a99f63f13f0a585ceb7448ce97dc85","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"steamvault","mapId":545,"legs":[{"id":"leg-01-creature-142044","objectiveId":"creature-142044","objectiveName":"Hydromancer Thespia","checkpoints":[[15.0654,-3.9986,7.9777],[12.9046,-4.0825,0.9316],[10.7437,-4.1663,-6.1145],[8.5829,-4.2501,-13.1607],[6.4221,-4.3339,-20.2068],[4.2612,-4.4177,-27.2529],[2.1004,-4.5015,-34.2991],[-0.0604,-4.5853,-41.3452],[-2.2213,-4.6691,-48.3913],[-4.3821,-4.7529,-55.4375],[-6.543,-4.8367,-62.4836],[-8.7038,-4.9205,-69.5297],[-10.8646,-5.0043,-76.5759],[-13.0255,-5.0881,-83.622],[-15.1863,-5.1719,-90.6681],[-17.3471,-5.2557,-97.7143],[-19.508,-5.3395,-104.7604],[-21.6688,-5.4233,-111.8065],[-23.8297,-5.5071,-118.8527],[-25.9905,-5.5909,-125.8988],[-28.1513,-5.6747,-132.9449],[-30.3122,-5.7585,-139.9911],[-32.473,-5.8423,-147.0372],[-34.6338,-5.9261,-154.0833],[-36.7947,-6.0099,-161.1295],[-38.9555,-6.0937,-168.1756],[-41.1164,-6.1775,-175.2217],[-43.2772,-6.2613,-182.2679],[-45.438,-6.3451,-189.314],[-47.5989,-6.4289,-196.3601],[-49.7597,-6.5127,-203.4063],[-51.9206,-6.5965,-210.4524],[-54.0814,-6.6803,-217.4985],[-56.2422,-6.7641,-224.5447],[-58.4031,-6.8479,-231.5908],[-60.5639,-6.9317,-238.6369],[-62.7247,-7.0155,-245.6831],[-64.8856,-7.0993,-252.7292],[-67.0464,-7.1831,-259.7753],[-69.2073,-7.2669,-266.8215],[-71.3681,-7.3507,-273.8676],[-73.5289,-7.4345,-280.9137],[-75.6898,-7.5183,-287.9599],[-77.8506,-7.6021,-295.006],[-80.0114,-7.6859,-302.0521],[-82.1723,-7.7697,-309.0983],[-84.3331,-7.8535,-316.1444]],"expectedDistance":339.04,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-142043","objectiveId":"creature-142043","objectiveName":"Mekgineer Steamrigger","checkpoints":[[-84.3331,-7.8535,-316.1444],[-79.6234,-7.8535,-318.0546],[-74.9137,-7.8535,-319.9648],[-70.204,-7.8535,-321.875],[-64.4735,-7.8535,-320.1804],[-58.7429,-7.8535,-318.4858],[-56.0005,-7.7888,-314.0229],[-52.7278,-7.7888,-319.1584],[-52.1974,-7.8276,-321.1635],[-49.662,-7.8276,-318.1624],[-48.6013,-7.8535,-315.7563],[-48.5236,-7.8276,-313.9712],[-46.2599,-7.8276,-311.6427],[-44.9663,-7.8535,-311.6945],[-44.824,-8.164,-308.9262],[-42.1592,-8.3321,-309.4566],[-39.3392,-9.0048,-306.1192],[-34.8764,-9.1988,-307.154],[-32.949,-9.8327,-303.2862],[-33.35,-10.2337,-300.4792],[-31.6166,-10.6606,-299.7418],[-32.6514,-10.8029,-298.8493],[-32.6385,-11.2686,-297.4651],[-31.8106,-11.592,-296.9089],[-32.4962,-12.0318,-295.486],[-31.0991,-13.5711,-292.3038],[-28.5379,-14.5413,-290.4669],[-26.5846,-16.4429,-286.7672],[-24.3079,-16.8051,-286.0299],[-23.5835,-17.6718,-284.3612],[-20.8378,-17.8399,-283.805],[-21.3035,-18.2668,-283.0935],[-19.0753,-18.3962,-282.175],[-20.398,-19.0947,-281.2307],[-18.4803,-19.03,-280.5581],[-19.8288,-19.9226,-279.1481],[-18.2992,-20.3236,-277.2336],[-19.8547,-21.5654,-275.0216],[-19.7124,-22.0441,-273.6762],[-15.9578,-20.5435,-274.4006],[-16.6175,-21.0092,-273.4175],[-11.9316,-19.3017,-273.9867],[-13.0699,-20.1684,-272.7966],[-12.0221,-20.1037,-272.1239],[-12.1385,-20.4659,-270.895],[-9.9136,-20.0908,-269.705],[-9.1116,-20.5306,-267.7128],[-6.7443,-20.6987,-265.5008],[-7.3523,-21.3067,-262.6808],[-5.6448,-21.3714,-260.2101],[-5.6189,-21.6431,-258.0239],[-3.6915,-21.8112,-256.4199],[-4.2089,-22.0053,-255.2816],[-3.3551,-22.0053,-253.7681],[-3.9243,-22.3028,-251.8536],[-2.9929,-22.2381,-250.3918],[-3.1611,-22.3028,-249.1629],[-2.2556,-21.9664,-249.0077],[-2.1133,-21.6689,-247.2355],[-1.5312,-21.3973,-247.5072],[-0.2117,-21.3326,-245.3727],[3.2421,-21.0221,-243.3677],[5.9716,-20.854,-239.8362],[8.2483,-20.6599,-238.3098],[7.2393,-21.0351,-236.7316],[7.3298,-21.242,-234.2738],[8.8174,-20.9704,-235.1017],[8.9468,-21.2291,-231.4927],[11.935,-20.7893,-232.023],[11.8703,-21.0609,-228.5562],[16.4754,-20.3624,-229.0219],[15.4664,-20.6987,-224.0805],[17.0705,-20.4918,-221.1311],[21.4298,-19.9291,-222.7804],[25.7892,-19.3664,-224.4297],[26.3842,-19.1723,-220.2903],[29.1913,-18.4997,-218.6862],[32.2571,-18.228,-220.4196],[34.5984,-18.0598,-218.8803],[35.5298,-18.034,-215.9568],[39.3329,-18.2797,-213.0171],[40.0056,-18.4479,-215.1515],[40.937,-18.4867,-215.2162],[42.4763,-18.4867,-211.8109],[42.334,-18.4867,-215.8113],[44.8695,-18.4867,-212.7455],[44.8695,-18.4867,-216.8882],[46.7322,-18.4867,-213.6283],[48.5044,-18.4867,-217.0822],[49.384,-18.3832,-221.2734],[52.9414,-18.2409,-222.2306],[55.9716,-18.3703,-221.1052],[57.8473,-18.2021,-222.7481],[60.8904,-18.2409,-222.5152],[60.6576,-18.0081,-224.8437],[63.0669,-18.0728,-224.8825],[63.0539,-18.0986,-226.8875],[66.2491,-18.435,-229.617],[69.8581,-18.5385,-229.216],[71.7338,-18.7972,-232.2817],[75.6663,-18.8231,-230.2249],[78.4604,-18.9524,-231.829],[76.326,-18.9524,-235.1535],[80.6595,-18.9265,-234.4938],[79.3789,-18.5643,-237.4431],[82.38,-18.0728,-238.2451],[81.0735,-17.4648,-241.699],[82.2636,-16.9732,-243.2901],[81.0605,-16.3394,-245.6832],[81.8496,-15.5115,-247.6883],[83.2337,-14.7483,-248.9818],[83.0526,-13.6487,-251.6078],[85.4975,-13.0149,-252.9531],[83.2467,-12.4069,-254.3114],[89.9733,-12.5363,-254.8417],[96.6611,-11.8248,-258.1533],[94.656,-10.9581,-260.4817],[95.9884,-10.0914,-263.4182],[91.9913,-9.7939,-263.8192],[88.7314,-9.5352,-264.9575],[92.4699,-9.5093,-265.8889],[88.6668,-9.4834,-266.8203],[92.4699,-9.4834,-267.687],[92.4052,-9.4446,-269.084],[88.6021,-9.4446,-269.3557],[92.4699,-9.2894,-270.2677],[96.3377,-9.1342,-271.1796],[96.6611,-8.5391,-272.8354],[91.8748,-7.6724,-275.2673],[94.9406,-7.6401,-278.4301],[98.0064,-7.6077,-281.5929],[94.1451,-7.6207,-283.3651],[90.2837,-7.6336,-285.1373],[87.8453,-7.6465,-288.0414],[85.407,-7.6595,-290.9455],[90.9047,-7.6595,-292.8471],[96.4024,-7.6595,-294.7486],[89.6693,-7.6595,-295.3825],[82.9362,-7.6595,-296.0163],[88.7379,-7.6595,-296.9477],[94.5396,-7.6595,-297.8791],[88.3369,-7.6595,-298.0408],[82.1342,-7.6595,-298.2025],[81.0088,-7.6595,-300.4145],[87.3409,-7.6595,-301.915],[93.6729,-7.6595,-303.4156],[92.9032,-7.6465,-307.1799],[92.1336,-7.6336,-310.9442],[96.4455,-7.5991,-313.4753],[100.7574,-7.5646,-316.0064],[105.0693,-7.5301,-318.5375],[107.0744,-7.4913,-316.7524],[107.0744,-7.4784,-320.8854],[107.0744,-7.4654,-325.0183],[107.6371,-7.5042,-328.7503],[108.1998,-7.5431,-332.4823],[109.1829,-7.5042,-331.4992],[109.0536,-7.4654,-326.8358],[108.9242,-7.4266,-322.1725],[111.0457,-7.362,-327.6831],[115.1204,-7.3231,-328.5369],[113.995,-7.349,-324.281],[118.3932,-7.349,-324.087],[120.5923,-7.349,-328.7568],[124.5312,-7.349,-326.8552],[128.4702,-7.349,-324.9537],[128.9359,-7.349,-319.0291],[134.0714,-7.349,-316.5583],[136.3351,-7.349,-321.1505],[135.7271,-7.349,-314.7473],[138.8576,-7.349,-319.7535],[141.0567,-7.349,-319.7535],[141.2637,-7.3231,-316.0797],[140.0606,-7.2326,-310.9572],[140.1124,-7.1032,-305.9769],[145.9205,-7.0127,-306.3003],[149.9177,-7.0774,-302.6912],[149.5167,-7.2067,-299.095],[154.2512,-7.4654,-297.6721],[154.6651,-7.6983,-293.9466],[158.9598,-7.9053,-291.4371],[161.3012,-8.0475,-289.1216],[167.5621,-8.0864,-289.5872],[164.7938,-8.0864,-288.837],[167.989,-8.0864,-288.2937],[168.0537,-8.0864,-285.8876],[162.4525,-8.0864,-284.1542],[162.5171,-8.0864,-281.7482],[168.1183,-8.0864,-281.6835],[168.0278,-7.8794,-278.2167],[162.4137,-7.8794,-278.0873],[161.4693,-7.7112,-276.134],[166.87,-7.6595,-275.0345],[172.2707,-7.6077,-273.935],[167.6203,-7.6207,-270.2612],[162.9699,-7.6336,-266.5874],[162.142,-7.6465,-261.1027],[161.3141,-7.6595,-255.6179],[167.5492,-7.6595,-253.7551],[173.7842,-7.6595,-251.8924],[180.0839,-7.6595,-252.2869],[186.3837,-7.6595,-252.6815],[189.4494,-7.6336,-255.5403],[190.4843,-7.6659,-259.7444],[191.5192,-7.6983,-263.9485],[193.8864,-7.75,-260.9862],[196.2537,-7.8018,-258.0239],[197.8577,-7.8923,-264.6341],[200.8588,-7.9311,-265.5008],[202.9932,-8.0087,-260.3653],[203.6659,-8.0087,-266.3546],[208.465,-8.0864,-265.6302],[209.267,-8.0864,-259.7573],[211.8542,-8.0475,-259.1494],[214.8585,-7.9699,-265.1516],[214.9232,-7.9311,-259.214],[220.5923,-7.8664,-263.1465],[224.4601,-7.8212,-259.9772],[228.3279,-7.7759,-256.808],[227.7976,-7.8082,-250.7799],[227.2672,-7.8406,-244.7518],[232.7018,-7.8406,-240.9228],[238.1365,-7.8406,-237.0938],[238.1365,-7.9053,-233.0644],[238.1365,-7.9699,-229.0349],[232.0049,-8.0087,-228.3622],[237.8778,-8.0475,-228.0259],[232.2766,-8.0864,-225.7621],[237.8778,-8.0864,-223.8347],[237.8389,-8.0864,-217.7015],[237.8001,-8.0864,-211.5683],[231.992,-8.0864,-207.2316],[234.3916,-8.0475,-203.3945],[236.7912,-8.0087,-199.5574],[242.3923,-7.9699,-199.4152],[241.3316,-7.5948,-197.4748],[240.2579,-6.7281,-191.5373],[241.7197,-7.0256,-193.0119],[240.3873,-6.1201,-186.751],[240.9177,-6.1201,-186.4276],[244.3845,-6.5211,-188.0963],[244.8372,-5.8873,-180.8394],[247.6572,-6.2236,-179.7269],[247.2562,-6.1331,-176.1178],[248.9378,-6.3012,-175.5098],[249.8563,-6.4306,-174.475],[251.4603,-6.5599,-174.475],[252.2623,-6.7669,-173.2719],[255.0565,-7.1679,-171.6808],[255.8456,-7.4654,-169.6887],[256.6605,-7.2973,-168.8608],[258.2257,-7.1032,-169.2619],[259.0278,-6.8057,-168.0588],[261.188,-6.4694,-168.5763],[261.796,-6.0942,-166.623],[264.2021,-5.7579,-167.024],[264.021,-5.6286,-164.9413],[265.4568,-5.538,-164.0875],[265.0558,-5.6415,-162.0825],[267.0609,-6.1072,-160.0904],[268.1087,-5.8097,-160.0774],[269.2212,-5.9002,-158.163],[270.4242,-5.6674,-158.0336],[271.7048,-5.9002,-156.1191],[273.0113,-5.7709,-156.1708],[274.2014,-5.939,-154.9678],[276.3358,-5.9778,-156.7012],[277.2543,-6.146,-155.2912],[279.2593,-6.3788,-155.2912],[278.8066,-6.4435,-152.2901],[280.2683,-6.6375,-150.8801],[279.4663,-6.6375,-149.289],[279.7897,-6.9997,-148.0213],[280.5788,-7.1032,-147.2193],[281.4455,-8.0346,-144.2958],[284.5371,-8.2675,-141.2171],[284.2655,-9.0307,-139.5096],[286.0247,-7.6983,-137.5692],[288.8189,-7.6983,-136.7672],[292.0269,-7.8018,-136.7672],[295.442,-7.8664,-134.0765],[297.0363,-7.8664,-134.0765],[299.4456,-7.9958,-135.6806],[302.2559,-8.0605,-133.2842],[306.46,-8.1122,-132.487],[310.6642,-8.164,-131.6899],[313.8658,-8.164,-129.6897],[317.0674,-8.164,-127.6895],[323.8587,-8.0346,-127.6895],[326.0836,-8.0346,-124.5461],[328.1663,-7.9699,-123.3172],[329.8997,-7.8664,-119.3071]],"expectedDistance":1087.2,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-142045","objectiveId":"creature-142045","objectiveName":"Warlord Kalithresh","checkpoints":[[329.8997,-7.8664,-119.3071],[326.4334,-7.6222,-125.9037],[322.9671,-7.378,-132.5003],[319.5008,-7.1338,-139.0969],[316.0345,-6.8896,-145.6935],[312.5682,-6.6454,-152.2902],[309.1019,-6.4012,-158.8868],[305.6356,-6.157,-165.4834],[302.1693,-5.9128,-172.08],[298.703,-5.6685,-178.6766],[295.2367,-5.4243,-185.2732],[291.7704,-5.1801,-191.8698],[288.3041,-4.9359,-198.4664],[284.8378,-4.6917,-205.063],[281.3715,-4.4475,-211.6597],[277.9052,-4.2033,-218.2563],[274.4389,-3.9591,-224.8529],[270.9726,-3.7148,-231.4495],[267.5063,-3.4706,-238.0461],[264.04,-3.2264,-244.6427],[260.5737,-2.9822,-251.2393],[257.1074,-2.738,-257.8359],[253.6411,-2.4938,-264.4325],[250.1748,-2.2496,-271.0292],[246.7085,-2.0054,-277.6258],[243.2422,-1.7612,-284.2224],[239.7759,-1.5169,-290.819],[236.3096,-1.2727,-297.4156],[232.8433,-1.0285,-304.0122],[229.377,-0.7843,-310.6088],[225.9107,-0.5401,-317.2054],[222.4444,-0.2959,-323.802],[218.9781,-0.0517,-330.3986],[215.5118,0.1925,-336.9953],[212.0455,0.4368,-343.5919],[208.5792,0.681,-350.1885],[205.1129,0.9252,-356.7851],[201.6466,1.1694,-363.3817],[198.1803,1.4136,-369.9783],[194.714,1.6578,-376.5749],[191.2477,1.902,-383.1715],[187.7814,2.1462,-389.7681],[184.3151,2.3905,-396.3648],[180.8488,2.6347,-402.9614],[177.3825,2.8789,-409.558],[173.9162,3.1231,-416.1546],[170.4499,3.3673,-422.7512],[166.9836,3.6115,-429.3478],[163.5173,3.8557,-435.9444],[160.051,4.0999,-442.541],[156.5847,4.3441,-449.1376],[153.1184,4.5884,-455.7343],[149.6521,4.8326,-462.3309],[146.1858,5.0768,-468.9275],[142.7195,5.321,-475.5241],[139.2532,5.5652,-482.1207],[135.7869,5.8094,-488.7173],[132.3206,6.0536,-495.3139],[128.8543,6.2978,-501.9105],[125.388,6.5421,-508.5071],[121.9217,6.7863,-515.1038],[118.4554,7.0305,-521.7004],[114.9891,7.2747,-528.297],[111.5228,7.5189,-534.8936],[108.0565,7.7631,-541.4902],[104.5902,8.0073,-548.0868],[101.1239,8.2515,-554.6834]],"expectedDistance":492.09,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"d5a475d08515bceffeb142180b4623cf308105a6b6a7cdf78f34609002d09093","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"underbog","mapId":546,"legs":[{"id":"leg-01-creature-138367","objectiveId":"creature-138367","objectiveName":"Hungarfen","checkpoints":[[-7.4441,-2.721,-14.7766],[-11.9846,-2.721,-13.7711],[-13.1786,-2.721,-12.6399],[-17.4363,-2.721,-12.6399],[-16.2423,-2.721,-17.7774],[-23.1747,-2.721,-16.8504],[-24.245,-2.721,-21.9172],[-25.3153,-2.721,-26.984],[-32.183,-2.721,-26.0492],[-39.0506,-2.721,-25.1144],[-42.4127,-2.721,-30.0476],[-45.7749,-2.721,-34.9808],[-49.5062,-2.721,-32.5771],[-53.2376,-2.721,-30.1733],[-54.1724,-2.721,-34.6823],[-55.1072,-2.721,-39.1914],[-54.1802,-2.721,-44.3288],[-54.7144,-2.721,-49.8591],[-59.5062,-2.721,-46.2456],[-59.8362,-2.721,-52.4985],[-64.4395,-2.721,-53.4647],[-69.0428,-2.721,-54.431],[-66.5761,-2.721,-60.9667],[-67.9116,-2.721,-63.9047],[-72.1142,-2.721,-64.541],[-76.3169,-2.721,-65.1772],[-72.6798,-2.721,-66.2456],[-69.0428,-2.721,-67.3139],[-72.4127,-2.721,-70.1183],[-75.7827,-2.721,-72.9227],[-71.5486,-2.721,-74.4231],[-67.3146,-2.721,-75.9235],[-65.9791,-2.721,-80.4483],[-69.412,-2.721,-82.2472],[-72.8448,-2.721,-84.0461],[-68.4457,-2.721,-84.3446],[-64.0467,-2.721,-84.6431],[-71.0538,-2.721,-86.8426],[-66.4897,-2.721,-87.2118],[-61.9257,-2.721,-87.581],[-67.9116,-2.721,-91.116],[-62.8134,-2.721,-92.0508],[-57.7152,-2.721,-92.9856],[-57.4481,-2.721,-96.3163],[-53.3554,-2.7053,-96.6305],[-49.2627,-2.6895,-96.9447],[-48.2729,-2.721,-98.0288],[-49.4041,-2.721,-101.0649],[-44.2038,-3.0195,-103.8654],[-45.7277,-3.0509,-109.321],[-43.324,-3.2866,-112.5103],[-47.723,-2.9566,-116.5009],[-46.5133,-2.8624,-120.0987],[-42.507,-3.1295,-122.911],[-40.5117,-3.098,-126.9173],[-43.2925,-2.721,-128.127],[-42.0985,-2.7524,-130.138],[-39.3177,-0.6157,-131.9291],[-40.4803,-0.49,-133.2645],[-39.6633,0.5155,-134.867],[-42.1456,-0.6785,-136.5324],[-44.8165,-2.1868,-137.1765],[-45.0522,-1.6526,-139.4075],[-45.8377,-1.9197,-140.413],[-45.4607,-1.5426,-141.4185],[-46.2619,-2.0768,-142.2354],[-46.0105,-1.8412,-142.9738],[-46.529,-2.1554,-143.7123],[-46.4819,-2.0768,-144.7649],[-44.0781,-0.2701,-145.7075],[-44.4394,-0.5371,-146.5402],[-40.4489,2.4793,-148.8497],[-42.0514,0.6726,-153.5002],[-41.8471,-0.4586,-156.8937],[-42.8998,-2.2968,-160.4287],[-42.0357,-2.1868,-161.5756],[-42.5541,-2.4225,-161.6541],[-42.0042,-2.5481,-162.5654],[-44.8479,-2.8859,-167.4279],[-47.6916,-3.2237,-172.2904],[-50.0325,-3.4803,-176.8309],[-52.3735,-3.7369,-181.3713],[-54.7144,-3.9936,-185.9118],[-55.9084,-4.1978,-189.5096],[-56.9139,-4.2292,-190.578],[-55.5156,-4.2292,-191.1907],[-52.9155,-4.2449,-196.7916],[-50.3153,-4.2606,-202.3926],[-48.5924,-4.2921,-207.7291],[-46.8694,-4.3235,-213.0655],[-45.1464,-4.3549,-218.402],[-40.9451,-4.3759,-224.5764],[-36.7437,-4.3968,-230.7508],[-32.5423,-4.4177,-236.9252],[-30.9477,-4.4177,-241.7249],[-29.353,-4.4177,-246.5246],[-23.9602,-4.4177,-246.7524],[-18.5675,-4.4177,-246.9802],[-17.3577,-4.512,-247.7814],[-16.2265,-5.4075,-249.7924],[-15.441,-5.3761,-249.7924],[-12.4402,-6.413,-252.2276],[-9.9736,-5.7218,-251.0179],[-6.69,-5.219,-250.8765],[-4.2862,-5.2504,-252.6047],[-0.4371,-4.4492,-252.4162],[2.7523,-4.4492,-254.1915],[2.2495,-4.5749,-254.9928],[6.1615,-4.4177,-256.9409],[11.8803,-4.7163,-261.6385],[13.0743,-4.5434,-262.047],[13.6556,-4.7163,-263.131],[18.9974,-4.4177,-265.4877],[23.8206,-4.622,-269.0855],[24.1034,-5.6275,-271.4421],[24.7476,-5.6589,-272.2119],[25.5488,-4.7163,-271.4107],[26.3344,-4.512,-272.0077],[26.3029,-5.4861,-274.0973],[27.5127,-5.816,-276.1083],[31.5033,-4.5749,-278.1192],[36.2794,-4.4806,-283.3039],[41.0791,-4.4492,-281.505],[45.8788,-4.4177,-279.7061],[51.0791,-4.4177,-282.8954],[55.486,-4.4177,-281.6935],[59.8929,-4.4177,-280.4916],[62.9487,-4.2842,-277.7736],[66.0045,-4.1507,-275.0556],[66.8843,-3.9464,-276.7995],[67.7327,-3.7422,-276.5324],[67.9055,-3.7108,-277.6479],[68.6321,-3.5222,-277.915],[71.0241,-2.8938,-274.8357],[72.5677,-2.4539,-274.3015],[74.2959,-1.9511,-272.7461],[75.6785,-1.684,-273.7987],[79.1506,-0.8985,-273.8616],[79.6848,-0.8042,-277.5379],[81.7743,-0.6,-281.7013],[84.1624,-0.3015,-281.8899],[84.8851,-0.5529,-286.9645],[86.1734,-0.3172,-286.2104],[86.5819,-0.4429,-288.4099],[87.9801,-0.0187,-287.2787],[89.3941,0.6412,-284.7493],[90.9024,0.7354,-286.6346],[92.9134,1.0968,-287.4358],[96.1027,1.7724,-284.765],[97.6895,1.9452,-281.6699],[101.413,2.1808,-281.8585],[102.1671,2.2123,-282.9896],[103.4554,2.5422,-282.0156],[104.0367,2.6207,-282.9111],[105.4821,3.5948,-281.1986],[106.4562,3.6891,-282.4555],[107.933,4.6475,-281.5128],[109.3941,6.2814,-277.9936],[110.8395,7.0355,-277.318],[110.9809,7.8054,-276.0297],[109.6141,9.6121,-274.6314],[110.0854,10.6805,-273.4374],[109.8969,12.1101,-272.102],[108.6871,12.7857,-271.7092],[108.7971,13.587,-270.6251],[106.2676,15.2209,-269.0069],[107.0689,15.7551,-267.8129],[105.7649,16.8863,-266.4932],[107.1003,17.4519,-264.8906],[105.0893,18.4102,-264.4193],[108.4829,18.8816,-261.7642],[108.4829,19.4472,-260.9629],[103.094,20.217,-263.5709],[102.6856,21.8509,-261.6228],[101.3501,22.9821,-260.8844],[100.816,23.8148,-259.8317],[100.0304,23.8462,-260.2559],[98.7578,24.2076,-255.3698],[98.5379,24.0505,-256.7838],[97.7366,23.9876,-256.3753],[98.5693,23.9248,-260.5701],[95.6628,23.7834,-260.9158],[93.6361,23.8462,-262.6126],[89.7712,23.2335,-263.6024],[90.3368,23.5948,-266.3203],[90.0225,23.4692,-268.677],[88.8914,22.9036,-269.1483],[89.6141,23.3435,-271.8349],[89.3627,23.2492,-272.6518],[91.8764,24.4589,-274.0187],[91.028,24.019,-278.2292],[93.7146,25.3859,-283.0211],[92.7877,24.8203,-283.8852],[94.1231,25.5744,-284.2936],[93.369,25.0717,-285.8333],[94.7672,25.8729,-286.7917],[94.5787,25.7472,-287.8914],[96.0555,26.5485,-287.8286],[95.977,26.4385,-288.3942],[97.5638,27.2084,-290.2167],[97.988,27.444,-293.2489],[97.4852,26.847,-296.0926],[98.2865,27.5069,-297.6833],[97.8937,26.9098,-298.897],[98.3022,27.1769,-300.0949],[99.1035,27.9468,-300.8962],[99.3077,28.0096,-302.1373],[100.2661,28.6852,-302.86],[100.6431,28.8894,-304.0069],[101.6015,29.1251,-304.274],[101.8372,29.2822,-305.5623],[101.083,29.1879,-306.4735],[101.1145,29.2194,-307.7304],[102.3242,29.8164,-310.9355],[102.8584,30.1777,-314.4233],[101.9,29.5964,-317.3141],[103.1412,30.3034,-320.9747],[104.6808,31.1361,-321.2261],[105.0736,31.3403,-322.8286],[103.911,31.2461,-324.981],[104.9008,31.686,-328.1861],[102.9055,31.3875,-330.5898],[101.79,31.2618,-332.9936],[104.5866,31.9216,-333.8263],[103.0155,31.7174,-335.6959],[106.142,32.5029,-336.9056],[106.142,32.8014,-339.278],[105.3407,33.0371,-341.2733],[107.8859,33.7755,-344.1012],[108.6871,34.0937,-347.7147],[105.8906,34.2861,-350.527],[104.2881,34.6985,-355.3188],[107.0846,34.9656,-358.1154],[106.6761,35.327,-362.9072],[111.4837,35.704,-366.9135],[110.6824,36.3639,-372.9151],[112.3006,36.9923,-378.5082],[111.4994,37.5579,-383.7085],[115.0815,37.4951,-384.1012],[115.4742,37.4637,-386.1122],[118.695,37.4951,-386.1122],[121.9,37.5265,-387.7148]],"expectedDistance":824.92,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-138392","objectiveId":"creature-138392","objectiveName":"Ghaz'an","checkpoints":[[121.9,37.5265,-387.7148],[118.695,37.4951,-386.1122],[115.4742,37.4637,-386.1122],[113.0862,37.5579,-386.8978],[112.2849,37.5893,-385.2953],[110.2896,37.6522,-384.9025],[107.0846,37.9193,-386.8978],[103.8953,38.0293,-387.3063],[103.1097,37.3537,-380.9119],[99.3077,37.118,-379.3094],[95.5057,36.8824,-377.7069],[93.1019,36.4425,-374.3055],[90.6981,36.0025,-370.9041],[84.2881,35.8454,-370.8884],[82.2928,35.8926,-372.8994],[80.6903,35.5312,-371.5796],[79.7319,35.2641,-372.6951],[78.9306,34.9185,-372.2866],[72.988,33.0096,-376.4029],[69.4177,31.7331,-377.7697],[65.2818,31.0104,-380.0321],[64.4177,31.0104,-385.6448],[62.5638,30.979,-385.7234],[62.0296,30.979,-390.7234],[59.0288,30.979,-385.7234],[56.4365,30.979,-390.7234],[51.3619,30.979,-390.7234],[48.7539,30.979,-385.7234],[45.7531,30.979,-390.7234],[45.2189,30.979,-385.7234],[43.4279,31.0104,-387.2474],[42.0139,31.0418,-382.5773],[36.1537,31.576,-386.0494],[33.3414,31.9059,-386.4579],[31.7703,32.0316,-387.3063],[33.6976,32.0683,-382.593],[35.6248,32.1049,-377.8797],[37.552,32.1416,-373.1664],[35.9023,32.283,-374.0305],[36.3265,32.3615,-370.6213],[39.1859,32.3301,-365.8923],[31.9589,31.686,-365.7666],[28.1568,31.1989,-364.1719],[24.3548,30.7119,-362.5773],[21.1498,30.1149,-358.9952],[17.929,29.6907,-356.7328],[23.4121,30.5548,-352.8208],[16.9785,30.0049,-350.7862],[10.5449,29.455,-348.7517],[10.7177,29.8478,-344.9025],[3.8992,29.4079,-343.3157],[5.8944,30.1306,-338.1154],[6.68,30.6648,-333.7163],[2.6894,30.3977,-332.9308],[2.438,30.9004,-327.699],[-1.1598,30.7747,-326.0651],[-2.4323,30.979,-323.7084],[-1.6782,31.1047,-322.0117],[-3.4221,31.0732,-321.2261],[-2.1495,31.1361,-319.9692],[-2.4952,31.1047,-319.2937],[-8.8424,31.3403,-321.9645],[-3.8463,31.1047,-318.838],[-6.2501,31.2146,-319.2465],[-1.1126,31.0575,-315.7744],[-7.7112,31.4346,-317.7069],[-10.4135,31.5289,-317.3612],[-11.2148,31.5917,-315.7587],[-9.6751,31.7488,-311.6267],[-11.2776,31.8431,-310.4327],[-11.7646,32.0473,-305.578],[-15.8338,32.1573,-304.7611],[-15.3624,32.2201,-300.6291],[-18.3475,32.283,-299.7807],[-20.28,32.2044,-296.7917],[-25.2014,32.3772,-295.6723],[-27.0278,32.2673,-292.5262],[-30.6138,32.4715,-293.7516],[-32.1692,32.3301,-290.798],[-35.3585,32.5344,-291.6306],[-36.9767,32.7386,-294.6629],[-40.0247,32.8014,-292.8247],[-41.6272,32.77,-295.7665],[-44.5337,32.8014,-296.175],[-45.822,32.8957,-292.5262],[-47.9273,32.9271,-293.4688],[-49.3727,33.1628,-298.2803],[-50.8338,33.2413,-295.0281],[-51.1009,33.0214,-289.5764],[-51.965,33.2413,-294.3879],[-52.5463,33.1471,-290.5348],[-53.0569,33.3906,-295.1401],[-53.5675,33.6341,-299.7453],[-55.1386,33.5084,-297.8247],[-57.4324,33.4142,-302.2748],[-59.7419,33.2256,-301.7249],[-61.1087,33.1785,-298.9087],[-65.6021,32.6758,-302.8247],[-69.1999,32.2987,-302.8247],[-74.8244,32.2516,-305.6389],[-80.4489,32.2044,-308.4531],[-86.3248,32.4087,-306.4578],[-91.5251,32.4872,-305.6566],[-95.2564,32.4715,-306.992],[-98.9878,32.4558,-308.3274],[-99.1292,32.6129,-311.3911],[-101.3444,32.6443,-312.318],[-103.5911,32.7072,-314.439],[-107.1889,32.6443,-316.4186],[-110.8024,32.5501,-316.7642],[-110.1268,32.6758,-321.289],[-111.0381,32.8014,-323.6456],[-109.247,32.8329,-326.0179],[-108.2415,32.8329,-326.4421],[-108.3986,32.8643,-328.1703],[-105.8692,32.8329,-329.6315],[-104.8794,32.8957,-333.2135],[-106.4819,33.0685,-335.743],[-105.7121,33.1706,-339.6707],[-104.9422,33.2728,-343.5985],[-101.3444,33.2413,-348.7988],[-100.1661,33.3278,-352.7501],[-98.9878,33.4142,-356.7014],[-96.9611,33.4142,-357.2041],[-94.9187,33.3513,-358.5081],[-94.1331,33.3513,-361.179],[-96.5683,33.6047,-364.2426],[-99.0035,33.858,-367.3063],[-100.8574,34.2547,-374.3605],[-96.4583,34.0819,-376.2301],[-97.2439,34.4157,-383.1586],[-93.6775,34.3843,-385.9394],[-93.5989,34.4786,-387.9347],[-95.4371,35.4055,-394.3683],[-96.7097,35.4841,-392.3063],[-97.4481,36.1597,-396.6464],[-98.108,36.3953,-396.9135],[-100.0404,36.2225,-391.5796],[-100.8417,37.338,-398.0604],[-101.6429,37.5579,-398.0447],[-102.4442,38.2963,-401.6464],[-103.7011,38.2963,-399.0345],[-104.9108,38.5948,-398.6417],[-105.8063,38.5163,-396.0651],[-106.7019,38.9719,-397.3102],[-107.3617,39.0505,-396.4461],[-110.8652,40.4644,-399.494],[-113.9132,41.3914,-399.9182],[-115.0601,42.3812,-404.333],[-116.2541,42.8839,-405.1185],[-118.0451,43.1824,-403.3118],[-119.302,44.0937,-406.5797],[-120.5118,44.3608,-405.7941],[-121.8472,44.8635,-406.3283],[-122.6956,45.6019,-409.0463],[-124.8323,46.1989,-408.3079],[-125.9006,46.8902,-410.1618],[-125.4607,47.063,-411.89],[-126.7019,47.4558,-411.9685],[-128.6029,47.6443,-409.6433],[-128.54,47.7386,-411.45],[-130.174,47.9743,-413.2411],[-133.3633,48.2885,-410.7745],[-135.3586,48.7127,-417.4516],[-141.2345,48.6656,-415.5192],[-143.4026,48.642,-418.6535],[-145.5707,48.6184,-421.7878],[-151.6351,48.5713,-419.8554],[-153.3633,48.4456,-420.7038],[-153.3005,48.3513,-424.5687],[-154.9658,48.1942,-425.7784],[-156.4269,48.1628,-422.6519],[-157.1654,48.1628,-418.7713],[-158.2337,48.1,-418.1743],[-163.5597,48.1628,-418.9756],[-168.3672,48.2256,-421.835],[-173.976,48.2885,-422.9033],[-176.9611,48.2885,-419.1013]],"expectedDistance":689.75,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-138500","objectiveId":"creature-138500","objectiveName":"Swamplord Musel'ek","checkpoints":[[-176.9611,48.2885,-419.1013],[-179.5069,47.86,-412.1777],[-182.0527,47.4315,-405.2541],[-184.5986,47.003,-398.3305],[-187.1444,46.5745,-391.4069],[-189.6902,46.146,-384.4833],[-192.236,45.7176,-377.5597],[-194.7818,45.2891,-370.6362],[-197.3276,44.8606,-363.7126],[-199.8734,44.4321,-356.789],[-202.4192,44.0036,-349.8654],[-204.965,43.5751,-342.9418],[-207.5108,43.1466,-336.0182],[-210.0567,42.7181,-329.0946],[-212.6025,42.2897,-322.171],[-215.1483,41.8612,-315.2475],[-217.6941,41.4327,-308.3239],[-220.2399,41.0042,-301.4003],[-222.7857,40.5757,-294.4767],[-225.3315,40.1472,-287.5531],[-227.8773,39.7187,-280.6295],[-230.4231,39.2902,-273.7059],[-232.9689,38.8618,-266.7824],[-235.5148,38.4333,-259.8588],[-238.0606,38.0048,-252.9352],[-240.6064,37.5763,-246.0116],[-243.1522,37.1478,-239.088],[-245.698,36.7193,-232.1644],[-248.2438,36.2908,-225.2408],[-250.7896,35.8623,-218.3172],[-253.3354,35.4338,-211.3937],[-255.8812,35.0054,-204.4701],[-258.427,34.5769,-197.5465],[-260.9729,34.1484,-190.6229],[-263.5187,33.7199,-183.6993],[-266.0645,33.2914,-176.7757],[-268.6103,32.8629,-169.8521],[-271.1561,32.4344,-162.9285],[-273.7019,32.0059,-156.005],[-276.2477,31.5775,-149.0814],[-278.7935,31.149,-142.1578],[-281.3393,30.7205,-135.2342],[-283.8851,30.292,-128.3106],[-286.431,29.8635,-121.387]],"expectedDistance":317.74,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-138323","objectiveId":"creature-138323","objectiveName":"The Black Stalker","checkpoints":[[-286.431,29.8635,-121.387],[-284.31,29.8321,-128.1113],[-280.0602,29.8792,-129.0697],[-275.8104,29.9263,-130.028],[-271.1049,29.9578,-126.768],[-266.3995,29.9892,-123.508],[-265.1426,29.9892,-126.5873],[-261.7019,29.8164,-123.4609],[-258.3241,29.5964,-121.387],[-254.9462,29.3765,-119.3132],[-252.1497,29.078,-121.1828],[-250.1387,28.8109,-121.1828],[-246.2267,28.1667,-119.5488],[-240.9792,27.2712,-123.6808],[-235.7946,26.3757,-126.4774],[-233.3123,25.9515,-130.4994],[-230.7671,25.8101,-128.5669],[-227.6878,25.8415,-128.2998],[-227.5464,25.7001,-126.7916],[-225.0955,25.8101,-127.42],[-223.493,25.9829,-129.0068],[-220.8182,26.0772,-129.4624],[-220.4254,26.4071,-132.259],[-218.5205,27.1455,-134.4271],[-216.6469,27.444,-134.2071],[-214.9816,28.1824,-136.9408],[-214.5417,27.7897,-133.8458],[-213.222,28.0882,-134.4742],[-210.6768,28.0882,-131.8976],[-207.3304,28.7009,-133.5787],[-203.5597,28.7009,-133.4059],[-201.5487,28.968,-135.0555],[-197.401,29.2351,-137.1608],[-195.7985,29.0308,-135.9511],[-194.8245,29.2351,-137.2236],[-194.4945,29.5807,-139.4075],[-193.4419,29.6593,-139.8788],[-193.3319,29.5179,-138.7162],[-192.8606,29.6907,-140.0987],[-191.6508,29.7535,-140.3344],[-189.2628,29.5179,-138.7319],[-188.0688,29.1094,-136.3281],[-184.9109,28.8423,-135.3069],[-183.654,28.8737,-135.7782],[-182.837,27.8761,-130.6957],[-182.02,26.8784,-125.6133],[-182.0515,25.8886,-119.7845],[-182.0829,25.9829,-115.9039],[-175.72,25.7158,-117.255],[-174.2903,25.8336,-113.7888],[-172.8606,25.9515,-110.3226],[-168.8543,25.9043,-109.7492],[-164.848,25.8572,-109.1757],[-162.24,25.975,-105.9766],[-159.632,26.0929,-102.7774],[-155.1701,26.0457,-101.8092],[-150.7082,25.9986,-100.8411],[-154.7773,26.1322,-100.0084],[-158.8464,26.2657,-99.1757],[-151.9415,26.1479,-99.0107],[-145.0365,26.03,-98.8458],[-148.9014,26.14,-98.2173],[-152.7663,26.25,-97.5889],[-157.3068,26.4621,-95.7664],[-161.8472,26.6742,-93.944],[-168.7129,26.7527,-92.2786],[-171.0381,26.7527,-87.3454],[-167.3068,26.8706,-85.8921],[-163.5754,26.9884,-84.4388],[-169.6398,26.8627,-81.878],[-174.0703,26.7449,-81.9644],[-178.5008,26.627,-82.0508],[-178.8307,26.627,-80.4797],[-182.9627,26.5171,-79.4113],[-182.8449,26.5171,-75.4443],[-182.727,26.5171,-71.4773],[-186.8433,26.4385,-65.3186],[-191.3052,26.36,-67.7853],[-193.3005,26.3285,-62.5849],[-194.2903,26.2971,-63.5747],[-196.6941,26.3757,-59.8984],[-197.9666,26.7213,-55.2794],[-200.4333,26.8941,-53.4098],[-201.1717,27.1926,-49.1678],[-202.3814,27.1455,-49.8591],[-202.9313,27.444,-44.9573],[-202.3186,27.5854,-40.8253],[-202.9784,27.6168,-37.4789],[-204.3767,27.6168,-36.819],[-204.7538,27.5854,-34.4624],[-206.0263,27.5854,-33.3155],[-209.9619,27.5854,-35.6093],[-213.8975,27.5854,-37.9031],[-211.2424,27.5854,-34.2424],[-216.7137,27.5854,-34.4467],[-214.2471,27.5854,-30.5818],[-219.6399,27.5854,-30.3775],[-214.2942,27.5854,-25.9156],[-217.9647,27.5854,-23.6768],[-221.6352,27.5854,-21.438],[-218.4674,27.5854,-19.1756],[-215.2997,27.5854,-16.9133],[-219.1352,27.5854,-15.68],[-222.9706,27.5854,-14.4467],[-218.0668,27.5854,-13.7868],[-213.163,27.5854,-13.1269],[-215.0641,27.5854,-8.1525],[-216.9651,27.5854,-3.178],[-211.2993,27.5854,-2.2412],[-205.6336,27.5854,-1.3045],[-207.5346,27.5854,3.67],[-209.4356,27.5854,8.6445],[-204.8009,27.6011,7.7411],[-200.1662,27.6168,6.8377],[-196.3327,27.6325,3.8369],[-192.4992,27.6483,0.8361],[-187.1889,27.3183,4.8581],[-187.0554,27.3812,10.1606],[-186.9219,27.444,15.463],[-185.4922,27.3812,18.9351],[-185.9478,27.5147,22.855],[-186.4034,27.6483,26.7749],[-186.2306,27.7425,30.4984],[-184.3767,27.7425,33.6406],[-182.0515,27.6168,33.562],[-181.046,27.5226,34.489],[-180.3076,27.3183,34.0333],[-179.3492,27.0355,28.6445],[-179.0664,27.0984,31.5667],[-174.9187,27.0355,29.3515],[-172.5306,27.0355,23.7584],[-166.9218,27.0984,22.2816],[-160.5118,27.0355,19.485],[-156.1441,26.9884,14.5911],[-151.7765,26.9413,9.6971],[-146.5762,26.9413,10.0977],[-141.3759,26.9413,10.4984]],"expectedDistance":564.69,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"e07a1fe2566dc974a644116f39eafefaeac4ab85091c1968a98ad6a2baa492be","generationStatus":"Rejected","generationIssues":["endpoint-snap-distance-exceeded","disconnected-navigation-leg","origin-snap-distance-exceeded"]},{"schemaVersion":1,"id":"primary","dungeonId":"slave-pens","mapId":547,"legs":[{"id":"leg-01-creature-79362","objectiveId":"creature-79362","objectiveName":"Mennu the Betrayer","checkpoints":[[-119.8356,-0.5681,-132.2957],[-121.4928,-0.6205,-129.6093],[-124.7069,-1.3182,-129.6093],[-126.9747,-1.4229,-130.3419],[-129.3122,-1.4578,-129.3476],[-128.2481,-1.4229,-127.4287],[-126.2071,-1.3182,-126.3646],[-126.8177,-1.3182,-125.4749],[-126.5909,-1.2485,-124.5329],[-122.6616,-0.1843,-123.1548],[-123.7431,-0.3239,-120.9743],[-119.8835,0.6704,-120.7301],[-120.3371,0.5658,-120.0672],[-116.0938,1.595,-119.9102],[-114.1051,0.1994,-116.369],[-113.1108,-1.1612,-112.6359],[-114.1051,-1.4578,-110.6472],[-113.4422,-1.4927,-110.6472],[-114.5761,-1.4927,-109.5133],[-114.9773,-1.4927,-104.847],[-115.3785,-1.4927,-100.1806],[-115.082,-1.4927,-94.9822],[-114.7854,-1.4927,-89.7837],[-112.6223,-1.4927,-94.5461],[-110.4592,-1.4927,-99.3084],[-110.4592,-1.4927,-93.1418],[-110.4592,-1.4927,-86.9752],[-107.86,-1.4578,-85.1086],[-106.5953,-1.4578,-90.8042],[-105.3306,-1.4578,-96.4998],[-104.3886,-1.4578,-96.6394],[-104.2723,-1.4345,-89.6442],[-104.156,-1.4113,-82.649],[-104.0397,-1.388,-75.6538],[-98.2482,-1.9637,-77.9216],[-94.6546,-2.2079,-75.113],[-91.4448,-2.644,-76.2992],[-87.8339,-2.7836,-75.4968],[-84.2229,-3.2371,-77.0842],[-83.8391,-3.3418,-78.6717],[-81.048,-3.429,-78.6891],[-80.263,-3.3069,-79.4916],[-78.6581,-3.4639,-79.0903],[-77.4545,-3.3767,-79.8928],[-75.4483,-3.5337,-79.8928],[-73.0585,-3.6907,-77.8867],[-71.0524,-3.6209,-78.7066],[-69.0637,-3.5686,-77.9216],[-66.6389,-3.7604,-73.5081],[-63.4466,-3.7604,-72.3045],[-62.6442,-3.7256,-71.2229],[-61.8417,-3.6907,-71.6939],[-61.0393,-3.6907,-71.2927],[-60.0624,-3.7256,-70.0323],[-59.0506,-3.6907,-70.2766],[-57.2539,-3.7256,-69.1034],[-56.2072,-3.7256,-69.2255],[-55.7885,-3.7256,-68.2094],[-54.5849,-3.7256,-67.8082],[-53.8348,-3.7604,-66.8662],[-52.7532,-3.7256,-67.0057],[-50.782,-3.7256,-64.3193],[-49.055,-3.4116,-63.9355],[-48.113,-3.7604,-61.9992],[-47.1187,-3.3243,-62.7319],[-45.915,-2.8533,-62.7319],[-45.3045,-2.958,-61.5631],[-45.3045,-3.6732,-59.9408],[-44.2055,-3.3069,-59.7838],[-43.7694,-3.4988,-58.929],[-42.9669,-3.0976,-58.9464],[-41.0655,-3.4988,-56.5391],[-39.5129,-3.1673,-55.789],[-39.0943,-3.429,-54.8645],[-37.8034,-3.0976,-54.5156],[-36.5474,-3.429,-52.7711],[-35.3437,-3.1324,-52.7711],[-34.6111,-3.4639,-51.3407],[-32.6747,-3.0976,-51.1837],[-32.2735,-3.4988,-49.5788],[-30.721,-3.3069,-49.3171],[-30.7558,-3.6732,-47.782],[-29.1161,-3.7604,-46.0725],[-27.9822,-3.7604,-45.7934],[-27.3193,-3.5337,-44.5025],[-25.2958,-3.5686,-43.8919],[-24.3538,-3.7953,-44.3629],[-23.5862,-3.3592,-45.427],[-22.7838,-3.2371,-45.427],[-21.9464,-3.7256,-43.1593],[-19.6089,-3.4988,-42.8627],[-18.4052,-3.4988,-43.2639],[-17.7423,-3.7256,-42.6708],[-17.7598,-3.7256,-41.8858],[-16.7655,-3.6907,-41.9207],[-16.4689,-3.586,-41.3974],[-15.1955,-3.6558,-42.3394],[-13.3289,-3.272,-39.9844],[-13.4685,-2.4347,-36.5653],[-10.8605,-1.6846,-33.5998],[-8.7803,-1.9637,-33.6695],[-4.4192,-1.4229,-30.4423],[-0.8257,-2.2602,-32.4484],[1.9829,-3.1324,-34.943],[2.4364,-2.5045,-32.3263],[1.3026,-1.6671,-29.0817],[3.2738,-1.8067,-29.0119],[3.047,-1.702,-28.3839],[8.1582,-1.8067,-27.093],[10.1643,-1.7369,-24.6857],[12.9729,-1.7718,-24.3019],[16.1652,-1.8416,-22.697],[19.9855,-2.016,-23.4471],[22.9859,-2.016,-21.7027],[25.777,-1.9113,-20.9002],[27.19,-2.016,-22.383],[31.0627,-1.8765,-22.6098],[33.2956,-1.702,-20.6735],[38.1102,-1.6322,-22.2784],[40.8141,-1.5276,-22.0865],[41.6165,-1.4927,-19.2779],[46.5707,-1.6322,-19.4698],[51.3679,-2.2079,-15.8937],[57.3688,-2.7138,-16.2949],[61.3636,-3.1499,-13.5038],[63.7709,-3.272,-14.2888],[64.9571,-3.6732,-11.8989],[69.1438,-4.2314,-14.0969],[71.1324,-4.9641,-11.7071],[74.6736,-5.9933,-10.5034],[77.0635,-6.3422,-11.3058],[79.2789,-7.1447,-7.503],[80.8141,-7.2144,-7.5204],[82.6806,-7.0574,-3.9966],[83.6052,-7.3017,-5.1131],[85.0705,-7.4063,-4.8514],[86.0125,-6.9877,-9.2474],[88.4198,-6.4818,-11.6547],[90.2863,-7.1098,-8.8462],[92.5541,-6.9353,-10.2941],[92.9553,-7.4063,-8.6892],[93.7578,-7.511,-9.5091],[98.4852,-9.0635,-7.7123],[99.6889,-9.2903,-8.1135],[100.8751,-9.3601,-7.7123],[104.2593,-9.5694,-9.0555],[105.6548,-9.1682,-7.3809],[108.2366,-9.2031,-9.1951],[110.3474,-9.0984,-9.8231],[111.7604,-9.2031,-13.4864],[114.1677,-9.0286,-14.7075],[114.9091,-8.0954,-18.9814],[115.6505,-7.1621,-23.2552],[116.6797,-7.0574,-23.7786],[116.9065,-6.8132,-24.8601],[116.1389,-6.7609,-25.0869],[116.7844,-6.1503,-27.7908],[116.1389,-5.6968,-30.6691],[116.5401,-5.4002,-32.6752],[115.476,-5.0688,-34.9953],[114.0282,-5.1037,-35.2919],[112.7722,-4.7373,-37.5771],[113.4874,-4.5454,-38.711],[112.7024,-4.4233,-39.9146],[114.7783,-3.9174,-41.4846],[112.9466,-3.8128,-42.9499],[115.8773,-2.9406,-45.741],[112.9292,-3.1673,-46.6307],[114.691,-2.6615,-48.5321],[111.0452,-3.3243,-49.0031],[114.691,-2.6266,-50.4161],[114.3073,-2.7661,-53.2247],[111.1324,-3.4639,-56.0856],[115.4411,-2.7312,-58.615],[115.5458,-2.7312,-59.7838],[118.5811,-2.2951,-60.6037],[114.9876,-2.958,-62.4179],[109.0565,-3.6558,-66.3647],[109.3531,-3.3592,-69.9102],[107.347,-3.3941,-73.9094],[104.9396,-3.6907,-75.0956],[104.2767,-3.6907,-77.3982],[102.8289,-3.6209,-78.881],[101.224,-3.6558,-82.5443],[101.9741,-3.5686,-84.6377],[98.241,-3.4464,-87.5683],[99.026,-3.5337,-87.8649],[97.1769,-3.4813,-92.1736],[98.2759,-3.8128,-95.8718],[97.8747,-3.8826,-99.4654],[96.8454,-3.9523,-100.9656],[97.7351,-4.2489,-102.6926],[97.3688,-3.7604,-107.0886],[94.5602,-3.1324,-109.8797],[94.5428,-3.0278,-112.0253],[91.7866,-2.5045,-113.8221],[90.2515,-2.173,-115.5665],[92.2576,-2.3998,-116.2992],[90.6701,-2.173,-117.7471],[92.1703,-2.3475,-118.8112],[87.7744,-1.7718,-120.8871],[90.1991,-1.8765,-121.3232],[90.234,-1.545,-123.3293],[86.4137,-1.4055,-125.2307],[88.35,-1.3357,-128.2486],[87.9488,-1.388,-130.6385],[88.3326,-1.388,-133.761],[84.8611,-1.4578,-131.9643],[83.5354,-1.4229,-136.3254],[79.811,-1.4403,-134.7554],[76.0866,-1.4578,-133.1854],[74.2201,-1.4403,-136.4824],[72.3535,-1.4229,-139.7793],[67.8703,-1.4578,-141.8901],[65.4804,-1.4229,-141.4889],[63.7534,-1.4578,-147.4898],[62.951,-1.388,-148.676],[59.7412,-1.2485,-149.4784],[58.1364,-1.2136,-151.8857],[55.7465,-1.2485,-153.0894],[50.7574,-1.2833,-154.2931],[47.1115,-1.2485,-159.7008],[46.9371,-1.2485,-161.8116],[46.1521,-1.2136,-162.5443],[42.8027,-1.3357,-162.8234],[42.9772,-1.4055,-167.8473],[40.5524,-1.5276,-168.3009],[38.5114,-1.4578,-165.9982],[39.8546,-1.6322,-169.4697],[39.2092,-1.702,-169.5743],[37.3252,-1.5276,-166.5739],[35.7901,-1.4927,-167.8473],[32.999,-1.4578,-168.7021],[29.8416,-1.4927,-172.2782],[30.5219,-1.5625,-174.0575],[26.1259,-1.4927,-177.1147],[27.9925,-2.1032,-182.1256],[24.5908,-2.173,-186.0375],[27.7134,-2.3823,-189.5961],[30.7661,-2.6091,-191.9686],[26.9109,-2.173,-197.0274],[24.1024,-1.7718,-197.7601],[22.48,-1.5973,-200.5512],[23.4918,-1.7718,-202.2084],[24.5036,-2.016,-202.0165],[25.0967,-2.1381,-205.017],[24.521,-2.0335,-207.7208],[24.8874,-2.173,-210.948],[26.3178,-2.4347,-211.8377],[25.4456,-2.3126,-212.9367],[26.9981,-2.5917,-216.2163],[27.6785,-2.6963,-219.1469],[26.562,-2.7661,-222.8975],[28.289,-2.9057,-223.3684],[27.4866,-2.8359,-225.5839],[28.76,-2.8708,-227.1015],[28.1669,-2.6963,-228.7064],[26.9632,-2.6615,-229.9101],[26.9632,-2.5219,-231.4975],[28.4111,-2.4347,-232.1953],[27.3994,-2.3475,-234.655],[27.8529,-2.2253,-236.1552],[26.876,-2.1905,-237.3937],[27.9576,-2.0509,-238.1264],[27.2249,-2.0858,-238.7021],[28.132,-1.9462,-239.6441],[27.1202,-1.9811,-240.0453],[28.4809,-1.8765,-240.6907],[28.2192,-1.6671,-242.9236],[26.0038,-1.4927,-246.2904],[22.7766,-1.7369,-244.197],[20.1076,-1.6322,-246.5869],[18.3108,-1.3182,-253.6868],[15.5023,-1.388,-253.6868],[12.3623,-1.1263,-256.9489],[10.0422,-0.8647,-260.5599],[11.211,-0.8996,-261.8333],[8.071,-0.603,-263.037],[7.8442,-0.4286,-267.59],[8.8385,-0.3937,-272.1778],[9.2049,-0.3588,-277.6379],[8.2629,-0.5681,-280.9916],[8.8036,-0.8821,-284.7814],[7.129,-0.917,-286.7221],[7.6349,-0.7426,-287.7513],[7.0767,-0.3065,-289.1992],[8.4199,0.3215,-289.74],[8.4199,1.5601,-291.3448],[7.0767,1.9613,-292.2519],[7.286,2.8684,-293.7522],[6.6231,3.0778,-294.7639],[7.6349,3.0429,-301.4975],[6.9022,3.1126,-301.7591],[7.757,3.0778,-308.3531],[7.3558,3.0778,-308.6322],[5.559,3.1475,-302.2301],[1.8957,3.1126,-302.579],[1.4683,3.0952,-306.5825],[1.0409,3.0778,-310.586],[-3.704,3.1126,-312.3828],[-5.7101,3.1126,-308.8154],[-7.7162,3.1126,-305.248],[-8.5535,3.1126,-309.4783],[-9.3908,3.1126,-313.7085],[-11.1549,3.1126,-310.2109],[-12.919,3.1126,-306.7133],[-13.7498,3.1126,-310.8128],[-14.5805,3.1126,-314.9122],[-16.3446,3.1126,-311.5454],[-18.1087,3.1126,-308.1787],[-18.9111,3.1126,-312.1734],[-19.7136,3.1126,-316.1682],[-23.2548,3.1126,-309.6963],[-24.0572,3.1126,-313.5603],[-24.8596,3.1126,-317.4242],[-28.2613,3.1126,-311.1617],[-28.994,3.1126,-314.8686],[-29.7266,3.1126,-318.5755],[-33.1283,3.1126,-312.5746],[-34.7855,3.1126,-319.7792],[-38.5186,3.1126,-314.1795],[-40.2456,3.1126,-321.1224],[-43.8566,3.1126,-315.7844],[-45.3917,3.1126,-322.3784],[-48.9329,3.1126,-317.2323],[-50.5901,3.1126,-323.5646],[-54.1139,3.1126,-318.6976],[-55.7711,3.1126,-324.838],[-59.3123,3.1126,-320.2327],[-60.9172,3.1126,-326.094],[-64.4584,3.1126,-321.7678],[-66.0458,3.1126,-327.3675],[-69.6394,3.1126,-323.3029],[-71.2443,3.1126,-328.6235],[-74.2447,3.1126,-329.4957],[-76.9137,3.1126,-324.1577],[-76.5125,3.1126,-331.432],[-80.6817,3.1126,-329.6353],[-84.8509,3.1126,-327.8385],[-91.5517,3.1126,-330.9087],[-98.2525,3.1126,-333.9789],[-99.8051,3.1126,-338.7528],[-101.3576,3.1126,-343.5268],[-102.9102,3.1126,-348.3007],[-97.53,3.1126,-352.4118],[-92.1499,3.1126,-356.5229],[-86.7698,3.1126,-360.6339],[-80.1409,3.1126,-361.541],[-73.512,3.1126,-362.4481],[-69.7789,3.1126,-361.5061],[-69.3428,3.1126,-356.3688],[-68.9067,3.1126,-351.2314],[-61.9115,3.1126,-353.6213],[-61.2835,3.1126,-357.5812],[-60.6555,3.1126,-361.541],[-61.1527,3.1126,-365.6405],[-61.6498,3.1126,-369.7399],[-60.7602,3.2696,-370.0888],[-61.615,3.3917,-371.0308],[-60.7427,3.2347,-371.589],[-60.8997,3.2609,-376.1332],[-61.0567,3.2871,-380.6775],[-60.6032,3.2347,-384.1315],[-54.7331,3.2086,-383.3639],[-48.8631,3.1824,-382.5964]],"expectedDistance":1219.43,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-79339","objectiveId":"creature-79339","objectiveName":"Rokmar the Crackler","checkpoints":[[-48.8631,3.1824,-382.5964],[-46.0736,3.1761,-388.9446],[-43.2841,3.1697,-395.2927],[-40.4946,3.1634,-401.6409],[-37.7051,3.157,-407.9891],[-34.9155,3.1507,-414.3372],[-32.126,3.1444,-420.6854],[-29.3365,3.138,-427.0336],[-26.547,3.1317,-433.3817],[-23.7575,3.1253,-439.7299],[-20.968,3.119,-446.0781],[-18.1784,3.1126,-452.4262]],"expectedDistance":76.27,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-80260","objectiveId":"creature-80260","objectiveName":"Quagmirran","checkpoints":[[-18.1784,3.1126,-452.4262],[-16.3795,3.1126,-449.0595],[-14.5805,3.1126,-445.6927],[-13.7498,3.1126,-449.827],[-12.919,3.1126,-453.9614],[-11.12,3.1126,-450.4638],[-9.3211,3.1126,-446.9662],[-8.4837,3.1126,-451.2313],[-7.6464,3.1126,-455.4965],[-4.3756,3.0952,-452.6356],[-1.1048,3.0778,-449.7747],[0.0989,3.0952,-454.3015],[1.3026,3.1126,-458.8283],[5.2275,3.165,-458.148],[7.5651,3.0952,-451.083],[7.1639,3.0952,-458.148],[8.5594,2.9033,-459.561],[9.484,2.9382,-455.165],[9.484,3.0429,-448.3617],[10.74,3.008,-448.571],[11.5424,2.9033,-454.3102],[13.3741,2.7638,-452.8798],[14.4382,2.7289,-447.3325],[15.7116,2.6242,-447.8558],[15.9558,2.5544,-447.0708],[18.8167,2.1183,-447.4895],[20.5612,1.4903,-447.0708],[23.4918,0.9495,-447.4546],[24.3989,0.5832,-447.0185],[25.4456,0.653,-447.4197],[29.0042,-0.3762,-446.6347],[32.0919,-0.8647,-446.687],[34.8481,-1.7369,-445.8497],[37.2903,-2.1381,-446.2509],[40.692,-3.0103,-445.0647],[45.4368,-3.4116,-445.0822],[46.0997,-3.9174,-444.5763],[47.5127,-3.586,-444.9775],[48.7687,-4.0919,-444.3146],[49.9026,-3.5162,-444.9601],[54.4033,-4.1093,-443.3552],[57.4211,-2.6963,-444.5239],[58.6248,-2.9754,-443.7389],[60.0378,-2.3126,-444.0006],[62.8289,-1.702,-443.5994],[63.9628,-1.5625,-448.4053],[65.0967,-1.4229,-453.2112],[69.6148,-1.4229,-451.5017],[75.3888,-1.4229,-451.397],[79.6889,-1.4229,-453.9962],[83.9889,-1.4229,-456.5955],[88.0884,-1.4229,-461.6892],[83.422,-1.4403,-464.3844],[78.7556,-1.4578,-467.0795],[84.4774,-1.4229,-467.4807],[82.7417,-1.4229,-470.9783],[81.0059,-1.4229,-474.4759],[79.4708,-1.4403,-479.6417],[77.9357,-1.4578,-484.8074],[81.695,-1.4403,-490.2697],[85.4543,-1.4229,-495.7319],[86.2829,-1.4229,-501.4559],[87.1115,-1.4229,-507.1798],[82.2968,-1.4578,-506.8658],[88.1756,-1.388,-511.3316],[89.8154,-1.4927,-517.6115],[93.3217,-1.9113,-521.0132],[96.828,-2.33,-524.4148],[96.357,-2.801,-525.7406],[96.6187,-3.6034,-527.9212],[95.0836,-2.7661,-529.2469],[95.0836,-3.2022,-530.9739],[93.7578,-2.801,-533.2243],[93.9497,-3.6383,-535.9979],[92.6239,-3.4464,-539.0158],[92.2925,-3.8128,-541.5452],[90.7399,-2.9406,-543.028],[89.9375,-2.8359,-545.0341],[89.5537,-3.6383,-549.1684],[87.722,-2.7661,-551.2966],[89.1001,-3.9349,-553.5993],[88.8734,-2.8533,-556.2857],[89.1874,-2.016,-559.8269],[90.2515,-1.6497,-563.5949],[90.3387,-0.6205,-567.4327],[89.2397,0.3739,-573.765],[88.1407,1.3682,-580.0973],[87.8529,2.7376,-584.1182],[87.565,4.107,-588.1392],[88.5594,3.2435,-584.5631],[89.5537,2.38,-580.987],[88.5942,3.7232,-585.9499],[87.6348,5.0664,-590.9128],[89.0827,4.0372,-587.0227],[88.5594,5.5549,-592.9538],[87.2859,6.776,-597.3498],[87.8092,6.6538,-597.0881],[86.466,8.66,-603.0934],[85.5938,9.7938,-605.6969],[87.2685,10.8405,-608.5098],[92.5192,11.7825,-611.6324],[92.5192,12.1139,-612.4174],[95.9471,13.4135,-616.1243],[99.3749,14.7132,-619.8312],[102.5846,15.5679,-621.0349],[101.9392,16.7541,-623.6516],[103.7011,17.9055,-624.9948],[101.8869,17.9753,-626.1636],[104.2244,19.0219,-627.2277],[102.2532,18.83,-628.1871],[103.422,19.301,-628.6058],[101.2938,18.9521,-629.3908],[100.8751,19.458,-631.4318],[104.992,20.9408,-632.6354],[108.132,22.3712,-634.5369],[108.0622,22.4585,-635.1474],[105.6723,21.9002,-635.4789],[111.0626,23.0865,-637.5024],[111.2719,22.9643,-638.6363],[110.3125,22.755,-638.898],[111.4638,22.6678,-640.5901],[109.9985,21.8305,-643.6428],[107.2074,21.028,-645.2303],[105.7421,20.243,-648.6843],[101.0844,19.4929,-650.1496],[100.9623,20.3302,-651.8242],[102.48,21.3246,-653.1675],[101.8694,22.5108,-655.8364],[100.1599,22.8771,-657.1622],[100.1599,23.8191,-658.959],[98.398,24.2552,-659.43],[98.3805,25.3019,-661.4361],[100.1424,25.9299,-662.9712],[99.5319,27.3254,-665.9716],[101.4682,28.6512,-668.1696],[102.7416,30.0991,-670.6467],[100.7355,30.3608,-671.8504],[98.2061,29.7851,-671.5713],[97.3513,30.6224,-673.5076],[97.7351,31.6516,-675.4963],[96.1477,31.6865,-675.8975],[96.4268,32.5239,-678.0955],[94.7521,32.5936,-679.4387],[94.944,33.3263,-682.0728],[93.3217,33.1519,-682.5263],[92.9902,33.431,-683.6777],[91.647,33.3089,-683.7126],[90.9318,33.6752,-685.9803],[93.3217,34.7742,-688.3702],[92.1355,35.3673,-691.894],[93.0949,36.4663,-696.0981],[89.6758,36.2919,-698.7147],[89.6758,36.7977,-701.1046],[89.9026,37.0594,-702.0989],[94.0369,37.4257,-705.5006],[92.0482,37.3211,-707.5939],[91.1411,37.2862,-710.4199],[94.1764,37.4955,-712.9188],[88.4372,37.1815,-715.5224],[89.7456,37.513,-718.7016],[88.5419,37.5827,-720.3065],[88.7338,37.7223,-722.6266],[87.5301,37.4606,-722.6266],[85.21,37.1117,-723.9175],[87.4778,37.3908,-724.0745],[86.8847,37.3211,-725.7666],[84.7739,37.0245,-727.6332],[85.3496,36.9024,-730.7034],[86.5358,36.7628,-732.3431],[85.4368,36.5012,-734.8377],[86.2916,36.4314,-735.7622],[85.5938,36.4314,-736.4251],[87.0068,36.2919,-736.9485],[86.9545,36.2919,-737.6288],[88.1232,36.2221,-737.4543],[88.7338,36.257,-738.658],[90.6352,36.1523,-738.9894],[91.4377,36.1523,-740.3501],[94.0543,35.9604,-741.4317],[94.9614,35.9604,-742.6877],[97.77,35.6987,-743.4727],[98.1538,35.8209,-744.6938],[99.7412,35.7511,-745.8974],[102.951,35.3324,-746.2986],[104.5384,35.2626,-747.4849],[106.1433,35.4894,-747.1011],[108.5332,35.7336,-747.6593],[109.6496,36.0127,-746.979],[111.8825,36.1523,-748.1303],[118.2497,36.9198,-748.6187],[119.5755,36.9547,-748.2524],[119.7325,37.0245,-747.5197],[120.7966,37.1466,-747.1185],[121.128,37.3908,-744.1181],[125.367,37.6525,-740.1582],[126.2392,37.9491,-736.4949],[129.8764,37.9752,-734.105],[133.5135,38.0014,-731.7151],[134.8393,38.0014,-738.6493],[136.1651,38.0014,-745.5834],[138.7119,38.0014,-750.5463],[141.2588,38.0014,-755.5093],[143.5702,38.0188,-752.0815],[145.8816,38.0363,-748.6536],[150.4956,38.0363,-744.4495],[155.1097,38.0363,-740.2454],[160.6395,37.8706,-743.0714],[166.1694,37.7048,-745.8974],[169.3268,37.6525,-743.1063],[172.5366,38.0363,-738.7103],[174.9439,37.984,-737.1055],[176.1476,37.8967,-737.1055],[178.5549,37.827,-735.9018],[180.9622,37.9142,-733.1107],[182.1485,38.0712,-730.3196],[185.742,37.9491,-728.7147],[187.7307,37.7572,-729.0985],[188.9343,37.8793,-726.7086],[192.5453,37.5827,-727.0924],[194.5863,37.7746,-723.0802],[197.3948,37.4781,-723.8826],[200.452,37.4781,-721.6148],[201.6426,37.7746,-717.2014],[206.008,37.4083,-715.614],[206.95,37.4432,-711.894],[210.1598,36.4837,-711.0872],[211.0669,35.7511,-709.5302],[212.5322,34.8614,-709.5302],[212.5322,34.687,-708.4313],[213.23,34.2683,-708.3964],[214.1545,33.3612,-707.1927],[215.3582,32.5936,-707.1055],[216.4572,31.6516,-706.2856],[218.5156,30.7271,-707.6811],[218.9168,30.2212,-706.8787],[220.5392,29.1571,-706.9659],[221.2718,28.093,-705.1692],[222.9465,27.0638,-704.7679],[223.7489,25.4066,-698.9066],[224.9526,24.9704,-698.9066],[226.3482,25.3891,-703.1631],[227.4995,23.9587,-698.5403],[228.2845,23.4005,-697.3366],[229.5928,23.5923,-700.4941],[230.7267,22.4933,-697.389],[231.9304,22.0572,-697.4064],[233.1689,21.185,-695.5224],[234.3028,19.929,-688.2656],[235.5065,19.5278,-687.8818],[236.7973,19.1266,-688.2307],[237.8091,18.6556,-686.2943],[237.3904,18.4637,-681.8286],[239.3617,18.0276,-683.3462],[239.4314,17.8706,-681.532],[240.3909,17.4345,-680.1888],[242.5191,16.7018,-679.5259],[242.554,16.4053,-677.0837],[244.1589,15.6028,-675.095],[246.1475,14.8004,-674.2926],[247.735,14.3468,-675.095],[248.52,13.7712,-672.7052],[250.9273,12.7943,-671.5015],[253.5614,11.9046,-671.6062],[255.3756,11.0673,-669.3384],[257.4864,10.7707,-669.7571],[258.9343,10.4916,-668.1173],[262.0568,10.1253,-667.1055],[263.8187,10.0032,-668.9546],[266.5749,9.7066,-669.6001],[267.5343,9.4973,-666.8787],[270.0812,9.2531,-669.1116],[271.4244,9.0263,-665.9891],[273.6399,8.8693,-669.1814],[274.233,8.7123,-665.9542],[276.2216,8.5727,-670.4199],[276.8147,8.4681,-667.2276],[276.1693,8.503,-662.2385],[277.2857,8.5727,-662.9014],[279.6233,8.9042,-660.843],[282.2051,9.0961,-665.0994]],"expectedDistance":923.91,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"5d81b6e60735147b5b390856d6a85997077d9ae7b67273265c6ffb8aefad4180","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"arcatraz","mapId":552,"legs":[{"id":"leg-01-creature-138936","objectiveId":"creature-138936","objectiveName":"Zereketh the Unbound","checkpoints":[[3.523,-115.107,-2.6003],[0.2246,-115.107,0.2295],[-3.0738,-115.107,3.0593],[-6.3302,-115.107,-2.6003],[-9.9951,-115.107,3.0593],[-10.4037,-115.107,-2.6003],[-13.9379,-115.107,-0.4674],[-17.4722,-115.107,1.6654],[-20.8022,-115.107,-0.5335],[-24.1321,-115.107,-2.7325],[-27.4982,-115.107,-0.6657],[-30.8642,-115.107,1.4011],[-30.9363,-115.107,-1.4708],[-31.477,-115.107,1.4011],[-31.9456,-115.107,-1.3386],[-33.4116,-115.107,1.4011],[-34.409,-115.107,-1.3386],[-35.8749,-115.107,1.4011],[-36.3436,-115.107,-1.3386],[-36.8723,-115.107,-1.4708],[-36.9323,-115.107,1.4011],[-40.1647,-115.107,-1.0022],[-43.397,-115.107,-3.4054],[-43.6614,-115.107,-4.3306],[-40.2007,-115.107,-5.1357],[-44.2021,-115.107,-6.9982],[-40.6694,-115.107,-11.4682],[-45.4037,-115.107,-13.7273],[-49.9458,-115.107,-10.9275],[-50.8711,-115.107,-11.4082],[-49.4772,-115.107,-5.6644],[-50.2703,-115.107,-5.7365],[-54.2717,-115.107,-11.7927],[-56.6148,-115.107,-14.1959],[-57.0834,-115.107,-13.9916],[-56.8792,-115.107,-15.0611],[-58.8738,-115.107,-16.2627],[-59.3425,-115.107,-14.9289],[-57.4079,-115.107,-10.3387],[-57.474,-115.107,-5.9708],[-57.5401,-115.107,-1.603],[-61.205,-115.107,4.4652],[-67.8029,-115.107,3.3997],[-74.4007,-115.107,2.3343],[-80.9986,-115.107,1.2689],[-84.1308,-115.107,-4.1744],[-87.263,-115.107,-9.6178],[-90.3952,-115.107,-15.0611],[-95.9277,-115.107,-15.6178],[-101.4601,-115.107,-16.1746],[-106.9925,-115.107,-16.7313],[-111.3259,-115.107,-13.1625],[-115.6592,-115.107,-9.5937],[-116.993,-115.107,-4.3306],[-118.3268,-115.107,0.9324],[-119.204,-115.107,-1.1343],[-120.5378,-115.107,-0.7979],[-121.0665,-115.107,0.8603],[-122.929,-115.107,-0.7979],[-124.3949,-115.107,0.8603],[-126.3295,-115.107,0.9324],[-126.8703,-115.107,-0.7979],[-128.2762,-115.107,2.7349],[-128.3362,-115.107,-0.7378],[-129.9344,-115.107,-3.129],[-133.9057,-115.107,-3.4294],[-137.8771,-115.107,-3.7298],[-141.8424,-115.107,-0.7979],[-145.8077,-115.107,2.134],[-149.7731,-115.107,-0.5335],[-153.7384,-115.107,-3.2011],[-154.8679,-115.107,0.9324],[-155.9373,-115.107,-2.6003],[-157.6076,-115.107,-0.7979],[-158.2084,-115.107,0.9324],[-159.3379,-115.107,0.8603],[-159.9387,-115.107,-0.7979],[-161.2004,-115.107,-1.1343],[-161.8613,-115.107,0.9324],[-164.3967,-115.107,3.2756],[-169.7349,-115.107,5.2102],[-171.6004,-115.107,-1.1223],[-176.9386,-115.107,-3.117],[-181.6429,-115.107,-1.5189],[-186.3472,-115.107,0.0793],[-190.2465,-115.107,-1.621],[-194.1457,-115.107,-3.3213],[-190.3426,-115.107,-4.9915],[-186.5395,-115.107,-6.6618],[-191.4781,-115.107,-11.6004],[-189.91,-115.107,-15.4336],[-188.3419,-115.107,-19.2667],[-193.0763,-115.107,-24.0612],[-193.2806,-115.107,-27.7261],[-199.6852,-115.107,-29.5886],[-199.573,-115.107,-35.4765],[-199.4609,-115.107,-41.3644],[-199.3487,-115.107,-47.2523],[-206.0177,-115.107,-47.4566],[-202.8154,-115.107,-51.458],[-199.6131,-115.107,-55.4594],[-201.6077,-115.107,-60.7225],[-206.0057,-115.107,-64.3874],[-202.0043,-115.107,-70.4555],[-204.0711,-115.107,-71.1885],[-203.7346,-115.107,-72.3901],[-202.0764,-115.107,-72.8588],[-203.8067,-115.107,-73.9282],[-202.0163,-115.107,-74.6011],[-200.1418,-115.107,-76.8722],[-203.7346,-115.107,-78.6025],[-205.5971,-115.107,-83.1927],[-211.1366,-115.107,-85.656],[-211.7374,-115.107,-82.9283],[-212.4103,-115.107,-85.2594],[-213.9363,-115.107,-85.2594],[-216.1954,-115.107,-83.0605],[-218.4664,-115.107,-85.2594],[-220.3409,-115.107,-85.2594],[-222.5399,-115.107,-83.8656],[-224.078,-115.107,-86.5332],[-226.7455,-115.107,-85.5959],[-225.8083,-115.107,-88.1193],[-231.6121,-115.107,-86.7134],[-237.536,-115.107,-88.4557],[-241.237,-115.107,-87.122],[-244.938,-115.107,-85.7882],[-246.8606,-115.107,-87.194],[-247.7978,-115.107,-86.1847],[-248.8673,-115.107,-87.8549],[-251.0062,-115.107,-86.9898],[-253.5416,-115.107,-87.122],[-254.5389,-115.107,-84.923],[-257.8794,-115.107,-83.5291],[-259.4775,-115.107,-85.8603],[-260.7993,-115.107,-84.3943],[-261.5323,-115.107,-86.8576],[-263.4068,-115.107,-85.1273],[-264.4643,-115.107,-87.3262],[-264.3922,-115.107,-84.5265],[-266.1946,-115.107,-86.8576],[-267.264,-115.107,-89.8616],[-267.997,-115.107,-90.0659],[-267.2039,-115.107,-90.5345],[-268.2013,-115.107,-94.2986],[-269.1986,-115.107,-98.0627],[-269.5952,-115.107,-94.3346],[-271.3255,-115.107,-94.3346],[-275.1346,-115.107,-95.8607],[-275.9998,-115.107,-99.4565],[-272.5271,-115.107,-101.6585],[-274.666,-115.107,-102.055],[-272.8756,-115.107,-102.5237],[-274.7381,-115.107,-103.0644],[-272.8635,-115.107,-103.2687],[-275.6633,-115.107,-104.0737],[-276.2641,-115.107,-110.7627],[-276.8649,-115.107,-117.4517],[-277.4657,-115.107,-124.1407]],"expectedDistance":603.75,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-138950","objectiveId":"creature-138950","objectiveName":"Dalliah the Doomsayer","checkpoints":[[-277.4657,-115.107,-124.1407],[-276.8649,-115.107,-117.4517],[-276.2641,-115.107,-110.7627],[-275.6633,-115.107,-104.0737],[-272.8635,-115.107,-103.2687],[-274.7381,-115.107,-103.0644],[-272.8756,-115.107,-102.5237],[-274.666,-115.107,-102.055],[-272.5271,-115.107,-101.6585],[-275.9998,-115.107,-99.4565],[-275.1346,-115.107,-95.8607],[-277.3336,-115.107,-92.1928],[-274.8702,-115.107,-90.2582],[-275.6633,-115.107,-89.0566],[-274.5338,-115.107,-88.9244],[-274.2094,-115.107,-86.7254],[-272.6112,-115.107,-85.1874],[-271.2053,-115.107,-87.3863],[-267.997,-115.107,-84.5865],[-268.9943,-115.107,-81.7868],[-268.9943,-115.107,-79.9243],[-266.1946,-115.107,-78.5905],[-266.1946,-115.107,-76.728],[-268.9943,-115.107,-76.1993],[-270.4603,-115.107,-73.5317],[-267.5284,-115.107,-73.3995],[-266.2006,-115.107,-66.5623],[-264.8728,-115.107,-59.7251],[-270.6045,-115.107,-56.4567],[-267.7387,-115.107,-51.9567],[-264.8728,-115.107,-47.4566],[-266.2066,-115.107,-43.1909],[-270.5444,-115.107,-41.7249],[-266.2066,-115.107,-37.2549],[-269.0664,-115.107,-36.6541],[-268.9943,-115.107,-34.7195],[-266.1946,-115.107,-33.3857],[-266.1946,-115.107,-31.5232],[-268.9943,-115.107,-30.9945],[-265.7259,-115.107,-30.3937],[-268.9943,-115.107,-30.3216],[-271.9263,-115.107,-28.5192],[-268.2614,-115.107,-25.1907],[-264.5964,-115.107,-21.8622],[-266.8975,-115.107,-16.8635],[-269.1986,-115.107,-11.8648],[-267.1018,-115.107,-6.9982],[-265.005,-115.107,-2.1317],[-261.0396,-115.107,-3.5676],[-257.0743,-115.107,-5.0035],[-260.1985,-115.107,1.1367],[-263.9956,-115.107,4.0086],[-262.9262,-115.107,4.7416],[-260.4629,-115.107,5.1982],[-262.9382,-115.107,6.592],[-260.2706,-115.107,9.6562],[-260.8113,-115.107,11.795],[-260.2105,-115.107,12.1315],[-260.4148,-115.107,12.9967],[-259.8741,-115.107,12.7924],[-259.802,-115.107,14.1262],[-260.6071,-115.107,15.5321],[-260.1384,-115.107,16.938],[-260.4749,-115.107,20.2063],[-259.8621,-115.107,21.9968],[-260.0663,-115.107,22.5976],[-260.8714,-115.107,22.6576],[-260.2105,-115.107,24.5322],[-260.547,-115.107,28.1851],[-260.0784,-115.107,28.2572],[-259.9462,-115.107,30.1918],[-260.2105,-115.107,32.0543],[-260.8714,-115.107,32.4628],[-260.2706,-115.107,34.7339],[-263.0103,-115.107,37.8701],[-260.8113,-115.107,38.4709],[-260.4028,-115.107,39.4682],[-257.8674,-115.107,40.2613],[-257.8073,-115.107,39.7326],[-257.0022,-115.107,40.1291],[-257.0743,-115.107,39.3961],[-254.8754,-115.107,39.5884],[-254.3346,-115.107,40.9222],[-252.4,-115.107,41.3908],[-252.1958,-115.107,42.3281],[-253.2652,-115.107,44.1305],[-250.5375,-115.107,45.8008],[-249.0716,-115.107,44.4069],[-247.3412,-115.107,45.3441],[-246.7404,-115.107,43.4696],[-241.4773,-115.107,45.4298],[-236.2143,-115.107,47.3899],[-231.4439,-115.107,46.5608],[-226.6734,-115.107,45.7317],[-220.8096,-115.107,46.9348],[-214.9457,-115.107,48.1379],[-214.1526,-115.107,51.5295],[-210.5357,-115.107,49.4627],[-210.5357,-115.107,50.3278],[-210.007,-115.107,49.5949],[-209.2741,-115.107,51.3973],[-208.5291,-115.107,57.0088],[-208.3969,-115.107,59.8687],[-209.1419,-115.107,64.1464],[-208.5411,-115.107,64.6751],[-208.6732,-115.107,67.3307],[-206.9429,-115.107,69.6618],[-202.4729,-115.107,66.802],[-198.3394,-115.107,70.6712],[-201.2713,-115.107,75.4056],[-198.2673,-115.107,76.9436],[-198.4114,-115.107,80.6086],[-201.4155,-115.107,83.6727],[-198.5556,-115.107,87.2655],[-201.4876,-115.107,88.1307],[-201.7519,-115.107,89.0679],[-200.1177,-115.107,93.1654],[-198.4835,-115.107,97.2629],[-193.4848,-115.107,96.7943],[-190.2885,-115.107,95.797],[-183.8163,-115.107,97.8638],[-177.3441,-115.107,99.9305],[-173.7378,-115.107,104.0641],[-170.1314,-115.107,108.1976],[-163.3648,-115.107,106.2991],[-156.5982,-115.107,104.4005],[-159.9988,-115.107,107.741],[-156.5382,-115.107,105.5301],[-155.2044,-115.107,108.6663],[-151.3352,-115.107,106.8639],[-149.6649,-115.107,108.7384],[-148.9319,-115.107,110.6009],[-148.1989,-115.107,110.0722],[-148.1989,-115.107,110.5408],[-147.6702,-115.107,110.4807],[-147.6702,-115.107,112.5956],[-150.2777,-115.107,115.2631],[-146.8171,-115.107,118.6787],[-142.1788,-115.107,120.6148],[-137.5406,-115.107,122.5509]],"expectedDistance":468.32,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-138951","objectiveId":"creature-138951","objectiveName":"Wrath-Scryer Soccothrates","checkpoints":[[-137.5406,-115.107,122.5509],[-133.5392,-115.107,124.3173],[-129.5379,-115.107,126.0837],[-130.0786,-115.107,128.0784],[-124.2748,-115.107,131.2461],[-118.471,-115.107,134.4139],[-117.6659,-115.107,133.2123],[-117.6659,-115.107,135.1469],[-117.005,-115.107,133.1522],[-115.4069,-115.107,136.2163],[-116.0677,-115.107,140.41],[-114.3374,-115.107,141.4073],[-116.272,-115.107,141.5395],[-116.272,-115.107,142.4046],[-114.5417,-115.107,143.0054],[-114.4696,-115.107,143.7384],[-116.1999,-115.107,144.3392],[-116.1999,-115.107,146.0095],[-114.3975,-115.107,147.3433],[-116.1999,-115.107,149.35],[-114.4696,-115.107,150.083],[-114.5417,-115.107,150.876],[-116.272,-115.107,151.4047],[-116.272,-115.107,152.2699],[-118.8795,-115.107,152.5463],[-124.7434,-115.107,156.6738],[-130.6073,-115.107,160.8014],[-130.2708,-115.107,165.9323]],"expectedDistance":80.49,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-encounter-500","objectiveId":"encounter-500","objectiveName":"Harbinger Skyriss","checkpoints":[[-130.2708,-115.107,165.9323],[-130.6073,-115.107,160.8014],[-124.7434,-115.107,156.6738],[-118.8795,-115.107,152.5463],[-116.272,-115.107,152.2699],[-116.272,-115.107,151.4047],[-114.5417,-115.107,150.876],[-114.4696,-115.107,150.083],[-116.1999,-115.107,149.35],[-114.3975,-115.107,147.3433],[-116.1999,-115.107,146.0095],[-118.2066,-115.107,147.2111],[-118.4109,-115.107,146.2017],[-118.7473,-115.107,147.2712],[-118.8795,-115.107,146.2738],[-123.1893,-115.107,143.3649],[-127.4991,-115.107,140.456],[-131.8089,-115.107,137.5471],[-131.8089,-115.107,135.2761],[-137.6427,-115.107,130.6063],[-143.4766,-115.107,125.9365],[-149.6769,-115.107,122.0658],[-155.8773,-115.107,118.1951],[-156.9347,-115.107,118.5315],[-157.3913,-115.107,117.8707],[-156.5261,-115.107,117.1377],[-157.932,-115.107,115.8039],[-159.398,-115.107,112.944],[-155.7331,-115.107,112.7398],[-155.2044,-115.107,108.6663],[-156.5382,-115.107,105.5301],[-159.9988,-115.107,107.741],[-156.5982,-115.107,104.4005],[-163.3648,-115.107,106.2991],[-170.1314,-115.107,108.1976],[-173.7378,-115.107,104.0641],[-177.3441,-115.107,99.9305],[-183.8163,-115.107,97.8638],[-190.2885,-115.107,95.797],[-193.4848,-115.107,96.7943],[-198.4835,-115.107,97.2629],[-200.1177,-115.107,93.1654],[-201.7519,-115.107,89.0679],[-201.4876,-115.107,88.1307],[-198.5556,-115.107,87.2655],[-201.4155,-115.107,83.6727],[-198.4114,-115.107,80.6086],[-198.2673,-115.107,76.9436],[-201.2713,-115.107,75.4056],[-198.3394,-115.107,70.6712],[-202.4729,-115.107,66.802],[-206.9429,-115.107,69.6618],[-208.6732,-115.107,67.3307],[-208.5411,-115.107,64.6751],[-209.1419,-115.107,64.1464],[-208.3969,-115.107,59.8687],[-208.5291,-115.107,57.0088],[-209.2741,-115.107,51.3973],[-210.007,-115.107,49.5949],[-210.5357,-115.107,50.3278],[-210.5357,-115.107,49.4627],[-214.1526,-115.107,51.5295],[-214.9457,-115.107,48.1379],[-220.8096,-115.107,46.9348],[-226.6734,-115.107,45.7317],[-231.4439,-115.107,46.5608],[-236.2143,-115.107,47.3899],[-241.4773,-115.107,45.4298],[-246.7404,-115.107,43.4696],[-247.3412,-115.107,45.3441],[-249.0716,-115.107,44.4069],[-250.5375,-115.107,45.8008],[-253.2652,-115.107,44.1305],[-252.1958,-115.107,42.3281],[-252.4,-115.107,41.3908],[-254.3346,-115.107,40.9222],[-254.8754,-115.107,39.5884],[-257.0743,-115.107,39.3961],[-257.0022,-115.107,40.1291],[-257.8073,-115.107,39.7326],[-257.8674,-115.107,40.2613],[-260.4028,-115.107,39.4682],[-263.2026,-115.107,39.4682],[-266.7353,-115.107,41.5951],[-271.4697,-115.107,41.7994],[-273.3322,-115.107,42.6645],[-272.7314,-115.107,41.8595],[-273.933,-115.107,41.6552],[-273.5365,-115.107,40.1892],[-274.0652,-115.107,38.3868],[-275.7955,-115.107,38.2546],[-276.8649,-115.107,36.9208],[-275.7354,-115.107,36.0557],[-277.0091,-115.107,34.8661],[-278.7394,-115.107,34.5296],[-279.0639,-115.107,35.9956],[-280.8663,-115.107,35.7312],[-282.2722,-115.107,37.9302],[-284.5432,-115.107,38.8674],[-284.8076,-115.107,37.5336],[-286.7422,-115.107,37.8701],[-287.9438,-115.107,35.8033],[-289.8784,-115.107,36.0677],[-290.4071,-115.107,34.4695],[-292.2096,-115.107,34.7339],[-293.3391,-115.107,32.6671],[-294.2042,-115.107,33.4602],[-293.8678,-115.107,32.3306],[-294.9372,-115.107,31.2612],[-297.2083,-115.107,31.3213],[-299.0107,-115.107,30.0596],[-299.0107,-115.107,28.9902],[-300.5488,-115.107,29.6631],[-300.6809,-115.107,28.9301],[-304.3339,-115.107,29.6751],[-307.386,-115.107,28.87],[-308.5876,-115.107,29.6751],[-308.7198,-115.107,28.7979],[-309.3206,-115.107,28.7258],[-309.8613,-115.107,29.8673],[-309.9334,-115.107,28.5936],[-314.7999,-115.107,28.6657],[-315.6651,-115.107,32.7272],[-318.7292,-115.107,31.5256],[-320.1381,-115.107,35.2626],[-320.0059,-115.107,31.2011],[-320.8741,-115.107,35.1304],[-327.3388,-115.107,32.0663],[-330.5411,-115.107,30.0656],[-333.7434,-115.107,28.0649],[-333.7434,-115.107,24.0635],[-341.0763,-115.107,23.8593],[-341.1363,-115.107,20.7951],[-341.7371,-115.107,20.9273],[-342.2779,-115.107,23.7271],[-345.0176,-115.107,23.7271],[-347.2165,-115.107,20.9273],[-350.0163,-115.107,23.7992],[-350.6171,-115.107,20.9393],[-353.6812,-115.107,25.0128],[-358.8722,-115.107,24.412],[-358.8722,-115.107,19.0047],[-364.0632,-115.107,19.4013],[-366.923,-115.107,21.2037],[-367.0552,-115.107,23.0061],[-367.656,-115.107,21.2037],[-368.1246,-115.107,22.8739],[-369.0619,-115.107,22.8739],[-369.5305,-115.107,21.2037],[-370.1313,-115.107,23.0061],[-370.2635,-115.107,21.2037],[-372.9311,-115.107,19.209],[-377.8697,-115.107,22.946],[-382.7738,-115.107,22.91],[-387.6779,-115.107,22.8739],[-390.5378,-115.107,17.3345],[-394.1741,-115.107,18.2958],[-397.8105,-115.107,19.2571],[-400.421,-115.107,21.1917],[-401.0218,-115.107,22.934],[-402.1514,-115.107,22.8739],[-402.6801,-115.107,21.2037],[-403.9418,-115.107,23.2705],[-404.6748,-115.107,21.2037],[-410.7429,-115.107,18.8726],[-414.4078,-115.107,23.2705],[-419.743,-115.107,25.2051],[-421.5454,-115.107,25.3372],[-426.6964,-115.107,23.1823],[-431.8473,-115.107,21.0274],[-436.9982,-115.107,18.8726],[-433.2011,-115.107,17.2083],[-429.404,-115.107,15.5441],[-434.1985,-115.107,10.7376],[-439.2332,-115.107,12.2997],[-444.268,-115.107,13.8618],[-445.9382,-115.107,9.8244],[-447.6085,-115.107,5.787],[-444.9409,-115.107,1.8216],[-442.2733,-115.107,-2.1437],[-442.3454,-115.107,-3.874],[-448.738,-115.107,-7.3347],[-442.4055,-115.107,-9.1972],[-442.4055,-115.107,-14.1298],[-442.4055,-115.107,-19.0624],[-449.0024,-115.107,-19.2667],[-448.9002,-115.107,-26.3983],[-448.7981,-115.107,-33.5299],[-446.8034,-115.107,-38.8651],[-442.4055,-115.107,-42.4699],[-444.7967,-115.107,-48.8024],[-446.8635,-115.107,-49.5354],[-446.527,-115.107,-51.3258],[-444.7967,-115.107,-51.6623],[-444.268,-115.107,-52.6596],[-446.539,-115.107,-53.2604],[-440.6752,-115.107,-55.2671],[-434.607,-115.107,-58.872],[-430.5455,-115.107,-64.2672],[-433.3453,-115.107,-69.2659],[-439.9672,-115.107,-69.286],[-446.5891,-115.107,-69.306],[-453.211,-115.107,-69.326],[-451.2324,-115.107,-74.7263],[-449.2537,-115.107,-80.1265],[-447.275,-115.107,-85.5268],[-451.0962,-115.107,-89.3249],[-454.9173,-115.107,-93.123],[-458.7384,-115.107,-96.9211],[-464.5392,-115.107,-96.2993],[-470.34,-115.107,-95.6775],[-476.1408,-115.107,-95.0556],[-475.2036,-115.107,-101.5579],[-474.2663,-115.107,-108.0601],[-478.3428,-115.107,-107.7957],[-482.0197,-115.107,-104.8638],[-482.1519,-115.107,-109.0004],[-481.5511,-115.107,-111.9323],[-479.7487,-115.107,-113.5905],[-481.3468,-115.107,-114.1192],[-481.0104,-115.107,-115.2728],[-479.0758,-115.107,-115.6693],[-478.4029,-115.107,-117.0632],[-477.1292,-115.107,-115.8015],[-472.6336,-115.107,-116.198],[-468.1381,-115.107,-116.5946],[-467.6184,-115.107,-118.9257],[-468.6187,-115.107,-122.3984],[-469.6191,-115.107,-123.4678],[-469.6191,-115.107,-130.1248],[-469.0783,-115.107,-130.329],[-470.6645,-115.107,-132.1315],[-469.554,-115.107,-137.6439],[-468.4435,-115.107,-143.1563],[-467.333,-115.107,-148.6687],[-470.0727,-115.107,-150.9277],[-470.5714,-115.107,-157.3924],[-471.07,-115.107,-163.8571],[-470.4051,-115.107,-169.8582],[-469.7402,-115.107,-175.8593],[-469.0753,-115.107,-181.8603],[-474.6058,-115.107,-180.3223]],"expectedDistance":891.59,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"e584a7adba42e37b507f2a217598c12718f0b5ee0cb6622d6234cfad68db18fc","generationStatus":"Rejected","generationIssues":["origin-snap-distance-exceeded","endpoint-snap-distance-exceeded"]},{"schemaVersion":1,"id":"primary","dungeonId":"botanica","mapId":553,"legs":[{"id":"leg-01-creature-147001","objectiveId":"creature-147001","objectiveName":"Commander Sarannis","checkpoints":[[-41.2011,-1.0164,-28.7054],[-43.6124,-1.0921,-21.6316],[-46.0236,-1.1678,-14.5578],[-48.4349,-1.2435,-7.484],[-50.8462,-1.3192,-0.4102],[-53.2575,-1.3949,6.6636],[-55.6687,-1.4706,13.7374],[-58.08,-1.5463,20.8112],[-60.4913,-1.622,27.885],[-62.9026,-1.6977,34.9587],[-65.3138,-1.7734,42.0325],[-67.7251,-1.8491,49.1063],[-70.1364,-1.9249,56.1801],[-72.5477,-2.0006,63.2539],[-74.9589,-2.0763,70.3277],[-77.3702,-2.152,77.4015],[-79.7815,-2.2277,84.4753],[-82.1928,-2.3034,91.5491],[-84.604,-2.3791,98.6229],[-87.0153,-2.4548,105.6967],[-89.4266,-2.5305,112.7705],[-91.8379,-2.6062,119.8442],[-94.2491,-2.6819,126.918],[-96.6604,-2.7576,133.9918],[-99.0717,-2.8333,141.0656],[-101.483,-2.909,148.1394],[-103.8942,-2.9847,155.2132],[-106.3055,-3.0604,162.287],[-108.7168,-3.1361,169.3608],[-111.1281,-3.2118,176.4346],[-113.5393,-3.2875,183.5084],[-115.9506,-3.3632,190.5822],[-118.3619,-3.4389,197.656],[-120.7732,-3.5146,204.7298],[-123.1844,-3.5903,211.8035],[-125.5957,-3.6661,218.8773],[-128.007,-3.7418,225.9511],[-130.4183,-3.8175,233.0249],[-132.8295,-3.8932,240.0987],[-135.2408,-3.9689,247.1725],[-137.6521,-4.0446,254.2463],[-140.0634,-4.1203,261.3201],[-142.4746,-4.196,268.3939],[-144.8859,-4.2717,275.4677],[-147.2972,-4.3474,282.5415],[-149.7085,-4.4231,289.6153],[-152.1197,-4.4988,296.6891]],"expectedDistance":343.8,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-147000","objectiveId":"creature-147000","objectiveName":"High Botanist Freywinn","checkpoints":[[-152.1197,-4.4988,296.6891],[-150.4974,-4.5128,303.8939],[-148.8751,-4.5268,311.0988],[-147.2528,-4.5409,318.3037],[-145.6305,-4.5549,325.5086],[-144.0082,-4.5689,332.7135],[-142.3859,-4.583,339.9184],[-140.7636,-4.597,347.1233],[-139.1412,-4.611,354.3282],[-137.5189,-4.625,361.5331],[-135.8966,-4.6391,368.738],[-134.2743,-4.6531,375.9429],[-132.652,-4.6671,383.1478],[-131.0297,-4.6811,390.3527],[-129.4074,-4.6952,397.5576],[-127.7851,-4.7092,404.7625],[-126.1627,-4.7232,411.9674],[-124.5404,-4.7372,419.1723],[-122.9181,-4.7513,426.3772],[-121.2958,-4.7653,433.5821],[-119.6735,-4.7793,440.787],[-118.0512,-4.7933,447.9918],[-116.4289,-4.8074,455.1967]],"expectedDistance":162.48,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-147003","objectiveId":"creature-147003","objectiveName":"Thorngrin the Tender","checkpoints":[[-116.4289,-4.8074,455.1967],[-111.7969,-5.2359,461.0489],[-107.1648,-5.6645,466.9012],[-102.5328,-6.0931,472.7534],[-97.9008,-6.5216,478.6056],[-93.2688,-6.9502,484.4578],[-88.6368,-7.3788,490.31],[-84.0047,-7.8073,496.1622],[-79.3727,-8.2359,502.0144],[-74.7407,-8.6644,507.8666],[-70.1087,-9.093,513.7188],[-65.4767,-9.5216,519.571],[-60.8447,-9.9501,525.4232],[-56.2126,-10.3787,531.2754],[-51.5806,-10.8073,537.1276],[-46.9486,-11.2358,542.9798],[-42.3166,-11.6644,548.832],[-37.6846,-12.093,554.6842],[-33.0525,-12.5215,560.5364],[-28.4205,-12.9501,566.3886],[-23.7885,-13.3787,572.2408],[-19.1565,-13.8072,578.093],[-14.5245,-14.2358,583.9452],[-9.8924,-14.6644,589.7974],[-5.2604,-15.0929,595.6496]],"expectedDistance":179.42,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-147004","objectiveId":"creature-147004","objectiveName":"Laj","checkpoints":[[-5.2604,-15.0929,595.6496],[0.0423,-15.0677,590.4645],[5.345,-15.0424,585.2793],[10.6477,-15.0172,580.0941],[15.9504,-14.9919,574.909],[21.2531,-14.9667,569.7238],[26.5558,-14.9415,564.5387],[31.8585,-14.9162,559.3535],[37.1613,-14.891,554.1683],[42.464,-14.8657,548.9832],[47.7667,-14.8405,543.798],[53.0694,-14.8152,538.6128],[58.3721,-14.79,533.4277],[63.6748,-14.7648,528.2425],[68.9775,-14.7395,523.0574],[74.2802,-14.7143,517.8722],[79.5829,-14.689,512.687],[84.8856,-14.6638,507.5019],[90.1884,-14.6385,502.3167],[95.4911,-14.6133,497.1316],[100.7938,-14.5881,491.9464],[106.0965,-14.5628,486.7612],[111.3992,-14.5376,481.5761],[116.7019,-14.5123,476.3909],[122.0046,-14.4871,471.2058],[127.3073,-14.4618,466.0206],[132.61,-14.4366,460.8354],[137.9127,-14.4114,455.6503],[143.2155,-14.3861,450.4651],[148.5182,-14.3609,445.2799],[153.8209,-14.3356,440.0948],[159.1236,-14.3104,434.9096],[164.4263,-14.2851,429.7245],[169.729,-14.2599,424.5393],[175.0317,-14.2347,419.3541],[180.3344,-14.2094,414.169],[185.6371,-14.1842,408.9838],[190.9399,-14.1589,403.7987],[196.2426,-14.1337,398.6135],[201.5453,-14.1084,393.4283]],"expectedDistance":289.25,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-05-creature-147002","objectiveId":"creature-147002","objectiveName":"Warp Splinter","checkpoints":[[201.5453,-14.1084,393.4283],[194.1008,-14.5409,393.9157],[186.6564,-14.9733,394.4032],[179.212,-15.4057,394.8906],[171.7676,-15.8381,395.378],[164.3231,-16.2705,395.8654],[156.8787,-16.7029,396.3528],[149.4343,-17.1353,396.8402],[141.9898,-17.5677,397.3276],[134.5454,-18.0002,397.815],[127.101,-18.4326,398.3024],[119.6565,-18.865,398.7898],[112.2121,-19.2974,399.2772],[104.7677,-19.7298,399.7647],[97.3233,-20.1622,400.2521],[89.8788,-20.5946,400.7395],[82.4344,-21.027,401.2269],[74.99,-21.4595,401.7143],[67.5455,-21.8919,402.2017],[60.1011,-22.3243,402.6891],[52.6567,-22.7567,403.1765],[45.2122,-23.1891,403.6639],[37.7678,-23.6215,404.1513],[30.3234,-24.0539,404.6387],[22.8789,-24.4864,405.1262],[15.4345,-24.9188,405.6136],[7.9901,-25.3512,406.101],[0.5457,-25.7836,406.5884],[-6.8988,-26.216,407.0758],[-14.3432,-26.6484,407.5632],[-21.7876,-27.0808,408.0506],[-29.2321,-27.5132,408.538],[-36.6765,-27.9457,409.0254],[-44.1209,-28.3781,409.5128],[-51.5654,-28.8105,410.0002],[-59.0098,-29.2429,410.4877]],"expectedDistance":261.55,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"067c6ecf1f819a2de982c08ede1610c5ed407aef91f0ac482ae04b9f2ef29008","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg","endpoint-snap-distance-exceeded"]},{"schemaVersion":1,"id":"primary","dungeonId":"mechanar","mapId":554,"legs":[{"id":"leg-01-creature-138822","objectiveId":"creature-138822","objectiveName":"Mechano-Lord Capacitus","checkpoints":[[31.0454,-1.7342,1.3662],[23.6796,-1.7274,1.0935],[16.3138,-1.7207,0.8208],[8.9479,-1.714,0.5482],[1.5821,-1.7073,0.2755],[-5.7837,-1.7006,0.0028],[-13.1496,-1.6938,-0.2698],[-20.5154,-1.6871,-0.5425],[-27.8813,-1.6804,-0.8152],[-35.2471,-1.6737,-1.0878],[-42.6129,-1.667,-1.3605],[-49.9788,-1.6602,-1.6331],[-57.3446,-1.6535,-1.9058],[-64.7104,-1.6468,-2.1785],[-72.0763,-1.6401,-2.4511],[-79.4421,-1.6334,-2.7238],[-86.808,-1.6266,-2.9965],[-94.1738,-1.6199,-3.2691],[-101.5396,-1.6132,-3.5418],[-108.9055,-1.6065,-3.8144],[-116.2713,-1.5998,-4.0871],[-123.6371,-1.593,-4.3598],[-131.003,-1.5863,-4.6324],[-138.3688,-1.5796,-4.9051],[-145.7347,-1.5729,-5.1778],[-153.1005,-1.5662,-5.4504],[-160.4663,-1.5594,-5.7231],[-167.8322,-1.5527,-5.9957],[-175.198,-1.546,-6.2684],[-182.5638,-1.5393,-6.5411],[-189.9297,-1.5326,-6.8137],[-197.2955,-1.5259,-7.0864],[-204.6614,-1.5191,-7.3591],[-212.0272,-1.5124,-7.6317],[-219.393,-1.5057,-7.9044],[-226.7589,-1.499,-8.177]],"expectedDistance":257.98,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-138824","objectiveId":"creature-138824","objectiveName":"Nethermancer Sepethrea","checkpoints":[[-226.7589,-1.499,-8.177],[-233.5054,0.4596,-6.7406],[-240.252,2.4181,-5.3041],[-246.9986,4.3767,-3.8677],[-253.7452,6.3352,-2.4312],[-260.4917,8.2937,-0.9948],[-267.2383,10.2523,0.4417],[-273.9849,12.2108,1.8781],[-280.7315,14.1694,3.3146],[-287.478,16.1279,4.751],[-294.2246,18.0864,6.1875],[-300.9712,20.045,7.624],[-307.7178,22.0035,9.0604],[-314.4643,23.9621,10.4969],[-321.2109,25.9206,11.9333],[-327.9575,27.8792,13.3698]],"expectedDistance":107.56,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-138823","objectiveId":"creature-138823","objectiveName":"Pathaleon the Calculator","checkpoints":[[-327.9575,27.8792,13.3698],[-321.8821,27.8122,17.7239],[-315.8067,27.7452,22.0779],[-309.7313,27.6782,26.432],[-303.656,27.6112,30.7861],[-297.5806,27.5442,35.1402],[-291.5052,27.4772,39.4943],[-285.4298,27.4102,43.8484],[-279.3545,27.3432,48.2025],[-273.2791,27.2762,52.5565],[-267.2037,27.2092,56.9106],[-261.1283,27.1422,61.2647],[-255.0529,27.0752,65.6188],[-248.9776,27.0082,69.9729],[-242.9022,26.9412,74.327],[-236.8268,26.8742,78.681],[-230.7514,26.8072,83.0351],[-224.676,26.7402,87.3892],[-218.6007,26.6733,91.7433],[-212.5253,26.6063,96.0974],[-206.4499,26.5393,100.4515],[-200.3745,26.4723,104.8056],[-194.2991,26.4053,109.1596],[-188.2238,26.3383,113.5137],[-182.1484,26.2713,117.8678],[-176.073,26.2043,122.2219],[-169.9976,26.1373,126.576],[-163.9222,26.0703,130.9301],[-157.8469,26.0033,135.2841],[-151.7715,25.9363,139.6382],[-145.6961,25.8693,143.9923],[-139.6207,25.8023,148.3464],[-133.5453,25.7353,152.7005]],"expectedDistance":239.19,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"2a904e80cb8b2887440e3133439cc573647a1572577907b8197deb444de54ef8","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg","endpoint-snap-distance-exceeded","origin-snap-distance-exceeded"]},{"schemaVersion":1,"id":"primary","dungeonId":"shadow-labyrinth","mapId":555,"legs":[{"id":"leg-01-creature-146105","objectiveId":"creature-146105","objectiveName":"Ambassador Hellmaw","checkpoints":[[-1.3464,-1.0386,-2.1641],[2.4623,-1.0386,1.3685],[7.4009,-0.9752,1.762],[7.5913,-1.0386,-2.1768],[8.4547,-1.0386,-2.3038],[8.6578,-1.0386,1.7112],[13.1901,-1.0006,2.6634],[14.2566,-1.0006,-2.545],[18.5223,-1.0006,-3.6114],[22.1279,-0.9625,2.7269],[22.4707,-1.0006,-3.294],[28.6694,-1.0006,-0.8311],[34.4618,-1.0386,-4.973],[31.6021,-1.0386,-9.8355],[37.8642,-1.0386,-8.1089],[38.6006,-1.0386,-8.5786],[35.5378,-1.0386,-13.3776],[35.8044,-1.0386,-14.6472],[40.4669,-1.0386,-9.8482],[36.9343,-1.0386,-15.7771],[41.9269,-1.0386,-10.3814],[43.9582,-1.0386,-15.1423],[45.9895,-1.0386,-19.9032],[47.7225,-1.0386,-25.1973],[49.4554,-1.0386,-30.4914],[44.8262,-1.0386,-28.86],[40.1971,-1.0386,-27.2286],[40.032,-1.0386,-32.6624],[39.867,-1.0386,-38.0961],[44.4009,-1.0386,-41.1621],[48.9349,-1.0386,-44.2281],[44.6041,-1.0386,-47.4973],[40.2733,-1.0386,-50.7664],[44.9405,-1.0386,-48.9636],[49.6078,-1.0386,-47.1609],[48.0716,-1.0386,-52.8295],[46.5354,-1.0386,-58.4981],[51.4666,-1.0386,-60.6522],[56.3978,-1.0386,-62.8062],[61.3291,-1.0386,-64.9602],[64.2237,-1.0386,-70.2289],[67.1183,-1.0386,-75.4977],[62.5542,-1.0386,-75.5992],[57.9901,-1.0386,-75.7008],[62.5542,-1.0386,-76.4308],[67.1183,-1.0386,-77.1608],[62.4209,-1.0386,-77.4909],[57.7235,-1.0386,-77.821],[57.7235,-1.0386,-79.4873],[62.4209,-1.0386,-79.9903],[67.1183,-1.0386,-80.4934],[65.7853,-1.0006,-87.6443],[61.8242,-0.9815,-90.9769],[57.8631,-0.9625,-94.3095],[58.5106,-0.899,-98.0801],[59.1581,-0.8355,-101.8508],[65.4488,-0.8672,-101.9841],[71.7395,-0.899,-102.1174],[71.5872,-0.9244,-103.6409],[69.1496,-0.8228,-105.1136],[70.4065,-0.5943,-107.3099],[68.2736,-0.4673,-108.7699],[63.9952,-0.4419,-110.2299],[63.9952,-0.3023,-111.8296],[70.8635,-0.0611,-113.0991],[64.7315,-0.0611,-114.4957],[63.5254,-0.0357,-115.2955],[68.3879,0.1294,-116.0953],[74.431,0.396,-116.1207],[75.5609,0.7261,-118.1139],[75.5102,1.0688,-120.7293],[76.6782,1.3735,-122.8494],[76.2084,1.5386,-124.5761],[78.5952,1.729,-124.7665],[77.2368,1.8306,-127.3564],[78.4429,2.0972,-130.1622],[83.2672,2.4527,-129.2989],[83.3307,2.7193,-133.5646],[85.5588,2.9224,-137.5003],[87.7869,3.1255,-141.4359],[89.7928,3.1255,-135.4944],[91.5321,3.3033,-142.3627],[94.2744,3.3414,-136.8274],[96.001,3.4049,-137.0305],[96.4708,3.4683,-143.3657],[99.0353,3.481,-140.3314],[101.5998,3.4937,-137.2972],[102.0061,3.4937,-143.6323],[105.5355,3.4556,-143.6958],[109.268,3.4556,-137.2972],[109.8013,3.5191,-143.6958],[113.6639,3.4556,-143.6958],[116.9934,3.4937,-143.5688],[116.9934,3.4937,-137.2337],[120.2593,3.5318,-137.2972],[122.5319,3.6715,-143.3657],[123.1413,3.7349,-137.0305],[124.7409,3.9,-136.8274],[127.6482,4.1666,-137.97],[129.3748,4.4967,-131.0382],[132.1679,4.8014,-131.9142],[134.1865,5.0299,-130.7081],[135.3291,5.2203,-127.9658],[139.7345,5.3219,-132.6251],[142.5403,5.4235,-134.6311],[141.8039,5.652,-129.1084],[146.2728,5.8551,-130.6446],[144.7366,6.0963,-125.2997],[149.3452,6.2614,-127.5595],[149.3452,6.2995,-126.7597],[145.3333,6.4391,-121.364],[149.6626,6.6296,-121.8973],[151.4527,6.82,-120.1072],[148.2534,6.8962,-117.6442],[155.0582,7.1628,-117.2379],[152.8619,7.3659,-114.2291],[154.9313,7.5944,-112.9595],[160.2,7.696,-112.4263],[154.3981,7.823,-109.1635],[159.4637,7.9626,-106.637],[153.3951,8.1277,-103.5012],[159.7937,8.2292,-102.2316],[153.3316,8.2546,-101.4318],[159.8699,8.2546,-101.2414],[155.9723,8.2419,-97.6802],[152.0748,8.2292,-94.1191],[156.0739,8.2165,-90.7865],[160.0731,8.2038,-87.4538],[161.2664,8.1784,-80.522],[156.6325,8.1784,-79.619],[151.9986,8.1784,-78.716],[155.7946,8.1784,-72.7713],[151.2305,8.1784,-71.9],[146.6664,8.1784,-71.0288],[145.93,8.1784,-70.0893],[149.5356,8.1784,-65.6966],[149.1421,8.1784,-64.9602],[144.7049,8.1784,-64.1921],[140.2678,8.1784,-63.424],[144.2034,8.1784,-57.6221],[144.2034,8.1784,-55.959],[144.8001,8.1784,-55.2226],[145.0667,8.1784,-49.9603],[145.3333,8.1784,-44.6979],[139.1696,8.1784,-42.2349],[133.0058,8.1784,-39.772],[132.9106,8.1784,-34.1414],[132.8154,8.1784,-28.5109],[138.6808,8.1784,-25.7432],[144.5462,8.1784,-22.9755],[139.8107,8.1784,-22.6709],[135.0752,8.1784,-22.3662],[139.6076,8.1784,-22.1948],[144.1399,8.1784,-22.0234],[144.0638,8.1784,-20.1571],[139.8615,8.1784,-14.2917],[142.3943,8.1784,-11.3272],[144.9271,8.1784,-8.3628],[149.6626,8.1784,-11.9684],[146.2728,8.1784,-7.3091],[150.8687,8.1784,-10.9781],[146.933,8.1784,-6.633],[151.4971,8.1784,-5.6919],[156.0612,8.1784,-4.7509],[151.9351,8.1784,1.1177],[156.4992,8.1784,2.0509],[161.0633,8.1784,2.984]],"expectedDistance":797.59,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-146103","objectiveId":"creature-146103","objectiveName":"Blackheart the Inciter","checkpoints":[[161.0633,8.1784,2.984],[156.4992,8.1784,2.0509],[151.9351,8.1784,1.1177],[156.0612,8.1784,-4.7509],[160.5936,8.1784,-4.6874],[165.1259,8.1784,-4.6239],[161.5965,8.1784,-10.5687],[166.5352,8.1784,-6.3664],[163.2724,8.1784,-10.9019],[167.0049,8.1784,-6.9028],[168.0713,8.1784,-7.6391],[164.8085,8.1784,-11.9684],[170.2042,8.1784,-8.1724],[175.1428,8.1784,-12.5651],[178.4818,8.1784,-17.6307],[174.2161,8.1784,-18.367],[169.9503,8.1784,-19.1034],[174.0828,8.1784,-19.6683],[178.2152,8.1784,-20.2333],[174.0828,8.1784,-20.7665],[169.9503,8.1784,-21.2997],[174.2161,8.1784,-21.433],[178.4818,8.1784,-21.5663],[178.8754,8.1784,-22.5058],[174.3049,8.1784,-22.7407],[169.7345,8.1784,-22.9755],[175.4285,8.1784,-27.3429],[181.1225,8.1784,-31.7102],[187.0578,8.1784,-32.6052],[192.993,8.1784,-33.5003],[195.7987,8.2038,-35.6332],[196.3954,8.2038,-42.108],[196.9287,8.2292,-35.7728],[200.3946,8.2292,-35.7728],[204.5969,8.2038,-36.9662],[205.6633,8.1784,-42.2984],[210.3226,8.2038,-40.9527],[211.1225,8.2038,-37.0297],[211.9223,8.2292,-40.9654],[212.6586,8.2038,-36.9662],[212.8618,8.2038,-40.9654],[217.191,8.1784,-42.1714],[218.2574,8.2038,-36.9027],[222.3835,8.2292,-35.7728],[225.913,8.2292,-35.7728],[226.3827,8.2038,-42.108],[227.9887,8.2038,-38.204],[229.5947,8.2038,-34.3001],[229.7344,8.2038,-40.8257],[236.1457,8.1784,-44.2916],[236.7106,8.1784,-39.2959],[237.2756,8.1784,-34.3001],[244.5709,8.1784,-35.138],[251.8661,8.1784,-35.9759],[256.353,8.1784,-38.7732],[260.8399,8.1784,-41.5705],[265.3268,8.1784,-44.3678],[269.9237,8.2335,-41.6128],[274.5206,8.2885,-38.8579],[279.1175,8.3435,-36.1029],[279.6507,8.3435,-36.6361],[279.9173,8.1784,-41.9683],[280.6536,8.1784,-36.5726],[280.7933,8.1784,-41.3716],[283.599,8.1784,-41.6382],[285.0717,8.1784,-36.5726],[287.2681,8.1784,-41.3716],[287.4585,8.1784,-36.5726],[288.1822,8.1784,-35.9759],[288.3218,8.2038,-41.105],[288.982,8.3689,-41.9683],[289.3248,8.1784,-43.8346],[289.3629,8.1784,-39.9053],[289.401,8.1784,-35.9759],[295.2029,8.2038,-37.4994],[298.0658,8.2165,-32.9671],[300.9287,8.2292,-28.4347],[307.8605,8.6863,-29.8312],[309.0666,9.1179,-27.0382],[310.6663,9.8924,-27.0255],[311.0598,10.2351,-27.8253],[312.2659,10.8699,-27.4317],[313.0785,11.1619,-30.6438],[314.6781,11.9237,-30.2375],[315.4652,12.3934,-33.0305],[318.2583,12.8632,-28.6251],[323.4572,12.8632,-32.8274],[328.6561,12.8632,-37.0297]],"expectedDistance":409.14,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-146106","objectiveId":"creature-146106","objectiveName":"Grandmaster Vorpil","checkpoints":[[328.6561,12.8632,-37.0297],[331.8554,12.8632,-42.8316],[335.0547,12.8632,-48.6336],[339.6569,12.9266,-52.036],[344.2591,12.9901,-55.4385],[347.8647,13.4345,-53.4325],[350.3086,12.9012,-51.2489],[355.1234,12.8632,-49.6619],[361.065,12.8632,-50.2332],[366.6765,12.8632,-52.9374],[372.8847,12.9012,-51.6805],[374.4717,12.9012,-48.5574],[375.0113,12.952,-42.9205],[375.5508,13.0028,-37.2836],[376.2745,13.0409,-43.0348],[376.8712,13.0028,-37.0932],[377.8614,12.9012,-42.8951],[381.5305,12.8251,-42.8316],[384.2728,12.8251,-36.6996],[388.1069,12.806,-36.871],[391.941,12.787,-37.0424],[396.4733,12.787,-42.1714],[400.9422,12.8632,-37.0297],[401.6024,12.8632,-37.0297],[401.7928,12.8251,-40.9654],[402.6561,12.787,-36.9662],[409.1309,12.8251,-35.6966],[412.2668,12.8251,-40.9019],[418.6019,12.787,-42.108],[423.4025,12.806,-42.4],[428.2031,12.8251,-42.692],[428.2031,12.8251,-49.5603],[433.4623,12.787,-53.4325],[432.2689,12.8251,-57.1651],[428.2031,12.8632,-57.3555],[433.3988,12.9266,-61.5451],[433.3988,12.9266,-62.2814],[429.3965,12.8632,-62.4846],[428.6093,12.8632,-66.89],[433.7416,12.8251,-70.7622],[433.7733,12.806,-74.5344],[433.805,12.787,-78.3066],[428.6093,12.787,-81.9788],[433.2718,12.7489,-86.0446],[429.333,12.7489,-86.235],[429.3965,12.8251,-87.0984],[433.2718,12.8632,-87.5681],[433.2718,12.8632,-88.241],[429.5361,12.8632,-88.679],[425.8004,12.8632,-89.117],[426.3336,12.787,-92.786],[429.8027,12.787,-96.252],[429.9297,12.7489,-99.9845],[432.8021,12.7489,-100.5177],[429.9297,12.7489,-101.508],[432.8021,12.7489,-101.965],[433.0052,12.7489,-102.6887],[429.9297,12.7489,-102.9553],[431.7991,12.787,-104.7581],[430.1995,12.8251,-107.5003],[432.272,12.9012,-109.8364],[431.8658,13.0282,-113.8355],[433.4654,13.9931,-115.8287],[433.859,14.12,-117.4411],[431.4722,12.9266,-121.4275],[432.6656,12.8885,-127.0517],[431.8658,12.9901,-129.0449],[433.0592,12.9647,-131.4444],[434.6588,12.9012,-132.2316],[434.2526,12.9647,-135.0373],[434.6588,12.7616,-136.2307],[434.2526,13.2186,-137.4368],[435.3317,13.0663,-139.3285],[434.024,12.9647,-140.0902],[434.024,12.8251,-141.6899],[432.2086,12.7616,-143.2641],[433.7955,12.6981,-144.0386],[432.8053,12.6727,-145.2447],[429.9995,12.7362,-146.3619],[428.5236,12.9393,-149.6755],[428.2665,13.0663,-152.6336],[429.0695,12.9647,-154.2332],[428.5966,13.1298,-155.6932],[429.6028,12.8632,-156.6835],[428.7744,13.1298,-157.039],[429.9328,12.787,-157.5468],[428.9267,13.0917,-158.1594],[430.1487,12.7235,-159.8003],[432.1578,12.4188,-160.6001],[432.6656,12.4188,-162.2283],[431.8658,12.3934,-162.6219],[432.4117,12.5585,-165.0595],[431.8023,12.5838,-165.6816],[432.3736,13.0155,-167.1035],[433.3385,13.2821,-167.5732],[433.9225,13.2821,-168.8555],[433.4781,13.2186,-170.0235],[435.3444,13.0663,-174.1496],[435.5729,13.0663,-177.1077],[434.3287,13.1552,-181.1576],[434.8366,13.0536,-182.4526],[433.1607,12.9266,-183.9253],[433.7701,12.8251,-189.9303],[430.7962,12.787,-194.7674],[429.7265,12.7489,-199.9092],[429.9297,12.7489,-200.5693],[432.8021,12.7489,-201.0264],[432.8021,12.7489,-201.9532],[429.9297,12.7489,-202.4864],[429.3965,12.7489,-206.6252],[432.8021,12.7489,-210.2308],[433.3353,12.787,-214.0395],[429.4599,12.787,-214.8393],[433.3988,12.8251,-215.6391],[433.5257,12.787,-216.439],[428.7871,12.787,-220.2985],[433.8558,12.787,-224.158],[433.8558,12.787,-231.4834],[428.7871,12.787,-235.3556],[433.5257,12.787,-239.2278],[433.3988,12.8251,-240.0276],[429.4599,12.787,-240.8274],[433.3353,12.787,-241.6272],[428.2031,12.787,-245.3598],[433.3353,12.787,-246.4897],[434.5287,12.787,-250.0953],[428.2031,12.8251,-252.901],[434.5287,12.787,-256.4431],[431.012,12.8251,-262.9687],[424.5467,12.8632,-259.9598],[424.534,12.8632,-266.168],[421.2553,12.9266,-266.5743],[420.7983,12.9266,-260.8104],[420.1381,12.9266,-266.8917],[417.8021,12.8632,-266.4981],[415.428,12.8632,-260.493],[409.4229,12.8251,-261.4452],[406.1221,12.787,-266.5108],[401.3358,12.8505,-265.6348],[401.1327,12.7489,-261.6991],[396.0036,12.787,-266.4981],[393.2359,12.787,-263.9653],[390.4683,12.787,-261.4325],[386.6342,12.806,-263.9971],[382.8001,12.8251,-266.5616],[379.6007,12.8251,-260.493],[374.5669,12.8251,-265.6539],[369.5331,12.8251,-270.8147],[367.8636,12.8251,-266.0538],[366.1941,12.8251,-261.2929],[362.2267,12.806,-259.2933],[358.2593,12.787,-257.2937],[354.9314,12.787,-262.8862],[351.6036,12.787,-268.4786],[351.1656,12.806,-275.3089],[350.7276,12.8251,-282.1392],[351.9114,12.8885,-284.1578],[351.9876,13.0155,-285.3639],[349.5056,13.6249,-284.5006],[348.2328,13.8915,-283.2945],[347.0521,14.6152,-283.8277],[346.2396,14.5898,-283.0279],[345.2367,15.4277,-283.6119],[344.4495,15.4023,-282.7994],[343.6624,15.6689,-282.8121],[342.7229,16.3672,-283.485],[341.2121,16.5322,-283.0787],[340.5519,16.3291,-282.4058],[339.2443,16.9639,-282.8629],[337.7208,17.332,-282.4566],[336.6163,17.3574,-281.5933],[333.0615,18.0303,-281.3267],[331.4999,17.7383,-280.3745],[329.2401,17.5352,-280.1206],[327.8436,18.2969,-282.7105],[326.0662,17.9287,-282.4947],[325.863,18.2969,-283.7897],[324.6442,16.7226,-281.4917],[323.0065,15.6943,-282.5963],[322.4733,14.8945,-281.9742],[319.7818,13.6884,-284.1578],[320.4039,13.7899,-283.1676],[318.7534,13.2567,-283.942],[319.0581,13.2948,-282.6344],[316.1889,12.8251,-284.0309],[316.6459,12.8251,-282.5836],[313.3451,12.8251,-282.1646],[310.8059,12.8632,-279.3969],[306.7814,12.9647,-280.146],[306.0577,12.9647,-278.5971],[306.172,13.0917,-279.7651],[304.7374,13.2948,-277.8862],[303.0615,14.0312,-278.2289],[301.8681,13.8915,-276.642],[298.2626,14.5263,-276.2357],[295.8631,15.7959,-278.2162],[292.2575,16.0625,-278.2162],[291.4577,14.996,-276.223],[289.4645,14.831,-276.6293],[287.8648,15.4023,-278.6352],[285.4653,15.0341,-278.6225],[283.8656,15.4658,-279.8159],[281.8597,15.0595,-279.4096],[280.2728,14.9199,-280.6157],[278.2668,14.2216,-280.2222],[277.0608,13.8534,-281.022],[277.0734,14.1581,-283.0279],[276.0578,13.7011,-284.0055],[275.2199,13.1298,-283.4596],[274.2931,12.8632,-284.5895],[270.2908,12.8251,-279.4858],[269.9226,12.787,-280.0317],[266.1869,12.8885,-275.4359],[262.4512,13.2186,-269.964],[261.8545,13.7899,-270.091],[258.6552,16.9766,-267.463],[258.2489,17.1797,-267.7677],[258.0458,17.2432,-267.2345],[257.5506,17.2051,-267.5011],[257.6522,17.167,-265.1016],[254.1228,17.167,-265.9014],[251.4567,17.167,-262.6386]],"expectedDistance":786.03,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-146104","objectiveId":"creature-146104","objectiveName":"Murmur","checkpoints":[[251.4567,17.167,-262.6386],[247.9273,17.167,-261.7753],[246.9878,17.167,-265.3047],[246.5181,17.167,-261.7753],[244.1821,17.167,-261.8388],[242.3158,17.167,-265.3682],[240.2591,17.167,-265.4317],[240.0687,17.167,-261.8261],[233.7462,17.2051,-260.4296],[230.5088,17.2241,-262.9624],[227.2714,17.2432,-265.4952],[224.034,17.2749,-262.9624],[220.7966,17.3066,-260.4296],[219.9841,17.3066,-266.752],[219.5143,17.3066,-260.6708],[215.8453,17.2432,-266.9425],[211.7192,17.2051,-265.876],[210.7924,17.2051,-260.7343],[206.4631,17.2051,-261.623],[206.26,17.2432,-265.7618],[205.7903,17.4717,-261.496],[205.0539,17.4971,-261.496],[204.5842,17.3066,-261.9911],[204.5842,17.3066,-265.9903],[203.3273,17.3066,-265.6602],[199.4678,17.3701,-270.5734],[195.748,17.3447,-271.4367],[188.5368,17.3066,-271.7034],[184.6964,17.2368,-266.6378],[180.8559,17.167,-261.5722],[180.1957,17.2686,-265.6348],[179.5356,17.2686,-265.6348],[179.3324,17.167,-261.6991],[174.9397,17.2051,-260.747],[173.6701,17.2051,-265.7491],[170.0011,17.2432,-267.0059],[167.1319,17.2813,-266.8155],[166.7256,17.3066,-272.9729],[159.8572,17.2686,-273.5823],[159.4637,17.2686,-274.5091],[153.065,17.2051,-277.3656],[154.1949,17.2051,-283.0914],[159.3367,17.2051,-286.4938],[156.9372,17.2051,-289.49],[154.5377,17.2051,-292.4862],[158.4734,17.2051,-293.286],[154.5377,17.2432,-294.0859],[154.3981,17.2051,-294.8222],[158.3972,17.167,-295.0254],[159.3621,17.2051,-302.2905],[154.1569,17.2051,-306.2896],[153.6236,17.2051,-311.4599],[153.0904,17.2051,-316.6303],[159.4256,17.2432,-317.1635],[152.3287,17.2432,-318.6362],[150.2974,17.2432,-322.6353],[148.266,17.2432,-326.6345],[153.0015,17.2241,-327.1994],[157.737,17.2051,-327.7644],[159.7366,17.186,-331.7318],[161.7362,17.167,-335.6992],[157.225,17.167,-339.1228],[152.7138,17.167,-342.5464],[148.2026,17.167,-345.97],[140.7692,17.167,-346.4017],[133.3359,17.167,-346.8333],[131.7362,17.167,-348.8266],[131.0761,17.167,-352.356],[130.6063,17.2051,-351.5561],[130.4413,17.2686,-353.9556],[129.6288,17.4717,-353.7017],[128.7655,18.2334,-354.3619],[127.1658,20.1759,-352.5337],[126.5818,20.798,-352.8257],[125.8454,21.4581,-350.6928],[125.6677,21.547,-352.6226],[123.5983,21.547,-352.7622],[121.6686,21.547,-355.8346],[123.6618,21.547,-356.6979],[121.6686,21.547,-360.0369],[123.738,21.547,-360.1638],[123.6618,21.547,-366.1054],[121.6686,21.547,-366.9687],[121.6686,21.547,-370.168],[123.2682,21.547,-372.4279],[125.2614,21.547,-372.2247],[125.7185,21.5851,-370.4346],[126.4421,20.8614,-370.8663],[126.5183,20.8614,-368.8604],[128.8543,18.1065,-368.4922],[129.6542,17.4463,-368.9619],[130.4667,17.2432,-368.4922],[130.6063,17.2051,-370.8917],[131.0761,17.167,-370.295],[131.7362,17.167,-373.8244],[133.3359,17.167,-375.6907],[140.7692,17.167,-376.1604],[148.2026,17.167,-376.6301],[149.269,17.167,-381.226],[148.2026,17.167,-386.0281],[140.7692,17.167,-386.4598],[133.3359,17.167,-386.8914],[131.7362,17.167,-388.8847],[131.0761,17.167,-392.4934],[129.8065,17.4082,-391.0175],[129.4764,17.6113,-393.0266],[128.6766,18.2334,-392.6172],[127.3181,19.8585,-393.0901],[126.7214,20.5948,-391.4111],[125.9851,21.3947,-392.3538],[125.6042,21.4835,-390.497],[123.4713,21.547,-390.2939],[121.6686,21.547,-392.6331],[123.6618,21.547,-395.899],[121.6686,21.547,-396.7623],[123.738,21.547,-397.7653],[123.4713,21.5851,-402.7166],[125.6677,21.5597,-405.7001],[125.6677,21.5597,-406.8935],[125.198,21.6232,-407.1601],[125.5788,21.5597,-409.6739],[126.4421,20.963,-410.1055],[127.0008,20.3282,-408.6709],[128.1307,18.9952,-408.6074],[129.5907,17.4971,-409.5723],[130.4032,17.2686,-408.9121],[130.6063,17.2051,-411.3116],[131.0761,17.167,-410.5118],[131.7362,17.167,-414.0412],[133.3359,17.167,-415.9075],[140.801,17.167,-416.3709],[148.266,17.167,-416.8342],[149.3325,17.167,-421.4301],[156.5627,17.167,-421.6269],[163.7929,17.167,-421.8237],[164.7959,17.167,-426.4957],[172.2609,17.167,-426.9654],[179.726,17.167,-427.4352],[181.2622,17.167,-429.2379],[181.8589,17.167,-432.8308],[183.2427,17.3701,-429.111],[183.7124,17.7637,-430.5075],[184.9185,18.9952,-429.4411],[185.8707,20.0997,-431.8279],[187.0641,21.2042,-432.6404],[187.2672,21.3947,-434.9129],[189.4636,21.5851,-435.0526],[191.2664,21.547,-436.3095],[189.2732,21.547,-437.1728],[189.4636,21.5851,-438.3662],[191.5203,21.5851,-440.7656],[189.4509,21.5597,-443.1651],[191.3172,21.5216,-446.0978],[189.1843,21.4962,-446.9611],[189.3493,21.5597,-448.2434],[187.153,21.4708,-448.3831],[187.4323,21.4962,-451.0872],[187.0641,21.3312,-452.2552],[187.4704,21.4962,-453.4486],[187.0641,21.3312,-455.0229],[185.8707,20.3028,-456.2417],[184.8424,19.0713,-456.2163],[182.8364,17.3447,-459.4029],[183.4077,17.5479,-461.4596],[184.2837,17.5479,-462.3991],[182.3413,17.2813,-465.1668],[182.354,17.2813,-468.7628],[180.2719,17.6367,-471.8257],[180.6655,17.9922,-473.4285],[177.8597,18.3477,-474.6346],[177.4535,18.3477,-477.8339],[176.2601,17.9922,-480.6397],[172.6672,17.1924,-479.8398],[173.0734,16.3926,-483.839],[172.2736,16.1704,-487.6413],[171.4738,15.9482,-491.4437],[165.2719,15.9482,-492.2435],[159.0701,15.9482,-493.0434]],"expectedDistance":637.75,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"b0fce36463a0bdb1bafffac3a05c711910f48d91ec851ca1f2755f7f960007fc","generationStatus":"Candidate","generationIssues":[]},{"schemaVersion":1,"id":"primary","dungeonId":"sethekk-halls","mapId":556,"legs":[{"id":"leg-01-creature-138718","objectiveId":"creature-138718","objectiveName":"Darkweaver Syth","checkpoints":[[6.5557,0.0995,-1.3832],[3.9521,0.133,-2.517],[1.5501,0.1666,2.2808],[-4.5221,0.1666,2.7427],[-8.3855,0.133,-2.391],[-12.3077,0.0995,2.0708],[-13.24,0.133,-1.9963],[-13.7103,0.2674,2.0036],[-14.4494,0.2674,2.0708],[-18.2813,0.2506,-3.0587],[-22.1132,0.2338,-8.1882],[-25.8811,0.2506,-8.8307],[-29.6489,0.2674,-9.4732],[-31.8494,0.2338,-3.0041],[-32.7816,0.2338,3.1374],[-33.4451,0.2338,-2.9957],[-36.855,0.2002,-2.6682],[-42.8601,0.2002,0.5233],[-39.9205,0.2002,6.7993],[-46.1944,0.2002,5.0691],[-46.5135,0.2338,10.0853],[-40.3909,0.2338,10.7488],[-46.5303,0.2338,11.6726],[-41.2559,0.1666,15.3344],[-46.4547,0.133,18.9291],[-41.5079,0.1666,22.2046],[-41.5751,0.1666,22.9437],[-45.5141,0.0995,23.4812],[-45.5813,0.0995,24.4134],[-40.4496,0.133,27.8737],[-45.5896,0.1666,31.7371],[-45.5896,0.1666,39.0691],[-40.4496,0.133,42.9325],[-45.5813,0.0995,47.1991],[-41.5079,0.133,48.1397],[-45.4469,0.2002,48.3413],[-45.5141,0.2002,49.0804],[-42.1126,0.133,53.2818],[-45.5141,0.0995,56.9458],[-44.9094,0.0995,61.1472],[-42.1126,0.0995,61.6847],[-42.1126,0.0995,62.6842],[-44.9094,0.0995,63.1461],[-43.2464,0.133,65.7161],[-40.1809,0.133,65.9177],[-40.0465,0.301,69.0504],[-40.9116,0.4018,71.5028],[-39.8449,0.3682,72.5946],[-40.2901,0.133,72.7206],[-38.9127,0.0659,75.9037],[-39.0387,-0.2701,76.7772],[-38.4256,-0.1693,76.6596],[-37.4261,-0.5053,77.659],[-35.4356,-0.4717,77.4911],[-34.8897,-0.4045,76.9116],[-33.3192,-0.7068,77.3147],[-28.5235,-0.2029,78.8937],[-28.1792,-0.5724,80.229],[-27.4317,-0.606,80.4054],[-26.7094,-0.8076,82.0264],[-25.9703,-0.606,80.9597],[-25.038,-0.5724,80.9597],[-24.4921,-0.6732,82.8998],[-23.1231,-0.3373,82.1439],[-22.5184,-0.4045,83.9413],[-21.7542,-0.2701,83.7985],[-19.1485,-0.0013,85.3271],[-12.6605,0.133,85.6294],[-10.7036,0.2002,84.4032],[-9.2254,0.1666,85.411],[-9.7629,0.2002,89.0813],[-5.572,0.2674,92.7515],[-1.2382,0.1666,93.6166],[1.5417,0.133,100.1444],[4.6156,0.0995,102.0782],[4.8844,0.0995,99.0778],[5.6235,0.0995,99.2794],[6.6229,0.0995,102.1454],[7.152,0.0995,99.2794],[7.9499,0.0995,102.2798],[11.8217,0.133,102.4226],[15.492,0.133,105.9521],[19.095,0.2002,106.3553],[19.9601,0.301,102.221],[21.0855,0.4018,102.683],[21.4508,0.3178,98.7419],[21.8162,0.2338,94.8008],[25.7468,0.133,95.2039],[29.4086,0.133,98.935],[33.3497,0.0995,99.2122],[33.6205,0.0995,102.2798],[34.4289,0.0995,99.2794],[34.9664,0.0995,102.1454],[35.9659,0.0995,99.2794],[36.6966,0.0995,102.2798],[37.4272,0.0995,99.2122],[38.8298,0.0995,104.1443],[42.8276,0.1666,100.8835],[47.0605,0.1666,102.1853],[51.2935,0.1666,103.4871],[54.9595,0.1666,101.8525],[58.6255,0.1666,100.2179],[63.2952,0.0995,102.8131],[63.6312,0.133,103.6194],[60.5656,0.1666,108.224],[57.3657,0.2002,114.4831],[62.9257,0.1666,110.6533],[62.2244,0.1498,114.9503],[61.5231,0.133,119.2473],[65.1219,0.133,121.5149],[68.7208,0.133,123.7826],[67.9397,0.1163,128.0281],[67.1586,0.0995,132.2737],[72.223,0.0995,133.8778],[69.1575,0.0995,134.1466],[72.223,0.0995,134.8772],[69.3591,0.0995,135.3392],[72.223,0.0995,136.3386],[69.3591,0.0995,136.8761],[68.8887,0.0995,141.1427],[72.349,0.0995,144.6785],[72.8193,0.0995,148.4075],[68.8216,0.0995,149.407],[72.6934,0.133,149.9445],[72.7605,0.133,150.7508],[68.1497,0.133,152.5565],[73.1553,0.133,153.6231],[74.3479,0.133,157.8225],[68.1413,0.133,161.0896],[74.0791,0.0995,163.8863],[74.2807,0.133,170.0426],[80.8149,0.133,170.0426],[80.8821,0.1666,176.0392],[84.6867,0.133,171.084],[88.6845,0.1666,172.2766],[88.9448,0.2002,176.3416],[93.1442,0.301,171.4704],[93.8833,0.2674,171.4704],[94.488,0.133,175.4765],[95.2942,0.0995,171.4704],[99.0904,0.0995,171.8063],[102.7523,0.0995,175.4765],[106.7501,0.0995,172.0751],[107.0188,0.0995,175.1406],[107.8167,0.0995,172.0751],[108.3458,0.0995,174.939],[109.3453,0.0995,174.939],[109.8156,0.0995,172.0751],[110.4875,0.0995,171.8735],[110.689,0.0995,174.939],[112.2848,0.0995,177.1395],[114.6784,0.133,177.9373],[116.6689,0.1666,183.2033],[120.4735,0.2674,181.5992],[123.2955,0.7378,183.6065],[126.0838,0.8049,182.8086],[128.4775,0.4354,180.8097],[131.0307,0.469,181.1373],[132.7692,0.2002,178.668],[134.661,0.2002,177.551],[136.1056,0.1666,174.8298],[136.7712,0.4018,174.4939],[137.5796,0.8049,175.2918],[138.8898,1.7456,172.2178],[140.5611,1.8128,173.2929],[141.7033,1.8128,171.6131],[144.1053,1.8128,171.21],[146.499,1.7792,172.0079]],"expectedDistance":632.96,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-138719","objectiveId":"creature-138719","objectiveName":"Talon King Ikiss","checkpoints":[[146.499,1.7792,172.0079],[140.176,2.5315,175.9026],[133.8531,3.2838,179.7973],[127.5302,4.0361,183.6919],[121.2073,4.7884,187.5866],[114.8843,5.5407,191.4813],[108.5614,6.2929,195.376],[102.2385,7.0452,199.2707],[95.9155,7.7975,203.1654],[89.5926,8.5498,207.0601],[83.2697,9.3021,210.9548],[76.9467,10.0544,214.8495],[70.6238,10.8067,218.7442],[64.3009,11.559,222.6389],[57.978,12.3113,226.5335],[51.655,13.0636,230.4282],[45.3321,13.8159,234.3229],[39.0092,14.5682,238.2176],[32.6862,15.3205,242.1123],[26.3633,16.0728,246.007],[20.0404,16.825,249.9017],[13.7175,17.5773,253.7964],[7.3945,18.3296,257.6911],[1.0716,19.0819,261.5858],[-5.2513,19.8342,265.4805],[-11.5743,20.5865,269.3751],[-17.8972,21.3388,273.2698],[-24.2201,22.0911,277.1645],[-30.5431,22.8434,281.0592],[-36.866,23.5957,284.9539],[-43.1889,24.348,288.8486],[-49.5118,25.1003,292.7433]],"expectedDistance":231.39,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"6f5a4394313632813af944a27c6c808cd561a99c1ef4ce3f3ce4a9934b5a3bc8","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"mana-tombs","mapId":557,"legs":[{"id":"leg-01-creature-91163","objectiveId":"creature-91163","objectiveName":"Pandemonius","checkpoints":[[-1.048,-0.8731,-0.9974],[2.1474,-0.8731,2.5987],[5.5482,-0.7807,-0.9974],[6.288,-0.7807,-0.9357],[6.8223,-0.8731,2.9995],[9.956,-0.8731,4.1297],[13.624,-0.8423,-1.0076],[20.8882,-0.8423,-1.0076],[24.4843,-0.8731,4.1297],[30.0839,-0.8423,2.9995],[30.2791,-0.7498,-0.9357],[31.0086,-0.719,-0.9974],[36.2178,-0.8115,4.1297],[37.3583,-0.8423,-0.8638],[42.0332,-0.8731,-1.7988],[46.432,-0.8731,-0.9665],[50.8308,-0.8731,-0.1343],[52.0959,-0.8731,-3.8331],[53.3609,-0.8731,-7.532],[58.6241,-0.8731,-6.1346],[56.0965,-0.8731,-9.2684],[56.5589,-0.8115,-9.8027],[59.6207,-0.8115,-7.5422],[60.1447,-0.8115,-8.0046],[57.4836,-0.8115,-10.8712],[64.3573,-0.8731,-11.2],[62.6928,-0.8731,-16.2654],[69.6281,-0.8731,-16.5325],[64.2237,-0.8731,-18.8648],[70.5631,-0.8731,-19.132],[71.0974,-0.8731,-23.2623],[69.8953,-0.8731,-26.2625],[64.758,-0.8731,-27.3927],[69.6281,-0.8423,-30.5984],[65.7649,-0.8423,-31.3998],[69.7001,-0.8115,-32.2012],[69.4946,-0.8731,-36.7939],[65.7546,-0.8731,-40.4003],[66.217,-0.8731,-44.469],[69.2891,-0.8731,-44.7362],[66.2272,-0.8731,-45.5376],[69.0939,-0.8731,-46.0719],[66.2272,-0.8731,-47.0685],[69.0939,-0.8731,-47.5309],[66.0218,-0.8731,-48.2603],[69.0836,-0.8731,-48.5275],[64.0182,-0.8731,-49.1953],[64.0285,-0.8423,-49.7913],[59.9598,-0.7807,-51.9926],[58.3569,-0.719,-53.9987],[56.7644,-0.5546,-54.4919],[55.552,-0.4827,-53.2897],[51.2058,0.3393,-57.659],[48.7374,0.6064,-58.1625],[48.406,0.4728,-56.1486],[47.0164,0.2057,-54.4431],[44.0779,-0.0614,-55.1315],[42.6189,-0.0923,-57.3302],[42.886,0.0105,-59.6625],[42.2798,-0.0512,-61.3989],[36.9987,-0.6471,-63.7826],[35.6733,-0.7498,-63.2484],[33.269,-0.8115,-65.18],[31.9539,-0.7498,-63.6594],[30.0839,-0.719,-65.3238],[28.7174,-0.8115,-69.0432],[27.7207,-0.719,-69.3823],[26.6316,-0.8731,-71.8687],[27.9879,-0.8423,-73.564],[28.3167,-0.7498,-76.5026],[27.7618,-0.6882,-76.7389],[28.9537,-0.1539,-81.1261],[30.4127,-0.5854,-82.5337],[30.0942,-0.3183,-88.1436],[31.3579,-0.5135,-87.8046],[30.3613,-0.2772,-89.4691],[34.0293,-0.5546,-90.1986],[34.1629,-0.3183,-92.161],[33.6081,-0.0923,-93.6405],[38.0878,-0.6882,-94.668],[39.8858,-0.5854,-98.7264],[40.2865,-0.6574,-97.8017],[41.5503,-0.5546,-99.8772],[42.5572,-0.3491,-100.0827],[43.3175,0.0208,-102.0965],[45.0745,-0.1539,-103.4014],[46.6182,-0.0512,-103.3911],[47.358,-0.5135,-104.5932],[48.2339,-0.4108,-104.9939],[49.1098,-0.1539,-104.5932],[49.5722,-0.1847,-105.3946],[50.8976,-0.082,-105.1275],[51.0928,-0.1847,-107.3982],[52.2333,-0.0717,-109.1346],[54.3601,-0.2464,-107.9941],[53.6306,-0.2156,-111.2614],[55.1513,-0.2875,-112.4533],[58.2953,-0.493,-109.9565],[60.1858,-0.6163,-112.8642],[63.1963,-0.6471,-110.3983],[67.0389,-0.5443,-111.8984],[70.0391,-0.6471,-115.5665],[69.248,-0.9759,-119.1626]],"expectedDistance":345.27,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-91161","objectiveId":"creature-91161","objectiveName":"Tavarok","checkpoints":[[69.248,-0.9759,-119.1626],[64.7785,-1.0067,-123.0258],[65.8882,-1.0478,-127.6596],[64.8196,-0.9142,-131.5229],[67.3369,-0.9451,-132.4784],[67.789,-0.8731,-133.7422],[66.8026,-0.7807,-134.1942],[67.6451,-0.7498,-135.0881],[65.693,-0.6779,-136.1875],[63.859,-0.7601,-139.8555],[62.025,-0.8423,-143.5235],[67.5629,-0.8423,-143.4516],[70.4295,-0.8731,-147.1813],[69.623,-0.8731,-150.8493],[68.8164,-0.8731,-154.5173],[64.8916,-0.8731,-154.7125],[65.693,-0.8115,-159.0484],[69.5562,-0.7807,-159.521],[69.5562,-0.7807,-160.1889],[65.9498,-0.7807,-160.98],[70.7481,-0.8423,-164.72],[66.0834,-0.8423,-168.5216],[64.9532,-0.8731,-171.9224],[70.2446,-0.8423,-172.1177],[67.9226,-0.8731,-173.4225],[73.3886,-0.904,-175.1615],[72.0016,-1.0067,-177.034],[74.19,-1.0067,-177.8586],[71.457,-1.0786,-178.2079],[70.2754,-1.1403,-179.1532],[72.5256,-1.1403,-180.0779],[71.8988,-1.2738,-182.5643],[74.4572,-0.8731,-183.4582],[74.6113,-0.6368,-184.5473],[73.851,-1.2122,-186.4584],[74.0667,-1.3149,-187.8454],[72.4536,-1.6848,-189.5408],[73.142,-1.7156,-190.7018],[72.7516,-1.88,-191.8936],[74.7654,-1.7773,-192.1813],[76.06,-2.0753,-194.7089],[77.7553,-2.0136,-195.6027],[78.156,-2.1164,-196.4042],[77.6628,-2.2499,-196.7227],[78.3512,-2.2499,-197.4111],[78.3512,-2.2088,-198.6029],[80.7658,-2.4451,-200.2057],[82.0398,-2.5171,-202.5689],[82.0295,-2.4451,-205.3636],[84.9475,-2.5068,-210.2132],[91.7595,-2.2807,-210.3262],[90.1567,-1.9417,-213.2031],[92.9617,-1.541,-215.7306],[95.7666,-1.4793,-216.1211],[100.5135,-0.9451,-218.4431],[102.106,-0.9451,-217.2513],[104.1609,-0.6471,-218.8027],[106.1645,-0.1128,-222.1111],[108.4763,-0.082,-220.7138],[109.1647,0.0105,-220.9912],[111.3968,0.0105,-219.4192],[112.8584,0.6167,-223.7448],[114.248,0.5859,-223.0256],[116.9502,0.5139,-222.6968],[118.2551,0.5859,-223.6112],[119.0873,0.555,-223.4365],[120.2792,1.3256,-224.4434],[121.2347,0.9249,-223.6009],[122.6629,1.2948,-223.5804],[123.567,1.0277,-222.594],[124.3582,1.3564,-222.594],[125.55,1.5208,-223.3852],[126.3514,1.4181,-222.9742],[128.0159,1.4489,-223.5907],[129.6907,1.6852,-225.399],[130.4818,1.7161,-225.0085],[130.8106,1.4489,-224.0119],[131.5504,1.4489,-224.5256],[132.6908,1.1818,-224.5873],[133.5745,0.9866,-223.9605],[136.0301,0.6578,-224.3921],[136.8418,0.3598,-223.0461],[138.7015,0.0619,-222.9023],[139.8933,-0.2053,-222.0906],[142.3592,-0.4108,-222.9845],[145.1642,-0.5443,-220.5905],[148.9555,-0.6471,-220.4364],[152.2844,-0.719,-217.2307],[153.3427,-0.7498,-217.6211],[153.4249,-0.719,-214.9806],[157.5142,-0.8115,-215.0628],[161.8192,-0.8423,-216.193],[162.8878,-0.8423,-221.3919],[167.7579,-0.8731,-225.3271],[167.9634,-0.8423,-221.3303],[168.8984,-0.8423,-221.3919],[169.4327,-0.7807,-225.3271],[170.1622,-0.7807,-225.399],[174.6933,-0.8731,-220.2617],[175.957,-0.8423,-225.4606],[180.2929,-0.8115,-226.6525],[183.8273,-0.8423,-220.3233],[184.3616,-0.7807,-226.7244],[187.6906,-0.7293,-222.892],[191.0195,-0.6779,-219.0596],[191.6155,0.1903,-214.6056],[192.2114,1.0585,-210.1515],[196.5986,2.127,-207.5829],[195.8075,2.5277,-205.2917],[199.5063,2.2298,-204.0536],[203.2052,1.9318,-202.8155],[206.9965,1.6236,-199.7434],[211.7947,0.8838,-197.1337],[214.4147,0.0824,-196.4555],[215.997,0.2879,-197.2261],[215.7915,0.0516,-196.6508],[216.9936,0.1441,-196.5172],[218.1958,-0.195,-195.0479],[221.2576,-0.38,-193.3423],[222.4494,-0.6471,-191.8834],[224.6071,-0.7396,-191.4313],[225.1516,-0.904,-190.0648],[226.1483,-0.904,-189.8593],[226.8778,-0.9759,-187.5989],[228.7169,-0.9142,-186.705],[230.2478,-0.9862,-184.311],[231.6863,-0.8834,-183.9719],[232.4774,-0.8834,-182.441],[234.7507,-0.7807,-181.7013],[240.7125,-0.7807,-177.7712],[246.5921,-0.5546,-175.2925],[247.0442,-0.719,-175.8679],[248.4107,-0.6882,-175.498],[249.1402,-0.7807,-176.0323],[254.4213,-0.8731,-176.3919],[260.4217,-0.9759,-175.9912],[267.5625,-0.8526,-177.743],[268.4461,-0.8526,-177.6197],[268.703,-1.017,-176.4047],[270.7065,-1.0478,-176.004],[272.4326,-0.8834,-177.6813],[272.4326,-0.6882,-180.4889],[275.1451,-0.6882,-181.4136],[276.3472,-0.5238,-183.4171],[279.1419,-0.4519,-184.2083],[281.1455,-0.3183,-186.1912],[283.5497,-0.4827,-186.181],[285.954,-0.6471,-186.9927],[287.6184,-0.6163,-188.8626],[290.4131,-0.7807,-188.7907],[290.0843,-0.7909,-191.6779],[293.7523,-0.7807,-191.8628],[297.8647,-0.4827,-193.1677],[300.1688,-0.4211,-194.976],[307.3738,0.3495,-196.846],[306.4697,0.216,-198.3461],[309.2952,0.6475,-198.9317],[307.4971,0.1749,-201.3976],[308.7095,0.0105,-204.9012],[310.6412,-0.0512,-206.8431],[313.6927,0.3187,-205.528],[313.4872,-0.2772,-210.3365],[315.4188,-0.0101,-208.9289],[316.7545,-0.1436,-211.5283],[317.2888,-0.5135,-216.193],[320.7513,-0.4108,-218.1862],[321.9432,-0.719,-222.1728]],"expectedDistance":503.12,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-91162","objectiveId":"creature-91162","objectiveName":"Nexus-Prince Shaffar","checkpoints":[[321.9432,-0.719,-222.1728],[318.1683,-0.2301,-215.7761],[314.3934,0.2588,-209.3794],[310.6185,0.7477,-202.9827],[306.8436,1.2366,-196.586],[303.0687,1.7255,-190.1893],[299.2938,2.2144,-183.7926],[295.5189,2.7033,-177.3959],[291.744,3.1922,-170.9992],[287.9691,3.6811,-164.6025],[284.1941,4.17,-158.2058],[280.4192,4.6589,-151.8091],[276.6443,5.1478,-145.4124],[272.8694,5.6367,-139.0157],[269.0945,6.1256,-132.6189],[265.3196,6.6145,-126.2222],[261.5447,7.1034,-119.8255],[257.7698,7.5923,-113.4288],[253.9949,8.0812,-107.0321],[250.22,8.57,-100.6354],[246.4451,9.0589,-94.2387],[242.6702,9.5478,-87.842],[238.8953,10.0367,-81.4453],[235.1204,10.5256,-75.0486],[231.3455,11.0145,-68.6519],[227.5706,11.5034,-62.2552],[223.7957,11.9923,-55.8585],[220.0208,12.4812,-49.4618],[216.2459,12.9701,-43.0651],[212.471,13.459,-36.6684],[208.6961,13.9479,-30.2717],[204.9212,14.4368,-23.875],[201.1463,14.9257,-17.4783],[197.3714,15.4146,-11.0816],[193.5965,15.9035,-4.6849],[189.8216,16.3924,1.7118],[186.0467,16.8813,8.1085]],"expectedDistance":267.97,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"1720af94f20d3e3e66dfbb0696d738c63c9110af1c21b3d11123addb51d64939","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"auchenai-crypts","mapId":558,"legs":[{"id":"leg-01-creature-83388","objectiveId":"creature-83388","objectiveName":"Shirrak the Dead Watcher","checkpoints":[[22.4711,-0.0114,2.137],[23.5403,1.1381,-5.1418],[24.6095,2.2875,-12.4207],[25.6788,3.4369,-19.6995],[26.748,4.5863,-26.9783],[27.8173,5.7357,-34.2572],[28.8865,6.8851,-41.536],[29.9558,8.0345,-48.8148],[31.025,9.1839,-56.0937],[32.0943,10.3333,-63.3725],[33.1635,11.4827,-70.6513],[34.2328,12.6321,-77.9302],[35.302,13.7815,-85.209],[36.3713,14.931,-92.4878],[37.4405,16.0804,-99.7667],[38.5098,17.2298,-107.0455],[39.579,18.3792,-114.3244],[40.6483,19.5286,-121.6032],[41.7175,20.678,-128.882],[42.7868,21.8274,-136.1609],[43.856,22.9768,-143.4397],[44.9252,24.1262,-150.7185],[45.9945,25.2756,-157.9974],[47.0637,26.425,-165.2762]],"expectedDistance":171.26,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-83453","objectiveId":"creature-83453","objectiveName":"Exarch Maladaar","checkpoints":[[47.0637,26.425,-165.2762],[44.3378,26.4548,-162.0745],[48.7489,26.2268,-156.6127],[52.6841,26.2764,-157.1579],[56.6193,26.3259,-157.7031],[59.7516,26.1277,-152.6973],[62.884,26.425,-157.8617],[66.1377,26.3259,-155.1655],[69.4014,26.5836,-160.6273],[73.0615,26.5539,-159.7252],[74.6673,26.653,-162.134],[76.2632,26.653,-160.9346],[81.5366,26.6828,-163.4721],[84.9366,26.7125,-159.6757],[89.0106,26.6828,-159.0115],[91.2111,26.653,-164.4039],[91.4788,26.653,-161.4004],[93.2135,26.653,-161.5987],[93.7487,26.653,-164.4634],[97.2181,26.6828,-165.8115],[99.8151,26.7522,-170.4802],[105.941,26.7522,-170.8767],[109.8366,26.7175,-165.9403],[113.7321,26.6828,-161.0039],[114.5351,26.6828,-164.9293],[115.338,26.7125,-160.994],[119.1753,26.7323,-165.9007],[123.0126,26.7522,-170.8073],[126.8116,26.7868,-171.4764],[130.6105,26.8215,-172.1455],[132.9399,26.7522,-165.7421],[134.2087,26.7522,-166.2674],[140.7013,26.7125,-166.6045],[141.1375,26.8513,-173.6423],[147.0255,26.7125,-178.0731],[142.1981,26.6828,-181.7308],[146.738,26.6828,-184.992],[146.6785,26.6828,-185.7949],[142.8127,26.653,-186.3302],[142.7532,26.653,-187.3313],[146.6884,26.653,-187.5296],[147.8977,26.6828,-191.0286],[152.5566,26.6828,-191.1674],[153.5577,26.6828,-192.1686],[154.2516,26.7819,-199.4542],[153.1067,26.7472,-203.0375],[151.9618,26.7125,-206.6209],[148.0861,26.7422,-206.492],[143.001,26.7819,-210.001],[146.738,26.7522,-211.0616],[142.6739,26.9207,-211.5275],[142.6739,26.881,-212.261],[143.338,26.6828,-216.1963],[146.9462,26.653,-219.5962],[146.4109,26.653,-223.2638],[143.338,26.653,-224.0667],[146.2027,26.653,-224.602],[143.338,26.653,-225.6031],[146.2027,26.653,-226.069],[143.1398,26.653,-226.8025],[143.4768,26.6828,-228.3588],[146.7479,26.6828,-228.3588],[146.7578,26.7522,-229.4194],[143.348,26.7125,-233.8304],[144.6762,26.7125,-235.3371],[143.8634,26.7522,-238.9254],[144.2797,26.7918,-243.7428],[146.6785,26.7522,-248.134],[145.4791,26.8612,-250.9318],[147.0849,26.7918,-253.7296],[146.6884,26.8612,-256.1309],[145.4791,26.9603,-257.3204],[146.7578,26.8909,-258.3215],[146.5298,26.9901,-259.2533],[147.3327,27.0297,-260.4626],[146.6884,27.0297,-261.999],[148.9881,26.9207,-263.6048],[148.9782,26.7522,-265.6666],[150.4155,26.653,-266.9354],[150.0785,26.4845,-267.9366],[150.4552,26.4845,-269.136],[152.9432,26.6927,-271.6141],[153.4784,26.8215,-273.4578],[156.0358,26.8513,-274.6671],[156.0458,26.8513,-275.4601],[157.9192,26.7819,-277.2047],[156.6901,26.7125,-279.3358],[157.4831,26.6828,-281.3282],[159.0195,26.6828,-282.2699],[158.5536,26.4845,-283.5982],[159.6142,26.4845,-284.5993],[159.6241,26.2863,-285.8582],[160.5162,26.3953,-287.9993],[160.2288,26.2565,-288.7427],[159.0195,25.8898,-289.1392],[158.286,25.8204,-290.9334],[156.6901,25.7312,-292.5293],[157.0866,26.1574,-293.7187],[156.2837,26.2863,-294.5316],[156.6801,26.6828,-295.7409],[155.8872,26.9504,-296.5438],[157.0866,27.3172,-298.1298],[155.8872,27.446,-299.3193],[156.2837,27.3865,-300.9251],[154.1624,27.3469,-303.9781],[154.1624,27.3865,-306.1786],[152.4475,27.3568,-306.8923],[152.0114,27.2973,-308.8748],[152.5764,27.4658,-310.213],[151.9123,27.2279,-312.2748],[152.1799,27.2874,-313.4742],[151.3473,27.0495,-314.9338],[149.8802,26.881,-315.7392],[149.6225,26.7125,-319.5877],[145.8161,26.6828,-321.3422],[146.2126,26.653,-323.6121],[143.1398,26.653,-323.8797],[143.338,26.653,-324.6133],[146.2027,26.653,-325.0791],[146.2027,26.653,-326.0803],[143.338,26.653,-326.6156],[146.4109,26.653,-327.4086],[146.8867,26.653,-331.0662],[143.2191,26.653,-334.2679],[142.8127,26.653,-338.9268],[146.6785,26.6828,-339.462],[146.738,26.6828,-340.2649],[141.6034,26.6828,-344.2696],[146.6785,26.7125,-347.6299],[144.7109,26.7125,-351.4313],[142.7433,26.7125,-355.2327],[147.9473,26.6828,-358.9598],[146.738,26.6828,-364.0746],[142.6739,26.881,-364.3422],[143.4074,26.7819,-365.8687],[139.3433,26.7522,-366.067],[138.7387,26.7125,-369.1993],[136.8751,26.7522,-372.5422],[141.8314,26.7819,-376.0735],[141.4448,26.7819,-376.8789],[135.2892,26.8215,-377.2853],[135.19,26.7819,-378.1279],[134.2484,26.7522,-378.3856],[133.7131,26.7125,-384.7791],[131.2647,26.7125,-390.6076],[128.9328,26.6828,-384.2736],[123.201,26.6828,-385.5424],[119.7316,26.6828,-390.6175],[115.338,26.6828,-389.0117],[114.8027,26.7522,-392.8776],[113.9998,26.7522,-392.937],[113.7321,26.6828,-389.0018],[109.331,26.653,-384.4619],[104.7912,26.6828,-389.4082],[101.2623,26.6828,-386.8409],[97.7335,26.6828,-384.2736],[94.8094,26.7125,-390.6076],[91.8158,26.6828,-384.4619],[91.34,26.7125,-390.7959],[87.1718,26.6976,-385.3627],[83.0037,26.6828,-379.9295],[81.3086,26.6828,-384.6973],[79.6136,26.6828,-389.4652],[75.6487,26.6679,-391.7351],[71.6837,26.653,-394.0051],[66.4772,26.6828,-392.6074],[66.1092,26.6976,-399.9439],[65.7412,26.7125,-407.2803],[64.3138,26.7125,-409.1141],[62.5073,26.881,-408.3112],[61.8531,26.7422,-409.7782],[61.0006,26.8513,-410.373],[61.1988,26.8215,-411.4435],[58.1062,26.7522,-413.7283],[55.0135,26.6828,-416.0131],[49.2048,26.7522,-415.7356],[46.0031,26.6828,-418.1344],[41.602,26.6828,-413.6044],[37.8749,26.653,-416.0032],[35.8825,26.653,-411.6021],[31.0849,26.653,-411.731],[27.4867,26.653,-416.1321],[24.1512,26.653,-413.9315],[20.8157,26.653,-411.731],[16.3452,26.653,-413.6044],[13.2773,26.653,-411.4038],[10.2094,26.653,-409.2033],[7.88,26.653,-410.5415],[4.8146,26.653,-409.7386],[3.0774,26.653,-410.4721],[0.6092,26.653,-409.2033],[-2.4896,26.653,-411.4038],[-5.5885,26.653,-413.6044],[-10.0491,26.653,-411.731],[-16.7796,26.653,-411.731],[-20.4472,26.653,-416.1321],[-24.6501,26.653,-411.731],[-25.3241,26.653,-411.6021],[-27.1877,26.653,-416.0032],[-31.7573,26.653,-414.7047],[-36.3269,26.653,-413.4062],[-41.1592,26.653,-411.4435],[-45.9915,26.653,-409.4808],[-41.0948,26.653,-407.2456],[-36.198,26.653,-405.0103],[-36.198,26.653,-398.6069],[-39.593,26.6679,-395.4746],[-42.988,26.6828,-392.3423],[-48.0533,26.6828,-388.4752],[-53.1185,26.6828,-384.6081],[-57.0191,26.6679,-382.9416],[-60.9196,26.653,-381.2751],[-65.2513,26.653,-384.3095],[-69.583,26.653,-387.3439]],"expectedDistance":811.8,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"f69411fb36ff5dd711a11363673a83879e7cd6b6306a320ba8436da3aa78ae7c","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"magisters-terrace","mapId":585,"legs":[{"id":"leg-01-creature-96875","objectiveId":"creature-96875","objectiveName":"Selin Fireheart","checkpoints":[[-9.8011,-2.7826,2.0929],[-17.105,-2.6376,1.9545],[-24.4089,-2.4926,1.8162],[-31.7129,-2.3475,1.6779],[-39.0168,-2.2025,1.5395],[-46.3207,-2.0575,1.4012],[-53.6246,-1.9125,1.2628],[-60.9285,-1.7675,1.1245],[-68.2324,-1.6224,0.9861],[-75.5364,-1.4774,0.8478],[-82.8403,-1.3324,0.7095],[-90.1442,-1.1874,0.5711],[-97.4481,-1.0424,0.4328],[-104.752,-0.8973,0.2944],[-112.056,-0.7523,0.1561],[-119.3599,-0.6073,0.0177],[-126.6638,-0.4623,-0.1206],[-133.9677,-0.3172,-0.2589],[-141.2716,-0.1722,-0.3973],[-148.5755,-0.0272,-0.5356],[-155.8795,0.1178,-0.674],[-163.1834,0.2628,-0.8123],[-170.4873,0.4079,-0.9506],[-177.7912,0.5529,-1.089],[-185.0951,0.6979,-1.2273],[-192.399,0.8429,-1.3657],[-199.703,0.9879,-1.504],[-207.0069,1.133,-1.6424],[-214.3108,1.278,-1.7807],[-221.6147,1.423,-1.919],[-228.9186,1.568,-2.0574],[-236.2226,1.713,-2.1957],[-243.5265,1.8581,-2.3341]],"expectedDistance":233.81,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-96876","objectiveId":"creature-96876","objectiveName":"Vexallus","checkpoints":[[-243.5265,1.8581,-2.3341],[-245.1955,1.8886,-4.6442],[-246.8645,1.8886,-5.377],[-248.6658,1.8886,-5.0717],[-249.7954,1.8174,-7.9823],[-249.653,1.8581,-9.061],[-250.9861,1.8886,-9.692],[-250.9047,1.8886,-10.8013],[-254.3343,1.7868,-12.0734],[-256.8684,1.7868,-14.3734],[-253.9374,1.7868,-13.5694],[-254.202,1.7868,-15.4419],[-256.4003,1.7868,-19.645],[-253.8662,1.7868,-19.7162],[-253.9374,1.8174,-24.5808],[-256.1357,1.8174,-26.9113],[-255.4029,1.8479,-28.0409],[-253.9374,1.8479,-28.2343],[-255.006,1.8784,-28.7024],[-254.0087,1.8784,-29.1095],[-254.9348,1.8784,-29.7099],[-253.9985,1.8784,-30.0356],[-254.0596,1.9191,-31.6334],[-252.6144,1.9598,-33.0887],[-252.3498,1.6952,-35.1546],[-253.7339,1.3899,-35.7754],[-254.945,0.82,-37.3833],[-253.3472,0.3926,-38.7063],[-255.2096,-0.0348,-40.1107],[-253.2047,-0.3707,-40.9656],[-255.464,-0.5437,-41.3014],[-255.464,-0.7167,-43.1028],[-253.2047,-0.7167,-44.6395],[-253.2658,-0.7167,-46.512],[-255.525,-0.7167,-46.7766],[-254.0596,-0.6862,-47.2244],[-255.9932,-0.7879,-47.6925],[-255.3317,-1.0525,-48.6288],[-256.5326,-1.4494,-49.789],[-255.7388,-1.8769,-50.9797],[-256.0339,-2.6096,-52.608],[-254.029,-2.9454,-53.1982],[-255.0874,-3.2813,-53.7987],[-253.2047,-3.3118,-55.5593],[-253.2658,-3.3423,-57.4929],[-255.525,-3.3729,-57.7677],[-253.7237,-3.5052,-60.1491],[-255.2604,-3.668,-60.3017],[-254.9958,-4.1667,-61.8283],[-257.8657,-4.1667,-61.757],[-258.1303,-4.706,-63.192],[-257.5299,-5.4082,-65.1968],[-258.1303,-5.7441,-66.5096],[-257.7945,-5.9374,-67.6596],[-252.991,-5.9985,-69.4406],[-255.3317,-5.9985,-69.98],[-253.1335,-5.9985,-70.4481],[-253.1335,-5.9985,-71.1096],[-255.1994,-5.9985,-71.4353],[-253.0622,-5.9985,-71.8932],[-255.3317,-5.9985,-72.0255],[-255.5352,-5.9985,-74.4273],[-253.1335,-5.9985,-76.6967],[-249.1339,-5.9985,-76.6967],[-247.5362,-5.9985,-74.4273],[-242.4681,-5.9985,-74.3662],[-239.4659,-5.9985,-76.768],[-232.6652,-5.9985,-76.3711],[-230.3321,-5.9985,-78.7728],[-232.4616,-5.9985,-78.9763],[-232.197,-5.9985,-79.5055],[-230.3321,-5.9985,-79.7701],[-230.3321,-5.9985,-80.3706],[-232.197,-5.9985,-80.7675],[-230.2609,-5.9985,-81.1746],[-232.5329,-5.9985,-81.4392],[-232.2072,-5.9985,-84.5736],[-230.4644,-5.9985,-87.5046],[-232.0647,-5.9985,-90.9037],[-231.1259,-5.9985,-91.2395],[-231.1259,-5.9985,-91.901],[-232.0647,-5.9985,-92.2267],[-230.3321,-5.9985,-93.0205],[-232.2072,-5.9985,-93.4886],[-233.7439,-5.9374,-96.0328],[-237.4916,-5.8764,-98.0886],[-238.7535,-6.1817,-100.4929],[-234.6395,-6.5328,-100.9737],[-230.5255,-6.8839,-101.4546],[-232.4387,-6.9857,-101.8108],[-228.6402,-7.4131,-103.0829],[-229.3831,-7.8711,-104.0599],[-229.3322,-8.4715,-105.3727],[-230.5357,-8.7463,-105.7696],[-230.1286,-9.0516,-106.5736],[-231.7391,-9.1533,-109.7691],[-229.7419,-9.2551,-112.9647],[-228.6071,-9.2907,-117.3306],[-227.4724,-9.3264,-121.6965],[-230.0026,-9.3264,-124.5663],[-232.5329,-9.3264,-127.4362],[-234.6598,-9.3264,-133.9698],[-228.5206,-9.3264,-134.7636],[-234.5988,-9.3264,-135.9034],[-228.5308,-9.3264,-136.5039],[-231.2697,-9.3264,-139.4348],[-234.0085,-9.3264,-142.3658],[-231.3053,-9.3264,-145.429],[-228.602,-9.3264,-148.4922],[-231.7022,-9.3264,-153.1596],[-234.8023,-9.3264,-157.827],[-229.3246,-9.3569,-162.1039],[-234.6598,-9.3569,-166.1059],[-228.5206,-9.3874,-166.8387],[-234.5275,-9.3569,-167.7749],[-228.4596,-9.3874,-168.3754],[-228.7343,-9.3569,-171.978],[-225.1304,-9.3213,-173.932],[-221.5265,-9.2856,-175.8859],[-221.4655,-9.2144,-180.089],[-219.5319,-9.2144,-182.2872],[-220.1934,-9.3162,-184.7704],[-220.0916,-9.3874,-190.1438],[-222.0863,-8.848,-194.2756],[-223.5925,-8.5834,-195.0592],[-230.9224,-8.0135,-196.372],[-234.324,-7.4131,-197.5729],[-228.9277,-7.118,-198.1734],[-234.3342,-6.8228,-198.7738],[-229.3755,-6.6193,-199.0384],[-235.016,-6.4158,-199.2521],[-237.0311,-6.2733,-200.7074],[-233.0659,-6.2733,-205.1763],[-229.1007,-6.2733,-209.6453]],"expectedDistance":405.34,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-96762","objectiveId":"creature-96762","objectiveName":"Kael'thas Sunstrider","checkpoints":[[-229.1007,-6.2733,-209.6453],[-227.6274,-6.4631,-202.3312],[-226.1541,-6.653,-195.0172],[-224.6808,-6.8428,-187.7031],[-223.2075,-7.0327,-180.3891],[-221.7342,-7.2225,-173.075],[-220.261,-7.4124,-165.761],[-218.7877,-7.6022,-158.4469],[-217.3144,-7.792,-151.1329],[-215.8411,-7.9819,-143.8188],[-214.3678,-8.1717,-136.5048],[-212.8945,-8.3616,-129.1907],[-211.4212,-8.5514,-121.8767],[-209.9479,-8.7413,-114.5626],[-208.4746,-8.9311,-107.2486],[-207.0013,-9.121,-99.9345],[-205.528,-9.3108,-92.6205],[-204.0547,-9.5007,-85.3064],[-202.5814,-9.6905,-77.9924],[-201.1082,-9.8803,-70.6783],[-199.6349,-10.0702,-63.3643],[-198.1616,-10.26,-56.0502],[-196.6883,-10.4499,-48.7362],[-195.215,-10.6397,-41.4221],[-193.7417,-10.8296,-34.1081],[-192.2684,-11.0194,-26.794],[-190.7951,-11.2093,-19.48],[-189.3218,-11.3991,-12.1659],[-187.8485,-11.589,-4.8519],[-186.3752,-11.7788,2.4622],[-184.9019,-11.9686,9.7762],[-183.4287,-12.1585,17.0903],[-181.9554,-12.3483,24.4043],[-180.4821,-12.5382,31.7184],[-179.0088,-12.728,39.0324],[-177.5355,-12.9179,46.3465],[-176.0622,-13.1077,53.6605],[-174.5889,-13.2976,60.9746],[-173.1156,-13.4874,68.2886],[-171.6423,-13.6773,75.6027],[-170.169,-13.8671,82.9167],[-168.6957,-14.0569,90.2308],[-167.2224,-14.2468,97.5448],[-165.7491,-14.4366,104.8589],[-164.2759,-14.6265,112.1729],[-162.8026,-14.8163,119.487],[-161.3293,-15.0062,126.801],[-159.856,-15.196,134.1151],[-158.3827,-15.3859,141.4291],[-156.9094,-15.5757,148.7432],[-155.4361,-15.7656,156.0572],[-153.9628,-15.9554,163.3713],[-152.4895,-16.1453,170.6853],[-151.0162,-16.3351,177.9994],[-149.5429,-16.5249,185.3134],[-148.0696,-16.7148,192.6275]],"expectedDistance":410.49,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"b51ed0f315361974b4fcb0c100268a0db76f6e38b81dad32caf4b2261ebdd91e","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"black-morass","mapId":269,"legs":[{"id":"leg-01-encounter-287","objectiveId":"encounter-287","objectiveName":"Chrono Lord Deja","checkpoints":[[7035.5328,32.9837,-1496.7527],[7036.7479,33.1573,-1498.4885],[7042.9969,32.8102,-1495.364],[7045.6006,33.1573,-1500.7451],[7049.7666,32.8102,-1497.0999],[7053.5855,33.1573,-1502.4809],[7057.925,32.8102,-1496.9263],[7060.5288,32.9837,-1500.2244],[7063.1325,33.1573,-1503.5224],[7066.257,32.8102,-1497.7942],[7067.9929,32.8102,-1498.1414],[7068.5136,33.1573,-1504.3904],[7070.9438,32.8102,-1499.7036],[7074.589,32.8102,-1501.4394],[7076.4984,33.1573,-1507.5148],[7081.8795,32.8102,-1504.0432],[7085.6983,32.8102,-1506.9941],[7083.9625,33.1573,-1511.8544],[7089.6908,32.8102,-1511.1601],[7091.7738,32.8102,-1513.5903],[7088.4757,33.1573,-1516.7148],[7093.8568,32.8102,-1518.277],[7091.7738,33.1573,-1522.0958],[7097.3284,32.8102,-1522.0958],[7096.1133,33.1573,-1526.4354],[7101.1472,32.8102,-1529.7335],[7098.3699,33.1573,-1535.8089],[7102.8831,32.8102,-1537.8919],[7099.0643,33.1573,-1540.8428],[7103.4038,32.8102,-1542.9258],[7103.5774,32.8102,-1547.7861],[7099.4114,33.1573,-1550.7371],[7103.2302,32.8102,-1556.2917],[7099.2378,33.1573,-1559.2426],[7099.0643,33.1573,-1564.7973],[7102.8831,32.8102,-1568.7897],[7098.7171,33.1573,-1574.3444],[7102.5359,32.8102,-1576.9481],[7102.3623,32.8102,-1580.5934],[7098.3699,33.1573,-1582.8499],[7101.8416,32.8102,-1587.1895],[7106.1812,32.463,-1589.2725],[7106.3547,32.463,-1591.5291],[7105.6604,32.463,-1591.7027],[7105.3132,32.6366,-1593.2649],[7105.4868,32.2894,-1597.9951],[7106.7019,31.9422,-1599.2536],[7106.5283,31.5951,-1602.9422],[7103.5774,31.5951,-1606.0667],[7102.3623,31.2479,-1610.2327],[7099.4114,31.2479,-1611.7949],[7103.4038,30.2064,-1614.9194],[7099.7586,30.38,-1615.093],[7102.8831,29.8592,-1615.9609],[7102.8831,29.6857,-1616.6553],[7099.7586,29.5121,-1617.6968],[7096.2869,29.6857,-1617.3496],[7095.5926,29.5121,-1618.9119],[7095.419,28.8177,-1620.4741],[7094.2039,28.4706,-1622.3835],[7094.5511,27.6027,-1623.425],[7094.5511,26.5612,-1625.6816],[7093.8568,26.0404,-1627.591],[7094.0303,24.4782,-1630.3683],[7094.7247,23.4367,-1631.9306],[7094.3775,22.5688,-1634.1872],[7095.2454,22.048,-1635.0551],[7094.3775,22.048,-1636.6173],[7093.336,22.3952,-1636.7909],[7092.4681,22.3952,-1638.1796],[7092.6417,22.048,-1640.6097],[7090.2115,22.3952,-1642.5192],[7089.6908,22.3952,-1643.7342],[7086.3927,22.7423,-1643.7342],[7085.1776,23.0895,-1645.6437],[7082.5738,23.4367,-1647.0323],[7082.921,23.6103,-1650.6776],[7080.6644,23.6103,-1652.4134],[7081.5324,23.6103,-1655.7115],[7077.5399,23.2631,-1659.0096],[7078.0607,22.9159,-1663.1756],[7073.7211,22.5688,-1666.3001],[7076.1513,22.7423,-1667.8623],[7074.2419,23.0895,-1671.334],[7070.9438,23.0895,-1673.7641],[7070.9438,23.2631,-1677.7565],[7075.8041,23.2631,-1682.7905],[7075.8041,22.9159,-1688.1715],[7077.7135,22.3952,-1694.7677],[7079.6229,22.2216,-1697.7186],[7077.1928,21.8744,-1702.5789],[7074.0683,22.048,-1703.794],[7074.589,22.5688,-1707.96],[7072.1589,23.0895,-1710.3902],[7073.3739,23.4367,-1714.0354],[7068.8608,23.4367,-1718.2014],[7068.8608,23.2631,-1723.2353],[7064.8684,22.9159,-1724.9712],[7063.6533,23.0895,-1729.1372],[7059.6609,23.2631,-1730.6994],[7059.6609,23.6103,-1734.8654],[7054.8005,23.2631,-1736.0805],[7052.544,22.9159,-1739.0314],[7048.378,22.3952,-1740.2465],[7048.7251,21.8744,-1742.6767],[7046.8157,21.3537,-1743.8917],[7046.8157,19.965,-1748.5785],[7043.5176,19.2707,-1751.3558],[7042.3026,18.2292,-1756.0426],[7044.0384,17.7084,-1759.6878],[7040.3931,17.7084,-1766.1104],[7038.6573,17.7084,-1770.45],[7033.9706,17.882,-1774.0952],[7035.1856,17.882,-1776.5254],[7033.4498,17.882,-1778.782],[7029.2838,17.882,-1778.782],[7026.1593,17.882,-1782.2536]],"expectedDistance":480.36,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-encounter-289","objectiveId":"encounter-289","objectiveName":"Temporus","checkpoints":[[7026.1593,17.882,-1782.2536],[7029.2838,17.882,-1778.782],[7033.4498,17.882,-1778.782],[7038.1366,19.0971,-1784.163],[7043.5176,19.965,-1784.163],[7050.1138,21.7008,-1787.1139],[7054.2798,21.8744,-1783.4687],[7059.6609,22.5688,-1784.163],[7061.5703,23.0895,-1787.1139],[7065.5627,22.7423,-1786.9404],[7067.6457,22.5688,-1789.5441],[7074.589,20.8329,-1789.5441],[7076.4984,20.6593,-1794.4044],[7082.0531,19.6178,-1797.8761],[7087.9549,18.4028,-1796.8346],[7092.1209,18.2292,-1802.2157],[7093.336,18.2292,-1806.9024],[7099.9322,17.882,-1808.6383],[7104.0982,17.882,-1810.5477],[7108.9585,18.0556,-1809.3326],[7111.3887,18.9235,-1806.9024],[7116.0754,19.6178,-1808.6383],[7122.6716,20.6593,-1807.4232],[7127.5319,20.8329,-1809.8533],[7133.6073,21.1801,-1808.6383],[7136.5582,21.1801,-1811.7628],[7141.7657,21.3537,-1811.242],[7144.543,21.7008,-1813.8458],[7148.5355,21.7008,-1813.8458],[7150.0977,21.7008,-1817.8382],[7154.2637,21.5273,-1819.4004],[7155.6524,21.7008,-1816.4495],[7161.0334,22.2216,-1815.2344],[7165.2862,22.3952,-1816.7099],[7169.539,22.5688,-1818.1853],[7173.705,22.8291,-1817.057],[7177.871,23.0895,-1815.9288],[7182.7313,23.0027,-1816.7967],[7187.5917,22.9159,-1817.6646],[7192.452,22.9159,-1819.9212],[7199.9161,22.7423,-1819.9212],[7202.3462,22.3952,-1818.1853],[7206.6858,21.7008,-1819.0533],[7211.0254,21.0065,-1819.9212],[7214.3235,20.4858,-1816.9703],[7220.0517,19.6178,-1814.7137],[7224.2177,18.7499,-1817.6646],[7227.3422,18.5763,-1815.9288],[7229.078,18.2292,-1819.9212],[7234.8063,18.9235,-1819.9212],[7237.5836,18.9235,-1817.6646],[7241.0553,19.965,-1819.4004],[7244.527,19.6178,-1817.6646],[7249.2137,19.4443,-1819.9212],[7253.5533,18.4028,-1817.6646],[7258.24,18.0556,-1819.4004],[7260.6702,18.2292,-1816.4495],[7264.8362,18.2292,-1816.9703],[7269.6965,18.0556,-1818.7929],[7274.5568,17.882,-1820.6155],[7280.1115,18.0556,-1818.8797],[7282.5417,18.0556,-1818.8797],[7289.485,17.882,-1820.6155],[7295.2132,18.2292,-1819.0533],[7301.6358,18.5763,-1818.3589],[7303.1981,18.2292,-1819.9212],[7305.6282,18.7499,-1818.1853],[7309.2735,19.0971,-1818.1853],[7313.4395,18.9235,-1819.9212],[7317.1715,19.6178,-1818.4457],[7320.9035,20.3122,-1816.9703],[7324.2016,20.1386,-1818.7061],[7329.062,21.0065,-1818.7061],[7334.6166,22.048,-1815.7552],[7337.9147,22.048,-1818.7061],[7342.9486,22.3952,-1818.7061],[7348.6769,22.9159,-1814.5401]],"expectedDistance":374.04,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-encounter-291","objectiveId":"encounter-291","objectiveName":"Aeonus","checkpoints":[[7348.6769,22.9159,-1814.5401],[7354.0579,23.2631,-1815.7552],[7356.6617,23.2631,-1819.9212],[7356.6617,23.0895,-1822.6985],[7362.9107,23.0895,-1825.6494],[7363.2578,22.7423,-1829.1211],[7365.688,22.3952,-1830.3362],[7367.5974,22.2216,-1833.2871],[7366.3823,22.3952,-1837.4531],[7370.8955,22.048,-1841.4455],[7371.4163,22.048,-1846.3058],[7375.4087,21.7008,-1849.2567],[7374.5408,21.8744,-1852.5548],[7372.9785,22.048,-1854.2906],[7374.5408,21.7008,-1855.8529],[7375.4087,20.3122,-1860.8868],[7378.3596,19.2707,-1863.7509],[7381.3105,18.2292,-1866.615],[7380.0954,17.882,-1869.0452],[7383.7407,17.7084,-1870.6075],[7382.5256,17.5348,-1875.2942],[7380.703,17.6216,-1878.5923],[7378.8803,17.7084,-1881.8904],[7381.3105,17.7084,-1887.9658],[7380.6162,17.882,-1893.8676],[7378.186,17.882,-1896.8185],[7380.0954,17.882,-1900.4638],[7379.5747,17.882,-1901.1581],[7379.4011,17.882,-1907.9278],[7378.186,17.882,-1913.8297],[7379.4879,17.7084,-1920.9466],[7380.7897,17.5348,-1928.0635],[7379.5747,17.882,-1933.4446],[7377.6652,18.5763,-1938.4785],[7378.8803,18.7499,-1944.0331],[7378.186,19.0971,-1948.0256],[7380.0954,18.5763,-1950.8029],[7378.8803,18.7499,-1955.1425],[7380.0954,18.4028,-1957.0519],[7378.186,18.4028,-1960.8707],[7380.6162,18.0556,-1963.1273],[7379.4011,17.882,-1968.5084],[7375.4087,18.0556,-1971.98],[7374.5408,18.0556,-1975.7989],[7376.103,17.882,-1980.8328],[7378.186,17.7084,-1983.7837],[7378.8803,17.7084,-1989.6855],[7377.6652,18.0556,-1994.5458],[7375.4087,18.0556,-1996.2817],[7373.3257,18.2292,-2003.0514],[7374.8879,18.7499,-2007.9117],[7372.1106,18.9235,-2013.8136],[7373.1521,19.6178,-2018.1532],[7375.9294,21.0065,-2024.5757],[7374.2804,21.9612,-2030.5644],[7372.6313,22.9159,-2036.553],[7374.1936,23.6103,-2040.719],[7372.6313,23.9574,-2044.5378],[7375.4087,24.131,-2048.7038],[7372.1106,24.131,-2051.134],[7372.1106,24.131,-2053.3905],[7373.7596,24.131,-2058.1641],[7375.4087,24.131,-2062.9376],[7373.4993,24.2178,-2067.364],[7371.5898,24.3046,-2071.7904],[7372.8049,23.9574,-2077.1714],[7370.2012,23.8706,-2080.0356],[7367.5974,23.7838,-2082.8997],[7368.1182,23.2631,-2088.2808],[7363.7786,23.2631,-2091.926],[7364.4729,23.0895,-2095.5713],[7366.3823,23.0895,-2098.5222],[7364.5597,23.2631,-2102.0806],[7362.7371,23.4367,-2105.6391],[7363.9522,23.4367,-2110.4994],[7360.8277,23.7838,-2116.5748],[7356.6617,24.3046,-2118.3106],[7354.9259,24.4782,-2121.9559],[7354.9259,24.3046,-2124.9068]],"expectedDistance":361.23,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"3269e65f5ff4e4ae44d5a09ff12aa3f1c7e939e586f2883f18f3fe2f1febe0b7","generationStatus":"Candidate","generationIssues":[]},{"schemaVersion":1,"id":"primary","dungeonId":"escape-from-durnholde","mapId":560,"legs":[{"id":"leg-01-encounter-285","objectiveId":"encounter-285","objectiveName":"Lieutenant Drake","checkpoints":[[1314.4669,14.2791,2738.4359],[1315.8572,14.2791,2732.0138],[1311.4876,14.2791,2727.0483],[1314.2682,14.2791,2720.6924],[1310.2296,14.2791,2716.72],[1311.4213,14.2791,2713.7407],[1310.0972,14.6101,2712.2842],[1311.0903,14.6101,2710.2318],[1308.8393,15.3384,2708.1131],[1311.0241,14.8087,2706.9214],[1310.7593,14.8087,2705.5973],[1316.6517,14.2791,2703.1476],[1318.3731,14.2791,2699.5062],[1321.0875,14.3453,2695.9973],[1317.5124,14.5439,2689.7738],[1317.4462,15.0073,2686.1987],[1314.5993,14.7425,2683.2856],[1315.7248,15.206,2682.3587],[1313.3413,14.7425,2681.6304],[1314.202,15.206,2680.24],[1308.5082,14.2791,2676.9297],[1306.4558,14.3122,2673.189],[1304.4034,14.3453,2669.4483],[1304.1386,14.8749,2665.4097],[1301.4903,14.8087,2661.5697],[1301.8214,15.2722,2659.7159],[1299.1069,15.206,2657.7297],[1295.7965,14.8749,2656.6042],[1293.0158,15.3384,2653.4925],[1289.9703,14.8749,2653.2939],[1288.7786,15.0073,2652.1683],[1286.7924,14.5439,2652.8966],[1284.9386,14.9411,2650.6456],[1280.0393,15.2722,2646.4083],[1277.4572,14.8087,2646.607],[1274.4779,14.5439,2646.0773],[1273.2862,14.8087,2644.3559],[1270.3731,14.7425,2643.2304],[1267.46,14.4777,2642.8994],[1264.4145,14.7425,2639.8539],[1260.8393,14.5439,2638.4635],[1261.4352,15.0073,2636.9408],[1259.3166,14.7425,2637.0732],[1258.191,15.1397,2634.0939],[1259.3497,15.5701,2629.9228],[1260.5083,16.0004,2625.7518],[1254.1524,15.7356,2622.2428],[1252.2986,15.7687,2618.3366],[1250.4448,15.8018,2614.4304],[1253.689,16.1991,2611.418],[1256.9331,16.5963,2608.4056],[1250.9745,16.3977,2605.3601],[1256.4697,16.9935,2603.1753],[1255.0131,17.7218,2598.4746],[1253.5566,18.4501,2593.7739],[1250.8421,19.1453,2589.8677],[1248.1276,19.8404,2585.9615],[1249.6503,21.0984,2580.036],[1251.1731,22.3563,2574.1105],[1248.7897,23.217,2569.3436],[1250.9083,24.7397,2562.7891],[1248.7566,25.5011,2559.1146],[1246.6048,26.2625,2555.4401],[1243.1621,26.428,2553.9505],[1239.7193,26.5935,2552.4608],[1238.4614,27.8515,2547.2884],[1237.2035,29.1094,2542.116],[1233.2973,29.4404,2539.6912],[1229.3911,29.7715,2537.2663],[1232.7014,31.6253,2531.225],[1225.4186,31.3604,2530.1656],[1229.06,31.9563,2529.2388],[1223.9621,31.7577,2528.2457],[1227.2062,33.2804,2525.0015],[1225.4186,34.0749,2522.6181],[1226.2131,35.2666,2520.036],[1228.0007,35.9287,2518.8443],[1227.3386,36.2597,2517.4539],[1227.9345,36.9218,2515.865],[1227.0076,37.1866,2514.4746],[1227.6035,37.7825,2512.687],[1230.4504,39.1066,2510.767],[1230.3842,39.7025,2508.6484],[1232.7676,40.9604,2506.8608],[1231.7745,41.2252,2504.7422],[1234.9524,42.6818,2502.6236],[1234.8862,43.3439,2499.9091],[1237.9979,44.7342,2498.3864],[1237.2035,45.1977,2495.8043],[1237.9979,45.7273,2494.745],[1236.8724,45.9259,2492.4939],[1239.7855,46.7866,2492.4939],[1242.4338,47.8459,2491.6333],[1245.8104,48.6404,2492.1629],[1247.3331,49.5011,2490.4415],[1250.7759,50.2294,2489.6471],[1252.1,51.5535,2486.6015],[1254.4835,52.679,2484.6815],[1256.2048,52.8777,2484.7477],[1255.7414,53.8046,2482.4967],[1256.7345,54.1356,2481.9009],[1256.8007,55.0625,2479.9146],[1254.2848,54.6652,2479.5174],[1251.5041,54.4666,2476.8691],[1250.3124,54.6652,2474.4857],[1246.34,53.8708,2472.6981],[1247.0021,54.3342,2471.9036],[1246.5386,54.8639,2470.2484],[1247.1345,55.4597,2468.8581],[1246.4724,55.7246,2467.9974],[1247.0021,56.2542,2466.0774],[1248.1938,56.4528,2464.8857],[1248.591,56.9163,2458.9271],[1247.9952,57.1149,2455.8816],[1248.26,57.1149,2454.5574],[1252.1,58.3066,2452.1078],[1250.8421,58.0418,2451.7105],[1250.6435,58.0418,2450.916],[1252.8945,58.7039,2450.1216],[1249.9152,58.0418,2447.4071],[1251.2393,58.6377,2444.494],[1248.6572,58.2404,2441.316],[1248.6572,58.439,2438.2043],[1246.7372,58.2404,2436.1519],[1245.8766,58.7039,2432.7754],[1244.5524,59.0349,2431.7823],[1245.8104,58.8363,2429.6636],[1243.4269,59.6308,2429.2664],[1243.5593,59.6308,2427.9423],[1242.0366,59.8956,2425.9561],[1239.6531,60.4252,2424.8967],[1240.0504,60.028,2422.1161],[1237.0048,60.5577,2419.7326],[1236.3428,60.4914,2416.6209],[1233.0986,61.1535,2412.6485],[1230.7152,61.4845,2411.4568],[1228.9276,61.948,2407.8154],[1227.14,62.0804,2407.1533],[1226.4779,62.3452,2405.1671],[1225.0214,62.4114,2405.8292],[1223.8297,62.6763,2404.6374],[1222.1083,62.8087,2404.8361],[1220.4531,63.0735,2403.5781],[1220.5193,63.2059,2402.1878],[1218.8642,63.4045,2401.923],[1216.878,63.868,2399.0099],[1215.7524,64.0004,2399.5395],[1211.5814,64.7287,2398.6126],[1209.3304,65.3908,2395.3023],[1205.4904,66.2514,2393.3161],[1206.02,66.5163,2389.9395],[1204.8283,66.7811,2389.4099],[1201.1207,67.1121,2391.3961],[1195.5593,67.6418,2386.6292],[1195.6587,68.4032,2380.505],[1195.758,69.1645,2374.3809],[1195.6256,68.8004,2369.912],[1195.4931,68.4363,2365.443],[1195.6256,67.1783,2358.2926],[1195.5925,65.799,2351.992],[1195.5593,64.4197,2345.6913],[1195.5262,63.0404,2339.3906],[1195.4931,61.6611,2333.0899],[1195.46,60.2818,2326.7892],[1195.4269,58.9025,2320.4885],[1195.5593,58.0639,2314.9492],[1195.6918,57.2252,2309.4099],[1195.8242,56.3866,2303.8706],[1193.7056,55.7246,2300.0306],[1193.7056,55.5259,2297.581],[1191.5207,54.9301,2292.9465],[1193.1759,54.7314,2287.1865],[1191.5869,53.937,2280.0361],[1192.6793,53.6721,2276.163],[1193.7718,53.4073,2272.2899],[1192.1828,52.6128,2266.861],[1193.7718,52.348,2261.6306],[1197.1483,52.348,2258.5851],[1197.1483,52.2818,2252.8251],[1200.1276,52.5466,2250.8389],[1199.5318,52.5466,2246.6679],[1197.7442,52.1494,2241.3051],[1197.1483,51.6859,2236.5382],[1195.9566,51.0901,2232.301],[1197.1483,50.6928,2226.6734],[1198.2076,50.4942,2224.2238],[1198.8035,49.8983,2219.5893],[1197.1483,49.3025,2216.2789],[1198.34,48.9715,2212.3065],[1196.5524,48.508,2207.672],[1193.1759,48.177,2206.4803],[1187.9456,47.7797,2202.7727],[1186.4228,47.6473,2198.8665],[1184.9,47.5149,2194.9603],[1186.158,47.5811,2187.81],[1183.2449,47.4156,2184.7314],[1180.3318,47.2501,2181.6528],[1180.9938,47.3163,2179.8652],[1179.14,46.8528,2178.6734],[1179.7359,46.257,2175.0321],[1175.4987,44.999,2172.6486],[1176.0945,44.668,2169.0072],[1171.9235,44.0059,2163.0486],[1165.9649,43.079,2160.6652],[1165.0049,42.9797,2156.461],[1164.0449,42.8804,2152.2569],[1160.2049,42.8804,2149.8735],[1159.609,43.0128,2146.0666],[1159.0132,43.1452,2142.2597],[1155.5704,43.079,2139.4128],[1155.1732,42.8804,2134.7783],[1152.7235,42.6156,2134.7783],[1150.8697,42.1521,2132.9907],[1150.8697,41.7549,2130.6073],[1148.4863,41.0266,2128.8197],[1148.4863,40.6294,2126.4362],[1146.1028,40.0335,2125.2445],[1146.1028,39.9011,2124.0528],[1144.9111,39.4377,2122.8611],[1145.507,39.3052,2121.0735],[1143.7194,38.8418,2118.028],[1143.7194,38.8418,2114.4528],[1141.3359,38.577,2110.8114],[1140.7401,38.5108,2108.428],[1137.1649,38.1135,2107.7659],[1137.7608,38.1135,2104.7866],[1134.7815,37.7163,2101.2114],[1136.569,37.7163,2094.6569],[1134.1856,37.2528,2091.0818],[1132.9939,36.7894,2086.9107],[1134.7815,36.5246,2080.2901],[1132.729,35.9949,2076.9797],[1130.6766,35.4653,2073.6694],[1131.5704,35.2004,2069.5645],[1132.4642,34.9356,2065.4597],[1127.6311,34.0749,2062.679],[1129.9484,33.7439,2057.5149],[1126.9028,33.2804,2054.4694],[1128.7566,33.0156,2050.2321],[1126.969,32.7508,2046.5908],[1123.3277,32.9494,2046.1935],[1121.5401,33.4128,2042.6846],[1122.7318,33.8101,2038.9108],[1119.6863,34.4059,2034.4749],[1118.0973,34.4059,2033.879],[1117.1042,34.2073,2028.4501],[1117.5015,34.0749,2024.9411],[1115.3166,33.6777,2022.7563],[1114.1249,33.2142,2019.7108],[1114.7208,32.6846,2015.5397],[1110.1525,31.8901,2013.0239],[1110.1525,31.4928,2009.4487],[1108.3649,31.2942,2007.0653],[1110.1525,31.2942,2003.4901],[1107.1732,31.4266,1999.9149],[1106.5773,31.9563,1996.9356],[1104.3925,32.0887,1993.8901],[1101.8104,31.4266,1993.228],[1101.2146,30.9632,1988.5936],[1098.5663,30.4997,1987.0046],[1098.6987,30.2349,1983.0322],[1100.5525,30.0363,1980.0529],[1098.6987,30.3011,1978.8611],[1097.507,30.4335,1977.0736],[1098.6987,29.308,1974.6901],[1096.9111,28.8446,1972.3067],[1099.3608,27.6528,1969.2612],[1096.3815,27.2556,1968.0032],[1093.9318,26.7922,1961.3825],[1094.5277,26.9246,1954.8281],[1091.2173,26.7259,1951.2529],[1087.907,26.5273,1947.6777],[1089.0987,25.7991,1941.057],[1086.1194,24.2763,1934.4363],[1087.0794,23.5811,1929.6363],[1088.0394,22.8859,1924.8363],[1085.3249,21.7604,1919.4736],[1086.5167,21.297,1914.3095],[1085.1925,21.297,1913.3164],[1086.7815,21.0322,1909.7412],[1084.3318,21.4956,1907.8874],[1083.1401,21.628,1904.8419],[1079.4987,22.2239,1904.9743],[1079.5649,22.1577,1902.5908],[1076.3208,22.0253,1901.2667],[1076.387,21.8266,1898.2212],[1073.6725,21.4956,1897.2943],[1075.5263,21.5618,1895.2419],[1074.8642,21.4956,1894.1164],[1073.8711,21.4956,1893.3219],[1071.4877,21.1646,1893.3219],[1070.627,21.0984,1891.2695],[1071.8187,21.2308,1888.886],[1070.0311,21.0984,1888.2902],[1069.4353,21.0322,1887.0984],[1070.0311,20.7673,1885.3109],[1069.4353,20.4363,1883.4571],[1070.0974,19.9066,1880.9412],[1068.8394,19.1122,1879.0874],[1068.5746,18.3839,1876.9688],[1066.3236,17.6556,1875.115],[1065.4629,17.3246,1873.5922],[1065.8601,17.126,1871.8709],[1062.947,16.5301,1868.3619],[1063.4105,16.3977,1867.2364],[1061.1594,16.1328,1865.2502],[1061.4905,16.0666,1864.5219],[1057.4518,15.9342,1860.7481],[1053.4794,15.868,1858.3647],[1048.5801,15.6694,1853.8626],[1049.3746,15.6694,1852.4723],[1048.7125,15.6032,1851.0819],[1050.8312,15.4708,1848.7647],[1051.096,15.4046,1845.4543]],"expectedDistance":1183.31,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-encounter-283","objectiveId":"encounter-283","objectiveName":"Captain Skarloc","checkpoints":[[1051.096,15.4046,1845.4543],[1054.6049,15.2722,1842.9385],[1058.4449,15.1397,1841.2171],[1064.1387,15.1397,1842.6736],[1067.9787,14.7425,1841.4157],[1069.3029,14.4115,1839.6281],[1072.216,13.8156,1838.9661],[1072.6132,13.286,1837.4433],[1073.7387,12.7563,1836.4502],[1073.0105,12.2929,1833.0736],[1074.798,12.0942,1832.4778],[1075.9898,11.697,1828.9026],[1074.798,11.4322,1825.9233],[1075.9898,11.2997,1822.944],[1078.9691,11.7632,1820.5605],[1080.1608,12.1604,1817.515],[1084.0008,12.5577,1816.1247],[1084.5304,12.2266,1813.8737],[1082.478,12.028,1812.8143],[1082.4118,11.8294,1811.2916],[1084.1332,11.6308,1810.2985],[1082.9415,11.5646,1809.835],[1081.816,11.2997,1808.3785],[1083.0739,11.1673,1806.0612],[1085.656,11.2997,1806.5909],[1086.5167,11.366,1804.4723],[1088.9001,12.2266,1805.2668],[1090.6877,12.8887,1803.5454],[1093.9318,13.5508,1803.8764],[1095.3884,13.5508,1805.2668],[1097.9042,13.4846,1804.9357],[1098.7649,13.4846,1806.0612],[1100.4201,13.4846,1805.995],[1101.2146,13.4846,1804.9357],[1103.0022,13.4846,1807.253],[1104.9222,13.4846,1804.9357],[1108.2325,13.4846,1806.4585],[1111.3442,13.4846,1805.995],[1111.6753,13.4846,1804.0088],[1111.278,13.4846,1801.9564],[1109.4242,13.4846,1800.3675],[1109.8877,13.286,1798.5137],[1109.4904,12.7563,1796.7923],[1110.0201,12.6239,1796.1964],[1110.2849,12.4915,1794.0116],[1108.9608,12.4915,1794.475],[1107.8353,12.4915,1792.0916],[1109.027,12.4915,1789.7082],[1110.8808,12.4915,1790.304],[1111.4104,12.5577,1791.4295],[1112.0063,12.6901,1790.7675],[1114.9194,13.4846,1791.0985],[1115.7801,13.4846,1790.5688],[1116.9718,13.4846,1791.7606],[1117.9649,13.4846,1787.3909],[1118.0973,13.4846,1791.9923],[1118.2297,13.4846,1796.5937],[1120.4808,13.4846,1800.8971],[1124.1884,13.4846,1794.6075]],"expectedDistance":158.68,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-encounter-281","objectiveId":"encounter-281","objectiveName":"Epoch Hunter","checkpoints":[[1124.1884,13.4846,1794.6075],[1120.4808,13.4846,1800.8971],[1118.2297,13.4846,1796.5937],[1118.0973,13.4846,1791.9923],[1117.9649,13.4846,1787.3909],[1116.9718,13.4846,1791.7606],[1115.7801,13.4846,1790.5688],[1114.9194,13.4846,1791.0985],[1112.0063,12.6901,1790.7675],[1111.4104,12.5577,1791.4295],[1110.8808,12.4915,1790.304],[1109.027,12.4915,1789.7082],[1107.8353,12.4915,1792.0916],[1108.9608,12.4915,1794.475],[1110.2849,12.4915,1794.0116],[1110.0201,12.6239,1796.1964],[1109.4904,12.7563,1796.7923],[1109.8877,13.286,1798.5137],[1109.4242,13.4846,1800.3675],[1111.278,13.4846,1801.9564],[1111.6753,13.4846,1804.0088],[1111.3442,13.4846,1805.995],[1108.2325,13.4846,1806.4585],[1104.9222,13.4846,1804.9357],[1103.0022,13.4846,1807.253],[1101.2146,13.4846,1804.9357],[1100.4201,13.4846,1805.995],[1098.7649,13.4846,1806.0612],[1097.9042,13.4846,1804.9357],[1095.3884,13.5508,1805.2668],[1093.9318,13.5508,1803.8764],[1090.6877,12.8887,1803.5454],[1088.9001,12.2266,1805.2668],[1086.5167,11.366,1804.4723],[1085.656,11.2997,1806.5909],[1083.0739,11.1673,1806.0612],[1083.0739,11.1673,1803.3468],[1079.4325,11.0349,1802.8171],[1078.8367,11.1011,1800.4337],[1075.3277,10.9025,1799.9702],[1072.3484,10.5053,1798.7785],[1070.4946,9.9094,1799.8378],[1065.6615,8.7177,1796.9247],[1063.278,8.5853,1798.5137],[1060.2987,8.3866,1796.2626],[1057.3194,8.6515,1797.5206],[1055.4656,8.7839,1795.0709],[1053.1484,9.7108,1796.2626],[1051.5594,10.2404,1794.8723],[1049.7056,11.0349,1795.9978],[1048.1829,11.0349,1794.0778],[1046.4615,11.2335,1795.1371],[1044.2105,11.2335,1793.3495],[1042.6877,11.2997,1795.4681],[1041.5622,11.2997,1793.813],[1041.2312,11.1011,1789.3109],[1037.5898,10.7039,1784.3454],[1034.6105,10.9025,1784.9413],[1032.6905,10.7701,1784.3454],[1030.4394,11.0349,1785.4709],[1029.2477,10.6377,1783.8157],[1026.4008,10.7039,1783.8157],[1024.4808,10.3066,1782.0944],[1021.1043,10.3729,1782.624],[1017.9926,9.0487,1780.4392],[1017.4629,9.5122,1781.5647],[1015.3443,9.0487,1780.373],[1013.4243,9.5784,1781.4323],[1011.1732,8.7177,1779.6447],[1009.9815,8.9163,1780.8364],[1008.1277,8.2542,1780.2406],[1006.5388,8.7177,1782.3592],[1004.8836,7.9894,1781.6971],[1003.096,7.9894,1782.8888],[1002.1691,7.2611,1781.4323],[999.1236,6.9963,1782.0282],[997.7333,6.8639,1782.9551],[995.6808,6.5991,1782.1606],[994.0919,6.6653,1783.0875],[993.2312,6.7977,1781.962],[991.1126,6.7977,1782.7564],[990.3181,7.0625,1781.2337],[988.2657,7.5922,1780.704],[985.9484,7.7908,1781.1675],[984.7567,8.7177,1779.3799],[983.6974,9.1149,1778.9164],[982.5057,9.1149,1778.9164],[981.2477,8.6515,1780.1082],[979.2615,9.5122,1778.5854],[977.3415,9.5122,1778.9164],[976.3484,10.3066,1777.2613],[975.2229,10.1742,1777.7247],[973.5015,11.366,1776.5992],[971.5153,11.8956,1777.1289],[969.2643,13.4184,1776.5992],[968.6022,14.3453,1774.8116],[967.5429,15.0073,1774.613],[967.3443,15.6032,1773.024],[966.4174,16.0004,1773.4213],[965.6891,16.5963,1772.6268],[965.6891,16.9935,1771.5675],[965.1595,17.3908,1771.104],[964.4312,17.5894,1771.5013],[963.7029,18.3177,1770.7068],[963.8353,18.6487,1769.5151],[962.3788,19.708,1768.4558],[962.3788,20.1053,1767.3302],[961.1209,20.8335,1766.7344],[959.2009,21.4956,1764.9468],[959.5981,21.2308,1764.0861],[959.0685,21.2308,1762.8944],[957.2147,21.6942,1761.5702],[957.5457,21.0984,1759.9813],[956.8836,20.966,1758.7233],[957.2147,20.8335,1757.7964],[956.0229,20.8335,1757.7302],[955.6257,20.4363,1757.002],[953.2422,20.0391,1757.1344],[952.0505,19.2446,1756.2075],[949.0712,18.3839,1755.6116],[948.1443,17.0597,1753.6916],[946.4229,15.868,1752.2351],[945.8933,14.4115,1750.7785],[943.245,12.6239,1750.5799],[942.4505,11.5646,1749.8516],[942.3843,10.9025,1748.9909],[943.3774,11.1673,1748.4613],[943.7085,10.0418,1747.0047],[942.0533,8.6515,1746.8061],[943.5098,8.2542,1745.2171],[941.4574,7.4598,1745.5482],[938.7429,6.5991,1746.8723],[938.0147,5.8708,1745.8792],[936.9554,5.3411,1746.4751],[934.7705,4.2156,1744.8861],[933.7774,3.2887,1741.3109],[931.9898,2.2956,1738.9275],[930.2023,2.0308,1740.7151],[927.223,1.3687,1740.1192],[925.4354,0.8391,1737.0737],[926.0312,0.6404,1734.0944],[923.0519,-0.0878,1731.0489],[918.8147,-0.2865,1731.6447],[916.9609,-0.6175,1728.6489],[914.5112,-0.6837,1727.4406],[910.3402,-0.2202,1728.0365],[908.5526,0.0446,1724.3785],[903.7857,0.6404,1723.7827],[901.9981,0.9715,1718.4199],[898.423,1.5673,1714.8447],[897.2312,1.766,1710.0779],[894.8478,2.2294,1708.8861],[894.2519,2.1632,1706.5027],[891.2064,2.4942,1704.4503],[891.2064,1.8984,1700.8089],[889.3526,1.3687,1696.6379],[887.8299,1.1701,1695.4461],[887.8299,0.1108,1689.6861],[882.7319,0.0446,1685.3827],[878.0313,0.6404,1686.2434],[874.3899,1.0377,1685.7137],[868.6299,1.8322,1687.1703],[865.9154,1.8984,1686.3096],[863.1347,2.1632,1686.9055],[861.4795,2.1632,1685.4489],[858.8975,2.5604,1686.0448],[856.7126,2.8915,1685.4489],[854.7927,3.3549,1686.0448],[852.4092,3.9508,1685.4489],[851.8133,3.9508,1684.4558],[850.3568,4.6129,1684.0586],[847.9071,7.1287,1684.4558],[846.914,7.1949,1683.4627],[844.5306,8.1218,1682.8668],[843.8023,7.1287,1681.2779],[842.0147,6.6653,1680.0861],[840.2271,6.5329,1679.4903],[839.0354,7.2611,1680.682],[836.652,6.7977,1680.0861],[836.0561,6.268,1678.2324],[833.6065,6.7977,1678.2324],[831.7527,7.1287,1677.0406],[828.1113,7.9232,1677.7027],[826.9196,7.9894,1675.8489],[823.9403,8.3204,1674.6572],[822.7485,8.3204,1672.2737],[819.1734,8.4529,1669.8903],[815.5982,8.7177,1670.3537],[812.6189,8.7177,1668.5662],[810.4341,9.0487,1670.3537],[808.8451,9.1811,1668.0365],[805.9982,9.7108,1668.5662],[802.9527,10.6377,1666.7124],[801.761,11.366,1663.7331],[798.3182,12.5577,1662.2103],[796.3982,12.9549,1659.2972],[794.0148,13.4184,1659.2972],[792.0285,13.5508,1657.2448],[789.1817,13.948,1659.0324],[786.7982,13.6832,1656.6489],[781.3692,13.5508,1656.7813],[780.0451,12.9549,1652.6765]],"expectedDistance":533.99,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"c4dbe4304e8d70d15d8168f4f129c7281eeda18f408aa8d29d3a0c943ac833f7","generationStatus":"Candidate","generationIssues":[]},{"schemaVersion":1,"id":"primary","dungeonId":"utgarde-keep","mapId":574,"legs":[{"id":"leg-01-creature-126025","objectiveId":"creature-126025","objectiveName":"Prince Keleseth","checkpoints":[[-89.8759,12.5055,154.2434],[-89.9655,12.5055,156.3044],[-85.6195,12.5055,158.5446],[-81.2734,12.5055,160.7848],[-85.8435,12.5055,162.9354],[-90.4135,12.5055,165.086],[-95.566,12.5055,166.6541],[-100.7185,12.5055,168.2223],[-97.5822,12.5055,170.8209],[-91.7576,12.5055,171.0001],[-85.9331,12.5055,171.1794],[-84.4097,12.5055,172.1651],[-79.9293,12.5951,173.4196],[-74.4632,12.7743,173.4196],[-76.1658,13.1327,175.2117],[-74.1944,13.4016,175.4806],[-74.1944,13.8496,176.6455],[-72.0438,14.2977,177.0935],[-71.4165,14.8353,178.2584],[-69.8036,15.1041,178.6169],[-69.6243,15.4626,179.6922],[-68.3698,15.821,179.6922],[-68.101,16.3586,181.0363],[-67.653,16.4483,180.7675],[-67.2945,16.7171,181.8428],[-66.2192,16.8067,181.8428],[-65.1439,17.6132,184.1726],[-65.0543,18.1508,185.2479],[-65.7712,18.4196,186.3232],[-64.8751,18.8677,188.1154],[-66.04,18.9573,189.8179],[-65.3231,19.0469,191.6997],[-66.6673,19.3157,193.0438],[-64.8751,20.1222,195.284],[-65.4128,20.7495,197.1658],[-66.2192,20.7495,197.7931],[-66.3088,21.5559,199.7645],[-64.6959,22.3624,201.467],[-63.4414,24.065,205.4098],[-63.7998,24.2442,205.7682],[-63.4414,24.7818,207.3812],[-69.5347,24.8714,210.0694],[-68.7283,24.8714,212.0408],[-64.8751,24.8714,213.2057],[-64.0686,24.8714,215.1771],[-67.2945,24.8714,216.5212],[-63.531,24.8714,215.894],[-66.6673,24.8714,222.4354],[-66.1296,24.8714,228.6184],[-62.7245,24.8714,233.0092],[-63.755,24.8714,238.4753],[-64.7855,24.8714,243.9414],[-63.5758,24.8714,247.8394],[-62.3661,24.8714,251.7374],[-61.0219,24.8714,258.8164],[-54.5701,24.8714,256.397],[-50.8962,24.8714,259.7125],[-47.2222,24.8714,263.028],[-49.3728,24.8714,267.4188],[-51.5234,24.8714,271.8097],[-47.8047,24.8714,271.048],[-44.0859,24.8714,270.2863],[-50.3585,24.8714,272.7953],[-46.595,24.8714,273.2882],[-42.8314,24.8714,273.781],[-45.1612,24.8714,277.1414],[-47.4911,24.8714,280.5017],[-43.5035,24.8714,282.025],[-39.5159,24.8714,283.5484],[-44.7132,24.8714,288.9249],[-38.1718,24.8714,287.4015],[-37.2757,24.8714,290.5378],[-42.6522,24.8714,295.1975],[-38.1718,24.8714,301.022],[-31.0927,24.8714,301.3804],[-31.5408,24.7818,306.9362],[-28.3149,24.6026,305.7713],[-26.7019,24.6922,303.6207],[-25.8058,24.6026,305.5024],[-24.9097,24.7818,303.9791],[-22.6695,24.7818,305.5024],[-21.3254,24.8714,303.2622],[-18.4579,24.8714,304.6063],[-16.6658,24.6922,304.5167],[-15.4112,24.3338,306.8466],[-12.9022,23.7961,308.9076],[-10.8412,23.7961,309.8036],[-9.6763,23.7961,309.6244],[-8.9594,23.4377,310.5205],[-7.4361,23.7961,310.0725],[-3.5829,23.7961,310.6101],[-1.8804,23.5273,311.775],[0.9871,23.5273,312.4023],[3.3169,23.5273,313.836],[3.5858,23.2585,314.7321],[5.6468,23.5273,315.1801],[8.1558,23.2585,316.8827],[11.2025,22.9001,319.9294],[15.7725,23.4377,321.9904],[15.9517,23.7961,321.0943],[16.6686,23.7961,322.2592],[19.6257,23.7961,323.9618],[21.149,23.7961,325.6643],[21.2386,23.7065,326.5604],[22.5828,23.7065,327.6357],[21.5971,23.3481,327.5461],[22.6724,23.4377,328.3526],[21.7763,23.1689,328.4422],[24.4645,23.7961,330.4136],[25.3606,23.7961,332.1161],[26.7047,23.8858,333.1018],[27.5112,23.6169,335.2524],[30.0203,23.6169,338.6576],[29.9306,23.5273,340.1809],[31.0956,23.7961,341.4354],[30.7371,23.7065,342.4211],[32.9773,23.7961,346.4535],[32.8877,23.7961,347.6184],[33.963,23.8858,348.4249],[34.0526,23.8858,349.8586],[33.0669,23.7065,350.3963],[33.2462,23.6169,350.9339],[31.9916,23.0793,350.3067],[33.3358,23.4377,355.4143],[32.7085,23.1689,358.1922],[33.963,23.5273,361.3285],[34.1422,23.5273,363.8375],[35.3072,23.8858,362.6726],[35.4864,23.8858,364.8232],[36.7409,24.4234,362.3142],[36.7409,24.6922,364.7336],[42.3862,24.8714,366.1674],[41.759,24.8714,370.7374],[46.9562,24.8714,374.5009],[53.0496,24.8714,372.7088],[55.021,24.8714,373.6049],[56.0963,24.8714,377.3684],[59.3222,24.9611,374.5009],[59.8599,25.0507,377.5476],[59.2326,25.0507,381.0424],[60.6663,25.4091,380.5943],[63.0858,26.3948,382.4761],[65.6844,27.3805,382.4761],[67.9246,28.4558,383.641],[69.5376,28.9934,383.0137],[71.3297,29.7103,383.641],[72.7635,30.0687,381.8488],[75.7206,30.7856,385.1643],[76.8855,30.7856,379.9671],[78.0504,30.7856,383.4618],[83.0685,30.7856,381.6696],[86.7424,30.7856,376.3827],[92.0293,30.7856,381.2216],[92.3877,30.7856,377.458],[95.7032,30.7856,380.0567],[96.6889,30.7856,376.1139],[98.9292,30.7856,379.071],[99.646,30.7856,379.2502],[98.4811,30.7856,375.3074],[97.7642,30.7856,369.214],[99.2428,30.7856,373.7393],[100.7213,30.7856,378.2645],[103.9472,30.7856,373.5152],[107.1731,30.7856,368.766],[112.1464,30.7856,367.4667],[117.1197,30.7856,366.1674],[119.0313,30.7856,371.3049],[120.943,30.7856,376.4425],[122.8546,30.7856,381.58],[125.4234,30.7856,377.2191],[127.9922,30.7856,372.8581],[130.5609,30.7856,368.4972],[132.7414,30.7856,373.4854],[134.9219,30.7856,378.4736],[137.1024,30.7856,383.4618],[142.5237,30.7856,381.6696],[147.945,30.7856,379.8774],[149.4982,30.7856,373.6646],[151.0514,30.7856,367.4517],[152.6046,30.7856,361.2389],[158.2051,30.7856,359.3123],[163.8057,30.7856,357.3857],[167.5692,30.7856,351.2924],[171.4672,30.7856,348.7385],[175.3652,30.7856,346.1847],[181.1897,30.7856,348.2457],[180.4728,30.7856,355.2351],[179.756,30.7856,362.2246],[179.0391,30.7856,369.214],[184.5948,30.7856,367.3323],[190.1506,30.7856,365.4505],[196.005,30.7856,361.2389],[201.8594,30.7856,357.0273],[207.7138,30.7856,352.8157],[206.2801,30.7856,347.5587],[204.8463,30.7856,342.3016],[203.4126,30.7856,337.0446],[204.936,30.7856,337.3134],[206.2801,30.7856,336.4173],[211.7462,30.7856,335.9693],[217.2123,30.7856,335.5213],[222.9024,30.7856,337.3582],[228.5926,30.7856,339.1952],[227.5173,30.7856,332.2954],[229.0406,30.7856,335.6109],[230.9224,30.7856,334.8044],[231.8185,30.7856,331.0408],[233.6107,30.7856,330.324],[235.0444,30.7856,333.5499],[239.256,30.7856,334.894],[238.0015,30.7856,330.6824],[242.6611,30.7856,329.9655],[240.7345,30.7856,325.978],[238.8079,30.7856,321.9904],[240.1521,30.7856,317.5996],[244.0052,30.7856,312.8503],[247.7688,30.8752,309.8932],[247.7688,31.0992,305.7713],[247.7688,31.3233,301.6493],[247.7688,33.1154,297.2136],[247.7688,34.9076,292.778],[247.7688,35.3556,289.1937],[247.0967,36.655,285.4301],[246.4247,37.9543,281.6666],[245.7078,39.0296,279.2472],[244.8117,39.2984,278.7095],[245.7974,39.9257,277.0966],[244.8117,40.1945,276.9173],[245.0805,40.6425,275.5732],[243.0195,40.5529,276.3797],[242.7507,41.0906,274.7667],[241.6754,41.7178,273.781],[240.5105,41.7178,274.3187],[240.2417,42.5243,272.3473],[237.9119,42.0763,273.9603],[234.8652,42.4347,274.2291],[233.3418,42.8827,273.1538],[236.5677,42.8827,271.72],[235.6717,42.8827,269.659],[231.9081,42.8827,268.763],[231.1016,42.8827,266.8812],[234.2379,42.8827,265.2682],[229.0406,42.8827,266.3435],[227.8757,42.9724,259.7125],[231.9977,42.9724,256.2178],[236.1197,42.9724,252.7231],[231.2808,42.9724,247.3465],[226.666,42.9724,247.3465],[222.0512,42.9724,247.3465],[220.6174,42.4347,246.8985],[220.9759,41.5386,245.0167],[219.9006,41.5386,245.2856],[216.4954,41.001,244.4791],[221.2895,41.001,240.9395],[226.0835,41.001,237.4],[224.7394,41.001,231.0378],[219.3181,41.001,231.217],[213.8968,41.001,231.3962],[210.8501,41.001,232.0235],[210.2229,41.1802,225.2133],[207.2658,41.2698,224.586],[205.4736,41.8074,222.1666],[203.6814,41.449,221.0017],[203.0542,41.8971,218.6718],[201.262,41.8971,216.2524],[200.7244,42.3451,212.6681],[201.262,42.5243,208.4565],[199.4698,42.1659,204.8721],[199.4698,42.0763,202.4527],[200.6347,42.3451,200.0333],[200.0971,41.9867,198.8684],[201.262,41.6282,196.9866],[200.0971,41.1802,196.4489]],"expectedDistance":1022.4,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-126024","objectiveId":"creature-126024","objectiveName":"Skarvold & Dalronn","checkpoints":[[200.0971,41.1802,196.4489],[201.262,41.6282,196.9866],[204.2191,41.8971,196.3593],[206.6385,41.5386,194.0295],[206.6385,41.0906,192.2373],[205.2048,41.001,185.6959],[208.7891,41.001,183.9038],[213.7176,41.001,184.8596],[218.646,41.001,185.8154],[223.5745,41.001,186.7712],[222.768,41.001,179.7818],[226.8004,41.001,180.1402],[230.8328,41.001,180.4986],[226.6212,41.001,176.7351],[222.4096,41.001,172.9715],[226.442,41.2698,173.2404],[225.0979,41.5386,172.0754],[225.4563,41.9867,171.3586],[226.2628,42.1659,171.3586],[227.0692,42.7931,170.6417],[234.4171,42.9724,170.6417],[237.7775,42.9724,168.5359],[241.1378,42.9724,166.4301],[245.9318,42.9276,165.8029],[250.7259,42.8827,165.1756],[251.4427,42.8827,161.3224],[254.7583,42.8827,163.7419],[253.8622,42.8827,159.2614],[258.1634,42.8827,159.6199],[257.1329,42.8827,155.3635],[256.1024,42.8827,151.1071],[261.0308,42.8827,147.7019],[265.9593,42.8827,144.2968],[263.7191,42.8827,139.5924],[261.4789,42.8827,134.8879],[265.9593,42.8827,132.1549],[270.4397,42.8827,129.4218],[267.8859,42.8827,125.8823],[265.3321,42.8827,122.3428],[260.1348,42.8827,122.9252],[254.9375,42.8827,123.5077],[254.6686,42.8827,117.1903],[254.3998,42.8827,110.8729],[250.3674,42.8827,113.0235],[246.3351,42.8827,115.1741],[244.2741,42.8827,111.3209],[242.3923,42.9724,104.0626],[242.3923,43.062,97.4316],[243.378,43.062,95.0122],[241.0482,43.2412,95.0122],[239.9729,43.3308,95.5498],[237.643,44.2269,94.4745],[235.4028,44.9437,95.0122],[232.9834,46.1087,94.4745],[231.9977,46.8255,92.5031],[230.2951,47.4528,92.5031],[230.4744,47.7216,90.0837],[231.7289,47.5424,87.6643],[229.8471,47.8112,90.0837],[229.2198,48.1696,89.098],[226.4868,48.7073,92.1447],[223.7537,49.2449,95.1914],[219.811,49.6034,98.0589],[215.4201,49.6034,100.3887],[210.7605,49.6034,99.5374],[206.1009,49.6034,98.6861],[201.3516,49.6034,96.894],[196.6024,49.6034,95.1018],[189.6577,49.6034,95.3706],[182.7131,49.6034,95.6394],[180.2936,49.693,95.0122],[178.0534,50.5891,95.3706],[175.0067,51.754,94.833],[173.2146,52.6501,96.0875],[171.7808,53.1877,96.2667],[166.4939,55.2487,95.1018],[162.9992,56.8617,95.5946],[159.5045,58.4746,96.0875],[158.9668,58.5642,95.6394],[158.6084,59.1019,97.79],[156.0097,59.998,96.7147],[154.3968,60.9837,98.8653],[150.454,62.6862,98.9549],[147.3177,63.8511,98.0589],[144.7191,65.2849,100.4783],[142.6581,66.0017,100.2991],[141.5828,65.8225,99.9406],[141.4036,65.8225,99.0446],[139.6114,65.4641,98.6861],[137.8192,65.4641,94.833],[135.2206,65.4641,95.6394],[130.7402,65.4641,95.4154],[126.2597,65.4641,95.1914],[122.2722,65.4641,97.0732],[118.2846,65.4641,98.9549],[111.7432,65.4641,98.2381],[112.8185,65.4641,101.5536],[107.89,65.4641,99.5822],[105.1121,65.4641,103.525],[101.0798,65.4641,101.912],[98.5707,65.4641,100.2095],[96.9578,65.4641,95.8186],[96.9578,65.5537,90.4421],[95.524,65.6433,87.1266],[94.3591,65.6433,85.8721],[94.8072,65.9121,82.0189],[94.0903,66.0017,79.0619],[93.6423,65.9121,79.0619],[92.567,65.7329,81.6605],[90.0579,65.7329,81.3917],[88.6242,65.7329,83.5423],[85.6671,65.8225,82.1982],[84.9502,65.8225,85.0656],[82.4412,66.0017,85.0656],[82.3516,65.9121,87.037],[81.2763,66.0913,86.9474],[80.8282,65.9121,88.0227],[77.1543,65.9121,89.0532],[73.4804,65.9121,90.0837],[73.2115,66.0913,89.7253],[70.7921,65.9121,89.6357],[71.5986,66.0913,88.9188],[69.9856,65.9121,86.4098],[68.4623,65.8225,87.7539],[65.6844,65.8225,87.037],[62.8169,65.7329,88.9188],[59.591,65.7329,88.7396],[59.143,65.7329,89.8149],[57.8885,65.7329,89.8149],[59.143,65.7329,92.0551],[52.6016,65.7329,93.4888],[49.7341,65.7329,94.6537],[53.3184,65.7329,97.342],[56.9028,65.7329,100.0302],[60.4871,65.7329,101.9568],[64.0715,65.7329,103.8834],[62.4585,65.7329,98.7757],[64.7883,65.8225,101.7328],[64.6091,65.9121,97.7004],[66.5805,66.0913,98.5965],[66.2221,66.1809,96.3563],[68.9103,67.3459,97.342],[70.0752,68.6004,96.0875],[73.0323,70.751,94.833],[75.0037,71.3782,97.7004],[75.8102,72.5431,94.6537],[77.7816,73.7081,94.6537],[79.3945,74.9626,93.5784],[81.5451,76.3067,93.3096],[83.4269,77.83,92.4135],[84.771,78.6365,92.5031],[87.1904,80.6079,91.159],[88.5346,81.504,91.0694],[90.0579,82.1312,92.3239],[92.7462,84.1922,91.0694],[94.1799,84.9987,91.3382],[94.5383,84.8195,92.8616],[95.3448,85.8052,90.711],[95.9721,86.074,91.4278],[97.585,87.2389,90.8006],[98.1227,87.4181,91.2486],[97.2266,87.4181,88.4708],[100.5421,87.5078,90.711],[102.1551,87.5078,86.1409],[105.829,87.5078,89.3668],[109.503,87.5078,83.3631],[115.6859,87.4181,86.9474],[117.6573,87.3285,92.9512],[112.9977,87.4181,95.281],[114.073,87.4181,98.4173],[119.5391,87.3285,99.0446],[120.3456,87.3285,101.1055],[115.5963,87.4181,103.4354],[119.4047,87.4181,103.8834],[123.213,87.4181,104.3315],[124.826,87.5078,109.4391],[119.5391,87.5078,114.0988],[113.3561,87.5078,114.726],[110.3094,87.5974,112.0378],[109.5926,87.687,115.0845],[107.9796,87.8662,113.2923],[107.0835,88.4038,113.6507],[107.0835,88.9415,115.7117],[106.3667,89.748,116.4286],[105.2914,90.1064,115.1741],[105.0225,90.5544,116.6078],[103.768,91.0025,115.7117],[103.4096,91.6297,117.4143],[101.9758,92.5258,116.787],[100.8109,93.4219,117.4143],[99.4668,93.9596,116.2494],[98.4811,94.5868,116.6974],[98.3915,95.0349,118.1312],[97.137,96.0206,119.0272],[95.9721,96.4686,117.8623],[94.8072,97.3647,118.1312],[94.4487,98.0816,120.1025],[93.7319,98.44,119.4753],[93.1046,99.1569,121.1778],[91.7605,99.6945,119.9233],[89.9683,101.0386,120.5506],[90.0579,101.4867,122.4324],[89.0722,102.2932,122.8804],[87.5489,102.9204,121.3571],[87.5489,103.2788,123.0596],[86.4736,104.0853,123.4181],[85.0398,104.8022,122.6116],[84.4126,105.4294,124.1349],[83.0685,105.9671,123.3284],[82.71,106.4151,124.0453],[81.3659,107.132,123.2388],[80.649,107.9385,125.031],[78.14,109.1034,123.7765],[77.8712,109.1034,126.4647],[75.8998,109.1034,128.3465],[73.3011,109.1034,124.8518],[70.6129,109.0586,128.705],[67.9246,109.0138,132.5581],[62.5033,109.0586,132.1549],[57.082,109.1034,131.7516],[53.7217,109.1482,128.6153],[50.3614,109.193,125.479],[49.6445,109.193,122.7012],[54.3489,109.1482,122.0291],[59.0534,109.1034,121.3571],[54.2145,109.1482,121.3571],[49.3757,109.193,121.3571],[54.1697,109.1482,120.4162],[58.9638,109.1034,119.4753],[53.7665,109.193,119.2513],[48.5692,109.2826,119.0272],[47.9419,109.2826,118.3104],[52.736,109.193,115.1293],[57.53,109.1034,111.9482],[56.5444,109.1034,104.6003],[52.736,109.1034,104.1522],[48.9276,109.1034,103.7042],[49.7789,109.0586,99.851],[50.6302,109.0138,95.9979],[57.8885,109.0138,94.9226],[50.6302,109.0138,94.4745],[54.0353,109.0138,93.668],[50.0925,109.0138,93.22],[49.4653,109.0138,91.4278],[45.6121,109.1034,90.3525],[46.5082,109.193,88.5604],[49.9133,109.193,87.1266],[46.2394,109.2826,87.5747],[45.0745,109.641,86.589],[41.2213,109.8203,87.3058],[41.0421,110.806,84.976],[39.2499,111.5228,83.7215],[38.6227,112.5981,81.2125],[37.4578,113.0462,80.5852],[37.4578,113.4942,79.4203],[39.2499,113.4942,78.2554],[38.6227,114.2111,76.732],[42.5654,115.1968,73.2373],[45.7017,115.1968,71.8932],[42.1174,115.2864,72.4308],[42.2966,115.1968,70.1906],[38.4434,115.1968,69.0257],[37.637,115.1968,67.0543],[41.0421,115.1968,65.6206],[43.9992,115.1072,61.9467],[40.9973,115.0624,59.348],[37.9954,115.0176,56.7494],[38.3986,114.9727,51.6865],[38.8019,114.9279,46.6236],[35.7552,114.9279,43.7561],[32.7085,114.9279,40.8887],[29.4826,114.9279,44.2042],[31.2748,114.9279,39.903],[27.78,114.9279,42.412],[25.0918,114.9279,40.2614],[27.78,114.9279,36.8563],[22.762,114.9279,32.2863],[18.3712,114.9279,36.5875],[17.1166,114.9279,32.8239],[15.8621,114.9279,29.0604],[11.1129,114.9279,29.3292],[7.6181,115.0176,35.5122],[1.8832,115.1072,31.3902],[0.2702,115.7344,38.4692],[0.7183,115.9136,40.0822],[0.0014,116.1825,41.0679],[1.3455,116.0032,42.1432],[1.6144,116.0929,43.0393],[0.7183,116.3617,42.8601],[-0.2674,116.8993,43.6665],[-0.0882,117.437,45.9067],[-1.97,118.3331,46.3548],[-1.7011,118.7811,48.4158],[-3.6725,118.8707,50.4768],[-9.2283,118.7811,52.0897],[-11.7373,118.6915,56.2117],[-14.0671,118.6915,57.6454],[-14.784,118.6915,60.2441],[-19.8469,118.6915,58.6311],[-24.9097,118.6915,57.0182],[-30.6895,118.6915,57.0182],[-36.4692,118.6915,57.0182],[-39.7847,118.6915,62.2155],[-33.3329,118.6915,64.4109],[-26.8811,118.6915,66.6063],[-33.4673,118.6915,66.7855],[-40.0536,118.6915,66.9647],[-33.2881,118.6915,68.4433],[-26.5227,118.6915,69.9218],[-23.9688,118.6915,74.1782],[-21.415,118.6915,78.4346],[-28.27,118.6915,77.3593],[-35.1251,118.6915,76.284],[-36.2004,118.6915,80.7644],[-37.2757,118.6915,85.2449],[-34.0946,118.7363,90.8006],[-30.9135,118.7811,96.3563],[-36.6484,118.8408,98.4173],[-42.3834,118.9006,100.4783],[-48.1183,118.9603,102.5393],[-45.7437,119.0499,106.5717],[-43.3691,119.1395,110.604]],"expectedDistance":1188.11,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-126026","objectiveId":"creature-126026","objectiveName":"Ingvar the Plunderer","checkpoints":[[-43.3691,119.1395,110.604],[-35.9316,119.1395,110.604],[-32.6161,119.1395,108.6327],[-29.3005,119.1395,106.6613],[-26.6123,119.3188,110.0664],[-27.1499,119.4084,112.0378],[-25.8954,119.4084,111.3209],[-25.8058,119.498,111.769],[-23.2072,119.8564,111.5001],[-23.1176,120.8421,113.8299],[-20.5189,122.4551,116.5182],[-18.0995,123.0823,117.6831],[-17.4722,124.9641,122.0739],[-16.4865,125.4121,123.5077],[-16.4865,126.6667,125.9271],[-15.5905,127.0251,127.092],[-15.5008,127.8316,128.8842],[-16.2177,128.3692,129.8699],[-16.0385,128.8173,131.0348],[-18.1891,128.9069,131.662],[-19.354,129.5341,133.8126],[-17.4722,130.251,134.7983],[-17.0242,131.9535,138.4723],[-18.0099,132.76,140.6229],[-16.1281,133.8353,142.3254],[-17.8307,135.0002,146.089],[-15.3216,135.5379,147.7019],[-18.1891,135.1795,150.0318],[-22.6695,135.0898,152.1824],[-24.7305,135.0898,156.394],[-21.3254,135.0898,158.2757],[-20.3397,135.0898,160.6952],[-22.9383,135.0898,161.9497],[-18.4579,135.0898,161.1432],[-14.6944,135.0898,164.5483],[-20.6085,135.0898,168.3119],[-14.784,135.0898,172.0754],[-18.9956,135.0898,172.3443],[-23.2072,135.0898,172.6131],[-20.0709,135.0898,175.6598],[-13.7983,135.0898,177.1831],[-17.6514,135.0898,178.7961],[-14.4255,135.0898,178.7065],[-16.0385,135.0898,182.7388],[-12.2749,135.0898,185.3375],[-14.0671,135.0898,189.1907],[-10.662,135.0898,188.8322],[-13.9775,135.0898,191.0724],[-13.9775,135.0898,194.9256],[-9.3179,135.0898,192.4166],[-9.3627,135.1346,196.4041],[-9.4075,135.1795,200.3917],[-4.1206,135.2691,205.141],[2.6001,135.2691,202.4527],[5.6916,135.3139,205.3202],[8.783,135.3587,208.1877],[4.3922,135.3587,213.1161],[10.0376,135.3587,209.0837],[10.5304,135.3587,216.2972],[11.0233,135.3587,223.5107],[5.4675,135.3587,228.4392],[2.1968,135.3587,233.278],[-1.0739,135.3587,238.1169],[-4.5238,135.3587,233.6813],[-7.9737,135.3587,229.2456],[-14.0671,135.3587,232.5611],[-11.7373,135.3587,228.0807],[-9.4075,135.3587,223.6003],[-14.5151,135.3587,225.9301],[-12.5438,135.3587,222.7042],[-16.2177,135.3587,222.8834],[-15.4112,135.7171,220.016],[-14.3359,136.2548,218.6718],[-16.6658,137.1508,218.403],[-17.2034,137.6885,217.7758],[-19.5332,138.0469,218.2238],[-19.4436,138.2261,217.5069],[-20.8773,139.0326,216.8797],[-20.7877,139.8391,215.3563],[-21.5046,140.556,214.3706],[-20.6981,140.9144,213.2057],[-22.0423,141.9001,211.9512],[-20.967,142.7066,210.3383],[-21.9527,143.4234,209.4422],[-20.4293,143.7819,208.3669],[-21.6838,144.4987,207.4708],[-20.6981,145.3948,205.8578],[-21.5046,146.2909,204.6033],[-20.6085,147.2766,202.9904],[-20.967,147.9935,201.8255],[-23.1176,147.9935,202.3631],[-23.924,148.7103,201.2878],[-21.0566,149.4272,199.5852],[-21.0566,149.696,199.1372],[-22.4007,149.7856,199.0476],[-23.2968,150.8609,197.5242],[-22.3111,151.6674,196.2697],[-24.1033,152.8323,194.6568],[-23.2072,153.1908,194.2087],[-26.7915,154.8037,191.8789],[-24.4617,155.1621,191.162],[-25.1786,155.9686,189.9075],[-23.6552,156.327,189.101],[-26.3435,156.9543,187.9361],[-28.046,156.9543,187.9361],[-29.3902,156.9543,185.6959],[-24.9097,156.9244,183.1869],[-20.4293,156.8946,180.6779],[-15.9489,156.8647,178.1688],[-9.4971,156.8647,177.6312],[-4.031,156.8647,174.1364],[-5.5543,156.9543,176.8247],[-1.3427,157.0439,175.2117],[-2.418,157.492,178.4376],[-0.9843,158.0296,179.0649],[-0.6258,158.4777,180.3194],[0.3599,159.3737,180.9467],[0.091,159.8218,182.1116],[1.704,161.1659,183.5453],[1.9728,161.8828,184.9791],[3.4961,163.0477,186.144],[3.2273,163.3165,186.7712],[4.0338,164.0334,187.4881],[3.4065,164.4814,188.7426],[4.8403,166.5424,191.9685],[4.3922,166.7216,192.5062],[4.213,168.245,195.1048],[5.6468,169.0514,195.7321],[6.1844,169.9475,197.0762],[6.3636,170.6644,198.4203],[4.8403,170.6644,199.0476],[4.0338,171.2917,200.3917],[4.6611,171.7397,201.1086],[2.152,172.367,202.9904],[2.2416,172.9942,203.9761],[3.4961,173.5319,204.3345],[2.9585,174.1591,205.3202],[5.1091,175.0552,206.1267],[6.4532,175.8617,207.2916],[6.4532,176.6682,208.8149],[5.6468,177.1162,209.9798],[6.0052,178.1019,211.6824],[6.8117,178.1915,211.6824],[2.6897,178.2811,213.1161],[5.5571,178.5499,212.9369],[8.6934,178.6396,214.9083],[4.0338,178.6396,218.1342],[0.8079,178.6396,223.6899],[-2.418,178.6396,229.2456],[-7.3913,178.6396,230.0521],[-12.3645,178.6396,230.8586],[-15.7249,178.6396,233.3676],[-19.0852,178.6396,235.8767],[-19.5332,178.6396,239.6402],[-19.9813,178.6396,243.4038],[-20.967,178.6396,243.2246],[-22.4007,178.6396,239.9987],[-22.6695,178.6396,243.7622],[-24.9097,178.6396,240.9843],[-25.985,178.7292,244.031],[-25.6266,178.8188,247.9738],[-29.9726,180.2077,248.1082],[-34.3186,181.5966,248.2426],[-41.3081,184.1953,247.6154],[-45.6989,184.9121,247.5706],[-50.0897,185.629,247.5258],[-51.0754,185.9874,248.153],[-53.4948,186.7939,248.2426],[-53.7637,187.0627,248.9595],[-55.4662,187.7796,248.5115],[-56.1831,188.3173,250.0348],[-58.2441,188.8549,249.766],[-58.7817,189.5718,253.3503],[-60.9323,190.199,252.6334],[-63.1725,190.7367,257.4723],[-66.1296,190.7367,254.784],[-67.2945,190.7367,258.906],[-68.9075,190.7367,255.5905],[-75.5385,190.6471,255.6801],[-77.2859,190.6023,260.0261],[-79.0332,190.5575,264.3722],[-85.485,190.5575,264.2377],[-91.9369,190.5575,264.1033],[-96.3277,190.6471,261.1462],[-100.7185,190.7367,258.1892],[-103.2275,190.7367,263.3417],[-105.7366,190.7367,268.4941],[-105.7366,190.6471,275.842],[-107.7975,190.7367,272.3473],[-108.3352,190.6471,276.6037],[-108.8729,190.5575,280.8601],[-110.9338,190.7367,274.4083],[-112.0988,190.7367,272.6161],[-114.339,190.5575,273.1538],[-117.3857,190.4679,279.7848],[-119.2226,190.4679,276.5141],[-121.0596,190.4679,273.2434],[-123.3894,190.4679,276.6037],[-125.7192,190.4679,279.964],[-127.9595,190.4679,273.0642],[-131.4542,190.4679,273.1538],[-133.9632,190.4679,274.1395],[-134.5905,190.3783,270.1967],[-135.2177,190.2887,266.2539],[-139.3397,190.1094,265.8955],[-140.0566,189.9302,262.7592],[-142.6552,190.1094,259.6229],[-148.3902,190.2887,260.7878],[-152.5122,190.5575,258.3684],[-156.903,190.5575,254.336],[-153.4979,190.4679,250.7517],[-159.7705,190.4679,248.7803],[-163.5788,190.4679,248.7803],[-167.3872,190.4679,248.7803],[-163.982,190.3783,246.316],[-160.5769,190.2887,243.8518],[-163.8028,190.2887,240.1779],[-160.8009,190.199,237.2656],[-157.7991,190.1094,234.3533],[-160.1289,190.2887,231.1274],[-156.0069,190.199,230.1865],[-151.8849,190.1094,229.2456],[-151.7953,190.199,226.9158],[-148.8382,190.1094,225.8405],[-149.8239,190.199,222.7042],[-156.5445,190.2887,219.9264],[-156.0069,190.3783,216.2524],[-160.8458,190.4679,212.9369],[-159.3224,190.4679,210.2486],[-164.4301,190.4679,208.9941],[-163.3548,190.4679,205.4098],[-164.6093,190.4679,204.6929],[-165.0574,190.5575,202.7215],[-164.3405,190.6471,201.1982],[-166.6703,190.199,201.3774],[-166.8495,189.6614,199.406],[-167.9248,189.0341,197.7035],[-167.656,188.5861,196.0009],[-168.2833,188.3173,194.7464],[-167.9248,187.9588,193.6711],[-169.3586,187.1524,191.6101],[-169.9858,187.1524,191.6997],[-170.3443,186.7939,191.162],[-170.165,186.3459,190.4452],[-171.2403,185.4498,187.8465],[-170.7027,185.3602,187.5777],[-171.8228,184.2849,183.859],[-172.9429,183.2096,180.1402],[-174.287,182.4031,178.1688],[-174.4662,181.8655,175.839],[-171.8676,180.9694,172.3443],[-174.1078,180.8798,172.4339],[-176.1688,180.7005,171.3586],[-175.4519,180.6109,164.0107],[-178.3642,180.5661,161.3224],[-181.2765,180.5213,158.6342],[-184.8608,180.5213,164.6379],[-189.4309,180.5213,160.3367],[-189.8789,180.5213,165.1756],[-191.4022,180.5213,165.7132],[-195.345,180.5213,163.2042],[-200.9903,180.6109,167.7742],[-206.7253,180.6109,166.3405],[-212.281,180.7005,170.1937],[-212.9083,180.7005,169.7456],[-214.8797,180.7005,170.1041],[-217.9263,180.7005,171.6274],[-216.403,180.7005,175.391],[-220.2114,180.7005,177.0487],[-224.0197,180.7005,178.7065],[-224.4678,180.7005,184.2622],[-228.993,180.7005,184.5758],[-233.5182,180.7005,184.8895],[-233.8766,180.6109,190.266],[-238.4467,180.6109,192.8646],[-243.1063,180.6109,190.3556],[-245.2569,180.6109,193.223],[-250.0062,180.7005,191.3413],[-252.9632,180.6109,191.3413],[-258.0709,180.6109,194.2087],[-257.7125,180.6109,199.2268],[-259.8631,180.5213,205.0514],[-265.2396,180.5213,202.9904],[-267.659,180.5213,209.5318],[-273.3044,180.5213,207.65],[-273.7524,180.5213,213.2057],[-276.8887,180.5213,209.6214],[-278.8153,180.5213,213.6986],[-280.7419,180.5213,217.7758],[-283.6989,180.5213,214.5947],[-286.656,180.5213,211.4136],[-292.7494,180.5213,213.9226],[-296.0649,180.5213,219.7471],[-294.3623,180.5213,225.3029],[-295.7065,180.5213,225.5717],[-298.5739,180.5213,221.1809],[-300.9934,180.5213,225.4373],[-303.4128,180.5213,229.6937],[-307.1764,180.5213,227.4087],[-310.9399,180.5213,225.1236],[-314.3898,180.5213,226.9606],[-317.8398,180.5213,228.7976],[-317.8398,180.5213,232.9644],[-317.8398,180.5213,237.1312],[-320.7072,180.5213,232.6508],[-318.9151,180.5213,237.6688],[-319.3631,180.5213,238.4753],[-322.7682,180.5213,233.7261],[-321.0657,180.5213,239.8194],[-327.7863,180.5213,240.8051],[-331.8187,180.5213,239.7746],[-335.8511,180.5213,238.7441]],"expectedDistance":1164.68,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"a7846ffb59fa38a5fe6e22688676ca2cc43c7f34f7385c02153c0ffbbafce86a","generationStatus":"Candidate","generationIssues":[]},{"schemaVersion":1,"id":"primary","dungeonId":"utgarde-pinnacle","mapId":575,"legs":[{"id":"leg-01-encounter-577","objectiveId":"encounter-577","objectiveName":"Svala Sorrowgrave","checkpoints":[[-326.3358,110.1967,582.9718],[-332.1686,108.6725,578.6943],[-338.0015,107.1483,574.4168],[-343.8344,105.624,570.1393],[-349.6673,104.0998,565.8618],[-355.5002,102.5755,561.5842],[-361.333,101.0513,557.3067],[-367.1659,99.527,553.0292],[-372.9988,98.0028,548.7517],[-378.8317,96.4785,544.4742],[-384.6645,94.9543,540.1967],[-390.4974,93.4301,535.9192],[-396.3303,91.9058,531.6417],[-402.1632,90.3816,527.3642],[-407.9961,88.8573,523.0867],[-413.8289,87.3331,518.8092],[-419.6618,85.8088,514.5317],[-425.4947,84.2846,510.2542],[-431.3276,82.7603,505.9766],[-437.1605,81.2361,501.6991],[-442.9933,79.7118,497.4216],[-448.8262,78.1876,493.1441],[-454.6591,76.6634,488.8666],[-460.492,75.1391,484.5891]],"expectedDistance":170.02,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-126102","objectiveId":"creature-126102","objectiveName":"Gortok Palehoof","checkpoints":[[-460.492,75.1391,484.5891],[-460.3297,76.4332,477.481],[-460.1675,77.7273,470.3729],[-460.0053,79.0214,463.2648],[-459.843,80.3155,456.1567],[-459.6808,81.6096,449.0485],[-459.5186,82.9037,441.9404],[-459.3563,84.1978,434.8323],[-459.1941,85.4919,427.7242],[-459.0319,86.786,420.6161],[-458.8696,88.0801,413.508],[-458.7074,89.3742,406.3999],[-458.5452,90.6683,399.2917],[-458.3829,91.9624,392.1836],[-458.2207,93.2565,385.0755],[-458.0585,94.5506,377.9674],[-457.8962,95.8447,370.8593],[-457.734,97.1388,363.7512],[-457.5718,98.4329,356.6431],[-457.4095,99.727,349.5349],[-457.2473,101.0211,342.4268],[-457.0851,102.3152,335.3187],[-456.9228,103.6093,328.2106],[-456.7606,104.9034,321.1025]],"expectedDistance":166.22,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-126103","objectiveId":"creature-126103","objectiveName":"Skadi the Ruthless","checkpoints":[[-456.7606,104.9034,321.1025],[-457.1945,104.9034,317.7182],[-463.963,104.8166,314.7678],[-463.7895,104.8166,311.7306],[-467.7378,104.7732,310.6893],[-471.6861,104.7298,309.648],[-472.901,104.7298,311.4703],[-474.9836,104.7298,309.5612],[-476.1117,104.7298,311.2968],[-477.3266,104.7298,309.3009],[-477.5869,104.7298,311.6439],[-480.3638,104.7298,312.2513],[-482.967,104.7298,311.8174],[-482.8803,104.7298,308.7803],[-485.6571,104.7298,308.9538],[-485.9174,104.7298,311.2968],[-488.0001,104.7298,309.3009],[-489.9959,104.7298,311.0364],[-492.2521,104.7298,311.2968],[-494.248,104.7298,312.8587],[-494.248,104.7298,310.6026],[-498.5868,104.7298,307.3918],[-504.7479,104.7298,310.6026],[-504.0537,104.7298,314.9848],[-503.3595,104.7298,319.367],[-507.7851,104.7298,321.6231],[-506.3967,104.6431,327.3504],[-503.533,104.5563,329.433],[-504.4876,104.4695,333.1644],[-505.2686,104.5563,333.4247],[-504.0537,104.6431,333.5115],[-504.7479,104.5563,333.8586],[-504.0537,104.7298,334.466],[-505.095,104.5563,335.4206],[-505.095,104.5563,337.0693],[-504.0537,104.7298,338.7181],[-505.2686,104.5563,340.5404],[-503.7934,104.7298,342.5362],[-504.314,104.7298,342.7098],[-504.2272,104.9034,344.4453],[-506.3967,104.7298,342.7098]],"expectedDistance":118.07,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-126255","objectiveId":"creature-126255","objectiveName":"King Ymiron","checkpoints":[[-506.3967,104.7298,342.7098],[-499.3202,104.8642,344.4957],[-492.2437,104.9986,346.2816],[-485.1672,105.1329,348.0675],[-478.0908,105.2673,349.8535],[-471.0143,105.4017,351.6394],[-463.9378,105.536,353.4253],[-456.8614,105.6704,355.2112],[-449.7849,105.8047,356.9971],[-442.7084,105.9391,358.783],[-435.632,106.0735,360.5689],[-428.5555,106.2078,362.3548],[-421.479,106.3422,364.1408],[-414.4025,106.4766,365.9267],[-407.3261,106.6109,367.7126],[-400.2496,106.7453,369.4985],[-393.1731,106.8797,371.2844],[-386.0967,107.014,373.0703],[-379.0202,107.1484,374.8562],[-371.9437,107.2827,376.6421],[-364.8673,107.4171,378.4281],[-357.7908,107.5515,380.214],[-350.7143,107.6858,381.9999],[-343.6378,107.8202,383.7858],[-336.5614,107.9546,385.5717],[-329.4849,108.0889,387.3576],[-322.4084,108.2233,389.1435],[-315.332,108.3577,390.9294],[-308.2555,108.492,392.7154],[-301.179,108.6264,394.5013],[-294.1025,108.7607,396.2872],[-287.0261,108.8951,398.0731]],"expectedDistance":226.29,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"14f669a1cec5a75a52188ecf7c382d78a67a31ea8c3aa7709d2383025509c8b8","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"the-nexus","mapId":576,"legs":[{"id":"leg-01-creature-4764","objectiveId":"creature-4764","objectiveName":"Frozen Commander","checkpoints":[[-145.4497,-16.5661,-10.1884],[-147.0476,-16.5661,-9.7889],[-145.4497,-16.5661,-9.2775],[-145.3378,-16.5661,-8.6703],[-146.4404,-16.5661,-6.3693],[-148.1502,-16.5661,-6.1775],[-148.6456,-16.5661,-4.3878],[-149.3327,-16.5661,-6.0976],[-149.9239,-16.5661,-4.5955],[-152.1291,-16.5661,-5.794],[-154.1425,-16.5661,-4.3878],[-156.2518,-16.5661,-4.5796],[-156.7472,-16.5661,-5.8899],[-157.4503,-16.5661,-4.5796],[-157.9456,-16.5661,-6.1935],[-158.441,-16.5661,-4.5796],[-160.8379,-16.5661,-4.1801],[-163.0431,-16.5661,-6.2894],[-166.3508,-16.5661,-5.8899],[-167.4534,-16.5661,-4.2919],[-169.8344,-16.5661,-6.4971],[-170.5375,-16.5661,-4.7873],[-172.3272,-16.5182,-8.2868],[-173.0303,-16.4703,-4.0842],[-176.4818,-16.4703,-0.3849],[-179.9334,-16.4703,3.3143],[-186.8845,-16.4942,6.1107],[-193.8356,-16.5182,8.9071],[-194.7677,-16.5182,3.2078],[-195.6998,-16.5182,-2.4916],[-196.632,-16.5182,-8.1909],[-202.5337,-16.5182,-8.1909],[-208.4355,-16.5182,-8.1909],[-214.3372,-16.5182,-8.1909],[-218.7875,-16.4942,-2.4383],[-223.2378,-16.4703,3.3143],[-223.134,-16.4942,7.2692],[-223.0301,-16.5182,11.2242],[-220.5373,-16.5661,17.0087],[-224.3404,-16.5661,14.7077],[-226.6415,-16.5661,18.3031],[-226.5296,-16.5661,22.8093],[-230.8281,-16.5661,27.1238],[-235.3383,-16.5661,27.0279],[-239.5449,-16.5661,29.4248],[-238.1347,-16.5661,34.9257],[-242.1336,-16.5661,38.9246],[-247.4428,-16.5661,37.3267],[-248.2897,-16.5661,41.4274],[-249.1366,-16.5661,45.5281],[-253.6428,-16.5661,45.3204],[-254.0902,-16.5661,49.2194],[-254.5377,-16.5661,53.1184],[-260.2423,-16.5661,52.0158],[-261.8403,-16.5661,58.3277],[-267.0496,-16.5661,56.6179],[-269.846,-16.5661,61.5236],[-269.7342,-16.5661,66.0298],[-274.0326,-16.5661,70.3283],[-278.5389,-16.5661,70.2324],[-282.1502,-16.5661,72.5335],[-279.8492,-16.5661,76.3206],[-279.945,-16.5661,80.0119],[-285.5379,-16.5661,76.1129],[-286.6245,-16.5661,81.2103],[-285.2343,-16.5182,87.1068],[-282.8373,-16.4703,91.9166],[-281.4391,-16.4942,96.4148],[-280.0409,-16.5182,100.9131],[-283.6363,-16.4703,104.9239],[-284.8348,-16.4703,108.5353],[-287.2477,-16.4703,111.5234],[-290.2518,-16.4703,113.3131],[-295.8446,-16.4703,118.0111],[-294.2307,-16.4703,121.5106],[-300.1591,-16.3744,124.1153],[-305.4164,-16.3744,124.7225],[-304.2818,-16.3264,125.6333],[-300.5266,-16.1187,126.2246],[-303.8983,-15.9589,126.5122],[-303.4349,-15.7512,127.7107],[-300.5426,-15.7032,128.6215],[-300.6545,-15.6074,130.587],[-303.4509,-15.5594,131.6416],[-300.6545,-15.6074,133.2396],[-303.4509,-15.7032,133.7829],[-298.5132,-16.662,136.6632],[-300.2869,-17.7167,140.2665],[-299.2003,-17.9084,141.3691],[-302.7478,-18.212,142.0243],[-301.9488,-18.3239,142.8233],[-308.5324,-18.3239,144.1336],[-308.836,-18.4677,146.131],[-310.5458,-18.5796,146.93],[-310.354,-19.0749,148.3202],[-311.2489,-19.4744,149.3269],[-311.0411,-20.0656,151.1166],[-311.6324,-20.3213,151.7398],[-313.4381,-20.8327,151.7398],[-314.8283,-21.8394,153.9769],[-316.8257,-22.4786,153.961],[-317.4809,-22.9739,155.7187],[-318.184,-22.91,154.2806],[-318.0881,-23.1657,156.1342],[-319.6381,-23.0698,154.9837],[-320.8366,-23.2296,157.077],[-322.7381,-23.2775,157.6203],[-323.8407,-23.2296,156.1182],[-325.8222,-23.7729,157.3167],[-328.6186,-24.6198,156.1342],[-330.8237,-25.5626,157.7481],[-334.0396,-26.9049,158.0517],[-336.0411,-27.7038,155.9424],[-338.9373,-28.6626,155.1275],[-339.8322,-28.9183,156.9332],[-342.325,-29.0781,156.3579],[-343.9229,-29.0301,154.6481],[-345.6327,-29.0781,154.4563],[-346.5436,-29.4296,157.061],[-348.6529,-30.1807,159.1223],[-353.0472,-31.5229,157.7162],[-353.4467,-31.4271,152.3311],[-358.2406,-32.8173,149.7264],[-362.0437,-33.9039,149.7104],[-362.8746,-34.3034,153.7053],[-364.169,-34.4632,153.7053],[-366.438,-34.5271,150.2058],[-367.4288,-34.591,153.6094],[-369.3303,-34.591,153.7213],[-370.9283,-34.591,150.4295],[-372.3345,-34.591,154.3285],[-373.9324,-34.6389,150.9249],[-375.9458,-34.7828,156.1182],[-380.6438,-34.8786,150.5254],[-384.2951,-34.9266,151.8277],[-387.9464,-34.9745,153.13],[-391.3501,-35.0225,158.2275],[-392.2609,-35.0225,160.5126],[-399.3558,-35.0704,158.9146],[-400.5543,-35.0225,161.1198],[-401.8486,-34.3194,160.5285],[-403.095,-34.0157,160.6883],[-402.8873,-34.3194,161.5832],[-403.6862,-33.9678,162.2703],[-404.5971,-33.4565,161.8708],[-404.9486,-33.009,162.4621],[-404.5491,-34.1116,164.7311],[-405.5399,-34.5111,166.0734],[-404.9486,-34.8147,166.6007],[-403.846,-35.0704,166.2971],[-404.2455,-35.1183,167.4956],[-401.1455,-35.0225,172.9286],[-402.4398,-35.0225,174.5266],[-399.7393,-35.0225,179.8318],[-402.1362,-35.0225,181.9251],[-405.5239,-35.0225,177.2271],[-408.1285,-35.0225,178.7292],[-409.9342,-34.9745,185.6163],[-406.8342,-34.9745,191.0174],[-412.7147,-34.9266,194.0855],[-417.3966,-34.9266,194.485],[-419.7936,-34.9266,188.4927],[-423.8364,-34.9745,189.1478],[-424.14,-35.0225,183.2194]],"expectedDistance":606.2,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-126480","objectiveId":"creature-126480","objectiveName":"Grand Magus Telestra","checkpoints":[[-424.14,-35.0225,183.2194],[-428.4335,-33.9618,177.4121],[-432.727,-32.9012,171.6048],[-437.0205,-31.8405,165.7975],[-441.3139,-30.7799,159.9902],[-445.6074,-29.7193,154.1829],[-449.9009,-28.6586,148.3756],[-454.1944,-27.598,142.5683],[-458.4879,-26.5373,136.761],[-462.7814,-25.4767,130.9537],[-467.0749,-24.4161,125.1465],[-471.3684,-23.3554,119.3392],[-475.6619,-22.2948,113.5319],[-479.9554,-21.2341,107.7246],[-484.2488,-20.1735,101.9173],[-488.5423,-19.1129,96.11],[-492.8358,-18.0522,90.3027]],"expectedDistance":116.79,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-126599","objectiveId":"creature-126599","objectiveName":"Anomalus","checkpoints":[[-492.8358,-18.0522,90.3027],[-495.3656,-17.885,83.3021],[-497.8954,-17.7178,76.3015],[-500.4252,-17.5507,69.301],[-502.955,-17.3835,62.3004],[-505.4848,-17.2163,55.2998],[-508.0146,-17.0491,48.2992],[-510.5444,-16.8819,41.2987],[-513.0741,-16.7147,34.2981],[-515.6039,-16.5475,27.2975],[-518.1337,-16.3803,20.297],[-520.6635,-16.2131,13.2964],[-523.1933,-16.0459,6.2958],[-525.7231,-15.8787,-0.7048],[-528.2529,-15.7115,-7.7053],[-530.7827,-15.5443,-14.7059],[-533.3125,-15.3771,-21.7065],[-535.8423,-15.21,-28.707],[-538.3721,-15.0428,-35.7076],[-540.9018,-14.8756,-42.7082],[-543.4316,-14.7084,-49.7088],[-545.9614,-14.5412,-56.7093],[-548.4912,-14.374,-63.7099],[-551.021,-14.2068,-70.7105],[-553.5508,-14.0396,-77.711],[-556.0806,-13.8724,-84.7116],[-558.6104,-13.7052,-91.7122],[-561.1402,-13.538,-98.7128],[-563.67,-13.3708,-105.7133],[-566.1997,-13.2036,-112.7139],[-568.7295,-13.0364,-119.7145],[-571.2593,-12.8693,-126.715],[-573.7891,-12.7021,-133.7156],[-576.3189,-12.5349,-140.7162],[-578.8487,-12.3677,-147.7167],[-581.3785,-12.2005,-154.7173],[-583.9083,-12.0333,-161.7179],[-586.4381,-11.8661,-168.7185],[-588.9679,-11.6989,-175.719],[-591.4976,-11.5317,-182.7196],[-594.0274,-11.3645,-189.7202],[-596.5572,-11.1973,-196.7207],[-599.087,-11.0301,-203.7213],[-601.6168,-10.8629,-210.7219],[-604.1466,-10.6957,-217.7225],[-606.6764,-10.5286,-224.723],[-609.2062,-10.3614,-231.7236],[-611.736,-10.1942,-238.7242],[-614.2658,-10.027,-245.7247],[-616.7956,-9.8598,-252.7253],[-619.3253,-9.6926,-259.7259],[-621.8551,-9.5254,-266.7265],[-624.3849,-9.3582,-273.727],[-626.9147,-9.191,-280.7276],[-629.4445,-9.0238,-287.7282]],"expectedDistance":402.06,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-126663","objectiveId":"creature-126663","objectiveName":"Ormorok the Tree-Shaper","checkpoints":[[-629.4445,-9.0238,-287.7282],[-631.2742,-8.872,-282.8944],[-633.1038,-8.7202,-278.0606],[-638.7546,-8.6243,-274.7129],[-644.4053,-8.5285,-271.3652],[-642.5677,-8.3767,-266.4754],[-640.73,-8.2248,-261.5857],[-638.7326,-8.1769,-260.6749],[-633.4434,-8.1769,-260.579],[-636.1479,-7.9692,-256.3884],[-641.2454,-7.8733,-253.9875],[-640.75,-7.7135,-250.6917],[-636.851,-7.8094,-247.9912],[-637.1546,-8.0171,-246.8247],[-633.9427,-8.8321,-243.1813],[-637.8257,-10.43,-241.088],[-637.2345,-10.5259,-239.8736],[-641.5649,-12.8269,-236.47],[-641.2613,-13.6739,-233.1782],[-642.268,-14.1692,-231.8838],[-642.6356,-14.6166,-229.4869],[-637.3304,-15.1759,-225.5719],[-640.734,-15.1759,-223.6864],[-637.5381,-15.2239,-221.4972],[-637.3464,-15.2239,-219.8992],[-640.9417,-15.2239,-219.1961],[-644.2335,-15.2239,-215.8884],[-640.1328,-15.2239,-212.4847],[-636.032,-15.2239,-209.0811],[-635.6326,-15.2239,-203.4803],[-635.2331,-15.2239,-197.8795],[-641.2354,-15.2239,-197.3282],[-647.2377,-15.2239,-196.7769],[-651.3364,-15.2239,-200.1246],[-655.4351,-15.2239,-203.4723],[-657.145,-15.2239,-198.7743],[-658.1517,-15.2239,-202.5775],[-661.6352,-15.2718,-202.5775],[-661.747,-15.2718,-199.1898],[-663.6486,-15.4636,-200.58],[-665.5502,-16.9656,-197.3362],[-667.4517,-18.4677,-194.0923],[-670.0564,-19.81,-194.38],[-673.7636,-22.2069,-192.3506],[-676.0327,-25.1152,-186.7737],[-678.8451,-26.5214,-186.8696],[-680.9544,-27.2724,-187.7804],[-682.7441,-28.0714,-187.7804],[-679.74,-28.6147,-182.1557],[-683.7348,-28.8703,-183.3541],[-682.4245,-28.9343,-181.1969],[-683.1516,-28.9023,-175.8278],[-683.8786,-28.8703,-170.4587],[-681.5297,-28.8144,-163.995],[-679.1807,-28.7585,-157.5313],[-679.5322,-28.6786,-152.3859],[-679.8838,-28.5987,-147.2405],[-678.0301,-28.5028,-146.8729],[-678.4936,-27.7678,-145.6265],[-677.7905,-27.3683,-145.1152],[-678.4936,-26.3296,-144.1085],[-677.8384,-25.9781,-143.7729],[-676.8317,-26.5214,-144.2843],[-676.2884,-25.7703,-143.5812],[-675.8889,-26.2657,-144.1884],[-675.2977,-25.4188,-143.4853],[-674.0513,-24.6198,-143.1817],[-674.3549,-25.7224,-144.2843],[-671.5585,-22.9579,-142.127],[-669.9445,-24.1724,-142.4946],[-669.8486,-24.6677,-143.5013],[-668.6502,-25.6745,-144.0765],[-666.8285,-26.9209,-143.4693],[-665.6301,-27.8636,-144.0765],[-665.646,-27.8636,-145.291],[-664.4636,-28.5508,-145.307],[-660.8522,-28.6946,-149.4936],[-656.0424,-28.6946,-152.4817],[-654.013,-28.6946,-150.8199],[-648.9315,-29.11,-154.5271],[-647.1418,-29.3657,-153.3287],[-645.7036,-29.8291,-153.5524],[-644.3294,-29.4137,-151.4271],[-643.1309,-29.5734,-151.4271],[-639.4557,-30.0369,-153.089],[-634.518,-29.9729,-152.7374],[-633.3515,-29.5095,-151.8106],[-632.153,-29.158,-151.8106],[-629.7361,-30.0848,-157.5472],[-627.2393,-29.6214,-158.49],[-624.8065,-28.8544,-160.887],[-619.0219,-28.7585,-159.4808],[-617.2242,-28.7905,-163.1321],[-615.4265,-28.8224,-166.7834],[-610.0254,-28.8224,-167.9819],[-609.8736,-28.8224,-171.8808],[-609.7218,-28.8224,-175.7798],[-606.0306,-28.6626,-169.7875],[-603.2341,-28.4229,-168.9886],[-600.6295,-28.1832,-171.5932],[-602.9305,-28.4229,-176.6907],[-598.2326,-27.8157,-178.7041],[-598.4323,-27.8397,-182.5472],[-598.632,-27.8636,-186.3902],[-594.3336,-27.3203,-189.2825],[-591.8248,-27.0647,-189.0748],[-589.4119,-27.0647,-187.8923],[-586.4077,-26.9209,-190.2732],[-584.0268,-26.777,-188.4835],[-581.7417,-26.3296,-191.0562],[-577.2515,-25.6745,-185.5593],[-577.4432,-25.5147,-192.2547],[-571.9463,-24.8595,-190.8645],[-569.2458,-24.5559,-196.3774],[-565.2429,-24.1564,-193.9325],[-561.24,-23.7569,-191.4877],[-560.0256,-23.709,-192.6861],[-557.6287,-23.4054,-192.6702],[-555.8549,-22.91,-195.0831],[-553.4261,-22.111,-195.0831],[-551.0451,-21.4718,-193.2614],[-548.6322,-20.6729,-193.2614],[-547.4497,-20.5131,-192.6702],[-546.8425,-20.2574,-194.4918],[-544.094,-19.8739,-194.2042],[-541.793,-19.9218,-199.0939],[-538.8847,-19.9698,-198.1831],[-536.6316,-19.9218,-203.2805],[-535.7368,-19.826,-198.7743],[-533.7074,-19.6821,-203.3445],[-532.5728,-19.6342,-198.8702],[-530.875,-19.7301,-198.7743],[-530.3117,-19.8739,-203.3445],[-529.2371,-20.1136,-201.4749],[-528.7737,-20.2095,-206.3966],[-524.0598,-19.9538,-202.7053],[-520.9597,-19.762,-207.2115],[-514.4241,-19.1229,-209.3847],[-512.7782,-18.8991,-204.5349],[-511.1323,-18.6754,-199.6852],[-505.7313,-17.8285,-199.0779],[-504.349,-17.5968,-203.7919],[-502.9668,-17.3651,-208.5058],[-499.7549,-16.8058,-208.3141],[-495.2168,-15.8151,-206.2368],[-493.2273,-15.3677,-202.6334],[-491.2379,-14.9203,-199.03],[-486.6518,-13.8177,-198.7264],[-486.1404,-13.6099,-203.6321],[-484.7342,-13.3063,-203.2805],[-483.8234,-13.2104,-198.7743],[-481.8579,-13.0666,-203.2805],[-480.8033,-13.0187,-198.8702],[-479.2053,-13.0666,-198.8702],[-478.662,-13.1625,-203.2805],[-475.0187,-13.2584,-202.0821],[-472.6857,-13.2584,-206.5883],[-469.2341,-13.4661,-206.5883],[-469.4259,-13.6739,-208.0904],[-464.9676,-13.9295,-207.6909],[-461.0207,-13.9775,-207.9945],[-462.9222,-13.9295,-212.4847],[-457.1376,-13.9775,-213.5713],[-457.2016,-13.9295,-218.7647],[-453.5742,-13.9295,-219.6435],[-446.8149,-13.9775,-220.2348],[-442.3406,-14.0254,-216.3678],[-438.186,-14.0254,-217.1667],[-434.0313,-14.0254,-217.9657],[-430.2282,-14.0254,-222.3601],[-425.3225,-14.0254,-218.3652],[-423.0374,-13.9775,-220.1709],[-423.0374,-13.9775,-225.3802],[-419.9374,-13.9295,-225.7797],[-416.6776,-14.0733,-228.5921],[-417.9719,-13.9775,-230.1101],[-413.5296,-13.9535,-229.6867],[-409.0873,-13.9295,-229.2632],[-409.6466,-13.9775,-232.7467],[-407.2497,-13.9775,-235.9426],[-403.6543,-13.9535,-234.5444],[-400.0589,-13.9295,-233.1462],[-400.2506,-13.9295,-235.687],[-401.7367,-13.9295,-238.787],[-396.847,-13.9775,-238.2916],[-398.0455,-13.9775,-241.072],[-397.4702,-14.0733,-242.0468],[-397.7259,-14.0733,-243.6767],[-398.5408,-13.9775,-244.2679],[-398.5408,-14.0733,-248.087],[-399.4836,-13.9775,-251.235],[-399.8352,-13.9775,-255.6653],[-403.4465,-13.8816,-258.0662],[-405.2522,-13.8816,-261.0904],[-407.9208,-14.0254,-262.912],[-407.0579,-14.0254,-263.7909],[-407.793,-14.1692,-264.0306],[-407.1538,-14.0254,-264.5259],[-407.3935,-14.1692,-266.06],[-406.6424,-14.0254,-268.2012],[-407.1059,-14.0254,-271.5729],[-408.0007,-14.1692,-271.9724],[-407.6971,-14.0254,-272.5477],[-408.4641,-14.1213,-273.075],[-408.7677,-13.9775,-274.4972],[-406.962,-13.9295,-275.408],[-406.9461,-14.0254,-278.6838],[-408.6239,-13.9775,-280.825],[-407.9368,-14.1692,-283.4137],[-408.56,-14.0254,-285.4431],[-408.1126,-14.0733,-286.8014],[-409.0553,-13.9295,-291.2916],[-408.9275,-13.9775,-294.5674],[-411.8358,-13.9775,-294.5674],[-414.6482,-14.0254,-297.5715],[-414.2487,-14.0254,-301.5824],[-410.4456,-14.0254,-301.7901],[-409.7744,-13.9775,-304.7783],[-412.443,-14.0254,-305.2896],[-410.3337,-13.9775,-305.6731],[-407.6172,-13.9295,-307.1592],[-409.4229,-14.0254,-309.0768],[-408.8316,-14.1692,-310.8665],[-407.026,-14.0254,-312.6562],[-407.0419,-14.1692,-314.4778],[-406.4347,-14.0254,-315.6923],[-402.6316,-13.9295,-314.1902],[-400.5383,-13.9775,-317.6897],[-396.847,-14.0254,-320.1825],[-394.9455,-14.0254,-315.884],[-391.4459,-14.0254,-316.5712],[-389.3526,-14.0254,-321.4609],[-385.7413,-14.0254,-317.6737],[-383.7438,-14.0254,-317.9773],[-382.5454,-14.0254,-322.5635],[-377.4639,-13.9775,-318.9521],[-375.1628,-13.9775,-324.0496],[-371.0721,-13.9775,-319.4634],[-367.5406,-14.0254,-317.9773],[-365.9427,-14.0254,-324.481],[-360.7493,-13.9775,-321.0774],[-359.2633,-13.9295,-315.4686],[-356.6586,-13.9775,-316.8588],[-356.0354,-13.9775,-315.0691],[-354.5653,-14.0733,-314.5098],[-354.757,-13.9775,-313.4232],[-353.8302,-13.8816,-311.6015],[-350.0271,-14.0733,-311.4897],[-348.2534,-13.9775,-310.8825],[-345.2652,-13.9775,-311.4737],[-342.8523,-13.8816,-306.6798],[-338.6297,-13.8816,-303.6757],[-336.84,-13.8816,-298.8978],[-334.4231,-14.1692,-298.8819],[-332.0222,-14.1692,-301.2788],[-328.5786,-14.2651,-299.3772],[-325.1351,-14.361,-297.4757],[-325.9021,-14.361,-290.3328],[-324.4799,-14.361,-285.555],[-318.5515,-14.361,-285.4591],[-314.9561,-14.361,-284.8678],[-312.3515,-14.361,-283.3817],[-310.9453,-14.4089,-283.7812],[-308.3406,-14.4089,-279.291],[-307.1102,-14.4089,-278.2204],[-307.6215,-14.2172,-276.7183],[-307.254,-14.0254,-275.1843],[-307.9891,-13.9295,-274.2575],[-305.5282,-13.9295,-272.0842],[-306.8545,-13.9775,-271.9884],[-302.8596,-13.9295,-269.5435],[-301.1978,-13.9295,-266.9389],[-297.2189,-13.6739,-263.3435],[-295.8766,-12.9228,-262.944],[-294.3106,-11.5166,-260.0836],[-294.8859,-11.6125,-258.2939],[-292.6647,-10.0625,-256.2925],[-294.1189,-10.9094,-254.2751],[-292.1853,-9.8548,-252.3056],[-290.2199,-8.7042,-251.9221],[-290.1719,-8.5604,-252.5293],[-289.6446,-8.9599,-247.4638],[-289.2451,-8.4645,-248.0711],[-287.6312,-8.2728,-246.0097],[-285.8255,-8.4166,-241.5195],[-284.8667,-8.2728,-241.5195],[-284.3873,-8.2728,-240.0813],[-280.3765,-8.0331,-239.9854],[-277.4363,-8.081,-238.8829],[-279.2579,-8.081,-237.0772],[-277.4363,-8.129,-235.8787],[-276.2218,-8.3687,-235.8947],[-277.4363,-8.5604,-234.089],[-277.4522,-8.8001,-232.8905],[-272.946,-8.8241,-232.2993],[-268.4398,-8.848,-231.7081],[-265.14,-8.872,-228.0967],[-261.8403,-8.896,-224.4853]],"expectedDistance":1085.07,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-05-creature-126663","objectiveId":"creature-126663","objectiveName":"Ormrok the Tree-Shaper","checkpoints":[[-261.8403,-8.896,-224.4853]],"expectedDistance":0,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-06-creature-126453","objectiveId":"creature-126453","objectiveName":"Keristrasza","checkpoints":[[-261.8403,-8.896,-224.4853],[-265.14,-8.872,-228.0967],[-268.4398,-8.848,-231.7081],[-272.946,-8.8241,-232.2993],[-277.4522,-8.8001,-232.8905],[-277.4363,-8.5604,-234.089],[-276.2218,-8.3687,-235.8947],[-277.4363,-8.129,-235.8787],[-279.2579,-8.081,-237.0772],[-277.4363,-8.081,-238.8829],[-280.3765,-8.0331,-239.9854],[-284.3873,-8.2728,-240.0813],[-284.8667,-8.2728,-241.5195],[-285.8255,-8.4166,-241.5195],[-287.6312,-8.2728,-246.0097],[-289.2451,-8.4645,-248.0711],[-289.6446,-8.9599,-247.4638],[-290.1719,-8.5604,-252.5293],[-290.2199,-8.7042,-251.9221],[-292.1853,-9.8548,-252.3056],[-294.1189,-10.9094,-254.2751],[-292.6647,-10.0625,-256.2925],[-294.8859,-11.6125,-258.2939],[-294.3106,-11.5166,-260.0836],[-295.8766,-12.9228,-262.944],[-297.2189,-13.6739,-263.3435],[-301.1978,-13.9295,-266.9389],[-302.8596,-13.9295,-269.5435],[-306.8545,-13.9775,-271.9884],[-305.5282,-13.9295,-272.0842],[-306.8545,-13.9295,-273.2508],[-306.1195,-14.0254,-274.1776],[-307.254,-14.0254,-275.1843],[-307.6215,-14.2172,-276.7183],[-307.1102,-14.4089,-278.2204],[-308.3406,-14.4089,-279.291],[-310.9453,-14.4089,-283.7812],[-312.3515,-14.361,-283.3817],[-314.9561,-14.361,-284.8678],[-318.5515,-14.361,-285.4591],[-324.4799,-14.361,-285.555],[-325.9021,-14.361,-290.3328],[-325.1351,-14.361,-297.4757],[-328.5786,-14.2651,-299.3772],[-332.0222,-14.1692,-301.2788],[-334.4231,-14.1692,-298.8819],[-336.84,-13.8816,-298.8978],[-338.6297,-13.8816,-303.6757],[-342.8523,-13.8816,-306.6798],[-345.2652,-13.9775,-311.4737],[-348.2534,-13.9775,-310.8825],[-350.0271,-14.0733,-311.4897],[-350.3787,-14.1692,-312.7201],[-354.1818,-13.9775,-312.832],[-354.757,-13.9775,-313.4232],[-354.5653,-14.0733,-314.5098],[-356.0354,-13.9775,-315.0691],[-356.6586,-13.9775,-316.8588],[-359.2633,-13.9295,-315.4686],[-360.7493,-13.9775,-321.0774],[-365.9427,-14.0254,-324.481],[-367.5406,-14.0254,-317.9773],[-371.0721,-13.9775,-319.4634],[-375.1628,-13.9775,-324.0496],[-377.4639,-13.9775,-318.9521],[-382.5454,-14.0254,-322.5635],[-383.7438,-14.0254,-317.9773],[-385.7413,-14.0254,-317.6737],[-389.3526,-14.0254,-321.4609],[-391.4459,-14.0254,-316.5712],[-394.9455,-14.0254,-315.884],[-396.847,-14.0254,-320.1825],[-400.5383,-13.9775,-317.6897],[-402.6316,-13.9295,-314.1902],[-406.4347,-14.0254,-315.6923],[-407.0419,-14.1692,-314.4778],[-407.026,-14.0254,-312.6562],[-408.8316,-14.1692,-310.8665],[-409.4229,-14.0254,-309.0768],[-407.6172,-13.9295,-307.1592],[-410.3337,-13.9775,-305.6731],[-412.443,-14.0254,-305.2896],[-409.7744,-13.9775,-304.7783],[-410.4456,-14.0254,-301.7901],[-414.2487,-14.0254,-301.5824],[-414.6482,-14.0254,-297.5715],[-411.8358,-13.9775,-294.5674],[-408.9275,-13.9775,-294.5674],[-409.0553,-13.9295,-291.2916],[-408.1126,-14.0733,-286.8014],[-408.56,-14.0254,-285.4431],[-407.9368,-14.1692,-283.4137],[-408.6239,-13.9775,-280.825],[-406.9461,-14.0254,-278.6838],[-406.962,-13.9295,-275.408],[-408.7677,-13.9775,-274.4972],[-408.4641,-14.1213,-273.075],[-407.6971,-14.0254,-272.5477],[-408.0007,-14.1692,-271.9724],[-407.1059,-14.0254,-271.5729],[-406.6424,-14.0254,-268.2012],[-407.3935,-14.1692,-266.06],[-407.1538,-14.0254,-264.5259],[-407.793,-14.1692,-264.0306],[-407.0579,-14.0254,-263.7909],[-407.9208,-14.0254,-262.912],[-405.2522,-13.8816,-261.0904],[-403.4465,-13.8816,-258.0662],[-399.8352,-13.9775,-255.6653],[-399.4836,-13.9775,-251.235],[-398.5408,-14.0733,-248.087],[-398.5408,-13.9775,-244.2679],[-397.7259,-14.0733,-243.6767],[-397.4702,-14.0733,-242.0468],[-395.6805,-14.1692,-239.2664],[-393.8429,-14.0733,-234.089],[-394.1465,-13.9775,-232.7947],[-393.3795,-14.0733,-231.1967],[-393.7949,-13.9775,-229.2472],[-391.382,-14.1213,-227.7452],[-391.382,-14.1213,-226.6905],[-393.9707,-13.9775,-226.6106],[-394.1625,-14.0733,-225.556],[-395.4888,-13.9775,-224.757],[-396.2558,-14.0733,-222.0405],[-398.0615,-13.9775,-220.842],[-398.6207,-13.9775,-218.7487],[-397.614,-14.0733,-217.8059],[-398.3331,-13.9775,-217.2786],[-397.3584,-14.0733,-217.2786],[-399.0682,-13.9775,-213.7152],[-398.6527,-13.9775,-208.2662],[-395.0254,-13.9775,-202.8651],[-392.6284,-14.0733,-201.0434],[-392.0212,-13.9775,-199.8609],[-386.8439,-14.0733,-198.8223],[-382.3376,-13.9775,-196.6491],[-377.6556,-14.0733,-195.8181],[-377.5917,-13.9775,-194.8434],[-373.8206,-14.0733,-195.3547],[-370.2412,-13.9775,-194.5078],[-365.8947,-13.9775,-194.7155],[-363.386,-13.8816,-192.1908],[-361.5803,-13.8816,-188.0042],[-358.4643,-14.0254,-185.4794],[-356.6586,-14.1692,-182.4753],[-356.0514,-14.0254,-179.4711],[-351.3374,-13.9295,-176.0835],[-348.9405,-13.9295,-176.0994],[-347.758,-14.0733,-176.6907],[-343.859,-14.1213,-180.7814],[-344.1467,-14.0254,-179.1835],[-341.9415,-14.0733,-178.1768],[-339.2409,-14.1213,-177.969],[-334.8426,-14.0733,-181.5804],[-336.1369,-14.1692,-174.9809],[-332.5376,-14.1692,-173.7824],[-328.0853,-14.1452,-173.9342],[-323.633,-14.1213,-174.086],[-321.7074,-14.1692,-170.8182],[-319.7819,-14.2172,-167.5504],[-314.7803,-14.2172,-167.5504],[-315.8829,-14.2651,-164.6901],[-311.936,-14.2651,-165.1215],[-311.5365,-14.361,-160.3117],[-307.7813,-14.361,-158.6179],[-309.4751,-14.5687,-154.7189],[-307.4298,-14.7285,-153.4885],[-305.8158,-14.6806,-153.856],[-305.9277,-15.3837,-150.2766],[-303.7705,-15.8311,-148.5188],[-303.9942,-16.1187,-145.6425],[-301.1339,-15.9749,-145.275],[-300.4627,-15.7192,-144.2044],[-300.5746,-15.6074,-142.5105],[-303.4509,-15.6553,-141.392],[-300.5906,-15.6074,-139.4425],[-303.4349,-15.5594,-138.9791],[-300.5266,-15.6713,-138.0682],[-303.4828,-15.8311,-137.6208],[-303.0514,-16.1347,-136.8538],[-299.6957,-16.2785,-136.5502],[-298.3055,-16.4223,-135.3517],[-295.9565,-16.4703,-131.7563],[-299.5039,-16.4942,-130.454],[-303.0514,-16.5182,-129.1517],[-299.9913,-16.5422,-126.7148],[-296.9312,-16.5661,-124.2779],[-301.5493,-16.6141,-123.479],[-296.6356,-16.5422,-122.1287],[-291.7219,-16.4703,-120.7784],[-289.341,-16.4703,-119.5959],[-288.1425,-16.4703,-117.7903],[-286.9441,-16.4703,-114.1789],[-286.984,-16.5182,-109.0335],[-287.024,-16.5661,-103.8881],[-289.4209,-16.8538,-100.884],[-293.0323,-16.8538,-97.8798],[-294.2467,-16.71,-94.8917],[-297.2349,-16.5661,-92.5107],[-300.239,-16.6141,-91.2963],[-298.0338,-16.4703,-87.0937],[-301.837,-16.4703,-83.4823],[-300.3349,-16.4703,-79.0879],[-305.1447,-16.5182,-78.289],[-301.3416,-16.5661,-76.1956],[-303.9303,-16.5661,-74.9013],[-303.6267,-16.5661,-72.2967],[-301.2297,-16.5661,-70.8905],[-301.2297,-16.5661,-67.9822],[-303.6267,-16.5661,-66.4801],[-303.8344,-16.5661,-63.5878],[-301.2457,-16.5661,-62.2935],[-299.1524,-16.5661,-56.0895],[-303.8504,-16.5661,-51.3875],[-305.1447,-16.5661,-46.3819],[-298.2416,-16.5661,-43.7773],[-305.1287,-16.5661,-41.2845],[-302.9236,-16.5422,-37.9368],[-300.7184,-16.5182,-34.589],[-306.1195,-16.5182,-32.4877],[-311.5205,-16.5182,-30.3864],[-309.6749,-16.4703,-26.5354],[-307.8293,-16.4223,-22.6843],[-311.5365,-16.4223,-18.3858],[-313.7736,-16.3744,-16.9796],[-314.9721,-16.3264,-14.4709],[-318.3518,-16.3984,-16.1247],[-321.7314,-16.4703,-17.7786],[-321.8273,-16.4223,-12.1858],[-318.6793,-16.3984,-8.2389],[-315.5314,-16.3744,-4.2919],[-319.3365,-16.4223,-2.2466],[-323.1416,-16.4703,-0.2012],[-323.1416,-16.4942,4.0494],[-323.1416,-16.5182,8.2999],[-316.9056,-16.4703,10.0097],[-311.4246,-16.4223,8.0123],[-305.4323,-16.3264,4.1133],[-302.7318,-16.2785,4.1293],[-302.8916,-16.1826,3.2823],[-302.0926,-16.1826,2.9787],[-301.6931,-15.8151,1.988],[-303.5947,-15.5594,0.8694],[-301.4215,-15.4156,-1.3038],[-303.2272,-15.4156,-4.8992]],"expectedDistance":833.68,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"30c3e0d3ce6840b46b9f7998ba798ccb537f49dc616dd78abf1314d44617101e","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"the-oculus","mapId":578,"legs":[{"id":"leg-01-creature-100172","objectiveId":"creature-100172","objectiveName":"Drakos the Interrogator","checkpoints":[[989.9857,360.9959,1056.8902],[993.9263,360.9347,1050.6883],[997.867,360.8734,1044.4863],[1001.8077,360.8122,1038.2843],[1005.7483,360.7509,1032.0824],[1009.689,360.6897,1025.8804],[1013.6297,360.6284,1019.6785],[1017.5703,360.5671,1013.4765],[1021.511,360.5059,1007.2746],[1025.4517,360.4446,1001.0726],[1029.3923,360.3834,994.8707],[1033.333,360.3221,988.6687],[1037.2737,360.2609,982.4667],[1041.2143,360.1996,976.2648],[1045.155,360.1384,970.0628],[1049.0957,360.0771,963.8609],[1053.0363,360.0159,957.6589],[1056.977,359.9546,951.457]],"expectedDistance":124.92,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-100235","objectiveId":"creature-100235","objectiveName":"Varos Cloudstrider","checkpoints":[[1056.977,359.9546,951.457],[1057.274,361.721,958.7038],[1057.5709,363.4874,965.9505],[1057.8679,365.2538,973.1973],[1058.1649,367.0201,980.4441],[1058.4618,368.7865,987.6909],[1058.7588,370.5529,994.9377],[1059.0558,372.3193,1002.1845],[1059.3527,374.0857,1009.4313],[1059.6497,375.852,1016.6781],[1059.9467,377.6184,1023.9248],[1060.2436,379.3848,1031.1716],[1060.5406,381.1512,1038.4184],[1060.8376,382.9176,1045.6652],[1061.1345,384.6839,1052.912],[1061.4315,386.4503,1060.1588],[1061.7285,388.2167,1067.4056],[1062.0254,389.9831,1074.6524],[1062.3224,391.7495,1081.8992],[1062.6194,393.5158,1089.1459],[1062.9163,395.2822,1096.3927],[1063.2133,397.0486,1103.6395],[1063.5103,398.815,1110.8863],[1063.8073,400.5814,1118.1331],[1064.1042,402.3477,1125.3799],[1064.4012,404.1141,1132.6267],[1064.6982,405.8805,1139.8735],[1064.9951,407.6469,1147.1202],[1065.2921,409.4133,1154.367],[1065.5891,411.1796,1161.6138],[1065.886,412.946,1168.8606],[1066.183,414.7124,1176.1074],[1066.48,416.4788,1183.3542],[1066.7769,418.2452,1190.601],[1067.0739,420.0115,1197.8478],[1067.3709,421.7779,1205.0945],[1067.6678,423.5443,1212.3413],[1067.9648,425.3107,1219.5881],[1068.2618,427.0771,1226.8349],[1068.5587,428.8434,1234.0817],[1068.8557,430.6098,1241.3285],[1069.1527,432.3762,1248.5753],[1069.4496,434.1426,1255.8221],[1069.7466,435.909,1263.0688],[1070.0436,437.6754,1270.3156],[1070.3405,439.4417,1277.5624]],"expectedDistance":335.92,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-100220","objectiveId":"creature-100220","objectiveName":"Mage-Lord Urom","checkpoints":[[1070.3405,439.4417,1277.5624],[1065.2708,442.8227,1273.5907],[1060.2011,446.2036,1269.6191],[1055.1313,449.5845,1265.6474],[1050.0616,452.9655,1261.6757],[1044.9918,456.3464,1257.704],[1039.9221,459.7274,1253.7323],[1034.8524,463.1083,1249.7606],[1029.7826,466.4892,1245.7889],[1024.7129,469.8702,1241.8173],[1019.6431,473.2511,1237.8456],[1014.5734,476.6321,1233.8739],[1009.5037,480.013,1229.9022],[1004.4339,483.3939,1225.9305],[999.3642,486.7749,1221.9588],[994.2944,490.1558,1217.9871],[989.2247,493.5368,1214.0154],[984.155,496.9177,1210.0438],[979.0852,500.2986,1206.0721],[974.0155,503.6796,1202.1004],[968.9457,507.0605,1198.1287],[963.876,510.4415,1194.157],[958.8063,513.8224,1190.1853],[953.7365,517.2033,1186.2136],[948.6668,520.5843,1182.242],[943.597,523.9652,1178.2703],[938.5273,527.3462,1174.2986]],"expectedDistance":189.12,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-1971378","objectiveId":"creature-1971378","objectiveName":"Ley-Guardian Eregos","checkpoints":[[938.5273,527.3462,1174.2986],[944.348,530.2098,1170.5739],[950.1687,533.0734,1166.8492],[955.9894,535.937,1163.1245],[961.8101,538.8006,1159.3998],[967.6307,541.6642,1155.6751],[973.4514,544.5279,1151.9503],[979.2721,547.3915,1148.2256],[985.0928,550.2551,1144.5009],[990.9135,553.1187,1140.7762],[996.7342,555.9823,1137.0515],[1002.5549,558.846,1133.3268],[1008.3756,561.7096,1129.6021],[1014.1963,564.5732,1125.8774],[1020.0169,567.4368,1122.1527],[1025.8376,570.3004,1118.428],[1031.6583,573.1641,1114.7033],[1037.479,576.0277,1110.9786],[1043.2997,578.8913,1107.2539],[1049.1204,581.7549,1103.5292],[1054.9411,584.6185,1099.8044],[1060.7618,587.4822,1096.0797],[1066.5825,590.3458,1092.355],[1072.4032,593.2094,1088.6303],[1078.2238,596.073,1084.9056],[1084.0445,598.9366,1081.1809],[1089.8652,601.8002,1077.4562]],"expectedDistance":194.49,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"16d05633a2fd4d99fcb7b0300fb7d04506e8d6f33adf28b832ae2046964b8acb","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg","endpoint-snap-distance-exceeded"]},{"schemaVersion":1,"id":"primary","dungeonId":"culling-of-stratholme","mapId":595,"legs":[{"id":"leg-01-encounter-293","objectiveId":"encounter-293","objectiveName":"Meathook","checkpoints":[[556.5068,37.1158,1429.816],[562.8878,38.0768,1433.6115],[569.2687,39.0378,1437.407],[575.6496,39.9987,1441.2025],[582.0306,40.9597,1444.9981],[588.4115,41.9207,1448.7936],[594.7924,42.8816,1452.5891],[601.1734,43.8426,1456.3846],[607.5543,44.8036,1460.1801],[613.9352,45.7645,1463.9756],[620.3162,46.7255,1467.7711],[626.6971,47.6865,1471.5666],[633.078,48.6475,1475.3621],[639.459,49.6084,1479.1576],[645.8399,50.5694,1482.9531],[652.2209,51.5304,1486.7486],[658.6018,52.4913,1490.5441],[664.9827,53.4523,1494.3396],[671.3637,54.4133,1498.1351],[677.7446,55.3742,1501.9306],[684.1255,56.3352,1505.7261],[690.5065,57.2962,1509.5216],[696.8874,58.2571,1513.3171],[703.2683,59.2181,1517.1126],[709.6493,60.1791,1520.9081],[716.0302,61.14,1524.7036],[722.4111,62.101,1528.4991],[728.7921,63.062,1532.2946],[735.173,64.0229,1536.0901],[741.5539,64.9839,1539.8856],[747.9349,65.9449,1543.6811],[754.3158,66.9058,1547.4766],[760.6968,67.8668,1551.2721],[767.0777,68.8278,1555.0676],[773.4586,69.7887,1558.8631],[779.8396,70.7497,1562.6586],[786.2205,71.7107,1566.4541],[792.6014,72.6716,1570.2496],[798.9824,73.6326,1574.0451],[805.3633,74.5936,1577.8406],[811.7442,75.5545,1581.6361],[818.1252,76.5155,1585.4316],[824.5061,77.4765,1589.2271],[830.887,78.4374,1593.0226],[837.268,79.3984,1596.8181],[843.6489,80.3594,1600.6137],[850.0298,81.3204,1604.4092],[856.4108,82.2813,1608.2047],[862.7917,83.2423,1612.0002],[869.1726,84.2033,1615.7957],[875.5536,85.1642,1619.5912],[881.9345,86.1252,1623.3867],[888.3155,87.0862,1627.1822],[894.6964,88.0471,1630.9777],[901.0773,89.0081,1634.7732],[907.4583,89.9691,1638.5687],[913.8392,90.93,1642.3642],[920.2201,91.891,1646.1597],[926.6011,92.852,1649.9552],[932.982,93.8129,1653.7507],[939.3629,94.7739,1657.5462],[945.7439,95.7349,1661.3417],[952.1248,96.6958,1665.1372],[958.5057,97.6568,1668.9327],[964.8867,98.6178,1672.7282],[971.2676,99.5787,1676.5237],[977.6485,100.5397,1680.3192],[984.0295,101.5007,1684.1147],[990.4104,102.4616,1687.9102],[996.7914,103.4226,1691.7057],[1003.1723,104.3836,1695.5012],[1009.5532,105.3445,1699.2967],[1015.9342,106.3055,1703.0922],[1022.3151,107.2665,1706.8877],[1028.696,108.2274,1710.6832],[1035.077,109.1884,1714.4787],[1041.4579,110.1494,1718.2742],[1047.8388,111.1103,1722.0697],[1054.2198,112.0713,1725.8652],[1060.6007,113.0323,1729.6607],[1066.9816,113.9932,1733.4562],[1073.3626,114.9542,1737.2517],[1079.7435,115.9152,1741.0472],[1086.1244,116.8762,1744.8427],[1092.5054,117.8371,1748.6382],[1098.8863,118.7981,1752.4337],[1105.2673,119.7591,1756.2292],[1111.6482,120.72,1760.0248],[1118.0291,121.681,1763.8203],[1124.4101,122.642,1767.6158],[1130.791,123.6029,1771.4113],[1137.1719,124.5639,1775.2068],[1143.5529,125.5249,1779.0023],[1149.9338,126.4858,1782.7978],[1156.3147,127.4468,1786.5933],[1162.6957,128.4078,1790.3888],[1169.0766,129.3687,1794.1843],[1175.4575,130.3297,1797.9798],[1181.8385,131.2907,1801.7753],[1188.2194,132.2516,1805.5708],[1194.6003,133.2126,1809.3663],[1200.9813,134.1736,1813.1618],[1207.3622,135.1345,1816.9573],[1213.7431,136.0955,1820.7528],[1220.1241,137.0565,1824.5483],[1226.505,138.0174,1828.3438],[1232.886,138.9784,1832.1393],[1239.2669,139.9394,1835.9348],[1245.6478,140.9003,1839.7303],[1252.0288,141.8613,1843.5258],[1258.4097,142.8223,1847.3213],[1264.7906,143.7832,1851.1168],[1271.1716,144.7442,1854.9123]],"expectedDistance":838.47,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-encounter-294","objectiveId":"encounter-294","objectiveName":"Salram the Fleshcrafter","checkpoints":[[1271.1716,144.7442,1854.9123],[1269.1824,144.6011,1862.1097],[1267.1932,144.4579,1869.3071],[1265.204,144.3147,1876.5046],[1263.2148,144.1716,1883.702],[1261.2256,144.0284,1890.8994],[1259.2364,143.8853,1898.0968],[1257.2473,143.7421,1905.2942],[1255.2581,143.599,1912.4916],[1253.2689,143.4558,1919.6891],[1251.2797,143.3126,1926.8865],[1249.2905,143.1695,1934.0839],[1247.3013,143.0263,1941.2813],[1245.3121,142.8832,1948.4787],[1243.3229,142.74,1955.6761],[1241.3337,142.5968,1962.8735],[1239.3446,142.4537,1970.071],[1237.3554,142.3105,1977.2684],[1235.3662,142.1674,1984.4658],[1233.377,142.0242,1991.6632],[1231.3878,141.8811,1998.8606],[1229.3986,141.7379,2006.058],[1227.4094,141.5947,2013.2555],[1225.4202,141.4516,2020.4529],[1223.4311,141.3084,2027.6503],[1221.4419,141.1653,2034.8477],[1219.4527,141.0221,2042.0451],[1217.4635,140.879,2049.2425],[1215.4743,140.7358,2056.44],[1213.4851,140.5926,2063.6374],[1211.4959,140.4495,2070.8348],[1209.5067,140.3063,2078.0322],[1207.5176,140.1632,2085.2296],[1205.5284,140.02,2092.427],[1203.5392,139.8769,2099.6244],[1201.55,139.7337,2106.8219],[1199.5608,139.5905,2114.0193],[1197.5716,139.4474,2121.2167],[1195.5824,139.3042,2128.4141],[1193.5932,139.1611,2135.6115],[1191.6041,139.0179,2142.8089],[1189.6149,138.8748,2150.0064],[1187.6257,138.7316,2157.2038],[1185.6365,138.5884,2164.4012],[1183.6473,138.4453,2171.5986],[1181.6581,138.3021,2178.796],[1179.6689,138.159,2185.9934],[1177.6797,138.0158,2193.1909],[1175.6906,137.8727,2200.3883],[1173.7014,137.7295,2207.5857],[1171.7122,137.5863,2214.7831],[1169.723,137.4432,2221.9805],[1167.7338,137.3,2229.1779],[1165.7446,137.1569,2236.3753],[1163.7554,137.0137,2243.5728],[1161.7662,136.8706,2250.7702],[1159.7771,136.7274,2257.9676],[1157.7879,136.5842,2265.165],[1155.7987,136.4411,2272.3624],[1153.8095,136.2979,2279.5598],[1151.8203,136.1548,2286.7573],[1149.8311,136.0116,2293.9547],[1147.8419,135.8684,2301.1521],[1145.8527,135.7253,2308.3495],[1143.8636,135.5821,2315.5469],[1141.8744,135.439,2322.7443]],"expectedDistance":485.46,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-encounter-295","objectiveId":"encounter-295","objectiveName":"Chrono-Lord Epoch","checkpoints":[[1141.8744,135.439,2322.7443],[1144.1863,135.1481,2329.7146],[1146.4983,134.8572,2336.685],[1148.8102,134.5663,2343.6553],[1151.1222,134.2753,2350.6256],[1153.4341,133.9844,2357.5959],[1155.7461,133.6935,2364.5662],[1158.058,133.4026,2371.5365],[1160.37,133.1117,2378.5068],[1162.682,132.8208,2385.4772],[1164.9939,132.5299,2392.4475],[1167.3059,132.239,2399.4178],[1169.6178,131.9481,2406.3881],[1171.9298,131.6572,2413.3584],[1174.2417,131.3663,2420.3287],[1176.5537,131.0754,2427.299],[1178.8656,130.7844,2434.2693],[1181.1776,130.4935,2441.2397],[1183.4895,130.2026,2448.21],[1185.8015,129.9117,2455.1803],[1188.1135,129.6208,2462.1506],[1190.4254,129.3299,2469.1209],[1192.7374,129.039,2476.0912],[1195.0493,128.7481,2483.0615],[1197.3613,128.4572,2490.0318],[1199.6732,128.1663,2497.0022],[1201.9852,127.8754,2503.9725],[1204.2971,127.5845,2510.9428],[1206.6091,127.2935,2517.9131],[1208.921,127.0026,2524.8834],[1211.233,126.7117,2531.8537],[1213.545,126.4208,2538.824],[1215.8569,126.1299,2545.7943],[1218.1689,125.839,2552.7647],[1220.4808,125.5481,2559.735]],"expectedDistance":249.88,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-encounter-296","objectiveId":"encounter-296","objectiveName":"Mal'ganis","checkpoints":[[1220.4808,125.5481,2559.735],[1221.9124,125.6132,2558.1733],[1221.587,125.7433,2556.2211],[1223.9947,125.6132,2556.8068],[1225.5564,125.6782,2554.7245],[1228.875,125.6782,2555.5053],[1231.0875,125.7433,2554.1388],[1231.4779,125.7433,2552.1867],[1231.0875,126.0036,2550.5599],[1232.6492,126.0687,2549.2585],[1232.6492,126.7845,2545.1589],[1233.8205,127.5653,2540.9944],[1235.3822,127.3701,2540.1484],[1236.5535,127.5002,2538.6518],[1242.0629,127.305,2538.5],[1247.5723,127.1098,2538.3481],[1253.0817,126.9146,2538.1963],[1257.0185,126.8495,2537.7083],[1260.9553,126.7845,2537.2202],[1263.9486,126.9797,2536.0489],[1269.8701,126.9146,2536.6346],[1272.1476,127.24,2534.8776],[1277.6787,127.9557,2535.8537],[1277.6136,128.0859,2534.0317],[1281.4854,128.5414,2535.0403],[1285.3572,128.9969,2536.0489],[1287.2442,129.5825,2535.203],[1287.3093,129.5175,2536.6996],[1289.1964,130.038,2534.3571],[1290.9533,130.2333,2534.292],[1294.0768,131.0792,2530.648],[1295.1179,131.2093,2530.9733],[1297.3954,131.3395,2529.4116],[1296.6145,131.2744,2528.6308],[1300.8442,131.2093,2526.4183],[1299.738,131.0792,2524.7265],[1299.738,130.949,2522.3188],[1302.4059,130.949,2519.4557],[1306.3753,130.949,2520.5619],[1308.0671,130.949,2517.4385],[1311.2556,130.949,2520.4317],[1311.2556,130.7538,2517.2432],[1311.9714,130.5586,2516.4624],[1313.9887,130.8189,2518.7399],[1313.4681,130.7538,2515.9418],[1315.8107,131.2093,2517.3734],[1316.7867,131.4696,2516.2021],[1319.3245,132.1854,2518.6748],[1320.3006,132.3806,2518.5447],[1320.4307,131.86,2516.072],[1323.8145,132.1203,2516.137],[1326.2872,132.1203,2514.0547],[1329.4757,132.6409,2515.3562],[1330.2565,132.5758,2514.9657],[1330.5168,132.3806,2513.7294],[1331.4278,132.4457,2513.5342],[1331.8833,132.5108,2514.1849],[1333.7704,132.706,2512.493],[1336.8938,132.9012,2512.1026],[1338.3905,133.0313,2510.2155],[1339.5618,133.1615,2506.116],[1341.0584,133.2265,2508.5237],[1341.3187,133.2916,2506.3763],[1343.4661,133.4218,2504.9447],[1350.0383,133.4218,2507.7428],[1356.155,132.3806,2505.8557],[1358.0421,131.9251,2503.8385],[1358.0421,131.795,2502.6672],[1360.2545,131.2744,2500.8452],[1360.3847,131.4696,2497.2012],[1363.2478,131.3395,2494.7936],[1363.8985,131.1443,2490.0433],[1366.8268,130.4935,2487.1151],[1366.8268,130.1031,2481.1285],[1369.6248,129.7778,2479.2414],[1370.7311,129.7778,2476.8338],[1373.1387,129.7127,2476.8338],[1374.0497,129.6476,2477.94],[1375.1559,129.7127,2476.8338],[1375.6765,129.6476,2477.3544],[1376.6526,129.7127,2476.8338],[1377.7588,129.7127,2474.6864],[1380.4918,129.6476,2474.1008],[1381.9234,129.5825,2475.7276],[1384.3961,129.3873,2475.4673],[1384.9817,129.3873,2472.8644],[1385.9578,129.1921,2472.6692],[1386.2832,129.5175,2469.2204],[1386.7387,129.5825,2470.4568],[1387.3894,129.5825,2469.9362],[1392.2697,129.973,2469.0903],[1392.2697,129.9079,2467.919],[1390.4477,129.7778,2466.2922],[1392.465,129.9079,2465.3812],[1393.5712,129.973,2465.7716],[1393.7664,130.038,2463.9496],[1396.174,130.2333,2462.9085],[1400.0783,130.3634,2462.3879],[1405.6094,130.6237,2463.1037],[1409.4486,130.7864,2462.8434],[1413.2879,130.949,2462.5831],[1417.062,131.2744,2463.4941],[1422.7883,131.4045,2463.8195],[1425.3261,131.2744,2462.9085],[1429.9462,131.5347,2462.9085],[1434.5663,131.795,2462.9085],[1436.5184,131.86,2461.2166],[1438.6007,132.1203,2460.5659],[1437.2342,132.0553,2458.9391]],"expectedDistance":321.89,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"55e65ed975823dcaec9b00426b2784c3363c3e45870dbc1806ba6ff561850aa1","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"halls-of-stone","mapId":599,"legs":[{"id":"leg-01-creature-126790","objectiveId":"creature-126790","objectiveName":"Krystallus","checkpoints":[[804.9507,196.1773,1149.2766],[802.6787,196.7789,1142.4624],[800.4066,197.3804,1135.6482],[798.1346,197.982,1128.834],[795.8625,198.5836,1122.0198],[793.5905,199.1852,1115.2056],[791.3184,199.7867,1108.3914],[789.0464,200.3883,1101.5772],[786.7744,200.9899,1094.7631],[784.5023,201.5915,1087.9489],[782.2303,202.193,1081.1347],[779.9582,202.7946,1074.3205],[777.6862,203.3962,1067.5063],[775.4142,203.9978,1060.6921],[773.1421,204.5993,1053.8779],[770.8701,205.2009,1047.0637],[768.598,205.8025,1040.2495],[766.326,206.4041,1033.4353],[764.0539,207.0056,1026.6212],[761.7819,207.6072,1019.807],[759.5099,208.2088,1012.9928],[757.2378,208.8104,1006.1786]],"expectedDistance":151.37,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-126789","objectiveId":"creature-126789","objectiveName":"Maiden of Grief","checkpoints":[[757.2378,208.8104,1006.1786],[753.4638,208.1481,999.9889],[749.6897,207.4859,993.7992],[745.9157,206.8236,987.6095],[742.1416,206.1614,981.4198],[738.3676,205.4991,975.2301],[734.5936,204.8369,969.0404],[730.8195,204.1746,962.8507],[727.0455,203.5124,956.661],[723.2714,202.8501,950.4713],[719.4974,202.1879,944.2816],[715.7233,201.5256,938.0919],[711.9493,200.8634,931.9022],[708.1753,200.2011,925.7125],[704.4012,199.5389,919.5228],[700.6272,198.8766,913.3331],[696.8531,198.2144,907.1434],[693.0791,197.5521,900.9537],[689.305,196.8899,894.764],[685.531,196.2276,888.5743],[681.757,195.5654,882.3846],[677.9829,194.9031,876.1949],[674.2089,194.2409,870.0052],[670.4348,193.5786,863.8155],[666.6608,192.9164,857.6258],[662.8867,192.2541,851.4361],[659.1127,191.5919,845.2464],[655.3387,190.9296,839.0567],[651.5646,190.2674,832.867]],"expectedDistance":203.83,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-encounter-567","objectiveId":"encounter-567","objectiveName":"Tribunal of Ages","checkpoints":[[651.5646,190.2674,832.867],[657.8641,190.2513,836.6924],[664.1636,190.2353,840.5179],[670.463,190.2192,844.3434],[676.7625,190.2031,848.1688],[683.062,190.1871,851.9943],[689.3614,190.171,855.8197],[695.6609,190.1549,859.6452],[701.9604,190.1389,863.4707],[708.2598,190.1228,867.2961],[714.5593,190.1067,871.1216],[720.8587,190.0907,874.9471],[727.1582,190.0746,878.7725],[733.4577,190.0585,882.598],[739.7571,190.0425,886.4235],[746.0566,190.0264,890.2489],[752.3561,190.0104,894.0744],[758.6555,189.9943,897.8999],[764.955,189.9782,901.7253],[771.2545,189.9622,905.5508],[777.5539,189.9461,909.3763],[783.8534,189.93,913.2017],[790.1529,189.914,917.0272],[796.4523,189.8979,920.8527],[802.7518,189.8818,924.6781],[809.0513,189.8658,928.5036],[815.3507,189.8497,932.329],[821.6502,189.8336,936.1545]],"expectedDistance":198.99,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-126792","objectiveId":"creature-126792","objectiveName":"Sjonnir the Ironshaper","checkpoints":[[821.6502,189.8336,936.1545],[818.8789,189.8316,943.0033],[816.1076,189.8295,949.852],[813.3363,189.8275,956.7008],[810.5649,189.8255,963.5495],[807.7936,189.8234,970.3983],[805.0223,189.8214,977.247],[802.251,189.8193,984.0958],[799.4797,189.8173,990.9445],[796.7084,189.8152,997.7933],[793.937,189.8132,1004.642],[791.1657,189.8111,1011.4908],[788.3944,189.8091,1018.3395],[785.6231,189.807,1025.1883],[782.8518,189.805,1032.037],[780.0805,189.8029,1038.8858],[777.3091,189.8009,1045.7346],[774.5378,189.7989,1052.5833],[771.7665,189.7968,1059.4321],[768.9952,189.7948,1066.2808],[766.2239,189.7927,1073.1296],[763.4526,189.7907,1079.9783],[760.6812,189.7886,1086.8271],[757.9099,189.7866,1093.6758],[755.1386,189.7845,1100.5246],[752.3673,189.7825,1107.3733],[749.596,189.7804,1114.2221],[746.8247,189.7784,1121.0708],[744.0533,189.7763,1127.9196],[741.282,189.7743,1134.7683],[738.5107,189.7723,1141.6171],[735.7394,189.7702,1148.4658],[732.9681,189.7682,1155.3146],[730.1968,189.7661,1162.1634],[727.4254,189.7641,1169.0121],[724.6541,189.762,1175.8609],[721.8828,189.76,1182.7096],[719.1115,189.7579,1189.5584],[716.3402,189.7559,1196.4071],[713.5689,189.7538,1203.2559],[710.7975,189.7518,1210.1046],[708.0262,189.7498,1216.9534],[705.2549,189.7477,1223.8021],[702.4836,189.7457,1230.6509],[699.7123,189.7436,1237.4996],[696.941,189.7416,1244.3484],[694.1696,189.7395,1251.1971],[691.3983,189.7375,1258.0459],[688.627,189.7354,1264.8946],[685.8557,189.7334,1271.7434],[683.0844,189.7313,1278.5922],[680.3131,189.7293,1285.4409],[677.5417,189.7272,1292.2897],[674.7704,189.7252,1299.1384]],"expectedDistance":391.58,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"1dabe98e26aa4fe6975daba3b81a6625b2f4e2f65f850dda2bd4d2b1ed309a32","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg","endpoint-snap-distance-exceeded","origin-snap-distance-exceeded"]},{"schemaVersion":1,"id":"primary","dungeonId":"draktharon-keep","mapId":600,"legs":[{"id":"leg-01-creature-127422","objectiveId":"creature-127422","objectiveName":"Trollgore","checkpoints":[[-487.8636,11.0764,-516.3287],[-492.0845,11.4216,-510.3276],[-496.3053,11.7667,-504.3264],[-500.5261,12.1119,-498.3253],[-504.747,12.457,-492.3241],[-508.9678,12.8022,-486.323],[-513.1886,13.1473,-480.3219],[-517.4094,13.4925,-474.3207],[-521.6303,13.8376,-468.3196],[-525.8511,14.1828,-462.3185],[-530.0719,14.5279,-456.3173],[-534.2928,14.8731,-450.3162],[-538.5136,15.2182,-444.315],[-542.7344,15.5634,-438.3139],[-546.9553,15.9085,-432.3128],[-551.1761,16.2537,-426.3116],[-555.3969,16.5988,-420.3105],[-559.6178,16.944,-414.3094],[-563.8386,17.2891,-408.3082],[-568.0594,17.6343,-402.3071],[-572.2803,17.9794,-396.3059],[-576.5011,18.3246,-390.3048],[-580.7219,18.6697,-384.3037],[-584.9427,19.0149,-378.3025],[-589.1636,19.36,-372.3014],[-593.3844,19.7052,-366.3002],[-597.6052,20.0503,-360.2991],[-601.8261,20.3955,-354.298],[-606.0469,20.7406,-348.2968],[-610.2677,21.0858,-342.2957],[-614.4886,21.4309,-336.2946],[-618.7094,21.7761,-330.2934],[-622.9302,22.1212,-324.2923],[-627.1511,22.4664,-318.2911],[-631.3719,22.8116,-312.29],[-635.5927,23.1567,-306.2889],[-639.8136,23.5019,-300.2877],[-644.0344,23.847,-294.2866],[-648.2552,24.1922,-288.2855],[-652.476,24.5373,-282.2843],[-656.6969,24.8825,-276.2832],[-660.9177,25.2276,-270.282]],"expectedDistance":301.14,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-127424","objectiveId":"creature-127424","objectiveName":"Novos the Summoner","checkpoints":[[-660.9177,25.2276,-270.282],[-665.1589,25.3451,-276.3847],[-669.4,25.4626,-282.4874],[-673.6411,25.58,-288.59],[-677.8823,25.6975,-294.6927],[-682.1234,25.815,-300.7954],[-686.3646,25.9325,-306.8981],[-690.6057,26.0499,-313.0007],[-694.8469,26.1674,-319.1034],[-699.088,26.2849,-325.2061],[-703.3292,26.4024,-331.3087],[-707.5703,26.5198,-337.4114],[-711.8114,26.6373,-343.5141],[-716.0526,26.7548,-349.6168],[-720.2937,26.8723,-355.7194],[-724.5349,26.9897,-361.8221],[-728.776,27.1072,-367.9248],[-733.0172,27.2247,-374.0274],[-737.2583,27.3422,-380.1301]],"expectedDistance":133.79,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-127507","objectiveId":"creature-127507","objectiveName":"King Dred","checkpoints":[[-737.2583,27.3422,-380.1301],[-736.0655,27.5048,-382.5158],[-734.8727,27.6675,-381.9193],[-734.222,27.7217,-383.1664],[-732.3786,27.6133,-382.57],[-730.1556,27.5048,-385.2809],[-727.1736,27.559,-385.2809],[-725.6012,27.6133,-387.9919],[-724.2457,28.047,-387.3413],[-723.5951,28.4808,-388.5341],[-724.0288,28.2639,-389.1847],[-723.1613,28.6976,-389.1847],[-723.4324,28.6976,-389.6727],[-722.836,28.9145,-390.1064],[-720.4504,28.8061,-389.8896],[-720.3962,28.6976,-391.5161],[-718.1189,28.6434,-393.3054],[-718.6069,28.6434,-397.5345],[-722.4023,28.6434,-397.0465],[-723.2156,28.6434,-399.7032],[-726.4145,28.6434,-400.5707],[-729.9387,28.6434,-398.402],[-733.3545,28.6976,-399.3779],[-732.9208,28.6976,-404.7998],[-729.6134,28.6434,-407.6192],[-731.5111,28.6434,-410.0591],[-727.6073,28.6434,-410.0591],[-728.4206,28.6434,-412.8243],[-724.2457,28.6434,-416.2943],[-722.2938,28.6434,-415.3184],[-722.1854,28.6434,-417.9751],[-718.2274,28.6434,-418.3004],[-713.2934,28.6434,-419.8728],[-713.9441,28.6434,-422.0415],[-709.2812,28.6434,-424.0476],[-705.2148,28.6434,-423.9392],[-703.2087,28.6434,-421.9331],[-702.0158,28.6434,-424.0476],[-695.7264,28.6434,-424.5898],[-691.6058,28.6434,-422.4753],[-685.9128,28.6434,-425.8911],[-681.6837,28.6434,-426.867],[-679.4607,28.6434,-424.0476],[-677.1835,28.6434,-425.8911],[-675.6111,28.6434,-428.7105],[-673.9303,28.6434,-427.4092],[-671.6531,28.6434,-429.9033],[-670.4603,28.6434,-429.5238],[-667.6409,28.6434,-429.9033],[-666.3396,28.6434,-428.2225],[-663.8998,28.6434,-427.6803],[-663.4118,28.6434,-425.6742],[-664.5504,28.6434,-424.5898],[-662.4901,28.5892,-422.5837],[-660.2671,28.6434,-423.4512],[-654.2487,28.6434,-422.6379],[-649.5859,28.6434,-423.4512],[-654.0861,28.6434,-425.2947],[-653.815,28.6434,-426.3791],[-651.3209,28.6434,-426.3791],[-651.592,28.6434,-430.8793],[-653.9234,28.6434,-434.4577],[-654.0319,28.6434,-441.2893],[-651.592,28.6434,-444.5967],[-651.2125,28.6434,-449.4222],[-654.0319,28.6434,-450.8861],[-649.4775,28.6434,-452.838],[-654.3572,28.6434,-454.0851],[-650.9414,28.6434,-455.3863],[-653.2457,28.6434,-458.3955],[-655.55,28.6434,-461.4047],[-649.9654,28.6434,-463.7903],[-648.2846,28.6434,-468.7243],[-648.3931,28.6434,-474.0377],[-654.6825,28.6434,-476.8029],[-651.5378,28.6434,-479.3512],[-648.3931,28.6434,-481.8995],[-654.6825,28.6434,-484.5563],[-650.2907,28.6976,-488.8938],[-654.8994,28.8061,-491.4963],[-659.3996,28.8061,-491.7674],[-659.508,29.0772,-494.3157],[-657.3935,29.2941,-495.2374],[-656.2006,29.782,-496.9182],[-657.9899,29.9447,-497.5146],[-658.261,30.27,-499.087],[-657.6646,30.4327,-503.9125],[-662.1647,30.4327,-508.0332],[-662.8154,30.8122,-514.0515],[-665.8517,30.9206,-515.1901],[-667.6409,30.5411,-513.9973],[-668.8337,30.5953,-516.3829],[-672.4122,30.4327,-519.4192],[-673.6592,30.5953,-524.7869],[-674.852,30.4869,-524.8411],[-676.7768,30.4598,-528.3654],[-678.7016,30.4327,-531.8896],[-681.521,30.3784,-530.5883],[-683.744,30.4869,-533.9499],[-689.8165,30.5411,-536.2271],[-691.0094,30.9748,-539.2092],[-692.2022,30.8664,-540.402],[-698.2205,30.4327,-542.7877],[-698.8169,30.4327,-546.3661]],"expectedDistance":368.81,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-200143","objectiveId":"creature-200143","objectiveName":"The Prophet Tharon'ja","checkpoints":[[-698.8169,30.4327,-546.3661],[-698.3252,32.7431,-539.3016],[-697.8336,35.0536,-532.2371],[-697.3419,37.3641,-525.1726],[-696.8502,39.6746,-518.1081],[-696.3586,41.985,-511.0436],[-695.8669,44.2955,-503.979],[-695.3752,46.606,-496.9145],[-694.8836,48.9165,-489.85],[-694.3919,51.2269,-482.7855],[-693.9002,53.5374,-475.721],[-693.4086,55.8479,-468.6565],[-692.9169,58.1584,-461.592],[-692.4252,60.4688,-454.5275],[-691.9335,62.7793,-447.4629],[-691.4419,65.0898,-440.3984],[-690.9502,67.4003,-433.3339],[-690.4585,69.7108,-426.2694],[-689.9669,72.0212,-419.2049],[-689.4752,74.3317,-412.1404],[-688.9835,76.6422,-405.0759],[-688.4919,78.9527,-398.0113],[-688.0002,81.2631,-390.9468],[-687.5085,83.5736,-383.8823],[-687.0169,85.8841,-376.8178],[-686.5252,88.1946,-369.7533],[-686.0335,90.505,-362.6888],[-685.5418,92.8155,-355.6243],[-685.0502,95.126,-348.5598],[-684.5585,97.4365,-341.4952],[-684.0668,99.747,-334.4307],[-683.5752,102.0574,-327.3662],[-683.0835,104.3679,-320.3017],[-682.5918,106.6784,-313.2372],[-682.1002,108.9889,-306.1727],[-681.6085,111.2993,-299.1082],[-681.1168,113.6098,-292.0436],[-680.6251,115.9203,-284.9791],[-680.1335,118.2308,-277.9146],[-679.6418,120.5412,-270.8501],[-679.1501,122.8517,-263.7856],[-678.6585,125.1622,-256.7211],[-678.1668,127.4727,-249.6566],[-677.6751,129.7831,-242.5921],[-677.1835,132.0936,-235.5275]],"expectedDistance":327.76,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"9d97e3a5e4bcd83e45afe772ef9e5ad695712609a59c34e4c5786156b5e69d35","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"azjol-nerub","mapId":601,"legs":[{"id":"leg-01-creature-127214","objectiveId":"creature-127214","objectiveName":"Krik'thir the Gatewatcher","checkpoints":[[796.1764,831.7249,412.8467],[793.6174,831.2478,413.4972],[792.6198,830.6406,415.8828],[790.2343,829.6864,418.8755],[790.8415,829.0792,421.8682],[790.2777,828.6455,424.2971],[788.4994,828.5587,424.2971],[787.2849,828.4286,426.0754],[789.0632,828.6888,427.8971],[788.456,829.1226,433.2753],[786.6777,829.3828,438.0463],[787.8922,829.8599,443.4679],[788.0657,829.4262,445.6366],[786.8512,829.2527,446.2438],[782.3404,827.9515,450.7546],[778.0465,827.8214,450.7112],[775.0538,827.6045,451.4485],[773.7526,826.9973,454.8316],[771.4972,826.9105,455.5256],[770.543,826.6937,457.1304],[771.2803,826.4768,458.3015],[770.8032,826.3901,458.9521],[769.2852,826.3901,459.1255],[768.5479,825.8696,461.5978],[767.0298,825.8262,462.2484],[765.9021,825.566,463.8532],[766.2925,825.219,464.6339],[765.078,824.6551,468.0604],[762.8226,823.8744,471.8338],[762.866,822.5732,478.0361],[762.1287,821.3154,481.7662],[763.1696,820.4913,485.236],[762.9094,819.4504,488.2288],[764.6009,819.1902,488.7059],[766.5527,817.4119,492.6962],[766.119,815.6986,496.1443],[765.6852,813.9854,499.5925],[764.666,812.2288,502.8237],[763.6467,810.4722,506.055],[763.3431,808.6505,509.5682],[761.7383,806.4385,513.6019],[761.8684,806.0915,514.6862],[761.001,805.2675,515.9874],[761.4781,804.8771,516.9416],[760.7407,803.8795,518.2428],[760.7407,802.9253,520.8018],[759.6564,801.7976,522.2331],[758.4853,799.5422,526.1801],[756.9239,797.5037,529.2162],[754.5384,795.8555,530.821],[753.1071,794.5543,532.9896],[752.3698,792.5592,536.1992],[750.8951,791.9086,537.0233],[749.6373,790.3038,539.4955],[747.9023,789.4797,539.7991],[745.3867,787.3544,541.4039],[744.259,786.2268,543.0955],[740.9627,784.2316,543.6593],[738.9675,782.6268,545.134],[738.5338,781.7593,547.4328],[736.1049,780.1545,547.9533],[736.929,780.1112,550.252],[736.0182,779.5907,550.252],[733.8062,778.9835,548.1701],[732.5917,778.1594,550.0352],[730.293,777.6823,548.9942],[728.6882,777.2052,552.2905],[726.5195,777.1618,549.6448],[723.0497,777.0751,552.9845],[720.6642,777.1184,547.9966],[716.9775,777.0751,551.9002],[712.7703,777.2052,546.9123],[709.5607,777.3353,541.1437],[705.5053,777.1401,541.1437],[701.45,776.9449,541.1437],[700.062,776.8148,539.4522],[700.6259,776.9883,532.4691],[700.4741,776.9666,528.5656],[700.3223,776.9449,524.662],[697.5464,776.4245,520.8018],[694.4669,775.9907,520.8018],[693.9465,775.9691,515.6404],[693.426,775.9474,510.4791],[689.9995,775.8606,515.0332],[688.2646,775.8173,519.544],[685.8357,775.8606,522.5367],[684.4912,776.0341,522.1464],[683.0165,776.0341,520.2813],[680.5009,776.3811,520.7584],[679.7635,776.1209,520.4982],[679.2864,776.251,521.2355],[678.7226,776.0341,520.7584],[678.5924,776.0775,521.4958],[676.2937,775.9474,516.985],[675.0359,775.9474,515.9441],[673.8214,775.9907,518.2862],[671.7829,776.0341,517.679],[667.3155,776.251,514.6429],[666.8384,776.251,515.0766],[665.4071,776.5546,513.9923],[664.3228,776.5546,514.3393],[663.1517,776.9883,512.9513],[658.5325,777.2052,516.638],[653.9133,777.4221,520.3247],[652.8289,777.6823,520.0211],[651.2675,777.6823,520.6283],[651.3543,777.6823,521.6259],[650.4434,777.7257,522.5367],[650.9639,777.6389,523.7512],[649.4459,777.5088,528.8258],[647.1471,777.5088,526.6138]],"expectedDistance":348.71,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-127401","objectiveId":"creature-127401","objectiveName":"Hadronox","checkpoints":[[647.1471,777.5088,526.6138],[642.5539,771.6779,525.6205],[637.9607,765.8469,524.6273],[633.3675,760.016,523.6341],[628.7743,754.185,522.6408],[624.1811,748.3541,521.6476],[619.5879,742.5231,520.6543],[614.9948,736.6922,519.6611],[610.4016,730.8612,518.6679],[605.8084,725.0303,517.6746],[601.2152,719.1993,516.6814],[596.622,713.3684,515.6882],[592.0288,707.5375,514.6949],[587.4356,701.7065,513.7017],[582.8424,695.8756,512.7084],[578.2492,690.0446,511.7152],[573.656,684.2137,510.722],[569.0628,678.3827,509.7287],[564.4697,672.5518,508.7355],[559.8765,666.7208,507.7422],[555.2833,660.8899,506.749]],"expectedDistance":149.78,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-132273","objectiveId":"creature-132273","objectiveName":"Anub'arak","checkpoints":[[555.2833,660.8899,506.749],[551.0046,654.8219,507.3538],[546.7259,648.7539,507.9586],[542.4472,642.6859,508.5634],[538.1684,636.6179,509.1682],[533.8897,630.5499,509.7731],[529.611,624.482,510.3779],[525.3323,618.414,510.9827],[521.0536,612.346,511.5875],[516.7749,606.278,512.1923],[512.4962,600.21,512.7971],[508.2175,594.142,513.4019],[503.9388,588.074,514.0067],[499.6601,582.006,514.6115],[495.3814,575.938,515.2164],[491.1027,569.87,515.8212],[486.824,563.8021,516.426],[482.5453,557.7341,517.0308],[478.2666,551.6661,517.6356],[473.9878,545.5981,518.2404],[469.7091,539.5301,518.8452],[465.4304,533.4621,519.45],[461.1517,527.3941,520.0548],[456.873,521.3261,520.6597],[452.5943,515.2581,521.2645],[448.3156,509.1901,521.8693],[444.0369,503.1222,522.4741],[439.7582,497.0542,523.0789],[435.4795,490.9862,523.6837],[431.2008,484.9182,524.2885],[426.9221,478.8502,524.8933],[422.6434,472.7822,525.4981],[418.3647,466.7142,526.1029],[414.0859,460.6462,526.7078],[409.8072,454.5782,527.3126],[405.5285,448.5102,527.9174],[401.2498,442.4423,528.5222],[396.9711,436.3743,529.127],[392.6924,430.3063,529.7318],[388.4137,424.2383,530.3366],[384.135,418.1703,530.9414],[379.8563,412.1023,531.5462],[375.5776,406.0343,532.1511],[371.2989,399.9663,532.7559],[367.0202,393.8983,533.3607],[362.7415,387.8303,533.9655],[358.4628,381.7624,534.5703],[354.184,375.6944,535.1751],[349.9053,369.6264,535.7799],[345.6266,363.5584,536.3847],[341.3479,357.4904,536.9895],[337.0692,351.4224,537.5944],[332.7905,345.3544,538.1992],[328.5118,339.2864,538.804],[324.2331,333.2184,539.4088],[319.9544,327.1504,540.0136],[315.6757,321.0825,540.6184],[311.397,315.0145,541.2232],[307.1183,308.9465,541.828],[302.8396,302.8785,542.4328],[298.5609,296.8105,543.0377],[294.2821,290.7425,543.6425],[290.0034,284.6745,544.2473],[285.7247,278.6065,544.8521],[281.446,272.5385,545.4569],[277.1673,266.4706,546.0617],[272.8886,260.4026,546.6665],[268.6099,254.3346,547.2713],[264.3312,248.2666,547.8761],[260.0525,242.1986,548.481],[255.7738,236.1306,549.0858],[251.4951,230.0626,549.6906],[247.2164,223.9946,550.2954]],"expectedDistance":536.36,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"8e65f3824573eadcaefce6bf7568cc6357082ab16f5aa3922d9d5f36c1e1d608","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg","endpoint-snap-distance-exceeded","origin-snap-distance-exceeded"]},{"schemaVersion":1,"id":"primary","dungeonId":"halls-of-lightning","mapId":602,"legs":[{"id":"leg-01-creature-126981","objectiveId":"creature-126981","objectiveName":"General Bjarngrim","checkpoints":[[259.9934,53.4337,1328.2666],[256.349,53.5097,1334.5682],[254.8306,53.5856,1328.2666],[252.8565,53.4337,1334.5682],[252.401,53.206,1328.2666],[250.8066,53.0541,1330.4684],[249.9335,53.0921,1334.2266],[249.0603,53.13,1337.9848],[247.3141,53.13,1339.8829],[244.429,53.0541,1338.82],[242.8346,52.9023,1339.4274],[237.0643,52.8264,1338.7441],[233.6478,52.9782,1339.8829],[231.2182,53.0541,1339.2755],[229.396,53.0541,1337.4534],[227.1183,53.13,1338.6681],[225.448,53.0541,1332.822],[223.9295,53.206,1334.6442],[223.474,53.4337,1328.1906],[222.6388,53.5856,1334.5682],[222.2592,53.5097,1328.1906],[218.463,53.4337,1334.5682],[215.0464,53.4337,1328.2666],[212.9585,53.4337,1331.4554],[210.8706,53.4337,1334.6442],[210.1113,53.4337,1328.2666],[208.8206,53.4337,1330.4684],[208.2892,53.4337,1324.4704],[207.1503,53.2819,1326.7481],[206.5429,53.13,1324.4704],[201.9116,52.9782,1324.0148],[197.7357,52.9782,1326.2925],[192.3451,53.13,1324.4704],[190.7507,53.4337,1322.2686],[188.7767,53.7374,1322.7241],[187.2582,53.8893,1322.3445],[187.0305,53.8893,1325.1537],[185.3601,53.8893,1324.85],[185.3601,53.8893,1331.5313],[183.6898,53.8893,1335.3275],[182.0195,53.8893,1335.2516],[181.1084,53.8893,1328.7221],[178.2992,53.8893,1328.7221],[177.54,53.8893,1335.3275],[172.3012,53.8893,1335.2516],[170.0994,53.8893,1328.7221],[168.7328,53.8893,1333.0877],[167.3662,53.8893,1337.4534],[167.1004,53.8893,1333.0498],[166.8347,53.8893,1328.6462],[166.3032,53.8893,1332.86],[165.7718,53.8893,1337.0737],[163.57,53.8893,1335.2516],[162.8487,53.8893,1330.7341],[162.1274,53.8893,1326.2166],[159.8497,53.8893,1329.8989],[157.572,53.8893,1333.5812],[155.8257,53.8893,1326.9759],[153.3962,53.8893,1328.2666],[150.6629,52.9782,1330.3924],[148.3852,51.9153,1327.5073],[147.7019,51.6116,1325.3814],[144.6649,50.3209,1326.8999],[141.6279,49.182,1325.0778],[139.0465,48.1191,1326.9759],[134.1874,46.145,1327.1277],[131.7578,45.158,1325.3055],[127.8098,43.4877,1327.5073],[126.0635,42.8803,1325.5333],[122.7988,41.5896,1325.5333],[121.7359,41.21,1326.5203],[117.7878,40.2989,1323.6352],[118.0915,40.4508,1325.9888],[116.0416,40.3748,1331.6072],[112.8528,40.223,1327.5073],[108.677,40.223,1326.4823],[104.5011,40.223,1325.4574],[103.8178,40.223,1320.6362],[103.1345,40.223,1315.815],[96.2254,40.223,1314.5243],[96.681,40.223,1313.6132],[102.7549,40.223,1313.0058],[96.681,39.7674,1309.9689],[102.4512,39.3119,1307.5393],[99.5661,38.8184,1305.1857],[96.681,38.3249,1302.832],[102.4512,37.7934,1300.5543],[99.5661,37.2619,1298.2007],[96.681,36.7305,1295.847],[102.4512,36.1231,1293.4175],[99.5661,35.5916,1291.0638],[96.681,35.0601,1288.7102],[102.4512,34.5287,1286.4325],[96.681,33.9213,1283.3196],[102.4512,33.7694,1282.4844],[96.2254,33.6176,1280.8141],[102.8308,33.6176,1279.0678],[99.7179,33.6176,1273.3641],[96.605,33.6176,1267.6603],[92.3913,33.6176,1263.437],[88.1775,33.6176,1259.2137],[87.9497,33.6176,1263.9305],[87.7219,33.6176,1268.6473],[86.659,33.6176,1266.901],[84.6091,33.6176,1265.6103],[79.9777,33.6176,1261.1878],[79.2185,33.6176,1255.0949],[73.9038,33.6176,1255.93],[71.0187,33.6176,1257.8281],[66.4632,33.6176,1255.4745],[63.3504,33.6176,1257.3726],[57.4283,33.6176,1255.4745],[54.3913,33.6176,1257.3726],[48.5452,33.6176,1257.3726],[45.5842,33.6176,1255.4745],[41.712,33.6176,1256.0819],[38.751,33.8454,1258.5874],[35.79,34.1491,1258.1318],[34.3474,33.9972,1258.8151],[32.6771,34.3009,1258.3596],[30.0197,34.1491,1258.8151],[30.0197,34.0731,1256.5374],[28.8809,33.9213,1255.5504],[25.9958,33.6176,1255.4745],[24.0977,33.6176,1257.3726],[18.7071,33.6176,1255.4745],[15.6701,33.6176,1257.3726],[9.6721,33.6176,1257.3726],[6.4833,33.6176,1255.4745],[1.7001,33.6176,1258.0559],[-1.4887,33.6176,1256.0059],[-7.1071,33.6176,1254.943],[-8.3598,33.6176,1258.7107],[-9.6126,33.6176,1262.4785],[-14.3578,33.6176,1259.5554],[-19.103,33.6176,1256.6323],[-24.152,33.6176,1257.3916],[-29.2009,33.6176,1258.1508]],"expectedDistance":604.95,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-126982","objectiveId":"creature-126982","objectiveName":"Volkhan","checkpoints":[[-29.2009,33.6176,1258.1508],[-34.5915,35.2771,1263.0452],[-39.9821,36.9366,1267.9396],[-45.3727,38.596,1272.8339],[-50.7633,40.2555,1277.7283],[-56.1539,41.915,1282.6227],[-61.5445,43.5745,1287.5171],[-66.9351,45.234,1292.4115],[-72.3257,46.8934,1297.3059],[-77.7163,48.5529,1302.2002],[-83.1069,50.2124,1307.0946],[-88.4975,51.8719,1311.989],[-93.8881,53.5314,1316.8834],[-99.2787,55.1908,1321.7778],[-104.6693,56.8503,1326.6722]],"expectedDistance":104.55,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-126873","objectiveId":"creature-126873","objectiveName":"Ionar","checkpoints":[[-104.6693,56.8503,1326.6722],[-107.6304,56.8503,1331.9868],[-110.5914,56.8503,1337.3015],[-113.5524,56.8124,1332.0628],[-116.5135,56.7744,1326.824],[-119.4745,56.7744,1330.0508],[-122.4355,56.7744,1333.2775],[-123.5744,56.7744,1329.1397],[-124.7133,56.7744,1325.0018],[-127.5984,56.8503,1328.4943],[-129.4205,56.4707,1329.7091],[-130.0279,56.0911,1326.1407],[-131.2427,55.5596,1325.5333],[-135.95,54.193,1326.1407],[-138.911,53.0541,1325.9129],[-138.911,52.9023,1322.2686],[-140.1258,52.4467,1318.7001],[-143.922,52.143,1319.5353],[-148.2497,52.0671,1316.0428],[-154.3995,52.0671,1313.6892],[-153.4505,52.0671,1309.0198],[-152.5014,52.0671,1304.3505],[-154.8551,52.0671,1299.6053],[-157.2087,52.0671,1294.86],[-163.6622,52.0671,1294.7082],[-165.6363,52.0671,1289.849],[-167.6103,52.0671,1284.9899],[-161.2327,52.0671,1284.2307],[-161.2327,52.0671,1282.7881],[-167.6103,52.0671,1282.1048],[-161.1568,52.0671,1279.5234],[-161.1568,52.0671,1276.1068],[-167.6103,52.0671,1274.5883],[-167.7621,52.0671,1270.2607],[-161.3086,52.0671,1269.3496],[-164.8011,52.143,1267.0529],[-169.5843,52.219,1265.6673],[-167.1547,52.143,1263.6743],[-170.1917,51.9912,1263.0669],[-171.4065,51.9153,1258.2837],[-168.9769,51.9912,1254.1078],[-168.9769,52.219,1249.3246],[-171.4065,52.3708,1248.7172],[-172.3935,52.4467,1246.8951],[-168.4834,52.4088,1246.1358],[-164.5733,52.3708,1245.3766],[-159.7901,52.5227,1243.5544],[-163.7002,52.6365,1243.4026],[-167.6103,52.7504,1243.2507],[-167.5344,52.9023,1240.8971],[-163.6622,52.8643,1240.024],[-159.7901,52.8264,1239.1508],[-163.5863,52.7504,1236.9111],[-167.3825,52.6745,1234.6713],[-163.3206,52.6365,1233.1908],[-159.2587,52.5986,1231.7103],[-162.1438,52.5986,1227.6863],[-158.3476,52.6365,1227.041],[-154.5514,52.6745,1226.3956],[-155.1588,52.5986,1224.7253],[-157.5124,52.4467,1224.1179],[-154.5514,52.2949,1222.979],[-156.2976,52.2949,1218.8032],[-160.4734,52.2949,1215.1589],[-160.4734,52.4467,1210.3757],[-162.903,52.5986,1209.7683],[-158.8031,52.7504,1206.8072],[-163.9659,52.7504,1204.4536],[-159.2587,52.7504,1199.1389],[-163.2826,52.7504,1197.6584],[-167.3066,52.7504,1196.1779],[-163.2826,52.8264,1192.8372],[-167.876,52.7884,1192.5715],[-172.4694,52.7504,1192.3058],[-172.4694,52.5986,1191.4706],[-170.3436,52.4467,1189.3447],[-172.3176,52.4467,1185.5485],[-174.899,52.4467,1182.6634],[-176.1897,52.4467,1186.1559],[-176.9489,52.5986,1186.08],[-177.1387,52.7125,1181.8282],[-177.3286,52.8264,1177.5765],[-181.1248,52.7504,1174.6914],[-182.9469,52.7504,1178.6394],[-184.7691,52.7504,1182.5875],[-186.7052,52.7125,1178.6015],[-188.6412,52.6745,1174.6155],[-189.3245,52.5227,1174.5395],[-189.4384,52.5227,1178.5256],[-189.5523,52.5227,1182.5116],[-193.1207,52.4467,1182.5875],[-196.9359,52.4467,1180.3857],[-199.1092,52.5227,1184.4856],[-201.2826,52.5986,1188.5855],[-203.1996,52.4467,1188.1299],[-205.0218,52.2949,1190.5595],[-209.805,52.143,1189.1929],[-213.3734,52.219,1186.6115],[-217.9289,52.4467,1185.3967],[-218.3844,52.5986,1181.9042],[-220.4344,52.6745,1182.7393],[-221.9529,52.5986,1176.8173],[-225.1417,52.5227,1172.8692],[-226.8879,52.5227,1179.4746],[-228.9758,52.5227,1176.2478],[-231.0637,52.5227,1173.0211],[-231.823,52.5227,1179.6265],[-236.9858,52.5227,1179.4746],[-237.745,52.5227,1173.0211],[-239.3394,52.5227,1179.6265],[-240.1746,52.5227,1173.0211],[-242.794,52.5227,1177.1969],[-245.4134,52.5227,1181.3727],[-245.4134,52.5227,1177.045],[-245.4134,52.5227,1172.7174],[-250.1206,52.5227,1175.6278],[-254.8279,52.5227,1178.5382],[-259.5352,52.5227,1181.4486],[-266.2165,52.5227,1181.5625],[-272.8978,52.5227,1181.6764],[-274.72,52.5227,1176.3617],[-276.5422,52.5227,1171.047],[-272.5182,52.5227,1165.5426],[-268.4942,52.5227,1160.0381],[-261.8509,52.5227,1159.6205],[-255.2075,52.5227,1159.2029],[-259.9908,52.5227,1157.9502],[-264.774,52.5227,1156.6974],[-259.5352,52.5227,1152.2179],[-264.6221,52.5227,1148.2699],[-264.774,52.5227,1145.3088],[-259.6111,52.5227,1144.3218],[-262.1166,52.9023,1142.8033],[-258.776,53.0541,1141.8923],[-256.4223,52.6745,1141.8923],[-254.1446,52.8264,1140.2219],[-254.3724,53.206,1138.3997],[-252.8539,54.5726,1134.9832],[-252.3984,55.7115,1131.6425],[-253.3094,55.7115,1131.6425],[-253.4613,56.7744,1129.5166],[-252.3224,56.9262,1129.0611],[-252.1706,57.0022,1128.3778],[-253.0817,57.0022,1121.6206],[-256.1566,56.9642,1118.5077],[-259.2315,56.9262,1115.3948],[-261.9648,56.8883,1111.7504],[-264.698,56.8503,1108.1061],[-259.4593,56.8503,1107.2709],[-264.6221,56.8503,1104.3858],[-262.4962,56.9262,1100.2859],[-257.4093,56.9262,1100.2859],[-258.4723,57.0022,1096.1101],[-259.8389,57.3059,1093.4528],[-258.3963,57.8373,1092.3139],[-257.4093,57.6096,1092.6176],[-257.6371,58.141,1091.4028],[-256.9538,57.9892,1091.6306],[-257.3334,58.2929,1090.7195],[-256.8019,58.5206,1090.264],[-257.5612,59.5077,1088.9733],[-254.6761,58.9762,1087.9862],[-255.0557,59.4317,1087.1511],[-253.5372,59.204,1086.0881],[-252.3224,58.9762,1086.0881],[-252.0187,59.3558,1085.0252],[-250.6521,60.1151,1084.0382],[-247.1596,61.1021,1083.7345],[-247.4633,61.1021,1083.279],[-242.0727,61.2539,1083.279],[-236.6821,61.4058,1083.279],[-237.3654,61.4058,1082.8234],[-242.8319,61.4058,1082.5956],[-248.2985,61.4058,1082.3679],[-251.715,60.7984,1082.5197],[-252.9298,61.2539,1082.5956],[-259.9908,61.4058,1082.4438],[-261.2055,61.4058,1081.7605]],"expectedDistance":737.43,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-126985","objectiveId":"creature-126985","objectiveName":"Loken","checkpoints":[[-261.2055,61.4058,1081.7605],[-259.9908,61.4058,1082.4438],[-252.9298,61.2539,1082.5956],[-251.715,60.7984,1082.5197],[-248.2985,61.4058,1082.3679],[-242.8319,61.4058,1082.5956],[-237.3654,61.4058,1082.8234],[-236.6821,61.4058,1083.279],[-230.3045,61.4058,1083.6206],[-223.9269,61.4058,1083.9623],[-219.5992,61.4058,1084.7974],[-215.6891,61.4058,1084.7215],[-211.779,61.4058,1084.6456],[-209.2736,61.4058,1085.6326],[-202.801,61.4058,1085.253],[-202.1747,61.4058,1088.3659],[-197.4484,61.4058,1089.201],[-196.7651,61.4058,1091.0232],[-197.2206,61.4058,1092.3139],[-195.854,61.4058,1091.7824],[-194.3355,61.4058,1094.7435],[-191.1467,61.4058,1096.7555],[-187.9579,61.4058,1098.7674],[-185.4524,61.4058,1101.5766],[-179.3026,61.4058,1104.158],[-177.6323,61.4058,1104.3099],[-176.1138,61.4058,1105.7525],[-173.6842,61.4058,1105.9802],[-172.925,61.4058,1104.7654],[-170.2676,61.4058,1105.6765],[-168.5214,61.4058,1104.234],[-165.94,61.4058,1105.1451],[-165.5603,61.4058,1103.6266],[-163.2067,61.4058,1103.247],[-162.903,61.0261,1101.0452],[-160.5494,61.1021,1100.4378],[-158.1957,61.2539,1097.5527],[-152.3496,61.4058,1100.2859],[-149.3885,61.4058,1096.1101],[-144.1498,61.4058,1092.4658],[-139.4425,61.4058,1096.6416],[-136.5574,61.4058,1095.5027],[-131.0909,61.4058,1096.0342],[-128.5095,61.4058,1090.0362],[-124.2957,61.4058,1090.9473],[-120.0819,61.4058,1091.8584],[-116.3616,61.4058,1095.5027],[-111.3506,61.4058,1091.5547],[-107.1748,60.9502,1093.9842],[-106.5674,60.9502,1095.199],[-104.7453,60.4187,1095.7305],[-102.9231,59.8114,1095.1231],[-100.5694,58.9762,1095.7305],[-98.8232,58.3688,1095.199],[-96.3177,57.9133,1095.6546],[-95.027,57.5336,1094.8953],[-93.3567,57.3059,1094.9713],[-92.977,57.0022,1094.0602],[-92.2937,57.154,1094.2879],[-91.99,57.0022,1093.7565],[-91.3067,57.2299,1094.212],[-90.2438,57.0781,1093.9083],[-88.6494,57.3818,1094.8194],[-85.1569,56.8503,1092.3898],[-82.4995,57.3059,1092.1621],[-81.8922,57.9133,1093.3768],[-80.7533,58.4447,1093.9842],[-80.1459,58.217,1093.3768],[-79.007,58.5966,1093.3768],[-77.8682,59.4317,1093.9842],[-76.046,59.6595,1093.3768],[-74.8312,60.4187,1093.9842],[-73.6164,60.5706,1093.3768],[-72.4017,61.1021,1093.3768],[-71.7943,60.7224,1091.5547],[-70.5795,60.8743,1090.9473],[-68.7573,61.4058,1092.238],[-65.9481,61.4058,1087.9862],[-64.9611,61.4058,1089.9603],[-60.6714,61.4058,1087.7964],[-56.3817,61.4058,1085.6326],[-51.9781,61.4058,1084.7974],[-45.8662,61.3678,1084.3039],[-39.7544,61.3298,1083.8104],[-39.9062,61.3298,1077.205],[-34.2119,61.3298,1075.9396],[-28.5176,61.3298,1074.6742],[-22.8233,61.3298,1073.4089],[-26.7714,61.3678,1070.22],[-30.7194,61.4058,1067.0312],[-25.3288,61.4058,1066.9553],[-19.9382,61.4058,1066.8794],[-14.9272,61.4058,1067.4868],[-16.4457,61.4058,1060.4259],[-9.8403,61.4058,1058.5278],[-11.8903,61.4058,1052.8335],[-6.4238,61.4058,1054.2001],[-9.0052,61.4058,1049.4928],[-4.3738,61.4058,1048.9234],[0.2576,61.4058,1048.3539],[2.3455,61.4058,1044.7855],[4.4334,61.4058,1041.2171],[8.4194,61.4058,1040.1162],[12.4054,61.4058,1039.0153],[12.4054,61.2539,1035.5987],[13.9998,60.9502,1036.8894],[15.2146,60.6465,1036.8894],[15.822,60.3428,1036.282],[17.0367,60.0391,1036.8894],[17.6441,59.7354,1035.7506],[19.1626,59.2799,1035.9024],[21.744,58.7484,1038.5598],[21.4024,58.5966,1034.308],[21.0607,58.4447,1030.0563],[22.2755,58.4447,1036.4339],[29.5642,58.4447,1037.1172],[33.6261,58.4447,1040.6097],[37.6881,58.4447,1044.1022],[30.4753,58.4447,1044.4059],[32.9808,58.5206,1046.5318],[26.4513,58.5966,1047.7466],[24.0218,58.5966,1046.5318],[24.0977,58.217,1048.4299],[23.5662,57.9892,1048.7336],[23.1866,57.9892,1048.2021],[23.8699,57.2299,1051.0113],[21.2885,55.6355,1053.7445],[20.6811,54.5726,1056.0982],[19.4663,54.0411,1056.7056],[16.4294,53.7374,1054.9593],[18.0238,53.5097,1059.0592],[18.0238,53.4337,1064.298],[14.6072,53.4337,1064.9813],[14.6072,53.4337,1070.22],[14.6072,53.4337,1075.4588],[15.5183,53.4337,1078.7235],[14.6072,53.4337,1082.292],[14.6831,53.4337,1084.9493],[15.9738,53.4337,1088.6696],[14.9868,53.4337,1095.5786],[18.9348,53.4337,1100.8174],[17.0367,53.4337,1105.8284],[20.6052,53.5097,1106.6635],[19.0867,53.5856,1111.5986],[17.1886,53.5856,1113.4967],[19.3145,54.0411,1116.154],[20.6052,54.4208,1116.5337],[20.6052,54.9522,1118.3558],[21.82,55.6355,1119.5706],[21.5922,56.0911,1121.3928],[23.0347,56.7744,1122.6076],[22.5033,57.3059,1125.6445],[25.1606,58.5966,1127.5426],[27.2106,58.5206,1129.0611],[25.8439,58.5966,1130.5796],[26.1476,58.6725,1131.9462],[23.2625,58.8243,1132.0981],[23.4903,58.8243,1138.4757],[22.807,58.9762,1141.2089],[23.0347,59.128,1144.9292],[22.4273,59.2799,1146.144],[23.0347,59.4317,1147.3588],[21.8959,59.4317,1147.9662],[21.8959,59.8114,1149.1809],[20.6811,59.8114,1149.7883],[21.2885,60.0391,1151.0031],[20.6811,60.0391,1151.5346],[20.5293,60.4187,1153.0531],[21.5163,60.6465,1153.8123],[21.4403,60.8743,1155.103],[19.8459,60.7984,1156.0141],[19.1626,60.7984,1157.153],[23.5662,60.8743,1158.2918],[22.4273,60.8743,1159.7344],[22.731,60.9502,1161.2529],[25.9199,60.9502,1163.6065],[21.2885,60.9502,1165.4287],[20.0737,60.9502,1167.3268],[23.794,60.9502,1168.8453],[18.4793,60.9502,1169.6045],[23.9458,60.9502,1171.5785],[21.4403,60.9502,1176.2099],[18.9348,60.9502,1180.8412],[19.5422,60.9502,1186.2318],[20.1496,60.9502,1191.6224],[23.7181,60.9502,1187.6744],[27.2865,60.9502,1183.7263],[30.6271,60.9502,1188.2438],[33.9678,60.9502,1192.7613]],"expectedDistance":662.4,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"642c0250e54890a16bb63c1c83ebaf9d1191378004f539b296996de16116e0d1","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"gundrak","mapId":604,"legs":[{"id":"leg-01-creature-127042","objectiveId":"creature-127042","objectiveName":"Slad'ran","checkpoints":[[831.4639,176.6799,1891.5694],[825.7126,174.9268,1887.3684],[819.9614,173.1737,1883.1674],[814.2101,171.4206,1878.9664],[808.4589,169.6675,1874.7654],[802.7076,167.9144,1870.5645],[796.9564,166.1614,1866.3635],[791.2051,164.4083,1862.1625],[785.4539,162.6552,1857.9615],[779.7026,160.9021,1853.7605],[773.9514,159.149,1849.5595],[768.2001,157.3959,1845.3586],[762.4489,155.6428,1841.1576],[756.6976,153.8897,1836.9566],[750.9464,152.1367,1832.7556],[745.1951,150.3836,1828.5546],[739.4439,148.6305,1824.3537],[733.6926,146.8774,1820.1527],[727.9414,145.1243,1815.9517],[722.1901,143.3712,1811.7507],[716.4389,141.6181,1807.5497],[710.6876,139.8651,1803.3487],[704.9364,138.112,1799.1478],[699.1851,136.3589,1794.9468],[693.4339,134.6058,1790.7458],[687.6826,132.8527,1786.5448],[681.9314,131.0996,1782.3438],[676.1801,129.3465,1778.1428]],"expectedDistance":198.04,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-encounter-385","objectiveId":"encounter-385","objectiveName":"Drakkari Colossus","checkpoints":[[676.1801,129.3465,1778.1428],[670.2919,131.2334,1775.7789],[664.4037,133.1202,1773.4149],[658.5155,135.007,1771.051],[652.6273,136.8938,1768.687],[646.7391,138.7807,1766.3231]],"expectedDistance":33.1,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-127043","objectiveId":"creature-127043","objectiveName":"Moorabi","checkpoints":[[646.7391,138.7807,1766.3231],[653.9668,138.3681,1766.4716],[661.1944,137.9556,1766.6201],[668.4221,137.5431,1766.7686],[675.6497,137.1305,1766.9171],[682.8774,136.718,1767.0656],[690.105,136.3054,1767.2141],[697.3327,135.8929,1767.3627],[704.5603,135.4804,1767.5112],[711.788,135.0678,1767.6597],[719.0156,134.6553,1767.8082],[726.2433,134.2428,1767.9567],[733.471,133.8302,1768.1052],[740.6986,133.4177,1768.2537],[747.9263,133.0051,1768.4022],[755.1539,132.5926,1768.5508],[762.3816,132.1801,1768.6993],[769.6092,131.7675,1768.8478],[776.8369,131.355,1768.9963],[784.0645,130.9425,1769.1448],[791.2922,130.5299,1769.2933],[798.5198,130.1174,1769.4418],[805.7475,129.7048,1769.5904],[812.9751,129.2923,1769.7389]],"expectedDistance":166.54,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-127044","objectiveId":"creature-127044","objectiveName":"Gal'darah","checkpoints":[[812.9751,129.2923,1769.7389],[809.8403,129.6299,1776.4078],[806.7054,129.9676,1783.0768],[803.5706,130.3052,1789.7457],[800.4357,130.6429,1796.4147],[797.3009,130.9805,1803.0837],[794.166,131.3181,1809.7526],[791.0312,131.6558,1816.4216],[787.8963,131.9934,1823.0905],[784.7614,132.3311,1829.7595],[781.6266,132.6687,1836.4285],[778.4917,133.0063,1843.0974],[775.3569,133.344,1849.7664],[772.222,133.6816,1856.4353],[769.0872,134.0192,1863.1043],[765.9523,134.3569,1869.7733],[762.8175,134.6945,1876.4422],[759.6826,135.0322,1883.1112],[756.5478,135.3698,1889.7801],[753.4129,135.7074,1896.4491],[750.278,136.0451,1903.1181],[747.1432,136.3827,1909.787],[744.0083,136.7203,1916.456]],"expectedDistance":162.29,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-05-encounter-389","objectiveId":"encounter-389","objectiveName":"Eck the Ferocious","checkpoints":[[744.0083,136.7203,1916.456],[742.5501,136.2471,1909.1341],[741.0918,135.7738,1901.8123],[739.6335,135.3005,1894.4904],[738.1753,134.8272,1887.1686],[736.717,134.3539,1879.8467],[735.2587,133.8806,1872.5249],[733.8004,133.4073,1865.203],[732.3422,132.934,1857.8812],[730.8839,132.4607,1850.5593],[729.4256,131.9875,1843.2375],[727.9674,131.5142,1835.9156],[726.5091,131.0409,1828.5938],[725.0508,130.5676,1821.2719],[723.5926,130.0943,1813.9501],[722.1343,129.621,1806.6282],[720.676,129.1477,1799.3064],[719.2177,128.6744,1791.9845],[717.7595,128.2012,1784.6627],[716.3012,127.7279,1777.3408],[714.8429,127.2546,1770.019],[713.3847,126.7813,1762.6971],[711.9264,126.308,1755.3753],[710.4681,125.8347,1748.0535],[709.0099,125.3614,1740.7316],[707.5516,124.8881,1733.4098],[706.0933,124.4148,1726.0879],[704.635,123.9416,1718.7661],[703.1768,123.4683,1711.4442],[701.7185,122.995,1704.1224],[700.2602,122.5217,1696.8005],[698.802,122.0484,1689.4787],[697.3437,121.5751,1682.1568],[695.8854,121.1018,1674.835],[694.4271,120.6285,1667.5131],[692.9689,120.1552,1660.1913],[691.5106,119.682,1652.8694],[690.0523,119.2087,1645.5476],[688.5941,118.7354,1638.2257],[687.1358,118.2621,1630.9039],[685.6775,117.7888,1623.582],[684.2193,117.3155,1616.2602],[682.761,116.8422,1608.9383],[681.3027,116.3689,1601.6165],[679.8444,115.8957,1594.2946],[678.3862,115.4224,1586.9728],[676.9279,114.9491,1579.6509],[675.4696,114.4758,1572.3291],[674.0114,114.0025,1565.0072]],"expectedDistance":359.07,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"e1616878d93eaf2f2f3af3ba79e88963dc4c22ffde0a6bb99841c8df6b1f5953","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"violet-hold","mapId":608,"legs":[{"id":"leg-01-creature-102383","objectiveId":"creature-102383","objectiveName":"First Prisoner","checkpoints":[[802.0771,44.3479,1809.9153],[807.2988,44.2728,1814.5406],[812.5205,44.1977,1819.1659],[817.7423,44.1227,1823.7912],[822.964,44.0476,1828.4165],[828.1857,43.9725,1833.0419],[833.4074,43.8975,1837.6672],[838.6292,43.8224,1842.2925],[843.8509,43.7473,1846.9178],[849.0726,43.6722,1851.5431],[854.2943,43.5972,1856.1684],[859.5161,43.5221,1860.7937],[864.7378,43.447,1865.419],[869.9595,43.3719,1870.0444]],"expectedDistance":90.69,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-102384","objectiveId":"creature-102384","objectiveName":"Second Prisoner","checkpoints":[[869.9595,43.3719,1870.0444],[869.3631,43.3719,1873.7313],[868.0618,43.3719,1871.6709],[866.7606,43.3719,1871.942],[865.6762,43.3719,1875.6289],[863.0737,43.3719,1872.7011],[857.9228,43.3719,1872.918],[855.8083,43.3719,1878.8279],[860.9049,43.3719,1883.4365],[857.2722,43.4262,1887.8825],[860.4711,43.4804,1891.6236],[856.8385,43.643,1895.4189],[860.1458,43.8057,1896.8829],[859.1699,44.7274,1898.8347],[855.0492,45.5407,1899.3227],[853.8564,46.6251,1901.112],[855.5914,46.9504,1902.4132],[851.7961,47.2215,1902.6301],[854.8866,47.2757,1904.6362],[855.7541,47.2215,1907.1303],[852.3925,47.2215,1910.0581],[847.6212,47.1673,1910.5461],[845.3982,47.1673,1914.7752],[843.7716,47.2757,1920.2513],[839.8679,47.2215,1922.7454],[838.5666,47.4926,1926.7576],[836.8858,47.2215,1924.6431],[836.452,46.8962,1926.107],[835.8556,46.5709,1925.9986],[834.5002,45.9745,1927.4083],[832.982,44.8901,1927.354],[832.494,45.0527,1927.842],[831.247,44.4021,1927.2456],[830.6506,45.1612,1928.4384],[829.2409,44.9985,1928.0589],[828.0481,46.0829,1929.3601],[827.5601,47.2215,1930.7156],[827.777,48.3601,1932.0169],[826.3673,49.4987,1932.9928],[826.4215,50.6915,1934.511],[824.3612,49.7698,1932.5049],[823.3852,50.6915,1933.6435],[821.1622,50.6373,1933.0471],[821.0538,49.7698,1931.6374],[820.0236,50.6373,1932.7217],[818.6139,50.8542,1932.1253],[817.4211,50.6915,1930.9325],[813.5716,52.1012,1930.6614],[812.2161,52.047,1929.3601],[811.2401,52.535,1929.7397],[810.6437,52.7519,1930.8241],[809.5051,52.7519,1930.7156],[807.255,52.6705,1934.023],[805.0049,52.5892,1937.3304],[800.5861,52.5621,1937.1948],[796.1672,52.535,1937.0593],[791.5043,52.5079,1939.4991],[786.8415,52.4808,1941.939],[784.4287,52.4808,1939.0383],[782.016,52.4808,1936.1375],[779.7388,52.4808,1939.6076],[779.6303,52.4265,1935.3243],[776.9194,52.3181,1937.493],[775.4012,52.2097,1936.5171],[774.8048,52.1012,1932.3422],[770.3046,51.9928,1934.6736],[766.3466,51.7217,1931.2578],[765.6418,51.3422,1924.3178],[759.8403,50.9626,1923.1249],[758.8644,50.4204,1919.3296],[760.5994,50.0951,1916.944],[762.5513,50.2036,1916.5644],[761.9007,49.8782,1915.5885],[760.4367,49.6614,1915.4258],[760.5452,49.2818,1914.0161],[756.6414,48.6854,1913.5281],[756.3703,47.9264,1910.5461],[753.0629,47.8721,1910.4377],[752.3581,47.7637,1908.7026],[754.798,47.7637,1905.3953],[753.9304,47.7637,1901.8168],[750.4062,47.7637,1904.2024],[746.9904,47.7637,1902.1421],[744.7132,47.7637,1895.4732],[740.945,47.7637,1893.6839],[737.1767,47.7637,1891.8947],[735.1706,47.7637,1896.9913],[732.6765,47.7637,1896.8829],[732.0801,47.7637,1891.4609]],"expectedDistance":296.33,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-encounter-545","objectiveId":"encounter-545","objectiveName":"Cyanigosa","checkpoints":[[732.0801,47.7637,1891.4609],[732.6765,47.7637,1896.8829],[735.1706,47.7637,1896.9913],[737.1767,47.7637,1891.8947],[740.945,47.7637,1893.6839],[744.7132,47.7637,1895.4732],[746.9904,47.7637,1902.1421],[750.4062,47.7637,1904.2024],[753.9304,47.7637,1901.8168],[754.798,47.7637,1905.3953],[752.3581,47.7637,1908.7026],[753.0629,47.8721,1910.4377],[756.3703,47.9264,1910.5461],[756.6414,48.6854,1913.5281],[760.5452,49.2818,1914.0161],[760.4367,49.6614,1915.4258],[761.9007,49.8782,1915.5885],[762.5513,50.2036,1916.5644],[760.5994,50.0951,1916.944],[758.8644,50.4204,1919.3296],[759.8403,50.9626,1923.1249],[765.6418,51.3422,1924.3178],[766.3466,51.7217,1931.2578],[770.3046,51.9928,1934.6736],[774.8048,52.1012,1932.3422],[775.4012,52.2097,1936.5171],[776.9194,52.3181,1937.493],[779.6303,52.4265,1935.3243],[779.7388,52.4808,1939.6076],[782.016,52.4808,1936.1375],[784.4287,52.4808,1939.0383],[786.8415,52.4808,1941.939],[791.5043,52.5079,1939.4991],[796.1672,52.535,1937.0593],[800.5861,52.5621,1937.1948],[805.0049,52.5892,1937.3304],[807.255,52.6705,1934.023],[809.5051,52.7519,1930.7156],[810.6437,52.7519,1930.8241],[811.2401,52.535,1929.7397],[812.2161,52.047,1929.3601],[816.3909,52.535,1934.3483],[814.7102,52.535,1938.9569],[816.9331,52.535,1941.6679],[816.2283,52.535,1946.9814],[820.4032,52.535,1947.2525],[820.3489,52.4808,1953.0539],[823.7648,52.4808,1953.6503],[824.1985,52.4808,1954.8432],[821.3249,52.4808,1955.8191],[825.4998,52.4265,1955.8191],[827.6685,52.3723,1959.8313],[823.7648,52.4265,1964.3315],[825.7166,52.4265,1970.0245],[821.0538,52.4808,1971.9222]],"expectedDistance":213.62,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"8a37452bd6320ae980c5229bde8e03e9e8d911bca8f9d4eadd752b699703263c","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg"]},{"schemaVersion":1,"id":"primary","dungeonId":"ahnkahet-old-kingdom","mapId":619,"legs":[{"id":"leg-01-creature-131952","objectiveId":"creature-131952","objectiveName":"Elder Nadox","checkpoints":[[-1109.659,69.8828,333.8464],[-1105.8928,69.0649,340.2774],[-1102.1265,68.2469,346.7083],[-1098.3603,67.429,353.1393],[-1094.594,66.6111,359.5703],[-1090.8278,65.7931,366.0012],[-1087.0616,64.9752,372.4322],[-1083.2953,64.1572,378.8632],[-1079.5291,63.3393,385.2942],[-1075.7628,62.5213,391.7251],[-1071.9966,61.7034,398.1561],[-1068.2303,60.8855,404.5871],[-1064.4641,60.0675,411.0181],[-1060.6978,59.2496,417.449],[-1056.9316,58.4316,423.88],[-1053.1654,57.6137,430.311],[-1049.3991,56.7957,436.7419],[-1045.6329,55.9778,443.1729],[-1041.8666,55.1599,449.6039],[-1038.1004,54.3419,456.0349],[-1034.3341,53.524,462.4658],[-1030.5679,52.706,468.8968],[-1026.8016,51.8881,475.3278],[-1023.0354,51.0701,481.7588],[-1019.2692,50.2522,488.1897],[-1015.5029,49.4342,494.6207],[-1011.7367,48.6163,501.0517],[-1007.9704,47.7984,507.4826],[-1004.2042,46.9804,513.9136],[-1000.4379,46.1625,520.3446],[-996.6717,45.3445,526.7756],[-992.9054,44.5266,533.2065],[-989.1392,43.7086,539.6375],[-985.373,42.8907,546.0685],[-981.6067,42.0728,552.4995],[-977.8405,41.2548,558.9304],[-974.0742,40.4369,565.3614],[-970.308,39.6189,571.7924],[-966.5417,38.801,578.2233],[-962.7755,37.983,584.6543],[-959.0092,37.1651,591.0853],[-955.243,36.3472,597.5163],[-951.4768,35.5292,603.9472],[-947.7105,34.7113,610.3782],[-943.9443,33.8933,616.8092],[-940.178,33.0754,623.2402],[-936.4118,32.2574,629.6711],[-932.6455,31.4395,636.1021],[-928.8793,30.6216,642.5331],[-925.113,29.8036,648.964],[-921.3468,28.9857,655.395],[-917.5806,28.1677,661.826],[-913.8143,27.3498,668.257],[-910.0481,26.5318,674.6879],[-906.2818,25.7139,681.1189]],"expectedDistance":404.86,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-131951","objectiveId":"creature-131951","objectiveName":"Prince Taldaram","checkpoints":[[-906.2818,25.7139,681.1189],[-903.5484,25.0916,674.4578],[-900.8151,24.4693,667.7966],[-898.0817,23.847,661.1355],[-895.3483,23.2247,654.4744],[-892.6149,22.6025,647.8132],[-889.8816,21.9802,641.1521],[-887.1482,21.3579,634.4909],[-884.4148,20.7356,627.8298],[-881.6814,20.1133,621.1687],[-878.9481,19.491,614.5075],[-876.2147,18.8687,607.8464],[-873.4813,18.2465,601.1852],[-870.7479,17.6242,594.5241],[-868.0146,17.0019,587.863],[-865.2812,16.3796,581.2018],[-862.5478,15.7573,574.5407],[-859.8144,15.135,567.8795],[-857.0811,14.5127,561.2184],[-854.3477,13.8905,554.5573],[-851.6143,13.2682,547.8961],[-848.8809,12.6459,541.235],[-846.1476,12.0236,534.5738],[-843.4142,11.4013,527.9127]],"expectedDistance":166.22,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-creature-131953","objectiveId":"creature-131953","objectiveName":"Jedoga Shadowseeker","checkpoints":[[-843.4142,11.4013,527.9127],[-838.6488,10.423,522.3284],[-833.8835,9.4446,516.7441],[-829.1181,8.4662,511.1597],[-824.3527,7.4879,505.5754],[-819.5874,6.5095,499.9911],[-814.822,5.5312,494.4067],[-810.0566,4.5528,488.8224],[-805.2913,3.5745,483.2381],[-800.5259,2.5961,477.6538],[-795.7605,1.6177,472.0694],[-790.9952,0.6394,466.4851],[-786.2298,-0.339,460.9008],[-781.4644,-1.3173,455.3165],[-776.6991,-2.2957,449.7321],[-771.9337,-3.274,444.1478],[-767.1683,-4.2524,438.5635],[-762.403,-5.2307,432.9792],[-757.6376,-6.2091,427.3948],[-752.8723,-7.1875,421.8105],[-748.1069,-8.1658,416.2262],[-743.3415,-9.1442,410.6419],[-738.5762,-10.1225,405.0575],[-733.8108,-11.1009,399.4732],[-729.0454,-12.0792,393.8889],[-724.2801,-13.0576,388.3046],[-719.5147,-14.036,382.7202],[-714.7493,-15.0143,377.1359],[-709.984,-15.9927,371.5516]],"expectedDistance":207.37,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-creature-132298","objectiveId":"creature-132298","objectiveName":"Herald Volazj","checkpoints":[[-709.984,-15.9927,371.5516],[-703.6503,-14.9777,375.1334],[-697.3166,-13.9627,378.7152],[-690.983,-12.9477,382.297],[-684.6493,-11.9327,385.8788],[-678.3156,-10.9177,389.4606],[-671.982,-9.9027,393.0424],[-665.6483,-8.8877,396.6242],[-659.3146,-7.8727,400.2061],[-652.981,-6.8577,403.7879],[-646.6473,-5.8427,407.3697],[-640.3136,-4.8277,410.9515],[-633.98,-3.8127,414.5333],[-627.6463,-2.7977,418.1151],[-621.3126,-1.7827,421.6969],[-614.979,-0.7677,425.2787],[-608.6453,0.2473,428.8605],[-602.3116,1.2623,432.4423],[-595.978,2.2773,436.0242],[-589.6443,3.2923,439.606],[-583.3106,4.3073,443.1878],[-576.977,5.3223,446.7696],[-570.6433,6.3373,450.3514],[-564.3096,7.3523,453.9332],[-557.976,8.3673,457.515],[-551.6423,9.3823,461.0968],[-545.3086,10.3973,464.6786],[-538.975,11.4123,468.2605],[-532.6413,12.4273,471.8423],[-526.3076,13.4423,475.4241],[-519.974,14.4573,479.0059],[-513.6403,15.4723,482.5877],[-507.3066,16.4873,486.1695],[-500.973,17.5023,489.7513],[-494.6393,18.5173,493.3331],[-488.3056,19.5323,496.9149],[-481.972,20.5473,500.4967],[-475.6383,21.5623,504.0786],[-469.3047,22.5773,507.6604],[-462.971,23.5923,511.2422],[-456.6373,24.6073,514.824],[-450.3037,25.6223,518.4058],[-443.97,26.6373,521.9876]],"expectedDistance":308.56,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-05-creature-202410","objectiveId":"creature-202410","objectiveName":"Amanitar","checkpoints":[[-443.97,26.6373,521.9876],[-450.6409,25.0675,519.2032],[-457.3118,23.4978,516.4188],[-463.9827,21.928,513.6345],[-470.6537,20.3582,510.8501],[-477.3246,18.7884,508.0657],[-483.9955,17.2187,505.2813],[-490.6664,15.6489,502.4969],[-497.3373,14.0791,499.7125],[-504.0083,12.5094,496.9282],[-510.6792,10.9396,494.1438],[-517.3501,9.3698,491.3594],[-524.021,7.8001,488.575],[-530.6919,6.2303,485.7906],[-537.3628,4.6605,483.0062],[-544.0338,3.0908,480.2219],[-550.7047,1.521,477.4375],[-557.3756,-0.0488,474.6531],[-564.0465,-1.6185,471.8687],[-570.7174,-3.1883,469.0843],[-577.3884,-4.7581,466.2999],[-584.0593,-6.3278,463.5155],[-590.7302,-7.8976,460.7312],[-597.4011,-9.4674,457.9468],[-604.072,-11.0371,455.1624],[-610.743,-12.6069,452.378],[-617.4139,-14.1767,449.5936],[-624.0848,-15.7464,446.8092],[-630.7557,-17.3162,444.0249],[-637.4266,-18.886,441.2405],[-644.0975,-20.4557,438.4561],[-650.7685,-22.0255,435.6717],[-657.4394,-23.5953,432.8873],[-664.1103,-25.165,430.1029],[-670.7812,-26.7348,427.3186],[-677.4521,-28.3046,424.5342],[-684.1231,-29.8743,421.7498],[-690.794,-31.4441,418.9654],[-697.4649,-33.0139,416.181],[-704.1358,-34.5836,413.3966],[-710.8067,-36.1534,410.6123],[-717.4777,-37.7232,407.8279],[-724.1486,-39.2929,405.0435],[-730.8195,-40.8627,402.2591],[-737.4904,-42.4325,399.4747],[-744.1613,-44.0022,396.6903],[-750.8323,-45.572,393.906],[-757.5032,-47.1418,391.1216],[-764.1741,-48.7115,388.3372],[-770.845,-50.2813,385.5528],[-777.5159,-51.8511,382.7684],[-784.1868,-53.4208,379.984],[-790.8578,-54.9906,377.1997],[-797.5287,-56.5604,374.4153],[-804.1996,-58.1301,371.6309],[-810.8705,-59.6999,368.8465],[-817.5414,-61.2697,366.0621],[-824.2124,-62.8394,363.2777],[-830.8833,-64.4092,360.4934],[-837.5542,-65.979,357.709],[-844.2251,-67.5487,354.9246],[-850.896,-69.1185,352.1402],[-857.567,-70.6883,349.3558],[-864.2379,-72.2581,346.5714],[-870.9088,-73.8278,343.7871],[-877.5797,-75.3976,341.0027]],"expectedDistance":480.82,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"0a8df9af87f8179b7ad0799fd01e587a3340c9211db586a148128f310a9b15b0","generationStatus":"Rejected","generationIssues":["disconnected-navigation-leg","endpoint-snap-distance-exceeded","origin-snap-distance-exceeded"]},{"schemaVersion":1,"id":"primary","dungeonId":"forge-of-souls","mapId":632,"legs":[{"id":"leg-01-creature-201707","objectiveId":"creature-201707","objectiveName":"Bronjahm","checkpoints":[[2173.6734,638.7574,4922.1598],[2177.3266,638.7574,4923.014],[2180.9799,638.7574,4923.8681],[2182.629,638.7574,4920.367],[2184.278,638.7574,4916.8659],[2186.1723,638.7574,4920.4685],[2187.1702,638.7574,4918.7602],[2185.7664,638.7574,4915.0731],[2190.6713,638.7574,4911.4875],[2195.8806,638.7574,4914.6841],[2200.684,638.7574,4914.2951],[2201.8679,638.7574,4907.6989],[2206.1132,638.7574,4910.7941],[2210.3584,638.7574,4913.8892],[2211.8637,638.7574,4918.5827],[2213.369,638.7574,4923.2761],[2220.0667,638.7574,4924.477],[2216.4811,638.7574,4927.8765],[2216.684,638.7574,4928.3839],[2220.4726,638.7574,4926.8787],[2222.0625,638.7574,4927.978],[2225.2633,638.7574,4932.7814],[2224.4177,638.7574,4936.477],[2223.572,638.7574,4940.1726],[2227.0244,638.7574,4942.3205],[2230.4769,638.7574,4944.4685],[2230.3923,638.7574,4946.1768],[2226.9885,638.7574,4948.274],[2230.6798,638.7574,4946.7857],[2227.4621,638.7574,4952.0796],[2232.5572,638.7574,4951.4876],[2236.7686,638.8081,4955.7667],[2230.9631,638.8081,4958.7772],[2230.4726,638.9096,4962.4813],[2234.7285,638.9096,4960.9337],[2238.9843,638.9096,4959.3861],[2239.534,638.9096,4963.9358],[2240.0836,638.9096,4968.4855],[2238.8321,638.9096,4973.0775],[2237.5805,638.9096,4977.6695],[2231.9779,638.9096,4980.5278],[2226.3754,638.9096,4983.3862],[2223.2802,638.9096,4978.4813],[2222.0794,638.9096,4980.9845],[2222.0794,638.9096,4987.5807],[2218.4768,638.9096,4982.8788],[2218.3754,638.9096,4989.1705],[2216.0751,638.9096,4990.4771],[2213.572,638.9096,4984.6758],[2212.8785,638.9096,4991.4792],[2210.7813,638.9096,4992.2911],[2207.2802,638.9096,4986.79],[2206.2823,638.9096,4990.7921],[2205.2844,638.9096,4994.7942],[2200.481,638.8589,4989.4792],[2200.3795,638.8589,4996.8915],[2198.0793,638.8589,4997.9909],[2195.4239,638.8335,4995.1388],[2192.7685,638.8081,4992.2868],[2192.3203,638.8335,4996.4412],[2191.8721,638.8589,5000.5955],[2189.0645,638.8589,5002.3883],[2187.5085,638.8335,4998.8851],[2185.9525,638.8081,4995.382],[2185.9102,638.8335,4999.6801],[2185.8679,638.8589,5003.9782],[2184.3626,638.8589,5004.6716],[2183.0095,638.8335,5000.8725],[2181.6565,638.8081,4997.0733],[2178.5613,638.8081,4998.0712],[2178.4091,638.8335,5002.5723],[2178.2569,638.8589,5007.0733],[2175.4662,638.8589,5008.4771],[2174.5698,638.8335,5004.272],[2173.6734,638.8081,5000.067],[2171.0687,638.8081,5000.8788],[2170.3668,638.8335,5005.6336],[2169.6649,638.8589,5010.3883],[2170.7727,638.8842,5014.8387],[2171.8805,638.9096,5019.289],[2167.8721,638.9604,5021.2848],[2165.8594,639.0618,5021.0818],[2165.0645,639.3663,5023.0776],[2160.853,640.1781,5022.5194],[2159.0433,640.9392,5024.3292],[2156.0327,641.6496,5024.4307],[2152.3372,641.9456,5022.3841],[2148.6416,642.2415,5020.3376],[2150.6543,642.5798,5023.9909],[2145.2589,643.2225,5022.1981],[2139.9122,644.0259,5021.4962],[2134.5655,644.8293,5020.7943],[2134.4471,646.2838,5027.5765],[2129.4534,647.9752,5031.974],[2134.3287,647.823,5034.6463],[2135.0559,648.2627,5037.1495],[2128.2695,649.6158,5038.8747],[2132.1701,649.6411,5041.6231],[2136.0707,649.6665,5044.3715],[2134.464,650.5291,5046.9762],[2130.4111,651.1295,5046.9],[2126.3583,651.7299,5046.8239],[2129.3561,652.1866,5050.2573],[2126.9502,652.5756,5050.8662],[2129.7452,652.5756,5052.3208],[2125.0559,652.6602,5053.2003],[2130.9629,652.6094,5056.3969],[2125.1574,652.5587,5058.3927],[2129.4048,652.5587,5059.9402],[2133.6521,652.5587,5061.4878],[2131.4703,652.508,5067.8811],[2126.817,652.4826,5067.8811],[2122.1637,652.4572,5067.8811],[2125.4217,652.4318,5072.38],[2128.6796,652.4065,5076.879],[2123.9248,652.4065,5077.0227],[2119.1701,652.4065,5077.1665],[2117.5802,652.3726,5083.5767],[2121.6331,652.3557,5085.7246],[2125.6859,652.3388,5087.8726],[2124.1807,652.305,5092.5915],[2119.5274,652.305,5093.8431],[2114.8741,652.305,5095.0946],[2118.6732,652.305,5097.7944],[2122.4724,652.305,5100.4942],[2117.9713,652.2796,5102.3399],[2113.4703,652.2543,5104.1856],[2117.7261,652.2289,5106.082],[2121.9819,652.2035,5107.9784],[2122.0834,652.1528,5112.4773],[2117.5316,652.1274,5114.7268],[2112.9798,652.102,5116.9763],[2117.4809,652.102,5118.3801],[2121.9819,652.102,5119.7839],[2122.1849,652.0513,5122.0841],[2117.7346,652.0259,5124.934],[2113.2842,652.0006,5127.7839],[2118.1828,651.9752,5129.7882],[2123.0813,651.9498,5131.7924],[2118.6732,651.9244,5135.0398],[2114.2652,651.8991,5138.2871],[2119.316,651.8737,5139.581],[2124.3667,651.8483,5140.8749],[2119.8149,651.8483,5143.0229],[2115.2631,651.8483,5145.1709],[2119.4428,651.8737,5145.8474],[2123.6225,651.8991,5146.5239],[2128.5718,651.9752,5146.3717],[2133.5211,652.0513,5146.2195],[2133.4872,652.2373,5148.0969],[2135.4323,652.5249,5148.2491],[2135.2124,652.5587,5148.8241],[2135.9397,652.8124,5148.5535],[2136.6331,652.6602,5149.8559],[2139.965,653.0661,5152.6973],[2141.6733,652.8124,5155.7924],[2145.3604,653.1168,5159.8009],[2146.3414,652.8124,5163.3358],[2146.2399,652.6094,5164.7396],[2147.8467,652.8124,5165.3823],[2149.9608,652.9646,5167.8855],[2150.2991,652.7617,5170.1519],[2151.1955,652.8124,5171.2512],[2146.1786,652.7363,5172.0377],[2141.1617,652.6602,5172.8242],[2141.6691,652.6602,5173.7713],[2146.9312,652.787,5173.6783],[2152.1934,652.9139,5173.5853],[2154.5951,652.6602,5179.7756],[2157.5718,652.9139,5184.6635],[2159.2294,652.8378,5188.2576],[2160.8869,652.7617,5191.8517],[2162.5275,653.0661,5193.6276],[2163.5253,652.9646,5193.4416],[2164.4894,652.8124,5196.7904],[2168.6332,652.4741,5199.6319],[2172.4387,652.4403,5203.3359],[2170.037,652.5249,5206.6382],[2173.6734,652.4234,5207.1964],[2174.3668,652.4572,5208.5029],[2178.7643,652.6094,5205.4035],[2180.5345,652.5982,5210.462],[2182.3048,652.5869,5215.5205],[2184.0751,652.5756,5220.579],[2184.1258,652.7955,5216.1795],[2184.1766,653.0154,5211.7799],[2187.0856,653.3705,5213.7799],[2189.4873,653.472,5220.1604],[2190.0793,653.2183,5226.0632],[2196.0666,654.0809,5225.0653],[2199.0603,654.842,5220.9554],[2202.8574,655.2902,5221.1668],[2206.6544,655.7384,5221.3782],[2210.4599,656.6348,5217.1668],[2217.462,657.3283,5219.5685],[2218.8997,657.8864,5215.8137],[2222.7052,658.2923,5216.5241],[2226.1724,658.4953,5219.4839],[2228.5234,659.4255,5213.1414],[2232.5868,659.6285,5216.7101],[2235.3141,660.4234,5212.1943],[2241.3056,660.9308,5215.4754],[2244.2147,661.8272,5210.5198],[2250.2866,662.3177,5213.9363],[2252.9758,663.2141,5208.4353],[2256.8828,663.4678,5211.1921],[2259.6904,663.3663,5215.9998],[2262.1429,664.1528,5211.6826],[2264.5953,664.9393,5207.3655],[2264.4938,665.193,5202.061],[2264.3924,665.4467,5196.7566],[2268.7814,665.472,5194.913],[2273.1704,665.4974,5193.0695],[2276.6715,665.472,5189.5684],[2280.1725,665.4467,5186.0673],[2276.071,665.4467,5184.8158],[2271.9695,665.4467,5183.5642],[2272.663,665.4974,5182.6678],[2279.7666,665.4974,5181.2809],[2279.6651,665.4974,5180.3845],[2272.3755,665.4974,5180.08],[2276.0287,665.4974,5178.1265],[2279.682,665.4974,5176.173],[2275.8342,665.4974,5174.8707],[2271.9865,665.4974,5173.5684],[2272.4769,665.4974,5166.7692],[2274.4727,665.4974,5160.173],[2280.7814,665.4974,5159.7671],[2280.071,665.4974,5152.8664],[2275.0647,665.4974,5151.2766],[2275.3691,665.4974,5150.4817],[2282.4727,665.4974,5151.8009],[2276.9759,665.4974,5147.8939],[2278.8279,665.4974,5144.3928],[2280.6799,665.4974,5140.8918],[2283.8765,665.4974,5138.8453],[2287.0732,665.4974,5136.7987],[2293.0605,665.4974,5139.2004],[2294.5573,665.4974,5144.0461],[2296.0542,665.4974,5148.8918],[2300.5616,665.4974,5148.0884],[2305.069,665.4974,5147.285],[2305.1705,665.4974,5143.3865],[2305.2719,665.4974,5139.488],[2311.124,665.6243,5143.2343],[2316.976,665.7511,5146.9806],[2319.0732,666.1401,5145.0863],[2314.8787,666.1401,5141.0778],[2315.014,666.8843,5134.2617],[2318.8111,667.2564,5134.8114],[2322.6081,667.6285,5135.3611],[2323.6568,667.9076,5130.3632],[2324.7054,668.1866,5125.3653],[2328.4601,668.1866,5129.1877],[2331.1536,668.1866,5128.1898],[2332.2614,668.1866,5124.1391],[2333.3692,668.1866,5120.0884],[2335.4263,668.1866,5123.3865],[2337.4834,668.1866,5126.6846],[2337.9908,668.1866,5122.9383],[2338.4982,668.1866,5119.1919],[2340.4961,668.1866,5122.5915],[2342.494,668.1866,5125.9911],[2342.883,668.1866,5133.3822],[2345.6737,668.1866,5135.0905],[2343.475,668.1866,5137.2892],[2344.4898,668.1866,5142.0926],[2346.2826,668.1866,5144.3928],[2344.6927,668.1866,5146.9975],[2344.9803,668.1866,5151.192],[2346.587,668.1866,5151.0905],[2353.0987,668.1866,5152.9848],[2357.6991,668.1866,5155.9785],[2360.2023,668.1866,5159.8855],[2353.401,668.1866,5161.4922],[2346.5997,668.1866,5163.099],[2344.9908,668.1866,5169.6952],[2343.382,668.1866,5176.2914],[2350.2255,668.1866,5179.3358],[2357.0691,668.1866,5182.3802],[2354.3122,668.1866,5187.1752],[2351.5553,668.1866,5191.9701],[2346.2086,668.1866,5192.7228],[2340.8619,668.1866,5193.4754],[2344.8661,668.1866,5194.8792],[2348.8703,668.1866,5196.283],[2352.0839,668.1866,5196.5875],[2350.5955,668.1866,5197.1963],[2350.8999,668.1866,5199.3951],[2352.7942,668.1866,5201.1879],[2351.6949,668.1359,5205.4881],[2354.0797,668.0852,5207.4881],[2352.4729,668.0852,5210.689],[2355.1621,668.1359,5211.4839],[2354.8661,668.1613,5215.6361],[2354.5701,668.1866,5219.7883],[2356.2276,668.1866,5223.3402],[2357.8852,668.1866,5226.892],[2358.6885,668.1866,5223.1879],[2359.4919,668.1866,5219.4839],[2361.7414,668.1866,5222.7313],[2363.9909,668.1866,5225.9786],[2365.2847,668.1866,5221.9279],[2366.5786,668.1866,5217.8771],[2370.2657,668.1866,5216.3888],[2373.9698,668.1866,5222.0886],[2375.0184,668.1866,5217.0886],[2376.067,668.1866,5212.0885],[2380.7689,668.1866,5217.6869],[2384.7605,668.1866,5216.0801],[2388.363,668.212,5212.4754],[2391.9656,668.2374,5208.8708],[2395.2552,668.3389,5211.0801],[2398.5449,668.4403,5213.2894],[2401.6569,668.7448,5210.245],[2406.4772,669.083,5208.0293],[2407.5766,670.2332,5213.9194],[2413.0734,671.1296,5215.0695],[2411.4836,671.7892,5221.7672],[2413.9867,671.7892,5220.4818],[2410.8916,671.7892,5224.7778],[2414.8832,671.7892,5221.0907],[2412.0755,671.7892,5225.9955],[2416.3715,671.7892,5222.207],[2418.7225,671.7892,5227.6531],[2421.0734,671.7892,5233.0992],[2426.824,671.7892,5233.9956],[2432.5745,671.7892,5234.892],[2436.4731,671.7892,5238.2408],[2440.3716,671.7892,5241.5897],[2437.2764,671.7892,5246.0886],[2437.7838,671.7892,5246.596],[2438.4773,671.7892,5247.0019],[2441.9784,671.7892,5242.892],[2442.5703,671.7892,5243.5854],[2439.7627,671.7892,5247.6954],[2442.3674,671.8907,5246.3931],[2445.8008,671.9921,5242.5875],[2448.5069,672.7871,5243.0949],[2450.3335,673.9372,5246.8835],[2456.3378,675.7807,5246.5791],[2457.0312,676.9308,5251.8899],[2458.6042,677.7258,5253.6827],[2459.8219,677.9287,5252.6341],[2464.2194,678.0809,5251.5347],[2461.5133,678.0302,5255.1711],[2464.9974,678.0556,5256.8793],[2468.4816,678.0809,5258.5876],[2474.2321,678.0809,5257.8857],[2479.9827,678.0809,5257.1838],[2481.0313,678.0809,5252.1859],[2482.0799,678.0809,5247.188],[2486.1729,678.0809,5252.6848],[2489.3696,678.0809,5251.484],[2490.6719,678.0809,5247.4332],[2491.9742,678.0809,5243.3825],[2497.5725,678.0809,5242.5875],[2499.5176,678.1063,5246.0886],[2501.4626,678.1317,5249.5897],[2501.8178,678.3854,5256.9132],[2504.0673,678.7406,5256.9132],[2504.4225,679.6877,5258.5876],[2505.9616,680.7363,5260.5834],[2501.7501,682.5292,5264.169],[2502.0546,683.1719,5265.3698],[2503.8474,683.2733,5265.3698],[2503.9489,684.2712,5267.9745],[2501.8685,684.7786,5270.0887],[2503.0017,685.3875,5271.983],[2502.9003,685.7427,5272.9808],[2504.7607,685.8949,5273.1838],[2509.6656,686.1994,5275.687],[2505.9616,686.1994,5276.1944],[2503.4077,686.1994,5280.3974],[2500.8537,686.1994,5284.6003],[2506.4098,686.1994,5288.6003],[2511.9658,686.1994,5292.6003]],"expectedDistance":1704.82,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-201736","objectiveId":"creature-201736","objectiveName":"Devourer of Souls","checkpoints":[[2511.9658,686.1994,5292.6003],[2511.0187,686.1994,5299.3995],[2510.0715,686.1994,5306.1987],[2504.5662,686.1994,5309.4968],[2499.0609,686.1994,5312.7949],[2502.6127,686.1994,5316.2875],[2506.1645,686.1994,5319.7801],[2511.1709,686.1994,5320.2875],[2507.3654,686.1994,5320.8625],[2509.581,685.9964,5321.0655],[2509.4795,685.489,5322.0803],[2511.5599,684.7279,5323.5856],[2514.0462,682.7659,5327.6279],[2513.0483,681.9203,5329.4207],[2514.0462,680.9731,5331.0275],[2513.9108,680.0767,5332.6342],[2512.5578,679.5355,5333.9366],[2514.858,678.5376,5335.2389],[2512.118,678.3854,5335.5772],[2512.5747,678.1317,5342.9852],[2510.9256,678.1317,5346.8837],[2509.2766,678.1317,5350.7823],[2506.9764,678.1317,5343.8816],[2505.674,678.0809,5344.1861],[2501.378,678.0809,5349.6829],[2499.4246,678.1063,5346.1311],[2497.4711,678.1317,5342.5793],[2494.9679,678.2332,5342.2749],[2493.581,678.2332,5346.3002],[2493.2766,678.6898,5340.093],[2491.1793,678.842,5345.8943],[2489.5725,679.637,5342.4778],[2486.8664,679.9752,5348.9895],[2486.1137,680.5503,5345.3362],[2485.3611,681.1253,5341.6829],[2483.5683,681.3283,5345.8774],[2482.7226,681.2776,5349.5307],[2481.877,681.2268,5353.184],[2481.3696,681.8244,5348.2114],[2480.8622,682.422,5343.2389],[2480.3548,683.0196,5338.2664],[2479.1539,683.4763,5337.6744],[2476.3632,684.2712,5339.1797],[2475.3569,684.9731,5335.129],[2474.3505,685.675,5331.0782],[2471.9657,686.3685,5331.0951],[2468.0757,686.3854,5330.4862],[2467.4837,686.4192,5337.2854],[2461.2765,686.47,5341.3615],[2460.8706,686.5038,5348.1607],[2458.4181,686.5545,5347.8393],[2462.1222,686.5038,5349.0571],[2456.7691,686.6814,5348.3045],[2451.416,686.859,5347.5518],[2453.4625,686.859,5348.5666],[2447.9149,687.1888,5348.7188],[2442.3674,687.5186,5348.8711],[2447.3653,687.4171,5350.2241],[2452.3632,687.3156,5351.5772],[2449.6739,688.1275,5355.4842],[2444.5238,688.3304,5355.036],[2439.3737,688.5334,5354.5878],[2441.4879,688.7871,5357.0402],[2440.49,689.1423,5359.5434],[2446.5788,689.2438,5362.1819],[2440.3378,689.9372,5364.2791],[2435.3821,690.1317,5364.3806],[2430.4265,690.3262,5364.4821],[2434.4181,690.7152,5367.7802],[2429.75,690.8167,5368.0846],[2436.0587,690.9689,5370.3849],[2439.6612,691.1211,5372.5836],[2432.5576,691.3748,5373.091],[2436.5576,691.5017,5374.6386],[2440.5576,691.6285,5376.1861],[2440.0671,692.1359,5378.7908],[2435.6189,692.2121,5378.5878],[2431.1707,692.2882,5378.3849],[2431.0692,692.8801,5381.9705],[2435.3737,693.0577,5383.5265],[2439.6781,693.2353,5385.0826],[2434.7733,693.6243,5386.2665],[2439.0777,693.5482,5386.3172],[2443.3822,693.4721,5386.368],[2443.8726,693.8104,5388.0593],[2440.0164,694.1148,5389.2602],[2436.1602,694.4192,5390.461],[2441.86,694.5715,5392.0678],[2438.0122,694.8505,5393.2686],[2434.1644,695.1296,5394.4695],[2438.621,695.1803,5395.0699],[2443.0777,695.2311,5395.6703],[2439.5259,695.6793,5397.9198],[2435.9741,696.1275,5400.1693],[2440.6253,696.2713,5401.2179],[2445.2765,696.415,5402.2665],[2446.5619,696.9562,5405.0741],[2443.7543,697.3114,5406.3765],[2448.2532,697.3622,5406.6809],[2452.7522,697.4129,5406.9853],[2448.7099,697.6666,5408.3828],[2444.6676,697.9203,5409.7803],[2448.879,698.174,5411.5773],[2445.4963,699.0704,5415.0826],[2449.0904,699.5186,5416.182],[2452.6845,699.9668,5417.2814],[2458.1644,700.2713,5417.9748],[2459.5513,701.2692,5420.6809],[2463.5598,701.5229,5421.2898],[2464.1687,701.878,5422.1862],[2460.786,702.7914,5424.6556],[2467.0778,703.7723,5426.9727],[2465.9953,704.7702,5429.7972],[2466.6042,705.7343,5432.8078],[2469.9869,705.988,5433.9917],[2472.6761,705.8865,5433.5858],[2473.5725,706.0895,5434.4822],[2471.8727,706.0895,5438.7359],[2470.1729,706.0895,5442.9897],[2471.5767,706.0895,5445.0869],[2470.5281,706.0641,5449.6366],[2469.4795,706.0387,5454.1863],[2472.9805,706.0387,5456.0806],[2476.1772,706.0641,5453.7804],[2479.3738,706.0895,5451.4802],[2479.822,706.0641,5455.6747],[2480.2702,706.0387,5459.8692],[2484.8706,706.0895,5454.4738],[2485.2765,706.0895,5459.5817],[2483.4837,706.0387,5466.4823],[2485.0736,706.0387,5467.3956],[2483.1624,705.988,5469.6958],[2484.5662,705.988,5476.9855],[2488.5662,705.988,5480.0806],[2492.5662,705.988,5483.1758],[2495.5683,705.988,5487.5733],[2498.5704,705.988,5491.9707],[2494.8749,705.988,5493.8735],[2491.1793,705.988,5495.7762],[2486.3759,705.988,5493.9665],[2488.0672,705.988,5500.1737],[2484.8706,705.988,5497.975],[2486.1729,705.988,5504.7741],[2479.8812,705.988,5504.2667],[2475.2807,705.988,5510.068],[2476.9721,705.988,5516.4824],[2473.86,705.988,5518.2964],[2470.7649,705.988,5516.0934],[2473.2681,705.988,5521.5945],[2466.6718,705.988,5521.3915],[2462.0714,705.988,5527.197],[2464.1687,705.988,5533.2013],[2459.9572,705.988,5536.2964],[2456.7606,705.988,5534.0807],[2458.8579,705.988,5539.882],[2452.5661,705.988,5539.1886],[2447.9657,705.988,5544.9899],[2449.657,705.988,5551.4846],[2445.8684,705.988,5554.2753],[2442.6718,705.988,5552.0766],[2444.2786,705.988,5558.7742],[2437.6654,705.988,5558.4698],[2433.065,705.988,5564.2711],[2435.0777,705.988,5570.3768],[2431.7796,705.988,5572.288],[2428.5661,705.988,5570.0893],[2426.2151,705.988,5573.1421],[2423.8641,705.988,5576.195],[2425.7754,705.988,5582.3853],[2424.5745,705.988,5587.0872],[2418.9762,705.988,5591.5862],[2421.2257,705.988,5595.3832],[2423.4751,705.988,5599.1802],[2427.3229,705.988,5599.138],[2431.1707,705.988,5599.0957],[2430.8663,705.988,5605.6919],[2435.1792,705.988,5602.8843],[2432.9804,705.988,5606.0809],[2437.2764,705.988,5603.2733],[2437.4794,705.988,5610.0767],[2441.2764,705.988,5609.9752],[2445.0735,705.988,5609.8737],[2445.9784,705.988,5613.6306],[2446.8832,705.988,5617.3875],[2452.4815,705.988,5615.1845],[2453.2765,705.988,5616.9773],[2451.0777,705.988,5620.2797],[2454.4604,706.0387,5620.4826],[2454.7648,706.0895,5624.8843],[2453.175,706.1402,5628.9773],[2455.8642,706.3939,5631.379],[2457.7923,706.8844,5631.1253],[2458.4012,707.2227,5632.3431],[2455.7796,706.8844,5634.9985],[2457.9784,707.6793,5636.3008],[2458.0799,707.9838,5638.6856],[2461.175,708.7279,5638.6856],[2466.2744,708.7787,5635.9879],[2471.3738,708.8294,5633.2903],[2476.1772,708.8294,5635.9964],[2480.9805,708.8294,5638.7025],[2487.822,708.8802,5639.5989],[2494.6634,708.9309,5640.4953],[2495.8643,709.007,5645.2903],[2497.0651,709.0831,5650.0852],[2499.4499,709.1846,5648.8844],[2499.4668,709.1846,5650.1021],[2500.6677,709.0831,5649.5102],[2501.2597,708.9816,5650.6941],[2503.0525,708.9816,5650.0852],[2506.0461,708.9816,5651.2861],[2506.0461,708.9816,5654.8886],[2511.4584,708.9816,5656.6983],[2513.8601,708.9816,5661.5017]],"expectedDistance":965.34,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"ba0783885ff729fc18439f5df432cd20769b4c647ba94a9ac4d2a20ef8987885","generationStatus":"Candidate","generationIssues":[]},{"schemaVersion":1,"id":"primary","dungeonId":"trial-of-the-champion","mapId":650,"legs":[{"id":"leg-01-encounter-33400","objectiveId":"encounter-33400","objectiveName":"Mokra the Skullcrusher","checkpoints":[[617.0819,412.4657,806.3868],[619.8788,412.4657,803.2747],[617.0819,412.4657,803.1959],[616.4122,412.4657,802.2899],[611.0153,412.4657,799.4536],[612.1971,412.5051,796.1445],[608.6911,412.5444,792.2446],[604.5154,412.5444,791.6537],[600.3398,412.5444,791.0628],[597.3065,412.5444,789.2507],[590.7278,412.5051,789.2507],[589.5066,412.5444,784.9569],[587.7339,412.5444,783.7751],[585.3309,412.5444,783.1842]],"expectedDistance":50.58,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-encounter-33401","objectiveId":"encounter-33401","objectiveName":"Eressea Dawnsinger","checkpoints":[[585.3309,412.5444,783.1842],[587.7339,412.5444,783.7751],[589.5066,412.5444,784.9569],[594.2732,412.4263,783.1448],[596.6762,412.2687,784.366],[598.4883,412.4263,786.178],[601.5216,412.4263,787.3992],[602.7427,412.5838,788.581],[607.5093,412.4263,788.8765],[612.2759,412.2687,789.1719],[614.6789,412.4263,790.3537],[617.7122,412.2687,790.3537],[620.1152,412.4263,790.984],[622.5182,412.4263,790.3931],[624.2909,412.5838,791.0234],[626.6939,412.4263,789.8022],[631.4999,412.5838,788.6204],[636.9361,412.2687,784.9962],[640.7179,412.4066,785.4493],[644.4996,412.5444,785.9023],[648.695,412.5444,783.4993],[652.8904,412.5444,781.0963],[654.7025,412.5444,778.6933],[655.4904,412.4657,774.1434],[656.2782,412.3869,769.5935],[659.3903,412.5051,769.5935]],"expectedDistance":88.92,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-encounter-33402","objectiveId":"encounter-33402","objectiveName":"Runok Wildmane","checkpoints":[[659.3903,412.5051,769.5935],[656.2782,412.3869,769.5935],[655.7858,412.3278,763.7436],[655.2934,412.2687,757.8937],[653.0874,412.1111,758.0118],[651.9056,412.0323,750.8029],[648.0056,411.9929,750.5074],[644.1057,411.9535,750.212],[640.8164,411.9142,748.3999],[637.527,411.8748,746.5878],[630.3181,411.7172,745.9969],[628.5847,411.7172,739.4182],[624.7636,411.402,736.2273],[620.5879,411.402,735.5971],[616.0971,411.402,736.6213],[610.8184,411.5596,736.2273],[609.0851,411.7172,737.2516],[605.9336,411.796,734.9471],[602.7821,411.8748,732.6426],[597.9959,411.8945,732.8395],[593.2096,411.9142,733.0365],[589.2702,411.9339,731.0274],[585.3309,411.9535,729.0184],[581.7461,412.0323,729.6487],[582.0416,412.2293,725.5518],[582.337,412.4263,721.4549],[581.7461,412.5444,715.8216]],"expectedDistance":118.65,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-04-encounter-338","objectiveId":"encounter-338","objectiveName":"Argent Champion","checkpoints":[[581.7461,412.5444,715.8216],[584.7006,412.5444,710.9762],[586.5127,412.5444,709.7551]],"expectedDistance":7.86,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-05-encounter-340","objectiveId":"encounter-340","objectiveName":"The Black Knight","checkpoints":[[586.5127,412.5444,709.7551],[588.9157,412.5444,708.5733],[591.3975,412.5051,703.8855],[597.3853,412.5444,704.0824],[600.4185,412.5444,702.2703],[604.2988,412.5444,701.6794],[608.179,412.5444,701.0885],[611.8032,412.5444,699.9067],[615.8213,412.5051,696.7947],[619.6819,412.5247,697.6416],[623.5424,412.5444,698.4886],[625.3151,412.5444,699.6704],[632.5241,412.5444,701.4825],[636.9164,412.5247,701.8961],[641.3088,412.5051,702.3097],[642.0966,412.4657,699.1976],[645.6814,412.4657,700.6552],[649.2662,412.4657,702.1128],[643.9875,412.4657,699.3946]],"expectedDistance":77.43,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"d96ab41c433049eb26ca3eeda70abf23d7ddb9acf1604f59abf7d2697c3e4e12","generationStatus":"Candidate","generationIssues":[]},{"schemaVersion":1,"id":"primary","dungeonId":"pit-of-saron","mapId":658,"legs":[{"id":"leg-01-creature-201992","objectiveId":"creature-201992","objectiveName":"Forgemaster Garfrost","checkpoints":[[213.6968,528.9779,437.3774],[211.1846,528.9779,439.4971],[206.2191,529.1938,440.1252],[201.2537,529.4096,440.7532],[197.6228,529.2526,441.8523],[193.9919,529.0956,442.9514],[193.6386,529.0564,443.9327],[188.9871,529.0564,444.9533],[184.3356,529.0564,445.9738],[178.4085,529.0171,448.5645],[179.115,529.0171,455.1983],[175.386,528.9975,458.5936],[171.657,528.9779,461.989],[171.657,529.0171,467.9555],[172.8738,529.0564,469.7611],[171.0682,529.0564,471.5667],[169.2625,528.9779,476.3556],[168.6737,528.9779,482.3613],[165.6905,529.0564,487.7782],[165.1017,529.6059,491.3894],[163.8849,529.3704,493.8231],[162.0793,528.8601,500.8101],[157.9577,528.8797,505.3831],[153.8361,528.8994,509.9561],[152.8941,528.8601,512.2327],[153.6006,528.8601,515.0982],[150.4604,529.0956,516.7468],[150.3034,529.3311,517.9244],[148.7333,529.9199,518.7487],[147.3987,530.391,520.3188],[144.8865,530.548,520.7114],[143.9837,530.2732,522.9488],[142.1388,530.1555,524.3226],[140.8042,530.2732,524.5189],[139.9406,530.0377,527.1096],[138.8023,529.1349,530.2106],[137.8602,527.604,532.8013],[138.2527,527.133,533.4686],[136.5256,523.1292,537.9041],[135.1518,519.3216,544.0668],[134.6415,518.3796,544.7734],[133.8172,516.6525,549.6015],[134.406,516.5739,552.8595],[133.6994,516.2599,552.8595],[133.5816,516.1814,553.5268],[131.3835,514.4935,554.9792],[129.1068,511.9814,559.768],[128.518,511.3141,562.1624],[126.7124,510.9608,562.7905],[126.0843,511.157,565.1457],[124.8675,511,565.7737],[124.8675,510.9215,568.1681],[123.6899,510.4897,568.7962],[123.1011,510.215,569.9738],[123.1011,510.372,571.1906],[120.0394,510.0972,573.585],[119.4506,509.5869,575.9795],[118.273,509.0374,576.5683],[117.6842,508.5664,578.3739],[118.273,508.6449,579.5515],[117.6842,508.0168,582.574],[116.4674,507.8991,583.7908],[115.2505,507.7813,583.83],[114.1122,507.8991,586.617],[112.9346,508.0168,587.2058],[111.8355,507.9776,588.7759],[111.8355,507.9776,590.3853],[109.9906,507.7028,590.9741],[109.3626,507.585,592.7405],[107.557,507.4673,592.7012],[106.4186,507.428,594.0358],[106.4186,507.271,595.8414],[104.0635,507.3103,597.6078],[103.9849,507.3103,599.2957],[102.8859,507.7813,600.1985],[103.9849,508.1738,601.4939],[102.2971,508.3308,602.7892],[101.4728,508.6056,604.9089],[98.9606,508.7626,606.793],[97.9007,510.3327,610.208],[96.9587,510.372,610.7575],[96.3306,510.686,611.9744],[94.8783,510.7253,611.9744],[93.6614,511.0785,612.6024],[91.8558,511.5888,614.9969],[87.3417,512.3346,615.3501],[86.5567,512.4131,618.0586],[85.5753,512.4524,618.9614],[85.8894,512.4524,626.0269],[84.5155,512.6879,633.3672],[84.5155,512.4524,635.1336],[83.0631,512.4131,635.0551],[81.8463,512.6487,634.3485],[81.4145,512.4916,635.2906],[80.865,512.4916,635.3299],[80.6687,512.6487,634.427],[79.6874,512.2954,635.1336],[78.2743,512.2954,634.9373],[74.8593,512.6879,631.5223],[71.6798,512.0206,631.3261],[69.7564,511.8636,630.1877],[68.3041,512.3346,628.6961],[67.833,512.4916,627.2045],[66.6947,512.2954,627.283],[66.5377,512.4916,626.0269],[66.3022,512.2954,627.283],[65.3601,512.6487,625.3989],[63.2012,512.4916,625.6344],[61.2385,512.5309,625.1634],[57.6665,511.3533,627.9896],[55.9001,511.9028,626.7727],[54.8403,512.5701,624.9278],[49.9729,512.4524,625.2026],[42.6719,512.5309,624.5353],[41.2588,512.6487,623.2792],[39.3747,512.6487,622.6512],[37.2158,512.7272,620.4923],[33.0942,512.9234,620.4726],[28.9726,513.1197,620.453],[25.0768,513.4337,624.7316],[23.8894,513.5907,624.1428],[22.1132,513.787,626.655],[19.287,513.8262,627.597],[17.4814,513.5515,629.9915],[15.6757,513.5122,630.5803],[13.5561,513.9047,630.3447],[12.9673,513.787,631.5616],[11.5934,513.6692,632.5036],[10.3766,513.7477,632.5036],[10.1018,513.3552,633.9168],[8.8457,513.473,634.3093],[8.0999,513.0412,636.2719],[6.2943,513.4337,636.9392],[4.8419,512.4916,642.5524],[3.8606,512.2954,643.7692],[3.4681,513.8655,638.4308],[-2.5376,513.9833,638.4308],[-5.3246,513.944,640.158],[-7.719,513.7085,640.786],[-12.5471,513.8655,639.5692],[-15.5303,513.787,641.3748],[-17.1397,513.9047,640.9823],[-18.8276,513.8262,641.7281],[-20.6332,513.8655,641.7281],[-21.4183,513.7477,642.7487],[-21.4183,513.3552,643.9262],[-23.0669,513.473,644.9861],[-23.1062,512.7664,646.3599],[-24.2052,512.2169,647.6553],[-27.9343,512.8842,648.2048],[-27.5025,512.6094,650.1675],[-29.3866,513.1589,651.2665],[-30.4072,512.8449,653.7395],[-34.5287,512.7664,654.0535],[-37.0409,512.7664,656.0554],[-38.5718,512.7272,659.2741],[-41.869,512.7272,661.1975],[-43.3607,512.7664,660.962],[-44.4597,512.8842,662.5714],[-46.1476,512.9234,662.9639],[-46.7364,513.0804,664.1807],[-48.699,513.0412,665.7509],[-54.1945,513.3552,666.1434],[-55.372,513.3552,667.1247],[-59.1403,513.5515,667.949],[-65.0283,513.9047,667.1247],[-67.933,513.8655,668.3416],[-74.8807,513.9047,669.4799],[-76.4901,513.8655,671.8743],[-79.1593,513.9047,673.7585],[-79.1593,513.5122,676.1529],[-81.5537,513.1982,679.7641],[-85.165,513.5907,681.5698],[-87.4417,513.1982,685.8091],[-89.6006,513.5907,686.6334],[-89.0118,513.1982,688.0073],[-91.7987,513.944,687.4577],[-94.5072,513.944,690.2447],[-98.197,513.9636,688.439],[-101.8867,513.9833,686.6334],[-106.5186,514.0225,687.7129],[-111.1504,514.0618,688.7923],[-115.0561,514.101,687.2811],[-118.9618,514.1403,685.7698],[-121.2384,514.3758,689.4204],[-121.945,514.6506,691.8148],[-123.5151,515.2786,688.282],[-124.3394,515.7496,689.3811],[-126.0273,516.4562,694.484],[-126.9301,516.8095,691.0297],[-128.3432,517.4375,696.9569],[-128.932,517.83,703.4729],[-131.3657,519.0076,701.3925],[-131.9545,519.3216,700.2149],[-135.134,520.774,699.9401],[-137.7639,522.0301,701.4318],[-138.1564,522.1086,699.9009],[-140.0798,523.1684,702.3738],[-141.5714,523.9927,695.8578],[-144.5546,525.4059,698.8803],[-145.3005,525.7002,694.7784],[-146.0463,525.9946,690.6765],[-148.1267,526.8975,690.0092],[-148.4211,527.0545,694.4644],[-148.7155,527.2115,698.9196],[-150.1286,527.7218,700.0186],[-150.3052,527.8395,695.2102],[-150.4818,527.9573,690.4017],[-152.052,528.1143,690.2839],[-152.2482,528.1143,695.1513],[-152.4445,528.1143,700.0186],[-153.4258,528.1339,695.1317],[-154.4071,528.1536,690.2447],[-156.0557,528.1928,690.755],[-156.6838,528.1928,694.013],[-157.8418,528.2124,690.1465],[-158.9997,528.2321,686.2801],[-160.7268,527.9965,689.3419],[-161.3156,527.761,687.5362],[-163.7101,527.5255,688.7531],[-165.9475,527.447,686.1231],[-169.912,527.2507,687.497],[-172.3065,527.0545,685.1025],[-177.1934,526.9956,687.9288],[-182.0804,526.9367,690.755],[-185.7309,526.9367,697.0551],[-189.3815,526.9367,703.3551],[-195.0143,526.9956,706.0243],[-200.6471,527.0545,708.6935],[-202.8256,527.0545,705.4748],[-205.0041,527.0545,702.2561],[-208.3063,527.0741,704.0421],[-211.6084,527.0937,705.8281],[-213.7673,527.29,711.6375]],"expectedDistance":750.32,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-202042","objectiveId":"creature-202042","objectiveName":"Krick","checkpoints":[[-213.7673,527.29,711.6375],[-211.6084,527.0937,705.8281],[-208.3063,527.0741,704.0421],[-205.0041,527.0545,702.2561],[-202.8256,527.0545,705.4748],[-200.6471,527.0545,708.6935],[-195.0143,526.9956,706.0243],[-189.3815,526.9367,703.3551],[-185.7309,526.9367,697.0551],[-182.0804,526.9367,690.755],[-177.1934,526.9956,687.9288],[-172.3065,527.0545,685.1025],[-169.912,527.2507,687.497],[-165.9475,527.447,686.1231],[-163.7101,527.5255,688.7531],[-161.3156,527.761,687.5362],[-160.7268,527.9965,689.3419],[-158.9997,528.2321,686.2801],[-157.8418,528.2124,690.1465],[-156.6838,528.1928,694.013],[-156.0557,528.1928,690.755],[-154.4071,528.1536,690.2447],[-153.4258,528.1339,695.1317],[-152.4445,528.1143,700.0186],[-152.2482,528.1143,695.1513],[-152.052,528.1143,690.2839],[-150.4818,527.9573,690.4017],[-150.3052,527.8395,695.2102],[-150.1286,527.7218,700.0186],[-148.7155,527.2115,698.9196],[-148.4211,527.0545,694.4644],[-148.1267,526.8975,690.0092],[-146.0463,525.9946,690.6765],[-145.3005,525.7002,694.7784],[-144.5546,525.4059,698.8803],[-141.5714,523.9927,695.8578],[-140.0798,523.1684,702.3738],[-138.1564,522.1086,699.9009],[-137.7639,522.0301,701.4318],[-135.134,520.774,699.9401],[-131.9545,519.3216,700.2149],[-131.3657,519.0076,701.3925],[-128.932,517.83,703.4729],[-128.3432,517.4375,696.9569],[-126.9301,516.8095,691.0297],[-126.0273,516.4562,694.484],[-125.9291,516.4562,699.057],[-125.831,516.4562,703.6299],[-124.5357,515.9459,701.3532],[-124.4572,515.9066,704.2187],[-123.6328,515.4356,703.2766],[-123.1226,515.1216,704.6505],[-121.7487,514.5328,703.7477],[-120.6889,514.2973,707.1234],[-118.5692,514.1403,707.9477],[-114.7617,514.101,706.2991],[-110.9542,514.0618,704.6505],[-107.0485,514.0029,704.6505],[-103.1428,513.944,704.6505],[-102.9073,513.9833,710.3029],[-99.0016,513.787,710.401],[-95.096,513.5907,710.4992],[-95.253,513.5907,711.7945],[-94.6642,513.5515,712.1871],[-96.5091,513.9047,714.9348],[-94.7427,513.8262,719.9591],[-92.3483,513.4337,721.7648],[-91.7595,513.473,722.9816],[-89.3651,512.9627,723.5704],[-89.3651,512.9234,725.9648],[-87.2454,512.7664,727.1424],[-88.6193,512.7664,731.6172],[-84.9295,512.7272,732.7556],[-83.7126,512.7664,737.3482],[-77.9425,512.5701,740.1351],[-75.4695,512.1776,740.1351],[-74.0564,512.0599,744.0212],[-73.8602,512.2954,749.0063],[-73.1144,512.1776,750.5371],[-71.4265,512.0206,750.1446],[-70.6022,511.6281,747.3577],[-68.2077,511.4711,749.7913],[-67.1087,511.8243,754.0699],[-63.6152,511.3926,754.855],[-61.3777,511.5888,757.8382],[-58.9048,511.1963,757.7597],[-55.4898,510.215,759.369],[-52.7028,509.2337,759.2905],[-50.6224,508.9589,759.9971],[-50.858,508.9981,760.6644],[-49.7196,508.7626,762.5093],[-45.4018,508.5664,761.528],[-43.0859,508.4878,766.3168],[-37.7082,508.3701,765.1785],[-37.1979,508.4093,771.4589],[-38.297,508.4486,776.5618],[-34.8297,508.5925,781.9133],[-31.3623,508.7364,787.2648],[-27.895,508.8804,792.6163],[-27.7772,509.3514,795.2069],[-26.9529,509.0374,793.8331],[-24.7548,509.1551,795.5602],[-23.8127,508.8019,792.6948],[-18.1995,508.6449,792.6163],[-14.1565,508.6449,794.3041],[-10.5452,508.5271,794.2649],[-8.7396,508.4093,793.3228],[-8.3471,508.5271,794.6182],[-6.6592,508.7234,794.8537],[-5.9134,509.1551,796.4238],[-4.147,509.5477,797.2874],[-5.2461,509.8224,799.4855],[-3.5975,509.8617,800.3098],[-2.4787,509.8617,803.9996],[-1.36,509.8617,807.6894],[1.4662,509.8617,806.7866],[3.0755,509.901,808.3959],[7.3541,509.9402,810.7511],[13.0261,509.901,812.3605],[18.6982,509.8617,813.9698],[24.3702,509.8224,815.5792],[17.9622,509.901,817.8951],[23.3644,509.901,817.0904],[28.7666,509.901,816.2858],[33.2414,509.9795,818.6017],[38.3296,509.9991,817.5419],[43.4177,510.0187,816.482],[47.7355,509.9795,816.5998],[51.5234,510.058,817.6596],[55.3113,510.1365,818.7194],[62.5731,510.2935,818.1306],[66.3807,510.372,818.8765],[70.1882,510.4505,819.6223],[71.7583,510.4897,821.6242],[77.5285,510.372,821.6242],[78.9023,510.3327,823.3905],[80.7865,510.2542,823.155],[81.3753,510.1757,822.37],[86.9492,509.8617,821.3494],[91.6203,509.7636,821.7812],[96.2914,509.6654,822.213],[96.9194,509.7439,823.155],[104.0896,509.6654,822.9718],[111.2598,509.5869,822.7887],[118.43,509.5084,822.6055],[122.1983,509.6654,826.6878],[128.5573,509.5869,825.1962],[128.4788,509.5869,829.514],[126.7713,509.6851,834.558],[125.0638,509.7832,839.602],[125.8292,509.901,845.431],[126.5946,510.0187,851.2601]],"expectedDistance":601.65,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-03-encounter-837","objectiveId":"encounter-837","objectiveName":"Overlrod Tyrannus","checkpoints":[[126.5946,510.0187,851.2601],[125.8292,509.901,845.431],[125.0638,509.7832,839.602],[120.8637,509.9402,842.1927],[116.6636,510.0972,844.7834],[112.2673,510.1561,843.2918],[107.871,510.215,841.8002],[103.0429,510.1757,836.501],[96.2521,510.372,838.6599],[95.153,510.4112,840.1908],[95.7811,510.4505,843.174],[93.9755,510.4505,843.2525],[91.9736,510.4505,842.0749],[92.4053,510.4505,844.2731],[91.3063,510.4505,844.9796],[88.8726,510.4897,844.3908],[86.3604,510.529,842.0357],[83.4164,511.1178,843.4095],[82.1996,511.5496,842.7815],[81.8071,511.0393,840.3085],[80.551,511.7851,840.4263],[80.1977,511.3141,839.2487],[79.2164,511.9028,839.7983],[77.7248,510.843,837.5216],[75.7621,510.9608,837.3646],[74.4275,510.686,836.658],[72.1901,510.843,837.4431],[69.3246,512.1384,839.8768],[67.2442,511.7851,840.6226],[65.9096,511.7851,840.4263],[64.3395,512.3346,841.8002],[63.3582,512.5701,841.8002],[63.4367,513.316,842.8207],[62.6909,513.5515,842.546],[61.7096,515.9852,844.5871],[62.2984,516.0244,845.3722],[62.0628,516.2992,845.6862],[63.2797,515.6319,847.06],[63.0049,514.8076,849.6507],[63.5937,515.2393,850.8676],[61.8666,515.6711,851.9667],[61.8666,516.3777,853.1835],[60.689,516.4169,853.7723],[60.689,517.0842,854.9499],[59.4722,516.8487,855.5387],[58.8834,517.0842,856.7163],[59.5114,517.8693,857.9331],[58.9226,518.0263,859.7387],[57.745,517.83,860.3275],[57.745,518.3011,862.1332],[57.117,518.8114,862.722],[57.7058,519.3216,864.2136],[56.5282,520.0282,865.1164],[57.0385,520.2637,866.3332],[55.8609,520.8525,867.0005],[56.4104,521.4413,867.9033],[58.8049,521.6376,868.2566],[58.4908,522.6974,869.4735],[59.0796,525.0526,872.3782],[62.6516,527.133,874.4586],[59.6292,527.8395,877.8049],[61.0423,530.548,882.2503],[60.6105,532.4714,886.3816],[64.0255,534.4733,887.834],[63.2012,534.3948,888.1873],[62.8086,535.1798,889.6789],[59.6292,535.0228,891.4845],[63.8685,537.1817,892.8387],[68.1078,539.3406,894.193],[73.5639,541.2248,894.4285],[74.4668,542.4024,896.0379],[78.6276,543.3837,896.0379],[78.7061,543.9332,897.1369],[79.3734,544.1687,897.3332],[77.45,545.9744,901.5725],[78.1958,546.4062,902.0436],[75.8995,549.2324,907.5193],[73.6032,552.0586,912.9951],[71.6013,555.1792,917.2933],[69.5994,558.2998,921.5915],[69.3246,559.0456,922.2981],[69.9527,559.3989,922.8083],[70.1097,561.3615,925.4775],[69.2461,562.7354,927.1262],[69.5209,564.4625,930.5804],[68.5003,565.0905,931.3655],[68.147,565.9149,933.9169],[66.3414,566.5429,933.5636],[66.0274,566.7784,935.173],[64.2218,567.3672,935.173],[62.6516,567.6027,936.5076],[59.8647,568.3878,935.2123],[59.5899,568.2308,936.9786],[58.6086,568.3093,937.2927],[58.3731,568.1523,938.5095],[54.173,569.3299,934.7805],[50.4047,569.3691,937.8422],[48.6383,569.6046,937.8422],[45.8121,569.7224,940.0796],[43.771,569.8401,943.1021],[39.7672,570.7037,943.1021],[36.784,571.2532,947.4592],[32.2306,572.3523,948.6368],[29.1983,572.9804,946.0461],[27.2063,573.5299,949.4022],[25.2142,574.0795,952.7583],[25.1749,574.0009,949.8928],[23.6048,574.5505,952.1695],[22.0347,574.7468,950.9919],[22.0347,574.5505,949.8143],[19.8758,574.8253,949.7751],[19.287,574.8253,947.3807],[16.2645,574.943,946.7919],[14.4981,575.257,944.3974],[10.8869,575.6103,944.3974],[9.0812,575.5711,945.575],[6.6868,575.7673,945.0647],[5.47,576.3561,943.4161],[3.154,577.0234,942.8273],[2.212,578.0833,940.3544],[0.9166,578.4365,940.6292],[0.9951,578.8683,938.7058],[-0.261,579.3393,938.6665],[-2.7731,580.9095,941.3357],[-6.5022,582.5188,941.2572],[-12.5471,583.7749,941.1394],[-13.3322,584.1282,939.6086],[-15.8444,585.2665,938.902],[-17.65,585.9338,940.3151],[-19.3379,586.7581,940.2366],[-20.5155,587.2292,939.4123],[-20.908,587.2292,936.7824],[-23.1454,587.975,936.4683],[-23.4987,587.7787,932.8571],[-24.7155,588.1712,932.8571],[-25.5791,587.9357,929.0888],[-27.3455,589.0741,932.3075],[-28.2875,589.0348,930.3056],[-28.9941,590.0554,933.8777],[-30.1717,590.0161,932.1505],[-31.153,591.076,935.6048],[-32.1736,591.3115,935.2908],[-32.5269,592.4106,937.7637],[-33.5867,592.7638,938.117],[-34.2147,593.3134,939.1768],[-35.9026,593.4704,939.5693],[-37.1194,594.2162,940.7862],[-39.3569,593.9414,941.3357],[-40.0242,594.1769,942.3955],[-41.7905,593.6667,942.9843],[-43.9494,592.8031,942.6311],[-47.7177,592.5676,945.8498],[-49.5234,592.4498,945.2217],[-55.4113,592.5676,945.3003],[-59.6114,592.6068,944.1227],[-63.5366,592.5872,944.0049],[-67.4619,592.5676,943.8871],[-68.9535,592.6461,945.6928],[-70.8377,592.3321,943.7301],[-71.6227,592.5676,946.0068],[-72.9181,592.3321,945.3788],[-73.3106,592.6068,947.6947],[-75.1948,592.6461,946.6349],[-76.2938,592.8816,946.7526],[-76.6864,593.1564,947.6947],[-78.3742,593.3919,946.7134],[-79.7481,593.7452,947.0274],[-81.4752,594.0199,945.5358],[-83.0061,594.491,945.5358],[-84.7332,594.962,944.5152],[-88.109,595.3545,945.5358],[-90.4249,595.3545,945.418],[-92.7408,595.5508,947.0666],[-94.5464,595.7471,945.889],[-94.5464,595.7471,948.205],[-97.3334,595.5508,945.7713],[-98.9428,595.3545,945.1825],[-97.3727,595.433,947.5377],[-100.4736,595.3938,945.9283],[-99.8456,595.2368,950.5994],[-105.3017,594.962,950.0499],[-103.4176,594.962,953.7396],[-106.0475,595.1583,954.4462],[-109.4233,595.276,952.248],[-112.2495,595.59,953.6611],[-110.6401,595.8648,959.3528],[-114.0159,596.1003,957.6649],[-110.856,596.2966,963.965],[-107.6962,596.4929,970.2651],[-109.3055,596.9246,971.796],[-112.4458,597.8275,973.4053],[-111.9355,598.0237,975.1717],[-115.9393,599.2798,976.3886],[-120.0608,600.5752,976.1923],[-120.4926,601.478,977.9979],[-121.7095,602.7733,979.1755],[-123.5151,603.7154,979.1755],[-122.416,605.05,982.0802],[-125.9095,605.7173,980.8634],[-126.5376,606.4631,982.041],[-123.731,606.7575,984.6513],[-120.9244,607.0519,987.2616],[-123.5543,608.465,988.6747],[-124.1431,609.5641,990.5589],[-127.1656,610.4276,990.5589],[-127.4404,610.7417,991.0691],[-126.5376,611.5267,993.071],[-126.5376,613.9997,997.1533],[-130.1096,616.8651,1000.6469],[-131.6012,618.1212,1002.8058],[-130.4629,618.6708,1004.1011],[-128.461,618.8278,1004.4544],[-128.5395,619.2203,1005.1609],[-130.1096,619.3773,1005.4357],[-129.1675,619.9269,1006.6525],[-131.4834,620.2409,1007.0843],[-130.4236,621.2222,1009.7143],[-127.0282,621.8699,1011.9321],[-123.6328,622.5175,1014.1499],[-124.0646,623.8521,1018.7621],[-124.4964,625.1867,1023.3743],[-121.1992,625.1867,1023.4528],[-120.5711,626.2073,1027.4566],[-117.0384,626.2466,1027.7314],[-113.5841,627.2279,1031.5781],[-114.3299,628.0522,1035.0324],[-111.4252,628.3662,1036.053],[-111.9355,628.8373,1038.3296],[-108.9915,629.0335,1038.2511],[-109.07,629.8186,1042.4512],[-106.1653,630.3681,1043.9821],[-105.5765,630.9177,1046.9653],[-106.1653,631.1139,1048.8494],[-103.8886,631.7027,1050.1448],[-103.8886,631.7812,1052.3822],[-103.2213,632.056,1054.1878],[-101.4157,632.4093,1055.3654],[-100.7484,632.6055,1058.3486],[-99.5316,632.7626,1060.115],[-100.1204,632.6055,1061.3318],[-99.4923,632.5663,1062.5487],[-100.3166,632.4878,1063.6085],[-99.139,632.5663,1064.1973],[-98.1577,632.4878,1065.6104],[-94.3502,632.684,1065.7674],[-90.7389,632.8411,1068.0833]],"expectedDistance":700.65,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"969d6a528d2b44effbbf5fabad2b36811f90be61203eefd08f6357517b5578f6","generationStatus":"Candidate","generationIssues":[]},{"schemaVersion":1,"id":"primary","dungeonId":"halls-of-reflection","mapId":668,"legs":[{"id":"leg-01-creature-1971983","objectiveId":"creature-1971983","objectiveName":"Falric","checkpoints":[[1934.4212,707.8152,5235.956],[1933.1403,707.8152,5239.8056],[1931.8594,707.8152,5243.6551],[1933.8655,707.8152,5245.4444],[1939.0841,707.8152,5240.2936],[1938.2437,707.8152,5244.36],[1937.4033,707.8152,5248.4264],[1938.8265,707.8152,5249.7277],[1944.0316,707.8152,5245.0106],[1946.3359,707.8152,5248.1011],[1948.6402,707.8152,5251.1916],[1948.4505,707.8152,5255.1496],[1948.2607,707.8152,5259.1076],[1953.9537,707.8152,5262.5234],[1957.8575,707.8152,5259.9209],[1956.0683,707.8152,5264.0958],[1959.2672,707.8152,5261.6017],[1961.0564,707.8152,5263.3909],[1958.3455,707.8152,5266.8067],[1962.6017,707.8152,5267.0236],[1966.8579,707.8152,5267.2405],[1963.5505,707.8152,5269.5177],[1965.1771,707.8152,5270.9274],[1968.5929,707.8152,5276.4577],[1975.8583,707.8152,5275.3191],[1974.3943,707.8152,5278.8705],[1972.9304,707.8152,5282.4219],[1979.3825,707.8152,5278.6265],[1977.8373,707.8152,5282.3948],[1976.292,707.8152,5286.163],[1976.4004,707.8152,5287.3558],[1979.4096,707.8152,5284.4551],[1982.4188,707.8152,5281.5544],[1982.4007,707.8152,5287.5185],[1982.3826,707.8152,5293.4826],[1982.3646,707.8152,5299.4467],[1985.8617,707.8152,5296.0309],[1989.3588,707.8152,5292.6151],[1989.6841,707.8152,5299.8081],[1990.0095,707.8152,5307.0012],[1990.3348,707.8152,5314.1943],[1993.1,707.8695,5309.3688],[1993.2988,707.9056,5304.1095],[1993.4976,707.9418,5298.8503],[1993.6964,707.9779,5293.591],[1994.347,707.8152,5291.8018],[1997.8712,707.8152,5288.8197],[2000.8533,707.8152,5285.1599],[2003.8354,707.8152,5281.5001],[2006.8445,707.8152,5285.2684],[2009.8537,707.8152,5289.0366],[2013.1611,707.8152,5286.9221],[2016.4684,707.8152,5284.8075],[2020.0469,707.8152,5279.3856],[2021.8903,707.8152,5282.4761],[2023.0832,708.4117,5281.2833],[2024.8724,708.6828,5283.0725],[2031.0534,709.5503,5285.0786]],"expectedDistance":264.34,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]},{"id":"leg-02-creature-1971984","objectiveId":"creature-1971984","objectiveName":"Marwyn","checkpoints":[[2031.0534,709.5503,5285.0786],[2026.7159,709.2792,5283.6689],[2027.9087,708.9538,5286.0545],[2029.1557,709.2249,5286.651],[2028.5051,708.6285,5287.8438],[2029.7521,708.4659,5289.0908],[2030.3485,707.9237,5290.9343],[2025.523,707.8152,5294.5127],[2023.7338,707.8152,5301.7239],[2019.5047,707.8695,5307.0916],[2020.1011,707.8152,5311.2665],[2018.3119,708.4117,5311.8629],[2017.7155,708.6285,5313.1099],[2017.7155,708.0321,5315.5498],[2015.9262,708.4117,5317.3932],[2013.5406,707.8695,5320.9717],[2008.1729,707.9779,5322.7609],[2005.7601,707.8966,5326.5834],[2003.3474,707.8152,5330.4058],[2000.3382,707.8152,5333.1981],[1997.3291,707.8152,5335.9904],[1995.2145,707.9237,5339.5418],[1993.1,708.0321,5343.0931],[1991.1481,708.6285,5342.0087],[1990.1721,708.8454,5340.2737],[1988.5998,709.3876,5339.4604],[1985.6177,709.5503,5336.4784],[1980.9006,709.5503,5333.7132]],"expectedDistance":98.28,"corridorPlanarDistance":10,"corridorVerticalDistance":4,"actions":[]}],"hash":"4637dbf9bd51484ce03f94d70aef739569d6401ccc3e3580c5d435741f8fd11b","generationStatus":"Candidate","generationIssues":[]}]} diff --git a/src/game/inputManager.test.ts b/src/game/inputManager.test.ts index c8a98ef6..8f60111c 100644 --- a/src/game/inputManager.test.ts +++ b/src/game/inputManager.test.ts @@ -12,6 +12,7 @@ import { MAX_MOUSE_DELTA_PER_FRAME, POINTER_LOCK_MOUSE_GRACE_MS, beginMouseLookDrag, + clearBrowserSelection, clearJumpRequest, consumeJumpRequest, consumeMouseLook, @@ -31,9 +32,10 @@ import { import { normalizeInputPreferences, replaceInputBinding } from "../input/keybinds"; import { setCapturingInput } from "../input/keybindRuntime"; -function stubInputEventTargets(): void { +function stubInputEventTargets(selection: Pick | null = null): void { const windowTarget = new EventTarget(); const documentTarget = new EventTarget(); + Object.defineProperty(windowTarget, "getSelection", { configurable: true, value: () => selection }); Object.defineProperty(documentTarget, "pointerLockElement", { configurable: true, value: null }); vi.stubGlobal("window", windowTarget); vi.stubGlobal("document", documentTarget); @@ -362,15 +364,19 @@ describe("gameplay input bindings", () => { }); it("turns the camera from a right-mouse drag without pointer lock", () => { - stubInputEventTargets(); + const selection = { removeAllRanges: vi.fn() }; + stubInputEventTargets(selection); const nextActions = inputActionSpies(); const dispose = installInput(nextActions); beginMouseLookDrag(100, 80); - const move = new Event("mousemove") as MouseEvent; + expect(selection.removeAllRanges).toHaveBeenCalledOnce(); + + const move = new Event("pointermove") as PointerEvent; Object.defineProperties(move, { clientX: { value: 114 }, clientY: { value: 73 }, + pointerType: { value: "mouse" }, movementX: { value: 9_999 }, movementY: { value: 9_999 }, }); @@ -387,6 +393,33 @@ describe("gameplay input bindings", () => { dispose(); }); + it("prevents page selection only while right-mouse camera drag is active", () => { + stubInputEventTargets(); + const dispose = installInput(inputActionSpies()); + + const idleSelection = new Event("selectstart", { cancelable: true }); + document.dispatchEvent(idleSelection); + expect(idleSelection.defaultPrevented).toBe(false); + + beginMouseLookDrag(20, 30); + const cameraSelection = new Event("selectstart", { cancelable: true }); + document.dispatchEvent(cameraSelection); + expect(cameraSelection.defaultPrevented).toBe(true); + + endMouseLookDrag(); + const releasedSelection = new Event("selectstart", { cancelable: true }); + document.dispatchEvent(releasedSelection); + expect(releasedSelection.defaultPrevented).toBe(false); + dispose(); + }); + + it("can clear an existing browser selection without a camera drag", () => { + const selection = { removeAllRanges: vi.fn() }; + stubInputEventTargets(selection); + clearBrowserSelection(); + expect(selection.removeAllRanges).toHaveBeenCalledOnce(); + }); + it("contains malformed and stale pointer-lock movement", () => { expect(sanitizeMouseDelta(Number.NaN)).toBe(0); expect(sanitizeMouseDelta(Number.POSITIVE_INFINITY)).toBe(0); diff --git a/src/game/inputManager.ts b/src/game/inputManager.ts index d54e1337..b1dd9973 100644 --- a/src/game/inputManager.ts +++ b/src/game/inputManager.ts @@ -131,11 +131,18 @@ const mouseLookBuffer = createMouseLookBuffer(); let mouseLookDragActive = false; let previousMousePosition: { x: number; y: number } | null = null; +/** Clears browser text selection before gameplay takes ownership of a mouse drag. */ +export function clearBrowserSelection(): void { + if (typeof window === "undefined") return; + window.getSelection?.()?.removeAllRanges(); +} + /** * Starts popup-free desktop camera look. Unlike Pointer Lock, this retains the * normal browser cursor and only consumes movement while right mouse is held. */ export function beginMouseLookDrag(clientX: number, clientY: number): void { + clearBrowserSelection(); mouseLookDragActive = true; previousMousePosition = Number.isFinite(clientX) && Number.isFinite(clientY) ? { x: clientX, y: clientY } @@ -317,20 +324,20 @@ export function installInput(nextActions: InputActions): () => void { } publishActionLayer(); }; + const onPointerMove = (event: PointerEvent) => { + if (!mouseLookDragActive || event.pointerType !== "mouse") return; + const current = Number.isFinite(event.clientX) && Number.isFinite(event.clientY) + ? { x: event.clientX, y: event.clientY } + : null; + if (!current) return; + const previous = previousMousePosition; + previousMousePosition = current; + if ( + previous + && mouseLookBuffer.push(current.x - previous.x, current.y - previous.y) + ) actions?.setInputMode("keyboard"); + }; const onMouseMove = (event: MouseEvent) => { - if (mouseLookDragActive) { - const current = Number.isFinite(event.clientX) && Number.isFinite(event.clientY) - ? { x: event.clientX, y: event.clientY } - : null; - if (!current) return; - const previous = previousMousePosition; - previousMousePosition = current; - if ( - previous - && mouseLookBuffer.push(current.x - previous.x, current.y - previous.y) - ) actions?.setInputMode("keyboard"); - return; - } if ( document.pointerLockElement && mouseLookBuffer.push(event.movementX, event.movementY) @@ -341,6 +348,9 @@ export function installInput(nextActions: InputActions): () => void { mouseLookBuffer.reset(locked ? POINTER_LOCK_MOUSE_GRACE_MS : 0); nextActions.setCameraLookActive(locked || mouseLookDragActive); }; + const onSelectStart = (event: Event) => { + if (mouseLookDragActive) event.preventDefault(); + }; const clear = () => { keys.clear(); keyboardModifiers.clear(); @@ -355,15 +365,19 @@ export function installInput(nextActions: InputActions): () => void { window.addEventListener("keydown", onKeyDown); window.addEventListener("keyup", onKeyUp); window.addEventListener("blur", clear); + document.addEventListener("pointermove", onPointerMove); document.addEventListener("mousemove", onMouseMove); document.addEventListener("pointerlockchange", onPointerLockChange); + document.addEventListener("selectstart", onSelectStart); return () => { window.removeEventListener("keydown", onKeyDown); window.removeEventListener("keyup", onKeyUp); window.removeEventListener("blur", clear); + document.removeEventListener("pointermove", onPointerMove); document.removeEventListener("mousemove", onMouseMove); document.removeEventListener("pointerlockchange", onPointerLockChange); + document.removeEventListener("selectstart", onSelectStart); unsubscribeController(); clear(); actions = null; diff --git a/src/game/partyRuntime.ts b/src/game/partyRuntime.ts index a2de4ee1..d24cc22a 100644 --- a/src/game/partyRuntime.ts +++ b/src/game/partyRuntime.ts @@ -64,6 +64,7 @@ import { isPositionInFacingArc, isSourceBehindTarget, } from "./combatSpatial"; +import { useDungeonSimulationStore } from "./dungeonSimulationStore"; const OUT_OF_COMBAT_REGEN_FRACTION = 0.06; const ATTACK_ACQUISITION_RANGE = 30; @@ -128,6 +129,16 @@ export function activePartyBossObjectives(): readonly PartyBossObjective[] { }] : []; } const game = useGameStore.getState(); + const simulation = useDungeonSimulationStore.getState(); + if ( + simulation.sessionMode === "spectate-live" + && simulation.mode === "navigation-only" + && simulation.objectiveId + ) { + const objective = requireDungeonDefinition(game.activeDungeonId).objectiveOrder + .find((candidate) => candidate.id === simulation.objectiveId); + return objective ? [objective] : []; + } const completed = new Set(activeDungeonCompletedObjectiveIds(game.activeDungeonId)); const mobs = useCombatStore.getState().mobs; const objectives = requireDungeonDefinition(game.activeDungeonId).objectiveOrder @@ -143,6 +154,10 @@ export function activePartyBossObjectives(): readonly PartyBossObjective[] { )); } +function simulatedPartyExcludesPlayer(): boolean { + return useDungeonSimulationStore.getState().sessionMode !== "play"; +} + export function resetPartyRuntimeClock(): void { lastAdvanceAt = 0; nextRegenAt = 0; @@ -799,7 +814,10 @@ function partyHealingTargets( ): readonly string[] { const combat = useCombatStore.getState(); const targeting = targetingRulesForAbility(ability); - const living = [PLAYER_AGGRO_ID, ...members.map((member) => member.id)].filter((id) => combat.actors[id]?.alive); + const living = [ + ...(simulatedPartyExcludesPlayer() ? [] : [PLAYER_AGGRO_ID]), + ...members.map((member) => member.id), + ].filter((id) => combat.actors[id]?.alive); const healthFraction = (id: string) => { const actor = combat.actors[id]; return actor ? actor.health / Math.max(1, actor.maxHealth) : 1; @@ -850,7 +868,7 @@ function choosePartySupportIntent( ): PartySupportIntent | null { const combat = useCombatStore.getState(); const fallenTargetId = [ - ...(combat.health <= 0 ? [PLAYER_AGGRO_ID] : []), + ...(!simulatedPartyExcludesPlayer() && combat.health <= 0 ? [PLAYER_AGGRO_ID] : []), ...members .filter((candidate) => candidate.health <= 0) .sort((left, right) => ( @@ -866,7 +884,7 @@ function choosePartySupportIntent( } if (member.role !== "healer") return null; const dispelTargetId = [ - ...(combat.health > 0 ? [PLAYER_AGGRO_ID] : []), + ...(!simulatedPartyExcludesPlayer() && combat.health > 0 ? [PLAYER_AGGRO_ID] : []), ...members.filter((candidate) => candidate.health > 0).map((candidate) => candidate.id), ].find((id) => combat.auras.some((aura) => ( aura.targetId === id @@ -880,7 +898,7 @@ function choosePartySupportIntent( } } const injured = [ - ...(combat.health > 0 && combat.health < combat.maxHealth + ...(!simulatedPartyExcludesPlayer() && combat.health > 0 && combat.health < combat.maxHealth ? [{ id: PLAYER_AGGRO_ID, health: combat.health, maxHealth: combat.maxHealth, role: "healer" as const }] : []), ...members.filter((candidate) => candidate.health > 0 && candidate.health < candidate.maxHealth), @@ -1024,7 +1042,10 @@ function executePartyAbility( } } else if (effect.kind === "apply-aura") { const recipients = effect.scope === "party" - ? [PLAYER_AGGRO_ID, ...members.filter((candidate) => candidate.health > 0).map((candidate) => candidate.id)] + ? [ + ...(simulatedPartyExcludesPlayer() ? [] : [PLAYER_AGGRO_ID]), + ...members.filter((candidate) => candidate.health > 0).map((candidate) => candidate.id), + ] : effect.recipient === "caster" ? [member.id] : combat.mobs[targetId] ? hostileTargets : friendlyTargets; @@ -1036,7 +1057,7 @@ function executePartyAbility( } } else if (effect.kind === "dispel") { const recipients = effect.scope === "party" - ? [PLAYER_AGGRO_ID, ...members.map((candidate) => candidate.id)] + ? [...(simulatedPartyExcludesPlayer() ? [] : [PLAYER_AGGRO_ID]), ...members.map((candidate) => candidate.id)] : [targetId]; for (const recipientId of recipients) { effectiveAmount += useCombatStore.getState().dispelActor(recipientId, effect.categories, effect.maxCount); @@ -1134,6 +1155,24 @@ export function advanceDungeonPartyCombat(now = Date.now()): void { const authoritativeMembers: readonly PartyMember[] = party.members.map((member) => ( memberFromCompanionActor(member, combat.actors[member.id]) )); + const simulation = useDungeonSimulationStore.getState(); + if (simulation.sessionMode === "spectate-live" && simulation.mode === "navigation-only") { + const members = authoritativeMembers.map((member) => ({ + ...member, + status: member.health > 0 ? "advancing" as const : "down" as const, + activeCast: null, + activeCastTargetId: null, + nextActionAt: 0, + })); + party.commitRuntime({ + members, + activeMobId: null, + objectiveBossId: simulation.objectiveId, + memberTargetIds: {}, + }); + useCombatStore.getState().commitCompanionActors(members); + return; + } let members: readonly PartyMember[] = authoritativeMembers; const partyOrigin = partyRuntimeCenter( members.filter((member) => !partyRuntimeIsRejoining(member.id)).map((member) => member.id), diff --git a/src/game/partyStore.ts b/src/game/partyStore.ts index f808a6f8..ac2b4bdd 100644 --- a/src/game/partyStore.ts +++ b/src/game/partyStore.ts @@ -89,6 +89,17 @@ interface PartyTemplate { readonly talentTreeId: string; } +export interface ConfiguredPartyMemberSeed { + readonly name: string; + readonly classId: ClassId; + readonly secondaryClassId?: ClassId | null; + readonly specialization: string; + readonly specializationId?: string | null; + readonly talentTreeId?: string; + readonly talentRanks?: TalentRanks; + readonly role: PartyRole; +} + const TANK_TEMPLATES: readonly PartyTemplate[] = Object.freeze([ { name: "Garrick", classId: "warrior", specialization: "Protection", talentTreeId: "warrior-protection" }, { name: "Morvane", classId: "death-knight", specialization: "Blood", talentTreeId: "death-knight-blood" }, @@ -241,6 +252,7 @@ function createMember( level: number, index: number, seed: string, + configuredTalentRanks?: TalentRanks, ): PartyMember { // Appearance has its own keyed stream so adding customization fields later // cannot reshuffle which class/spec templates make up this character's party. @@ -282,9 +294,9 @@ function createMember( specialization: template.specialization, specializationId, talentTreeId: template.talentTreeId, - talentRanks: isRomClassId(template.classId) + talentRanks: configuredTalentRanks ?? (isRomClassId(template.classId) ? Object.freeze({}) - : runtimePartyTalentRanksForLevel(template.classId, template.specialization, level), + : runtimePartyTalentRanksForLevel(template.classId, template.specialization, level)), role, level: Math.max(1, Math.trunc(level)), health: maxHealth, @@ -310,6 +322,27 @@ function createMember( }; } +/** Creates one exact companion while retaining the live party stat/equipment path. */ +export function createConfiguredPartyMember( + configuration: ConfiguredPartyMemberSeed, + level: number, + index: number, + seed: string, +): PartyMember { + const member = createMember({ + name: configuration.name, + classId: configuration.classId, + specialization: configuration.specialization, + talentTreeId: configuration.talentTreeId ?? configuration.specializationId ?? "", + }, configuration.role, level, index, seed, configuration.talentRanks); + return Object.freeze({ + ...member, + secondaryClassId: configuration.secondaryClassId ?? null, + specializationId: configuration.specializationId ?? member.specializationId, + talentRanks: configuration.talentRanks ?? member.talentRanks, + }); +} + /** * Builds the four AI slots around the player's selected role. The resulting * group is always a classic five-player composition including the player. @@ -352,6 +385,29 @@ export function createDungeonParty( ].slice(0, Math.max(0, partySize - 1)); } +/** Builds a complete deterministic NPC group for GM spectator simulations. */ +export function createSpectatorDungeonParty( + seed: string, + level: number, + categoryId: ContentCategoryId = "wow", +): readonly PartyMember[] { + const random = { value: hashSeed(seed || "healer-man-spectator") }; + const tankTemplates = categoryId === "rom" ? ROM_TANK_TEMPLATES : TANK_TEMPLATES; + const healerTemplates = categoryId === "rom" ? ROM_HEALER_TEMPLATES : HEALER_TEMPLATES; + const damagePool = [...(categoryId === "rom" ? ROM_DAMAGE_TEMPLATES : DAMAGE_TEMPLATES)]; + for (let index = damagePool.length - 1; index > 0; index -= 1) { + const swapIndex = Math.floor(nextRandom(random) * (index + 1)); + [damagePool[index], damagePool[swapIndex]] = [damagePool[swapIndex], damagePool[index]]; + } + const tank = tankTemplates[Math.floor(nextRandom(random) * tankTemplates.length)] ?? tankTemplates[0]; + const healer = healerTemplates[Math.floor(nextRandom(random) * healerTemplates.length)] ?? healerTemplates[0]; + return [ + createMember(tank, "tank", level, 0, seed), + createMember(healer, "healer", level, 1, seed), + ...damagePool.slice(0, 3).map((template, index) => createMember(template, "damage", level, index + 2, seed)), + ]; +} + export interface PartyRuntimeCommit { readonly members: readonly PartyMember[]; readonly activeMobId: string | null; @@ -361,6 +417,7 @@ export interface PartyRuntimeCommit { export interface PartyState { seed: string | null; + spectatorParty: boolean; playerRole: PartyRole; partySize: PartySize; categoryId: ContentCategoryId; @@ -381,6 +438,7 @@ export interface PartyState { partySize?: PartySize, categoryId?: ContentCategoryId, ) => void; + initializeSpectatorParty: (seed: string, level: number, categoryId?: ContentCategoryId) => void; resetCombat: (level: number, playerHealth: number) => void; syncLevel: (level: number) => void; syncEquipment: (equipment: EquipmentAssignments, inventory: readonly InventoryItem[]) => void; @@ -424,6 +482,7 @@ export interface PartyState { export const usePartyStore = create((set, get) => ({ seed: null, + spectatorParty: false, playerRole: "healer", partySize: 5, categoryId: "wow", @@ -439,6 +498,7 @@ export const usePartyStore = create((set, get) => ({ initializeParty: (seed, level, playerHealth, playerRole = "healer", partySize = 5, categoryId = "wow") => set({ seed, + spectatorParty: false, playerRole, partySize, categoryId, @@ -452,10 +512,28 @@ export const usePartyStore = create((set, get) => ({ memberTargetIds: {}, }), + initializeSpectatorParty: (seed, level, categoryId = "wow") => set({ + seed, + spectatorParty: true, + playerRole: "healer", + partySize: 5, + categoryId, + members: createSpectatorDungeonParty(seed, level, categoryId), + command: "attack", + selectedMemberId: null, + selfSelected: false, + routeBlocked: false, + activeMobId: null, + objectiveBossId: null, + memberTargetIds: {}, + }), + resetCombat: (level, playerHealth) => set((state) => { return { - members: createDungeonParty(state.seed ?? "healer-man", level, state.playerRole, state.partySize, state.categoryId), - command: "defend", + members: state.spectatorParty + ? createSpectatorDungeonParty(state.seed ?? "healer-man-spectator", level, state.categoryId) + : createDungeonParty(state.seed ?? "healer-man", level, state.playerRole, state.partySize, state.categoryId), + command: state.spectatorParty ? "attack" : "defend", selectedMemberId: null, selfSelected: false, routeBlocked: false, diff --git a/src/game/wowWrathEncounterBatchTwoCatalog.test.ts b/src/game/wowWrathEncounterBatchTwoCatalog.test.ts index f98e049d..c3573fe2 100644 --- a/src/game/wowWrathEncounterBatchTwoCatalog.test.ts +++ b/src/game/wowWrathEncounterBatchTwoCatalog.test.ts @@ -525,6 +525,32 @@ describe("source-reviewed Wrath encounter batch two", () => { ])); }); + it("keeps Eck's source cadence without turning setup and Berserk spells into repeat damage", () => { + const gundrak = adaptedDefinition("gundrak"); + const eck = Object.values(gundrak.entities).find((entity) => entity.combat?.serverEntry === 29_932); + expect(eck?.name).toBe("Eck the Ferocious"); + expect(eck?.visual.model).toMatchObject({ groundOffset: 0, labelHeight: 7 }); + const attacks = new Map(eck?.combat?.attacks.map((attack) => [attack.spellId ?? 0, attack])); + expect(attacks.get(55_813)).toMatchObject({ + name: "Eck Bite", target: "primary", initialCooldownMs: [5_000, 5_000], + repeatCooldownMs: [8_000, 12_000], damageMultiplier: 1.35, + }); + expect(attacks.get(55_814)).toMatchObject({ + name: "Eck Spit", target: "primary", initialCooldownMs: [10_000, 37_000], + repeatCooldownMs: [8_000, 12_000], damageMultiplier: 1.35, + }); + expect(attacks.get(55_815)).toMatchObject({ + name: "Eck Spring", target: "random-party", initialCooldownMs: [10_000, 24_000], + repeatCooldownMs: [10_000, 24_000], damageMultiplier: 1.35, + telegraph: { shape: "circle", anchor: "target", warningMs: 750 }, + }); + expect(attacks.get(55_837)).toMatchObject({ target: "self", maximumCasts: 1, damageMultiplier: 0 }); + expect(attacks.get(55_816)).toMatchObject({ + target: "self", initialCooldownMs: [90_000, 90_000], maximumCasts: 1, + damageMultiplier: 0, effect: { kind: "aura", aura: "enrage" }, + }); + }); + it("runs every required lifecycle through its reviewed gates and completes without renderer state", () => { const halls = adaptedDefinition("halls-of-stone"); const hallsRun = finishEncounter(halls, adaptedEncounter(halls)); diff --git a/src/game/wowWrathEncounterBatchTwoCatalog.ts b/src/game/wowWrathEncounterBatchTwoCatalog.ts index 814e8bb4..f3d7ef5e 100644 --- a/src/game/wowWrathEncounterBatchTwoCatalog.ts +++ b/src/game/wowWrathEncounterBatchTwoCatalog.ts @@ -20,6 +20,7 @@ import type { PopulationEntityDefinition, StaticMobSpawnDefinition, } from "./mobPopulation"; +import type { EnemyAttackDefinition } from "./enemyAttacks"; export interface WowWrathEncounterBatchTwoSourceFile { readonly path: string; @@ -71,6 +72,43 @@ const UTGARDE_PINNACLE_FILES = Object.freeze([ const GUNDRAK_FILES = Object.freeze([ `${SOURCE_ROOT}/Northrend/Gundrak/instance_gundrak.cpp`, `${SOURCE_ROOT}/Northrend/Gundrak/gundrak.h`, + `${SOURCE_ROOT}/Northrend/Gundrak/boss_eck.cpp`, +]); + +const ECK_ATTACKS: readonly EnemyAttackDefinition[] = Object.freeze([ + Object.freeze({ + id: "basic-attack", name: "Basic Attack", delivery: "melee", target: "primary", + school: "physical", animation: "attack", range: 4.5, cooldownMs: 2_000, + initialCooldownMs: [450, 450] as const, repeatCooldownMs: [2_000, 2_000] as const, damageMultiplier: 1, + }), + Object.freeze({ + id: "spell-55837", name: "Eck Spring Init", spellId: 55_837, delivery: "area", target: "self", + school: "physical", animation: "cast", castTimeMs: 0, range: 0, cooldownMs: 1, + initialCooldownMs: [450, 450] as const, repeatCooldownMs: [1, 1] as const, maximumCasts: 1, damageMultiplier: 0, + effect: { kind: "aura", aura: "eck-spring-init", durationMs: 1_000 } as const, + }), + Object.freeze({ + id: "spell-55813", name: "Eck Bite", spellId: 55_813, delivery: "melee", target: "primary", + school: "physical", animation: "attack", range: 5.5, cooldownMs: 10_000, + initialCooldownMs: [5_000, 5_000] as const, repeatCooldownMs: [8_000, 12_000] as const, damageMultiplier: 1.35, + }), + Object.freeze({ + id: "spell-55814", name: "Eck Spit", spellId: 55_814, delivery: "projectile", target: "primary", + school: "nature", animation: "cast", castTimeMs: 0, range: 28, cooldownMs: 10_000, + initialCooldownMs: [10_000, 37_000] as const, repeatCooldownMs: [8_000, 12_000] as const, damageMultiplier: 1.35, + }), + Object.freeze({ + id: "spell-55815", name: "Eck Spring", spellId: 55_815, delivery: "projectile", target: "random-party", + school: "physical", animation: "cast", castTimeMs: 750, range: 30, cooldownMs: 17_000, + initialCooldownMs: [10_000, 24_000] as const, repeatCooldownMs: [10_000, 24_000] as const, damageMultiplier: 1.35, + telegraph: { shape: "circle", anchor: "target", warningMs: 750, radius: 3 } as const, + }), + Object.freeze({ + id: "spell-55816", name: "Eck Berserk", spellId: 55_816, delivery: "area", target: "self", + school: "physical", animation: "cast", castTimeMs: 0, range: 0, cooldownMs: 90_000, + initialCooldownMs: [90_000, 90_000] as const, repeatCooldownMs: [90_000, 90_000] as const, maximumCasts: 1, + damageMultiplier: 0, effect: { kind: "aura", aura: "enrage", durationMs: 0, magnitude: 1 } as const, + }), ]); export const WOW_WRATH_ENCOUNTER_BATCH_TWO_REVIEWS: readonly WowWrathEncounterBatchTwoReview[] = Object.freeze([ @@ -239,11 +277,20 @@ export const WOW_WRATH_ENCOUNTER_BATCH_TWO_REVIEWS: readonly WowWrathEncounterBa sha256: "ec0477724b5343879ecfd713060c408796373d3f6fbeaf16dcef84f1393c6356", anchors: ["boss, altar, statue, bridge, collision, Eck, and Gal'darah door ids (lines 27-73)"], }, + { + path: GUNDRAK_FILES[2], + sha256: "ef6f4736b921c5f654260cb0c61f2590e77270c8e5a4c4f0935db4c5f0478e07", + anchors: [ + "Eck Spring initialization and threat handoff (lines 51-72)", + "Bite, Spit, Spring, and 90-second Berserk schedules (lines 75-90)", + ], + }, ], reviewedBehavior: "Slad'ran, Moorabi, and the Drakkari Colossus independently enable their exact altars; using all three rotates the exact statues and bridge collision after five seconds, exposing Gal'darah; Moorabi releases the heroic Eck route.", adaptations: [ "The bridge and statues change discrete procedural states without native rotation animation; the source five-second delay is retained.", "The optional Eck actor is activated after Moorabi for deterministic recovery rather than after the source Ruins Dweller formation; its actor spawn remains heroic-mask-only, so normal rendering filters it out.", + "Eck keeps the source's independent Bite, Spit, Spring, and 90-second Berserk timings; Spring uses a short target warning because the runtime does not yet execute creature jump motion.", "Gal'darah's room door closes on engagement and all three source Gal'darah doors open on death; no native door animation is claimed.", "Exact imported altar, statue, bridge, collision, Eck-door, underwater-gate, and Gal'darah-door rows are replaced by procedural stateful objects at their source transforms.", ], @@ -1529,9 +1576,33 @@ function buildGundrak(definition: DungeonDefinition): DungeonDefinition { const galDarah = objectiveForEntry(definition, 29_306); const eckBase = objectiveForEntry(definition, 29_932); const eck = eventObjective(definition, eckBase.id); - const entities = ensureEntities(definition, []); - const eckEntityId = entityIdForEntry(entities, 29_932); + const baseEntities = ensureEntities(definition, []); + const eckEntityId = entityIdForEntry(baseEntities, 29_932); if (!eckEntityId) throw new Error("gundrak is missing Eck the Ferocious entry 29932"); + const sourceEck = baseEntities[eckEntityId]; + if (!sourceEck.combat) throw new Error("gundrak Eck the Ferocious is missing combat data"); + if (!sourceEck.visual.model) throw new Error("gundrak Eck the Ferocious is missing its source model"); + const entities = Object.freeze({ + ...baseEntities, + [eckEntityId]: Object.freeze({ + ...sourceEck, + visual: Object.freeze({ + ...sourceEck.visual, + model: Object.freeze({ + ...sourceEck.visual.model, + // The skinned Oracle bind pose extends far below its animated root. + // Treating that minimum as the floor lifted Eck out of the camera. + groundOffset: 0, + labelHeight: 7, + }), + }), + combat: Object.freeze({ + ...sourceEck.combat, + mechanicIds: Object.freeze(ECK_ATTACKS.slice(1).map((attack) => attack.id)), + attacks: ECK_ATTACKS, + }), + }), + }); const eckGroup: DungeonEncounterSpawnGroupDefinition = Object.freeze({ id: "gundrak:eck", spawns: Object.freeze([spawnAt("gundrak:eck-actor", eckEntityId, eck.position, [0, 0], 2)]), diff --git a/src/scene/DungeonSimulationSceneBridge.tsx b/src/scene/DungeonSimulationSceneBridge.tsx new file mode 100644 index 00000000..d4952c51 --- /dev/null +++ b/src/scene/DungeonSimulationSceneBridge.tsx @@ -0,0 +1,458 @@ +import { Line } from "@react-three/drei"; +import { useFrame } from "@react-three/fiber"; +import { useMemo, useRef } from "react"; +import { useShellStore } from "../app/shellStore"; +import { saveDungeonSimulationReplay } from "../app/dungeonSimulationClient"; +import { useCombatStore } from "../game/combatStore"; +import { combatSpatialActor } from "../game/combatSpatial"; +import { activeDungeonCompletedObjectiveIds } from "../game/dungeonEncounterRuntime"; +import { getMobPosition, updateMobRuntimePosition } from "../game/mobRuntimeRegistry"; +import { getPartyRuntimePosition, updatePartyRuntimePosition } from "../game/partyRuntimeRegistry"; +import { usePartyStore, type PartyMemberStatus } from "../game/partyStore"; +import { dungeonRouteDefinition, positionAlongRouteCorridor, routePointDistanceSquared } from "../game/dungeonRoutes"; +import { + DUNGEON_REPLAY_KEYFRAME_MS, + DUNGEON_REPLAY_SAMPLE_MS, + DUNGEON_SIMULATION_MAX_DURATION_MS, + useDungeonSimulationStore, +} from "../game/dungeonSimulationStore"; +import type { + DungeonReplayFrame, + DungeonSimulationResult, + DungeonRouteLeg, + DungeonSimulationActorSnapshot, +} from "../game/dungeonSimulationTypes"; +import type { Vector3Tuple } from "../game/dungeonTypes"; + +let savingRunKey: string | null = null; + +function simulationRoster() { + return usePartyStore.getState().members.map((member) => ({ + id: member.id, + name: member.name, + role: member.role, + classId: member.classId, + })); +} + +export async function finalizeDungeonSimulation(result: DungeonSimulationResult): Promise { + const simulation = useDungeonSimulationStore.getState(); + if (simulation.sessionMode !== "spectate-live" || simulation.runState === "finished") return; + const replay = simulation.finish(result, simulationRoster()); + if (!replay) return; + const key = `${replay.dungeonId}:${replay.routeHash}:${replay.startedAt}`; + if (savingRunKey === key) return; + savingRunKey = key; + try { + await saveDungeonSimulationReplay(useShellStore.getState().session, replay); + } catch (error) { + console.error("Unable to upload dungeon simulation replay", error); + } +} + +function actorSnapshots(): readonly DungeonSimulationActorSnapshot[] { + const party = usePartyStore.getState(); + const companions = party.members.map((member) => ({ + id: member.id, + position: getPartyRuntimePosition(member.id) ?? [0, 0, 0], + yaw: combatSpatialActor(member.id)?.yaw ?? 0, + health: member.health, + maxHealth: member.maxHealth, + targetId: party.memberTargetIds[member.id] ?? party.activeMobId, + status: member.status, + })); + const mobs = Object.values(useCombatStore.getState().mobs).map((mob) => ({ + id: mob.id, + position: getMobPosition(mob.id) ?? [0, 0, 0] as Vector3Tuple, + yaw: combatSpatialActor(mob.id)?.yaw ?? 0, + health: mob.health, + maxHealth: mob.maxHealth, + targetId: mob.targetActorId, + status: mob.dead ? "dead" : mob.engaged ? "engaged" : "idle", + })); + return [...companions, ...mobs]; +} + +function routeProgress(position: Vector3Tuple, leg: DungeonRouteLeg): number { + let cumulative = 0; + let bestDistance = Number.POSITIVE_INFINITY; + let bestProgress = 0; + for (let index = 1; index < leg.checkpoints.length; index += 1) { + const start = leg.checkpoints[index - 1]; + const end = leg.checkpoints[index]; + const segmentLength = Math.hypot(end[0] - start[0], end[1] - start[1], end[2] - start[2]); + const projection = routePointDistanceSquared(position, start, end); + const score = projection.planarSquared + projection.vertical ** 2; + if (score < bestDistance) { + bestDistance = score; + bestProgress = cumulative + segmentLength * projection.progress; + } + cumulative += segmentLength; + } + return bestProgress; +} + +interface DiagnosticCursor { + runKey: string; + nextSampleAt: number; + lastLeaderPosition: Vector3Tuple | null; + lastProgressAt: number; + offCorridorAt: number | null; + routeBlockedAt: number | null; + splitAt: Map; + observedPulls: Set; + objectiveId: string | null; + objectiveDistance: number; + maximumRouteProgress: number; + finalCheckpointAt: number | null; + replayFrameAt: number; +} + +function newCursor(runKey: string): DiagnosticCursor { + return { + runKey, + nextSampleAt: 0, + lastLeaderPosition: null, + lastProgressAt: 0, + offCorridorAt: null, + routeBlockedAt: null, + splitAt: new Map(), + observedPulls: new Set(), + objectiveId: null, + objectiveDistance: 0, + maximumRouteProgress: 0, + finalCheckpointAt: null, + replayFrameAt: -1, + }; +} + +function addFinding( + id: string, + severity: "info" | "warning" | "critical", + code: string, + message: string, + position?: Vector3Tuple, + actorId?: string, +): void { + const simulation = useDungeonSimulationStore.getState(); + simulation.addFinding({ + id, + atMs: simulation.elapsedMs, + severity, + code, + message, + position, + actorId, + objectiveId: simulation.objectiveId ?? undefined, + checkpointIndex: simulation.checkpointIndex, + }); +} + +function applyReplayFrame(frame: DungeonReplayFrame): void { + const party = usePartyStore.getState(); + const combat = useCombatStore.getState(); + const snapshots = new Map(frame.actors.map((actor) => [actor.id, actor] as const)); + const members = party.members.map((member) => { + const snapshot = snapshots.get(member.id); + if (!snapshot) return member; + updatePartyRuntimePosition(member.id, ...snapshot.position); + return { + ...member, + health: snapshot.health, + maxHealth: snapshot.maxHealth, + status: snapshot.status as PartyMemberStatus, + }; + }); + const mobs = { ...combat.mobs }; + for (const snapshot of frame.actors) { + const mob = mobs[snapshot.id]; + if (!mob) continue; + updateMobRuntimePosition(snapshot.id, ...snapshot.position, snapshot.yaw); + mobs[snapshot.id] = { + ...mob, + health: snapshot.health, + maxHealth: snapshot.maxHealth, + dead: snapshot.status === "dead" || snapshot.health <= 0, + engaged: snapshot.status === "engaged", + targetActorId: snapshot.targetId, + }; + } + party.commitRuntime({ + members, + activeMobId: null, + objectiveBossId: frame.objectiveId, + memberTargetIds: Object.fromEntries(frame.actors.flatMap((actor) => actor.targetId ? [[actor.id, actor.targetId]] : [])), + }); + useCombatStore.setState({ mobs }); + combat.commitCompanionActors(members); + useDungeonSimulationStore.getState().setRouteProgress(frame.objectiveId, frame.checkpointIndex); +} + +function recordPulls(cursor: DiagnosticCursor, leaderPosition: Vector3Tuple, leg: DungeonRouteLeg | null): void { + const simulation = useDungeonSimulationStore.getState(); + const partyPositions = usePartyStore.getState().members + .map((member) => getPartyRuntimePosition(member.id)) + .filter((position): position is Vector3Tuple => Boolean(position)); + for (const mob of Object.values(useCombatStore.getState().mobs).sort((left, right) => left.id.localeCompare(right.id))) { + if (mob.dead || mob.despawned || cursor.observedPulls.has(mob.id)) continue; + const position = getMobPosition(mob.id); + if (!position) continue; + const theoretical = simulation.mode === "navigation-only" && partyPositions.some((partyPosition) => ( + Math.hypot(position[0] - partyPosition[0], position[1] - partyPosition[1], position[2] - partyPosition[2]) + <= Math.max(0, mob.aggroRange) + )); + if (!mob.engaged && !theoretical) continue; + cursor.observedPulls.add(mob.id); + const classification = theoretical + ? "theoretical" as const + : leg && positionAlongRouteCorridor(position, leg.checkpoints, leg.corridorPlanarDistance, leg.corridorVerticalDistance) + ? "expected" as const + : "off-route" as const; + simulation.addPull({ + atMs: simulation.elapsedMs, + mobIds: [mob.id], + routeLegId: leg?.id ?? null, + position: [leaderPosition[0], leaderPosition[1], leaderPosition[2]], + classification, + }); + } +} + +function inspectLiveSimulation(cursor: DiagnosticCursor): void { + const simulation = useDungeonSimulationStore.getState(); + const party = usePartyStore.getState(); + const leader = party.members.find((member) => member.health > 0); + const leaderPosition = leader ? getPartyRuntimePosition(leader.id) : null; + if (!leader || !leaderPosition) return; + const route = simulation.dungeonId ? dungeonRouteDefinition(simulation.dungeonId, simulation.routeId ?? "primary") : null; + const leg = route?.legs.find((candidate) => candidate.objectiveId === simulation.objectiveId) ?? null; + + if (cursor.objectiveId !== simulation.objectiveId) { + if (cursor.objectiveId && route) { + const previousLeg = route.legs.find((candidate) => candidate.objectiveId === cursor.objectiveId); + if (previousLeg && cursor.objectiveDistance > previousLeg.expectedDistance * 1.5 + && cursor.objectiveDistance > previousLeg.expectedDistance + 10) { + addFinding( + `detour:${cursor.objectiveId}`, + "warning", + "excessive-detour", + `Leg ${previousLeg.id} travelled ${cursor.objectiveDistance.toFixed(1)} m for an expected ${previousLeg.expectedDistance.toFixed(1)} m.`, + leaderPosition, + leader.id, + ); + } + } + cursor.objectiveId = simulation.objectiveId; + cursor.objectiveDistance = 0; + cursor.maximumRouteProgress = 0; + cursor.finalCheckpointAt = null; + } + + if (cursor.lastLeaderPosition) { + const moved = Math.hypot( + leaderPosition[0] - cursor.lastLeaderPosition[0], + leaderPosition[1] - cursor.lastLeaderPosition[1], + leaderPosition[2] - cursor.lastLeaderPosition[2], + ); + cursor.objectiveDistance += moved; + if (moved >= 0.1) cursor.lastProgressAt = simulation.elapsedMs; + } else cursor.lastProgressAt = simulation.elapsedMs; + cursor.lastLeaderPosition = [leaderPosition[0], leaderPosition[1], leaderPosition[2]]; + + if (party.command === "attack" && simulation.objectiveId && simulation.elapsedMs - cursor.lastProgressAt >= 2_000) { + addFinding( + `stall:${simulation.objectiveId}:${simulation.checkpointIndex}`, + "warning", + "movement-stall", + `${leader.name} made no movement progress for at least two seconds.`, + leaderPosition, + leader.id, + ); + } + + if (party.routeBlocked) { + cursor.routeBlockedAt ??= simulation.elapsedMs; + if (simulation.elapsedMs - cursor.routeBlockedAt >= 1_000) { + addFinding( + `no-path:${simulation.objectiveId}:${simulation.checkpointIndex}`, + "critical", + "no-path", + `No collision-valid path to checkpoint ${simulation.checkpointIndex}.`, + leaderPosition, + leader.id, + ); + } + } else cursor.routeBlockedAt = null; + + if (leg) { + const inside = positionAlongRouteCorridor( + leaderPosition, + leg.checkpoints, + leg.corridorPlanarDistance, + leg.corridorVerticalDistance, + ); + if (!inside) { + cursor.offCorridorAt ??= simulation.elapsedMs; + if (simulation.elapsedMs - cursor.offCorridorAt >= 1_000) { + addFinding( + `off-corridor:${leg.id}:${simulation.checkpointIndex}`, + "warning", + "off-corridor", + `${leader.name} remained outside the ${leg.corridorPlanarDistance} m / ${leg.corridorVerticalDistance} m route corridor for one second.`, + leaderPosition, + leader.id, + ); + } + } else cursor.offCorridorAt = null; + + const progress = routeProgress(leaderPosition, leg); + cursor.maximumRouteProgress = Math.max(cursor.maximumRouteProgress, progress); + if (cursor.maximumRouteProgress - progress >= 8) { + addFinding( + `backtrack:${leg.id}:${Math.floor(cursor.maximumRouteProgress / 8)}`, + "warning", + "backtracking", + `${leader.name} backtracked at least 8 m on ${leg.id}.`, + leaderPosition, + leader.id, + ); + } + + if (simulation.checkpointIndex >= leg.checkpoints.length - 1) { + cursor.finalCheckpointAt ??= simulation.elapsedMs; + if ( + simulation.mode === "navigation-only" + && simulation.elapsedMs - cursor.finalCheckpointAt >= 5_000 + ) { + addFinding( + `scripted-progression:${leg.id}`, + "critical", + "failed-scripted-progression", + `Navigation-only progression did not advance after reaching ${leg.objectiveName}.`, + leaderPosition, + leader.id, + ); + } + } else cursor.finalCheckpointAt = null; + } + + for (const follower of party.members.filter((member) => member.health > 0 && member.id !== leader.id)) { + const position = getPartyRuntimePosition(follower.id); + if (!position) continue; + const distance = Math.hypot( + position[0] - leaderPosition[0], + position[1] - leaderPosition[1], + position[2] - leaderPosition[2], + ); + if (distance > 12) { + const separatedAt = cursor.splitAt.get(follower.id) ?? simulation.elapsedMs; + cursor.splitAt.set(follower.id, separatedAt); + if (simulation.elapsedMs - separatedAt >= 2_000) { + addFinding( + `separation:${follower.id}:${simulation.objectiveId}`, + "warning", + "party-separation", + `${follower.name} remained more than 12 m from the leader for two seconds.`, + position, + follower.id, + ); + } + } else cursor.splitAt.delete(follower.id); + } + + if (simulation.recoveries >= 2) { + addFinding( + `repeated-recovery:${simulation.objectiveId}`, + "critical", + "repeated-recovery", + "The simulator required repeated position recovery teleports.", + leaderPosition, + leader.id, + ); + } + recordPulls(cursor, leaderPosition, leg); + + while (simulation.elapsedMs >= cursor.nextSampleAt) { + const atMs = cursor.nextSampleAt; + simulation.addFrame({ + atMs, + keyframe: atMs % DUNGEON_REPLAY_KEYFRAME_MS === 0, + actors: actorSnapshots(), + objectiveId: simulation.objectiveId, + checkpointIndex: simulation.checkpointIndex, + }); + cursor.nextSampleAt += DUNGEON_REPLAY_SAMPLE_MS; + } + + if (simulation.elapsedMs >= DUNGEON_SIMULATION_MAX_DURATION_MS) { + void finalizeDungeonSimulation("recording-limit"); + } else if (!party.members.some((member) => member.health > 0)) { + void finalizeDungeonSimulation("wiped"); + } else if (simulation.mode === "navigation-only" && simulation.objectiveId === null) { + void finalizeDungeonSimulation("completed"); + } else if ( + simulation.mode === "full-combat" + && simulation.elapsedMs >= 1_000 + && route + && route.legs.every((candidate) => activeDungeonCompletedObjectiveIds(route.dungeonId).includes(candidate.objectiveId)) + ) { + void finalizeDungeonSimulation("completed"); + } +} + +export function DungeonSimulationSceneBridge() { + const sessionMode = useDungeonSimulationStore((state) => state.sessionMode); + const dungeonId = useDungeonSimulationStore((state) => state.dungeonId); + const routeId = useDungeonSimulationStore((state) => state.routeId); + const objectiveId = useDungeonSimulationStore((state) => state.objectiveId); + const checkpointIndex = useDungeonSimulationStore((state) => state.checkpointIndex); + const frames = useDungeonSimulationStore((state) => state.frames); + const cursorRef = useRef(newCursor("")); + const route = useMemo( + () => dungeonId ? dungeonRouteDefinition(dungeonId, routeId ?? "primary") : null, + [dungeonId, routeId], + ); + const leg = route?.legs.find((candidate) => candidate.objectiveId === objectiveId) ?? null; + const trace = useMemo(() => frames + .map((frame) => frame.actors[0]?.position) + .filter((position): position is Vector3Tuple => Boolean(position)) + .slice(-2_000), [frames]); + + useFrame(() => { + const simulation = useDungeonSimulationStore.getState(); + if (simulation.sessionMode === "play") return; + const runKey = `${simulation.sessionMode}:${simulation.dungeonId}:${simulation.startedAt}`; + if (cursorRef.current.runKey !== runKey) cursorRef.current = newCursor(runKey); + if (simulation.sessionMode === "spectate-replay") { + const replay = simulation.replay; + if (!replay?.frames.length) return; + const frame = [...replay.frames].reverse().find((candidate) => candidate.atMs <= simulation.elapsedMs) + ?? replay.frames[0]; + if (frame.atMs !== cursorRef.current.replayFrameAt) { + cursorRef.current.replayFrameAt = frame.atMs; + applyReplayFrame(frame); + } + return; + } + if (simulation.runState === "finished") return; + inspectLiveSimulation(cursorRef.current); + }, 1); + + if (sessionMode === "play") return null; + return ( + + {leg && leg.checkpoints.length > 1 && ( + + )} + {leg?.checkpoints.map((checkpoint, index) => ( + + + + + ))} + {trace.length > 1 && ( + + )} + + ); +} diff --git a/src/scene/DungeonSpectatorCamera.tsx b/src/scene/DungeonSpectatorCamera.tsx new file mode 100644 index 00000000..5900121c --- /dev/null +++ b/src/scene/DungeonSpectatorCamera.tsx @@ -0,0 +1,86 @@ +import { useFrame, useThree } from "@react-three/fiber"; +import { useRapier } from "@react-three/rapier"; +import { useEffect, useRef } from "react"; +import { Vector3 } from "three"; +import { consumeMouseLook, readInputSnapshot } from "../game/inputManager"; +import { getPartyRuntimePosition } from "../game/partyRuntimeRegistry"; +import { usePartyStore } from "../game/partyStore"; +import { useDungeonSimulationStore } from "../game/dungeonSimulationStore"; +import { useGameStore } from "../game/store"; + +const FOLLOW_DISTANCE = 7; +const FOLLOW_HEIGHT = 2.4; +const LOOK_SENSITIVITY = 0.0021; + +export function DungeonSpectatorCamera() { + const camera = useThree((state) => state.camera); + const { rapier, world } = useRapier(); + const yawRef = useRef(useGameStore.getState().cameraYaw); + const pitchRef = useRef(-0.22); + const freePositionRef = useRef(new Vector3().copy(camera.position)); + const boostRef = useRef(false); + const initializedFreeRef = useRef(false); + + useEffect(() => { + const onKey = (event: KeyboardEvent) => { + boostRef.current = event.shiftKey; + }; + window.addEventListener("keydown", onKey); + window.addEventListener("keyup", onKey); + return () => { + window.removeEventListener("keydown", onKey); + window.removeEventListener("keyup", onKey); + }; + }, []); + + useFrame((_, delta) => { + const simulation = useDungeonSimulationStore.getState(); + if (simulation.sessionMode === "play") return; + const input = readInputSnapshot(); + const [mouseX, mouseY] = consumeMouseLook(); + yawRef.current -= mouseX * LOOK_SENSITIVITY; + pitchRef.current = Math.max(-1.35, Math.min(1.15, pitchRef.current - mouseY * LOOK_SENSITIVITY)); + yawRef.current -= input.lookX * delta * 2.25; + pitchRef.current = Math.max(-1.35, Math.min(1.15, pitchRef.current - input.lookY * delta * 1.65)); + useGameStore.setState({ cameraYaw: yawRef.current }); + + if (simulation.cameraMode === "free-fly") { + if (!initializedFreeRef.current) { + freePositionRef.current.copy(camera.position); + initializedFreeRef.current = true; + } + const forward = new Vector3( + Math.sin(yawRef.current) * Math.cos(pitchRef.current), + Math.sin(pitchRef.current), + Math.cos(yawRef.current) * Math.cos(pitchRef.current), + ); + const right = new Vector3(Math.cos(yawRef.current), 0, -Math.sin(yawRef.current)); + const speed = boostRef.current ? 28 : 10; + freePositionRef.current.addScaledVector(forward, input.moveForward * speed * delta); + freePositionRef.current.addScaledVector(right, input.moveX * speed * delta); + camera.position.copy(freePositionRef.current); + camera.lookAt(new Vector3().copy(camera.position).add(forward)); + return; + } + + initializedFreeRef.current = false; + const party = usePartyStore.getState(); + const leader = party.members.find((member) => member.health > 0) ?? party.members[0]; + const leaderPosition = leader ? getPartyRuntimePosition(leader.id) : null; + if (!leaderPosition) return; + const anchor = new Vector3(leaderPosition[0], leaderPosition[1] + FOLLOW_HEIGHT, leaderPosition[2]); + const backward = new Vector3( + -Math.sin(yawRef.current) * Math.cos(pitchRef.current), + -Math.sin(pitchRef.current), + -Math.cos(yawRef.current) * Math.cos(pitchRef.current), + ).normalize(); + const ray = new rapier.Ray(anchor, backward); + const hit = world.castRay(ray, FOLLOW_DISTANCE, true, rapier.QueryFilterFlags.EXCLUDE_SENSORS); + const distance = hit ? Math.max(0.8, hit.timeOfImpact - 0.25) : FOLLOW_DISTANCE; + const desired = anchor.clone().addScaledVector(backward, distance); + camera.position.lerp(desired, 1 - Math.exp(-12 * Math.min(delta, 0.1))); + camera.lookAt(anchor); + }); + + return null; +} diff --git a/src/scene/GameScene.tsx b/src/scene/GameScene.tsx index 3c21cc18..87148602 100644 --- a/src/scene/GameScene.tsx +++ b/src/scene/GameScene.tsx @@ -69,6 +69,9 @@ import { activeEncounterSpawnGroupSpawns, suppressCompletedDungeonPopulation, } from "../game/dungeonEncounterSpawns"; +import { useDungeonSimulationStore } from "../game/dungeonSimulationStore"; +import { DungeonSpectatorCamera } from "./DungeonSpectatorCamera"; +import { DungeonSimulationSceneBridge } from "./DungeonSimulationSceneBridge"; function DungeonCameraRange({ far }: { readonly far: number }) { const camera = useThree((state) => state.camera); @@ -170,6 +173,8 @@ export function GameScene() { const paused = useGameStore((state) => state.paused); const mapOpen = useGameStore((state) => state.mapOpen); const companionOpen = useGameStore((state) => state.companionOpen); + const simulationSessionMode = useDungeonSimulationStore((state) => state.sessionMode); + const simulationRunState = useDungeonSimulationStore((state) => state.runState); const gameplayFrameRate = useCombatStore((state) => state.settings.gameplayFrameRate); const sharedOnline = useOnlineGroupStore((state) => state.activeActivity !== null); const onlineAuthority = useOnlineSessionStore((state) => state.snapshot?.authority ?? true); @@ -383,15 +388,19 @@ export function GameScene() { {worldReady && ( <> - - - + {simulationSessionMode === "play" ? : } + {simulationSessionMode === "play" && } + + {gameMode === "dungeon" && ( diff --git a/src/scene/MobPopulation.tsx b/src/scene/MobPopulation.tsx index 69023a88..1a74ac97 100644 --- a/src/scene/MobPopulation.tsx +++ b/src/scene/MobPopulation.tsx @@ -57,6 +57,7 @@ import { samplePackFormation, } from "../game/mobPopulation"; import { useGameStore } from "../game/store"; +import { dungeonSimulationNow, useDungeonSimulationStore } from "../game/dungeonSimulationStore"; import { manastormExperienceReward, manastormRuntimeScaling, @@ -913,7 +914,7 @@ function ProxyMob({ const attackRevision = mob?.attackRevision ?? 0; const attackAnimation = mob?.attackAnimation ?? "attack"; const woundRevision = mob?.woundRevision ?? 0; - const statusNow = Date.now(); + const statusNow = dungeonSimulationNow(); const movementLocked = mob?.statuses.some((status) => status.endsAt > statusNow && MOVEMENT_LOCKING_MOB_STATUSES.has(status.kind)) ?? false; const feared = mob?.statuses.some((status) => status.endsAt > statusNow @@ -1106,7 +1107,7 @@ function MobHealthPlate({ instanceId, height, boss }: { if (plateRef.current) plateRef.current.lookAt(camera.position); if (castFillRef.current && mob?.activeCast) { const duration = Math.max(1, mob.activeCast.completesAt - mob.activeCast.startedAt); - const now = Date.now(); + const now = dungeonSimulationNow(); const progress = Math.max(0.001, Math.min(1, (now - mob.activeCast.startedAt) / duration)); castFillRef.current.scale.x = progress; castFillRef.current.position.x = -width * (1 - progress) / 2; @@ -1212,6 +1213,7 @@ function RoamingPack({ const nearby = usePopulationProximity(scratchPositions); const memberRefs = useRef>([]); const chasingRefs = useRef(definition.members.map(() => false)); + const simulationElapsedRef = useRef(0); useEffect(() => { const cleanups = definition.members.map((member, index) => registerMobRuntime( @@ -1226,8 +1228,13 @@ function RoamingPack({ if (!nearby) return; const combat = useCombatStore.getState(); + const simulation = useDungeonSimulationStore.getState(); + const movementDelta = simulation.sessionMode === "spectate-live" + ? Math.max(0, (simulation.elapsedMs - simulationElapsedRef.current) / 1_000) + : simulation.sessionMode === "spectate-replay" ? 0 : delta; + simulationElapsedRef.current = simulation.elapsedMs; const playerPosition = useGameStore.getState().playerPosition; - const now = Date.now(); + const now = dungeonSimulationNow(); const anyEngaged = definition.members.some((member) => combat.mobs[`${definition.id}:${member.id}`]?.engaged); if (active && !anyEngaged) { let movementMultiplier = 1; @@ -1242,7 +1249,7 @@ function RoamingPack({ const slow = statuses.find((status) => status.endsAt > now && status.kind === "slow"); if (slow) movementMultiplier = Math.min(movementMultiplier, 1 - (slow.magnitude ?? 0.5)); } - distanceRef.current = (distanceRef.current + Math.min(delta, 0.05) * definition.speed * movementMultiplier) + distanceRef.current = (distanceRef.current + Math.min(movementDelta, 0.5) * definition.speed * movementMultiplier) % path.totalLength; } @@ -1259,6 +1266,20 @@ function RoamingPack({ const forward = scratchForwards[index]; const member = definition.members[index]; const instanceId = `${definition.id}:${member.id}`; + if (simulation.sessionMode === "spectate-replay") { + const replayTransform = getMobRuntimeTransform(instanceId); + if (replayTransform) { + const object = memberRefs.current[index]; + if (object) { + object.position.set(...replayTransform.position); + object.rotation.y = replayTransform.yaw; + } + chasePositions[index][0] = replayTransform.position[0]; + chasePositions[index][1] = replayTransform.position[1]; + chasePositions[index][2] = replayTransform.position[2]; + } + continue; + } const synchronizedTransform = onlineSynchronizedMobTransform(instanceId); if (synchronizedTransform) { const object = memberRefs.current[index]; @@ -1389,8 +1410,27 @@ function StaticPopulationMember({ spawn, entities, active, showLabels, useOrigin const entity = entities[spawn.entityId]; const groupRef = useRef(null); const positionRef = useRef([...spawn.position]); + const simulationElapsedRef = useRef(0); useEffect(() => registerMobRuntime(spawn.id, spawn.position, spawn.yaw ?? 0), [spawn.id, spawn.position, spawn.yaw]); useFrame((_, delta) => { + const simulation = useDungeonSimulationStore.getState(); + const movementDelta = simulation.sessionMode === "spectate-live" + ? Math.max(0, (simulation.elapsedMs - simulationElapsedRef.current) / 1_000) + : simulation.sessionMode === "spectate-replay" ? 0 : delta; + simulationElapsedRef.current = simulation.elapsedMs; + if (simulation.sessionMode === "spectate-replay") { + const replayTransform = getMobRuntimeTransform(spawn.id); + if (replayTransform) { + positionRef.current[0] = replayTransform.position[0]; + positionRef.current[1] = replayTransform.position[1]; + positionRef.current[2] = replayTransform.position[2]; + if (groupRef.current) { + groupRef.current.position.set(...replayTransform.position); + groupRef.current.rotation.y = replayTransform.yaw; + } + } + return; + } const synchronizedTransform = onlineSynchronizedMobTransform(spawn.id); if (synchronizedTransform) { positionRef.current[0] = synchronizedTransform.position[0]; @@ -1413,7 +1453,7 @@ function StaticPopulationMember({ spawn, entities, active, showLabels, useOrigin const position = positionRef.current; const player = useGameStore.getState().playerPosition; const targetPosition = mobTargetPosition(mob?.targetActorId, player); - const now = Date.now(); + const now = dungeonSimulationNow(); let feared = false; let movementLocked = false; if (mob?.dead) { @@ -1423,7 +1463,7 @@ function StaticPopulationMember({ spawn, entities, active, showLabels, useOrigin && MOVEMENT_LOCKING_MOB_STATUSES.has(status.kind)); feared = mob.statuses.some((status) => status.endsAt > now && status.kind === "fear"); const slow = mob.statuses.find((status) => status.endsAt > now && status.kind === "slow")?.magnitude ?? 0; - const maximumStep = Math.min(delta, 0.05) * mob.moveSpeed * Math.max(0.1, 1 - slow); + const maximumStep = Math.min(movementDelta, 0.5) * mob.moveSpeed * Math.max(0.1, 1 - slow); if (active && !movementLocked && feared) { stepFearedMobAway( position, @@ -1438,7 +1478,7 @@ function StaticPopulationMember({ spawn, entities, active, showLabels, useOrigin maximumStep, active, now, movementLocked || feared); } else if (mob?.combatPhase === "returning") { navigateMob(navigator, mob, position, targetPosition, mob.homePosition ?? spawn.position, - Math.min(delta, 0.05) * mob.moveSpeed * 1.25, active, now); + Math.min(movementDelta, 0.5) * mob.moveSpeed * 1.25, active, now); } else { position[0] = spawn.position[0]; position[1] = spawn.position[1]; @@ -1531,18 +1571,35 @@ function SummonedPopulationMember({ const groupRef = useRef(null); const initial = getMobRuntimeTransform(instanceId)?.position ?? [0, 0, 0]; const positionRef = useRef([...initial]); + const simulationElapsedRef = useRef(0); useFrame((_, delta) => { + const simulation = useDungeonSimulationStore.getState(); + const movementDelta = simulation.sessionMode === "spectate-live" + ? Math.max(0, (simulation.elapsedMs - simulationElapsedRef.current) / 1_000) + : simulation.sessionMode === "spectate-replay" ? 0 : delta; + simulationElapsedRef.current = simulation.elapsedMs; + if (simulation.sessionMode === "spectate-replay") { + const replayTransform = getMobRuntimeTransform(instanceId); + if (replayTransform && groupRef.current) { + positionRef.current[0] = replayTransform.position[0]; + positionRef.current[1] = replayTransform.position[1]; + positionRef.current[2] = replayTransform.position[2]; + groupRef.current.position.set(...replayTransform.position); + groupRef.current.rotation.y = replayTransform.yaw; + } + return; + } const mob = useCombatStore.getState().mobs[instanceId]; if (!mob || mob.dead || mob.despawned) return; const player = useGameStore.getState().playerPosition; const targetPosition = mobTargetPosition(mob.targetActorId, player); const position = positionRef.current; - const now = Date.now(); + const now = dungeonSimulationNow(); const movementLocked = mob.statuses.some((status) => status.endsAt > now && MOVEMENT_LOCKING_MOB_STATUSES.has(status.kind)); const feared = mob.statuses.some((status) => status.endsAt > now && status.kind === "fear"); const slow = mob.statuses.find((status) => status.endsAt > now && status.kind === "slow")?.magnitude ?? 0; - const maximumStep = Math.min(delta, 0.05) * mob.moveSpeed * Math.max(0.1, 1 - slow); + const maximumStep = Math.min(movementDelta, 0.5) * mob.moveSpeed * Math.max(0.1, 1 - slow); if (active && !movementLocked && feared) { stepFearedMobAway( position, diff --git a/src/scene/PartyPopulation.tsx b/src/scene/PartyPopulation.tsx index e8dc1768..48c64f83 100644 --- a/src/scene/PartyPopulation.tsx +++ b/src/scene/PartyPopulation.tsx @@ -106,6 +106,13 @@ import { PARTY_FLOOR_RAY_DEPTH, PARTY_FLOOR_RAY_HEIGHT, } from "./partyTraversal"; +import { + activeDungeonRouteTarget, + routeForActiveDungeon, + type ActiveDungeonRouteTarget, +} from "../game/dungeonRouteRuntime"; +import { useDungeonSimulationStore } from "../game/dungeonSimulationStore"; +import { useDungeonRouteStore } from "../game/dungeonRouteStore"; const PARTY_MOVE_SPEED = 5.25; const PARTY_CATCH_UP_SPEED = 7.5; @@ -363,6 +370,7 @@ function PartyActors({ const movementProfilesRef = useRef(new Map()); const directFollowMovingRef = useRef(new Map()); const combatAnchorsRef = useRef(new Map()); + const lastSimulationElapsedRef = useRef(0); const memberIdKey = members.map((member) => member.id).join("|"); useEffect(() => registerCombatSpatialProvider({ actor: (actorId) => { @@ -611,10 +619,15 @@ function PartyActors({ return; } const game = useGameStore.getState(); + const simulation = useDungeonSimulationStore.getState(); const playerNavigation = game.playerNavigationPosition; appendPartyBreadcrumb(playerTrailRef.current, playerNavigation); - const routeNow = clock.elapsedTime * 1_000; - const combatNow = Date.now(); + const routeNow = simulation.sessionMode === "spectate-live" + ? simulation.elapsedMs + : clock.elapsedTime * 1_000; + const combatNow = simulation.sessionMode === "spectate-live" + ? simulation.startedAt + simulation.elapsedMs + : Date.now(); for (const member of party.members) { if (member.health <= 0) { finishPartyRuntimeRejoin(member.id); @@ -673,7 +686,13 @@ function PartyActors({ } const objective = objectives.find((candidate) => candidate.id === party.objectiveBossId) ?? null; const leaderIndex = party.members.findIndex((member) => member.health > 0 && !partyRuntimeIsRejoining(member.id)); - const safeDelta = Math.min(delta, 0.05); + const simulationDelta = simulation.sessionMode === "spectate-live" + ? Math.max(0, (simulation.elapsedMs - lastSimulationElapsedRef.current) / 1_000) + : delta; + lastSimulationElapsedRef.current = simulation.elapsedMs; + const safeDelta = simulation.sessionMode === "spectate-live" + ? Math.min(simulationDelta, 0.5) + : Math.min(delta, 0.05); const desired: MutablePartyWorldPosition = [0, 0, 0]; const nextPosition: MutablePartyWorldPosition = [0, 0, 0]; const leaderDestination: MutablePartyWorldPosition = [0, 0, 0]; @@ -696,6 +715,7 @@ function PartyActors({ let leaderFollowingPlayer = false; let leaderPlayerTrailBlocked = false; let forceLeaderBreadcrumb = false; + let authoredRouteTarget: ActiveDungeonRouteTarget | null = null; const leaderMember = leaderIndex >= 0 ? party.members[leaderIndex] : null; const leaderPosition = leaderMember ? positionsRef.current.get(leaderMember.id) : null; @@ -763,18 +783,28 @@ function PartyActors({ // Imported source spawns can sit on decorative or discarded Recast // islands. Route to the nearest retained walkable surface and let the // normal aggro/combat path take over when the encounter engages. - const objectiveApproach = navigationGraph + authoredRouteTarget = activeDungeonRouteTarget( + game.activeDungeonId, + objective.id, + leaderPosition, + leader.id, + combatNow, + ); + const objectiveApproach = authoredRouteTarget?.target ?? (navigationGraph ? findNearestPartyNavigationSurface( navigationGraph, objective.position, PARTY_OBJECTIVE_APPROACH_SNAP_DISTANCE, )?.position - : null; + : null); const objectiveDestination = objectiveApproach ?? objective.position; leaderDestination[0] = objectiveDestination[0]; leaderDestination[1] = objectiveDestination[1]; leaderDestination[2] = objectiveDestination[2]; - goalKey = `leader:${leader.id}|objective:${objective.id}`; + goalKey = authoredRouteTarget + ? `leader:${leader.id}|route:${authoredRouteTarget.route.hash}|${authoredRouteTarget.leg.id}|${authoredRouteTarget.checkpointIndex}` + : `leader:${leader.id}|objective:${objective.id}`; + if (authoredRouteTarget) leaderLocalFinishDistance = 0.3; } else { leaderFollowingPlayer = true; leaderDestination[0] = playerNavigation[0]; @@ -918,27 +948,38 @@ function PartyActors({ leaderDestination, routeNow, )) { - routeRef.current = planPartyRoute( - navigationGraph, - goalKey, - leaderPosition, - leaderDestination, - routeNow, - { - maxOriginSnapDistance: PARTY_NAVIGATION_SNAP_DISTANCE, - maxDestinationSnapDistance: 5, - localFinishDistance: leaderLocalFinishDistance, - directSegmentAllowed, - routeSegmentAllowed: navigationRouteSegmentAllowed, - destinationReached: targetPosition ? (surface) => { - const band = personalizedPartyCombatRangeBand(partyCombatRangeBand(leaderMember), - movementProfileFor(leaderMember.id, leaderIndex)); - const distance = fullDistance(surface, targetPosition); - return distance >= band.minimum && distance <= band.maximum - && hasStaticLineOfSight(surface, targetPosition); - } : undefined, - }, - ); + routeRef.current = authoredRouteTarget + && !navigationGraph + && directSegmentAllowed(leaderPosition, leaderDestination) + ? { + goalKey, + destination: [leaderDestination[0], leaderDestination[1], leaderDestination[2]], + waypoints: [[leaderDestination[0], leaderDestination[1], leaderDestination[2]]], + cursor: 0, + plannedAt: routeNow, + blocked: false, + } + : planPartyRoute( + navigationGraph, + goalKey, + leaderPosition, + leaderDestination, + routeNow, + { + maxOriginSnapDistance: PARTY_NAVIGATION_SNAP_DISTANCE, + maxDestinationSnapDistance: 5, + localFinishDistance: leaderLocalFinishDistance, + directSegmentAllowed, + routeSegmentAllowed: navigationRouteSegmentAllowed, + destinationReached: targetPosition ? (surface) => { + const band = personalizedPartyCombatRangeBand(partyCombatRangeBand(leaderMember), + movementProfileFor(leaderMember.id, leaderIndex)); + const distance = fullDistance(surface, targetPosition); + return distance >= band.minimum && distance <= band.maximum + && hasStaticLineOfSight(surface, targetPosition); + } : undefined, + }, + ); } leaderHasWaypoint = nextPartyRouteWaypoint(routeRef.current, leaderPosition, desired); if (!leaderHasWaypoint && routeRef.current.blocked) { @@ -960,6 +1001,19 @@ function PartyActors({ desired[2] = leaderDestination[2]; leaderHasWaypoint = true; } + if ( + !leaderHasWaypoint + && authoredRouteTarget + && routeRef.current.blocked + && simulation.sessionMode === "play" + && directSegmentAllowed(leaderPosition, playerNavigation) + ) { + desired[0] = playerNavigation[0]; + desired[1] = playerNavigation[1]; + desired[2] = playerNavigation[2]; + leaderHasWaypoint = true; + leaderFollowingPlayer = true; + } } } if (leaderHasWaypoint) { @@ -980,12 +1034,12 @@ function PartyActors({ && !targetPosition && leaderPosition && !routeRef.current.blocked - && routeRef.current.waypoints.length > routeRef.current.cursor + && (Boolean(authoredRouteTarget) || routeRef.current.waypoints.length > routeRef.current.cursor) ) { updatePartyRuntimeAttackCorridor( leaderPosition, - routeRef.current.waypoints, - routeRef.current.cursor, + authoredRouteTarget?.remaining ?? routeRef.current.waypoints, + authoredRouteTarget ? 0 : routeRef.current.cursor, ); } else { clearPartyRuntimeAttackCorridor(); @@ -998,7 +1052,7 @@ function PartyActors({ && ( leaderFollowingPlayer ? leaderPlayerTrailBlocked - : navigationFailed || Boolean(navigationGraph && routeRef.current.blocked) + : navigationFailed || Boolean((navigationGraph || authoredRouteTarget) && routeRef.current.blocked) ), ); @@ -1376,6 +1430,20 @@ function PartyActors({ trailPoints: [...leaderTrailRef.current.points, ...playerTrailRef.current.points].map((point) => point.position), validate: recoveryPointAllowed, }); + if (landing && simulation.sessionMode === "spectate-live") { + simulation.addFinding({ + id: `recovery:${member.id}:${simulation.elapsedMs}`, + atMs: simulation.elapsedMs, + severity: "critical", + code: "position-recovery", + message: `${member.name} required a position-only recovery teleport.`, + position: [current[0], current[1], current[2]], + actorId: member.id, + objectiveId: simulation.objectiveId ?? undefined, + checkpointIndex: simulation.checkpointIndex, + }); + simulation.addRecovery(); + } if (landing && applyPartyStuckRecoveryLanding(positionsRef.current, member.id, landing.position, stuckProgress, routeNow)) { updatePartyRuntimePosition(member.id, current[0], current[1], current[2]); actor.position.set(current[0], presentationY(current), current[2]); @@ -1504,6 +1572,8 @@ export function PartyPopulation({ const sessionRevision = useGameStore((state) => state.sessionRevision); const wailingPhase = useWailingEncounterStore((state) => state.phase); const manastormEncounter = useManastormStore((state) => state.currentEncounter); + const simulationSessionMode = useDungeonSimulationStore((state) => state.sessionMode); + useDungeonRouteStore((state) => state.approvals); const dungeon = requireDungeonDefinition(activeDungeonId); const navigationReviewed = dungeon.validation.status === "green" || dungeon.validation.navigation === "green"; @@ -1520,13 +1590,15 @@ export function PartyPopulation({ // fragmented Recast islands do not claim autonomous route fidelity. Until // reviewed links make navigation green, the player leads and the party // follows/engages locally instead of displaying a false blocked route. - : navigationReviewed + : simulationSessionMode === "spectate-live" || Boolean(routeForActiveDungeon(activeDungeonId)) + ? dungeon.objectiveOrder.filter((objective) => !objective.optional) + : navigationReviewed ? activeDungeonId === "wailing-caverns" && wailingPhase !== "mutanus" && wailingPhase !== "complete" ? dungeon.objectiveOrder.filter((objective) => !objective.eventOnly) : dungeon.objectiveOrder.filter((objective) => !objective.optional) - : []; + : []; const assets = useMemo( () => manastormPackage ? resolveManastormStageAssets(manastormPackage) diff --git a/src/scene/WailingNaralexEvent.tsx b/src/scene/WailingNaralexEvent.tsx index 37b10065..6eda7062 100644 --- a/src/scene/WailingNaralexEvent.tsx +++ b/src/scene/WailingNaralexEvent.tsx @@ -7,6 +7,7 @@ import { wailingDisciplePosition, } from "../game/wailingCavernsEncounter"; import { WorldNpcPrompt } from "./WorldNpcPrompt"; +import { dungeonSimulationNow } from "../game/dungeonSimulationStore"; export function WailingNaralexEvent() { const activeDungeonId = useGameStore((state) => state.activeDungeonId); @@ -17,7 +18,7 @@ export function WailingNaralexEvent() { useFrame(() => { if (activeDungeonId !== "wailing-caverns" || gameMode !== "dungeon") return; - const now = Date.now(); + const now = dungeonSimulationNow(); const position = wailingDisciplePosition( useWailingEncounterStore.getState().phase, useWailingEncounterStore.getState().phaseStartedAt, diff --git a/src/styles.css b/src/styles.css index 2ecbd7d2..eb2f22b6 100644 --- a/src/styles.css +++ b/src/styles.css @@ -58,6 +58,18 @@ button { font: inherit; } height: 100%; } +.game-shell, +.arena-runtime { + -webkit-user-select: none; + user-select: none; +} + +.game-shell :is(input, textarea, [contenteditable]:not([contenteditable="false"])), +.arena-runtime :is(input, textarea, [contenteditable]:not([contenteditable="false"])) { + -webkit-user-select: text; + user-select: text; +} + .scene-shell { z-index: 0; isolation: isolate; @@ -2076,6 +2088,7 @@ html[data-display-layout="thor-preview"], html[data-display-layout="thor-preview .main-menu-modes > header h2 { margin: 3px 0 4px; font: 28px Georgia, serif; font-weight: 400; } .main-menu-modes > header > p:last-child { max-width: 570px; margin: 0; color: var(--front-dim); font-size: 9px; line-height: 1.45; } .main-menu-mode-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 14px; } +.main-menu-gm-stack { display: grid; gap: 8px; } .main-menu-mode { position: relative; display: grid; @@ -3200,6 +3213,166 @@ button.equipment-slot:hover { background: rgba(174,191,131,.1); } .gm-boss-actions { display: grid; gap: 7px; } .gm-admin-denied { display: grid; width: min(470px, calc(100% - 30px)); margin: auto; gap: 12px; padding: 26px; border: 1px solid var(--front-line); background: rgba(3, 10, 7, .75); } +/* GM server-side balance simulations */ +.balance-lab-screen { display: grid; grid-template-rows: auto minmax(0, 1fr); } +.balance-lab-screen .gm-admin-header__actions .front-button:not(.front-button--primary) { display: block; } +.balance-lab-layout { display: grid; grid-template-columns: minmax(290px, .9fr) minmax(245px, .72fr) minmax(270px, .82fr); grid-template-rows: minmax(420px, 56vh) auto; min-height: 0; overflow: auto; align-content: start; } +.balance-lab-config, .balance-lab-jobs, .balance-lab-detail { min-width: 0; min-height: 0; padding: 16px; overflow: auto; } +.balance-lab-config, .balance-lab-jobs { border-right: 1px solid var(--front-line); } +.balance-lab-config h2, .balance-lab-jobs h2, .balance-lab-detail h2 { margin: 4px 0 10px; font-family: Georgia, serif; font-size: 20px; font-weight: 400; } +.balance-lab-help, .balance-lab-local-note, .balance-lab-detail > p:not(.front-kicker), .balance-lab-empty { color: var(--front-dim); font-size: 8px; line-height: 1.45; } +.balance-lab-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 14px; } +.balance-lab-form-grid label { display: grid; gap: 4px; color: var(--front-dim); font-size: 8px; } +.balance-lab-form-grid__wide { grid-column: 1 / -1; } +.balance-lab-form-grid input, .balance-lab-form-grid select, .balance-lab-boss-picker input { + width: 100%; min-width: 0; padding: 8px; border: 1px solid var(--front-line); border-radius: 6px; outline: 0; color: var(--front-cream); background: rgba(2, 9, 6, .88); font: inherit; +} +.balance-lab-form-grid input:focus, .balance-lab-form-grid select:focus, .balance-lab-boss-picker input:focus { border-color: rgba(169, 211, 132, .65); } +.balance-lab-boss-picker { margin-top: 10px; border: 1px solid var(--front-line); border-radius: 8px; overflow: hidden; } +.balance-lab-boss-picker > header { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 8px; padding: 8px; border-bottom: 1px solid var(--front-line); } +.balance-lab-boss-picker > header strong { color: #d7c68c; font-size: 8px; white-space: nowrap; } +.balance-lab-boss-picker > div { display: grid; max-height: 220px; overflow: auto; } +.balance-lab-boss-picker label { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 8px; padding: 7px 8px; border-bottom: 1px solid rgba(190, 213, 172, .08); cursor: pointer; } +.balance-lab-boss-picker label:hover, .balance-lab-boss-picker label.is-selected { background: rgba(149, 190, 118, .1); } +.balance-lab-boss-picker label input { width: 15px; height: 15px; accent-color: #91bc75; } +.balance-lab-boss-picker label span, .balance-lab-boss-picker label strong, .balance-lab-boss-picker label small { display: block; min-width: 0; } +.balance-lab-boss-picker label strong { overflow: hidden; font-size: 9px; text-overflow: ellipsis; white-space: nowrap; } +.balance-lab-boss-picker label small { margin-top: 2px; color: var(--front-dim); font-size: 7px; } +.balance-lab-estimate { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 5px; margin-top: 10px; } +.balance-lab-estimate span { display: grid; gap: 3px; padding: 8px; border: 1px solid rgba(190, 213, 172, .11); border-radius: 6px; color: var(--front-dim); font-size: 7px; } +.balance-lab-estimate b { color: var(--front-cream); font-size: 11px; } +.balance-lab-run { width: 100%; margin-top: 10px; } +.balance-lab-local-note { margin: 8px 0 0; } +.balance-lab-local-note code { color: #d7c68c; } +.balance-lab-jobs { display: grid; grid-template-rows: auto auto minmax(0, 1fr); } +.balance-lab-jobs > header { display: flex; align-items: center; justify-content: space-between; gap: 8px; } +.balance-lab-jobs > header button { padding: 6px 9px; border: 1px solid var(--front-line); border-radius: 6px; color: var(--front-cream); background: transparent; cursor: pointer; font-size: 8px; } +.balance-lab-history-filters { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px; margin-bottom: 8px; } +.balance-lab-history-filters input, .balance-lab-history-filters select { min-width: 0; padding: 7px 8px; border: 1px solid var(--front-line); border-radius: 6px; outline: 0; color: var(--front-cream); background: rgba(2, 9, 6, .88); font: inherit; font-size: 8px; } +.balance-lab-history-filters input:focus, .balance-lab-history-filters select:focus { border-color: rgba(169, 211, 132, .65); } +.balance-lab-job-list { min-height: 0; overflow: auto; border: 1px solid var(--front-line); border-radius: 8px; } +.balance-lab-job-list > button { display: grid; width: 100%; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 8px; padding: 10px; border: 0; border-bottom: 1px solid rgba(190, 213, 172, .08); color: var(--front-cream); background: transparent; cursor: pointer; text-align: left; } +.balance-lab-job-list > button:hover, .balance-lab-job-list > button.is-selected { background: rgba(149, 190, 118, .1); } +.balance-lab-job-list > button.is-selected { box-shadow: inset 3px 0 #9dcc7c; } +.balance-lab-job-list span, .balance-lab-job-list strong, .balance-lab-job-list small { display: block; min-width: 0; } +.balance-lab-job-list strong { font-size: 9px; } +.balance-lab-job-list small { margin-top: 3px; color: var(--front-dim); font-size: 7px; } +.balance-lab-job-list em { padding: 4px 6px; border-radius: 4px; color: #e8e3c8; background: rgba(173, 144, 76, .18); font-size: 7px; font-style: normal; text-transform: uppercase; } +.balance-lab-job-list em.is-complete { color: #c9f0b6; background: rgba(85, 146, 78, .24); } +.balance-lab-job-list em.is-failed { color: #f0b6ac; background: rgba(151, 62, 53, .24); } +.balance-lab-job-list em.is-running { color: #cce8ff; background: rgba(68, 125, 158, .24); } +.balance-lab-empty { padding: 12px; } +.balance-lab-detail { background: rgba(3, 10, 7, .48); } +.balance-lab-progress { height: 8px; margin: 12px 0; overflow: hidden; border: 1px solid var(--front-line); border-radius: 999px; background: rgba(0,0,0,.32); } +.balance-lab-progress span { display: block; height: 100%; background: linear-gradient(90deg, #4e8f64, #92c889); transition: width 180ms linear; } +.balance-lab-detail dl div { display: flex; justify-content: space-between; gap: 8px; padding: 7px 0; border-top: 1px solid rgba(190, 213, 172, .09); font-size: 8px; } +.balance-lab-detail dd { margin: 0; color: #d7c68c; text-align: right; } +.balance-lab-artifacts { display: grid; gap: 6px; margin-top: 14px; } +.balance-lab-artifacts button { text-align: left; } +.balance-lab-log { margin-top: 14px; padding-top: 10px; border-top: 1px solid var(--front-line); } +.balance-lab-log summary { color: var(--front-dim); cursor: pointer; font-size: 8px; } +.balance-lab-log pre { max-height: 210px; overflow: auto; padding: 8px; border-radius: 6px; color: #bad3ae; background: rgba(0,0,0,.28); font: 7px/1.45 monospace; white-space: pre-wrap; } + +/* Balance Lab historical run analysis */ +.balance-lab-analysis { grid-column: 1 / -1; min-width: 0; border-top: 1px solid var(--front-line); background: linear-gradient(180deg, rgba(4, 14, 10, .94), rgba(2, 9, 7, .98)); } +.balance-results { min-width: 0; padding: 20px; } +.balance-results-loading { min-height: 180px; margin: 0; padding: 30px 20px; color: var(--front-dim); font: 10px Georgia, serif; } +.balance-results__header { display: grid; grid-template-columns: minmax(240px, .72fr) minmax(460px, 1.28fr); gap: 20px; align-items: end; } +.balance-results__header h2 { margin: 4px 0 5px; font: 25px/1.1 Georgia, serif; } +.balance-results__header > div > p:not(.front-kicker) { margin: 0; color: var(--front-dim); font-size: 8px; line-height: 1.5; } +.balance-results__filters { display: grid; grid-template-columns: minmax(165px, 1.4fr) repeat(3, minmax(110px, .75fr)); gap: 7px; } +.balance-results__filters label { display: grid; min-width: 0; gap: 4px; color: var(--front-dim); font-size: 7px; } +.balance-results__filters input, .balance-results__filters select, .balance-results-sort select { width: 100%; min-width: 0; padding: 8px; border: 1px solid var(--front-line); border-radius: 6px; outline: 0; color: var(--front-cream); background: rgba(1, 7, 5, .94); font: inherit; font-size: 8px; } +.balance-results__filters input:focus, .balance-results__filters select:focus, .balance-results-sort select:focus { border-color: rgba(169, 211, 132, .65); } +.balance-results__tabs { display: flex; gap: 4px; margin: 18px 0 14px; padding-bottom: 8px; border-bottom: 1px solid var(--front-line); } +.balance-results__tabs button { padding: 7px 12px; border: 1px solid transparent; border-radius: 6px; color: var(--front-dim); background: transparent; cursor: pointer; font: inherit; font-size: 8px; text-transform: capitalize; } +.balance-results__tabs button:hover { color: var(--front-cream); background: rgba(149, 190, 118, .06); } +.balance-results__tabs button.is-active { border-color: rgba(157, 204, 124, .34); color: #dcefcf; background: rgba(110, 159, 84, .16); box-shadow: inset 0 -2px #83b76c; } +.balance-results-overview { display: grid; gap: 12px; } +.balance-results-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; } +.balance-results-summary article { display: grid; gap: 5px; padding: 11px 12px; border: 1px solid rgba(190, 213, 172, .12); border-radius: 7px; background: rgba(9, 24, 17, .46); } +.balance-results-summary span { color: var(--front-dim); font-size: 7px; text-transform: uppercase; letter-spacing: .05em; } +.balance-results-summary strong { color: #e6dfbf; font: 17px/1 Georgia, serif; } +.balance-results-summary small { color: var(--front-dim); font: 7px system-ui, sans-serif; } +.balance-results-charts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; align-items: start; } +.balance-results-chart { min-width: 0; overflow: hidden; border: 1px solid rgba(190, 213, 172, .13); border-radius: 8px; background: rgba(2, 10, 7, .72); } +.balance-results-chart > header { display: flex; align-items: start; justify-content: space-between; gap: 10px; padding: 12px; border-bottom: 1px solid rgba(190, 213, 172, .1); } +.balance-results-chart h4 { margin: 0; font: 15px/1.2 Georgia, serif; } +.balance-results-chart header p { margin: 4px 0 0; color: var(--front-dim); font-size: 7px; line-height: 1.4; } +.balance-results-chart header > strong { min-width: 24px; padding: 4px 6px; border-radius: 999px; color: #d6e8c9; background: rgba(126, 176, 96, .14); font-size: 7px; text-align: center; } +.balance-results-chart__plot { display: grid; max-height: 328px; gap: 2px; overflow-y: auto; padding: 9px 11px; } +.balance-results-bar { display: grid; grid-template-columns: minmax(105px, 34%) minmax(70px, 1fr) minmax(44px, auto); align-items: center; gap: 8px; min-height: 18px; } +.balance-results-bar__label { display: block; min-width: 0; } +.balance-results-bar__label b, .balance-results-bar__label small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.balance-results-bar__label b { color: #dce5d5; font-size: 7px; font-weight: 600; } +.balance-results-bar__label small { margin-top: 1px; color: #718173; font-size: 6px; } +.balance-results-bar__track { height: 7px; overflow: hidden; border-radius: 999px; background: rgba(255,255,255,.045); } +.balance-results-bar__track i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #8a3f37, #d47c65); box-shadow: 0 0 8px rgba(213, 113, 88, .2); } +.balance-results-chart.is-party .balance-results-bar__track i { background: linear-gradient(90deg, #366e52, #79bd7a); } +.balance-results-chart.is-time .balance-results-bar__track i { background: linear-gradient(90deg, #766130, #d1aa51); } +.balance-results-chart.is-class .balance-results-bar__track i { background: linear-gradient(90deg, #395e76, #6faac4); } +.balance-results-chart.is-taken .balance-results-bar__track i { background: linear-gradient(90deg, #6b3d70, #b376b5); } +.balance-results-bar > strong { color: #d8d2b5; font-size: 7px; text-align: right; white-space: nowrap; } +.balance-results-chart > footer { padding: 7px 11px; border-top: 1px solid rgba(190, 213, 172, .08); color: var(--front-dim); font-size: 6px; } +.balance-results-empty { padding: 18px 8px; color: var(--front-dim); font-size: 8px; text-align: center; } +.balance-results-table-panel { min-width: 0; } +.balance-results-table-panel > header { display: flex; align-items: end; justify-content: space-between; gap: 12px; margin-bottom: 9px; } +.balance-results-table-panel h3 { margin: 0; font: 17px/1.2 Georgia, serif; } +.balance-results-table-panel header p { margin: 4px 0 0; color: var(--front-dim); font-size: 7px; } +.balance-results-sort { display: grid; grid-template-columns: minmax(145px, 1fr) auto; gap: 6px; min-width: min(330px, 46vw); } +.balance-results-sort button { padding: 7px 9px; border: 1px solid var(--front-line); border-radius: 6px; color: var(--front-cream); background: rgba(1, 7, 5, .8); cursor: pointer; font: inherit; font-size: 7px; white-space: nowrap; } +.balance-results-table-wrap { max-height: min(620px, 66vh); overflow: auto; border: 1px solid var(--front-line); border-radius: 8px; background: rgba(1, 7, 5, .56); } +.balance-results-table { width: 100%; } +.balance-results table { width: 100%; border-collapse: collapse; font-size: 7px; } +.balance-results th, .balance-results td { padding: 8px 9px; border-bottom: 1px solid rgba(190, 213, 172, .075); text-align: right; white-space: nowrap; } +.balance-results th { position: sticky; z-index: 1; top: 0; color: #aebca8; background: #09120e; font-size: 6px; letter-spacing: .035em; text-transform: uppercase; } +.balance-results th:first-child, .balance-results td:first-child, .balance-results td.balance-results-members { text-align: left; } +.balance-results tbody tr:hover { background: rgba(146, 195, 112, .055); } +.balance-results td strong, .balance-results td small { display: block; } +.balance-results td strong { color: #dfe7d7; font-size: 8px; } +.balance-results td small { max-width: 180px; margin-top: 2px; overflow: hidden; color: var(--front-dim); font-size: 6px; text-overflow: ellipsis; } +.balance-results td.balance-results-members { min-width: 300px; max-width: 540px; white-space: normal; line-height: 1.5; } +.balance-results-flag { display: inline-block; padding: 3px 5px; border-radius: 4px; color: #cbd7c5; background: rgba(116, 138, 107, .14); } +.balance-results-flag.is-high { color: #efb8aa; background: rgba(155, 65, 50, .18); } +.balance-results-flag.is-low { color: #b8d6ee; background: rgba(60, 111, 147, .18); } +.balance-results-abilities { display: grid; min-width: 0; gap: 10px; } +.balance-results-abilities > .balance-results-chart { width: 100%; } +.balance-results-summary--abilities article:nth-child(3) strong { color: #efb8aa; } +.balance-results-ability-controls { display: grid; grid-template-columns: minmax(170px, 1.15fr) minmax(145px, .9fr) minmax(145px, .9fr) auto; gap: 6px; min-width: min(680px, 60vw); } +.balance-results-ability-controls select { width: 100%; min-width: 0; padding: 7px 8px; border: 1px solid var(--front-line); border-radius: 6px; outline: 0; color: var(--front-cream); background: rgba(1, 7, 5, .8); font: inherit; font-size: 7px; } +.balance-results-ability-controls select:focus { border-color: rgba(169, 211, 132, .65); } +.balance-results-ability-controls button { padding: 7px 9px; border: 1px solid var(--front-line); border-radius: 6px; color: var(--front-cream); background: rgba(1, 7, 5, .8); cursor: pointer; font: inherit; font-size: 7px; white-space: nowrap; } +.balance-results-abilities th:nth-child(2), .balance-results-abilities td:nth-child(2) { text-align: left; } +.balance-results-ability-name { display: flex; align-items: center; gap: 7px; min-width: 150px; } +.balance-results-ability-name > img { width: 24px; height: 24px; flex: 0 0 auto; border: 1px solid rgba(210, 226, 194, .2); border-radius: 4px; object-fit: cover; background: #07100b; } +.balance-results-ability-name > span { display: block; min-width: 0; } +.balance-results-legacy-note { padding: 18px; border: 1px solid rgba(210, 184, 106, .24); border-radius: 8px; color: #d6c991; background: rgba(89, 69, 24, .12); font-size: 8px; line-height: 1.5; } + +@media (max-width: 900px) { + .balance-lab-layout { grid-template-columns: minmax(290px, 1fr) minmax(250px, .8fr); } + .balance-lab-detail { grid-column: 1 / -1; border-top: 1px solid var(--front-line); } + .balance-results__header { grid-template-columns: 1fr; } + .balance-results__filters { grid-template-columns: repeat(2, minmax(0, 1fr)); } +} + +@media (max-width: 600px) { + .balance-lab-layout { display: block; overflow: auto; } + .balance-lab-screen .gm-admin-header { grid-template-columns: auto minmax(0, 1fr) auto; gap: 9px; padding-inline: 10px; } + .balance-lab-screen .gm-admin-header__actions .front-button { padding-inline: 7px; font-size: 8px; } + .balance-lab-config, .balance-lab-jobs { border-right: 0; border-bottom: 1px solid var(--front-line); } + .balance-lab-form-grid { grid-template-columns: 1fr; } + .balance-lab-form-grid__wide { grid-column: auto; } + .balance-lab-analysis { border-top: 1px solid var(--front-line); } + .balance-results { padding: 14px 10px 20px; } + .balance-results__filters, .balance-results-summary, .balance-results-charts { grid-template-columns: 1fr; } + .balance-results__tabs { overflow-x: auto; } + .balance-results__tabs button { white-space: nowrap; } + .balance-results-table-panel > header { display: grid; } + .balance-results-sort { width: 100%; min-width: 0; } + .balance-results-ability-controls { width: 100%; min-width: 0; grid-template-columns: 1fr; } + .balance-results-bar { grid-template-columns: minmax(90px, 40%) minmax(55px, 1fr) minmax(40px, auto); gap: 5px; } +} + .gm-review-card { position: absolute; top: max(276px, calc(env(safe-area-inset-top) + 264px)); @@ -3830,3 +4003,82 @@ button.equipment-slot:hover { background: rgba(174,191,131,.1); } .arena-combat-log { position: absolute; left: .7rem; top: 47%; color: #e4e3cc; font-size: .75rem; pointer-events: none; max-width: 18rem; } .arena-team-frames button.is-selected { outline: 2px solid #ffda8b; } @media (max-width: 760px) { .arena-toolbar { max-width: 100%; left: .5rem; justify-content: center; } .arena-toolbar button { font-size: .6rem; padding: .25rem; } } +.dungeon-sim-hud { + position: fixed; + inset: 16px 16px auto auto; + z-index: 70; + width: min(520px, calc(100vw - 32px)); + max-height: calc(100vh - 32px); + overflow: auto; + color: #e8f7ff; + background: rgba(7, 14, 22, 0.92); + border: 1px solid rgba(99, 211, 255, 0.42); + border-radius: 12px; + box-shadow: 0 20px 70px rgba(0, 0, 0, 0.55); + padding: 14px; + backdrop-filter: blur(12px); +} + +.dungeon-sim-hud__header, +.dungeon-sim-hud__controls, +.dungeon-sim-hud__status div, +.dungeon-sim-hud__findings header, +.dungeon-sim-hud__findings li { + display: flex; + align-items: center; + gap: 8px; +} + +.dungeon-sim-hud__header { justify-content: space-between; } +.dungeon-sim-hud__header div { display: grid; } +.dungeon-sim-hud__header small { color: #86b7ca; text-transform: uppercase; letter-spacing: 0.08em; } +.dungeon-sim-hud__header strong { font-size: 1.08rem; } +.dungeon-sim-hud__header > time { color: #ffe578; font: 700 1.15rem/1 monospace; } +.dungeon-sim-hud__controls { flex-wrap: wrap; margin: 12px 0; } +.dungeon-sim-hud button { color: #dff7ff; background: #122a39; border: 1px solid #315b6e; border-radius: 6px; padding: 6px 9px; } +.dungeon-sim-hud button:hover:not(:disabled), .dungeon-sim-hud button.is-active { background: #1d526b; border-color: #70d7ff; } +.dungeon-sim-hud button.is-danger { color: #ffd8d8; border-color: #a94848; background: #502121; } +.dungeon-sim-hud button:disabled { opacity: 0.45; } +.dungeon-sim-hud__seek { display: grid; gap: 4px; margin-bottom: 10px; color: #9cc6d5; } +.dungeon-sim-hud__seek input { width: 100%; } +.dungeon-sim-hud__status { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px 14px; margin: 0 0 12px; } +.dungeon-sim-hud__status div { justify-content: space-between; min-width: 0; } +.dungeon-sim-hud__status dt { color: #82aaba; } +.dungeon-sim-hud__status dd { margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.dungeon-sim-hud__findings header { justify-content: space-between; border-top: 1px solid rgba(139, 210, 236, 0.2); padding-top: 10px; } +.dungeon-sim-hud__findings ol { display: grid; gap: 6px; list-style: none; margin: 8px 0 0; padding: 0; } +.dungeon-sim-hud__findings li { align-items: flex-start; color: #bdd5df; font-size: 0.82rem; } +.dungeon-sim-hud__findings li time { flex: 0 0 auto; color: #759aaa; font-family: monospace; } +.dungeon-sim-hud__findings li[data-severity="critical"] { color: #ffaaaa; } +.dungeon-sim-hud__findings li[data-severity="warning"] { color: #ffe09b; } + +.dungeon-sim-admin { min-height: 100vh; padding: clamp(18px, 3vw, 42px); } +.dungeon-sim-admin__header { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 18px; margin-bottom: 24px; } +.dungeon-sim-admin__header h1, .dungeon-sim-admin__details h2 { margin: 0; } +.dungeon-sim-admin__header-actions { display: flex; gap: 8px; } +.dungeon-sim-admin__layout { display: grid; grid-template-columns: minmax(300px, 430px) minmax(420px, 1fr); gap: 22px; } +.dungeon-sim-admin__catalog, .dungeon-sim-admin__details { background: rgba(7, 14, 22, 0.8); border: 1px solid rgba(108, 189, 220, 0.28); border-radius: 14px; padding: 18px; } +.dungeon-sim-admin label { display: grid; gap: 5px; margin-bottom: 11px; color: #a7c6d2; } +.dungeon-sim-admin input, .dungeon-sim-admin select, .dungeon-sim-admin textarea { width: 100%; color: #e8f7ff; background: #0c1c27; border: 1px solid #315164; border-radius: 6px; padding: 8px; } +.dungeon-sim-admin textarea { min-height: 70px; resize: vertical; } +.dungeon-sim-admin fieldset { display: grid; gap: 8px; border: 1px solid rgba(111, 190, 220, 0.25); border-radius: 10px; margin: 16px 0 0; padding: 14px; } +.dungeon-sim-admin legend { color: #d6f2ff; padding: 0 6px; } +.dungeon-sim-admin__route-meta { display: grid; gap: 5px; margin-top: 14px; } +.dungeon-sim-admin__route-meta code { color: #7fb7c9; font-size: 0.68rem; overflow-wrap: anywhere; } +.route-review-status { width: fit-content; border: 1px solid #647b85; border-radius: 999px; padding: 3px 8px; font-size: 0.72rem; text-transform: uppercase; } +.route-review-status--approved { color: #9cf3b8; border-color: #3c9c61; } +.route-review-status--needswork { color: #ffb1a4; border-color: #b8564a; } +.dungeon-sim-admin__replays { display: grid; gap: 9px; margin: 14px 0 24px; } +.dungeon-sim-admin__replays article { display: flex; justify-content: space-between; gap: 12px; padding: 11px; background: rgba(18, 42, 57, 0.66); border-radius: 8px; } +.dungeon-sim-admin__replays article > div { display: grid; gap: 4px; } +.dungeon-sim-admin__replays article > div:last-child { display: flex; align-items: center; } +.dungeon-sim-admin__replays small { color: #8db0bd; } +.dungeon-sim-admin__legs { display: grid; gap: 7px; padding-left: 22px; } +.dungeon-sim-admin__legs li { padding: 7px 9px; background: rgba(18, 42, 57, 0.45); } +.dungeon-sim-admin__legs li > * { display: block; } +.dungeon-sim-admin__legs span, .dungeon-sim-admin__legs small { color: #91b4c1; } +@media (max-width: 900px) { + .dungeon-sim-admin__layout { grid-template-columns: 1fr; } + .dungeon-sim-admin__header { grid-template-columns: 1fr; } + .dungeon-sim-admin__replays article { flex-direction: column; } +} diff --git a/src/ui/BalanceLabResults.tsx b/src/ui/BalanceLabResults.tsx new file mode 100644 index 00000000..48c86fe4 --- /dev/null +++ b/src/ui/BalanceLabResults.tsx @@ -0,0 +1,263 @@ +import { useMemo, useState } from "react"; +import type { + BalanceLabBossResult, + BalanceLabClassAbilityResult, + BalanceLabClassSpecResult, + BalanceLabPartyResult, + BalanceLabSuiteReport, +} from "../app/balanceLabClient"; + +type ResultsTab = "overview" | "bosses" | "classes" | "abilities" | "parties"; +type PartySourceFilter = "all" | "wow" | "coa" | "rom"; +type BossSourceFilter = "all" | "wow" | "rom"; + +interface ChartDatum { + readonly key: string; + readonly label: string; + readonly detail: string; + readonly value: number; +} + +const number = new Intl.NumberFormat(undefined, { maximumFractionDigits: 1 }); +const wholeNumber = new Intl.NumberFormat(undefined, { maximumFractionDigits: 0 }); + +function formatNumber(value: number | null | undefined): string { + return value === null || value === undefined || !Number.isFinite(value) ? "—" : number.format(value); +} + +function formatWhole(value: number | null | undefined): string { + return value === null || value === undefined || !Number.isFinite(value) ? "—" : wholeNumber.format(value); +} + +function formatPercent(value: number | null | undefined): string { + return value === null || value === undefined || !Number.isFinite(value) ? "—" : `${number.format(value * 100)}%`; +} + +function formatSeconds(value: number | null | undefined): string { + return value === null || value === undefined || !Number.isFinite(value) ? "—" : `${number.format(value)}s`; +} + +function formatRatio(value: number | null | undefined): string { + return value === null || value === undefined || !Number.isFinite(value) ? "—" : `${number.format(value)}×`; +} + +function flagClass(flag: string): string { + if (flag === "high" || flag === "very high") return "is-high"; + if (flag === "low" || flag === "very low") return "is-low"; + return "is-baseline"; +} + +function BarChart({ + title, + description, + rows, + format = formatNumber, + tone = "damage", +}: { + readonly title: string; + readonly description: string; + readonly rows: readonly ChartDatum[]; + readonly format?: (value: number) => string; + readonly tone?: "damage" | "party" | "time" | "class" | "taken"; +}) { + const sorted = [...rows].filter((row) => Number.isFinite(row.value)).sort((left, right) => right.value - left.value); + const visible = sorted.slice(0, 15); + const maximum = Math.max(1, ...visible.map((row) => row.value)); + return ( +
+

{title}

{description}

{rows.length}
+
+ {visible.map((row) => ( +
+ {row.label}{row.detail} + + {format(row.value)} +
+ ))} + {visible.length === 0 &&

No matching data for this graph.

} +
+ {sorted.length > visible.length &&
Showing the highest 15 of {sorted.length}. The complete filtered set is available in the tables.
} +
+ ); +} + +function sortNumeric(rows: readonly T[], read: (row: T) => number | null, ascending: boolean): T[] { + return [...rows].sort((left, right) => { + const leftValue = read(left); + const rightValue = read(right); + const leftComparable = leftValue === null || !Number.isFinite(leftValue) ? Number.NEGATIVE_INFINITY : leftValue; + const rightComparable = rightValue === null || !Number.isFinite(rightValue) ? Number.NEGATIVE_INFINITY : rightValue; + return (leftComparable - rightComparable) * (ascending ? 1 : -1); + }); +} + +export function BalanceLabResults({ report }: { readonly report: BalanceLabSuiteReport }) { + const [tab, setTab] = useState("overview"); + const [search, setSearch] = useState(""); + const [partySource, setPartySource] = useState("all"); + const [bossSource, setBossSource] = useState("all"); + const [role, setRole] = useState("all"); + const [bossSort, setBossSort] = useState("incomingDtps"); + const [classSort, setClassSort] = useState("bossDps"); + const [abilityBuild, setAbilityBuild] = useState("all"); + const [abilityStatus, setAbilityStatus] = useState("all"); + const [abilitySort, setAbilitySort] = useState("effectiveDamage"); + const [partySort, setPartySort] = useState("partyDps"); + const [ascending, setAscending] = useState(false); + const query = search.trim().toLowerCase(); + + const bosses = useMemo(() => report.bosses.filter((boss) => ( + (bossSource === "all" || boss.category === bossSource) + && (!query || `${boss.bossName} ${boss.dungeonTitle} ${boss.bossKey} ${boss.pressureFlag}`.toLowerCase().includes(query)) + )), [bossSource, query, report.bosses]); + const classes = useMemo(() => report.classSpecs.filter((row) => ( + (partySource === "all" || row.source === partySource) + && (role === "all" || row.role === role) + && (!query || `${row.className} ${row.specialization} ${row.role} ${row.source} ${row.damageFlag}`.toLowerCase().includes(query)) + )), [partySource, query, report.classSpecs, role]); + const parties = useMemo(() => report.partyConfigurations.filter((row) => ( + (partySource === "all" || row.source === partySource) + && (!query || `${row.partyConfigurationId} ${row.source} ${row.members}`.toLowerCase().includes(query)) + )), [partySource, query, report.partyConfigurations]); + const allAbilities = report.classAbilities ?? []; + const abilityBuildOptions = useMemo(() => { + const unique = new Map(); + for (const row of allAbilities) unique.set(`${row.source}/${row.buildId}`, row); + return [...unique.entries()].sort((left, right) => ( + left[1].source.localeCompare(right[1].source) + || left[1].className.localeCompare(right[1].className) + || left[1].specialization.localeCompare(right[1].specialization) + )); + }, [allAbilities]); + const abilities = useMemo(() => allAbilities.filter((row) => { + const buildKey = `${row.source}/${row.buildId}`; + const matchesStatus = abilityStatus === "all" + || (abilityStatus === "used" && row.activeRuns > 0) + || (abilityStatus === "unused" && row.unusedAvailable) + || (abilityStatus === "unused-damage" && row.unusedAvailable && /damage|execute|debuff/i.test(row.categories)) + || (abilityStatus === "damage" && row.effectiveDamage > 0) + || (abilityStatus === "support" && (row.effectiveHealing > 0 || row.absorbs > 0)); + return (partySource === "all" || row.source === partySource) + && (role === "all" || row.role === role) + && (abilityBuild === "all" || buildKey === abilityBuild) + && matchesStatus + && (!query || `${row.className} ${row.specialization} ${row.role} ${row.source} ${row.abilityName} ${row.abilityId} ${row.categories} ${row.status}`.toLowerCase().includes(query)); + }), [abilityBuild, abilityStatus, allAbilities, partySource, query, role]); + + const sortedBosses = useMemo(() => sortNumeric(bosses, (row) => { + const value = row[bossSort]; + return typeof value === "number" ? value : null; + }, ascending), [ascending, bossSort, bosses]); + const sortedClasses = useMemo(() => sortNumeric(classes, (row) => { + const value = row[classSort]; + return typeof value === "number" ? value : null; + }, ascending), [ascending, classSort, classes]); + const sortedAbilities = useMemo(() => sortNumeric(abilities, (row) => { + const value = row[abilitySort]; + return typeof value === "number" ? value : null; + }, ascending), [abilities, abilitySort, ascending]); + const sortedParties = useMemo(() => sortNumeric(parties, (row) => { + const value = row[partySort]; + return typeof value === "number" ? value : null; + }, ascending), [ascending, parties, partySort]); + + const bossChart = (metric: keyof BalanceLabBossResult): ChartDatum[] => bosses.map((boss) => ({ + key: boss.bossKey, + label: boss.bossName, + detail: boss.dungeonTitle, + value: typeof boss[metric] === "number" ? boss[metric] as number : Number.NaN, + })); + const classChart = (metric: keyof BalanceLabClassSpecResult): ChartDatum[] => classes.map((row) => ({ + key: `${row.source}/${row.buildId}/${metric}`, + label: `${row.className} · ${row.specialization}`, + detail: `${row.source.toUpperCase()} · ${row.role}`, + value: typeof row[metric] === "number" ? row[metric] as number : Number.NaN, + })); + const abilityChart = (metric: keyof BalanceLabClassAbilityResult): ChartDatum[] => abilities.map((row) => ({ + key: `${row.source}/${row.buildId}/${row.abilityId}/${metric}`, + label: row.abilityName, + detail: `${row.className} · ${row.specialization}`, + value: typeof row[metric] === "number" ? row[metric] as number : Number.NaN, + })); + const availableAbilityCount = abilities.filter((row) => row.availableRuns > 0).length; + const unusedAbilityCount = abilities.filter((row) => row.unusedAvailable).length; + const usedAbilityCount = abilities.filter((row) => row.activeRuns > 0).length; + const filteredAbilityDamage = abilities.reduce((total, row) => total + row.effectiveDamage, 0); + + return ( +
+
+
+

Run analysis

+

Level {report.level} balance report

+

{new Date(report.generatedAt).toLocaleString()} · {report.summary.runs.toLocaleString()} simulations · every filtered row remains available below.

+
+
+ + + + +
+
+ + + + {tab === "overview" &&
+
+
Party configurations{report.summary.partyConfigurations.toLocaleString()}
+
Bosses tested{report.summary.bosses.toLocaleString()}
+
Class/spec builds{report.summary.classSpecs.toLocaleString()}
+
Median boss pressure{formatNumber(report.summary.bossPressureMedianDtps)} DTPS
+
+
+ + + + + +
+
} + + {tab === "bosses" &&
+

Every boss

{sortedBosses.length} matching bosses · pressure, outgoing damage, party output, kill time, survival, and outcomes.

+
{sortedBosses.map((boss) => )}
BossSourceRunsBoss → party DTPSAvg party damagePressureParty → boss DPSTotal party DPSKill timeDefeatWipeAvg deathsBoss health
{boss.bossName}{boss.dungeonTitle}{boss.category.toUpperCase()}{boss.runs.toLocaleString()}{formatNumber(boss.incomingDtps)}{formatWhole(boss.averageIncomingDamage)}{formatRatio(boss.pressureVsMedian)} · {boss.pressureFlag}{formatNumber(boss.bossDpsTaken)}{formatNumber(boss.partyDps)}{formatSeconds(boss.averageTimeToDefeat)}{formatPercent(boss.defeatRate)}{formatPercent(boss.wipeRate)}{formatNumber(boss.averageDeaths)}{formatWhole(boss.bossMaxHealth)}
+
} + + {tab === "classes" &&
+

Every class and specialization

{sortedClasses.length} matching builds · output, healing, mitigation, survivability, and role-relative tuning.

+
{sortedClasses.map((row) => )}
Class / specializationSourceRolePartiesRunsBoss DPSTotal DPSHPSDamage taken / secTotal damage takenRole medianTotal damage dealtTotal healingAbsorbsDeaths
{row.className}{row.specialization}{row.source.toUpperCase()}{row.role}{row.partyConfigurations.toLocaleString()}{row.runs.toLocaleString()}{formatNumber(row.bossDps)}{formatNumber(row.dps)}{formatNumber(row.hps)}{formatNumber(row.dtps)}{formatWhole(row.totalDamageTaken)}{formatRatio(row.damageVsSourceRoleMedian)} · {row.damageFlag}{formatWhole(row.totalDamage)}{formatWhole(row.totalHealing)}{formatWhole(row.totalAbsorbs)}{row.deathEvents.toLocaleString()}
+
} + + {tab === "abilities" &&
+ {allAbilities.length === 0 ?

This saved run predates ability-level reporting. Run the same configuration again to populate ability use, unused abilities, damage share, healing, and absorbs.

: <> +
+
Matching abilities{abilities.length.toLocaleString()}
+
Used in at least one run{usedAbilityCount.toLocaleString()}
+
Available but unused{unusedAbilityCount.toLocaleString()}
+
Filtered effective damage{formatWhole(filteredAbilityDamage)}
+
+ +
+

Every class/spec ability

{sortedAbilities.length} matching abilities · {availableAbilityCount} are available to the tested builds. Zero-use rows are deliberately retained.

+ + + + +
+
{sortedAbilities.map((row) => + + + )}
AbilityClass / specializationSourceRoleAI categoryUsage stateActive runsUsage rateCastsCasts / minHitsEffective damageDamage shareDPSDamage / hitRaw damageEffective healingOverhealAbsorbsCooldown
{row.icon && }{row.abilityName}{row.abilityId}{row.className}{row.specialization}{row.source.toUpperCase()}{row.role}{row.categories || "—"}{row.unusedAvailable ? "available · unused" : row.status}{row.activeRuns}/{row.runs}{formatPercent(row.usageRate)}{row.casts.toLocaleString()}{formatNumber(row.castsPerMinute)}{row.hits.toLocaleString()}{formatWhole(row.effectiveDamage)}{formatPercent(row.damageShare)}{formatNumber(row.dps)}{formatNumber(row.averageDamagePerHit)}{formatWhole(row.rawDamage)}{formatWhole(row.effectiveHealing)}{formatWhole(row.overheal)}{formatWhole(row.absorbs)}{row.cooldownSeconds === null ? "—" : formatSeconds(row.cooldownSeconds)}
+
+ } +
} + + {tab === "parties" &&
+

Every party configuration

{sortedParties.length} matching parties · compare composition output, healer pressure, outcomes, and deaths.

+
{sortedParties.map((row) => )}
PartySourceMembersRunsParty DPSIncoming DTPSDefeatWipeAvg deaths
{row.partyConfigurationId}{row.source.toUpperCase()}{row.members}{row.runs.toLocaleString()}{formatNumber(row.partyDps)}{formatNumber(row.incomingDtps)}{formatPercent(row.defeatRate)}{formatPercent(row.wipeRate)}{formatNumber(row.averageDeaths)}
+
} +
+ ); +} diff --git a/src/ui/BalanceLabScreen.tsx b/src/ui/BalanceLabScreen.tsx new file mode 100644 index 00000000..544e9946 --- /dev/null +++ b/src/ui/BalanceLabScreen.tsx @@ -0,0 +1,296 @@ +import { useEffect, useMemo, useState } from "react"; +import { sessionCanUseGmTools } from "../app/releaseFeatures"; +import { useShellStore } from "../app/shellStore"; +import { + fetchBalanceLabArtifact, + getBalanceLabJob, + getBalanceLabReport, + listBalanceLabJobs, + startBalanceLabJob, + type BalanceLabBossCategory, + type BalanceLabJob, + type BalanceLabPartySource, + type BalanceLabSuiteReport, +} from "../app/balanceLabClient"; +import { BOSS_TESTING_CATALOG } from "../game/bossTesting"; +import { BalanceLabResults } from "./BalanceLabResults"; +import { BrandMark, FrontSurface } from "./FrontSurface"; + +type BossScope = BalanceLabBossCategory | "specific"; + +const ARTIFACT_LABELS: Readonly> = { + "suite-report.html": "Open full report", + "suite-report.json": "Download report JSON", + "suite-report.md": "Download report Markdown", + "party_configurations.csv": "Party configurations CSV", + "class_specs_across_parties.csv": "Class/spec totals CSV", + "class_abilities_across_parties.csv": "Class/spec ability breakdown CSV", + "class_spec_by_boss.csv": "Class/spec by boss CSV", + "bosses_across_parties.csv": "Boss totals CSV", + "boss_by_party.csv": "Boss by party CSV", + "suite_runs.csv": "Every simulation CSV", + "suite-config.json": "Exact rerun configuration", +}; + +function errorMessage(error: unknown): string { + return error instanceof Error ? error.message : "The Balance Lab request failed."; +} + +function progressPercent(job: BalanceLabJob): number { + if (job.status === "complete") return 100; + if (job.status === "queued" || job.progress.partiesTotal < 1) return 0; + const currentFraction = job.progress.simulationsTotal > 0 + ? job.progress.simulationsCompleted / job.progress.simulationsTotal + : 0; + return Math.max(0, Math.min(99, ((job.progress.partiesCompleted + currentFraction) / job.progress.partiesTotal) * 100)); +} + +function describeJob(job: BalanceLabJob): string { + if (job.status === "queued") return "Waiting for the current server job to finish."; + if (job.status === "failed") return job.error ?? "The server job failed."; + if (job.status === "complete") return job.summary + ? `Completed ${job.summary.runs.toLocaleString()} simulations across ${job.summary.bosses.toLocaleString()} bosses and ${job.summary.partyConfigurations.toLocaleString()} party configurations.` + : `Completed ${job.progress.partiesTotal} party configurations.`; + const party = job.progress.party || job.progress.partiesCompleted + 1; + const simulation = job.progress.simulationsTotal > 0 + ? ` · current party ${job.progress.simulationsCompleted}/${job.progress.simulationsTotal} boss simulations` + : ""; + return `Party ${party}/${job.progress.partiesTotal}${simulation}`; +} + +export function BalanceLabScreen({ onClose }: { readonly onClose: () => void }) { + const session = useShellStore((state) => state.session); + const token = session?.accessToken ?? ""; + const [source, setSource] = useState("all"); + const [level, setLevel] = useState(60); + const [partyConfigurations, setPartyConfigurations] = useState(10); + const [simulationsPerParty, setSimulationsPerParty] = useState(3); + const [durationSeconds, setDurationSeconds] = useState(60); + const [partySeed, setPartySeed] = useState(1); + const [bossScope, setBossScope] = useState("all"); + const [bossSearch, setBossSearch] = useState(""); + const [selectedBossKeys, setSelectedBossKeys] = useState([]); + const [jobs, setJobs] = useState([]); + const [selectedJobId, setSelectedJobId] = useState(null); + const [jobSearch, setJobSearch] = useState(""); + const [jobStatus, setJobStatus] = useState<"all" | BalanceLabJob["status"]>("all"); + const [reports, setReports] = useState>>({}); + const [reportLoadingId, setReportLoadingId] = useState(null); + const [reportError, setReportError] = useState(""); + const [loading, setLoading] = useState(true); + const [submitting, setSubmitting] = useState(false); + const [error, setError] = useState(""); + + const selectedJob = jobs.find((job) => job.id === selectedJobId) ?? jobs[0] ?? null; + const selectedReport = selectedJob ? reports[selectedJob.id] ?? null : null; + const visibleJobs = useMemo(() => { + const query = jobSearch.trim().toLowerCase(); + return jobs.filter((job) => ( + (jobStatus === "all" || job.status === jobStatus) + && (!query || `${job.requestedBy} ${job.spec.source} ${job.spec.level} ${job.id} ${job.status}`.toLowerCase().includes(query)) + )); + }, [jobSearch, jobStatus, jobs]); + const filteredBosses = useMemo(() => { + const query = bossSearch.trim().toLowerCase(); + return BOSS_TESTING_CATALOG.filter((boss) => !query + || `${boss.name} ${boss.dungeonTitle} ${boss.key} ${boss.category}`.toLowerCase().includes(query)); + }, [bossSearch]); + const selectedBossSet = useMemo(() => new Set(selectedBossKeys), [selectedBossKeys]); + const bossCount = bossScope === "specific" + ? selectedBossKeys.length + : BOSS_TESTING_CATALOG.filter((boss) => bossScope === "all" || boss.category === bossScope).length; + const partyCount = partyConfigurations * (source === "all" ? 3 : 1); + const estimatedRuns = partyCount * bossCount * simulationsPerParty; + + useEffect(() => { + if (!token) return; + let cancelled = false; + setLoading(true); + void listBalanceLabJobs(token).then((nextJobs) => { + if (cancelled) return; + setJobs(nextJobs); + setSelectedJobId((current) => current ?? nextJobs[0]?.id ?? null); + setError(""); + }).catch((reason) => { + if (!cancelled) setError(errorMessage(reason)); + }).finally(() => { + if (!cancelled) setLoading(false); + }); + return () => { cancelled = true; }; + }, [token]); + + useEffect(() => { + if (!token || !selectedJob || (selectedJob.status !== "queued" && selectedJob.status !== "running")) return; + let cancelled = false; + const timer = window.setInterval(() => { + void getBalanceLabJob(selectedJob.id, token).then((updated) => { + if (cancelled) return; + setJobs((current) => [updated, ...current.filter((job) => job.id !== updated.id)]); + }).catch((reason) => { + if (!cancelled) setError(errorMessage(reason)); + }); + }, 1_500); + return () => { cancelled = true; window.clearInterval(timer); }; + }, [selectedJob, token]); + + useEffect(() => { + if (!token || !selectedJob || selectedJob.status !== "complete" || selectedReport + || !selectedJob.artifacts.includes("suite-report.json")) return; + let cancelled = false; + setReportLoadingId(selectedJob.id); + setReportError(""); + void getBalanceLabReport(selectedJob.id, token).then((report) => { + if (!cancelled) setReports((current) => ({ ...current, [selectedJob.id]: report })); + }).catch((reason) => { + if (!cancelled) setReportError(errorMessage(reason)); + }).finally(() => { + if (!cancelled) setReportLoadingId((current) => current === selectedJob.id ? null : current); + }); + return () => { cancelled = true; }; + }, [selectedJob, selectedReport, token]); + + if (!sessionCanUseGmTools(session)) { + return ( + +
+ +

Game Master access required

+

Server simulations are available only to server-authorized GM accounts.

+ +
+
+ ); + } + + const toggleBoss = (key: string) => { + setSelectedBossKeys((current) => current.includes(key) + ? current.filter((candidate) => candidate !== key) + : [...current, key]); + }; + + const run = async () => { + if (bossScope === "specific" && selectedBossKeys.length === 0) { + setError("Select at least one boss for a specific-boss run."); + return; + } + setSubmitting(true); + setError(""); + try { + const job = await startBalanceLabJob({ + source, + level, + partyConfigurations, + simulationsPerParty, + durationSeconds, + partySeed, + bossCategory: bossScope === "specific" ? "all" : bossScope, + bossKeys: bossScope === "specific" ? selectedBossKeys : [], + }, token); + setJobs((current) => [job, ...current.filter((candidate) => candidate.id !== job.id)]); + setSelectedJobId(job.id); + } catch (reason) { + setError(errorMessage(reason)); + } finally { + setSubmitting(false); + } + }; + + const openArtifact = async (job: BalanceLabJob, name: string) => { + const preview = name.endsWith(".html") ? window.open("", "_blank") : null; + setError(""); + try { + const blob = await fetchBalanceLabArtifact(job.id, name, token); + const url = URL.createObjectURL(blob); + if (preview) preview.location.href = url; + else { + const anchor = document.createElement("a"); + anchor.href = url; + anchor.download = name; + anchor.click(); + } + window.setTimeout(() => URL.revokeObjectURL(url), 60_000); + } catch (reason) { + preview?.close(); + setError(errorMessage(reason)); + } + }; + + return ( + +
+ +
Server-authorized GM toolBalance Lab
+
+ +
+
+
+
+

New automatic sweep

+

Simulation setup

+

This mode runs on the game server. The browser submits the job and may be closed while the server continues.

+
+ + + + + + + +
+ {bossScope === "specific" && ( +
+
setBossSearch(event.currentTarget.value)} placeholder="Search boss, dungeon, or key" />{selectedBossKeys.length} selected
+
+ {filteredBosses.map((boss) => )} +
+
+ )} +
Party configurations {partyCount.toLocaleString()}Bosses {bossCount.toLocaleString()}Total simulations {estimatedRuns.toLocaleString()}
+ +

To spend this device's CPU instead, run npm run balance:lab from the project checkout.

+ {error &&

{error}

} +
+ +
+

Saved on server

Run history

+
setJobSearch(event.currentTarget.value)} />
+
+ {visibleJobs.map((job) => )} + {!loading && visibleJobs.length === 0 &&

No saved runs match these filters.

} +
+
+ + + {selectedJob?.status === "complete" &&
+ {reportLoadingId === selectedJob.id &&

Loading this run's complete analysis…

} + {reportError && !selectedReport &&

{reportError}

} + {selectedReport && } +
} +
+
+ ); +} diff --git a/src/ui/BossTestingReviewPanel.tsx b/src/ui/BossTestingReviewPanel.tsx index 781dbdc8..f8eee5c1 100644 --- a/src/ui/BossTestingReviewPanel.tsx +++ b/src/ui/BossTestingReviewPanel.tsx @@ -2,6 +2,8 @@ import { useEffect, useRef, useState } from "react"; import { useShellStore } from "../app/shellStore"; import { BOSS_TESTING_STATUSES, BOSS_TESTING_STATUS_LABELS, useBossTestingReviews, type BossTestingStatus } from "../app/bossTestingReviews"; import { bossTestIsDefeated } from "../game/BossTestingBridge"; +import { enterBossTesting, prepareBossTesting } from "../app/bossTestingRuntime"; +import { anotherRandomTestingBoss, BOSS_TESTING_CATALOG } from "../game/bossTesting"; import { useGameStore } from "../game/store"; import { useMenuController, type MenuAction } from "../input/useMenuController"; import { ControllerButton } from "./ControllerButton"; @@ -14,6 +16,7 @@ export function BossTestingReviewPanel() { const save = useBossTestingReviews((state) => state.save); const refresh = useBossTestingReviews((state) => state.refresh); const [saving, setSaving] = useState(false); + const [startingRandom, setStartingRandom] = useState(false); const [message, setMessage] = useState(""); const busy = useRef(false); const mark = async (status: BossTestingStatus) => { @@ -30,21 +33,37 @@ export function BossTestingReviewPanel() { return () => window.removeEventListener("online", reconnect); }, [refresh, session]); const defeated = bossTestIsDefeated(); + const disabled = saving || startingRandom; const back = () => { if (!busy.current) useGameStore.getState().openOverlay("pause"); }; const retry = () => useGameStore.getState().resetAtEntrance(); const leave = () => useShellStore.getState().returnToMainMenu(); + const fightRandom = async () => { + if (busy.current || !boss) return; + const next = anotherRandomTestingBoss(BOSS_TESTING_CATALOG, boss.key); + if (!next) { setMessage("No other bosses are available."); return; } + busy.current = true; setStartingRandom(true); setMessage(`Preparing ${next.name}…`); + try { + await prepareBossTesting(next); + enterBossTesting(next, useShellStore.getState().activeDungeonRole ?? undefined); + } catch (failure) { + setMessage(failure instanceof Error ? failure.message : "The next boss could not be started. Please retry."); + } finally { + busy.current = false; setStartingRandom(false); + } + }; const actions: MenuAction[] = [ - ...BOSS_TESTING_STATUSES.map((status) => ({ id: `boss-review-${status}`, run: () => void mark(status), enabled: !saving })), - { id: "boss-review-report", run: () => useGameStore.getState().openOverlay("report-issue"), enabled: !saving }, - { id: "boss-review-retry", run: retry, enabled: !saving }, - { id: "boss-review-leave", run: leave, enabled: !saving }, - { id: "boss-review-back", run: back, enabled: !saving }, + ...BOSS_TESTING_STATUSES.map((status) => ({ id: `boss-review-${status}`, run: () => void mark(status), enabled: !disabled })), + { id: "boss-review-report", run: () => useGameStore.getState().openOverlay("report-issue"), enabled: !disabled }, + { id: "boss-review-retry", run: retry, enabled: !disabled }, + { id: "boss-review-random", run: () => void fightRandom(), enabled: !disabled }, + { id: "boss-review-leave", run: leave, enabled: !disabled }, + { id: "boss-review-back", run: back, enabled: !disabled }, ]; const controller = useMenuController(actions, { initialId: "boss-review-needs-testing", onBack: back }); if (!boss) return null; const button = (controlId: string, label: string, run: () => void, pressed?: boolean) => {label}; + type="button" className="button" onClick={run} disabled={disabled} aria-pressed={pressed}>{label}; return

{defeated ? "Boss defeated" : "Boss Testing paused"}

{boss.name}

@@ -56,6 +75,7 @@ export function BossTestingReviewPanel() {
{button("boss-review-report", "Submit a boss report", () => useGameStore.getState().openOverlay("report-issue"))} {button("boss-review-retry", "Fight this boss again", retry)} + {button("boss-review-random", startingRandom ? "Preparing random boss…" : "Fight another random boss", () => void fightRandom())} {button("boss-review-leave", "Return to main menu", leave)} {button("boss-review-back", "Back to pause menu", back)}
diff --git a/src/ui/DungeonSimulationAdminScreen.tsx b/src/ui/DungeonSimulationAdminScreen.tsx new file mode 100644 index 00000000..f5cffe14 --- /dev/null +++ b/src/ui/DungeonSimulationAdminScreen.tsx @@ -0,0 +1,249 @@ +import { useEffect, useMemo, useState } from "react"; +import { + deleteDungeonSimulationReplay, + fetchDungeonSimulationReplay, + fetchDungeonSimulationReplays, + fetchDungeonSimulationReport, + fetchGmDungeonRoutes, + putDungeonRouteReview, +} from "../app/dungeonSimulationClient"; +import { enterDungeonSimulation, enterDungeonSimulationReplay } from "../app/dungeonSimulationRuntime"; +import { sessionCanUseGmTools } from "../app/releaseFeatures"; +import { useShellStore } from "../app/shellStore"; +import { DUNGEON_CATALOG } from "../game/dungeonCatalog"; +import { DUNGEON_ROUTE_CATALOG } from "../game/dungeonRoutes"; +import type { + DungeonReplaySummary, + DungeonRouteReview, + DungeonRouteReviewStatus, + DungeonSimulationMode, + DungeonSimulationReportV1, +} from "../game/dungeonSimulationTypes"; +import { BrandMark, FrontSurface } from "./FrontSurface"; + +function saveReport(report: DungeonSimulationReportV1): void { + const url = URL.createObjectURL(new Blob([JSON.stringify(report, null, 2)], { type: "application/json" })); + const anchor = document.createElement("a"); + anchor.href = url; + anchor.download = `${report.dungeonId}-${report.seed}-SimulationReportV1.json`; + anchor.click(); + URL.revokeObjectURL(url); +} + +export function DungeonSimulationAdminScreen() { + const session = useShellStore((state) => state.session); + const returnToMainMenu = useShellStore((state) => state.returnToMainMenu); + const [selectedDungeonId, setSelectedDungeonId] = useState(DUNGEON_ROUTE_CATALOG.routes[0]?.dungeonId ?? ""); + const [mode, setMode] = useState("navigation-only"); + const [seed, setSeed] = useState("route-review-001"); + const [reviews, setReviews] = useState([]); + const [replays, setReplays] = useState([]); + const [reviewStatus, setReviewStatus] = useState("Candidate"); + const [reviewNote, setReviewNote] = useState(""); + const [overrideNote, setOverrideNote] = useState(""); + const [busy, setBusy] = useState(false); + const [message, setMessage] = useState(""); + const route = DUNGEON_ROUTE_CATALOG.routes.find((candidate) => candidate.dungeonId === selectedDungeonId) + ?? DUNGEON_ROUTE_CATALOG.routes[0]; + const dungeon = DUNGEON_CATALOG.find((candidate) => candidate.id === route?.dungeonId); + const storedReview = reviews.find((candidate) => candidate.dungeonId === route?.dungeonId + && candidate.routeId === route?.id) ?? null; + const review = storedReview?.routeHash === route?.hash ? storedReview : null; + const routeReplays = useMemo(() => replays.filter((replay) => ( + replay.dungeonId === route?.dungeonId && replay.routeId === route?.id && replay.routeHash === route?.hash + )), [replays, route?.dungeonId, route?.hash, route?.id]); + + const refresh = async () => { + if (!sessionCanUseGmTools(session)) return; + setBusy(true); + try { + const [routes, recordings] = await Promise.all([ + fetchGmDungeonRoutes(session), + fetchDungeonSimulationReplays(session), + ]); + setReviews(routes.reviews); + setReplays(recordings); + setMessage(""); + } catch (error) { + setMessage(error instanceof Error ? error.message : "Unable to load route reviews."); + } finally { + setBusy(false); + } + }; + + useEffect(() => { void refresh(); }, [session]); + useEffect(() => { + setReviewStatus(review?.status ?? (route?.generationStatus === "Rejected" ? "NeedsWork" : "Candidate")); + setReviewNote(review?.note ?? ""); + setOverrideNote(review?.criticalOverrideNote ?? ""); + }, [review?.revision, route?.hash]); + + if (!sessionCanUseGmTools(session)) { + return ( + +
+ +

Game Master access required

+

Dungeon simulation artifacts require a server-authenticated GM account.

+ +
+
+ ); + } + + const saveReview = async () => { + if (!route) return; + setBusy(true); + try { + const updated = await putDungeonRouteReview(session, { + dungeonId: route.dungeonId, + routeId: route.id, + routeHash: route.hash, + }, { + status: reviewStatus, + expectedRevision: storedReview?.revision ?? 0, + note: reviewNote, + criticalOverrideNote: overrideNote, + }); + setReviews((current) => [...current.filter((candidate) => !( + candidate.dungeonId === updated.dungeonId && candidate.routeId === updated.routeId + )), updated]); + setMessage(`Review saved at revision ${updated.revision}.`); + } catch (error) { + setMessage(error instanceof Error ? error.message : "Unable to save review."); + } finally { + setBusy(false); + } + }; + + const openReplay = async (id: string) => { + setBusy(true); + try { + const replay = await fetchDungeonSimulationReplay(session, id); + if (!enterDungeonSimulationReplay(replay)) setMessage("The replay could not be opened."); + } catch (error) { + setMessage(error instanceof Error ? error.message : "Unable to load replay."); + setBusy(false); + } + }; + + const removeReplay = async (id: string) => { + setBusy(true); + try { + await deleteDungeonSimulationReplay(session, id); + setReplays((current) => current.filter((candidate) => candidate.id !== id)); + setMessage("Recording deleted."); + } catch (error) { + setMessage(error instanceof Error ? error.message : "Unable to delete replay."); + } finally { + setBusy(false); + } + }; + + const downloadReplayReport = async (id: string) => { + setBusy(true); + try { + saveReport(await fetchDungeonSimulationReport(session, id)); + setMessage(""); + } catch (error) { + setMessage(error instanceof Error ? error.message : "Unable to download report."); + } finally { + setBusy(false); + } + }; + + return ( + +
+ +

Game Master tools

Dungeon route simulations

+
+ + +
+
+ +
+
+ +
+ + {review?.status ?? (route?.generationStatus === "Rejected" ? "NeedsWork" : "Candidate")} + + {dungeon?.title ?? route?.dungeonId} + {route?.hash} + {route?.legs.length ?? 0} required legs · {route?.legs.reduce((sum, leg) => sum + leg.checkpoints.length, 0) ?? 0} checkpoints + {route?.generationStatus === "Rejected" && Offline rejection: {route.generationIssues.join(", ")}} +
+ +
+ Launch live simulation + + + +
+ +
+ Exact-hash review + +