azeroth-shell 0.0.0-stage → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +138 -2
- package/bin/azsh.mjs +19 -0
- package/docs/aifid/eventai-texts.json +4414 -0
- package/docs/dungeons/atlas/atlas-rows-dungeons.json +8989 -0
- package/docs/dungeons/survey/pack-id-migration.json +2418 -0
- package/package.json +35 -4
- package/src/autopilot/bossSkip.ts +26 -0
- package/src/autopilot/combatRotation.ts +824 -0
- package/src/autopilot/config.ts +533 -0
- package/src/autopilot/consumables.ts +58 -0
- package/src/autopilot/encounterStand.ts +121 -0
- package/src/autopilot/objectGatePlan.ts +53 -0
- package/src/autopilot/pathEngage.ts +229 -0
- package/src/autopilot/plan.ts +1643 -0
- package/src/autopilot/questPolicy.ts +274 -0
- package/src/autopilot/routeStep.ts +69 -0
- package/src/autopilot/sessionReport.ts +88 -0
- package/src/autopilot/topOffPower.ts +26 -0
- package/src/autopilot/view.ts +476 -0
- package/src/cli/bootCheck.mjs +34 -0
- package/src/cli/bootData.mjs +57 -0
- package/src/cli/combatLogFilter.ts +153 -0
- package/src/cli/combatLogFormat.ts +613 -0
- package/src/cli/fileRepository.mjs +105 -0
- package/src/cli/gzLoader.mjs +31 -0
- package/src/cli/liveGauntletEscort.ts +978 -0
- package/src/cli/liveStratUndead.ts +305 -0
- package/src/cli/macroHostCombat.ts +545 -0
- package/src/cli/macroHostWorld.ts +330 -0
- package/src/cli/prefs.mjs +31 -0
- package/src/cli/register.mjs +4 -0
- package/src/cli/repl.mjs +693 -0
- package/src/cli/rotationText.mjs +226 -0
- package/src/cli/squad.mjs +105 -0
- package/src/cli/term.mjs +144 -0
- package/src/cli/text.mjs +122 -0
- package/src/cli/tui.mjs +626 -0
- package/src/cli/tuiArena.mjs +109 -0
- package/src/cli/tuiAutopilotSettings.mjs +93 -0
- package/src/cli/tuiBags.mjs +180 -0
- package/src/cli/tuiBars.mjs +133 -0
- package/src/cli/tuiBg.mjs +243 -0
- package/src/cli/tuiBulk.mjs +162 -0
- package/src/cli/tuiCheck.mjs +1882 -0
- package/src/cli/tuiCity.mjs +396 -0
- package/src/cli/tuiCompanionKit.mjs +300 -0
- package/src/cli/tuiCompanions.mjs +471 -0
- package/src/cli/tuiDev.mjs +62 -0
- package/src/cli/tuiDungeon.mjs +606 -0
- package/src/cli/tuiEnchantTarget.mjs +120 -0
- package/src/cli/tuiFight.mjs +577 -0
- package/src/cli/tuiFightPanes.mjs +228 -0
- package/src/cli/tuiFloor.mjs +506 -0
- package/src/cli/tuiGear.mjs +158 -0
- package/src/cli/tuiHonor.mjs +74 -0
- package/src/cli/tuiLoot.mjs +97 -0
- package/src/cli/tuiMacros.mjs +144 -0
- package/src/cli/tuiOutfitter.mjs +115 -0
- package/src/cli/tuiPet.mjs +116 -0
- package/src/cli/tuiProfessions.mjs +800 -0
- package/src/cli/tuiRaid.mjs +127 -0
- package/src/cli/tuiRep.mjs +65 -0
- package/src/cli/tuiSaves.mjs +69 -0
- package/src/cli/tuiSearch.mjs +363 -0
- package/src/cli/tuiSettings.mjs +151 -0
- package/src/cli/tuiSimLab.mjs +80 -0
- package/src/cli/tuiTalents.mjs +60 -0
- package/src/cli/tuiViews.mjs +1178 -0
- package/src/cli/tuiWiki.mjs +181 -0
- package/src/cli/tuiWorld.mjs +361 -0
- package/src/cli/wikiIndex.ts +259 -0
- package/src/cli/wikiSources.ts +355 -0
- package/src/data/alteracValley.ts +176 -0
- package/src/data/appearanceOptions.ts +534 -0
- package/src/data/applyLootChanceSanity.ts +21 -0
- package/src/data/createFlavor.ts +96 -0
- package/src/data/customItems.ts +33 -0
- package/src/data/dataStore.ts +1904 -0
- package/src/data/dungeonGameObjects.ts +84 -0
- package/src/data/dungeonPlateCover.ts +66 -0
- package/src/data/dungeonSpawns.ts +294 -0
- package/src/data/dungeons/alterac-valley.ts +135 -0
- package/src/data/dungeons/apply-dungeon-rooms.ts +29 -0
- package/src/data/dungeons/apply-encounter-outdoors.ts +72 -0
- package/src/data/dungeons/apply-instance-geometry.ts +65 -0
- package/src/data/dungeons/apply-spawn-placement.ts +171 -0
- package/src/data/dungeons/blackfathom-deeps.ts +539 -0
- package/src/data/dungeons/blackrock-depths.ts +1410 -0
- package/src/data/dungeons/blackwing-lair.ts +129 -0
- package/src/data/dungeons/boss-eventai.ts +8 -0
- package/src/data/dungeons/deadmines.ts +410 -0
- package/src/data/dungeons/dire-maul-east.ts +980 -0
- package/src/data/dungeons/dire-maul-north.ts +661 -0
- package/src/data/dungeons/dire-maul-west.ts +785 -0
- package/src/data/dungeons/dungeon-rooms.json +5479 -0
- package/src/data/dungeons/encounter-outdoors.json +359 -0
- package/src/data/dungeons/eventai/blackfathom-deeps.ts +308 -0
- package/src/data/dungeons/eventai/blackrock-depths.ts +1257 -0
- package/src/data/dungeons/eventai/deadmines.ts +264 -0
- package/src/data/dungeons/eventai/dire-maul-east.ts +320 -0
- package/src/data/dungeons/eventai/gnomeregan.ts +213 -0
- package/src/data/dungeons/eventai/helpers.ts +79 -0
- package/src/data/dungeons/eventai/index.ts +133 -0
- package/src/data/dungeons/eventai/lbrs.ts +372 -0
- package/src/data/dungeons/eventai/maraudon.ts +323 -0
- package/src/data/dungeons/eventai/ragefire-chasm.ts +108 -0
- package/src/data/dungeons/eventai/razorfen-downs.ts +207 -0
- package/src/data/dungeons/eventai/razorfen-kraul.ts +326 -0
- package/src/data/dungeons/eventai/scholomance.ts +680 -0
- package/src/data/dungeons/eventai/shadowfang-keep.ts +230 -0
- package/src/data/dungeons/eventai/sm-cathedral.ts +75 -0
- package/src/data/dungeons/eventai/sm-graveyard.ts +150 -0
- package/src/data/dungeons/eventai/sm-library.ts +55 -0
- package/src/data/dungeons/eventai/stratholme-undead.ts +127 -0
- package/src/data/dungeons/eventai/sunken-temple.ts +582 -0
- package/src/data/dungeons/eventai/the-stockade.ts +228 -0
- package/src/data/dungeons/eventai/ubrs.ts +225 -0
- package/src/data/dungeons/eventai/uldaman.ts +355 -0
- package/src/data/dungeons/eventai/wailing-caverns.ts +396 -0
- package/src/data/dungeons/eventai/zul-farrak.ts +591 -0
- package/src/data/dungeons/gnomeregan.ts +909 -0
- package/src/data/dungeons/index.ts +126 -0
- package/src/data/dungeons/instance-geometry.json +5233 -0
- package/src/data/dungeons/key-sources.json +169 -0
- package/src/data/dungeons/lbrs.ts +996 -0
- package/src/data/dungeons/maraudon.ts +786 -0
- package/src/data/dungeons/molten-core.ts +194 -0
- package/src/data/dungeons/naxxramas.ts +173 -0
- package/src/data/dungeons/onyxias-lair.ts +71 -0
- package/src/data/dungeons/pack-from-clusters.ts +1256 -0
- package/src/data/dungeons/ragefire-chasm.ts +238 -0
- package/src/data/dungeons/razorfen-downs.ts +698 -0
- package/src/data/dungeons/razorfen-kraul.ts +766 -0
- package/src/data/dungeons/ruins-of-ahnqiraj.ts +121 -0
- package/src/data/dungeons/scholomance.ts +1076 -0
- package/src/data/dungeons/shadowfang-keep.ts +740 -0
- package/src/data/dungeons/sm-armory.ts +266 -0
- package/src/data/dungeons/sm-cathedral.ts +430 -0
- package/src/data/dungeons/sm-graveyard.ts +482 -0
- package/src/data/dungeons/sm-library.ts +337 -0
- package/src/data/dungeons/stratholme-live.ts +808 -0
- package/src/data/dungeons/stratholme-undead.ts +1164 -0
- package/src/data/dungeons/sunken-temple.ts +931 -0
- package/src/data/dungeons/temple-of-ahnqiraj.ts +119 -0
- package/src/data/dungeons/the-stockade.ts +282 -0
- package/src/data/dungeons/ubrs.ts +1286 -0
- package/src/data/dungeons/uldaman.ts +685 -0
- package/src/data/dungeons/wailing-caverns.ts +356 -0
- package/src/data/dungeons/zul-farrak.ts +686 -0
- package/src/data/dungeons/zul-gurub.ts +142 -0
- package/src/data/dungeons.ts +42 -0
- package/src/data/fixtures.ts +446 -0
- package/src/data/gameobject-data.json.gz +0 -0
- package/src/data/item-data.json.gz +0 -0
- package/src/data/loot-data.json.gz +0 -0
- package/src/data/maps/atlas-approach-maps.json +1425 -0
- package/src/data/maps/atlas-landmarks.json +1711 -0
- package/src/data/maps/dungeon-viewports.json +392 -0
- package/src/data/materializeModDamagePercentTaken.ts +70 -0
- package/src/data/materializeModHealthRegen.ts +89 -0
- package/src/data/materializeSpellReputation.ts +26 -0
- package/src/data/pageTexts.ts +19 -0
- package/src/data/profession-data.json.gz +0 -0
- package/src/data/raid-plans/blackfathom-deeps.json +86 -0
- package/src/data/raid-plans/blackrock-depths.json +419 -0
- package/src/data/raid-plans/blackwing-lair.json +328 -0
- package/src/data/raid-plans/deadmines.json +55 -0
- package/src/data/raid-plans/dire-maul-east.json +94 -0
- package/src/data/raid-plans/dire-maul-north.json +70 -0
- package/src/data/raid-plans/dire-maul-west.json +75 -0
- package/src/data/raid-plans/gnomeregan.json +131 -0
- package/src/data/raid-plans/lbrs.json +176 -0
- package/src/data/raid-plans/maraudon.json +102 -0
- package/src/data/raid-plans/molten-core.json +169 -0
- package/src/data/raid-plans/naxxramas.json +354 -0
- package/src/data/raid-plans/onyxias-lair.json +18 -0
- package/src/data/raid-plans/ragefire-chasm.json +30 -0
- package/src/data/raid-plans/razorfen-downs.json +75 -0
- package/src/data/raid-plans/razorfen-kraul.json +53 -0
- package/src/data/raid-plans/ruins-of-ahnqiraj.json +110 -0
- package/src/data/raid-plans/scholomance.json +170 -0
- package/src/data/raid-plans/shadowfang-keep.json +87 -0
- package/src/data/raid-plans/sm-armory.json +53 -0
- package/src/data/raid-plans/sm-cathedral.json +72 -0
- package/src/data/raid-plans/sm-graveyard.json +63 -0
- package/src/data/raid-plans/sm-library.json +23 -0
- package/src/data/raid-plans/stratholme-live.json +129 -0
- package/src/data/raid-plans/stratholme-undead.json +73 -0
- package/src/data/raid-plans/sunken-temple.json +159 -0
- package/src/data/raid-plans/temple-of-ahnqiraj.json +163 -0
- package/src/data/raid-plans/the-stockade.json +42 -0
- package/src/data/raid-plans/ubrs.json +53 -0
- package/src/data/raid-plans/uldaman.json +131 -0
- package/src/data/raid-plans/wailing-caverns.json +90 -0
- package/src/data/raid-plans/zul-farrak.json +156 -0
- package/src/data/raid-plans/zul-gurub.json +307 -0
- package/src/data/raidInstanceCreatures.mjs +473 -0
- package/src/data/rotations/index.ts +152 -0
- package/src/data/rotations/layout.mjs +72 -0
- package/src/data/rotations/pve/druid/balance.json +754 -0
- package/src/data/rotations/pve/druid/feral-tank.json +2448 -0
- package/src/data/rotations/pve/druid/feral.json +2660 -0
- package/src/data/rotations/pve/druid/restoration.json +424 -0
- package/src/data/rotations/pve/hunter/beast-mastery.json +1288 -0
- package/src/data/rotations/pve/hunter/marksmanship.json +1260 -0
- package/src/data/rotations/pve/hunter/survival.json +1373 -0
- package/src/data/rotations/pve/mage/arcane-leveling.json +1798 -0
- package/src/data/rotations/pve/mage/fire-leveling.json +2003 -0
- package/src/data/rotations/pve/mage/frost-leveling.json +1912 -0
- package/src/data/rotations/pve/paladin/holy.json +755 -0
- package/src/data/rotations/pve/paladin/protection.json +962 -0
- package/src/data/rotations/pve/paladin/retribution.json +924 -0
- package/src/data/rotations/pve/priest/discipline.json +772 -0
- package/src/data/rotations/pve/priest/holy.json +707 -0
- package/src/data/rotations/pve/priest/shadow.json +787 -0
- package/src/data/rotations/pve/rogue/assassination.json +2477 -0
- package/src/data/rotations/pve/rogue/combat.json +2483 -0
- package/src/data/rotations/pve/rogue/subtlety.json +2523 -0
- package/src/data/rotations/pve/shaman/elemental.json +1157 -0
- package/src/data/rotations/pve/shaman/enhancement.json +1085 -0
- package/src/data/rotations/pve/shaman/restoration.json +592 -0
- package/src/data/rotations/pve/warlock/affliction.json +1185 -0
- package/src/data/rotations/pve/warlock/demonology.json +1165 -0
- package/src/data/rotations/pve/warlock/destruction.json +1177 -0
- package/src/data/rotations/pve/warrior/arms.json +3020 -0
- package/src/data/rotations/pve/warrior/fury.json +2996 -0
- package/src/data/rotations/pve/warrior/protection.json +2509 -0
- package/src/data/rotations/pvp/druid/balance.json +593 -0
- package/src/data/rotations/pvp/druid/feral.json +3276 -0
- package/src/data/rotations/pvp/druid/restoration.json +662 -0
- package/src/data/rotations/pvp/hunter/beast-mastery.json +665 -0
- package/src/data/rotations/pvp/hunter/marksmanship.json +2406 -0
- package/src/data/rotations/pvp/hunter/survival.json +635 -0
- package/src/data/rotations/pvp/mage/arcane.json +574 -0
- package/src/data/rotations/pvp/mage/fire.json +570 -0
- package/src/data/rotations/pvp/mage/frost.json +4048 -0
- package/src/data/rotations/pvp/paladin/holy.json +1498 -0
- package/src/data/rotations/pvp/paladin/protection.json +567 -0
- package/src/data/rotations/pvp/paladin/retribution.json +1110 -0
- package/src/data/rotations/pvp/priest/discipline.json +1848 -0
- package/src/data/rotations/pvp/priest/holy.json +6340 -0
- package/src/data/rotations/pvp/priest/shadow.json +2329 -0
- package/src/data/rotations/pvp/rogue/assassination.json +1322 -0
- package/src/data/rotations/pvp/rogue/combat.json +5258 -0
- package/src/data/rotations/pvp/rogue/subtlety.json +586 -0
- package/src/data/rotations/pvp/shaman/elemental.json +1404 -0
- package/src/data/rotations/pvp/shaman/enhancement.json +1277 -0
- package/src/data/rotations/pvp/shaman/restoration.json +2490 -0
- package/src/data/rotations/pvp/warlock/affliction.json +1017 -0
- package/src/data/rotations/pvp/warlock/demonology.json +1503 -0
- package/src/data/rotations/pvp/warlock/destruction.json +638 -0
- package/src/data/rotations/pvp/warrior/arms.json +5665 -0
- package/src/data/rotations/pvp/warrior/fury.json +850 -0
- package/src/data/rotations/pvp/warrior/protection.json +777 -0
- package/src/data/schema/bundle.ts +511 -0
- package/src/data/schema/constants.ts +49 -0
- package/src/data/schema/creature.ts +454 -0
- package/src/data/schema/encounter.ts +155 -0
- package/src/data/schema/faction.ts +48 -0
- package/src/data/schema/item.ts +297 -0
- package/src/data/schema/itemEnchant.ts +105 -0
- package/src/data/schema/npc.ts +44 -0
- package/src/data/schema/primitives.ts +295 -0
- package/src/data/schema/profession.ts +226 -0
- package/src/data/schema/quest.ts +154 -0
- package/src/data/schema/spell.ts +1149 -0
- package/src/data/schema/talent.ts +74 -0
- package/src/data/schema/world.ts +124 -0
- package/src/data/schema.ts +19 -0
- package/src/data/skinNodeGapFill.ts +68 -0
- package/src/data/spell-data.json.gz +0 -0
- package/src/data/spell-script-targets.json +1 -0
- package/src/data/tables/ahItemValues.json.gz +0 -0
- package/src/data/tables/alteracValley.json.gz +0 -0
- package/src/data/tables/areatriggerTeleports.json.gz +0 -0
- package/src/data/tables/botNames.json.gz +0 -0
- package/src/data/tables/botPopulation.json.gz +0 -0
- package/src/data/tables/botSpecs.json.gz +0 -0
- package/src/data/tables/classLevelStats.json.gz +0 -0
- package/src/data/tables/combatConditions.json.gz +0 -0
- package/src/data/tables/combatSkillMeta.json.gz +0 -0
- package/src/data/tables/conditions.json.gz +0 -0
- package/src/data/tables/createInfo.json.gz +0 -0
- package/src/data/tables/creatureAggroGroups.json.gz +0 -0
- package/src/data/tables/creatureClassLevelStats.json.gz +0 -0
- package/src/data/tables/creaturePatrolPacks.json.gz +0 -0
- package/src/data/tables/creatureWeapons.json.gz +0 -0
- package/src/data/tables/creatures.json.gz +0 -0
- package/src/data/tables/dbScripts.json.gz +0 -0
- package/src/data/tables/dungeonAuthoredRoutes.json.gz +0 -0
- package/src/data/tables/dungeonCensus.json.gz +0 -0
- package/src/data/tables/dungeonGameObjects.json.gz +0 -0
- package/src/data/tables/dungeonPacks.json.gz +0 -0
- package/src/data/tables/dungeonPlateCover.json.gz +0 -0
- package/src/data/tables/dungeonSpawns.json.gz +0 -0
- package/src/data/tables/dungeonSurvey.json.gz +0 -0
- package/src/data/tables/durabilityCosts.json.gz +0 -0
- package/src/data/tables/durabilityQuality.json.gz +0 -0
- package/src/data/tables/enchantApplicators.json.gz +0 -0
- package/src/data/tables/entranceYards.json.gz +0 -0
- package/src/data/tables/explorationBasexp.json.gz +0 -0
- package/src/data/tables/factionTemplates.json.gz +0 -0
- package/src/data/tables/factions.json.gz +0 -0
- package/src/data/tables/gameEvents.json.gz +0 -0
- package/src/data/tables/gameObjects.json.gz +0 -0
- package/src/data/tables/gossipMenus.json.gz +0 -0
- package/src/data/tables/graveyards.json.gz +0 -0
- package/src/data/tables/instanceMaps.json.gz +0 -0
- package/src/data/tables/itemEnchantmentTemplates.json.gz +0 -0
- package/src/data/tables/itemEnchants.json.gz +0 -0
- package/src/data/tables/itemRandomProperties.json.gz +0 -0
- package/src/data/tables/itemSets.json.gz +0 -0
- package/src/data/tables/items.json.gz +0 -0
- package/src/data/tables/levelStats.json.gz +0 -0
- package/src/data/tables/locks.json.gz +0 -0
- package/src/data/tables/map-pin-overrides.json.gz +0 -0
- package/src/data/tables/nonCombatTrash.json.gz +0 -0
- package/src/data/tables/npcTexts.json.gz +0 -0
- package/src/data/tables/pageTexts.json.gz +0 -0
- package/src/data/tables/petAbilityTP.json.gz +0 -0
- package/src/data/tables/petGenericSpells.json.gz +0 -0
- package/src/data/tables/petLevelStats.json.gz +0 -0
- package/src/data/tables/playerbot-weightscales.json.gz +0 -0
- package/src/data/tables/pools.json.gz +0 -0
- package/src/data/tables/quests.json.gz +0 -0
- package/src/data/tables/races.json.gz +0 -0
- package/src/data/tables/reputationRanks.json.gz +0 -0
- package/src/data/tables/reputationRates.json.gz +0 -0
- package/src/data/tables/reputationSpillover.json.gz +0 -0
- package/src/data/tables/ridingSpells.json.gz +0 -0
- package/src/data/tables/scriptTexts.json.gz +0 -0
- package/src/data/tables/soundClipVolume.json.gz +0 -0
- package/src/data/tables/spellChain.json.gz +0 -0
- package/src/data/tables/spellTeleports.json.gz +0 -0
- package/src/data/tables/spells.json.gz +0 -0
- package/src/data/tables/talents.json.gz +0 -0
- package/src/data/tables/tavernTriggers.json.gz +0 -0
- package/src/data/tables/taxiNodes.json.gz +0 -0
- package/src/data/tables/taxiRoutes.json.gz +0 -0
- package/src/data/tables/trainers.json.gz +0 -0
- package/src/data/tables/transports.json.gz +0 -0
- package/src/data/tables/travelAnchors.json.gz +0 -0
- package/src/data/tables/travelEdges.json.gz +0 -0
- package/src/data/tables/unitConditions.json.gz +0 -0
- package/src/data/tables/vendors.json.gz +0 -0
- package/src/data/tables/weaponEnchantProcs.json.gz +0 -0
- package/src/data/tables/xp.json.gz +0 -0
- package/src/data/tables/zoneWeather.json.gz +0 -0
- package/src/data/tables/zones.json.gz +0 -0
- package/src/data/world-data.ts +56 -0
- package/src/data/zone-music-sets.json +2751 -0
- package/src/dev/etl/lib/loot-chance-sanity.mjs +180 -0
- package/src/domain/audioQuality.mjs +145 -0
- package/src/domain/bg/ab.ts +433 -0
- package/src/domain/bg/arenaComps.ts +644 -0
- package/src/domain/bg/arenaLab.ts +695 -0
- package/src/domain/bg/arenaPace.ts +31 -0
- package/src/domain/bg/arenaRating.ts +110 -0
- package/src/domain/bg/av.ts +758 -0
- package/src/domain/bg/avEnemyPush.ts +219 -0
- package/src/domain/bg/avField.ts +283 -0
- package/src/domain/bg/avInstanceNodes.ts +197 -0
- package/src/domain/bg/avInstanceScore.ts +123 -0
- package/src/domain/bg/avQuestItems.ts +55 -0
- package/src/domain/bg/avQuests.ts +210 -0
- package/src/domain/bg/avSession.ts +196 -0
- package/src/domain/bg/bgConsumes.ts +269 -0
- package/src/domain/bg/bgPrebuff.ts +153 -0
- package/src/domain/bg/bgRest.ts +91 -0
- package/src/domain/bg/bgRoster.ts +305 -0
- package/src/domain/bg/bgTier.ts +61 -0
- package/src/domain/bg/bgWorld.ts +862 -0
- package/src/domain/bg/match.ts +215 -0
- package/src/domain/bg/strategies.ts +552 -0
- package/src/domain/bg/types.ts +291 -0
- package/src/domain/bg/wsg.ts +264 -0
- package/src/domain/bots/actionProviderSpec.ts +38 -0
- package/src/domain/bots/autoConsumables.ts +285 -0
- package/src/domain/bots/betweenPullRest.ts +239 -0
- package/src/domain/bots/botGear.ts +248 -0
- package/src/domain/bots/botInventory.ts +486 -0
- package/src/domain/bots/botPet.ts +535 -0
- package/src/domain/bots/botPool.ts +291 -0
- package/src/domain/bots/botProfessions.ts +334 -0
- package/src/domain/bots/companionActionBar.ts +209 -0
- package/src/domain/bots/companionHireCost.ts +236 -0
- package/src/domain/bots/companionMissions.ts +582 -0
- package/src/domain/bots/companionPrep.ts +254 -0
- package/src/domain/bots/companionQuests.ts +270 -0
- package/src/domain/bots/companionRep.ts +75 -0
- package/src/domain/bots/companionRotation.ts +708 -0
- package/src/domain/bots/companionXp.ts +66 -0
- package/src/domain/bots/consumableShare.ts +811 -0
- package/src/domain/bots/dpsMate.ts +1072 -0
- package/src/domain/bots/groupCompReport.ts +132 -0
- package/src/domain/bots/healthstoneSupply.ts +198 -0
- package/src/domain/bots/outfitter.ts +1056 -0
- package/src/domain/bots/paladinPrePull.ts +231 -0
- package/src/domain/bots/partyRole.ts +40 -0
- package/src/domain/bots/playerbotEquipCache.ts +412 -0
- package/src/domain/bots/playerbotItemEligibility.ts +60 -0
- package/src/domain/bots/playerbotStatWeight.ts +853 -0
- package/src/domain/bots/playerbotUnavailableItems.ts +147 -0
- package/src/domain/bots/prePullBuffs.ts +219 -0
- package/src/domain/bots/prePullStealth.ts +82 -0
- package/src/domain/bots/runSupply.ts +251 -0
- package/src/domain/bots/runSupplyPrefs.ts +28 -0
- package/src/domain/bots/sendTradeGoods.ts +394 -0
- package/src/domain/bots/soulShardCap.ts +35 -0
- package/src/domain/bots/squad.ts +842 -0
- package/src/domain/bots/squadRun.ts +81 -0
- package/src/domain/character/actionbar.ts +346 -0
- package/src/domain/character/appearance.ts +165 -0
- package/src/domain/character/buildCombatant.ts +1726 -0
- package/src/domain/character/character.ts +356 -0
- package/src/domain/character/characterName.ts +43 -0
- package/src/domain/character/characterRatings.ts +424 -0
- package/src/domain/character/characterSpells.ts +282 -0
- package/src/domain/character/characterStats.ts +1559 -0
- package/src/domain/character/characterTalents.ts +398 -0
- package/src/domain/character/combatSkills.ts +994 -0
- package/src/domain/character/displayForm.ts +72 -0
- package/src/domain/character/formTalentAuras.ts +171 -0
- package/src/domain/character/forms.ts +499 -0
- package/src/domain/character/races.ts +40 -0
- package/src/domain/character/resurrectionSickness.ts +49 -0
- package/src/domain/character/spellbook.ts +169 -0
- package/src/domain/character/stanceBar.ts +354 -0
- package/src/domain/character/stancePrereq.ts +70 -0
- package/src/domain/character/talentBuilds.ts +63 -0
- package/src/domain/character/talentImport.ts +130 -0
- package/src/domain/character/talentLink.ts +123 -0
- package/src/domain/character/talents.ts +201 -0
- package/src/domain/core/conditionSnapshot.ts +92 -0
- package/src/domain/core/hover.ts +14 -0
- package/src/domain/core/ids.ts +58 -0
- package/src/domain/core/internalNameTags.ts +5 -0
- package/src/domain/core/runtimeDataPatches.ts +357 -0
- package/src/domain/creature/aiTargeting.ts +588 -0
- package/src/domain/creature/combatCondition.ts +157 -0
- package/src/domain/creature/creatureAggro.ts +804 -0
- package/src/domain/creature/creatureAi.ts +206 -0
- package/src/domain/creature/creatureAiConstants.ts +661 -0
- package/src/domain/creature/creatureCastList.ts +1007 -0
- package/src/domain/creature/creatureEventAi.ts +1409 -0
- package/src/domain/creature/creatureGroups.ts +144 -0
- package/src/domain/creature/creatureLinking.ts +333 -0
- package/src/domain/creature/creatureScaling.ts +320 -0
- package/src/domain/creature/creatureTrigger.ts +53 -0
- package/src/domain/creature/creatureWander.ts +74 -0
- package/src/domain/creature/eventAiTexts.ts +145 -0
- package/src/domain/creature/faction.ts +287 -0
- package/src/domain/creature/forcedReaction.ts +48 -0
- package/src/domain/creature/outdoorHuntable.ts +74 -0
- package/src/domain/creature/patrolPacks.ts +210 -0
- package/src/domain/creature/reputation.ts +967 -0
- package/src/domain/creature/unitFlags.ts +74 -0
- package/src/domain/creature/worldBosses.ts +393 -0
- package/src/domain/dungeonMusic.mjs +48 -0
- package/src/domain/economy/auction.ts +282 -0
- package/src/domain/economy/auctionBot.ts +1060 -0
- package/src/domain/economy/honorPrice.ts +100 -0
- package/src/domain/economy/mail.ts +958 -0
- package/src/domain/economy/money.ts +42 -0
- package/src/domain/economy/syntheticClassTrainers.ts +62 -0
- package/src/domain/economy/trading.ts +296 -0
- package/src/domain/economy/vendorSellAll.ts +252 -0
- package/src/domain/economy/vendorStock.ts +146 -0
- package/src/domain/items/ammo.ts +817 -0
- package/src/domain/items/bank.ts +162 -0
- package/src/domain/items/consumableFamily.ts +205 -0
- package/src/domain/items/craftUpgrades.ts +83 -0
- package/src/domain/items/createItem.ts +93 -0
- package/src/domain/items/durability.ts +581 -0
- package/src/domain/items/equipment.ts +441 -0
- package/src/domain/items/equipmentHelper.ts +767 -0
- package/src/domain/items/inventory.ts +561 -0
- package/src/domain/items/itemBonding.ts +93 -0
- package/src/domain/items/itemContainer.ts +245 -0
- package/src/domain/items/itemDisplayName.ts +33 -0
- package/src/domain/items/itemInstance.ts +181 -0
- package/src/domain/items/itemRandomEnchantOutcomes.ts +315 -0
- package/src/domain/items/itemRandomProps.ts +77 -0
- package/src/domain/items/itemRestrictions.ts +329 -0
- package/src/domain/items/itemTeaches.ts +82 -0
- package/src/domain/items/itemUseCooldown.ts +52 -0
- package/src/domain/items/itemUseTarget.ts +90 -0
- package/src/domain/items/junkCategories.ts +174 -0
- package/src/domain/items/junkFilter.ts +368 -0
- package/src/domain/items/keyring.ts +131 -0
- package/src/domain/items/loot.ts +221 -0
- package/src/domain/items/mounts.ts +190 -0
- package/src/domain/items/onUsePayload.ts +102 -0
- package/src/domain/items/pendingLoot.ts +107 -0
- package/src/domain/items/relic.ts +105 -0
- package/src/domain/items/rocketBoots.ts +36 -0
- package/src/domain/items/sortContainer.ts +139 -0
- package/src/domain/items/spareContainers.ts +71 -0
- package/src/domain/items/spellReagentIndex.ts +131 -0
- package/src/domain/items/staleConsumables.ts +66 -0
- package/src/domain/items/weaponSpender.ts +110 -0
- package/src/domain/listDungeonIds.mjs +28 -0
- package/src/domain/macro/compose.ts +239 -0
- package/src/domain/macro/conditions.ts +260 -0
- package/src/domain/macro/creatureTypes.ts +40 -0
- package/src/domain/macro/describe.ts +169 -0
- package/src/domain/macro/icon.ts +60 -0
- package/src/domain/macro/index.ts +20 -0
- package/src/domain/macro/normalize.ts +112 -0
- package/src/domain/macro/parse.ts +316 -0
- package/src/domain/macro/plan.ts +288 -0
- package/src/domain/macro/rotation.ts +590 -0
- package/src/domain/macro/rotationEnv.ts +173 -0
- package/src/domain/macro/slots.ts +101 -0
- package/src/domain/macro/snapshot.ts +114 -0
- package/src/domain/macro/templates.ts +446 -0
- package/src/domain/macro/types.ts +70 -0
- package/src/domain/macro/units.ts +93 -0
- package/src/domain/macro/weaponTypes.ts +83 -0
- package/src/domain/nav/cityTeleports.ts +10 -0
- package/src/domain/nav/mounting.ts +113 -0
- package/src/domain/nav/nav.ts +43 -0
- package/src/domain/nav/navCollision.ts +606 -0
- package/src/domain/nav/navOutdoors.ts +91 -0
- package/src/domain/nav/navRegistry.ts +179 -0
- package/src/domain/nav/navRoomGraph.ts +302 -0
- package/src/domain/nav/navTypes.ts +43 -0
- package/src/domain/nav/navmesh.ts +1715 -0
- package/src/domain/nav/speed.ts +200 -0
- package/src/domain/nav/storey.ts +10 -0
- package/src/domain/nav/travel.ts +725 -0
- package/src/domain/nav/travelTypes.ts +75 -0
- package/src/domain/pet/pet.ts +1150 -0
- package/src/domain/pet/petActionBar.ts +180 -0
- package/src/domain/pet/petSpellbook.ts +39 -0
- package/src/domain/pet/petStable.ts +81 -0
- package/src/domain/professions/autoDisenchant.ts +236 -0
- package/src/domain/professions/characterEnchants.ts +176 -0
- package/src/domain/professions/craftCooldown.ts +52 -0
- package/src/domain/professions/enchantApply.ts +62 -0
- package/src/domain/professions/enchantTargets.ts +114 -0
- package/src/domain/professions/enchanting.ts +236 -0
- package/src/domain/professions/gatherFilter.ts +149 -0
- package/src/domain/professions/gearEnchant.ts +137 -0
- package/src/domain/professions/heldTools.ts +29 -0
- package/src/domain/professions/learnAllRecipes.ts +146 -0
- package/src/domain/professions/miningHarvest.ts +69 -0
- package/src/domain/professions/partyDisenchant.ts +294 -0
- package/src/domain/professions/partyWork.ts +83 -0
- package/src/domain/professions/pickpocket.ts +172 -0
- package/src/domain/professions/poisons.ts +240 -0
- package/src/domain/professions/professions.ts +677 -0
- package/src/domain/professions/rareNodes.ts +45 -0
- package/src/domain/professions/skinLoot.ts +27 -0
- package/src/domain/professions/vendorReagents.ts +152 -0
- package/src/domain/professions/weaponImbueHand.ts +171 -0
- package/src/domain/questFarmFilter.mjs +42 -0
- package/src/domain/quests/doQuest.ts +1204 -0
- package/src/domain/quests/gossip.ts +308 -0
- package/src/domain/quests/gossipTalk.ts +298 -0
- package/src/domain/quests/interpreter/canComplete.ts +150 -0
- package/src/domain/quests/interpreter/claim.ts +137 -0
- package/src/domain/quests/interpreter/dbscript/handlers.ts +1371 -0
- package/src/domain/quests/interpreter/dbscript/handlersBatch.ts +1251 -0
- package/src/domain/quests/interpreter/dbscript/hooks.ts +331 -0
- package/src/domain/quests/interpreter/dbscript/index.ts +212 -0
- package/src/domain/quests/interpreter/dbscript/opcodes.ts +257 -0
- package/src/domain/quests/interpreter/dbscript/registry.ts +1194 -0
- package/src/domain/quests/interpreter/dbscript/registryAreatriggerScripts.ts +539 -0
- package/src/domain/quests/interpreter/dbscript/registryAshenvale.ts +553 -0
- package/src/domain/quests/interpreter/dbscript/registryAzshara.ts +272 -0
- package/src/domain/quests/interpreter/dbscript/registryDarkshore.ts +637 -0
- package/src/domain/quests/interpreter/dbscript/registryDesolace.ts +501 -0
- package/src/domain/quests/interpreter/dbscript/registryDustwallowMarsh.ts +735 -0
- package/src/domain/quests/interpreter/dbscript/registryFelwood.ts +493 -0
- package/src/domain/quests/interpreter/dbscript/registryFeralas.ts +485 -0
- package/src/domain/quests/interpreter/dbscript/registryGoScripts.ts +203 -0
- package/src/domain/quests/interpreter/dbscript/registryMoonglade.ts +288 -0
- package/src/domain/quests/interpreter/dbscript/registryNpcProfessions.ts +230 -0
- package/src/domain/quests/interpreter/dbscript/registryNpcsSpecial.ts +545 -0
- package/src/domain/quests/interpreter/dbscript/registryRazorfenDowns.ts +293 -0
- package/src/domain/quests/interpreter/dbscript/registryRazorfenKraul.ts +221 -0
- package/src/domain/quests/interpreter/dbscript/registryRedridge.ts +112 -0
- package/src/domain/quests/interpreter/dbscript/registrySearingGorge.ts +125 -0
- package/src/domain/quests/interpreter/dbscript/registrySiblings.ts +51 -0
- package/src/domain/quests/interpreter/dbscript/registrySilverpineForest.ts +172 -0
- package/src/domain/quests/interpreter/dbscript/registryStonetalonMountains.ts +180 -0
- package/src/domain/quests/interpreter/dbscript/registryStormwindCity.ts +369 -0
- package/src/domain/quests/interpreter/dbscript/registryStranglethornVale.ts +115 -0
- package/src/domain/quests/interpreter/dbscript/registryStratholme.ts +146 -0
- package/src/domain/quests/interpreter/dbscript/registrySunkenTemple.ts +149 -0
- package/src/domain/quests/interpreter/dbscript/registrySwampOfSorrows.ts +163 -0
- package/src/domain/quests/interpreter/dbscript/registryTanaris.ts +318 -0
- package/src/domain/quests/interpreter/dbscript/registryTeldrassil.ts +120 -0
- package/src/domain/quests/interpreter/dbscript/registryTheBarrens.ts +603 -0
- package/src/domain/quests/interpreter/dbscript/registryThousandNeedles.ts +499 -0
- package/src/domain/quests/interpreter/dbscript/registryTirisfalGlades.ts +222 -0
- package/src/domain/quests/interpreter/dbscript/registryUngoroCrater.ts +291 -0
- package/src/domain/quests/interpreter/dbscript/registryWarEffort.ts +773 -0
- package/src/domain/quests/interpreter/dbscript/registryWesternPlaguelands.ts +206 -0
- package/src/domain/quests/interpreter/dbscript/registryWestfall.ts +190 -0
- package/src/domain/quests/interpreter/dbscript/registryWetlands.ts +186 -0
- package/src/domain/quests/interpreter/dbscript/registryWinterspring.ts +235 -0
- package/src/domain/quests/interpreter/dbscript/types.ts +817 -0
- package/src/domain/quests/interpreter/dbscript/vm.ts +171 -0
- package/src/domain/quests/interpreter/diff.ts +349 -0
- package/src/domain/quests/interpreter/fixtures/oracle-questlog-qi2.json +2417 -0
- package/src/domain/quests/interpreter/flags.ts +101 -0
- package/src/domain/quests/interpreter/index.ts +113 -0
- package/src/domain/quests/interpreter/live.ts +178 -0
- package/src/domain/quests/interpreter/types.ts +81 -0
- package/src/domain/quests/interpreter/updaters.ts +412 -0
- package/src/domain/quests/questCorpseUse.ts +155 -0
- package/src/domain/quests/questDialog.ts +43 -0
- package/src/domain/quests/questFight.ts +34 -0
- package/src/domain/quests/questObjectiveLabel.ts +39 -0
- package/src/domain/quests/questRewardChoice.ts +85 -0
- package/src/domain/quests/questScriptCredit.ts +26 -0
- package/src/domain/quests/questScriptItemUse.ts +74 -0
- package/src/domain/quests/questTameRods.ts +79 -0
- package/src/domain/quests/questlog.ts +1545 -0
- package/src/domain/quests/talkDeliver.ts +170 -0
- package/src/domain/raid/globalActionBar.ts +195 -0
- package/src/domain/raid/instanceRoster.ts +194 -0
- package/src/domain/raid/partySummon.ts +198 -0
- package/src/domain/raid/partyVault.ts +320 -0
- package/src/domain/raid/raidBossAbilities.ts +268 -0
- package/src/domain/raid/raidComp.ts +335 -0
- package/src/domain/raid/raidCustomRows.ts +453 -0
- package/src/domain/raid/raidEncounterGear.ts +298 -0
- package/src/domain/raid/raidEncounterTactics.ts +412 -0
- package/src/domain/raid/raidPlan.ts +509 -0
- package/src/domain/raid/raidPlanEdits.ts +98 -0
- package/src/domain/raid/raidPlanPacks.ts +480 -0
- package/src/domain/raid/raidRecovery.ts +183 -0
- package/src/domain/raid/raidRosterTemplate.ts +138 -0
- package/src/domain/rotation/auraSide.ts +68 -0
- package/src/domain/rotation/build.ts +3031 -0
- package/src/domain/rotation/classes/druid.ts +58 -0
- package/src/domain/rotation/classes/hooks.ts +59 -0
- package/src/domain/rotation/classes/hunter.ts +156 -0
- package/src/domain/rotation/classes/index.ts +104 -0
- package/src/domain/rotation/classes/mage.ts +99 -0
- package/src/domain/rotation/classes/paladin.ts +296 -0
- package/src/domain/rotation/classes/priest.ts +94 -0
- package/src/domain/rotation/classes/pullOpener.ts +92 -0
- package/src/domain/rotation/classes/rogue.ts +69 -0
- package/src/domain/rotation/classes/shaman.ts +29 -0
- package/src/domain/rotation/classes/supportSpec.ts +94 -0
- package/src/domain/rotation/classes/warlock.ts +81 -0
- package/src/domain/rotation/classes/warrior.ts +402 -0
- package/src/domain/rotation/classify.ts +1381 -0
- package/src/domain/rotation/condMetricPicker.ts +379 -0
- package/src/domain/rotation/consumables.ts +242 -0
- package/src/domain/rotation/evaluate.ts +1115 -0
- package/src/domain/rotation/finisherLadder.ts +145 -0
- package/src/domain/rotation/invent.ts +938 -0
- package/src/domain/rotation/killOrder.ts +30 -0
- package/src/domain/rotation/openerForm.ts +22 -0
- package/src/domain/rotation/paladinBuffs.ts +568 -0
- package/src/domain/rotation/prebuff.ts +283 -0
- package/src/domain/rotation/raidRowTuning.ts +34 -0
- package/src/domain/rotation/rotation.ts +11 -0
- package/src/domain/rotation/rotationProfiles.ts +180 -0
- package/src/domain/rotation/rotationSuggestions.ts +851 -0
- package/src/domain/rotation/ruleAfterChain.ts +49 -0
- package/src/domain/rotation/spec.ts +70 -0
- package/src/domain/rotation/spellPicker.ts +140 -0
- package/src/domain/rotation/stand.ts +143 -0
- package/src/domain/rotation/types.ts +718 -0
- package/src/domain/run/battlegroundRun.ts +111 -0
- package/src/domain/run/canEnterContext.ts +32 -0
- package/src/domain/run/death.ts +561 -0
- package/src/domain/run/deathRecovery.ts +289 -0
- package/src/domain/run/duel.ts +141 -0
- package/src/domain/run/dungeonRun.ts +344 -0
- package/src/domain/run/floorRest.ts +159 -0
- package/src/domain/run/honor.ts +557 -0
- package/src/domain/run/honorWeek.ts +180 -0
- package/src/domain/run/whenMap.ts +977 -0
- package/src/domain/scriptdev/arathiHighlands.ts +445 -0
- package/src/domain/scriptdev/ashenvale.ts +635 -0
- package/src/domain/scriptdev/ashenvaleHelpers.ts +1215 -0
- package/src/domain/scriptdev/azshara.ts +892 -0
- package/src/domain/scriptdev/blackfathomDeeps.ts +212 -0
- package/src/domain/scriptdev/blackrockDepths.ts +1434 -0
- package/src/domain/scriptdev/blackrockSpire.ts +730 -0
- package/src/domain/scriptdev/blackwingLair.ts +521 -0
- package/src/domain/scriptdev/burningSteppes.ts +62 -0
- package/src/domain/scriptdev/classFilter.ts +43 -0
- package/src/domain/scriptdev/darkshore.ts +817 -0
- package/src/domain/scriptdev/darkshoreHelpers.ts +853 -0
- package/src/domain/scriptdev/deadmines.ts +331 -0
- package/src/domain/scriptdev/desolace.ts +1239 -0
- package/src/domain/scriptdev/direMaul.ts +859 -0
- package/src/domain/scriptdev/durotar.ts +532 -0
- package/src/domain/scriptdev/dustwallowMarsh.ts +758 -0
- package/src/domain/scriptdev/dustwallowMarshHelpers.ts +994 -0
- package/src/domain/scriptdev/easternPlaguelands.ts +21 -0
- package/src/domain/scriptdev/felwood.ts +1055 -0
- package/src/domain/scriptdev/feralas.ts +571 -0
- package/src/domain/scriptdev/feralasHelpers.ts +838 -0
- package/src/domain/scriptdev/gnomeregan.ts +466 -0
- package/src/domain/scriptdev/guards.ts +616 -0
- package/src/domain/scriptdev/hinterlands.ts +693 -0
- package/src/domain/scriptdev/host.ts +1134 -0
- package/src/domain/scriptdev/index.ts +123 -0
- package/src/domain/scriptdev/instanceRaids.ts +136 -0
- package/src/domain/scriptdev/itemScripts.ts +37 -0
- package/src/domain/scriptdev/lochModan.ts +283 -0
- package/src/domain/scriptdev/maraudon.ts +232 -0
- package/src/domain/scriptdev/moltenCore.ts +831 -0
- package/src/domain/scriptdev/moonglade.ts +659 -0
- package/src/domain/scriptdev/moongladeHelpers.ts +933 -0
- package/src/domain/scriptdev/naxxramas.ts +577 -0
- package/src/domain/scriptdev/naxxramasConstruct.ts +364 -0
- package/src/domain/scriptdev/naxxramasFrostwyrm.ts +378 -0
- package/src/domain/scriptdev/naxxramasMilitary.ts +276 -0
- package/src/domain/scriptdev/npcProfessions.ts +1025 -0
- package/src/domain/scriptdev/npcsSpecial.ts +1379 -0
- package/src/domain/scriptdev/onyxiasLair.ts +313 -0
- package/src/domain/scriptdev/orgrimmar.ts +147 -0
- package/src/domain/scriptdev/professionSpecConsumer.ts +481 -0
- package/src/domain/scriptdev/razorfenDowns.ts +468 -0
- package/src/domain/scriptdev/razorfenKraul.ts +410 -0
- package/src/domain/scriptdev/redridgeMountains.ts +163 -0
- package/src/domain/scriptdev/registry.ts +945 -0
- package/src/domain/scriptdev/ruinsOfAhnqiraj.ts +356 -0
- package/src/domain/scriptdev/scarletMonastery.ts +713 -0
- package/src/domain/scriptdev/scholomance.ts +682 -0
- package/src/domain/scriptdev/searingGorge.ts +295 -0
- package/src/domain/scriptdev/shadowfangKeep.ts +181 -0
- package/src/domain/scriptdev/silithus.ts +71 -0
- package/src/domain/scriptdev/silverpineForest.ts +662 -0
- package/src/domain/scriptdev/stonetalonMountains.ts +493 -0
- package/src/domain/scriptdev/stormwindCity.ts +1192 -0
- package/src/domain/scriptdev/stranglethornVale.ts +402 -0
- package/src/domain/scriptdev/stratholme.ts +650 -0
- package/src/domain/scriptdev/stratholmeScripts.ts +505 -0
- package/src/domain/scriptdev/sunkenTemple.ts +736 -0
- package/src/domain/scriptdev/swampOfSorrows.ts +22 -0
- package/src/domain/scriptdev/tanaris.ts +391 -0
- package/src/domain/scriptdev/tanarisHelpers.ts +661 -0
- package/src/domain/scriptdev/teldrassil.ts +143 -0
- package/src/domain/scriptdev/templeOfAhnqiraj.ts +1013 -0
- package/src/domain/scriptdev/theBarrens.ts +709 -0
- package/src/domain/scriptdev/theBarrensHelpers.ts +1026 -0
- package/src/domain/scriptdev/thousandNeedles.ts +426 -0
- package/src/domain/scriptdev/thousandNeedlesHelpers.ts +566 -0
- package/src/domain/scriptdev/tirisfalGlades.ts +533 -0
- package/src/domain/scriptdev/types.ts +1026 -0
- package/src/domain/scriptdev/uldaman.ts +437 -0
- package/src/domain/scriptdev/ungoroCrater.ts +549 -0
- package/src/domain/scriptdev/ungoroCraterHelpers.ts +1006 -0
- package/src/domain/scriptdev/wailingCaverns.ts +700 -0
- package/src/domain/scriptdev/warEffort.ts +371 -0
- package/src/domain/scriptdev/westernPlaguelands.ts +952 -0
- package/src/domain/scriptdev/westfall.ts +767 -0
- package/src/domain/scriptdev/wetlands.ts +660 -0
- package/src/domain/scriptdev/winterspring.ts +482 -0
- package/src/domain/scriptdev/winterspringHelpers.ts +801 -0
- package/src/domain/scriptdev/worldBosses.ts +605 -0
- package/src/domain/scriptdev/zulfarrak.ts +478 -0
- package/src/domain/scriptdev/zulgurub.ts +1152 -0
- package/src/domain/sim/dummySim.ts +408 -0
- package/src/domain/sim/targetDummy.ts +29 -0
- package/src/domain/social/guild.ts +148 -0
- package/src/domain/spells/areaAuraMembership.ts +93 -0
- package/src/domain/spells/breakableStunCc.ts +166 -0
- package/src/domain/spells/cancelAura.ts +80 -0
- package/src/domain/spells/diminishing.ts +167 -0
- package/src/domain/spells/dispel.ts +149 -0
- package/src/domain/spells/dispelMechanic.ts +105 -0
- package/src/domain/spells/equipSpells.ts +247 -0
- package/src/domain/spells/learnOnTargets.ts +260 -0
- package/src/domain/spells/mergeSchoolImmunityFromRaw.ts +66 -0
- package/src/domain/spells/resurrectSpell.ts +124 -0
- package/src/domain/spells/spellPushback.ts +39 -0
- package/src/domain/spells/spellReflect.ts +43 -0
- package/src/domain/spells/stealth.ts +183 -0
- package/src/domain/spells/totem.ts +394 -0
- package/src/domain/spells/worldCast.ts +187 -0
- package/src/domain/world/areaTriggerLocks.ts +177 -0
- package/src/domain/world/dungeonMusic.ts +108 -0
- package/src/domain/world/gameEvents.ts +119 -0
- package/src/domain/world/gameObjects.ts +1030 -0
- package/src/domain/world/goEventFire.ts +234 -0
- package/src/domain/world/goMoTransport.ts +74 -0
- package/src/domain/world/goTransport.ts +81 -0
- package/src/domain/world/hazards.ts +459 -0
- package/src/domain/world/openLock.ts +398 -0
- package/src/domain/world/pools.ts +470 -0
- package/src/domain/world/restArea.ts +37 -0
- package/src/domain/world/weather.ts +201 -0
- package/src/domain/zoneAmbience.mjs +87 -0
- package/src/domain/zoneMusic.mjs +62 -0
- package/src/domain/zoneMusicQueue.mjs +7 -0
- package/src/engine/combat/activeSeal.ts +39 -0
- package/src/engine/combat/aiTargetResolve.ts +64 -0
- package/src/engine/combat/aoeCast.ts +289 -0
- package/src/engine/combat/applyConsumeAura.ts +74 -0
- package/src/engine/combat/applyDemonicSacrifice.ts +70 -0
- package/src/engine/combat/applyDispelMechanic.ts +30 -0
- package/src/engine/combat/applyHealEffect.ts +301 -0
- package/src/engine/combat/applySchoolAbsorb.ts +114 -0
- package/src/engine/combat/applySpell.ts +3169 -0
- package/src/engine/combat/applySpellLate.ts +2026 -0
- package/src/engine/combat/applySpellLateBag.ts +144 -0
- package/src/engine/combat/areaAura.ts +283 -0
- package/src/engine/combat/attackTable.ts +508 -0
- package/src/engine/combat/battleRez.ts +87 -0
- package/src/engine/combat/castAction.ts +36 -0
- package/src/engine/combat/castTargetGates.ts +75 -0
- package/src/engine/combat/castableKit.ts +68 -0
- package/src/engine/combat/ccMirrorUpgrade.ts +39 -0
- package/src/engine/combat/chainFan.ts +210 -0
- package/src/engine/combat/channel.ts +423 -0
- package/src/engine/combat/chaseCloseness.ts +95 -0
- package/src/engine/combat/cmangosCastGates.ts +129 -0
- package/src/engine/combat/combatFlag.ts +77 -0
- package/src/engine/combat/combatGeometry.ts +1329 -0
- package/src/engine/combat/combustion.ts +68 -0
- package/src/engine/combat/context.ts +730 -0
- package/src/engine/combat/createSession.ts +1165 -0
- package/src/engine/combat/creatureLeash.ts +38 -0
- package/src/engine/combat/crowdControl.ts +1259 -0
- package/src/engine/combat/dispelDuty.ts +54 -0
- package/src/engine/combat/dispelReflect.ts +609 -0
- package/src/engine/combat/displaceFloor.ts +113 -0
- package/src/engine/combat/duelBounds.ts +47 -0
- package/src/engine/combat/equippedItemGate.ts +297 -0
- package/src/engine/combat/evadeLifecycle.ts +63 -0
- package/src/engine/combat/eventAi.ts +2220 -0
- package/src/engine/combat/facing.ts +74 -0
- package/src/engine/combat/fearFlee.ts +137 -0
- package/src/engine/combat/fighterFactory.ts +1144 -0
- package/src/engine/combat/forceDespawnAction.ts +51 -0
- package/src/engine/combat/formulas.ts +807 -0
- package/src/engine/combat/friendlyFan.ts +55 -0
- package/src/engine/combat/groundPoolTick.ts +210 -0
- package/src/engine/combat/hazards.ts +114 -0
- package/src/engine/combat/healTargets.ts +226 -0
- package/src/engine/combat/heartbeatResist.ts +49 -0
- package/src/engine/combat/hostileItemUse.ts +75 -0
- package/src/engine/combat/interruptAuras.ts +66 -0
- package/src/engine/combat/itemRescue.ts +49 -0
- package/src/engine/combat/itemUse.ts +260 -0
- package/src/engine/combat/kitById.ts +23 -0
- package/src/engine/combat/knockBack.ts +201 -0
- package/src/engine/combat/leap.ts +89 -0
- package/src/engine/combat/mitigation.ts +587 -0
- package/src/engine/combat/modTaunt.ts +43 -0
- package/src/engine/combat/motionClaim.ts +268 -0
- package/src/engine/combat/motionGate.ts +150 -0
- package/src/engine/combat/motionGenerator.ts +27 -0
- package/src/engine/combat/navSight.ts +138 -0
- package/src/engine/combat/perfSink.ts +28 -0
- package/src/engine/combat/periodicDue.ts +55 -0
- package/src/engine/combat/petAuras.ts +86 -0
- package/src/engine/combat/pickAction.ts +3449 -0
- package/src/engine/combat/powerForm.ts +735 -0
- package/src/engine/combat/powerPools.ts +49 -0
- package/src/engine/combat/predicates.ts +538 -0
- package/src/engine/combat/procsDamage.ts +1823 -0
- package/src/engine/combat/reactiveGates.ts +135 -0
- package/src/engine/combat/roles.ts +389 -0
- package/src/engine/combat/rotationSubject.ts +78 -0
- package/src/engine/combat/ruleAfter.ts +106 -0
- package/src/engine/combat/seedDisplayAuras.ts +203 -0
- package/src/engine/combat/seedOocEffects.ts +317 -0
- package/src/engine/combat/seedSchoolImmunities.ts +45 -0
- package/src/engine/combat/session-types.ts +458 -0
- package/src/engine/combat/sessionApi.ts +1785 -0
- package/src/engine/combat/sessionCharge.ts +124 -0
- package/src/engine/combat/sessionChase.ts +869 -0
- package/src/engine/combat/sessionDeaths.ts +469 -0
- package/src/engine/combat/sessionFocus.ts +506 -0
- package/src/engine/combat/sessionFollow.ts +167 -0
- package/src/engine/combat/sessionGeometry.ts +188 -0
- package/src/engine/combat/sessionHome.ts +75 -0
- package/src/engine/combat/sessionInject.ts +719 -0
- package/src/engine/combat/sessionMechanicMove.ts +555 -0
- package/src/engine/combat/sessionMotion.ts +1553 -0
- package/src/engine/combat/sessionMotionKit.ts +247 -0
- package/src/engine/combat/sessionMoveIntent.ts +49 -0
- package/src/engine/combat/sessionMoveOrder.ts +200 -0
- package/src/engine/combat/sessionPathTo.ts +657 -0
- package/src/engine/combat/sessionPools.ts +688 -0
- package/src/engine/combat/sessionSteer.ts +144 -0
- package/src/engine/combat/sessionStepBack.ts +151 -0
- package/src/engine/combat/sessionStepWrap.ts +116 -0
- package/src/engine/combat/sessionView.ts +442 -0
- package/src/engine/combat/simEffects.ts +32 -0
- package/src/engine/combat/simFacade.ts +620 -0
- package/src/engine/combat/simPump.ts +264 -0
- package/src/engine/combat/simSnapshot.ts +165 -0
- package/src/engine/combat/simThreadPool.ts +35 -0
- package/src/engine/combat/skeramImages.ts +57 -0
- package/src/engine/combat/slowUpdate.ts +178 -0
- package/src/engine/combat/snapToFloor.ts +42 -0
- package/src/engine/combat/speedAura.ts +29 -0
- package/src/engine/combat/spellReagents.ts +71 -0
- package/src/engine/combat/stealthDetect.ts +93 -0
- package/src/engine/combat/stepBackMotion.ts +171 -0
- package/src/engine/combat/stepSession.ts +3102 -0
- package/src/engine/combat/summonCast.ts +243 -0
- package/src/engine/combat/thaddiusPolarity.ts +97 -0
- package/src/engine/combat/threat.ts +388 -0
- package/src/engine/combat/threatOps.ts +272 -0
- package/src/engine/combat/tickWorkerBody.ts +211 -0
- package/src/engine/combat/totemAuras.ts +122 -0
- package/src/engine/combat/triggerPayload.ts +42 -0
- package/src/engine/combat/triggeredCompanion.ts +63 -0
- package/src/engine/combat/types.ts +1897 -0
- package/src/engine/combat/useObjectTrap.ts +140 -0
- package/src/engine/combat/walkSurface.ts +54 -0
- package/src/engine/combat/weapon.ts +1248 -0
- package/src/engine/combat/worldFrame.ts +43 -0
- package/src/engine/combat.solo-golden.json +2242 -0
- package/src/engine/combat.ts +84 -0
- package/src/engine/core/detMath.ts +289 -0
- package/src/engine/core/events.ts +357 -0
- package/src/engine/core/rng.ts +36 -0
- package/src/engine/game/actionBars.ts +124 -0
- package/src/engine/game/activateObjectFromSpell.ts +320 -0
- package/src/engine/game/applyActiveObjectFromDbScript.ts +98 -0
- package/src/engine/game/applyDeathAndSpellScripts.ts +268 -0
- package/src/engine/game/applyDoorFromDbScript.ts +388 -0
- package/src/engine/game/applyEscortFromDbScript.ts +290 -0
- package/src/engine/game/applyGoSpellcasterCast.ts +40 -0
- package/src/engine/game/applyHoverFromDbScript.ts +110 -0
- package/src/engine/game/applyOocResurrect.ts +71 -0
- package/src/engine/game/applySpellDurability.ts +115 -0
- package/src/engine/game/applyTailFromDbScript.ts +478 -0
- package/src/engine/game/applyTerminateFromDbScript.ts +95 -0
- package/src/engine/game/auctionMail.ts +269 -0
- package/src/engine/game/bagOverflow.ts +130 -0
- package/src/engine/game/bank.ts +110 -0
- package/src/engine/game/barAutofill.ts +26 -0
- package/src/engine/game/battleground.ts +369 -0
- package/src/engine/game/combatEnemySpec.ts +216 -0
- package/src/engine/game/combatObjectTraps.ts +167 -0
- package/src/engine/game/combatSeed.ts +320 -0
- package/src/engine/game/combatSession.ts +3241 -0
- package/src/engine/game/combatSessionClock.ts +62 -0
- package/src/engine/game/companionQuestActions.ts +242 -0
- package/src/engine/game/companionTraining.ts +40 -0
- package/src/engine/game/consumables.ts +624 -0
- package/src/engine/game/context.ts +53 -0
- package/src/engine/game/createHealthstone.ts +45 -0
- package/src/engine/game/deathFlow.ts +127 -0
- package/src/engine/game/devGrant.ts +117 -0
- package/src/engine/game/dynamicObject.ts +365 -0
- package/src/engine/game/enchantItem.ts +177 -0
- package/src/engine/game/equipmentHelper.ts +806 -0
- package/src/engine/game/factionState.ts +108 -0
- package/src/engine/game/garmentsOoc.ts +69 -0
- package/src/engine/game/globalActionBar.ts +179 -0
- package/src/engine/game/goInteractQuestCredit.ts +51 -0
- package/src/engine/game/goMoTransportUse.ts +61 -0
- package/src/engine/game/goTransportUse.ts +60 -0
- package/src/engine/game/healthstoneUpkeep.ts +59 -0
- package/src/engine/game/killSkin.ts +124 -0
- package/src/engine/game/learnFromItem.ts +118 -0
- package/src/engine/game/loadReconcile.ts +551 -0
- package/src/engine/game/loot.ts +294 -0
- package/src/engine/game/macros.ts +125 -0
- package/src/engine/game/mail.ts +293 -0
- package/src/engine/game/meetingStoneQueue.ts +75 -0
- package/src/engine/game/meetingStoneUse.ts +54 -0
- package/src/engine/game/newGameState.ts +363 -0
- package/src/engine/game/oocAuraInterrupt.ts +92 -0
- package/src/engine/game/oocCast.ts +241 -0
- package/src/engine/game/oocCastEffects.ts +803 -0
- package/src/engine/game/oocCastMethods.ts +1077 -0
- package/src/engine/game/openLockFromSpell.ts +174 -0
- package/src/engine/game/outdoorPvp.ts +187 -0
- package/src/engine/game/outfitter.ts +644 -0
- package/src/engine/game/paladinBoard.ts +393 -0
- package/src/engine/game/partyAuras.ts +121 -0
- package/src/engine/game/persistCombatAuras.ts +91 -0
- package/src/engine/game/pets.ts +459 -0
- package/src/engine/game/prePullHealthstones.ts +154 -0
- package/src/engine/game/professions.ts +2227 -0
- package/src/engine/game/pruneStaleRuntime.ts +39 -0
- package/src/engine/game/questFightCredit.ts +36 -0
- package/src/engine/game/questItemOnCorpse.ts +166 -0
- package/src/engine/game/questItemOnCreature.ts +103 -0
- package/src/engine/game/questLog.ts +879 -0
- package/src/engine/game/questSpellComplete.ts +21 -0
- package/src/engine/game/questTurnIn.ts +598 -0
- package/src/engine/game/raidParty.ts +32 -0
- package/src/engine/game/reagentBuyIn.ts +39 -0
- package/src/engine/game/regenRest.ts +186 -0
- package/src/engine/game/rotation.ts +425 -0
- package/src/engine/game/runFullDungeon.ts +611 -0
- package/src/engine/game/runSupply.ts +80 -0
- package/src/engine/game/sanitizeDriftedItems.ts +135 -0
- package/src/engine/game/scriptDevGoUse.ts +397 -0
- package/src/engine/game/scriptDevInnkeeper.ts +150 -0
- package/src/engine/game/scriptDevProfessionSpec.ts +99 -0
- package/src/engine/game/sendEventFromSpell.ts +87 -0
- package/src/engine/game/sortContainers.ts +85 -0
- package/src/engine/game/spellReputation.ts +69 -0
- package/src/engine/game/squad/squadDungeonSeating.ts +197 -0
- package/src/engine/game/squadDungeon.ts +4222 -0
- package/src/engine/game/squadQuestShare.ts +260 -0
- package/src/engine/game/summonObjectSlot.ts +69 -0
- package/src/engine/game/summonObjectWild.ts +73 -0
- package/src/engine/game/summoningRitualUse.ts +141 -0
- package/src/engine/game/talents.ts +356 -0
- package/src/engine/game/tamingRodUse.ts +66 -0
- package/src/engine/game/tempSpawnCreature.ts +136 -0
- package/src/engine/game/tickDungeonPatrolScripts.ts +205 -0
- package/src/engine/game/tickTimedQuests.ts +28 -0
- package/src/engine/game/trade.ts +586 -0
- package/src/engine/game/travel.ts +1155 -0
- package/src/engine/game/types.ts +1855 -0
- package/src/engine/game/vendorOffers.ts +244 -0
- package/src/engine/game/weaponImbueItem.ts +281 -0
- package/src/engine/game/worldSession.ts +183 -0
- package/src/engine/game/worldState.ts +166 -0
- package/src/engine/game.ts +968 -0
- package/src/engine/spells/GAP.md +67 -0
- package/src/engine/spells/absorbs.ts +376 -0
- package/src/engine/spells/addTargetTrigger.ts +53 -0
- package/src/engine/spells/auraPerSecondCost.ts +50 -0
- package/src/engine/spells/auraStacking.ts +497 -0
- package/src/engine/spells/cmangos-special-cases-combustion.ts +13 -0
- package/src/engine/spells/cmangos-special-cases-s18.ts +445 -0
- package/src/engine/spells/cmangos-special-cases-s19.ts +324 -0
- package/src/engine/spells/cmangos-special-cases-s20.ts +385 -0
- package/src/engine/spells/cmangos-special-cases-s21.ts +116 -0
- package/src/engine/spells/cmangos-special-cases-s22.ts +24 -0
- package/src/engine/spells/cmangos-special-cases-s23.ts +52 -0
- package/src/engine/spells/cmangos-special-cases.ts +1570 -0
- package/src/engine/spells/conditions.ts +718 -0
- package/src/engine/spells/effects.ts +203 -0
- package/src/engine/spells/fixtures/oracle-effects-lock9a.json +1 -0
- package/src/engine/spells/immunity.ts +942 -0
- package/src/engine/spells/intentEffects.ts +351 -0
- package/src/engine/spells/interpreter/GAPS.md +21 -0
- package/src/engine/spells/interpreter/amount.ts +109 -0
- package/src/engine/spells/interpreter/class-scripts-kit.ts +478 -0
- package/src/engine/spells/interpreter/diff.ts +246 -0
- package/src/engine/spells/interpreter/duration.ts +90 -0
- package/src/engine/spells/interpreter/form-attrs.json +1 -0
- package/src/engine/spells/interpreter/form-attrs.ts +95 -0
- package/src/engine/spells/interpreter/handlers/aura-remove.ts +113 -0
- package/src/engine/spells/interpreter/handlers/auras-control.ts +1547 -0
- package/src/engine/spells/interpreter/handlers/auras-core.ts +1583 -0
- package/src/engine/spells/interpreter/handlers/auras-misc.ts +1774 -0
- package/src/engine/spells/interpreter/handlers/effect-disenchant.ts +17 -0
- package/src/engine/spells/interpreter/handlers/effect-skinning.ts +20 -0
- package/src/engine/spells/interpreter/handlers/effects-action-utility.ts +1455 -0
- package/src/engine/spells/interpreter/handlers/effects-core.ts +432 -0
- package/src/engine/spells/interpreter/handlers/effects-remainder.ts +105 -0
- package/src/engine/spells/interpreter/handlers/effects-summon-item.ts +687 -0
- package/src/engine/spells/interpreter/handlers/mod-increase-energy-percent.ts +36 -0
- package/src/engine/spells/interpreter/handlers/mod-increase-energy.ts +36 -0
- package/src/engine/spells/interpreter/handlers/periodic-trigger-zero.ts +327 -0
- package/src/engine/spells/interpreter/handlers/procs.ts +131 -0
- package/src/engine/spells/interpreter/handlers/registry.ts +975 -0
- package/src/engine/spells/interpreter/handlers/shared.ts +667 -0
- package/src/engine/spells/interpreter/handlers.ts +9 -0
- package/src/engine/spells/interpreter/hunter-kit.ts +202 -0
- package/src/engine/spells/interpreter/index.ts +525 -0
- package/src/engine/spells/interpreter/item-triggers.ts +1121 -0
- package/src/engine/spells/interpreter/lift-consume-energy.ts +37 -0
- package/src/engine/spells/interpreter/mage-portals.ts +37 -0
- package/src/engine/spells/interpreter/materialize-charm.ts +88 -0
- package/src/engine/spells/interpreter/materialize-dispel-mechanic.ts +25 -0
- package/src/engine/spells/interpreter/materialize-rating-buffs.ts +81 -0
- package/src/engine/spells/interpreter/materialize-speed.ts +109 -0
- package/src/engine/spells/interpreter/materialize-spell-magnet.ts +22 -0
- package/src/engine/spells/interpreter/opcodes.ts +789 -0
- package/src/engine/spells/interpreter/paladin-kit.ts +95 -0
- package/src/engine/spells/interpreter/paladin-seals.ts +499 -0
- package/src/engine/spells/interpreter/priest-warlock-kit.ts +135 -0
- package/src/engine/spells/interpreter/proc.ts +443 -0
- package/src/engine/spells/interpreter/registry/helpers.ts +16 -0
- package/src/engine/spells/interpreter/registry/index.ts +216 -0
- package/src/engine/spells/interpreter/registry/packs/class-abilities.ts +304 -0
- package/src/engine/spells/interpreter/registry/packs/dire-maul.ts +44 -0
- package/src/engine/spells/interpreter/registry/packs/dummy-script-tail.ts +1065 -0
- package/src/engine/spells/interpreter/registry/packs/ex-wave-m.ts +70 -0
- package/src/engine/spells/interpreter/registry/packs/life-tap.ts +107 -0
- package/src/engine/spells/interpreter/registry/packs/paladin.ts +246 -0
- package/src/engine/spells/interpreter/registry/packs/raid-script-summons.ts +26 -0
- package/src/engine/spells/interpreter/registry/packs/raid-threat-wipe.ts +22 -0
- package/src/engine/spells/interpreter/registry/packs/shaman.ts +214 -0
- package/src/engine/spells/interpreter/registry/packs/si4-dummy-generic-a.ts +269 -0
- package/src/engine/spells/interpreter/registry/packs/si4-dummy-generic-b.ts +370 -0
- package/src/engine/spells/interpreter/registry/packs/si4-dummy-generic-c.ts +172 -0
- package/src/engine/spells/interpreter/registry/packs/si4-dummy-hunter.ts +60 -0
- package/src/engine/spells/interpreter/registry/packs/si4-dummy-warrior.ts +31 -0
- package/src/engine/spells/interpreter/registry/packs/si4-script-generic-a.ts +114 -0
- package/src/engine/spells/interpreter/registry/packs/si4-script-generic-b.ts +249 -0
- package/src/engine/spells/interpreter/registry/packs/si4-script-generic-c.ts +233 -0
- package/src/engine/spells/interpreter/registry/types.ts +48 -0
- package/src/engine/spells/interpreter/talent-scripted.ts +329 -0
- package/src/engine/spells/interpreter/targeting.ts +90 -0
- package/src/engine/spells/interpreter/types-intent.ts +1501 -0
- package/src/engine/spells/interpreter/types.ts +419 -0
- package/src/engine/spells/interpreter/warrior-druid-kit.ts +314 -0
- package/src/engine/spells/interpreter/weapon-imbue-kit.ts +384 -0
- package/src/engine/spells/interrupt.ts +217 -0
- package/src/engine/spells/meleeAttackReset.ts +60 -0
- package/src/engine/spells/oocTriggerSpell.ts +49 -0
- package/src/engine/spells/overrideClassScripts.ts +319 -0
- package/src/engine/spells/parryHaste.ts +20 -0
- package/src/engine/spells/procs.ts +300 -0
- package/src/engine/spells/recovery.ts +203 -0
- package/src/engine/spells/scriptTargetDest.ts +76 -0
- package/src/engine/spells/scriptTargets.ts +85 -0
- package/src/engine/spells/singleTargetAura.ts +82 -0
- package/src/engine/spells/specialCasePayloads.ts +57 -0
- package/src/engine/spells/spellAttributes.ts +249 -0
- package/src/engine/spells/spellBonus.ts +143 -0
- package/src/engine/spells/spellModIntents.ts +419 -0
- package/src/engine/spells/spellMods.ts +283 -0
- package/src/engine/spells/spellRadius.ts +15 -0
- package/src/engine/spells/trapObjects.ts +26 -0
- package/src/json.d.ts +7 -0
- package/src/persistence/memoryRepository.ts +23 -0
- package/src/persistence/saveBackups.ts +162 -0
- package/src/persistence/saveFile.ts +68 -0
- package/src/persistence/saveRepository.ts +11 -0
- package/src/persistence/saveShape.ts +668 -0
- package/src/progression/leveling.ts +89 -0
- package/src/progression/rest.ts +1434 -0
- package/src/progression/training.ts +226 -0
- package/src/progression/xpGain.ts +369 -0
- package/src/quests/quests.ts +1580 -0
- package/src/world/aoePull.ts +198 -0
- package/src/world/areaTableDbc.ts +39 -0
- package/src/world/areaTableMapIdPairs.ts +141 -0
- package/src/world/bakeSlug.ts +43 -0
- package/src/world/continuousDungeon.ts +1250 -0
- package/src/world/dungeonBakeProjection.ts +190 -0
- package/src/world/dungeonMapDensity.ts +342 -0
- package/src/world/dungeonMapProjection.ts +135 -0
- package/src/world/dungeonNav.ts +904 -0
- package/src/world/dungeonNpcSim.ts +147 -0
- package/src/world/dungeonObjectives.ts +234 -0
- package/src/world/dungeonPreset.ts +35 -0
- package/src/world/dungeonRoute.ts +311 -0
- package/src/world/dungeonRouteGeometry.ts +732 -0
- package/src/world/dungeonRouteOrder.ts +1037 -0
- package/src/world/dungeonWingRooms.ts +426 -0
- package/src/world/escort.ts +296 -0
- package/src/world/goPoolRoll.ts +75 -0
- package/src/world/instanceObjects.ts +785 -0
- package/src/world/instances.ts +1572 -0
- package/src/world/meetingStones.ts +56 -0
- package/src/world/navmeshFloors.ts +145 -0
- package/src/world/nearGrid.ts +167 -0
- package/src/world/packBudget.ts +613 -0
- package/src/world/rareRoll.ts +335 -0
- package/src/world/routeAuthoring.ts +132 -0
- package/src/world/routeEdit.ts +209 -0
- package/src/world/world.ts +812 -0
- package/src/world/zoneHazards.ts +47 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
{
|
|
2
|
+
"raid": "stratholme-live",
|
|
3
|
+
"note": "Reviewed for E5.4 against boss_cannon_master_willey.cpp, boss_dathrohan_balnazzar.cpp and acid_classic.sql:16439-16668. There is no eventai overlay for this wing (eventai/stratholme-undead.ts:138-142 binds only 10440, 10439 and 10437), so the ACID timers reach the floor as creatures.json creatureCasts and the two cpp bosses through the ScriptDev IR at scriptdev/stratholme.ts:362-586. Nine of the ten come back kinds: [] - every shaped ability on the Live side is a disc at or inside melee reach, and the widest of them at 10 yd sits inside the 20 yd ranged floor, so there is nobody a move verb could move. Grand Crusader Dathrohan is the exception: Crusader's Hammer is a 20 yd stun disc with the same target ids as Archaedas's Ground Tremor, so the casters get that row.",
|
|
4
|
+
"bosses": [
|
|
5
|
+
{
|
|
6
|
+
"entry": 10516,
|
|
7
|
+
"name": "The Unforgiven",
|
|
8
|
+
"kinds": [],
|
|
9
|
+
"cite": "acid_classic.sql:16591-16594 creature_id=10516, baked as creatures.json 10516 creatureCasts scriptId 1051601-1051604; there is no boss_ cpp for him. Incorporeal Defense 16331 on spawn ships effects: [], and Sneak 22766 (EVENT_T 1 OOC) plus Stealth 8822 (EVENT_T 10 OOC_LOS) are both targetA 1, the ambush and not a fight mechanic. Frost Nova 14907 is the only shaped one: aoeShape pbaoe radiusYd 10, rawEffects targetA 22 TARGET_LOCATION_CASTER_SRC and targetB 15, castTimeMs 0, mechanic 7, 28-32 frost plus an 8 s root every 11.5-14.1 s. That is the Warder Stilgiss disc - ten yards sits inside RANGED_STAND_MIN_YD 20 (stand.ts:18) so the ranged are already clear, the melee are in it because that is where melee happens, and an instant with no aura on him leaves nothing for buffPresent or castingPresent to gate a walk on. A trinket or a Free Action Potion answers a root and both are class rows."
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"entry": 10558,
|
|
13
|
+
"name": "Hearthsinger Forresten",
|
|
14
|
+
"kinds": [],
|
|
15
|
+
"cite": "The wing bakes FOUR spawn slots on this one creature entry (dungeonSpawns 329 entry 10558 at 3595.8,-3509.9 / 3680.3,-3512.4 / 3692.9,-3363.2 / 3683.8,-3334.1) and stratholme-live.ts:633-644 builds one boss encounter per slot, but the gate matches on ENTRY, so this single row covers all four - the same note sm-graveyard.json carries for its six rare graves. acid_classic.sql:16596-16600 creature_id=10558, baked as creatures.json creatureCasts 1055801-1055805; script 1055801 also sets SET_RANGED_MODE 2 at 25 yd. Enchanting Lullaby 16798 is targetA 6 rangeMax 30 castTimeMs 1000, mechanic 10, a 10 s sleep on a HOSTILE_RANDOM_NOT_TOP raider with dispel 1 magic, which names a dispel and that is a class row. Demoralizing Shout 16244 is aoeShape pbaoe radiusYd 10 with aura 99 attack power -20 for 30 s and NO damage, so a step-out saves nothing - the Houndmaster Grebmar refusal. Multi-Shot 14443 ships effects: [] (Effect 58 weapon-percent, which the bake has no mapper for) and Shoot 16100 is targetA 6 at 5-30 yd for 143-193, both single target with no radiusYd."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"entry": 10393,
|
|
19
|
+
"name": "Skul",
|
|
20
|
+
"kinds": [],
|
|
21
|
+
"cite": "Two spawn slots on this one creature entry (dungeonSpawns 329 entry 10393 at 3603.6,-3486.8 and 3481.7,-3318.1), stratholme-live.ts:646-657 builds one boss encounter each, and the gate matches on ENTRY, so this single row covers both - the sm-graveyard.json note again. acid_classic.sql:16439-16442 creature_id=10393: 1039301 is action 57 SET_RANGED_MODE 2 at 35 yd and is not a cast, so creatures.json 10393 bakes the other three. Frost Armor 12544 is targetA 1 on himself (armor +12, proc-trigger 6136); Frost Shock 15499 is targetA 6 rangeMax 20 for 132-144 on a HOSTILE_RANDOM every 12-16 s; Frostbolt 16799 and Arcane Bolt 15230 are targetA 6 rangeMax 40 castTimeMs 1000 nukes on the victim. Not one carries a radiusYd or a cone, so there is no shape to stand out of."
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"entry": 11058,
|
|
25
|
+
"name": "Fras Siabi",
|
|
26
|
+
"kinds": [],
|
|
27
|
+
"cite": "Summon-only - 0 spawn rows on map 329, gated on looting Premium Siabi Tobacco GO 176248 (stratholme-live.ts:660-677) - and the encounter passes no bossSpells, so the kit resolves off creatures.json 11058 spells [7964, 17294] with the timers at acid_classic.sql:16640-16642 creature_id=11058. Smoke Bomb 7964 is aoeShape pbaoe radiusYd 5, targetA 22 and tgtB 15, mechanic 12, a 4 s stun every 12.1-18.2 s: that is the Bazil Thredd disc spell for spell, and the-stockade.json already ruled it - five yards on a melee boss is where melee happens, the 20-25 yd stand is already outside it, and a repeated melee stun is answered by a trinket or Tremor Totem. Flame Breath 17294 is a real frontal cone (src_spell_cone ConeDegrees 53, radiusYd 8, castTimeMs 2000, rangeMax 5, on the victim every 7.5-21.5 s) but it is the Ironaya wedge and not the Sarevess one: sessionChase.ts:440-457 meleeFlankSlot reads coneArcsOfKit and slides every non-tank melee out of each kit cone, and coneCovers (combatGeometry.ts:475) refuses an arc past its own radiusYd, so a raider at the ranged stand is never inside 8 yd of him. Flame Breath 20712 (cone radiusYd 15 for 833-967) and Demoralizing Shout 23511 are on charmSpells only, so they are a charm bar and not a schedule."
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"entry": 11143,
|
|
31
|
+
"name": "Postmaster Malown",
|
|
32
|
+
"kinds": [],
|
|
33
|
+
"cite": "Summon-only on the 3rd of six plagued postboxes (stratholme.cpp:463-471; 0 spawn rows on map 329), kit at acid_classic.sql:16662-16668 creature_id=11143 baked as creatures.json creatureCasts 1114301-1114307. Backhand 6253 is targetA 6 rangeMax 5, a 2 s stun on the victim every 5-8 s, and Fear 12542 is targetA 6 rangeMax 20 castTimeMs 1500, a 4 s fear on a HOSTILE_RANDOM with dispel 1 - both single target, and Fear Ward, Tremor Totem or a trinket is the answer, which are class rows. Curse of Weakness 12741 is aoeShape pbaoe radiusYd 30 with aura 13 attack power -1 for 120 s, dispel 2 curse and NO damage: a decurse answers it, and even if a walk were worth the cast time, isWithinRadiusYd hits at <= so the first clear yard is 31, past RANGED_STAND_MAX_YD 30 (stand.ts:19) - the Lord Incendius Curse of the Elemental Lord shape. Curse of Tongues 13338 is targetA 6 at 30 yd on a HOSTILE_RANDOM_MANA, also dispel 2 curse, and Incorporeal Defense 16331 ships effects: []."
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"entry": 10808,
|
|
37
|
+
"name": "Timmy the Cruel",
|
|
38
|
+
"kinds": [],
|
|
39
|
+
"cite": "Summon-only: stratholme.cpp:942-943 SummonCreature(NPC_TIMMY_THE_CRUEL) at scourgeInvaders[0] once every Crimson defender within 40 yd of defensePoints[TIMMY] is dead (:126-133), so he has 0 spawn rows on map 329. Kit at acid_classic.sql:16603-16606 creature_id=10808, baked as creatures.json creatureCasts 1080801-1080804. Thrash 12787 on spawn and on aggro is targetA 1 with aura 42 proc-trigger of 3391, and spell-data 12787 ships effects: [] so it pays nothing on this floor. Ravenous Claw 17470 every 15 s is targetA 6 rangeMax 5, a 925-1075 health_leech on whoever he is tanking - a big single hit and a healer problem, with no radius. Enrage 8599 at 20% HP is targetA 1, haste +30% for 120 s: the Targorr the Dread refusal, a self buff with no ground to stand out of."
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"entry": 11032,
|
|
43
|
+
"name": "Malor the Zealous",
|
|
44
|
+
"kinds": [],
|
|
45
|
+
"cite": "acid_classic.sql:16625-16629 creature_id=11032, baked as creatures.json creatureCasts 1103201-1103205; there is no boss_ cpp for him. Ground Smash 12734 at TARGET_T 17 NEAREST_AOE_TARGET every 9-14 s is the only shaped one: aoeShape pbaoe radiusYd 10, rawEffects targetA 22 and tgtB 15, castTimeMs 0, mechanic 12, 96-128 physical plus a 3 s stun. Ten yards sits inside the melee band and inside RANGED_STAND_MIN_YD 20 (stand.ts:18), so the melee are in it because that is where melee happens and the ranged are already out - the Galgann Firehammer refusal - and instant with no aura there is nothing for buffPresent or castingPresent to gate a walk on. Head Crack 16172 is targetA 6 rangeMax 5 for stamina -1 over 20 s, single target. Lay on Hands 17233 (heal_max_health, targetA 21, one cast an hour) and Holy Light 15493 (castTimeMs 2500, 467-541) fire on EVENT_T 14 FRIENDLY_MISSING_HP and on himself at 20% HP, which is a kick or an Earth Shock: the Fineous Darkvire row, and both are class rows."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"entry": 10997,
|
|
49
|
+
"name": "Cannon Master Willey",
|
|
50
|
+
"kinds": [
|
|
51
|
+
"use-object"
|
|
52
|
+
],
|
|
53
|
+
"cite": "boss_cannon_master_willey.cpp:28-119; acid_classic.sql:16622 names the cpp instead of writing rows and creatures.json 10997 carries [10101, 16615, 11729] on charmSpells with no spells array, so the schedule is the IR port at scriptdev/stratholme.ts:362-411 (combatEnemySpec.ts:101-109 lets it supersede the bare kit, :138 drops the charm-bar slots). Pummel 15615 is targetA 6 rangeMax 5, 45 physical plus a 5 s interrupt lockout on the victim, 7 s then every 12 s (cpp:49,65-72). Shoot 16496 is targetA 6 rangeMax 30 for 215-289 on an ATTACKING_TARGET_RANDOM picked with SELECT_FLAG_NOT_IN_MELEE_RANGE, 1 s then every 3-4 s (cpp:48,83-93). Knock Away 10101 bakes effects: [] - Effect 58 weapon damage, Effect 98 knockback miscValue 75 and Effect 77 script, none of which the bake maps - so it lands nothing here. Not one ability carries a radiusYd or a cone, which makes this tank-and-spank on the floor as it stands.",
|
|
54
|
+
"encounterRows": [
|
|
55
|
+
{
|
|
56
|
+
"kind": "use-object",
|
|
57
|
+
"label": "Fire the Scarlet Cannon at the riflemen",
|
|
58
|
+
"cite": "dbscripts_on_go_template_use 176216/176217 command 13 ACTIVATE_OBJECT buddyEntry 176211 searchRadius 50; gameobject_template 176211 Cannonball is type 6 with trap.spellId 17278 Cannon Fire; acid_classic.sql:16638 script 1105403 is EVENT_T 8 SPELLHIT 17278 on Crimson Rifleman 11054 then ACTION_T 7 - the riflemen die to the cannon. Both cannons stand 11 yd from Willey (dungeonGameObjects 329 guids 3290330/3290331). Payload resolved by engine/game/combatObjectTraps.ts, laid by engine/combat/useObjectTrap.ts; the cannon is Lock 1039, which requires item 12973 Scarlet Cannonball, so the row carries that itemCount gate rather than firing without ammo",
|
|
59
|
+
"rule": {
|
|
60
|
+
"id": "raid_enc_10997_cannon",
|
|
61
|
+
"action": {
|
|
62
|
+
"kind": "use_object",
|
|
63
|
+
"goEntry": 176216
|
|
64
|
+
},
|
|
65
|
+
"conditions": [
|
|
66
|
+
{
|
|
67
|
+
"subject": "self",
|
|
68
|
+
"metric": "itemCount",
|
|
69
|
+
"op": ">=",
|
|
70
|
+
"value": 1,
|
|
71
|
+
"ref": 12973
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"enabled": true
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"entry": 10811,
|
|
81
|
+
"name": "Archivist Galford",
|
|
82
|
+
"kinds": [],
|
|
83
|
+
"cite": "acid_classic.sql:16610-16612 creature_id=10811, baked as creatures.json creatureCasts 1081101-1081103; there is no boss_ cpp for him. Fire Nova 17366 at TARGET_T 17 NEAREST_AOE_TARGET every 4-20 s is the only shaped one: aoeShape pbaoe radiusYd 10, rawEffects targetA 22 and tgtB 15, castTimeMs 0, 197-227 fire. Ten yards sits inside the melee band and inside RANGED_STAND_MIN_YD 20 (stand.ts:18), so the melee are in it because that is where melee happens and the ranged are already out - the Galgann Firehammer refusal, and an instant with no aura leaves nothing to gate a walk on. Burning Winds 17293 on the victim is targetA 6 rangeMax 30 castTimeMs 1000, mechanic 12, an 8 s stun plus a fire dot ticking 200 every 1000 ms, and Pyroblast 17274 is targetA 6 rangeMax 35 castTimeMs 6000 for 637-739 plus a dot: both single target with no radiusYd, and what answers them is a trinket, a heal and a kick, which are class rows. Fire Nova 23462 (aoeShape pbaoe radiusYd 100 for 555-645) is on charmSpells only and NOT on creatures.json 10811 spells, so it is a charm-bar slot and never on his schedule."
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"entry": 10812,
|
|
87
|
+
"name": "Grand Crusader Dathrohan",
|
|
88
|
+
"kinds": [
|
|
89
|
+
"position"
|
|
90
|
+
],
|
|
91
|
+
"note": "Crusader's Hammer stuns everything within 20 yd of Dathrohan every 12 seconds. The melee have to eat it. The ranged only need to stand a yard further back.",
|
|
92
|
+
"cite": "boss_dathrohan_balnazzar.cpp:28-210, ported at scriptdev/stratholme.ts:426-586; acid_classic.sql:16613 names the cpp and creatures.json 10812 carries [17286, 20830] on charmSpells with no spells array, so the schedule is the IR (combatEnemySpec.ts:101-109). The transform is a PHASE, not a party verb: cpp:134-146 at GetHealthPercent() < 40.0f casts SPELL_BALNAZZARTRANSFORM 17288 on HIMSELF (Effect 67 heal max health, Effect 30 energize, Effect 64 trigger of 17398), does UpdateEntry to Balnazzar 10813 and yells - no add, no ground, no order to impose, and the one thing it puts on the floor is Balnazzar Transform Stun 17398, aoeShape pbaoe radiusYd 100, a one-shot 5 s stun on the whole chamber whose first clear yard would be 101, past RANGED_STAND_MAX_YD 30 and past every cast range in the game. Phase 1 asks for nothing either: Shadow Shock 17399 is pbaoe radiusYd 15, inside the 20 yd ranged floor; Psychic Scream 13704 is the 8 yd melee fear disc that Fear Ward and Tremor Totem answer; Sleep 12098 and Mind Blast 17287 are targetA 6 single target; and Mind Control 15690 bakes effects: [] off a DBC row that is targetA 1 TARGET_UNIT_CASTER, so nothing lands. Crusader Strike 17281 and Holy Strike 17284 are rangeMax 5 on the victim and 17284 also ships effects: []. Crusader's Hammer is the row.",
|
|
93
|
+
"encounterRows": [
|
|
94
|
+
{
|
|
95
|
+
"kind": "position",
|
|
96
|
+
"label": "Casters step out of Crusader's Hammer",
|
|
97
|
+
"cite": "spell 17286 Crusader's Hammer bakes aoeShape pbaoe radiusYd 20, rawEffects targetA 22 TARGET_LOCATION_CASTER_SRC and targetB 15, castTimeMs 0, mechanic 12, a 4000 ms stun and zero damage. scriptdev/stratholme.ts:455-465 arms it at 8 s then every 12 s in PHASE 0 ONLY, off boss_dathrohan_balnazzar.cpp:69,109-115; the cpp casts it at GetVictim() but a pbaoe always sits on the CASTER, so the target picks who it centres on and not where the disc lands, exactly as the Lord Roccor row says. Same 20 yd radius and the same target ids as Archaedas's Ground Tremor 6524 at twice the stun, so this is that row: isWithinRadiusYd (combatGeometry.ts:216-227) hits at <=, 21 is the first clear yard, and the 24 yd trigger is deliberately wider than the park because a row released on the yard it parks on re-arms on the boss's next step and cancels its own walk. The 25 yd ranged stand (stand.ts:20 RANGED_STAND_DEFAULT_YD) sits outside the trigger, so this only ever moves a caster who has drifted in or a hunter sitting on the 20 yd floor (stand.ts:18), which the disc reaches at <=. isCaster keeps the melee out of it - a permanent 21 yd park is four times MELEE_REACH_YD and would end melee to dodge a 4 s stun - and the tank is exempt anyway, because sessionMechanicMove.ts:550 refuses keep_range for whoever holds the boss's current victim slot. Instant with no aura, so like the Archaedas row this is a standing position rule and not a reaction. It also goes quiet at the transform, which is correct rather than a hole: keep_range matches the LIVE spec.creatureEntry (sessionMechanicMove.ts:532) and so does creatureDistanceYd (pickAction.ts:1700-1714), the morph sets that entry to 10813 (eventAi.ts:1403-1406), and the cpp never casts 17286 again once m_bTransformed is true.",
|
|
98
|
+
"rule": {
|
|
99
|
+
"id": "raid_enc_10812_range_17286",
|
|
100
|
+
"action": {
|
|
101
|
+
"kind": "move",
|
|
102
|
+
"move": {
|
|
103
|
+
"kind": "keep_range",
|
|
104
|
+
"minYd": 21,
|
|
105
|
+
"entry": 10812
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
"conditions": [
|
|
109
|
+
{
|
|
110
|
+
"subject": "self",
|
|
111
|
+
"metric": "isCaster",
|
|
112
|
+
"op": "==",
|
|
113
|
+
"value": 1
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"subject": "self",
|
|
117
|
+
"metric": "creatureDistanceYd",
|
|
118
|
+
"op": "<=",
|
|
119
|
+
"value": 24,
|
|
120
|
+
"ref": 10812
|
|
121
|
+
}
|
|
122
|
+
],
|
|
123
|
+
"enabled": true
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
]
|
|
127
|
+
}
|
|
128
|
+
]
|
|
129
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"raid": "stratholme-undead",
|
|
3
|
+
"note": "Reviewed for E5.4 against boss_baroness_anastari.cpp, boss_maleki_the_pallid.cpp, stratholme.cpp, eventai/stratholme-undead.ts and acid_classic.sql:16556-16608. All seven bosses come back kinds: [] and that is the finding. The wing's standard shape is a 10 yd disc centred on a melee boss - Banshee Curse, Silence, Crowd Pummel, Trample - which the melee are standing in because that is where melee happens, and the 20-25 yd ranged stand is already outside it. Two things the fight does ask for have no verb behind them and are recorded in blockedBy: Anastari's Possess runs the opposite way from mcEntries, and Rivendare's Unholy Aura is a 30 yd disc that is wider than the band the party can stand in.",
|
|
4
|
+
"bosses": [
|
|
5
|
+
{
|
|
6
|
+
"entry": 10809,
|
|
7
|
+
"name": "Stonespine",
|
|
8
|
+
"kinds": [],
|
|
9
|
+
"cite": "acid_classic.sql:16607-16608 creature_id=10809 is his whole kit, one script, and there is no ScriptDev cpp for 10809 and no overlay row in eventai/stratholme-undead.ts. 1080901 casts Vicious Rend 14331 at TARGET_T 4 HOSTILE_RANDOM every 7-12 s after a 0-10 s opener, and 14331 is targetA 6 rangeMax 5, mechanic 15 bleed, a 34-per-3 s physical dot for 15 s that stacks to 3. Single target, no radiusYd and no aoeShape - tank and spank. stratholme-undead.ts:852-867 also marks him optional, because pools.json 46803 holds his one guid against a substitute and he is not up every run."
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"entry": 10436,
|
|
13
|
+
"name": "Baroness Anastari",
|
|
14
|
+
"kinds": [
|
|
15
|
+
"mc"
|
|
16
|
+
],
|
|
17
|
+
"cite": "boss_baroness_anastari.cpp:30-216; acid_classic.sql:16561 names the cpp and carries no rows for 10436, and creatures.json 10436 holds [16867, 16565, 18327, 17244] on charmSpells only, so the schedule is the port at scriptdev/stratholme.ts:95-248 that registry.ts:549 binds. Banshee Wail 16565 is targetA 6 rangeMax 40, a 213-287 shadow nuke on a random raider every 2-3 s. Banshee Curse 16867 and Silence 18327 are both aoeShape pbaoe radiusYd 10, targetA 22 TARGET_LOCATION_CASTER_SRC and tgtB 15 - a 12 s -10% hit debuff (dispel 2 curse) and a 10 s silence (mechanic 9, dispel 1 magic) on everything within 10 yd of HER, every 20 s and every 25 s. Ten yards on a melee boss is the Galgann Firehammer disc: the melee are inside it because that is where melee happens, the 20-25 yd stand (stand.ts:18-20) is already outside, and a decurse or a dispel answers both, which are class rows. Possess 17244 is the fight and it is in blockedBy.",
|
|
18
|
+
"encounterRows": [
|
|
19
|
+
{
|
|
20
|
+
"kind": "mc",
|
|
21
|
+
"label": "Break the Possess: burn the possessed raider under half health",
|
|
22
|
+
"cite": "boss_baroness_anastari.cpp:159-173 casts Possess 17244 every 30 s at SelectAttackingTarget(RANDOM, 1, SELECT_FLAG_PLAYER), so the BOSS takes a raider for 120 s, and :107-115 plus AnastariPossess OnPeriodicTickEnd :201-205 strip it the moment that raider drops under 50% health - scriptdev/stratholme.ts:156-224 ports it as charmBreakHpFrac 0.5 and crowdControl.ts break_charm_if_hp_below executes it. Two of the three pieces were already here: the possessed raider is in every other party member's hostile pool because charm flips a unit's faction (sessionPools.ts:170-173 factionOfFighter), and the exit condition is armed. What was missing was an ORDER that can name an ally seat - kill_order takes creature_template entries and a raider has none - so killOrder.ts KILL_ORDER_CHARMED_ALLY is that term, resolved the same way in pickAction and sessionFocus. The MT is excluded from following an order (pickAction.ts:2231), so the tank keeps Anastari and the DPS peel onto their own possessed member.",
|
|
23
|
+
"rule": {
|
|
24
|
+
"id": "raid_enc_10436_break_possess",
|
|
25
|
+
"action": {
|
|
26
|
+
"kind": "kill_order",
|
|
27
|
+
"entries": [
|
|
28
|
+
0
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
"conditions": [],
|
|
32
|
+
"enabled": true
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"entry": 10437,
|
|
39
|
+
"name": "Nerub'enkan",
|
|
40
|
+
"kinds": [],
|
|
41
|
+
"cite": "eventai/stratholme-undead.ts:93-136 scripts 1043701-1043704, acid_classic.sql:16562-16566 creature_id=10437. Encasing Webs 4962 is targetA 6 rangeMax 20 castTimeMs 2000, mechanic 7, a 6 s root plus a -100% haste on one raider every 15-20 s; Pierce Armor 6016 is targetA 6 rangeMax 5, -50% armor for 20 s on whoever he is hitting. Neither carries a radiusYd. The two summons do put bodies on the floor - planCastSummons falls back to rawEffects 41/42 with count basePoints+1 (summonCast.ts:94-108), so Crypt Scarabs 16418 (Effect 41, miscValue 10577, basePoints 5) drops six every 4-5 s and Raise Undead Scarab 17235 (Effect 42, miscValue 10876) one every 17-20 s - but nothing in the DB says either precedes the boss and neither is worth an order: creatures.json 10577 Crypt Scarab is level 58 with 2 HP whose only casts are a 0.5 s snare on spawn and a suicide passive, and 10876 Undead Scarab has no spells array at all."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"entry": 10438,
|
|
45
|
+
"name": "Maleki the Pallid",
|
|
46
|
+
"kinds": [],
|
|
47
|
+
"cite": "boss_maleki_the_pallid.cpp:28-124; acid_classic.sql:16567 names the cpp and carries no rows for 10438, and creatures.json 10438 holds [17238, 16869, 17503, 17243] on charmSpells only, so the schedule is the port at scriptdev/stratholme.ts:261-350. All five are single target or self and not one has a radiusYd: Frostbolt 17503 is targetA 6 rangeMax 40 castTimeMs 2000 every 3-4 s, Ice Tomb 16869 is targetA 6 rangeMax 40 castTimeMs 1500, mechanic 12, a 10 s stun on a NON-tank every 15-20 s (cpp:76 SelectAttackingTarget RANDOM, 1), Drain Life 17238 and Drain Mana 17243 are both targetA 6 rangeMax 20 ticking over 5 s, and Frost Armor 12556 is targetA 1 on himself. A 10 s stun on one raider is a trinket and the two drains are a dispel, and both are class rows."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"entry": 10435,
|
|
51
|
+
"name": "Magistrate Barthilas",
|
|
52
|
+
"kinds": [],
|
|
53
|
+
"cite": "acid_classic.sql:16556-16560 creature_id=10435 is his whole kit and there is no ScriptDev cpp for 10435. Crowd Pummel 10887 is the only shaped ability: aoeShape pbaoe radiusYd 10, targetA 22 and tgtB 15, castTimeMs 0, mechanic 26 interrupt, baking as interrupt_cast with a 5000 ms lockout plus a knockback, every 15 s. It is a disc at melee reach, and the raiders it would lock out are the casters, who stand at 20-25 yd (stand.ts:18-20) and are already clear of it. Draining Blow 16793 is targetA 6 rangeMax 5, a 250 shadow health leech every 15 s; Mighty Blow 14099 is targetA 6 rangeMax 10 and ships effects: [] because its Effect 17 WEAPON_DAMAGE row has no bake mapper. Furious Anger 16792 on aggro is targetA 1 aura 42 proc-trigger of 16791, a self haste that stacks to 25, and Transformation 16794 on death is a displayId swap (miscValue 2335). His flee is a map event and not a party verb: stratholme-undead.ts:455-500 relocates him from the Service Entrance Gate to the Slaughter Square approach after 8 s if he is still out of combat."
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"entry": 10439,
|
|
57
|
+
"name": "Ramstein the Gorger",
|
|
58
|
+
"kinds": [],
|
|
59
|
+
"cite": "eventai/stratholme-undead.ts:52-87 scripts 1043901-1043904, acid_classic.sql:16569-16572 creature_id=10439. Three abilities. Flurry 15088 on spawn is targetA 1 aura 42 proc-trigger of 17687, a self haste. Knockout 17307 is targetA 6 rangeMax 10 every 10 s, a 6 s stun (aura 12) plus a knockback on whoever he is hitting - single target, no radiusYd, and a trinket is the answer. Trample 5568 is the only shape and it is inert twice over: aoeShape pbaoe radiusYd 10, targetA 22 and tgtB 15, castTimeMs 0 at TARGET_T 17 NEAREST_AOE_TARGET every 7-8 s, which is the Stockade disc at melee reach, and spell-data 5568 ships effects: [] because its one row is Effect 58 WEAPON_PERCENT_DAMAGE, which the bake has no mapper for. He is a gauntlet payoff and that is exactly why there is no kill-order: stratholme.cpp:264-297 only summons him once abomCount reaches 0, so every Slaughter Square abomination is already dead when he lands, and the 30x Mindless Undead 11030 plus 5x Black Guard Sentry 10394 arrive at TYPE_RAMSTEIN DONE (stratholme.cpp:305-329), i.e. after he dies, which stratholme-undead.ts:1046-1064 models as its own Black Guard Gauntlet encounter. He fights alone."
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"entry": 10440,
|
|
63
|
+
"name": "Baron Rivendare",
|
|
64
|
+
"kinds": [
|
|
65
|
+
"position"
|
|
66
|
+
],
|
|
67
|
+
"cite": "eventai/stratholme-undead.ts:26-46 script 1044005, acid_classic.sql:16574-16581 creature_id=10440. Mortal Strike 15708 (targetA 6 rangeMax 5, 300% weapon plus -50% healing taken for 5 s), Cleave 15754 and the encounter's 15284 (targetA 6 rangeMax 5, chainTargets 3, both effects: [] on Effect 58) and Shadow Bolt 17393 (targetA 6 rangeMax 40 castTimeMs 2000 at TARGET_T 4 HOSTILE_RANDOM every 10 s) are all single target with no radiusYd. Unholy Aura 17467 is the one area shape and it is in blockedBy. The skeletons are NOT a kill-order: the in-tree overlay drops the ACID SPELLHIT chain 1044006-1044007 and SPAWNs six Mindless Skeleton 11197 straight onto the floor every 15 s, and creatures.json 11197 is level 60 with 296-306 HP carrying one cast row - Death Pact 17472, an instakill on ITSELF fired on SPELLHIT 17471 (acid_classic.sql:16670 creature_id=11197) - so they never cast at the party and they never heal him, 17471 being a 10 point health leech. Nothing in stratholme.cpp or in the DB says they precede him, and kill_order is a filter that returns the first LIVING entry on its list (evaluate.ts:578), so naming 11197 on a boss who adds six more every 15 s would hold the focus off a 46,620 HP body for the whole fight.",
|
|
68
|
+
"blockedBy": {
|
|
69
|
+
"position": "Unholy Aura is a real 30 yd disc and it is too wide for keep_range - the Doom'rel refusal in blackrock-depths.json, reached from a permanent aura instead of an 8-12 s volley. 17467 bakes proc_trigger_spell of 17466 on a 2000 ms tick with durationIndex 21, the permanent sentinel, and 17466 is aoeShape pbaoe radiusYd 30, targetA 22 TARGET_LOCATION_CASTER_SRC and tgtB 15, castTimeMs 0, 150 shadow. isWithinRadiusYd (combatGeometry.ts:216) hits at <=, so the first clear yard is 31, which is past RANGED_STAND_MAX_YD 30 (stand.ts:19): a 30 yd disc means the whole party is inside it by construction, the ranged topping out at 30 and the melee at MELEE_REACH_YD 5, and there is no aura window to wait out because the trigger never drops. The out-of-combat half is SOLVED and no longer part of the refusal: 84955233d makes a TIMER_OOC self aura spawn state, so he arrives wearing 17467 (creatureCasts eventType 1, castFlags 34, scriptId 1044001), and src/dev/smoke/triggerPayloadLands.mjs drives him at host 1 payload 88. The disc is the whole blocker now."
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
]
|
|
73
|
+
}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
{
|
|
2
|
+
"raid": "sunken-temple",
|
|
3
|
+
"note": "Reviewed for E5.4 against sunken_temple.cpp, sunken_templeScripts.cpp, eventai/sunken-temple.ts and acid_classic.sql. Ten of the twelve come back kinds: [] and the six trolls are the headline - the only ordered thing in this instance is the STATUE puzzle, not the Atal'ai Defenders. Atal'alarion casts spell 6524 Ground Tremor, the same id and the same 20 yd disc Archaedas already has a row for in uldaman.json, so he gets that row. Jammal'an is the one boss in the wing that puts fire on the floor instead of a disc on himself.",
|
|
4
|
+
"bosses": [
|
|
5
|
+
{
|
|
6
|
+
"entry": 8580,
|
|
7
|
+
"name": "Atal'alarion",
|
|
8
|
+
"kinds": [
|
|
9
|
+
"position"
|
|
10
|
+
],
|
|
11
|
+
"note": "Ground Tremor stuns everything within 20 yd of the guardian every 9.7 to 32.2 seconds. The melee have to eat it. The ranged only need to stand a yard further back.",
|
|
12
|
+
"cite": "eventai/sunken-temple.ts:270-303 scripts 858001-858004, acid_classic.sql:16905-16908 creature_id=8580. Ground Tremor 6524 is the SAME SPELL Archaedas casts, so this is uldaman.json raid_enc_2748_range_6524 with the entry changed: aoeShape pbaoe radiusYd 20, rawEffects targetA 22 TARGET_LOCATION_CASTER_SRC and targetB 15, mechanic 12, a 2000 ms stun, castTimeMs 0. Sweeping Slam 12887 is the only other ability and it is a frontal wedge, not a disc - src_spell_cone Id 12887 ConeDegrees 71, aoeShape cone radiusYd 5, rangeMax 10 - so it is the Ironaya shape and the product already answers it: sessionChase.ts:440-457 meleeFlankSlot reads coneArcsOfKit off his kit and slides every non-tank melee out, and coneCovers (combatGeometry.ts:475-485) refuses an arc past its own radiusYd, so nobody at range is ever in it. He is summon-only, spawned by the six-statue puzzle (sunken-temple.ts:650-668), so the row is off until he is on the floor.",
|
|
13
|
+
"encounterRows": [
|
|
14
|
+
{
|
|
15
|
+
"kind": "position",
|
|
16
|
+
"label": "Casters step out of Ground Tremor",
|
|
17
|
+
"cite": "spell 6524 Ground Tremor, spell-data aoeShape pbaoe radiusYd 20, rawEffects targetA 22 targetB 15, mechanic 12, durMs 2000, castTimeMs 0, on creatures.json 8580 creatureCasts scriptId 858004 every 20.5-32.2 s after a 9.7-18.9 s opener. isWithinRadiusYd hits at <=, so 21 is the first clear yard, and the trigger at 24 is deliberately wider than the park because a row released on the yard it parks on re-arms on the boss's next step. That leaves 2.5 yd to stand and cast in, and the 25 yd ranged stand (stand.ts:20 RANGED_STAND_DEFAULT_YD) sits outside the trigger so the camp is not armed all fight. isCaster keeps the melee out of it: 21 yd is four times MIN_AGGRO_DISTANCE 5 (creatureAiConstants.ts:76) and a permanent park there would end melee for a 2 s stun. A hunter sitting on the 20 yd floor (stand.ts:18 RANGED_STAND_MIN_YD, which the disc reaches at <=) takes the same one-yard step. castTimeMs 0 and no aura left behind, so like the Archaedas row this is a standing position rule and not a reaction.",
|
|
18
|
+
"rule": {
|
|
19
|
+
"id": "raid_enc_8580_range_6524",
|
|
20
|
+
"action": {
|
|
21
|
+
"kind": "move",
|
|
22
|
+
"move": {
|
|
23
|
+
"kind": "keep_range",
|
|
24
|
+
"minYd": 21,
|
|
25
|
+
"entry": 8580
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"conditions": [
|
|
29
|
+
{
|
|
30
|
+
"subject": "self",
|
|
31
|
+
"metric": "isCaster",
|
|
32
|
+
"op": "==",
|
|
33
|
+
"value": 1
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"subject": "self",
|
|
37
|
+
"metric": "creatureDistanceYd",
|
|
38
|
+
"op": "<=",
|
|
39
|
+
"value": 24,
|
|
40
|
+
"ref": 8580
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
"enabled": true
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"entry": 5712,
|
|
50
|
+
"name": "Zolo",
|
|
51
|
+
"kinds": [],
|
|
52
|
+
"cite": "eventai/sunken-temple.ts:356-384 scripts 571201-571203, acid_classic.sql:16827-16829 creature_id=5712. Chain Lightning 12058 is targetA 6 at rangeMax 30 with castTimeMs 3000, a single-target nuke with no radiusYd. Atal'ai Skeleton Totem 12506 is Effect 74 summon_totem of creature 8510, a body and not a party verb, and Green Channeling 13540 is targetA 1 on himself out of combat. Nothing in the kit has an area shape.",
|
|
53
|
+
"note": "One of the six Atal'ai Defenders. Order-free: see Mijan."
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"entry": 5713,
|
|
57
|
+
"name": "Gasher",
|
|
58
|
+
"kinds": [],
|
|
59
|
+
"cite": "eventai/sunken-temple.ts:390-407 scripts 571301-571302, acid_classic.sql:16831-16832 creature_id=5713. Two rows total, and one of them is the out-of-combat Green Channeling 13540. Strike 15580 is rangeMax 5 targetA 6, single target with no radius and no aura. Pure tank-and-spank.",
|
|
60
|
+
"note": "One of the six Atal'ai Defenders. Order-free: see Mijan."
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"entry": 5714,
|
|
64
|
+
"name": "Loro",
|
|
65
|
+
"kinds": [],
|
|
66
|
+
"cite": "eventai/sunken-temple.ts:413-448 scripts 571401-571404, acid_classic.sql:16834-16837 creature_id=5714. Shield Spike 12782 (aura 43 damage shield) and Improved Blocking 3639 (aura 51) are targetA 1 self buffs, and Hate to Zero 9205 is targetA 1 with trigger 9204 - a threat wipe, which the engine answers by re-acquiring, not by walking. Shield Slam 8242 is rangeMax 5 targetA 6, a single-target 2 s stun plus 19 damage - the same spell Kam Deepfury carries in the-stockade.json, and 15655 on his charm bar is the rank-2 copy of it. Nothing area.",
|
|
67
|
+
"note": "One of the six Atal'ai Defenders. Order-free: see Mijan."
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"entry": 5715,
|
|
71
|
+
"name": "Hukku",
|
|
72
|
+
"kinds": [],
|
|
73
|
+
"cite": "eventai/sunken-temple.ts:454-504 scripts 571501-571506, acid_classic.sql:16839-16845 creature_id=5715. Hukku's Guardians 12790 is three Effect 42 SUMMON_GUARDIAN slots - 8656 Voidwalker, 8657 Succubus, 8658 Felhunter - on an OUT-OF-COMBAT 1 s timer, so all three are already standing when the party pulls, and nothing in the C++ or in classic-db names an order among them. Curse of Blood 12279 is targetA 6, dispel 2, a decurse. Shadow Bolt 12471 is targetA 6 at 40 yd. Shadow Bolt Volley 9081 is the only shaped ability and it is too big to leave: aoeShape pbaoe radiusYd 30, targetA 22 targetB 15, castTimeMs 3000, and he holds at SET_RANGED_MODE 2 / 35 yd (571503), so 31 yd off him would put a caster past his own 30-40 yd reach on him. Same call as Deep Sleep in sm-cathedral.json - a disc that covers the room is not a disc you step out of.",
|
|
74
|
+
"note": "One of the six Atal'ai Defenders. Order-free: see Mijan."
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"entry": 5716,
|
|
78
|
+
"name": "Zul'Lor",
|
|
79
|
+
"kinds": [],
|
|
80
|
+
"cite": "eventai/sunken-temple.ts:510-537 scripts 571601-571603, acid_classic.sql:16846-16848 creature_id=5716. Cleave 15584 is rangeMax 5 targetA 6, single target with no radiusYd and no src_spell_cone row, so it is not an arc. Frailty 12530 is aoeShape pbaoe radiusYd 10, targetA 22 targetB 15, aura 29 for -11 to a stat over 60 s, dispel 1 magic, castTimeMs 0 - ten yards on a melee mob is inside the melee band and inside RANGED_STAND_MIN_YD 20 (stand.ts:18), so the melee are in it because that is where melee happens and the ranged are already out. What answers a dispellable stat drain is a dispel in the class rotation.",
|
|
81
|
+
"note": "One of the six Atal'ai Defenders. Order-free: see Mijan."
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"entry": 5717,
|
|
85
|
+
"name": "Mijan",
|
|
86
|
+
"kinds": [],
|
|
87
|
+
"cite": "This is where the kill-order question for all six Atal'ai Defenders is answered, and the answer is no. sunken_temple.cpp:129-151 OnCreatureDeath hands every one of 5712-5717 the same SetData(TYPE_PROTECTORS, DONE), and :162-179 only decrements m_uiProtectorsRemaining and opens the Jammal'an barrier when the counter reaches zero - any order, all six. The ordered thing in this instance is the STATUE puzzle: ProcessStatueEvent (cpp:329-354) checks m_uiStatueCounter == i against m_aAtalaiStatueEvents and trips a trap on a miss, and sunken_temple.h:91-92 names that order S, N, SW, SE, NW, NE. Those are gameobjects 148830-148835, already ported at sunken-temple.ts:148-165, not creatures, so no kill_order row can carry it. Mijan is the only Defender a healer-first order could even name and there is nobody for him to heal: sunken-temple.ts:684-734 makes each of the six its own one-body encounter with its own death flag, so they are never up together. His kit is Renew 8362 (targetA 21 friendly, EVENT_T 14 FRIENDLY_HP), Healing Wave 12492 (targetA 21, 476, at <=50% HP), Healing Ward 11899 (Effect 87 summon_totem 8179) and Thorns Aura 8148 (Effect 35 area aura party, targetA 1 on himself, aura 15 damage shield) - an interrupt and a purge, which are class rows.",
|
|
88
|
+
"note": "One of the six Atal'ai Defenders. All six must die and the C++ does not care in what order."
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"entry": 5710,
|
|
92
|
+
"name": "Jammal'an the Prophet",
|
|
93
|
+
"kinds": [
|
|
94
|
+
"position"
|
|
95
|
+
],
|
|
96
|
+
"note": "Jammal'an drops a burning patch on the floor for 8 seconds. Step off it.",
|
|
97
|
+
"cite": "acid_classic.sql:16811-16819 creature_id=5710; eventai/sunken-temple.ts:29-41 carries ONLY his death script 571002, so his casts come off creatures.json 5710 creatureCasts (combatEnemySpec.ts:99-108 falls back to creatureCasts when the overlay has no ACTION_T_CAST row). Flamestrike 12468 is the one row here and it is a floor patch, not a disc. Hex of Jammal'an 12479 is NOT a run-out bomb: it is castTimeMs 0 targetA 6 on one raider for 10 s, and sunken_templeScripts.cpp:273-285 HexOfJammalanAura fires 12480 and 12483 only on AURA_REMOVE_BY_EXPIRE - both targetA 6, neither carries a radiusYd, so there is no payload to flee. That expire chain is already ported at aura-remove.ts:86, and 12480 is dispel 2, so a decurse before the 10 s runs out stops the +399% damage taken and the charm outright - a class row. Earthgrab Totem 8376 is Effect 42 summoning creature 6066, a body. Healing Wave 12492 at <=50% HP is an interrupt. Ogom the Wretched 5711 stands in his pack (sunken-temple.ts:774) and is Shadow Bolt and two single-target curses.",
|
|
98
|
+
"encounterRows": [
|
|
99
|
+
{
|
|
100
|
+
"kind": "position",
|
|
101
|
+
"label": "Get out of Flamestrike",
|
|
102
|
+
"cite": "spell 12468 Flamestrike bakes aoeShape ground, radiusYd 5, castTimeMs 3000, rawEffects effect 2 targetA 16 AT_DEST_LOC for 114-132 fire and effect 27 targetA 28 AT_DYNOBJ_LOC, auraName 3, amplitude 2000, durationIndex 31 for 8000 ms. spell-data 12468 carries aoe true plus a dot effect, which is exactly what dynamicObject.ts:220-224 isPersistentAreaEffect accepts, so applySpell.ts:1271-1290 creates a real GroundPool with spellId 12468, radius 5 and an 8 s life. That is a hazard with a published id: hazards.ts:94-107 lists every live pool and hazardMatches (:128-131) matches a row's id against String(spellId), so avoid_zone \"12468\" names this pool and nothing else. The row is the app's own avoid verb copied field for field - raidCustomRows.ts:410-421 builds avoid as avoid_zone on the spell id gated on hazardProximityYd <= 0, and it is the one move case there that deliberately does NOT add notTanking, because the pool is where the pool is and the tank is standing in it too. combatGeometry.ts:317-319 aoeFanFromCaster returns false for a ground shape, so applySpell.ts:1261 sites the pool on the TARGET side, and creatures.json 5710 creatureCasts scriptId 571009 casts it at EventAI target 1, the current victim - the patch lands under the tank every 20.1-52.9 s after an 8-24 s opener. Unlike a pbaoe the patch does not follow anybody: it is static for 8 s, so walking off it costs one step and not the fight. pickAction.ts:770-774 moveOwnsPastDeadline exempts avoid_zone from the 4000 ms give-up while the pool is alive, so the walk finishes. Not driven on the floor - CLAUDE.md section 3 - so the shape and every number above are sourced and the row is shipped-unverified.",
|
|
103
|
+
"rule": {
|
|
104
|
+
"id": "raid_enc_5710_avoid_12468",
|
|
105
|
+
"action": {
|
|
106
|
+
"kind": "move",
|
|
107
|
+
"move": {
|
|
108
|
+
"kind": "avoid_zone",
|
|
109
|
+
"id": "12468"
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
"conditions": [
|
|
113
|
+
{
|
|
114
|
+
"subject": "self",
|
|
115
|
+
"metric": "hazardProximityYd",
|
|
116
|
+
"op": "<=",
|
|
117
|
+
"value": 0
|
|
118
|
+
}
|
|
119
|
+
],
|
|
120
|
+
"enabled": true
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
]
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"entry": 5719,
|
|
127
|
+
"name": "Morphaz",
|
|
128
|
+
"kinds": [],
|
|
129
|
+
"cite": "eventai/sunken-temple.ts:156-179 scripts 571901-571902, acid_classic.sql:16856-16857 creature_id=5719. Both abilities are frontal wedges and both stop short of the ranged stand. Acid Breath 12884 is src_spell_cone ConeDegrees 53, aoeShape cone radiusYd 10, rangeMax 5, targetA 24, a 45 s dot plus 9 damage. Wing Flap 12882 is ConeDegrees 71, aoeShape cone radiusYd 10, a knockback with no aura. Ten yards is the Ironaya case, not the Tuten'kash case: coneCovers (combatGeometry.ts:475-485) refuses an arc past its own radiusYd, so nobody at RANGED_STAND_MIN_YD 20 (stand.ts:18) is ever inside one, and sessionChase.ts:440-457 meleeFlankSlot already reads coneArcsOfKit off his kit and slides every non-tank melee out of the front. A behind_target row would only re-do what the melee slot solver has already done.",
|
|
130
|
+
"note": "Wing Flap knocks back whoever is in front of him. That is his whole shape."
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"entry": 5722,
|
|
134
|
+
"name": "Hazzas",
|
|
135
|
+
"kinds": [],
|
|
136
|
+
"cite": "eventai/sunken-temple.ts:241-264 scripts 572201-572202, acid_classic.sql:16867-16868 creature_id=5722. Same two spells and the same timers as Morphaz - Acid Breath 12884 (cone 53 degrees, radiusYd 10) every 6-18 s and Wing Flap 12882 (cone 71 degrees, radiusYd 10) every 15-25 s - so the same verdict: both wedges stop at 10 yd, inside the 20 yd ranged floor, and meleeFlankSlot already walks the melee out of them.",
|
|
137
|
+
"note": "The same drake kit as Morphaz, shared roost and all."
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"entry": 8443,
|
|
141
|
+
"name": "Avatar of Hakkar",
|
|
142
|
+
"kinds": [
|
|
143
|
+
"kill-order"
|
|
144
|
+
],
|
|
145
|
+
"cite": "The kit IS baked, which was the open question: creatures.json 8443 spells [12889, 6607, 12888], creatureCasts 844303-844305, and eventai/sunken-temple.ts:310-350 registers the overlay at :600. It is all curse and charm. Curse of Tongues 12889 is aoeShape pbaoe radiusYd 20, targetA 22 targetB 15, aura 65 for -51% casting speed over 15 s, dispel 2, castTimeMs 0 - a 20 yd disc that does reach past the melee, but this is the Curse of Tuten'kash call from razorfen-downs.json and not the Ground Tremor call: a decurse is a class row, and unlike a 2 s stun the debuff is already off the raider before a walk would have finished. Lash 6607 is rangeMax 5 targetA 6, mechanic 12, a 2 s stun plus trigger 6608. Cause Insanity 12888 is targetA 6 with no radius, aura 6 charm for 6 s, dispel 1 magic. Nothing here is ground and nothing here is an order.",
|
|
146
|
+
"note": "Summoned by the fourth Eternal Flame, when the Shade of Hakkar changes into him.",
|
|
147
|
+
"blockedBy": {
|
|
148
|
+
"kill-order": "The ritual really does have a body that must die on a clock, and it is not one this row can name. sunken_temple.cpp:200-204 starts a 20 s m_suppressionTimer the moment the Shade of Hakkar 8440 gains Suppression 12623, and :398-415 FAILs the whole event if the aura is still on him when it expires - so the Nightmare Suppressor 8497 is a hard kill-order add. Two things block the row. The Suppressor is cast at the Shade 8440, not at the Avatar, and 8443 does not exist yet: sunken_templeScripts.cpp:232-245 SummonHakkar UpdateEntry morphs the Shade INTO the Avatar only on the fourth flame, and sunken-temple.ts:336-342 ST_AVATAR_WAVES models that faithfully - waves 1-3 are one Suppressor each, wave 4 is the Avatar alone, so they never share the floor. And encounter rows are keyed on the focus entry (raidEncounterTactics.ts encounterTacticRows), so a kill_order hung on 8443 could not fire during the window it is for. The 20 s clock is already ported as ST_AVATAR_RITUAL.suppressionFailMs (sunken-temple.ts:319); what is missing is an encounter to hang the order on, not a verb."
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"entry": 5709,
|
|
153
|
+
"name": "Shade of Eranikus",
|
|
154
|
+
"kinds": [],
|
|
155
|
+
"cite": "eventai/sunken-temple.ts:47-103 scripts 570901-570906, acid_classic.sql:16804-16809 creature_id=5709, no ScriptDev boss file. War Stomp 11876 is aoeShape pbaoe radiusYd 5, targetA 22 targetB 15, mechanic 12, a 5 s stun plus a knockback, castTimeMs 0 - five yards on a melee boss is the Stockade shape exactly, and a repeated melee stun is a trinket or Tremor Totem or Berserker Rage, which are class rows. Acid Breath 12891 is the Morphaz cone at ConeDegrees 53 radiusYd 10, already owned by meleeFlankSlot. Deep Slumber 12890 is targetA 6 with no radius, aura 12 for 15 s, castTimeMs 1000, dispel 1 - one raider, and an interrupt or a dispel answers it. Thrash 3391 is Effect 19 extra_attacks on himself and 12535 is the out-of-combat sleep visual. He stays immune until Jammal'an dies (cpp:100-105, sunken-temple.ts:264).",
|
|
156
|
+
"note": "Nothing to walk out of. War Stomp is a five-yard stun the melee are standing in by definition."
|
|
157
|
+
}
|
|
158
|
+
]
|
|
159
|
+
}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
{
|
|
2
|
+
"raid": "temple-of-ahnqiraj",
|
|
3
|
+
"bosses": [
|
|
4
|
+
{
|
|
5
|
+
"entry": 15263,
|
|
6
|
+
"name": "The Prophet Skeram",
|
|
7
|
+
"kinds": [
|
|
8
|
+
"camp-split"
|
|
9
|
+
],
|
|
10
|
+
"cite": "boss_skeram.cpp:43-46,239-254 SUMMON_IMAGES 747 + INITIALIZE_IMAGES 794 at three HP checks: one camp per body, and a wrong split lets an image finish the raid",
|
|
11
|
+
"blockedBy": {
|
|
12
|
+
"camp-split": "747 Summon Images resolves summon_wild, so the images ARE bodies (and bfddc15d0 splits him at 75 / 50 / 25 %). What blocks the camps is identity: templeOfAhnqiraj.ts:24 CORRECTED 2026-08-27: the HP-scale half is no longer a GAP - templeOfAhnqiraj.ts:22-24 records 794/3730 as PORTED on 2026-08-23 as engine/combat/skeramImages.ts and summonCast.ts:253 wires it. What still blocks the row is identity alone, and identity is the reason and 794 Initialize Images resolves script_handled_noop, so no row can tell the real Skeram from a copy"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"entry": 15511,
|
|
17
|
+
"name": "The Bug Family",
|
|
18
|
+
"kinds": [
|
|
19
|
+
"kill-order"
|
|
20
|
+
],
|
|
21
|
+
"cite": "boss_bug_trio.cpp:151,214,267,325 each death fires m_deathAbility on the survivors, so the order decides whether the raid eats a 150 % haste enrage",
|
|
22
|
+
"encounterRows": [
|
|
23
|
+
{
|
|
24
|
+
"kind": "kill-order",
|
|
25
|
+
"label": "Yauj, then Kri, then Vem last",
|
|
26
|
+
"cite": "boss_bug_trio.cpp:50,350 Yauj 15543 self-heals with GREAT_HEAL 25807 (69-80k in the bake) so she goes first; :267 Vem 15544 hands the survivors VENGEANCE 25790 (+150 % haste, 10 min, 100 yd) on death so he goes last. All three baked on map 531",
|
|
27
|
+
"rule": {
|
|
28
|
+
"id": "raid_enc_15511_kill",
|
|
29
|
+
"action": {
|
|
30
|
+
"kind": "kill_order",
|
|
31
|
+
"entries": [
|
|
32
|
+
15543,
|
|
33
|
+
15511,
|
|
34
|
+
15544
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
"conditions": [],
|
|
38
|
+
"enabled": true
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"entry": 15516,
|
|
45
|
+
"name": "Battleguard Sartura",
|
|
46
|
+
"kinds": [],
|
|
47
|
+
"cite": "boss_sartura.cpp:39-44 WHIRLWIND 26083 / SUNDERING_CLEAVE 25174 / BERSERK 27680; her cpp carries no link to Sartura's Royal Guard 15984, so no C++ reason an order matters"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"entry": 15510,
|
|
51
|
+
"name": "Fankriss the Unyielding",
|
|
52
|
+
"kinds": [
|
|
53
|
+
"tank-swap"
|
|
54
|
+
],
|
|
55
|
+
"cite": "boss_fankriss.cpp:39,137 SPELL_MORTAL_WOUND 25646 on the victim, the same stacking healing_taken_pct -10 Kurinnaxx uses",
|
|
56
|
+
"tankSwapAura": 25646
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"entry": 15517,
|
|
60
|
+
"name": "Ouro",
|
|
61
|
+
"kinds": [
|
|
62
|
+
"spread"
|
|
63
|
+
],
|
|
64
|
+
"cite": "boss_ouro.cpp:47,51-52,55-56 the submerge leaves 5 Dirt Mounds pulsing QUAKE 26093 and DREAM_FOG 24780 to walk out of",
|
|
65
|
+
"blockedBy": {
|
|
66
|
+
"spread": "24780 Dream Fog resolves proc_trigger -> 24781, and 24781 resolves script_handled_noop, so the fog pulses nothing a raider can sense. The mounds themselves DO walk the floor now (2940396a8), so the missing half is the fog payload, not the bodies"
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"entry": 15509,
|
|
71
|
+
"name": "Princess Huhuran",
|
|
72
|
+
"kinds": [
|
|
73
|
+
"spread",
|
|
74
|
+
"resist"
|
|
75
|
+
],
|
|
76
|
+
"cite": "boss_huhuran.cpp:38-41 FRENZY 26051 -> 26052 volley (15 CLOSEST, radiusYd 100); NOXIOUS_POISON 26053 is the spread driver: radiusYd 15 ground pool, 8 s nature DoT + silence",
|
|
77
|
+
"resist": "nature",
|
|
78
|
+
"encounterRows": [
|
|
79
|
+
{
|
|
80
|
+
"kind": "spread",
|
|
81
|
+
"label": "Step out of Noxious Poison (15 yd pool)",
|
|
82
|
+
"cite": "boss_huhuran.cpp:39 SPELL_NOXIOUS_POISON 26053 bakes aoe ground radiusYd 15 with a dot effect, so dynamicObject.ts:211-215 isPersistentAreaEffect spawns a real pool; templeOfAhnqiraj.ts:134 schedules it every 12-24 s",
|
|
83
|
+
"rule": {
|
|
84
|
+
"id": "raid_enc_15509_avoid_26053",
|
|
85
|
+
"action": {
|
|
86
|
+
"kind": "move",
|
|
87
|
+
"move": {
|
|
88
|
+
"kind": "avoid_zone",
|
|
89
|
+
"id": "26053"
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
"conditions": [
|
|
93
|
+
{
|
|
94
|
+
"subject": "self",
|
|
95
|
+
"metric": "hazardProximityYd",
|
|
96
|
+
"op": "<=",
|
|
97
|
+
"value": 0
|
|
98
|
+
}
|
|
99
|
+
],
|
|
100
|
+
"enabled": true
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
]
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"entry": 15275,
|
|
107
|
+
"name": "The Twin Emperors",
|
|
108
|
+
"kinds": [
|
|
109
|
+
"camp-split",
|
|
110
|
+
"resist"
|
|
111
|
+
],
|
|
112
|
+
"cite": "boss_twinemperors.cpp:292,332-356 TWIN_TELEPORT 799 swap; Vek'lor caster 40yd",
|
|
113
|
+
"resist": "shadow"
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"entry": 15299,
|
|
117
|
+
"name": "Viscidus",
|
|
118
|
+
"kinds": [
|
|
119
|
+
"halt-dps",
|
|
120
|
+
"resist"
|
|
121
|
+
],
|
|
122
|
+
"cite": "boss_viscidus.cpp:294-331,553-565 frost hit-count -> FREEZE 25937, then melee-only shatter",
|
|
123
|
+
"resist": "frost",
|
|
124
|
+
"encounterRows": [
|
|
125
|
+
{
|
|
126
|
+
"kind": "halt-dps",
|
|
127
|
+
"label": "Stop frost; melee the freeze",
|
|
128
|
+
"cite": "boss_viscidus.cpp:258 SPELL_VISCIDUS_FREEZE 25937; :319-326 melee shatter while frozen",
|
|
129
|
+
"rule": {
|
|
130
|
+
"id": "raid_enc_15299_halt_frost",
|
|
131
|
+
"action": {
|
|
132
|
+
"kind": "halt_dps",
|
|
133
|
+
"school": [
|
|
134
|
+
"frost"
|
|
135
|
+
]
|
|
136
|
+
},
|
|
137
|
+
"conditions": [
|
|
138
|
+
{
|
|
139
|
+
"subject": "target",
|
|
140
|
+
"metric": "debuffPresent",
|
|
141
|
+
"op": "==",
|
|
142
|
+
"value": 1,
|
|
143
|
+
"ref": 25937
|
|
144
|
+
}
|
|
145
|
+
],
|
|
146
|
+
"enabled": true
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
]
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"entry": 15727,
|
|
153
|
+
"name": "C'Thun",
|
|
154
|
+
"kinds": [
|
|
155
|
+
"camp-split"
|
|
156
|
+
],
|
|
157
|
+
"cite": "boss_cthun.cpp Dark Glare / stomach - camps once the Eye is a real fight",
|
|
158
|
+
"blockedBy": {
|
|
159
|
+
"camp-split": "templeOfAhnqiraj.ts:590 boss_cthun.cpp:207-218 Dark Glare 40 s rotate sub-phase is a named GAP (orientation control) - camps would have nothing to dodge"
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
]
|
|
163
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"raid": "the-stockade",
|
|
3
|
+
"note": "Reviewed for E5.4 against eventai/the-stockade.ts and acid_classic.sql. All six bosses come back kinds: [] and that is the finding - KI-993's wipe on Bazil Thredd is not a tactics gap. Every AoE in this wing is a disc at melee range that the melee have to be standing in to fight at all, so no MOVE verb can answer one without giving up the damage. What answers them is per-class: a trinket, Tremor Totem, Fear Ward, Berserker Rage - which lives in the class rotation, not in a raid row.",
|
|
4
|
+
"bosses": [
|
|
5
|
+
{
|
|
6
|
+
"entry": 1696,
|
|
7
|
+
"name": "Targorr the Dread",
|
|
8
|
+
"kinds": [],
|
|
9
|
+
"cite": "eventai/the-stockade.ts:169601-169602, acid_classic.sql:17027-17028 creature_id=1696. Enrage 8599 at <=30% HP is a self buff, haste +30% for 120 s, and the bake gives it no dispel type. Thrash 3391 is extra_attacks on self. Both are tank-and-healer problems, not raid-side verbs - there is nothing on the floor to stand out of."
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"entry": 1666,
|
|
13
|
+
"name": "Kam Deepfury",
|
|
14
|
+
"kinds": [],
|
|
15
|
+
"cite": "eventai/the-stockade.ts:166601-166604, acid_classic.sql:17022-17025 creature_id=1666. Improved Blocking 3418 and Defensive Stance 7164 are self, targetA 1. Shield Slam 8242 is rangeMax 5 targetA 6 - a single-target 2 s stun plus 20 damage on whoever he is hitting. Nothing area, nothing to position around."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"entry": 1717,
|
|
19
|
+
"name": "Hamhock",
|
|
20
|
+
"kinds": [],
|
|
21
|
+
"cite": "eventai/the-stockade.ts:171701-171702, acid_classic.sql:17056-17057 creature_id=1717. Bloodlust 6742 is targetA 21 TARGET_UNIT_FRIEND at 30 yd - a haste buff he puts on an ADD, which is a purge/dispel the class rotations already own. Chain Lightning 421 is targetA 6 at 30 yd, a single-target nuke. Neither has a radius."
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"entry": 1716,
|
|
25
|
+
"name": "Bazil Thredd",
|
|
26
|
+
"kinds": [],
|
|
27
|
+
"cite": "eventai/the-stockade.ts:171603-171605, acid_classic.sql:17051-17054 creature_id=1716. This is the KI-993 wall and it is NOT a tactics gap. Smoke Bomb 7964 is aoeShape pbaoe radiusYd 5, targetA 22 and 18 - both caster locations, so a 5 yd disc centred on him - and it is a 4 s STUN (mechanic 12) every 8.0-26.9 s. A move verb cannot answer it: standing outside 5 yd of Bazil means not meleeing Bazil, and ranged are already outside it at the 25 yd stand. What answers a repeated melee stun is a trinket or a stun break in the class rotation. Battle Shout 9128 is a 20 yd friendly buff. Flees for assist at 15%."
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"entry": 1663,
|
|
31
|
+
"name": "Dextren Ward",
|
|
32
|
+
"kinds": [],
|
|
33
|
+
"cite": "eventai/the-stockade.ts:166301-166304, acid_classic.sql:17017-17020 creature_id=1663. Intimidating Shout 19134 is aoeShape pbaoe radiusYd 8, targetA 6 then 22/22, mechanic 5 fear, triggering 29544 - the single target plus everyone within 8 yd of HIM. Same shape as Bazil's stun: the melee are inside 8 yd because that is where melee happens, and the ranged stand is already outside it. Fear Ward, Tremor Totem and Berserker Rage are the answer and they are class rows. Strike 11976 is rangeMax 5 targetA 6; Battle Stance 7165 is self on spawn."
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"entry": 1720,
|
|
37
|
+
"name": "Bruegal Ironknuckle",
|
|
38
|
+
"kinds": [],
|
|
39
|
+
"cite": "eventai/the-stockade.ts:172001-172002, acid_classic.sql:17059-17060 creature_id=1720. Two ACTION_T_TEXT scripts and a flee-for-assist at 15%, no ACTION_T_CAST at all - his whole kit is the creature_template melee. Pure tank-and-spank."
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|