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,952 @@
|
|
|
1
|
+
// Western Plaguelands ScriptDev IR ports. Source: eastern_kingdoms/western_plaguelands.cpp — the
|
|
2
|
+
// Scourge Cauldron, Taelan Fordring, Isillien and Tirion. Only Taelan 1842 is in the bake.
|
|
3
|
+
|
|
4
|
+
import type { ScriptDevIR } from './types.ts';
|
|
5
|
+
|
|
6
|
+
// Constants — western_plaguelands.cpp enums
|
|
7
|
+
|
|
8
|
+
// western_plaguelands.cpp:114–147 texts (negative script_texts ids)
|
|
9
|
+
export const SAY_SCARLET_COMPLETE_1 = -1001076;
|
|
10
|
+
export const SAY_SCARLET_COMPLETE_2 = -1001077;
|
|
11
|
+
export const SAY_ESCORT_START = -1001078;
|
|
12
|
+
export const SAY_EXIT_KEEP = -1001079;
|
|
13
|
+
export const EMOTE_MOUNT = -1001080;
|
|
14
|
+
export const SAY_REACH_TOWER = -1001081;
|
|
15
|
+
export const SAY_ISILLIEN_1 = -1001082;
|
|
16
|
+
export const SAY_ISILLIEN_2 = -1001083;
|
|
17
|
+
export const SAY_ISILLIEN_3 = -1001084;
|
|
18
|
+
export const SAY_ISILLIEN_4 = -1001085;
|
|
19
|
+
export const SAY_ISILLIEN_5 = -1001086;
|
|
20
|
+
export const SAY_ISILLIEN_6 = -1001087;
|
|
21
|
+
export const EMOTE_ISILLIEN_ATTACK = -1001088;
|
|
22
|
+
export const SAY_ISILLIEN_ATTACK = -1001089;
|
|
23
|
+
export const SAY_KILL_TAELAN_1 = -1001090;
|
|
24
|
+
export const EMOTE_ISILLIEN_LAUGH = -1001091;
|
|
25
|
+
export const SAY_KILL_TAELAN_2 = -1001092;
|
|
26
|
+
export const EMOTE_ATTACK_PLAYER = -1001093;
|
|
27
|
+
export const SAY_TIRION_1 = -1001094;
|
|
28
|
+
export const SAY_TIRION_2 = -1001095;
|
|
29
|
+
export const SAY_TIRION_3 = -1001096;
|
|
30
|
+
export const SAY_TIRION_4 = -1001097;
|
|
31
|
+
export const SAY_TIRION_5 = -1001098;
|
|
32
|
+
export const SAY_EPILOG_1 = -1001099;
|
|
33
|
+
export const EMOTE_KNEEL = -1001100;
|
|
34
|
+
export const SAY_EPILOG_2 = -1001101;
|
|
35
|
+
export const EMOTE_HOLD_TAELAN = -1001102;
|
|
36
|
+
export const SAY_EPILOG_3 = -1001103;
|
|
37
|
+
export const SAY_EPILOG_4 = -1001104;
|
|
38
|
+
export const SAY_EPILOG_5 = -1001105;
|
|
39
|
+
|
|
40
|
+
// western_plaguelands.cpp:148–164 spells
|
|
41
|
+
/** Cite: western_plaguelands.cpp:149 SPELL_DEVOTION_AURA = 17232 */
|
|
42
|
+
export const SPELL_DEVOTION_AURA = 17232;
|
|
43
|
+
/** Cite: western_plaguelands.cpp:150 SPELL_CRUSADER_STRIKE = 14518 */
|
|
44
|
+
export const SPELL_CRUSADER_STRIKE = 14518;
|
|
45
|
+
/** Cite: western_plaguelands.cpp:151 SPELL_HOLY_STRIKE = 17143 */
|
|
46
|
+
export const SPELL_HOLY_STRIKE = 17143;
|
|
47
|
+
/** Cite: western_plaguelands.cpp:152 SPELL_HOLY_CLEAVE = 18819 */
|
|
48
|
+
export const SPELL_HOLY_CLEAVE = 18819;
|
|
49
|
+
/** Cite: western_plaguelands.cpp:153 SPELL_HOLY_LIGHT = 15493 */
|
|
50
|
+
export const SPELL_HOLY_LIGHT = 15493;
|
|
51
|
+
/** Cite: western_plaguelands.cpp:154 SPELL_LAY_ON_HANDS = 17233 */
|
|
52
|
+
export const SPELL_LAY_ON_HANDS = 17233;
|
|
53
|
+
/** Cite: western_plaguelands.cpp:155 SPELL_TAELAN_SUFFERING = 18810 */
|
|
54
|
+
export const SPELL_TAELAN_SUFFERING = 18810;
|
|
55
|
+
|
|
56
|
+
/** Cite: western_plaguelands.cpp:158 SPELL_DOMINATE_MIND = 14515 */
|
|
57
|
+
export const SPELL_DOMINATE_MIND = 14515;
|
|
58
|
+
/** Cite: western_plaguelands.cpp:159 SPELL_FLASH_HEAL = 10917 */
|
|
59
|
+
export const SPELL_FLASH_HEAL = 10917;
|
|
60
|
+
/** Cite: western_plaguelands.cpp:160 SPELL_GREATER_HEAL = 10965 */
|
|
61
|
+
export const SPELL_GREATER_HEAL = 10965;
|
|
62
|
+
/** Cite: western_plaguelands.cpp:161 SPELL_MANA_BURN = 15800 */
|
|
63
|
+
export const SPELL_MANA_BURN = 15800;
|
|
64
|
+
/** Cite: western_plaguelands.cpp:162 SPELL_MIND_BLAST = 17194 */
|
|
65
|
+
export const SPELL_MIND_BLAST = 17194;
|
|
66
|
+
/** Cite: western_plaguelands.cpp:163 SPELL_MIND_FLAY = 17165 */
|
|
67
|
+
export const SPELL_MIND_FLAY = 17165;
|
|
68
|
+
/** Cite: western_plaguelands.cpp:164 SPELL_TAELAN_DEATH = 18969 */
|
|
69
|
+
export const SPELL_TAELAN_DEATH = 18969;
|
|
70
|
+
|
|
71
|
+
// western_plaguelands.cpp:166–171 npcs
|
|
72
|
+
/** Cite: western_plaguelands.cpp:167 NPC_TAELAN_FORDRING = 1842 */
|
|
73
|
+
export const NPC_TAELAN_FORDRING = 1842;
|
|
74
|
+
/** Cite: western_plaguelands.cpp:168 NPC_SCARLET_CAVALIER = 1836 */
|
|
75
|
+
export const NPC_SCARLET_CAVALIER = 1836;
|
|
76
|
+
/** Cite: western_plaguelands.cpp:169 NPC_ISILLIEN = 1840 */
|
|
77
|
+
export const NPC_ISILLIEN = 1840;
|
|
78
|
+
/** Cite: western_plaguelands.cpp:170 NPC_TIRION_FORDRING = 12126 */
|
|
79
|
+
export const NPC_TIRION_FORDRING = 12126;
|
|
80
|
+
/** Cite: western_plaguelands.cpp:171 NPC_CRIMSON_ELITE = 12128 */
|
|
81
|
+
export const NPC_CRIMSON_ELITE = 12128;
|
|
82
|
+
|
|
83
|
+
/** DB binding. Cite: scriptdev-corpus.json 11152 The Scourge Cauldron */
|
|
84
|
+
export const NPC_THE_SCOURGE_CAULDRON = 11152;
|
|
85
|
+
|
|
86
|
+
// Cauldron lords by area (western_plaguelands.cpp:66–97)
|
|
87
|
+
/** Cite: western_plaguelands.cpp:70 area 199 Felstone → 11075 */
|
|
88
|
+
export const NPC_CAULDRON_LORD_BILEMAW = 11075;
|
|
89
|
+
/** Cite: western_plaguelands.cpp:78 area 200 Dalson → 11077 */
|
|
90
|
+
export const NPC_CAULDRON_LORD_MALVINIOUS = 11077;
|
|
91
|
+
/** Cite: western_plaguelands.cpp:86 area 201 Gahrron → 11078 */
|
|
92
|
+
export const NPC_CAULDRON_LORD_SOULWRATH = 11078;
|
|
93
|
+
/** Cite: western_plaguelands.cpp:94 area 202 Writhing → 11076 */
|
|
94
|
+
export const NPC_CAULDRON_LORD_RAZARCH = 11076;
|
|
95
|
+
|
|
96
|
+
/** Cite: western_plaguelands.cpp:173 MODEL_TAELAN_MOUNT = 239 */
|
|
97
|
+
export const MODEL_TAELAN_MOUNT = 239;
|
|
98
|
+
|
|
99
|
+
// western_plaguelands.cpp:175–177 quests
|
|
100
|
+
/** Cite: western_plaguelands.cpp:176 QUEST_ID_SCARLET_SUBTERFUGE = 5862 */
|
|
101
|
+
export const QUEST_ID_SCARLET_SUBTERFUGE = 5862;
|
|
102
|
+
/** Cite: western_plaguelands.cpp:177 QUEST_ID_IN_DREAMS = 5944 */
|
|
103
|
+
export const QUEST_ID_IN_DREAMS = 5944;
|
|
104
|
+
|
|
105
|
+
// Cauldron quest pairs (western_plaguelands.cpp:67–96)
|
|
106
|
+
/** Felstone: 5216 / 5229. Cite: cpp:67–68 */
|
|
107
|
+
export const QUEST_TARGET_FELSTONE_A = 5216;
|
|
108
|
+
export const QUEST_TARGET_FELSTONE_H = 5229;
|
|
109
|
+
/** Dalson: 5219 / 5231. Cite: cpp:75–76 */
|
|
110
|
+
export const QUEST_TARGET_DALSON_A = 5219;
|
|
111
|
+
export const QUEST_TARGET_DALSON_H = 5231;
|
|
112
|
+
/** Gahrron: 5225 / 5235. Cite: cpp:83–84 */
|
|
113
|
+
export const QUEST_TARGET_GAHRRON_A = 5225;
|
|
114
|
+
export const QUEST_TARGET_GAHRRON_H = 5235;
|
|
115
|
+
/** Writhing: 5222 / 5233. Cite: cpp:91–92 */
|
|
116
|
+
export const QUEST_TARGET_WRITHING_A = 5222;
|
|
117
|
+
export const QUEST_TARGET_WRITHING_H = 5233;
|
|
118
|
+
|
|
119
|
+
/** Area ids. Cite: western_plaguelands.cpp:66–97 case labels */
|
|
120
|
+
export const AREA_FELSTONE = 199;
|
|
121
|
+
export const AREA_DALSON = 200;
|
|
122
|
+
export const AREA_GAHRRON = 201;
|
|
123
|
+
export const AREA_WRITHING = 202;
|
|
124
|
+
|
|
125
|
+
/** FACTION_ESCORT_N_FRIEND_PASSIVE. Cite: ScriptDevAIMgr.h:52; western_plaguelands.cpp:325 */
|
|
126
|
+
export const FACTION_ESCORT_N_FRIEND_PASSIVE = 290;
|
|
127
|
+
|
|
128
|
+
/** TEMPFACTION_RESTORE_RESPAWN. Cite: Creature.h:577; western_plaguelands.cpp:325 */
|
|
129
|
+
export const TEMPFACTION_RESTORE_RESPAWN = 0x01;
|
|
130
|
+
|
|
131
|
+
/** Cauldron lord TEMPSPAWN_TIMED_OOC_OR_DEAD_DESPAWN. Cite: western_plaguelands.cpp:70,78,86,94 600000 */
|
|
132
|
+
export const CAULDRON_LORD_DESPAWN_MS = 600_000;
|
|
133
|
+
|
|
134
|
+
// Min respawn delay after cauldron suicide. Cite: western_plaguelands.cpp:53–54 if rTime < 600
|
|
135
|
+
// SetRespawnDelay(600)
|
|
136
|
+
export const CAULDRON_MIN_RESPAWN_S = 600;
|
|
137
|
+
|
|
138
|
+
// Isillien/Tirion/elite TEMPSPAWN 15 * MINUTE * IN_MILLISECONDS. Cite:
|
|
139
|
+
// western_plaguelands.cpp:332,368,461,474–490
|
|
140
|
+
export const EVENT_NPC_DESPAWN_MS = 15 * 60 * 1000;
|
|
141
|
+
|
|
142
|
+
/** Tirion post-epilogue ForcedDespawn. Cite: western_plaguelands.cpp:565 3 * MINUTE * IN_MILLISECONDS */
|
|
143
|
+
export const TIRION_EPILOG_DESPAWN_MS = 3 * 60 * 1000;
|
|
144
|
+
|
|
145
|
+
// Isillien m_summonTirionTimer after killing Taelan. Cite: western_plaguelands.cpp:757 m_summonTirionTimer
|
|
146
|
+
// = 120000
|
|
147
|
+
export const ISILLIEN_TIRION_TIMER_MS = 120_000;
|
|
148
|
+
|
|
149
|
+
// Taelan "scripted death" HP gate during Isillien fight. Cite: western_plaguelands.cpp:597
|
|
150
|
+
// GetHealthPercent() < 50.0f
|
|
151
|
+
export const TAELAN_DEATH_HP_PCT = 50;
|
|
152
|
+
|
|
153
|
+
// Taelan Lay on Hands HP gate (only when !m_fightStarted). Cite: western_plaguelands.cpp:641
|
|
154
|
+
// GetHealthPercent() < 15.0f
|
|
155
|
+
export const TAELAN_LAY_ON_HANDS_HP_PCT = 15;
|
|
156
|
+
|
|
157
|
+
/** Taelan Holy Light HP gate. Cite: western_plaguelands.cpp:627 GetHealthPercent() < 75.0f */
|
|
158
|
+
export const TAELAN_HOLY_LIGHT_HP_PCT = 75;
|
|
159
|
+
|
|
160
|
+
/** Isillien Greater Heal HP gate. Cite: western_plaguelands.cpp:834 GetHealthPercent() < 50.0f */
|
|
161
|
+
export const ISILLIEN_GREATER_HEAL_HP_PCT = 50;
|
|
162
|
+
|
|
163
|
+
/** Isillien early Tirion spawn HP gate. Cite: western_plaguelands.cpp:775 GetHealthPercent() < 20.0f */
|
|
164
|
+
export const ISILLIEN_TIRION_EARLY_HP_PCT = 20;
|
|
165
|
+
|
|
166
|
+
/** DoSelectLowestHpFriendly radius. Cite: cpp:631 Taelan; :825 Isillien 50.0f */
|
|
167
|
+
export const HEAL_FRIENDLY_RADIUS_YD = 50;
|
|
168
|
+
|
|
169
|
+
// Taelan combat timer bounds (Reset + re-arm)
|
|
170
|
+
|
|
171
|
+
/** Holy Cleave victim. Reset: urand(11000, 15000) (cpp:258) CAST_OK: urand(11000, 13000) (cpp:606) */
|
|
172
|
+
export const TAELAN_HOLY_CLEAVE_INIT_MIN_MS = 11_000;
|
|
173
|
+
export const TAELAN_HOLY_CLEAVE_INIT_MAX_MS = 15_000;
|
|
174
|
+
export const TAELAN_HOLY_CLEAVE_REPEAT_MIN_MS = 11_000;
|
|
175
|
+
export const TAELAN_HOLY_CLEAVE_REPEAT_MAX_MS = 13_000;
|
|
176
|
+
|
|
177
|
+
/** Holy Strike victim. Reset: urand(6000, 8000) (cpp:259) CAST_OK: urand(9000, 14000) (cpp:614) */
|
|
178
|
+
export const TAELAN_HOLY_STRIKE_INIT_MIN_MS = 6000;
|
|
179
|
+
export const TAELAN_HOLY_STRIKE_INIT_MAX_MS = 8000;
|
|
180
|
+
export const TAELAN_HOLY_STRIKE_REPEAT_MIN_MS = 9000;
|
|
181
|
+
export const TAELAN_HOLY_STRIKE_REPEAT_MAX_MS = 14_000;
|
|
182
|
+
|
|
183
|
+
/** Crusader Strike victim. Reset: urand(1000, 5000) (cpp:260) CAST_OK: urand(7000, 12000) (cpp:622) */
|
|
184
|
+
export const TAELAN_CRUSADER_STRIKE_INIT_MIN_MS = 1000;
|
|
185
|
+
export const TAELAN_CRUSADER_STRIKE_INIT_MAX_MS = 5000;
|
|
186
|
+
export const TAELAN_CRUSADER_STRIKE_REPEAT_MIN_MS = 7000;
|
|
187
|
+
export const TAELAN_CRUSADER_STRIKE_REPEAT_MAX_MS = 12_000;
|
|
188
|
+
|
|
189
|
+
// Holy Light lowest friendly (armed when HP < 75%; timer starts 0 on Reset). Reset: m_holyLightTimer = 0
|
|
190
|
+
// (cpp:261) → first check immediate once <75% CAST_OK: urand(10000, 15000) (cpp:634)
|
|
191
|
+
export const TAELAN_HOLY_LIGHT_INIT_MIN_MS = 0;
|
|
192
|
+
export const TAELAN_HOLY_LIGHT_INIT_MAX_MS = 0;
|
|
193
|
+
export const TAELAN_HOLY_LIGHT_REPEAT_MIN_MS = 10_000;
|
|
194
|
+
export const TAELAN_HOLY_LIGHT_REPEAT_MAX_MS = 15_000;
|
|
195
|
+
|
|
196
|
+
// Isillien combat timer bounds
|
|
197
|
+
|
|
198
|
+
/** Mana Burn victim. Reset: urand(7000, 12000) (cpp:714) CAST_OK: urand(8000, 12000) (cpp:807) */
|
|
199
|
+
export const ISILLIEN_MANA_BURN_INIT_MIN_MS = 7000;
|
|
200
|
+
export const ISILLIEN_MANA_BURN_INIT_MAX_MS = 12_000;
|
|
201
|
+
export const ISILLIEN_MANA_BURN_REPEAT_MIN_MS = 8000;
|
|
202
|
+
export const ISILLIEN_MANA_BURN_REPEAT_MAX_MS = 12_000;
|
|
203
|
+
|
|
204
|
+
// Flash Heal lowest friendly. Reset: urand(10000, 15000) (cpp:715) CAST_OK: urand(10000, 15000) (cpp:828)
|
|
205
|
+
export const ISILLIEN_FLASH_HEAL_INIT_MIN_MS = 10_000;
|
|
206
|
+
export const ISILLIEN_FLASH_HEAL_INIT_MAX_MS = 15_000;
|
|
207
|
+
export const ISILLIEN_FLASH_HEAL_REPEAT_MIN_MS = 10_000;
|
|
208
|
+
export const ISILLIEN_FLASH_HEAL_REPEAT_MAX_MS = 15_000;
|
|
209
|
+
|
|
210
|
+
// Dominate Mind random not-top player. Reset: urand(10000, 14000) (cpp:716) CAST_OK: urand(25000, 30000)
|
|
211
|
+
// (cpp:817)
|
|
212
|
+
export const ISILLIEN_DOMINATE_INIT_MIN_MS = 10_000;
|
|
213
|
+
export const ISILLIEN_DOMINATE_INIT_MAX_MS = 14_000;
|
|
214
|
+
export const ISILLIEN_DOMINATE_REPEAT_MIN_MS = 25_000;
|
|
215
|
+
export const ISILLIEN_DOMINATE_REPEAT_MAX_MS = 30_000;
|
|
216
|
+
|
|
217
|
+
/** Mind Blast victim. Reset: urand(0, 1000) (cpp:717) CAST_OK: urand(3000, 5000) (cpp:791) */
|
|
218
|
+
export const ISILLIEN_MIND_BLAST_INIT_MIN_MS = 0;
|
|
219
|
+
export const ISILLIEN_MIND_BLAST_INIT_MAX_MS = 1000;
|
|
220
|
+
export const ISILLIEN_MIND_BLAST_REPEAT_MIN_MS = 3000;
|
|
221
|
+
export const ISILLIEN_MIND_BLAST_REPEAT_MAX_MS = 5000;
|
|
222
|
+
|
|
223
|
+
/** Mind Flay victim. Reset: urand(3000, 7000) (cpp:718) CAST_OK: urand(9000, 15000) (cpp:799) */
|
|
224
|
+
export const ISILLIEN_MIND_FLAY_INIT_MIN_MS = 3000;
|
|
225
|
+
export const ISILLIEN_MIND_FLAY_INIT_MAX_MS = 7000;
|
|
226
|
+
export const ISILLIEN_MIND_FLAY_REPEAT_MIN_MS = 9000;
|
|
227
|
+
export const ISILLIEN_MIND_FLAY_REPEAT_MAX_MS = 15_000;
|
|
228
|
+
|
|
229
|
+
// Greater Heal self (only while HP < 50%; timer starts 0 on Reset). Reset: m_greaterHealTimer = 0 (cpp:719)
|
|
230
|
+
// CAST_OK: urand(15000, 20000) (cpp:839)
|
|
231
|
+
export const ISILLIEN_GREATER_HEAL_INIT_MIN_MS = 0;
|
|
232
|
+
export const ISILLIEN_GREATER_HEAL_INIT_MAX_MS = 0;
|
|
233
|
+
export const ISILLIEN_GREATER_HEAL_REPEAT_MIN_MS = 15_000;
|
|
234
|
+
export const ISILLIEN_GREATER_HEAL_REPEAT_MAX_MS = 20_000;
|
|
235
|
+
|
|
236
|
+
// Tirion combat timer bounds
|
|
237
|
+
|
|
238
|
+
/** Holy Cleave victim. Reset: urand(11000, 15000) (cpp:870) CAST_OK: urand(12000, 15000) (cpp:953) */
|
|
239
|
+
export const TIRION_HOLY_CLEAVE_INIT_MIN_MS = 11_000;
|
|
240
|
+
export const TIRION_HOLY_CLEAVE_INIT_MAX_MS = 15_000;
|
|
241
|
+
export const TIRION_HOLY_CLEAVE_REPEAT_MIN_MS = 12_000;
|
|
242
|
+
export const TIRION_HOLY_CLEAVE_REPEAT_MAX_MS = 15_000;
|
|
243
|
+
|
|
244
|
+
/** Holy Strike victim. Reset: urand(6000, 8000) (cpp:871) CAST_OK: urand(8000, 11000) (cpp:961) */
|
|
245
|
+
export const TIRION_HOLY_STRIKE_INIT_MIN_MS = 6000;
|
|
246
|
+
export const TIRION_HOLY_STRIKE_INIT_MAX_MS = 8000;
|
|
247
|
+
export const TIRION_HOLY_STRIKE_REPEAT_MIN_MS = 8000;
|
|
248
|
+
export const TIRION_HOLY_STRIKE_REPEAT_MAX_MS = 11_000;
|
|
249
|
+
|
|
250
|
+
/** Crusader Strike victim. Reset: urand(1000, 5000) (cpp:872) CAST_OK: urand(7000, 9000) (cpp:969) */
|
|
251
|
+
export const TIRION_CRUSADER_STRIKE_INIT_MIN_MS = 1000;
|
|
252
|
+
export const TIRION_CRUSADER_STRIKE_INIT_MAX_MS = 5000;
|
|
253
|
+
export const TIRION_CRUSADER_STRIKE_REPEAT_MIN_MS = 7000;
|
|
254
|
+
export const TIRION_CRUSADER_STRIKE_REPEAT_MAX_MS = 9000;
|
|
255
|
+
|
|
256
|
+
// Pure helpers — Scourge Cauldron MoveInLineOfSight
|
|
257
|
+
|
|
258
|
+
export interface CauldronLosResult {
|
|
259
|
+
handled: boolean;
|
|
260
|
+
/** Cauldron Lord entry to summon (0 when no-op). */
|
|
261
|
+
summonEntry: number;
|
|
262
|
+
despawnMs: number;
|
|
263
|
+
/** DoDie: Suicide + SetRespawnDelay ≥ 600. */
|
|
264
|
+
suicide: boolean;
|
|
265
|
+
minRespawnS: number;
|
|
266
|
+
cite: string;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
// Port of npc_the_scourge_cauldronAI::MoveInLineOfSight, the quest and area gate.
|
|
270
|
+
// Cite: western_plaguelands.cpp:57–100.
|
|
271
|
+
export function scourgeCauldronLos(
|
|
272
|
+
isPlayer: boolean,
|
|
273
|
+
areaId: number,
|
|
274
|
+
incompleteQuestIds: readonly number[],
|
|
275
|
+
): CauldronLosResult {
|
|
276
|
+
const incomplete = new Set(incompleteQuestIds);
|
|
277
|
+
if (!isPlayer) {
|
|
278
|
+
return {
|
|
279
|
+
handled: false,
|
|
280
|
+
summonEntry: 0,
|
|
281
|
+
despawnMs: 0,
|
|
282
|
+
suicide: false,
|
|
283
|
+
minRespawnS: 0,
|
|
284
|
+
cite: 'western_plaguelands.cpp:59-60 non-player → return',
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
const hit = (a: number, b: number) => incomplete.has(a) || incomplete.has(b);
|
|
288
|
+
if (areaId === AREA_FELSTONE && hit(QUEST_TARGET_FELSTONE_A, QUEST_TARGET_FELSTONE_H)) {
|
|
289
|
+
return {
|
|
290
|
+
handled: true,
|
|
291
|
+
summonEntry: NPC_CAULDRON_LORD_BILEMAW,
|
|
292
|
+
despawnMs: CAULDRON_LORD_DESPAWN_MS,
|
|
293
|
+
suicide: true,
|
|
294
|
+
minRespawnS: CAULDRON_MIN_RESPAWN_S,
|
|
295
|
+
cite: 'western_plaguelands.cpp:66-71 area 199 Felstone → SummonCreature 11075 + DoDie',
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
if (areaId === AREA_DALSON && hit(QUEST_TARGET_DALSON_A, QUEST_TARGET_DALSON_H)) {
|
|
299
|
+
return {
|
|
300
|
+
handled: true,
|
|
301
|
+
summonEntry: NPC_CAULDRON_LORD_MALVINIOUS,
|
|
302
|
+
despawnMs: CAULDRON_LORD_DESPAWN_MS,
|
|
303
|
+
suicide: true,
|
|
304
|
+
minRespawnS: CAULDRON_MIN_RESPAWN_S,
|
|
305
|
+
cite: 'western_plaguelands.cpp:74-79 area 200 Dalson → SummonCreature 11077 + DoDie',
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
if (areaId === AREA_GAHRRON && hit(QUEST_TARGET_GAHRRON_A, QUEST_TARGET_GAHRRON_H)) {
|
|
309
|
+
return {
|
|
310
|
+
handled: true,
|
|
311
|
+
summonEntry: NPC_CAULDRON_LORD_SOULWRATH,
|
|
312
|
+
despawnMs: CAULDRON_LORD_DESPAWN_MS,
|
|
313
|
+
suicide: true,
|
|
314
|
+
minRespawnS: CAULDRON_MIN_RESPAWN_S,
|
|
315
|
+
cite: 'western_plaguelands.cpp:82-87 area 201 Gahrron → SummonCreature 11078 + DoDie',
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
if (areaId === AREA_WRITHING && hit(QUEST_TARGET_WRITHING_A, QUEST_TARGET_WRITHING_H)) {
|
|
319
|
+
return {
|
|
320
|
+
handled: true,
|
|
321
|
+
summonEntry: NPC_CAULDRON_LORD_RAZARCH,
|
|
322
|
+
despawnMs: CAULDRON_LORD_DESPAWN_MS,
|
|
323
|
+
suicide: true,
|
|
324
|
+
minRespawnS: CAULDRON_MIN_RESPAWN_S,
|
|
325
|
+
cite: 'western_plaguelands.cpp:90-95 area 202 Writhing → SummonCreature 11076 + DoDie',
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
return {
|
|
329
|
+
handled: false,
|
|
330
|
+
summonEntry: 0,
|
|
331
|
+
despawnMs: 0,
|
|
332
|
+
suicide: false,
|
|
333
|
+
minRespawnS: 0,
|
|
334
|
+
cite: 'western_plaguelands.cpp:57-100 no matching incomplete quest for area',
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
// Pure helpers — Taelan HP gates + escort fight state
|
|
339
|
+
|
|
340
|
+
export interface TaelanCombatState {
|
|
341
|
+
/** m_fightStarted — true after dialogue SPELL_CRUSADER_STRIKE step vs Isillien. */
|
|
342
|
+
fightStarted: boolean;
|
|
343
|
+
/** m_taelanDead — scripted "dead" after <50% in Isillien fight. */
|
|
344
|
+
taelanDead: boolean;
|
|
345
|
+
/** m_hasMount — remount on evade when not dead. */
|
|
346
|
+
hasMount: boolean;
|
|
347
|
+
/** m_scarletComplete — JustReachedHome resumes Devotion Aura dialogue. */
|
|
348
|
+
scarletComplete: boolean;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
export function taelanInitialState(): TaelanCombatState {
|
|
352
|
+
return {
|
|
353
|
+
fightStarted: false,
|
|
354
|
+
taelanDead: false,
|
|
355
|
+
hasMount: false,
|
|
356
|
+
scarletComplete: false,
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
export interface TaelanHpGateResult {
|
|
361
|
+
/** Enter scripted death (StartNextDialogueText SAY_KILL_TAELAN_1). */
|
|
362
|
+
scriptedDeath: boolean;
|
|
363
|
+
/** Try Lay on Hands self (no timer — every Update while gate holds). */
|
|
364
|
+
castLayOnHands: boolean;
|
|
365
|
+
/** Holy Light timer is eligible (HP < 75%). */
|
|
366
|
+
holyLightEligible: boolean;
|
|
367
|
+
cite: string;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
// Port of the Taelan UpdateEscortAI HP branches — the scripted death, Lay on Hands and the Holy
|
|
371
|
+
// Light gate. Cite: western_plaguelands.cpp:593–642.
|
|
372
|
+
export function taelanHpGates(
|
|
373
|
+
state: TaelanCombatState,
|
|
374
|
+
hpPct: number,
|
|
375
|
+
): TaelanHpGateResult {
|
|
376
|
+
if (state.taelanDead) {
|
|
377
|
+
return {
|
|
378
|
+
scriptedDeath: false,
|
|
379
|
+
castLayOnHands: false,
|
|
380
|
+
holyLightEligible: false,
|
|
381
|
+
cite: 'western_plaguelands.cpp:593-595 m_taelanDead → no combat casts',
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
// Cite: western_plaguelands.cpp:597-601
|
|
385
|
+
if (!state.taelanDead && state.fightStarted && hpPct < TAELAN_DEATH_HP_PCT) {
|
|
386
|
+
return {
|
|
387
|
+
scriptedDeath: true,
|
|
388
|
+
castLayOnHands: false,
|
|
389
|
+
holyLightEligible: hpPct < TAELAN_HOLY_LIGHT_HP_PCT,
|
|
390
|
+
cite: 'western_plaguelands.cpp:597-601 fightStarted && HP<50 → StartNextDialogueText(SAY_KILL_TAELAN_1) m_taelanDead',
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
return {
|
|
394
|
+
scriptedDeath: false,
|
|
395
|
+
// Cite: western_plaguelands.cpp:641-642
|
|
396
|
+
castLayOnHands: !state.fightStarted && hpPct < TAELAN_LAY_ON_HANDS_HP_PCT,
|
|
397
|
+
holyLightEligible: hpPct < TAELAN_HOLY_LIGHT_HP_PCT,
|
|
398
|
+
cite: 'western_plaguelands.cpp:627-642 Holy Light <75%; Lay on Hands !fightStarted && <15%',
|
|
399
|
+
};
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
/** Port of ReceiveAIEvent CUSTOM_A kill-Taelan path on Isillien. Cite: western_plaguelands.cpp:752–759 */
|
|
403
|
+
export function isillienReceiveCustomA(): {
|
|
404
|
+
castTaelanDeath: boolean;
|
|
405
|
+
spellId: number;
|
|
406
|
+
armTirionTimerMs: number;
|
|
407
|
+
taelanDead: true;
|
|
408
|
+
cite: string;
|
|
409
|
+
} {
|
|
410
|
+
return {
|
|
411
|
+
castTaelanDeath: true,
|
|
412
|
+
spellId: SPELL_TAELAN_DEATH,
|
|
413
|
+
armTirionTimerMs: ISILLIEN_TIRION_TIMER_MS,
|
|
414
|
+
taelanDead: true,
|
|
415
|
+
cite: 'western_plaguelands.cpp:755-758 DoCast SPELL_TAELAN_DEATH + m_taelanDead + m_summonTirionTimer=120000',
|
|
416
|
+
};
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
export interface IsillienTirionSpawnState {
|
|
420
|
+
tirionSpawned: boolean;
|
|
421
|
+
summonTirionTimerMs: number;
|
|
422
|
+
taelanDead: boolean;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
export interface IsillienTirionSpawnTickResult {
|
|
426
|
+
spawnTirion: boolean;
|
|
427
|
+
next: IsillienTirionSpawnState;
|
|
428
|
+
cite: string;
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
// Port of Isillien UpdateEscortAI Tirion-spawn gate. Cite: western_plaguelands.cpp:774–782 Spawns when
|
|
432
|
+
// !m_tirionSpawned && ((timer armed && expired) || HP < 20%).
|
|
433
|
+
export function isillienTirionSpawnTick(
|
|
434
|
+
state: IsillienTirionSpawnState,
|
|
435
|
+
diffMs: number,
|
|
436
|
+
hpPct: number,
|
|
437
|
+
): IsillienTirionSpawnTickResult {
|
|
438
|
+
if (state.tirionSpawned) {
|
|
439
|
+
return {
|
|
440
|
+
spawnTirion: false,
|
|
441
|
+
next: state,
|
|
442
|
+
cite: 'western_plaguelands.cpp:775 m_tirionSpawned already true',
|
|
443
|
+
};
|
|
444
|
+
}
|
|
445
|
+
// Cite: western_plaguelands.cpp:775
|
|
446
|
+
const timerExpired =
|
|
447
|
+
state.summonTirionTimerMs !== 0 && state.summonTirionTimerMs < diffMs;
|
|
448
|
+
const earlyHp = hpPct < ISILLIEN_TIRION_EARLY_HP_PCT;
|
|
449
|
+
if (timerExpired || earlyHp) {
|
|
450
|
+
return {
|
|
451
|
+
spawnTirion: true,
|
|
452
|
+
next: { ...state, tirionSpawned: true, summonTirionTimerMs: 0 },
|
|
453
|
+
cite: timerExpired
|
|
454
|
+
? 'western_plaguelands.cpp:775-779 timer expired → SendAIEvent CUSTOM_B to Taelan (summon Tirion)'
|
|
455
|
+
: 'western_plaguelands.cpp:775-779 HP<20 → SendAIEvent CUSTOM_B to Taelan (summon Tirion)',
|
|
456
|
+
};
|
|
457
|
+
}
|
|
458
|
+
if (state.summonTirionTimerMs) {
|
|
459
|
+
return {
|
|
460
|
+
spawnTirion: false,
|
|
461
|
+
next: {
|
|
462
|
+
...state,
|
|
463
|
+
summonTirionTimerMs: state.summonTirionTimerMs - diffMs,
|
|
464
|
+
},
|
|
465
|
+
cite: 'western_plaguelands.cpp:781-782 m_summonTirionTimer -= diff',
|
|
466
|
+
};
|
|
467
|
+
}
|
|
468
|
+
return {
|
|
469
|
+
spawnTirion: false,
|
|
470
|
+
next: state,
|
|
471
|
+
cite: 'western_plaguelands.cpp:775-782 waiting (timer 0, HP>=20)',
|
|
472
|
+
};
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
/** Port of Taelan dialogue epilogue explore credit. Cite: western_plaguelands.cpp:559–564 SAY_EPILOG_5 */
|
|
476
|
+
export function taelanEpilogueCredit(): {
|
|
477
|
+
questId: number;
|
|
478
|
+
tirionDespawnMs: number;
|
|
479
|
+
taelanDespawnMs: number;
|
|
480
|
+
cite: string;
|
|
481
|
+
} {
|
|
482
|
+
return {
|
|
483
|
+
questId: QUEST_ID_IN_DREAMS,
|
|
484
|
+
tirionDespawnMs: TIRION_EPILOG_DESPAWN_MS,
|
|
485
|
+
taelanDespawnMs: TIRION_EPILOG_DESPAWN_MS,
|
|
486
|
+
cite: 'western_plaguelands.cpp:559-568 RewardPlayerAndGroupAtEventExplored(5944) + ForcedDespawn 3min both',
|
|
487
|
+
};
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
/** Escort waypoint pause points. Cite: western_plaguelands.cpp:340–355 */
|
|
491
|
+
export const TAELAN_WAYPOINTS = [
|
|
492
|
+
{
|
|
493
|
+
pointId: 26,
|
|
494
|
+
pauseEscort: true,
|
|
495
|
+
dialogueStart: SAY_EXIT_KEEP,
|
|
496
|
+
cite: 'western_plaguelands.cpp:345-348 case 26 pause + SAY_EXIT_KEEP dialogue',
|
|
497
|
+
},
|
|
498
|
+
{
|
|
499
|
+
pointId: 56,
|
|
500
|
+
pauseEscort: true,
|
|
501
|
+
dialogueStart: SAY_REACH_TOWER,
|
|
502
|
+
cite: 'western_plaguelands.cpp:349-353 case 56 pause + SAY_REACH_TOWER (summons Isillien in dialogue)',
|
|
503
|
+
},
|
|
504
|
+
] as const;
|
|
505
|
+
|
|
506
|
+
export interface TaelanWaypointResult {
|
|
507
|
+
handled: boolean;
|
|
508
|
+
pauseEscort: boolean;
|
|
509
|
+
dialogueStart: number | null;
|
|
510
|
+
cite: string;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
/** Port of npc_taelan_fordringAI::WaypointReached. Cite: western_plaguelands.cpp:340–355 */
|
|
514
|
+
export function taelanWaypointReached(pointId: number): TaelanWaypointResult {
|
|
515
|
+
const step = TAELAN_WAYPOINTS.find((w) => w.pointId === pointId);
|
|
516
|
+
if (!step) {
|
|
517
|
+
return {
|
|
518
|
+
handled: false,
|
|
519
|
+
pauseEscort: false,
|
|
520
|
+
dialogueStart: null,
|
|
521
|
+
cite: 'western_plaguelands.cpp:340-355 no case for this pointId',
|
|
522
|
+
};
|
|
523
|
+
}
|
|
524
|
+
return {
|
|
525
|
+
handled: true,
|
|
526
|
+
pauseEscort: step.pauseEscort,
|
|
527
|
+
dialogueStart: step.dialogueStart,
|
|
528
|
+
cite: step.cite,
|
|
529
|
+
};
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
/** Isillien spawn coords at SAY_REACH_TOWER dialogue step. Cite: western_plaguelands.cpp:461 */
|
|
533
|
+
export const ISILLIEN_SPAWN = {
|
|
534
|
+
x: 2693.12,
|
|
535
|
+
y: -1943.04,
|
|
536
|
+
z: 72.04,
|
|
537
|
+
o: 2.11,
|
|
538
|
+
despawnMs: EVENT_NPC_DESPAWN_MS,
|
|
539
|
+
cite: 'western_plaguelands.cpp:461 SummonCreature NPC_ISILLIEN',
|
|
540
|
+
} as const;
|
|
541
|
+
|
|
542
|
+
/** Tirion spawn coords on CUSTOM_B. Cite: western_plaguelands.cpp:332 */
|
|
543
|
+
export const TIRION_SPAWN = {
|
|
544
|
+
x: 2620.273,
|
|
545
|
+
y: -1920.917,
|
|
546
|
+
z: 74.25,
|
|
547
|
+
o: 0,
|
|
548
|
+
despawnMs: EVENT_NPC_DESPAWN_MS,
|
|
549
|
+
cite: 'western_plaguelands.cpp:332 SummonCreature NPC_TIRION_FORDRING',
|
|
550
|
+
} as const;
|
|
551
|
+
|
|
552
|
+
// Extra Crimson Elite spawns at SPELL_CRUSADER_STRIKE dialogue step. Cite: western_plaguelands.cpp:474–490
|
|
553
|
+
export const CRIMSON_ELITE_SPAWNS = [
|
|
554
|
+
{ x: 2711.32, y: -1882.67, z: 67.89, o: 3.2, cite: 'western_plaguelands.cpp:474' },
|
|
555
|
+
{ x: 2710.93, y: -1878.9, z: 67.97, o: 3.2, cite: 'western_plaguelands.cpp:480' },
|
|
556
|
+
{ x: 2710.53, y: -1875.28, z: 67.9, o: 3.2, cite: 'western_plaguelands.cpp:486' },
|
|
557
|
+
] as const;
|
|
558
|
+
|
|
559
|
+
// Heal target eligibility (DoSelectLowestHpFriendly includes self when injured). Cite:
|
|
560
|
+
// western_plaguelands.cpp:631,825
|
|
561
|
+
export function healTargetEligible(hpFrac: number): boolean {
|
|
562
|
+
return hpFrac > 0 && hpFrac < 1;
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
// npc_the_scourge_cauldron
|
|
566
|
+
|
|
567
|
+
// npc_the_scourge_cauldronAI, creature 11152 — ABSENT from the product bake, so the binding is
|
|
568
|
+
// unused. The area/quest → Cauldron Lord map is a pure helper; lords 11075–11078 are in bake.
|
|
569
|
+
export const NPC_THE_SCOURGE_CAULDRON_SCRIPT: ScriptDevIR = {
|
|
570
|
+
name: 'npc_the_scourge_cauldron',
|
|
571
|
+
boundCreatures: [NPC_THE_SCOURGE_CAULDRON],
|
|
572
|
+
sourceFile: 'eastern_kingdoms/western_plaguelands.cpp',
|
|
573
|
+
spellIds: [],
|
|
574
|
+
timers: [],
|
|
575
|
+
lifecycle: {
|
|
576
|
+
onReset: [
|
|
577
|
+
{
|
|
578
|
+
kind: 'flavor',
|
|
579
|
+
text: 'Reset empty - LOS-driven cauldron only',
|
|
580
|
+
cite: 'western_plaguelands.cpp:45 Reset empty',
|
|
581
|
+
},
|
|
582
|
+
],
|
|
583
|
+
},
|
|
584
|
+
unusedBindings: [
|
|
585
|
+
{
|
|
586
|
+
entry: NPC_THE_SCOURGE_CAULDRON,
|
|
587
|
+
kind: 'creature',
|
|
588
|
+
reason:
|
|
589
|
+
'NPC 11152 The Scourge Cauldron is ScriptName-bound in DB but absent from product bake - IR + scourgeCauldronLos pure helper ported; Cauldron Lords 11075/11076/11077/11078 are in bake as kill targets for quests 5216/5219/5222/5225 (+Horde pairs)',
|
|
590
|
+
cite: 'western_plaguelands.cpp:41-106; loadRealBundle missing 11152',
|
|
591
|
+
},
|
|
592
|
+
],
|
|
593
|
+
cites: [
|
|
594
|
+
'western_plaguelands.cpp:37-106 npc_the_scourge_cauldron',
|
|
595
|
+
'western_plaguelands.cpp:47-55 DoDie Suicide + respawn delay >=600',
|
|
596
|
+
'western_plaguelands.cpp:57-100 MoveInLineOfSight area 199-202 quest pairs',
|
|
597
|
+
'western_plaguelands.cpp:70 Felstone→11075; :78 Dalson→11077; :86 Gahrron→11078; :94 Writhing→11076',
|
|
598
|
+
'western_plaguelands.cpp:70 TEMPSPAWN_TIMED_OOC_OR_DEAD_DESPAWN 600000',
|
|
599
|
+
],
|
|
600
|
+
};
|
|
601
|
+
|
|
602
|
+
// npc_taelan_fordring
|
|
603
|
+
|
|
604
|
+
// npc_taelan_fordringAI, creature 1842. Holy Cleave 11–15s/11–13s, Holy Strike 6–8s/9–14s,
|
|
605
|
+
// Crusader Strike 1–5s/7–12s, Holy Light below 75%, and Lay on Hands below 15% before the fight.
|
|
606
|
+
export const NPC_TAELAN_FORDRING_SCRIPT: ScriptDevIR = {
|
|
607
|
+
name: 'npc_taelan_fordring',
|
|
608
|
+
boundCreatures: [NPC_TAELAN_FORDRING],
|
|
609
|
+
sourceFile: 'eastern_kingdoms/western_plaguelands.cpp',
|
|
610
|
+
spellIds: [
|
|
611
|
+
SPELL_DEVOTION_AURA,
|
|
612
|
+
SPELL_CRUSADER_STRIKE,
|
|
613
|
+
SPELL_HOLY_STRIKE,
|
|
614
|
+
SPELL_HOLY_CLEAVE,
|
|
615
|
+
SPELL_HOLY_LIGHT,
|
|
616
|
+
SPELL_LAY_ON_HANDS,
|
|
617
|
+
SPELL_TAELAN_SUFFERING,
|
|
618
|
+
],
|
|
619
|
+
timers: [
|
|
620
|
+
{
|
|
621
|
+
id: 'holy_cleave',
|
|
622
|
+
spellId: SPELL_HOLY_CLEAVE,
|
|
623
|
+
initialMinMs: TAELAN_HOLY_CLEAVE_INIT_MIN_MS,
|
|
624
|
+
initialMaxMs: TAELAN_HOLY_CLEAVE_INIT_MAX_MS,
|
|
625
|
+
repeatMinMs: TAELAN_HOLY_CLEAVE_REPEAT_MIN_MS,
|
|
626
|
+
repeatMaxMs: TAELAN_HOLY_CLEAVE_REPEAT_MAX_MS,
|
|
627
|
+
target: 'victim',
|
|
628
|
+
cite: 'western_plaguelands.cpp:258,603-607 Holy Cleave init 11000-15000 re-arm 11000-13000 victim',
|
|
629
|
+
},
|
|
630
|
+
{
|
|
631
|
+
id: 'holy_strike',
|
|
632
|
+
spellId: SPELL_HOLY_STRIKE,
|
|
633
|
+
initialMinMs: TAELAN_HOLY_STRIKE_INIT_MIN_MS,
|
|
634
|
+
initialMaxMs: TAELAN_HOLY_STRIKE_INIT_MAX_MS,
|
|
635
|
+
repeatMinMs: TAELAN_HOLY_STRIKE_REPEAT_MIN_MS,
|
|
636
|
+
repeatMaxMs: TAELAN_HOLY_STRIKE_REPEAT_MAX_MS,
|
|
637
|
+
target: 'victim',
|
|
638
|
+
cite: 'western_plaguelands.cpp:259,611-615 Holy Strike init 6000-8000 re-arm 9000-14000 victim',
|
|
639
|
+
},
|
|
640
|
+
{
|
|
641
|
+
id: 'crusader_strike',
|
|
642
|
+
spellId: SPELL_CRUSADER_STRIKE,
|
|
643
|
+
initialMinMs: TAELAN_CRUSADER_STRIKE_INIT_MIN_MS,
|
|
644
|
+
initialMaxMs: TAELAN_CRUSADER_STRIKE_INIT_MAX_MS,
|
|
645
|
+
repeatMinMs: TAELAN_CRUSADER_STRIKE_REPEAT_MIN_MS,
|
|
646
|
+
repeatMaxMs: TAELAN_CRUSADER_STRIKE_REPEAT_MAX_MS,
|
|
647
|
+
target: 'victim',
|
|
648
|
+
cite: 'western_plaguelands.cpp:260,619-623 Crusader Strike init 1000-5000 re-arm 7000-12000 victim',
|
|
649
|
+
},
|
|
650
|
+
{
|
|
651
|
+
id: 'holy_light',
|
|
652
|
+
spellId: SPELL_HOLY_LIGHT,
|
|
653
|
+
initialMinMs: TAELAN_HOLY_LIGHT_INIT_MIN_MS,
|
|
654
|
+
initialMaxMs: TAELAN_HOLY_LIGHT_INIT_MAX_MS,
|
|
655
|
+
repeatMinMs: TAELAN_HOLY_LIGHT_REPEAT_MIN_MS,
|
|
656
|
+
repeatMaxMs: TAELAN_HOLY_LIGHT_REPEAT_MAX_MS,
|
|
657
|
+
target: 'self',
|
|
658
|
+
friendlyLowestHpYd: 50,
|
|
659
|
+
friendlyHpDeficit: 1,
|
|
660
|
+
hpPctMax: TAELAN_HOLY_LIGHT_HP_PCT,
|
|
661
|
+
hpPctMin: 0,
|
|
662
|
+
cite: 'western_plaguelands.cpp:261,627-638 Holy Light init 0 re-arm 10000-15000 on DoSelectLowestHpFriendly(50.0f) while his own HP < 75 %',
|
|
663
|
+
},
|
|
664
|
+
],
|
|
665
|
+
phases: [
|
|
666
|
+
{
|
|
667
|
+
phase: 1,
|
|
668
|
+
hpBelowPct: TAELAN_LAY_ON_HANDS_HP_PCT,
|
|
669
|
+
actions: [
|
|
670
|
+
{
|
|
671
|
+
kind: 'cast_self',
|
|
672
|
+
spellId: SPELL_LAY_ON_HANDS,
|
|
673
|
+
cite: 'western_plaguelands.cpp:641-642 !m_fightStarted && HP<15 Lay on Hands self (outdoor pull: fightStarted false)',
|
|
674
|
+
},
|
|
675
|
+
],
|
|
676
|
+
cite: 'western_plaguelands.cpp:641-642 Lay on Hands gate; taelanHpGates pure helper for fightStarted branch',
|
|
677
|
+
},
|
|
678
|
+
{
|
|
679
|
+
phase: 2,
|
|
680
|
+
hpBelowPct: TAELAN_DEATH_HP_PCT,
|
|
681
|
+
actions: [
|
|
682
|
+
{
|
|
683
|
+
kind: 'flavor',
|
|
684
|
+
text: 'When m_fightStarted: StartNextDialogueText(SAY_KILL_TAELAN_1) + m_taelanDead (scripted death; Isillien casts 18969). Outdoor pull without Isillien fight does not arm this path (taelanHpGates).',
|
|
685
|
+
cite: 'western_plaguelands.cpp:597-601; taelanHpGates pure helper',
|
|
686
|
+
},
|
|
687
|
+
],
|
|
688
|
+
cite: 'western_plaguelands.cpp:597-601 fightStarted && HP<50 scripted death (not a real die)',
|
|
689
|
+
},
|
|
690
|
+
],
|
|
691
|
+
lifecycle: {
|
|
692
|
+
onAggro: [
|
|
693
|
+
{
|
|
694
|
+
kind: 'cast_self',
|
|
695
|
+
spellId: SPELL_DEVOTION_AURA,
|
|
696
|
+
cite: 'western_plaguelands.cpp:269 DoCastSpellIfCan(self, SPELL_DEVOTION_AURA)',
|
|
697
|
+
},
|
|
698
|
+
{
|
|
699
|
+
kind: 'flavor',
|
|
700
|
+
text: 'Unmount if m_hasMount',
|
|
701
|
+
cite: 'western_plaguelands.cpp:266-267',
|
|
702
|
+
},
|
|
703
|
+
],
|
|
704
|
+
onEvade: [
|
|
705
|
+
{
|
|
706
|
+
kind: 'flavor',
|
|
707
|
+
text: 'm_taelanDead → fake-death stand state UNINTERACTIBLE; else remount if m_hasMount + escort evade',
|
|
708
|
+
cite: 'western_plaguelands.cpp:280-307 EnterEvadeMode',
|
|
709
|
+
},
|
|
710
|
+
],
|
|
711
|
+
onReset: [
|
|
712
|
+
{
|
|
713
|
+
kind: 'flavor',
|
|
714
|
+
text: 'Holy Cleave 11-15s; Holy Strike 6-8s; Crusader Strike 1-5s; Holy Light timer 0',
|
|
715
|
+
cite: 'western_plaguelands.cpp:256-262 Reset',
|
|
716
|
+
},
|
|
717
|
+
],
|
|
718
|
+
},
|
|
719
|
+
cites: [
|
|
720
|
+
'western_plaguelands.cpp:108-667 npc_taelan_fordring',
|
|
721
|
+
'western_plaguelands.cpp:148-155 spell ids',
|
|
722
|
+
'western_plaguelands.cpp:256-262 Reset combat timers',
|
|
723
|
+
'western_plaguelands.cpp:264-270 Aggro Devotion Aura',
|
|
724
|
+
'western_plaguelands.cpp:319-337 ReceiveAIEvent START_ESCORT / CUSTOM_A / CUSTOM_B',
|
|
725
|
+
'western_plaguelands.cpp:340-355 WaypointReached WP26/56',
|
|
726
|
+
'western_plaguelands.cpp:394-570 JustDidDialogueStep',
|
|
727
|
+
'western_plaguelands.cpp:586-645 UpdateEscortAI combat + 50% death + Lay on Hands',
|
|
728
|
+
'western_plaguelands.cpp:653-667 QuestAccept 5944 / QuestRewarded 5862',
|
|
729
|
+
],
|
|
730
|
+
};
|
|
731
|
+
|
|
732
|
+
// npc_isillien
|
|
733
|
+
|
|
734
|
+
// npc_isillienAI, creature 1840 — ABSENT from bake, so the binding is unused. Mind Blast, Mind
|
|
735
|
+
// Flay, Mana Burn, Dominate Mind, Flash Heal and a self Greater Heal below 50%.
|
|
736
|
+
export const NPC_ISILLIEN_SCRIPT: ScriptDevIR = {
|
|
737
|
+
name: 'npc_isillien',
|
|
738
|
+
boundCreatures: [NPC_ISILLIEN],
|
|
739
|
+
sourceFile: 'eastern_kingdoms/western_plaguelands.cpp',
|
|
740
|
+
spellIds: [
|
|
741
|
+
SPELL_DOMINATE_MIND,
|
|
742
|
+
SPELL_FLASH_HEAL,
|
|
743
|
+
SPELL_GREATER_HEAL,
|
|
744
|
+
SPELL_MANA_BURN,
|
|
745
|
+
SPELL_MIND_BLAST,
|
|
746
|
+
SPELL_MIND_FLAY,
|
|
747
|
+
SPELL_TAELAN_DEATH,
|
|
748
|
+
],
|
|
749
|
+
timers: [
|
|
750
|
+
{
|
|
751
|
+
id: 'mind_blast',
|
|
752
|
+
spellId: SPELL_MIND_BLAST,
|
|
753
|
+
initialMinMs: ISILLIEN_MIND_BLAST_INIT_MIN_MS,
|
|
754
|
+
initialMaxMs: ISILLIEN_MIND_BLAST_INIT_MAX_MS,
|
|
755
|
+
repeatMinMs: ISILLIEN_MIND_BLAST_REPEAT_MIN_MS,
|
|
756
|
+
repeatMaxMs: ISILLIEN_MIND_BLAST_REPEAT_MAX_MS,
|
|
757
|
+
target: 'victim',
|
|
758
|
+
cite: 'western_plaguelands.cpp:717,788-792 Mind Blast init 0-1000 re-arm 3000-5000 victim',
|
|
759
|
+
},
|
|
760
|
+
{
|
|
761
|
+
id: 'mind_flay',
|
|
762
|
+
spellId: SPELL_MIND_FLAY,
|
|
763
|
+
initialMinMs: ISILLIEN_MIND_FLAY_INIT_MIN_MS,
|
|
764
|
+
initialMaxMs: ISILLIEN_MIND_FLAY_INIT_MAX_MS,
|
|
765
|
+
repeatMinMs: ISILLIEN_MIND_FLAY_REPEAT_MIN_MS,
|
|
766
|
+
repeatMaxMs: ISILLIEN_MIND_FLAY_REPEAT_MAX_MS,
|
|
767
|
+
target: 'victim',
|
|
768
|
+
cite: 'western_plaguelands.cpp:718,796-800 Mind Flay init 3000-7000 re-arm 9000-15000 victim',
|
|
769
|
+
},
|
|
770
|
+
{
|
|
771
|
+
id: 'mana_burn',
|
|
772
|
+
spellId: SPELL_MANA_BURN,
|
|
773
|
+
initialMinMs: ISILLIEN_MANA_BURN_INIT_MIN_MS,
|
|
774
|
+
initialMaxMs: ISILLIEN_MANA_BURN_INIT_MAX_MS,
|
|
775
|
+
repeatMinMs: ISILLIEN_MANA_BURN_REPEAT_MIN_MS,
|
|
776
|
+
repeatMaxMs: ISILLIEN_MANA_BURN_REPEAT_MAX_MS,
|
|
777
|
+
target: 'victim',
|
|
778
|
+
cite: 'western_plaguelands.cpp:714,804-808 Mana Burn init 7000-12000 re-arm 8000-12000 victim',
|
|
779
|
+
},
|
|
780
|
+
{
|
|
781
|
+
id: 'dominate_mind',
|
|
782
|
+
spellId: SPELL_DOMINATE_MIND,
|
|
783
|
+
initialMinMs: ISILLIEN_DOMINATE_INIT_MIN_MS,
|
|
784
|
+
initialMaxMs: ISILLIEN_DOMINATE_INIT_MAX_MS,
|
|
785
|
+
repeatMinMs: ISILLIEN_DOMINATE_REPEAT_MIN_MS,
|
|
786
|
+
repeatMaxMs: ISILLIEN_DOMINATE_REPEAT_MAX_MS,
|
|
787
|
+
target: 'hostile_random_not_top_player',
|
|
788
|
+
select: { playerOnly: true, skipTopThreat: true },
|
|
789
|
+
cite: 'western_plaguelands.cpp:716,812-818 Dominate Mind SelectAttackingTarget RANDOM,1 PLAYER init 10000-14000 re-arm 25000-30000',
|
|
790
|
+
},
|
|
791
|
+
{
|
|
792
|
+
id: 'flash_heal',
|
|
793
|
+
spellId: SPELL_FLASH_HEAL,
|
|
794
|
+
initialMinMs: ISILLIEN_FLASH_HEAL_INIT_MIN_MS,
|
|
795
|
+
initialMaxMs: ISILLIEN_FLASH_HEAL_INIT_MAX_MS,
|
|
796
|
+
repeatMinMs: ISILLIEN_FLASH_HEAL_REPEAT_MIN_MS,
|
|
797
|
+
repeatMaxMs: ISILLIEN_FLASH_HEAL_REPEAT_MAX_MS,
|
|
798
|
+
target: 'self',
|
|
799
|
+
friendlyLowestHpYd: 50,
|
|
800
|
+
friendlyHpDeficit: 1,
|
|
801
|
+
cite: 'western_plaguelands.cpp:715,821-829 Flash Heal init 10000-15000 re-arm 10000-15000 on DoSelectLowestHpFriendly(50.0f)',
|
|
802
|
+
},
|
|
803
|
+
{
|
|
804
|
+
id: 'greater_heal',
|
|
805
|
+
spellId: SPELL_GREATER_HEAL,
|
|
806
|
+
initialMinMs: ISILLIEN_GREATER_HEAL_INIT_MIN_MS,
|
|
807
|
+
initialMaxMs: ISILLIEN_GREATER_HEAL_INIT_MAX_MS,
|
|
808
|
+
repeatMinMs: ISILLIEN_GREATER_HEAL_REPEAT_MIN_MS,
|
|
809
|
+
repeatMaxMs: ISILLIEN_GREATER_HEAL_REPEAT_MAX_MS,
|
|
810
|
+
target: 'self',
|
|
811
|
+
hpPctMax: ISILLIEN_GREATER_HEAL_HP_PCT,
|
|
812
|
+
hpPctMin: 0,
|
|
813
|
+
cite: 'western_plaguelands.cpp:719,834-842 Greater Heal self while HP<50 init 0 re-arm 15000-20000',
|
|
814
|
+
},
|
|
815
|
+
],
|
|
816
|
+
phases: [
|
|
817
|
+
{
|
|
818
|
+
phase: 1,
|
|
819
|
+
hpBelowPct: ISILLIEN_TIRION_EARLY_HP_PCT,
|
|
820
|
+
actions: [
|
|
821
|
+
{
|
|
822
|
+
kind: 'flavor',
|
|
823
|
+
text: 'SendAIEvent CUSTOM_B to Taelan → SummonCreature Tirion 12126 (if !m_tirionSpawned); isillienTirionSpawnTick pure helper also arms on 120s timer after Taelan Death',
|
|
824
|
+
cite: 'western_plaguelands.cpp:775-779',
|
|
825
|
+
},
|
|
826
|
+
],
|
|
827
|
+
cite: 'western_plaguelands.cpp:775 HP<20 early Tirion spawn gate',
|
|
828
|
+
},
|
|
829
|
+
],
|
|
830
|
+
lifecycle: {
|
|
831
|
+
onReset: [
|
|
832
|
+
{
|
|
833
|
+
kind: 'flavor',
|
|
834
|
+
text: 'Mana Burn 7-12s; Flash Heal 10-15s; Dominate 10-14s; Mind Blast 0-1s; Mind Flay 3-7s; Greater Heal timer 0',
|
|
835
|
+
cite: 'western_plaguelands.cpp:712-720 Reset',
|
|
836
|
+
},
|
|
837
|
+
],
|
|
838
|
+
onEvade: [
|
|
839
|
+
{
|
|
840
|
+
kind: 'flavor',
|
|
841
|
+
text: 'm_taelanDead → idle evade keep position; else escort evade',
|
|
842
|
+
cite: 'western_plaguelands.cpp:727-742 EnterEvadeMode',
|
|
843
|
+
},
|
|
844
|
+
],
|
|
845
|
+
},
|
|
846
|
+
unusedBindings: [
|
|
847
|
+
{
|
|
848
|
+
entry: NPC_ISILLIEN,
|
|
849
|
+
kind: 'creature',
|
|
850
|
+
reason:
|
|
851
|
+
'NPC 1840 Grand Inquisitor Isillien is ScriptName-bound in DB but absent from product bake - IR + combat timers + isillienTirionSpawnTick / isillienReceiveCustomA pure helpers ported; summoned mid-5944 at ISILLIEN_SPAWN coords',
|
|
852
|
+
cite: 'western_plaguelands.cpp:684-852; loadRealBundle missing 1840',
|
|
853
|
+
},
|
|
854
|
+
],
|
|
855
|
+
cites: [
|
|
856
|
+
'western_plaguelands.cpp:684-852 npc_isillien',
|
|
857
|
+
'western_plaguelands.cpp:158-164 Isillien spell ids',
|
|
858
|
+
'western_plaguelands.cpp:712-720 Reset',
|
|
859
|
+
'western_plaguelands.cpp:744-760 ReceiveAIEvent START_ESCORT / CUSTOM_A Taelan Death',
|
|
860
|
+
'western_plaguelands.cpp:772-846 UpdateEscortAI Tirion timer + combat',
|
|
861
|
+
'western_plaguelands.cpp:757 m_summonTirionTimer=120000',
|
|
862
|
+
'western_plaguelands.cpp:669-682 TaelanDeath spell script EnterEvadeMode both',
|
|
863
|
+
],
|
|
864
|
+
};
|
|
865
|
+
|
|
866
|
+
// npc_tirion_fordring
|
|
867
|
+
|
|
868
|
+
// npc_tirion_fordringAI, creature 12126 — ABSENT from bake, so the binding is unused. Holy Cleave
|
|
869
|
+
// 11–15s/12–15s, Holy Strike 6–8s/8–11s, Crusader Strike 1–5s/7–9s, Devotion Aura on aggro.
|
|
870
|
+
export const NPC_TIRION_FORDRING_SCRIPT: ScriptDevIR = {
|
|
871
|
+
name: 'npc_tirion_fordring',
|
|
872
|
+
boundCreatures: [NPC_TIRION_FORDRING],
|
|
873
|
+
sourceFile: 'eastern_kingdoms/western_plaguelands.cpp',
|
|
874
|
+
spellIds: [
|
|
875
|
+
SPELL_DEVOTION_AURA,
|
|
876
|
+
SPELL_CRUSADER_STRIKE,
|
|
877
|
+
SPELL_HOLY_STRIKE,
|
|
878
|
+
SPELL_HOLY_CLEAVE,
|
|
879
|
+
],
|
|
880
|
+
timers: [
|
|
881
|
+
{
|
|
882
|
+
id: 'holy_cleave',
|
|
883
|
+
spellId: SPELL_HOLY_CLEAVE,
|
|
884
|
+
initialMinMs: TIRION_HOLY_CLEAVE_INIT_MIN_MS,
|
|
885
|
+
initialMaxMs: TIRION_HOLY_CLEAVE_INIT_MAX_MS,
|
|
886
|
+
repeatMinMs: TIRION_HOLY_CLEAVE_REPEAT_MIN_MS,
|
|
887
|
+
repeatMaxMs: TIRION_HOLY_CLEAVE_REPEAT_MAX_MS,
|
|
888
|
+
target: 'victim',
|
|
889
|
+
cite: 'western_plaguelands.cpp:870,950-954 Holy Cleave init 11000-15000 re-arm 12000-15000 victim',
|
|
890
|
+
},
|
|
891
|
+
{
|
|
892
|
+
id: 'holy_strike',
|
|
893
|
+
spellId: SPELL_HOLY_STRIKE,
|
|
894
|
+
initialMinMs: TIRION_HOLY_STRIKE_INIT_MIN_MS,
|
|
895
|
+
initialMaxMs: TIRION_HOLY_STRIKE_INIT_MAX_MS,
|
|
896
|
+
repeatMinMs: TIRION_HOLY_STRIKE_REPEAT_MIN_MS,
|
|
897
|
+
repeatMaxMs: TIRION_HOLY_STRIKE_REPEAT_MAX_MS,
|
|
898
|
+
target: 'victim',
|
|
899
|
+
cite: 'western_plaguelands.cpp:871,958-962 Holy Strike init 6000-8000 re-arm 8000-11000 victim',
|
|
900
|
+
},
|
|
901
|
+
{
|
|
902
|
+
id: 'crusader_strike',
|
|
903
|
+
spellId: SPELL_CRUSADER_STRIKE,
|
|
904
|
+
initialMinMs: TIRION_CRUSADER_STRIKE_INIT_MIN_MS,
|
|
905
|
+
initialMaxMs: TIRION_CRUSADER_STRIKE_INIT_MAX_MS,
|
|
906
|
+
repeatMinMs: TIRION_CRUSADER_STRIKE_REPEAT_MIN_MS,
|
|
907
|
+
repeatMaxMs: TIRION_CRUSADER_STRIKE_REPEAT_MAX_MS,
|
|
908
|
+
target: 'victim',
|
|
909
|
+
cite: 'western_plaguelands.cpp:872,966-970 Crusader Strike init 1000-5000 re-arm 7000-9000 victim',
|
|
910
|
+
},
|
|
911
|
+
],
|
|
912
|
+
lifecycle: {
|
|
913
|
+
onAggro: [
|
|
914
|
+
{
|
|
915
|
+
kind: 'cast_self',
|
|
916
|
+
spellId: SPELL_DEVOTION_AURA,
|
|
917
|
+
cite: 'western_plaguelands.cpp:877 DoCastSpellIfCan(self, SPELL_DEVOTION_AURA)',
|
|
918
|
+
},
|
|
919
|
+
],
|
|
920
|
+
onReset: [
|
|
921
|
+
{
|
|
922
|
+
kind: 'flavor',
|
|
923
|
+
text: 'Holy Cleave 11-15s; Holy Strike 6-8s; Crusader Strike 1-5s',
|
|
924
|
+
cite: 'western_plaguelands.cpp:868-873 Reset',
|
|
925
|
+
},
|
|
926
|
+
],
|
|
927
|
+
onEvade: [
|
|
928
|
+
{
|
|
929
|
+
kind: 'flavor',
|
|
930
|
+
text: 'MovePoint(200) to Taelan contact for epilogue dialogue',
|
|
931
|
+
cite: 'western_plaguelands.cpp:885-899 EnterEvadeMode',
|
|
932
|
+
},
|
|
933
|
+
],
|
|
934
|
+
},
|
|
935
|
+
unusedBindings: [
|
|
936
|
+
{
|
|
937
|
+
entry: NPC_TIRION_FORDRING,
|
|
938
|
+
kind: 'creature',
|
|
939
|
+
reason:
|
|
940
|
+
'NPC 12126 Lord Tirion Fordring is ScriptName-bound in DB but absent from product bake - IR + combat timers ported; mid-5944 summon at TIRION_SPAWN; bake quest ender 1855 Tirion Fordring is a different template (no ScriptDev combat AI)',
|
|
941
|
+
cite: 'western_plaguelands.cpp:854-981; loadRealBundle missing 12126, has 1855',
|
|
942
|
+
},
|
|
943
|
+
],
|
|
944
|
+
cites: [
|
|
945
|
+
'western_plaguelands.cpp:854-981 npc_tirion_fordring',
|
|
946
|
+
'western_plaguelands.cpp:868-873 Reset combat timers',
|
|
947
|
+
'western_plaguelands.cpp:875-878 Aggro Devotion Aura',
|
|
948
|
+
'western_plaguelands.cpp:902-912 ReceiveAIEvent START_ESCORT',
|
|
949
|
+
'western_plaguelands.cpp:914-933 WaypointReached WP3 unmount + MovePoint Taelan',
|
|
950
|
+
'western_plaguelands.cpp:944-975 UpdateEscortAI combat',
|
|
951
|
+
],
|
|
952
|
+
};
|