azeroth-shell 0.0.0-stage → 0.1.0
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 +26 -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 +126 -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,667 @@
|
|
|
1
|
+
// Top-opcode handlers with the full C++ bodies. The generic path matches the bake mapper, and the
|
|
2
|
+
// family and id specials apply when the context supplies cast-time inputs. Cites sit on each handler.
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
import type { RawSpellEffect, School, SpellDef, SpellEffect } from '../../../../data/schema.ts';
|
|
6
|
+
import { effectAmountRange } from '../amount.ts';
|
|
7
|
+
import { resolveDurationMs } from '../duration.ts';
|
|
8
|
+
import type {
|
|
9
|
+
InterpretContext,
|
|
10
|
+
InterpretIntent,
|
|
11
|
+
InterpretResult,
|
|
12
|
+
UnhandledSlot,
|
|
13
|
+
WeaponDamageModel,
|
|
14
|
+
} from '../types.ts';
|
|
15
|
+
import { spellBuffApplyToFromRaw, withHostile } from '../targeting.ts';
|
|
16
|
+
|
|
17
|
+
// ── SharedDefines SpellFamily (classic) ─────────────────────────────────────
|
|
18
|
+
export const SPELLFAMILY_GENERIC = 0;
|
|
19
|
+
export const SPELLFAMILY_MAGE = 3;
|
|
20
|
+
export const SPELLFAMILY_WARRIOR = 4;
|
|
21
|
+
export const SPELLFAMILY_WARLOCK = 5;
|
|
22
|
+
export const SPELLFAMILY_PRIEST = 6;
|
|
23
|
+
export const SPELLFAMILY_DRUID = 7;
|
|
24
|
+
export const SPELLFAMILY_ROGUE = 8;
|
|
25
|
+
export const SPELLFAMILY_HUNTER = 9;
|
|
26
|
+
export const SPELLFAMILY_PALADIN = 10;
|
|
27
|
+
|
|
28
|
+
/** SharedDefines Classes. Cite: SharedDefines.h:65–78. */
|
|
29
|
+
export const CLASS_HUNTER = 3;
|
|
30
|
+
export const CLASS_ROGUE = 4;
|
|
31
|
+
export const CLASS_PRIEST = 5;
|
|
32
|
+
export const CLASS_MAGE = 8;
|
|
33
|
+
export const CLASS_WARLOCK = 9;
|
|
34
|
+
|
|
35
|
+
// Priest | Mage | Warlock class mask — RAP early-out. Cite: SharedDefines.h:96 CLASSMASK_WAND_USERS;
|
|
36
|
+
// SpellAuras.cpp:3996.
|
|
37
|
+
export const CLASSMASK_WAND_USERS =
|
|
38
|
+
(1 << (CLASS_PRIEST - 1)) | (1 << (CLASS_MAGE - 1)) | (1 << (CLASS_WARLOCK - 1));
|
|
39
|
+
|
|
40
|
+
// Missing creature template display for TRANSFORM (pig pink). Cite: SpellAuras.cpp:2003 m_modifier.m_amount
|
|
41
|
+
// = 16358.
|
|
42
|
+
export const TRANSFORM_MISSING_CREATURE_DISPLAY = 16358;
|
|
43
|
+
|
|
44
|
+
/** ItemPrototype.h ITEM_CLASS_*. Cite: EffectProficiency :2322–2327. */
|
|
45
|
+
export const ITEM_CLASS_WEAPON = 2;
|
|
46
|
+
export const ITEM_CLASS_ARMOR = 4;
|
|
47
|
+
|
|
48
|
+
// SpellTargetDefines TARGET_LOCATION_DATABASE — TeleportTo database dest flag path. Cite:
|
|
49
|
+
// SpellTargetDefines.h:41; EffectTeleportUnits :1712–1713.
|
|
50
|
+
export const TARGET_LOCATION_DATABASE = 17;
|
|
51
|
+
|
|
52
|
+
// Demonic Sacrifice override script id removed on warlock summon. Cite: SpellEffects.cpp:3254–3255
|
|
53
|
+
// GetOverrideScript(2228).
|
|
54
|
+
export const DEMONIC_SACRIFICE_SCRIPT = 2228;
|
|
55
|
+
|
|
56
|
+
// Demonic Sacrifice result auras, one per pet entry.
|
|
57
|
+
// Cite: Warlock.cpp:225-228 DemonicSacrifice; spell_template 18789-18792.
|
|
58
|
+
export const DEMONIC_SACRIFICE_RESULT_SPELL_IDS = [18789, 18790, 18791, 18792] as const;
|
|
59
|
+
export const DEMONIC_SACRIFICE_RESULT_SPELL_ID_SET: ReadonlySet<number> = new Set(
|
|
60
|
+
DEMONIC_SACRIFICE_RESULT_SPELL_IDS,
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
// Common.h TimeConstants IN_MILLISECONDS. Cite: Common.h:119; EffectDistract MoveDistract(damage *
|
|
64
|
+
// IN_MILLISECONDS).
|
|
65
|
+
export const IN_MILLISECONDS = 1000;
|
|
66
|
+
|
|
67
|
+
// EffectStuck hearthstone CastSpell id (item 6948 Hearthstone counted separately). Cite:
|
|
68
|
+
// SpellEffects.cpp:4335–4336 IsSpellReady(8690) && HasItemCount(6948, 1).
|
|
69
|
+
export const STUCK_HEARTHSTONE_SPELL = 8690;
|
|
70
|
+
|
|
71
|
+
// EffectStuck alive non-hearth nudge distance (yards). Cite: SpellEffects.cpp:4350 GetNearPoint(..., 10.0f,
|
|
72
|
+
// ...).
|
|
73
|
+
export const STUCK_NUDGE_DISTANCE = 10;
|
|
74
|
+
|
|
75
|
+
/** Meteor-like split ids. Cite: SpellEffects.cpp:251–253. */
|
|
76
|
+
export const METEOR_SPLIT_IDS = new Set([24340, 26558, 28884, 26789]);
|
|
77
|
+
|
|
78
|
+
// Bloodthirst ranks (vanilla) — icon 38 + family flag 0x2000000. Cite: Spell.cpp:1305–1308;
|
|
79
|
+
// SpellEffects.cpp:279–283.
|
|
80
|
+
export const BLOODTHIRST_IDS = new Set([23881, 23892, 23893, 23894]);
|
|
81
|
+
|
|
82
|
+
/** Shield Slam ranks (vanilla) — icon 413 + family flag 0x2000000. Cite: SpellEffects.cpp:284–286. */
|
|
83
|
+
export const SHIELD_SLAM_IDS = new Set([23922, 23923, 23924, 23925]);
|
|
84
|
+
|
|
85
|
+
/** Immolate family flag for Conflagrate consume. Cite: SpellEffects.cpp:300. */
|
|
86
|
+
export const IMMOLATE_FAMILY_FLAGS = 0x4;
|
|
87
|
+
/** Conflagrate family flag. Cite: SpellEffects.cpp:292. */
|
|
88
|
+
export const CONFLAGRATE_FAMILY_FLAGS = 0x200;
|
|
89
|
+
/** Ferocious Bite family flag. Cite: SpellEffects.cpp:312. */
|
|
90
|
+
export const FEROCIOUS_BITE_FLAGS = 0x000800000;
|
|
91
|
+
/** Eviscerate family flag. Cite: SpellEffects.cpp:326. */
|
|
92
|
+
export const EVISCERATE_FLAGS = 0x00020000;
|
|
93
|
+
/** Ambush family flag. Cite: SpellEffects.cpp:3483. */
|
|
94
|
+
export const AMBUSH_FLAGS = 0x00000200;
|
|
95
|
+
/** Rip DoT AP flag. Cite: SpellAuras.cpp:3186. */
|
|
96
|
+
export const RIP_FLAGS = 0x800000;
|
|
97
|
+
/** Rupture DoT AP flag. Cite: SpellAuras.cpp:3201. */
|
|
98
|
+
export const RUPTURE_FLAGS = 0x100000;
|
|
99
|
+
/** Regrowth | Rejuvenation for Swiftmend. Cite: SpellEffects.cpp:1852. */
|
|
100
|
+
export const SWIFTMEND_HOT_FLAGS = 0x50;
|
|
101
|
+
/** Improved Scorpid Sting family mask on MOD_STAT. Cite: SpellAuras.cpp:3453. */
|
|
102
|
+
export const SCORPID_STING_FLAGS = 0x8000;
|
|
103
|
+
|
|
104
|
+
// SharedDefines SpellSchoolMask bits. Cite: SharedDefines.h; SpellAuras.cpp HandleModDamageDone :4040–4044;
|
|
105
|
+
// map-spell-effects.mjs SPELL_SCHOOL_MASK_NORMAL / MAGIC.
|
|
106
|
+
export const SPELL_SCHOOL_MASK_NORMAL = 1;
|
|
107
|
+
|
|
108
|
+
// SharedDefines MECHANIC_BANISH — school-immunity isolated state. Cite: SharedDefines.h:371;
|
|
109
|
+
// SpellAuras.cpp:3025–3030.
|
|
110
|
+
export const MECHANIC_BANISH = 18;
|
|
111
|
+
|
|
112
|
+
// SpellDefines.h MAX_SPELLMOD — AddModifier misc op gate. Cite: SpellDefines.h:425; SpellAuras.cpp:905–906.
|
|
113
|
+
export const MAX_SPELLMOD = 32;
|
|
114
|
+
|
|
115
|
+
// ADD_FLAT / ADD_PCT charge specials: SetAuraCharges(1). Cite: SpellAuras.cpp:915–918 HandleAddModifier.
|
|
116
|
+
export const ADD_MODIFIER_CHARGE_1_IDS = new Set([17941, 22008]); // Shadow Trance, Netherwind Focus
|
|
117
|
+
|
|
118
|
+
/** Clearcasting — raise spellmod priority before Elemental Mastery. Cite: SpellAuras.cpp:919–921. */
|
|
119
|
+
export const CLEARCASTING_SHAMAN_ID = 16246;
|
|
120
|
+
export const CLEARCASTING_SPELLMOD_PRIORITY = 100;
|
|
121
|
+
|
|
122
|
+
/** MOD_INCREASE_HEALTH: also ModifyHealth(±amount) on Real apply/remove. Cite: SpellAuras.cpp:3671–3695. */
|
|
123
|
+
export const MOD_INCREASE_HEALTH_CUR_HP_IDS = new Set([4148, 12976, 16609]);
|
|
124
|
+
|
|
125
|
+
// MOD_INCREASE_HEALTH: preserve health % across max change (bear form passives). Cite:
|
|
126
|
+
// SpellAuras.cpp:3698–3707.
|
|
127
|
+
export const MOD_INCREASE_HEALTH_PRESERVE_PCT_IDS = new Set([1178, 9635]);
|
|
128
|
+
|
|
129
|
+
// MOD_THREAT level-scaled amount: (level − 60) × multiplier when level > 60. Cite:
|
|
130
|
+
// SpellAuras.cpp:2819–2834.
|
|
131
|
+
export const MOD_THREAT_LEVEL_SCALE: Readonly<Record<number, number>> = {
|
|
132
|
+
26400: 2, // Arcane Shroud
|
|
133
|
+
28862: 1, // The Eye of Diminution
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
// Player main-hand attack time when disarmed (ms). Cite: Unit.h:68 BASE_ATTACK_TIME;
|
|
137
|
+
// SpellAuras.cpp:2444–2445.
|
|
138
|
+
export const BASE_ATTACK_TIME_MS = 2000;
|
|
139
|
+
|
|
140
|
+
/** MOD_DAMAGE_PERCENT_DONE expire cast (CMaNGOS tree special). Cite: SpellAuras.cpp:4170–4172. */
|
|
141
|
+
export const MOD_DMG_PCT_EXPIRE_CAST: Readonly<Record<number, number>> = {
|
|
142
|
+
30423: 38639,
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
// Mana Shield family flag — SPELLFAMILY_MAGE + 0x8000 → +50% SPD absorb. Cite: SpellAuras.cpp:5075–5083;
|
|
146
|
+
// game-data spellFamilyFlags 32768.
|
|
147
|
+
export const MANA_SHIELD_FAMILY_FLAGS = 0x8000;
|
|
148
|
+
|
|
149
|
+
/** Mana Shield SPD absorb coefficient (0.5f). Cite: SpellAuras.cpp:5081. */
|
|
150
|
+
export const MANA_SHIELD_SPD_COEFF = 0.5;
|
|
151
|
+
|
|
152
|
+
// CalculateLevelPenalty: spellLevel < 20 && > 0 → 1 − (20 − spellLevel) × 0.0375. Else 1.0. Cite:
|
|
153
|
+
// Unit.cpp:2791–2794.
|
|
154
|
+
export const LEVEL_PENALTY_THRESHOLD = 20;
|
|
155
|
+
export const LEVEL_PENALTY_PER_LEVEL = 0.0375;
|
|
156
|
+
|
|
157
|
+
// SharedDefines ReputationRank REP_FRIENDLY — force-reaction stop-attack gate. Cite: SharedDefines.h:110;
|
|
158
|
+
// SpellAuras.cpp:2050–2051.
|
|
159
|
+
export const REP_FRIENDLY = 4;
|
|
160
|
+
|
|
161
|
+
/** Using Control Console — creature spell table for slot 5 on apply. Cite: SpellAuras.cpp:2209–2213. */
|
|
162
|
+
export const CONTROL_CONSOLE_APPLY_SPELLS = [25026, 25024, 27759, 25027] as const;
|
|
163
|
+
/** Close Control Console + Stun on remove. Cite: SpellAuras.cpp:2245–2246. */
|
|
164
|
+
export const CONTROL_CONSOLE_REMOVE_CASTER_SPELLS = [24938, 27880] as const;
|
|
165
|
+
/** Quiet Suicide on creature target remove. Cite: SpellAuras.cpp:2249. */
|
|
166
|
+
export const CONTROL_CONSOLE_REMOVE_TARGET_SPELL = 3617;
|
|
167
|
+
/** ForcedDespawn delay after Quiet Suicide. Cite: SpellAuras.cpp:2250. */
|
|
168
|
+
export const CONTROL_CONSOLE_DESPAWN_MS = 5000;
|
|
169
|
+
/** Spell 24937 Using Control Console. Cite: SpellAuras.cpp:2209 / :2242. */
|
|
170
|
+
export const CONTROL_CONSOLE_SPELL_ID = 24937;
|
|
171
|
+
/** Mutate Bug — on apply ModifyHealth(+max health delta). Cite: SpellAuras.cpp:3748–3753. */
|
|
172
|
+
export const MUTATE_BUG_SPELL_ID = 802;
|
|
173
|
+
/** Shade of Aran drink — OBS_MOD_MANA remove-by-default AI event. Cite: SpellAuras.cpp:3603–3609. */
|
|
174
|
+
export const SHADE_OF_ARAN_DRINK_SPELL_ID = 30024;
|
|
175
|
+
|
|
176
|
+
/** ShapeshiftForm ids — SpellDefines.h. Cite: SpellDefines.h:457–475. */
|
|
177
|
+
export const FORM_CAT = 0x01;
|
|
178
|
+
export const FORM_TREE = 0x02;
|
|
179
|
+
export const FORM_TRAVEL = 0x03;
|
|
180
|
+
export const FORM_AQUA = 0x04;
|
|
181
|
+
export const FORM_BEAR = 0x05;
|
|
182
|
+
export const FORM_GHOUL = 0x07;
|
|
183
|
+
export const FORM_DIREBEAR = 0x08;
|
|
184
|
+
export const FORM_CREATUREBEAR = 0x0e;
|
|
185
|
+
export const FORM_GHOSTWOLF = 0x10;
|
|
186
|
+
export const FORM_BATTLESTANCE = 0x11;
|
|
187
|
+
export const FORM_DEFENSIVESTANCE = 0x12;
|
|
188
|
+
export const FORM_BERSERKERSTANCE = 0x13;
|
|
189
|
+
export const FORM_MOONKIN = 0x1f;
|
|
190
|
+
export const FORM_SPIRITOFREDEMPTION = 0x20;
|
|
191
|
+
|
|
192
|
+
/** SharedDefines Powers. Cite: SharedDefines.h; SpellAuras.cpp shapeshift PowerType. */
|
|
193
|
+
export const POWER_MANA = 0;
|
|
194
|
+
export const POWER_RAGE = 1;
|
|
195
|
+
export const POWER_ENERGY = 3;
|
|
196
|
+
|
|
197
|
+
/** Tranquilizing Poison → Sleep on mana-leech expire. Cite: SpellAuras.cpp:3274–3280. */
|
|
198
|
+
export const TRANQUILIZING_POISON_IDS = new Set([24002, 24003]);
|
|
199
|
+
export const TRANQUILIZING_POISON_SLEEP = 24004;
|
|
200
|
+
|
|
201
|
+
/** Spirit Shade Visual uses moonkin form value but native display. Cite: SpellAuras.cpp:1767–1774. */
|
|
202
|
+
export const SPIRIT_SHADE_VISUAL_ID = 24809;
|
|
203
|
+
|
|
204
|
+
/** FORM_CAT Track Humanoids auto-cast. Cite: SpellAuras.cpp:1940–1942. */
|
|
205
|
+
export const TRACK_HUMANOIDS_SPELL = 5225;
|
|
206
|
+
|
|
207
|
+
/** Furor proc spells. Cite: SpellAuras.cpp:1961–1969. */
|
|
208
|
+
export const FUROR_ENERGY_SPELL = 17099;
|
|
209
|
+
export const FUROR_RAGE_SPELL = 17057;
|
|
210
|
+
|
|
211
|
+
// School name by SpellSchools index for MOD_RESISTANCE magic bits. Cite: map-spell-effects.mjs SCHOOLS;
|
|
212
|
+
// SharedDefines SpellSchools.
|
|
213
|
+
export const SCHOOLS: readonly School[] = [
|
|
214
|
+
'physical',
|
|
215
|
+
'holy',
|
|
216
|
+
'fire',
|
|
217
|
+
'nature',
|
|
218
|
+
'frost',
|
|
219
|
+
'shadow',
|
|
220
|
+
'arcane',
|
|
221
|
+
];
|
|
222
|
+
|
|
223
|
+
/** Wyvern Sting rank → sleep DoT spell on stun remove. Cite: SpellAuras.cpp:2538–2542 HandleAuraModStun. */
|
|
224
|
+
export const WYVERN_STING_SLEEP: Readonly<Record<number, number>> = {
|
|
225
|
+
19386: 24131,
|
|
226
|
+
24132: 24134,
|
|
227
|
+
24133: 24135,
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
/** Hunter family flag for player Wyvern Sting ranks. Cite: :2533. */
|
|
231
|
+
export const WYVERN_STING_FAMILY_FLAGS = 0x0001_0000;
|
|
232
|
+
|
|
233
|
+
// Seal of the Crusader ranks — 40% BASE_ATTACK DPS mod via dummy. Cite: SpellAuras.cpp:1576–1584
|
|
234
|
+
// HandleAuraDummy.
|
|
235
|
+
export const SEAL_OF_THE_CRUSADER_IDS = new Set([21082, 20162, 20305, 20306, 20307, 20308]);
|
|
236
|
+
|
|
237
|
+
// Quest tame channel dummy → final tame spell on remove (alive target). Cite: SpellAuras.cpp:1360–1382
|
|
238
|
+
// HandleAuraDummy.
|
|
239
|
+
export const QUEST_TAME_FINAL: Readonly<Record<number, number>> = {
|
|
240
|
+
19548: 19597,
|
|
241
|
+
19674: 19677,
|
|
242
|
+
19687: 19676,
|
|
243
|
+
19688: 19678,
|
|
244
|
+
19689: 19679,
|
|
245
|
+
19692: 19680,
|
|
246
|
+
19693: 19684,
|
|
247
|
+
19694: 19681,
|
|
248
|
+
19696: 19682,
|
|
249
|
+
19697: 19683,
|
|
250
|
+
19699: 19685,
|
|
251
|
+
19700: 19686,
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
// Burning Adrenaline remove → AoE + self-kill prevent durability. Cite: SpellAuras.cpp:3100–3106
|
|
255
|
+
// HandlePeriodicTriggerSpell.
|
|
256
|
+
export const BURNING_ADRENALINE_REMOVE_CASTS = [23478, 23644] as const;
|
|
257
|
+
|
|
258
|
+
// Battleground mark create-item specials (mail overflow path is runtime). Cite: SpellEffects.cpp:1954–1967;
|
|
259
|
+
// BattleGround.h SPELL_*_MARK_*.
|
|
260
|
+
export const BG_MARK_CREATE_IDS = new Set([
|
|
261
|
+
24950, // SPELL_WS_MARK_LOSER
|
|
262
|
+
24951, // SPELL_WS_MARK_WINNER
|
|
263
|
+
24952, // SPELL_AB_MARK_LOSER
|
|
264
|
+
24953, // SPELL_AB_MARK_WINNER
|
|
265
|
+
24954, // SPELL_AV_MARK_LOSER
|
|
266
|
+
24955, // SPELL_AV_MARK_WINNER
|
|
267
|
+
]);
|
|
268
|
+
|
|
269
|
+
/** Classic DEFAULT_MAX_CREATURE_LEVEL. Cite: SharedDefines / EffectSummonWild. */
|
|
270
|
+
export const DEFAULT_MAX_CREATURE_LEVEL = 63;
|
|
271
|
+
|
|
272
|
+
/** SharedDefines MAX_POWERS. Cite: SharedDefines.h:149; EffectPowerBurn :1803. */
|
|
273
|
+
export const MAX_POWERS = 5;
|
|
274
|
+
|
|
275
|
+
// SharedDefines POWER_HAPPINESS — EffectPowerDrain allows drain even when unitTarget GetPowerType()
|
|
276
|
+
// differs. Cite: SpellEffects.cpp:1758; SharedDefines Powers.
|
|
277
|
+
export const POWER_HAPPINESS = 4;
|
|
278
|
+
|
|
279
|
+
/** ADD_EXTRA_ATTACKS hard cap. Cite: SpellEffects.cpp:4878–4880. */
|
|
280
|
+
export const MAX_EXTRA_ATTACKS = 5;
|
|
281
|
+
|
|
282
|
+
// ENCHANT_HELD_ITEM default duration seconds when no spell duration / base points. Cite:
|
|
283
|
+
// SpellEffects.cpp:4607–4608.
|
|
284
|
+
export const ENCHANT_HELD_DEFAULT_SECS = 10;
|
|
285
|
+
|
|
286
|
+
// Movement::gravity for EffectPullTowards projectile motion. Cite: Movement/util.cpp:24;
|
|
287
|
+
// SpellEffects.cpp:5158.
|
|
288
|
+
export const MOVEMENT_GRAVITY = 19.29110527038574;
|
|
289
|
+
|
|
290
|
+
/** SUMMON_DEMON fixed despawn ms (TEMPSPAWN_TIMED_OR_DEAD_DESPAWN). Cite: SpellEffects.cpp:5447. */
|
|
291
|
+
export const SUMMON_DEMON_DURATION_MS = 3_600_000;
|
|
292
|
+
|
|
293
|
+
/** DYNAMIC_OBJECT_FARSIGHT_FOCUS. Cite: DynamicObject.h:31. */
|
|
294
|
+
export const DYNAMIC_OBJECT_FARSIGHT_FOCUS = 2;
|
|
295
|
+
|
|
296
|
+
// Vanish family flag for EffectSanctuary rogue special. IsFitToFamily(SPELLFAMILY_ROGUE, 0x800). Cite:
|
|
297
|
+
// SpellEffects.cpp:4203.
|
|
298
|
+
export const VANISH_SANCTUARY_FAMILY_FLAGS = 0x800;
|
|
299
|
+
|
|
300
|
+
/** Vanish SetCannotBeDetectedTimer ms. Cite: SpellEffects.cpp:4208. */
|
|
301
|
+
export const VANISH_CANNOT_BE_DETECTED_MS = 1000;
|
|
302
|
+
|
|
303
|
+
// Improved Weapon Totems family mask (Flametongue/Windfury totem effects). Cite: SpellEffects.cpp:4625
|
|
304
|
+
// IsFitToFamilyMask(0x0000000004000000).
|
|
305
|
+
export const IMPROVED_WEAPON_TOTEMS_FAMILY_MASK = 0x0400_0000;
|
|
306
|
+
|
|
307
|
+
/** EffectSpawn spell ids that clear UNIT_FLAG_SPAWNING. Cite: SpellEffects.cpp:3041–3043. */
|
|
308
|
+
export const SPAWN_CLEAR_FLAG_IDS = new Set([15750, 26262]);
|
|
309
|
+
|
|
310
|
+
// Shield Slam dispel family flag bit 32 (0x1_0000_0000). JS bitwise is 32-bit — use BigInt for the high
|
|
311
|
+
// flag. Cite: SpellEffects.cpp:2472–2475.
|
|
312
|
+
export const SHIELD_SLAM_DISPEL_FLAG = 0x1_0000_0000n;
|
|
313
|
+
|
|
314
|
+
/** SpellMgr.h SPELLCATEGORY_DEVOUR_MAGIC = 12. Cite: SpellEffects.cpp:2598. */
|
|
315
|
+
export const SPELLCATEGORY_DEVOUR_MAGIC = 12;
|
|
316
|
+
|
|
317
|
+
/** Devour Magic rank → heal spell. Cite: SpellEffects.cpp:2601–2610. */
|
|
318
|
+
export const DEVOUR_MAGIC_HEAL: Readonly<Record<number, number>> = {
|
|
319
|
+
19505: 19658,
|
|
320
|
+
19731: 19732,
|
|
321
|
+
19734: 19733,
|
|
322
|
+
19736: 19735,
|
|
323
|
+
};
|
|
324
|
+
|
|
325
|
+
// GameObjectActions (GameObject.h). Cite: EffectActivateObject switch. Values match enum class
|
|
326
|
+
// GameObjectActions order starting at NONE=0.
|
|
327
|
+
export const GO_ACTION = {
|
|
328
|
+
NONE: 0,
|
|
329
|
+
ANIMATE_CUSTOM_0: 1,
|
|
330
|
+
ANIMATE_CUSTOM_1: 2,
|
|
331
|
+
ANIMATE_CUSTOM_2: 3,
|
|
332
|
+
ANIMATE_CUSTOM_3: 4,
|
|
333
|
+
DISTURB: 5,
|
|
334
|
+
UNLOCK: 6,
|
|
335
|
+
LOCK: 7,
|
|
336
|
+
OPEN: 8,
|
|
337
|
+
OPEN_AND_UNLOCK: 9,
|
|
338
|
+
CLOSE: 10,
|
|
339
|
+
TOGGLE_OPEN: 11,
|
|
340
|
+
DESTROY: 12,
|
|
341
|
+
REBUILD: 13,
|
|
342
|
+
CREATION: 14,
|
|
343
|
+
DESPAWN: 15,
|
|
344
|
+
MAKE_INERT: 16,
|
|
345
|
+
MAKE_ACTIVE: 17,
|
|
346
|
+
CLOSE_AND_LOCK: 18,
|
|
347
|
+
} as const;
|
|
348
|
+
|
|
349
|
+
/** GAMEOBJECT_TYPE_FISHINGNODE. Cite: SharedDefines / EffectTransmitted :5351. */
|
|
350
|
+
export const GO_TYPE_FISHINGNODE = 17;
|
|
351
|
+
|
|
352
|
+
/** FISHING_BOBBER_READY_TIME seconds. Cite: GameObject.h:684; EffectTransmitted :5367. */
|
|
353
|
+
export const FISHING_BOBBER_READY_TIME = 5;
|
|
354
|
+
|
|
355
|
+
/** Twilight Council summon tables for MAKE_ACTIVE/MAKE_INERT. Cite: SpellEffects.cpp:4425–4463. */
|
|
356
|
+
export const TWILIGHT_TEMPLARS = [15209, 15211, 15212, 15307] as const;
|
|
357
|
+
export const TWILIGHT_DUKES = [15206, 15207, 15208, 15220] as const;
|
|
358
|
+
export const TWILIGHT_ROYALS = [15203, 15204, 15205, 15305] as const;
|
|
359
|
+
export const TWILIGHT_FIXED_NPC: Readonly<Record<number, number>> = {
|
|
360
|
+
24744: 15209,
|
|
361
|
+
24756: 15212,
|
|
362
|
+
24758: 15307,
|
|
363
|
+
24760: 15211,
|
|
364
|
+
24765: 15206,
|
|
365
|
+
24768: 15220,
|
|
366
|
+
24770: 15208,
|
|
367
|
+
24772: 15207,
|
|
368
|
+
24786: 15203,
|
|
369
|
+
24788: 15204,
|
|
370
|
+
24789: 15205,
|
|
371
|
+
24790: 15305,
|
|
372
|
+
};
|
|
373
|
+
|
|
374
|
+
// The weapon-imbue family from the spell name, matching the bake mapper for named combat families.
|
|
375
|
+
// The generic family is omitted so the thin-bake oracle matches, and no combat kit is invented here.
|
|
376
|
+
export function weaponImbueFamilyFromName(name: string | undefined): string | undefined {
|
|
377
|
+
const n = (name || '').toLowerCase();
|
|
378
|
+
if (!n) return undefined;
|
|
379
|
+
if (n.includes('rockbiter')) return 'rockbiter';
|
|
380
|
+
if (n.includes('windfury')) return 'windfury';
|
|
381
|
+
if (n.includes('flametongue')) return 'flametongue';
|
|
382
|
+
if (n.includes('frostbrand')) return 'frostbrand';
|
|
383
|
+
if (n.includes('poison')) return 'poison';
|
|
384
|
+
// mapper may return 'other'; bake often omits — leave undefined for LOCK 9a.
|
|
385
|
+
return undefined;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
/** Summon count: damage > 0 ? damage : 1. Cite: EffectSummonWild :2767; EffectSummonGuardian :2902. */
|
|
389
|
+
export function summonCount(raw: RawSpellEffect, ctx: InterpretContext): number {
|
|
390
|
+
const { min } = effectAmountRange(raw, ctx);
|
|
391
|
+
return min > 0 ? min : 1;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
export interface HandlerState {
|
|
395
|
+
spell: SpellDef;
|
|
396
|
+
ctx: InterpretContext;
|
|
397
|
+
effects: SpellEffect[];
|
|
398
|
+
unhandled: UnhandledSlot[];
|
|
399
|
+
intents: InterpretIntent[];
|
|
400
|
+
strikeBonus?: number;
|
|
401
|
+
role?: SpellDef['role'];
|
|
402
|
+
/** Shared EffectWeaponDmg accumulation across slots. */
|
|
403
|
+
weapon: {
|
|
404
|
+
fixedBonus: number;
|
|
405
|
+
weaponPercentMod: number;
|
|
406
|
+
normalized: boolean;
|
|
407
|
+
ambush: boolean;
|
|
408
|
+
sawFlat: boolean;
|
|
409
|
+
sawPercent: boolean;
|
|
410
|
+
};
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
export type EffectHandler = (state: HandlerState, raw: RawSpellEffect, slot: number) => void;
|
|
414
|
+
export type AuraHandler = (
|
|
415
|
+
state: HandlerState,
|
|
416
|
+
raw: RawSpellEffect,
|
|
417
|
+
slot: number,
|
|
418
|
+
effectType: number,
|
|
419
|
+
) => void;
|
|
420
|
+
|
|
421
|
+
export function schoolOf(spell: SpellDef): School {
|
|
422
|
+
return spell.school;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
|
|
426
|
+
export function familyOf(spell: SpellDef): number {
|
|
427
|
+
return spell.spellFamilyName ?? 0;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
export function flagsOf(spell: SpellDef): number {
|
|
431
|
+
return (spell.spellFamilyFlags ?? 0) | 0;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
export function iconIdOf(state: HandlerState): number {
|
|
435
|
+
return state.ctx.spellIconId ?? state.spell.spellIconId ?? 0;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
/** Resolve duration ms — never invent 12_000 / 10_000. Cite: duration.ts; spell-duration.mjs. */
|
|
439
|
+
export function durationMsResolved(state: HandlerState): number {
|
|
440
|
+
const resolved = resolveDurationMs(
|
|
441
|
+
state.ctx.durationMs,
|
|
442
|
+
state.ctx.durationIndex,
|
|
443
|
+
state.spell.durationIndex,
|
|
444
|
+
);
|
|
445
|
+
return resolved ?? 0;
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
// Push one incapacitate, merging with an existing same-mechanic remap: Polymorph stacks a confuse and
|
|
449
|
+
// a transform, and emitting both would advance diminishing returns twice per cast.
|
|
450
|
+
export function pushOrMergePolymorphIncapacitate(
|
|
451
|
+
state: HandlerState,
|
|
452
|
+
cc: Extract<SpellEffect, { kind: 'cc' }>,
|
|
453
|
+
): void {
|
|
454
|
+
const existingIdx = state.effects.findIndex(
|
|
455
|
+
(e) =>
|
|
456
|
+
e.kind === 'cc'
|
|
457
|
+
&& e.control === 'incapacitate'
|
|
458
|
+
&& e.mechanic === 'polymorph',
|
|
459
|
+
);
|
|
460
|
+
if (existingIdx >= 0) {
|
|
461
|
+
const prev = state.effects[existingIdx]! as Extract<SpellEffect, { kind: 'cc' }>;
|
|
462
|
+
const merged: Extract<SpellEffect, { kind: 'cc' }> = {
|
|
463
|
+
kind: 'cc',
|
|
464
|
+
control: 'incapacitate',
|
|
465
|
+
mechanic: 'polymorph',
|
|
466
|
+
durationMs: Math.max(prev.durationMs ?? 0, cc.durationMs ?? 0),
|
|
467
|
+
school: prev.school ?? cc.school,
|
|
468
|
+
};
|
|
469
|
+
if (prev.breakOnDamage === true || cc.breakOnDamage === true) {
|
|
470
|
+
merged.breakOnDamage = true;
|
|
471
|
+
}
|
|
472
|
+
const onlyTypes = prev.onlyTypes ?? cc.onlyTypes;
|
|
473
|
+
if (onlyTypes) merged.onlyTypes = onlyTypes;
|
|
474
|
+
const pulseMs = prev.pulseMs ?? cc.pulseMs;
|
|
475
|
+
if (pulseMs != null) merged.pulseMs = pulseMs;
|
|
476
|
+
state.effects[existingIdx] = merged;
|
|
477
|
+
} else {
|
|
478
|
+
state.effects.push(cc);
|
|
479
|
+
}
|
|
480
|
+
state.role = state.role || 'control';
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
export function withPpc<T extends Record<string, unknown>>(
|
|
484
|
+
obj: T,
|
|
485
|
+
ppc: number | undefined,
|
|
486
|
+
): T {
|
|
487
|
+
if (ppc) return { ...obj, pointsPerComboPoint: ppc };
|
|
488
|
+
return obj;
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
export function trunc(n: number): number {
|
|
492
|
+
return n < 0 ? Math.ceil(n) : Math.floor(n);
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
// SpellEntry::CalculateSimpleValue — EffectBasePoints + EffectBaseDice. Caches as m_currentBasePoints[eff].
|
|
496
|
+
// Cite: DBCStructure.h:817; Spell.cpp:425.
|
|
497
|
+
export function calculateSimpleValue(raw: RawSpellEffect): number {
|
|
498
|
+
return (raw.basePoints | 0) + (raw.baseDice | 0);
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
// Single-bit school mask → school name (multi-bit / 0 → undefined). Cite: map-spell-effects.mjs
|
|
502
|
+
// schoolFromSingleBitMask :31–43.
|
|
503
|
+
export function schoolFromSingleBitMask(mask: number): School | undefined {
|
|
504
|
+
if (!mask) return undefined;
|
|
505
|
+
let found: School | undefined;
|
|
506
|
+
let bits = 0;
|
|
507
|
+
for (let i = 0; i < 7; i++) {
|
|
508
|
+
if ((mask & (1 << i)) !== 0) {
|
|
509
|
+
found = SCHOOLS[i];
|
|
510
|
+
bits++;
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
return bits === 1 ? found : undefined;
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
// ── SPELL_AURA_MOD_SKILL (30) / MOD_SKILL_TALENT (98) ── player-only, unmapped in the bake, with the
|
|
517
|
+
// intent carrying the skill line and signed amount. Below: skill line 95 is Defense.
|
|
518
|
+
const SKILL_DEFENSE = 95;
|
|
519
|
+
|
|
520
|
+
export function pushModSkillIntent(
|
|
521
|
+
state: HandlerState,
|
|
522
|
+
raw: RawSpellEffect,
|
|
523
|
+
permanent: boolean,
|
|
524
|
+
): void {
|
|
525
|
+
// C++: non-player → return. Cite: :2057–2058.
|
|
526
|
+
if (state.ctx.unitTargetIsPlayer === false) return;
|
|
527
|
+
|
|
528
|
+
const skillId = raw.miscValue | 0;
|
|
529
|
+
const { min } = effectAmountRange(raw, state.ctx);
|
|
530
|
+
const dur = durationMsResolved(state);
|
|
531
|
+
if (!skillId || min === 0) return;
|
|
532
|
+
// Defense also surfaces on the paperdoll. Every skill line gets the modifier so the weapon and
|
|
533
|
+
// defense skill values include racials, talents and equip bonuses above the level cap.
|
|
534
|
+
if (skillId === SKILL_DEFENSE) {
|
|
535
|
+
const tagged = withHostile(
|
|
536
|
+
{ kind: 'buff' as const, mod: 'defense' as const, amount: min, durationMs: dur },
|
|
537
|
+
raw.targetA | 0,
|
|
538
|
+
min,
|
|
539
|
+
);
|
|
540
|
+
state.effects.push(tagged as SpellEffect);
|
|
541
|
+
}
|
|
542
|
+
state.effects.push({
|
|
543
|
+
kind: 'mod_skill',
|
|
544
|
+
skillId,
|
|
545
|
+
amount: min,
|
|
546
|
+
permanent,
|
|
547
|
+
durationMs: dur,
|
|
548
|
+
} as never);
|
|
549
|
+
state.role = state.role || 'buff';
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
// ── SPELL_AURA_ADD_FLAT_MODIFIER (107) / ADD_PCT_MODIFIER (108) ── empty in the bake; the intent
|
|
553
|
+
// carries the player spell modifier. Cite: SpellAuras.cpp:899-939 HandleAddModifier.
|
|
554
|
+
export function pushAddModifierIntent(
|
|
555
|
+
state: HandlerState,
|
|
556
|
+
raw: RawSpellEffect,
|
|
557
|
+
kind: 'add_flat_modifier' | 'add_pct_modifier',
|
|
558
|
+
): void {
|
|
559
|
+
// C++: player + Real only; misc >= MAX_SPELLMOD return. Cite: :901–906.
|
|
560
|
+
if (state.ctx.unitTargetIsPlayer === false) return;
|
|
561
|
+
const spellModOp = raw.miscValue | 0;
|
|
562
|
+
if (spellModOp >= MAX_SPELLMOD) return;
|
|
563
|
+
|
|
564
|
+
const { min } = effectAmountRange(raw, state.ctx);
|
|
565
|
+
const dur = durationMsResolved(state);
|
|
566
|
+
const id = state.spell.id | 0;
|
|
567
|
+
// Narrow to the modifier variants that carry auraCharges / priority.
|
|
568
|
+
const intent: Extract<InterpretIntent, { kind: 'add_flat_modifier' | 'add_pct_modifier' }> = {
|
|
569
|
+
kind,
|
|
570
|
+
spellModOp,
|
|
571
|
+
amount: min,
|
|
572
|
+
durationMs: dur,
|
|
573
|
+
// EffectItemType is the vanilla family mask when spell_affect has no row.
|
|
574
|
+
// Cite: SpellMgr.h GetSpellAffectMask; Player.cpp:350–357.
|
|
575
|
+
familyFlags: (raw.itemType ?? 0) | 0,
|
|
576
|
+
};
|
|
577
|
+
// Charge / priority specials on apply. Cite: :912–922.
|
|
578
|
+
if (ADD_MODIFIER_CHARGE_1_IDS.has(id)) {
|
|
579
|
+
intent.auraCharges = 1;
|
|
580
|
+
}
|
|
581
|
+
if (id === CLEARCASTING_SHAMAN_ID) {
|
|
582
|
+
intent.priority = CLEARCASTING_SPELLMOD_PRIORITY;
|
|
583
|
+
}
|
|
584
|
+
// A stack amount above one zeroes the modifier's charges, so it expires on a proc event rather than
|
|
585
|
+
// on use. The id specials above set a charge on the aura holder; both paths coexist in the C++.
|
|
586
|
+
if (((state.spell.stackAmount ?? 0) | 0) > 1) {
|
|
587
|
+
intent.auraCharges = 0;
|
|
588
|
+
}
|
|
589
|
+
state.intents.push(intent);
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
// After all slots: integrate Ambush custom fixed-bonus percent when fullWeaponPath. Cite:
|
|
593
|
+
// SpellEffects.cpp:3512–3516.
|
|
594
|
+
export function finalizeWeaponModel(state: HandlerState): WeaponDamageModel | undefined {
|
|
595
|
+
if (!state.weapon.sawFlat && !state.weapon.sawPercent) return undefined;
|
|
596
|
+
|
|
597
|
+
let resolvedFixed = state.weapon.fixedBonus;
|
|
598
|
+
let ambushBonusPct: number | undefined;
|
|
599
|
+
|
|
600
|
+
if (state.weapon.ambush) {
|
|
601
|
+
ambushBonusPct = 2.5;
|
|
602
|
+
if (state.ctx.fullWeaponPath && state.weapon.sawPercent) {
|
|
603
|
+
// customBonusDamagePercentMod: fixed *= 2.5 (not the weapon % mod).
|
|
604
|
+
resolvedFixed = trunc(resolvedFixed * 2.5);
|
|
605
|
+
// Optionally stamp strikeBonus with full path (tests); bake-thin keeps max flat.
|
|
606
|
+
state.strikeBonus = resolvedFixed > 0 ? resolvedFixed : state.strikeBonus;
|
|
607
|
+
}
|
|
608
|
+
} else if (state.ctx.fullWeaponPath && state.weapon.sawPercent && state.weapon.sawFlat) {
|
|
609
|
+
// Non-Ambush: fixed_bonus *= weaponDamagePercentMod.
|
|
610
|
+
resolvedFixed = trunc(resolvedFixed * state.weapon.weaponPercentMod);
|
|
611
|
+
state.strikeBonus = resolvedFixed > 0 ? resolvedFixed : state.strikeBonus;
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
return {
|
|
615
|
+
fixedBonus: state.weapon.fixedBonus,
|
|
616
|
+
weaponPercentMod: state.weapon.weaponPercentMod,
|
|
617
|
+
normalized: state.weapon.normalized,
|
|
618
|
+
ambushBonusPct,
|
|
619
|
+
resolvedFixedBonus: resolvedFixed,
|
|
620
|
+
};
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
// Stamp buff.applyTo from raw implicit targets. Overwrite a baked party fan when the DBC row
|
|
624
|
+
// names one selected unit (21/35/57/58). Cite: targeting.ts spellBuffApplyToFromRaw.
|
|
625
|
+
export function applySpellBuffAudience(state: HandlerState): void {
|
|
626
|
+
const best = spellBuffApplyToFromRaw(state.spell);
|
|
627
|
+
if (!best) return;
|
|
628
|
+
for (let i = 0; i < state.effects.length; i++) {
|
|
629
|
+
const e = state.effects[i]!;
|
|
630
|
+
if (e.kind === 'buff' && e.hostile !== true) {
|
|
631
|
+
state.effects[i] = { ...e, applyTo: best };
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
export function finalizeResult(state: HandlerState): InterpretResult {
|
|
637
|
+
applySpellBuffAudience(state);
|
|
638
|
+
const weaponDamageModel = finalizeWeaponModel(state);
|
|
639
|
+
const out: InterpretResult = {
|
|
640
|
+
effects: state.effects,
|
|
641
|
+
unhandled: state.unhandled,
|
|
642
|
+
};
|
|
643
|
+
if (state.strikeBonus != null) out.strikeBonus = state.strikeBonus;
|
|
644
|
+
if (state.role) out.role = state.role;
|
|
645
|
+
if (weaponDamageModel) out.weaponDamageModel = weaponDamageModel;
|
|
646
|
+
if (state.intents.length > 0) out.intents = state.intents;
|
|
647
|
+
return out;
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
/** Create initial handler state for interpretSpell. */
|
|
651
|
+
export function createHandlerState(spell: SpellDef, ctx: InterpretContext): HandlerState {
|
|
652
|
+
return {
|
|
653
|
+
spell,
|
|
654
|
+
ctx,
|
|
655
|
+
effects: [],
|
|
656
|
+
unhandled: [],
|
|
657
|
+
intents: [],
|
|
658
|
+
weapon: {
|
|
659
|
+
fixedBonus: 0,
|
|
660
|
+
weaponPercentMod: 1,
|
|
661
|
+
normalized: false,
|
|
662
|
+
ambush: false,
|
|
663
|
+
sawFlat: false,
|
|
664
|
+
sawPercent: false,
|
|
665
|
+
},
|
|
666
|
+
};
|
|
667
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// SI2.5 / SI3 top-opcode handlers — barrel (registry split; pure re-exports). Implementation lives under
|
|
2
|
+
// ./handlers/*.ts. Public surface unchanged for index.ts / item-triggers.ts importers.
|
|
3
|
+
|
|
4
|
+
export { EFFECT_HANDLERS, AURA_HANDLERS } from './handlers/registry.ts';
|
|
5
|
+
export {
|
|
6
|
+
finalizeResult,
|
|
7
|
+
createHandlerState,
|
|
8
|
+
} from './handlers/shared.ts';
|
|
9
|
+
export type { HandlerState } from './handlers/shared.ts';
|