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,1501 @@
|
|
|
1
|
+
// Side intents from CMaNGOS specials that are not represented as bake SpellEffect kinds. Live combat (SI5+)
|
|
2
|
+
// can consume these; oracle ignores them (diff compares effects only).
|
|
3
|
+
export type InterpretIntent =
|
|
4
|
+
| {
|
|
5
|
+
kind: 'consume_aura';
|
|
6
|
+
/** Prefer matching this spell id when set (Swiftmend picked aura). */
|
|
7
|
+
spellId?: number;
|
|
8
|
+
spellFamilyName: number;
|
|
9
|
+
spellFamilyFlags: number;
|
|
10
|
+
auraType: number;
|
|
11
|
+
casterOnly?: boolean;
|
|
12
|
+
/** 1 → RemoveAuraHolderFromStack; unset → RemoveAurasDueToSpell. */
|
|
13
|
+
stacks?: number;
|
|
14
|
+
}
|
|
15
|
+
| { kind: 'zero_energy' }
|
|
16
|
+
| { kind: 'threat_percent'; percent: number; target: 'unit' }
|
|
17
|
+
| { kind: 'skip_effect'; reason: string }
|
|
18
|
+
| {
|
|
19
|
+
kind: 'max_stack_trigger';
|
|
20
|
+
/** Spell id to cast for max-stack apply (Brittle Armor 24575, Mercurial 26464). */
|
|
21
|
+
spellId: number;
|
|
22
|
+
}
|
|
23
|
+
| {
|
|
24
|
+
// SPELL_AURA_MOD_DAMAGE_DONE_CREATURE (59): flat damage vs a creature-type mask.
|
|
25
|
+
// Cite: Unit.cpp:7061 SpellDamageBonusDone; :7465 MeleeDamageBonusDone.
|
|
26
|
+
kind: 'mod_damage_done_creature';
|
|
27
|
+
amount: number;
|
|
28
|
+
/** SharedDefines.h CREATURE_TYPE_MASK_*. */
|
|
29
|
+
creatureTypeMask: number;
|
|
30
|
+
durationMs: number;
|
|
31
|
+
}
|
|
32
|
+
| {
|
|
33
|
+
// TRIGGER_SPELL custom targeting: formal caster = unitTarget (Lash 6608). Cite:
|
|
34
|
+
// SpellEffects.cpp:1608–1612 EffectTriggerSpell.
|
|
35
|
+
kind: 'trigger_spell_as_unit_target';
|
|
36
|
+
spellId: number;
|
|
37
|
+
}
|
|
38
|
+
| {
|
|
39
|
+
// A custom cast with forced base points. Multi-effect customs pass the parent spell id or extra
|
|
40
|
+
// points in the later slots. Cite: SpellAuras.cpp:3468-3469; SpellEffects.cpp:4161.
|
|
41
|
+
kind: 'cast_custom_spell';
|
|
42
|
+
spellId: number;
|
|
43
|
+
/** Effect 0 base points override (signed). */
|
|
44
|
+
bp0: number;
|
|
45
|
+
/** Effect 1 base points override when set (HL/FoL parent spell id, etc.). */
|
|
46
|
+
bp1?: number;
|
|
47
|
+
/** Effect 2 base points override when set. */
|
|
48
|
+
bp2?: number;
|
|
49
|
+
}
|
|
50
|
+
| {
|
|
51
|
+
// A plain cast from a dummy or class script, with no custom base points — the Holy Shock branch
|
|
52
|
+
// and the judgement intermediates. Cite: SpellEffects.cpp:1449-1452.
|
|
53
|
+
kind: 'cast_spell';
|
|
54
|
+
spellId: number;
|
|
55
|
+
}
|
|
56
|
+
| {
|
|
57
|
+
// CastSpell(id, TRIGGERED_*) without custom basepoints. Cite: SpellEffects.cpp Blood Fury 23230;
|
|
58
|
+
// Cannibalize 20578.
|
|
59
|
+
kind: 'cast_triggered_spell';
|
|
60
|
+
spellId: number;
|
|
61
|
+
}
|
|
62
|
+
| {
|
|
63
|
+
// Creature::setFaction from an instance-script dummy. The creature comes from instance storage, not
|
|
64
|
+
// spell targeting. Cite: instance_dire_maul.cpp:670-681 GuardSlipkikTrigger.
|
|
65
|
+
kind: 'set_creature_faction';
|
|
66
|
+
creatureEntry: number;
|
|
67
|
+
factionId: number;
|
|
68
|
+
}
|
|
69
|
+
// ── SI3 batch 1 intents (bake empty / non-effect surfaces) ──────────────
|
|
70
|
+
| {
|
|
71
|
+
/** SPELL_EFFECT_LEARN_SPELL (36). Cite: SpellEffects.cpp:2445–2465 / EffectLearnPetSpell :3386. */
|
|
72
|
+
kind: 'learn_spell';
|
|
73
|
+
spellId: number;
|
|
74
|
+
/** Player unitTarget learns; non-player + player caster → pet path. */
|
|
75
|
+
target: 'player' | 'pet';
|
|
76
|
+
}
|
|
77
|
+
| {
|
|
78
|
+
/** SPELL_EFFECT_ENCHANT_ITEM (53). Bake honest-inert; misc = SpellItemEnchantment id. */
|
|
79
|
+
kind: 'enchant_item_perm';
|
|
80
|
+
enchantId: number;
|
|
81
|
+
}
|
|
82
|
+
| {
|
|
83
|
+
/** SPELL_EFFECT_SUMMON_WILD (41). Cite: SpellEffects.cpp:2729+. */
|
|
84
|
+
kind: 'summon_wild';
|
|
85
|
+
creature: number;
|
|
86
|
+
count: number;
|
|
87
|
+
durationMs: number;
|
|
88
|
+
/** Resolved level when ctx supplies casterLevel / creature level bounds. */
|
|
89
|
+
level?: number;
|
|
90
|
+
radiusIndex: number;
|
|
91
|
+
}
|
|
92
|
+
| {
|
|
93
|
+
// Guardian summon extras: level, engineering skill and replace. The combat surface is the summon
|
|
94
|
+
// effect with its creature, count and duration. Cite: SpellEffects.cpp:2820.
|
|
95
|
+
kind: 'summon_guardian';
|
|
96
|
+
creature: number;
|
|
97
|
+
count: number;
|
|
98
|
+
durationMs: number;
|
|
99
|
+
// Player non-triggered recast unsummons existing guardians of this entry first; if found and spell
|
|
100
|
+
// has no DurationIndex+Category, effect ends (no re-summon).
|
|
101
|
+
replaceExisting: boolean;
|
|
102
|
+
level?: number;
|
|
103
|
+
/** Engineering trinket cast: level = skill/5 when set. */
|
|
104
|
+
engineeringSkillLevel?: number;
|
|
105
|
+
}
|
|
106
|
+
| {
|
|
107
|
+
/** SPELL_EFFECT_SUMMON_OBJECT_WILD (76). Cite: SpellEffects.cpp:3620+. */
|
|
108
|
+
kind: 'summon_object_wild';
|
|
109
|
+
goEntry: number;
|
|
110
|
+
/** Respawn time seconds from spell duration (m_duration / IN_MILLISECONDS). */
|
|
111
|
+
durationMs: number;
|
|
112
|
+
}
|
|
113
|
+
| {
|
|
114
|
+
// SPELL_EFFECT_KNOCK_BACK (98). horizontal = EffectMiscValue/10, vertical = damage/10. Cite:
|
|
115
|
+
// SpellEffects.cpp:5113–5121.
|
|
116
|
+
kind: 'knock_back';
|
|
117
|
+
horizontal: number;
|
|
118
|
+
vertical: number;
|
|
119
|
+
}
|
|
120
|
+
| {
|
|
121
|
+
// Open lock, shared between the spell and item forms: the amount is the LOCK SKILL, and the item
|
|
122
|
+
// flag picks the path. Cite: SpellEffects.cpp:2204.
|
|
123
|
+
kind: 'open_lock';
|
|
124
|
+
skillBonus: number;
|
|
125
|
+
fromItem: boolean;
|
|
126
|
+
/** EffectMiscValue = LockType when non-zero. */
|
|
127
|
+
lockType?: number;
|
|
128
|
+
}
|
|
129
|
+
| {
|
|
130
|
+
/** SPELL_EFFECT_SEND_EVENT (61). StartEvents_Event(misc). Cite: SpellEffects.cpp:1794–1798. */
|
|
131
|
+
kind: 'send_event';
|
|
132
|
+
eventId: number;
|
|
133
|
+
}
|
|
134
|
+
// ── SI3 batch 2 intents ─────────────────────────────────────────────────
|
|
135
|
+
| {
|
|
136
|
+
// SPELL_EFFECT_SUMMON_CRITTER (97) — mini-pet / companion. Same-entry player recast despawns only
|
|
137
|
+
// (count 0). Cite: SpellEffects.cpp:5031–5111.
|
|
138
|
+
kind: 'summon_critter';
|
|
139
|
+
creature: number;
|
|
140
|
+
durationMs: number;
|
|
141
|
+
/** True when same entry already summoned → RemoveMiniPet only. */
|
|
142
|
+
despawnOnly: boolean;
|
|
143
|
+
}
|
|
144
|
+
| {
|
|
145
|
+
// SPELL_EFFECT_ACTIVATE_OBJECT (86). action = EffectMiscValue as GameObjectActions. Cite:
|
|
146
|
+
// SpellEffects.cpp:4377–4482; GameObject.h GameObjectActions.
|
|
147
|
+
kind: 'activate_object';
|
|
148
|
+
action: number;
|
|
149
|
+
// Twilight Council MAKE_ACTIVE/MAKE_INERT summon table (spell id → NPC entry). Random rolls
|
|
150
|
+
// (24734/24763/24784) need ctx.rng; fixed ids listed without roll.
|
|
151
|
+
summonNpcEntry?: number;
|
|
152
|
+
/** Onyxia Eruption 17731 OPEN/DISTURB → custom anim instead of Use. */
|
|
153
|
+
customAnim?: boolean;
|
|
154
|
+
}
|
|
155
|
+
| {
|
|
156
|
+
// SPELL_EFFECT_TRANS_DOOR (50) EffectTransmitted — summon GameObject by entry. Cite:
|
|
157
|
+
// SpellEffects.cpp:5271–5420.
|
|
158
|
+
kind: 'transmitted_object';
|
|
159
|
+
goEntry: number;
|
|
160
|
+
durationMs: number;
|
|
161
|
+
// When ctx.gameObjectType is set, mirror type specials (fishing bobber duration offset, summoning
|
|
162
|
+
// ritual at caster, …). Omit type → generic Create path.
|
|
163
|
+
goType?: number;
|
|
164
|
+
/** Fishing bobber: duration reduced by lastSec then + FISHING_BOBBER_READY_TIME*1000. */
|
|
165
|
+
fishingBobberLastSec?: number;
|
|
166
|
+
}
|
|
167
|
+
| {
|
|
168
|
+
// Devour Magic on successful dispel — CastSpell(heal). Cite: SpellEffects.cpp:2596–2612. Fires only
|
|
169
|
+
// after at least one aura is removed (runtime EvaluateResultLists).
|
|
170
|
+
kind: 'devour_magic_heal';
|
|
171
|
+
healSpellId: number;
|
|
172
|
+
}
|
|
173
|
+
// ── SI3 batch 3 intents ─────────────────────────────────────────────────
|
|
174
|
+
| {
|
|
175
|
+
// SPELL_EFFECT_INSTAKILL (1). DealDamage(target health, INSTAKILL). Cite: SpellEffects.cpp:205–221.
|
|
176
|
+
kind: 'instakill';
|
|
177
|
+
/** Caster == unitTarget → finish() before damage (interrupt message suppress). */
|
|
178
|
+
selfCast?: boolean;
|
|
179
|
+
}
|
|
180
|
+
| {
|
|
181
|
+
// SPELL_EFFECT_SUMMON_PET (56) full body beyond bake `{ kind: 'summon_pet' }`. Cite:
|
|
182
|
+
// SpellEffects.cpp:3227–3384.
|
|
183
|
+
kind: 'summon_class_pet';
|
|
184
|
+
creature: number;
|
|
185
|
+
// hunter → LoadPetFromDB only; warlock → remove Demonic Sacrifice 2228 then load/create;
|
|
186
|
+
// player_default → unsummon + load/create SUMMON_PET; npc → GUARDIAN_PET + level offset.
|
|
187
|
+
path: 'hunter' | 'warlock' | 'player_default' | 'npc_guardian';
|
|
188
|
+
/** Non-player: level = casterLevel + max(multipleValue, 1) when in range. */
|
|
189
|
+
level?: number;
|
|
190
|
+
}
|
|
191
|
+
| {
|
|
192
|
+
// SPELL_EFFECT_PROFICIENCY (60). Add weapon/armor proficiency mask for player. Cite:
|
|
193
|
+
// SpellEffects.cpp:2314–2331; ItemPrototype.h ITEM_CLASS_WEAPON=2, ARMOR=4.
|
|
194
|
+
kind: 'proficiency';
|
|
195
|
+
itemClass: number;
|
|
196
|
+
subClassMask: number;
|
|
197
|
+
}
|
|
198
|
+
| {
|
|
199
|
+
// SPELL_EFFECT_DISPEL_MECHANIC (108). Remove auras with mechanic == misc. count from effect amount (0
|
|
200
|
+
// → 1 via ProcessDispelList). Cite: SpellEffects.cpp:2499–2519 / ProcessDispelList :2521–2575.
|
|
201
|
+
kind: 'dispel_mechanic';
|
|
202
|
+
mechanic: number;
|
|
203
|
+
count: number;
|
|
204
|
+
}
|
|
205
|
+
| {
|
|
206
|
+
// SPELL_EFFECT_QUEST_COMPLETE (16). AreaExploredOrEventHappens(quest_id). Cite:
|
|
207
|
+
// SpellEffects.cpp:4928–4935.
|
|
208
|
+
kind: 'quest_complete';
|
|
209
|
+
questId: number;
|
|
210
|
+
}
|
|
211
|
+
| {
|
|
212
|
+
// SPELL_EFFECT_TELEPORT_GRAVEYARD (120). Nearest graveyard the target's team owns. Cite:
|
|
213
|
+
// SpellEffects.cpp EffectTeleportGraveyard; BattleGround.h:85.
|
|
214
|
+
kind: 'teleport_graveyard';
|
|
215
|
+
}
|
|
216
|
+
| {
|
|
217
|
+
// SPELL_EFFECT_CHARGE (96). MoveCharge(target, speed); optional auto-attack. speed = SpellEntry.speed
|
|
218
|
+
// != 0 ? speed : BASE_CHARGE_SPEED (27). Cite: SpellEffects.cpp:5009–5028; Unit.h BASE_CHARGE_SPEED.
|
|
219
|
+
kind: 'charge';
|
|
220
|
+
speed: number;
|
|
221
|
+
/** Client-controlled caster + CanAttack → Attack(target). */
|
|
222
|
+
initiateAutoAttack: boolean;
|
|
223
|
+
}
|
|
224
|
+
| {
|
|
225
|
+
// SPELL_EFFECT_RESURRECT_NEW (113) via EffectResurrect. health = damage (flat), mana =
|
|
226
|
+
// EffectMiscValue. Cite: SpellEffects.cpp:4797–4871.
|
|
227
|
+
kind: 'resurrect_new';
|
|
228
|
+
health: number;
|
|
229
|
+
mana: number;
|
|
230
|
+
}
|
|
231
|
+
| {
|
|
232
|
+
// SPELL_EFFECT_TELEPORT_UNITS (5). NearTeleport / TeleportTo dest. Requires TARGET_FLAG_DEST_LOCATION
|
|
233
|
+
// at cast time. Cite: SpellEffects.cpp:1683–1728; SpellTargetDefines TARGET_LOCATION_DATABASE=17.
|
|
234
|
+
kind: 'teleport_units';
|
|
235
|
+
targetA: number;
|
|
236
|
+
targetB: number;
|
|
237
|
+
/** When set and differs from unit map → cross-map player TeleportTo. */
|
|
238
|
+
mapId?: number;
|
|
239
|
+
/** unitTarget taxi flying → early return. */
|
|
240
|
+
skippedTaxiFlying?: boolean;
|
|
241
|
+
}
|
|
242
|
+
// ── SI3 batch 4 intents ─────────────────────────────────────────────────
|
|
243
|
+
| {
|
|
244
|
+
// SPELL_EFFECT_SPAWN (46). Clear UNIT_FLAG_SPAWNING for spell ids 15750 / 26262. Other spawn spells
|
|
245
|
+
// are empty (client animation markers). Cite: SpellEffects.cpp:3037–3046.
|
|
246
|
+
kind: 'spawn';
|
|
247
|
+
/** True when this spell id removes UNIT_FLAG_SPAWNING on the caster. */
|
|
248
|
+
clearSpawningFlag: boolean;
|
|
249
|
+
}
|
|
250
|
+
| {
|
|
251
|
+
// SPELL_EFFECT_WEAPON (25) EffectEmpty — proficiency / usability marker only. Cite:
|
|
252
|
+
// SpellEffects.cpp:190–193 EffectEmpty; dispatch table :83.
|
|
253
|
+
kind: 'weapon_marker';
|
|
254
|
+
}
|
|
255
|
+
| {
|
|
256
|
+
// SPELL_EFFECT_SUMMON_OBJECT_SLOT1–4 (104–107) EffectSummonObject. Replaces prior GO in
|
|
257
|
+
// m_ObjectSlotGuid[slot]; SLOT1→0 SLOT2→1. Cite: SpellEffects.cpp:4734–4790; Unit.h:1979.
|
|
258
|
+
kind: 'summon_object_slot';
|
|
259
|
+
goEntry: number;
|
|
260
|
+
/** 0..3 object slot index. */
|
|
261
|
+
slot: number;
|
|
262
|
+
durationMs: number;
|
|
263
|
+
}
|
|
264
|
+
| {
|
|
265
|
+
// SPELL_EFFECT_ENCHANT_HELD_ITEM (92). Temp enchant on target player main-hand. duration cascade:
|
|
266
|
+
// m_duration → base points → 10s; stored as seconds×1000. Cite: SpellEffects.cpp:4585–4635.
|
|
267
|
+
kind: 'enchant_held_item';
|
|
268
|
+
enchantId: number;
|
|
269
|
+
durationMs: number;
|
|
270
|
+
// Improved Weapon Totems (family mask 0x4000000): Windfury/Flametongue dummy modifier from owner
|
|
271
|
+
// auras 29192/29193 when supplied on ctx.
|
|
272
|
+
enchantmentModifier?: number;
|
|
273
|
+
}
|
|
274
|
+
| {
|
|
275
|
+
// SPELL_EFFECT_INEBRIATE (100). drunk += damage×256, clamp 0xFFFF. Cite: SpellEffects.cpp:4666–4678.
|
|
276
|
+
kind: 'inebriate';
|
|
277
|
+
/** damage * 256 added to current drunk value. */
|
|
278
|
+
drunkMod: number;
|
|
279
|
+
/** Resulting drunk value when ctx.currentDrunk provided; else omit. */
|
|
280
|
+
newDrunk?: number;
|
|
281
|
+
/** Cast-item entry passed to SetDrunkValue when available. */
|
|
282
|
+
castItemEntry?: number;
|
|
283
|
+
}
|
|
284
|
+
// ── SI3 batch 5 intents ─────────────────────────────────────────────────
|
|
285
|
+
| {
|
|
286
|
+
// SPELL_EFFECT_SUMMON (28) full body beyond bake `{ kind: 'summon_pet' }`. Creates GUARDIAN_PET;
|
|
287
|
+
// early out if caster already has pet guid. Cite: SpellEffects.cpp:2343–2443.
|
|
288
|
+
kind: 'summon_guardian_pet';
|
|
289
|
+
creature: number;
|
|
290
|
+
durationMs: number;
|
|
291
|
+
/** Non-player: level = casterLevel + max(multipleValue, 1) when in range. */
|
|
292
|
+
level?: number;
|
|
293
|
+
/** True when GetPetGuid early-out (no summon). Cite: :2348–2349. */
|
|
294
|
+
skippedExistingPet?: boolean;
|
|
295
|
+
}
|
|
296
|
+
| {
|
|
297
|
+
// SPELL_EFFECT_LANGUAGE (39) EffectEmpty — misc stores language id. Cite: SpellEffects.cpp:97
|
|
298
|
+
// dispatch → EffectEmpty :190–193.
|
|
299
|
+
kind: 'language_marker';
|
|
300
|
+
/** EffectMiscValue language id (chat). */
|
|
301
|
+
languageId: number;
|
|
302
|
+
}
|
|
303
|
+
| {
|
|
304
|
+
// SPELL_EFFECT_TELEPORT_UNITS_FACE_CASTER (43). NearTeleportTo(dest, -caster orientation). Requires
|
|
305
|
+
// TARGET_FLAG_DEST_LOCATION. Cite: SpellEffects.cpp:2994–3006.
|
|
306
|
+
kind: 'teleport_face_caster';
|
|
307
|
+
targetA: number;
|
|
308
|
+
targetB: number;
|
|
309
|
+
/** unitTarget taxi flying → early return. Cite: :2996. */
|
|
310
|
+
skippedTaxiFlying?: boolean;
|
|
311
|
+
/** Missing dest location mask → no teleport. Cite: :3000–3003. */
|
|
312
|
+
requiresDestLocation: true;
|
|
313
|
+
}
|
|
314
|
+
| {
|
|
315
|
+
// SPELL_EFFECT_SKILL_STEP (44) EffectLearnSkill. SetSkillStep(skillId, step) where step = damage.
|
|
316
|
+
// Cite: SpellEffects.cpp:3008–3024.
|
|
317
|
+
kind: 'skill_step';
|
|
318
|
+
skillId: number;
|
|
319
|
+
/** uint16(damage) from effect amount. */
|
|
320
|
+
step: number;
|
|
321
|
+
}
|
|
322
|
+
| {
|
|
323
|
+
// SPELL_EFFECT_SUMMON_CHANGE_ITEM (34). Convert cast item → EffectItemType. Cite:
|
|
324
|
+
// SpellEffects.cpp:2276–2312.
|
|
325
|
+
kind: 'summon_change_item';
|
|
326
|
+
newItemId: number;
|
|
327
|
+
}
|
|
328
|
+
| {
|
|
329
|
+
// SPELL_EFFECT_RESURRECT (18) via EffectResurrect percent path. health = maxHealth * damage / 100;
|
|
330
|
+
// mana = maxMana * damage / 100. Cite: SpellEffects.cpp:4797–4871 (computator :4819–4824).
|
|
331
|
+
kind: 'resurrect';
|
|
332
|
+
/** Effect amount used as percent (and as numerator with target max). */
|
|
333
|
+
percent: number;
|
|
334
|
+
/** Resolved when ctx.targetMaxHealth set. */
|
|
335
|
+
health?: number;
|
|
336
|
+
/** Resolved when ctx.targetMaxMana set. */
|
|
337
|
+
mana?: number;
|
|
338
|
+
}
|
|
339
|
+
| {
|
|
340
|
+
// SPELL_EFFECT_LEAP (29) EffectLeapForward. NearTeleportTo(dest, unit orientation). Cite:
|
|
341
|
+
// SpellEffects.cpp:4895–4906.
|
|
342
|
+
kind: 'leap';
|
|
343
|
+
targetA: number;
|
|
344
|
+
targetB: number;
|
|
345
|
+
}
|
|
346
|
+
| {
|
|
347
|
+
// SPELL_EFFECT_TRADE_SKILL (47). Player unitTarget gate; body commented out. Cite:
|
|
348
|
+
// SpellEffects.cpp:3048–3055.
|
|
349
|
+
kind: 'trade_skill';
|
|
350
|
+
/** EffectMiscValue skill id when non-zero (commented C++ referenced it). */
|
|
351
|
+
skillId?: number;
|
|
352
|
+
}
|
|
353
|
+
| {
|
|
354
|
+
// SPELL_EFFECT_SKILL (118). DEBUG_LOG only — marker for skill-line spells. Cite:
|
|
355
|
+
// SpellEffects.cpp:5425–5428.
|
|
356
|
+
kind: 'skill_marker';
|
|
357
|
+
}
|
|
358
|
+
// ── SI3 batch 6 intents ─────────────────────────────────────────────────
|
|
359
|
+
| {
|
|
360
|
+
// SPELL_EFFECT_ADD_FARSIGHT (72). Player caster creates DynamicObject FARSIGHT_FOCUS (radius 0) +
|
|
361
|
+
// SetView. Cite: SpellEffects.cpp:2708–2727; DynamicObject.h DYNAMIC_OBJECT_FARSIGHT_FOCUS=0x2.
|
|
362
|
+
kind: 'add_farsight';
|
|
363
|
+
durationMs: number;
|
|
364
|
+
/** Always 0 in C++ Create call — not a persistent aura radius. Cite: :2715–2717. */
|
|
365
|
+
radius: 0;
|
|
366
|
+
/** DynamicObjectType.DYNAMIC_OBJECT_FARSIGHT_FOCUS. */
|
|
367
|
+
dynObjectType: 2;
|
|
368
|
+
}
|
|
369
|
+
| {
|
|
370
|
+
// SPELL_EFFECT_SANCTUARY (79). InterruptSpellsCastedOnMe + CombatStop; Vanish family clears root +
|
|
371
|
+
// detect timer. Cite: SpellEffects.cpp:4194–4211.
|
|
372
|
+
kind: 'sanctuary';
|
|
373
|
+
/** True when spell IsFitToFamily(SPELLFAMILY_ROGUE, 0x800) — Vanish path. Cite: :4203–4209. */
|
|
374
|
+
vanishRogueSpecial: boolean;
|
|
375
|
+
/** Vanish: SetCannotBeDetectedTimer(1000). Cite: :4208. */
|
|
376
|
+
cannotBeDetectedMs?: number;
|
|
377
|
+
}
|
|
378
|
+
| {
|
|
379
|
+
// Reputation: the simple value is the change and the misc value the faction, then the spell-source
|
|
380
|
+
// gain and the modify. Cite: SpellEffects.cpp:4908-4926; Player.cpp:6293-6369.
|
|
381
|
+
kind: 'reputation';
|
|
382
|
+
factionId: number;
|
|
383
|
+
/** m_currentBasePoints = EffectBasePoints + EffectBaseDice. */
|
|
384
|
+
repChange: number;
|
|
385
|
+
// After CalculateReputationGain when ctx supplies rate/aura mods; omit on bake-thin (world rate +
|
|
386
|
+
// auras are runtime).
|
|
387
|
+
finalRepChange?: number;
|
|
388
|
+
}
|
|
389
|
+
| {
|
|
390
|
+
// SPELL_EFFECT_SUMMON_POSSESSED (73). TakePossessOf creature from EffectMiscValue at dest. Cite:
|
|
391
|
+
// SpellEffects.cpp:4563–4583.
|
|
392
|
+
kind: 'summon_possessed';
|
|
393
|
+
creature: number;
|
|
394
|
+
durationMs: number;
|
|
395
|
+
}
|
|
396
|
+
| {
|
|
397
|
+
// SPELL_EFFECT_BIND_SIGHT (82) EffectNULL — DEBUG_LOG only, no server body. Cite:
|
|
398
|
+
// SpellEffects.cpp:140 dispatch → EffectNULL :195–198.
|
|
399
|
+
kind: 'bind_sight_null';
|
|
400
|
+
}
|
|
401
|
+
| {
|
|
402
|
+
// SPELL_EFFECT_SUMMON_DEMON (112). Count = CalculateSimpleValue; creature = EffectMiscValue; level =
|
|
403
|
+
// caster level; despawn 3_600_000 ms TIMED_OR_DEAD. Cite: SpellEffects.cpp:5430–5460.
|
|
404
|
+
kind: 'summon_demon';
|
|
405
|
+
creature: number;
|
|
406
|
+
count: number;
|
|
407
|
+
/** TEMPSPAWN_TIMED_OR_DEAD_DESPAWN 3600000. Cite: :5447. */
|
|
408
|
+
durationMs: number;
|
|
409
|
+
/** SetLevel(caster level) when ctx.casterLevel set. Cite: :5454. */
|
|
410
|
+
level?: number;
|
|
411
|
+
}
|
|
412
|
+
| {
|
|
413
|
+
// SPELL_EFFECT_PULL_TOWARDS (124). speedXY = max(1, EffectMiscValue) * 0.1; projectile motion toward
|
|
414
|
+
// caster. Cite: SpellEffects.cpp:5132–5162; Movement::gravity util.cpp:24.
|
|
415
|
+
kind: 'pull_towards';
|
|
416
|
+
speedXY: number;
|
|
417
|
+
// When ctx.pullDistance (+ optional pullHeightDelta) set: time = dist/speedXY; speedZ = (dz +
|
|
418
|
+
// 0.5*t²*g)/t. Cite: :5156–5158.
|
|
419
|
+
speedZ?: number;
|
|
420
|
+
/** Distance used when computing speedZ. */
|
|
421
|
+
distance?: number;
|
|
422
|
+
}
|
|
423
|
+
| {
|
|
424
|
+
// SPELL_EFFECT_DODGE (20) EffectEmpty — client/marker only. Cite: SpellEffects.cpp:78 dispatch →
|
|
425
|
+
// EffectEmpty :190–193.
|
|
426
|
+
kind: 'dodge_marker';
|
|
427
|
+
}
|
|
428
|
+
| {
|
|
429
|
+
/** SPELL_EFFECT_PARRY (22). SetCanParry(true) on caster. Cite: SpellEffects.cpp:4885–4888. */
|
|
430
|
+
kind: 'can_parry';
|
|
431
|
+
}
|
|
432
|
+
| {
|
|
433
|
+
/** SPELL_EFFECT_BLOCK (23). SetCanBlock(true) on caster. Cite: SpellEffects.cpp:4890–4893. */
|
|
434
|
+
kind: 'can_block';
|
|
435
|
+
}
|
|
436
|
+
// ── SI3 batch 7 intents ─────────────────────────────────────────────────
|
|
437
|
+
| {
|
|
438
|
+
// SPELL_EFFECT_DEFENSE (26) EffectEmpty — skill-line marker only. Cite: SpellEffects.cpp:84 dispatch
|
|
439
|
+
// → EffectEmpty :190–193.
|
|
440
|
+
kind: 'defense_marker';
|
|
441
|
+
}
|
|
442
|
+
| {
|
|
443
|
+
// SPELL_EFFECT_SPELL_DEFENSE (37) EffectEmpty — client/marker only. Cite: SpellEffects.cpp:95
|
|
444
|
+
// dispatch → EffectEmpty :190–193.
|
|
445
|
+
kind: 'spell_defense_marker';
|
|
446
|
+
}
|
|
447
|
+
| {
|
|
448
|
+
// SPELL_EFFECT_DETECT (49) EffectUnused — no server body. Cite: SpellEffects.cpp:107 dispatch →
|
|
449
|
+
// EffectUnused :200–203.
|
|
450
|
+
kind: 'detect_unused';
|
|
451
|
+
}
|
|
452
|
+
| {
|
|
453
|
+
// SPELL_EFFECT_PORTAL (12) EffectUnused — unused from pre-1.2.1. Cite: SpellEffects.cpp:70 dispatch →
|
|
454
|
+
// EffectUnused :200–203.
|
|
455
|
+
kind: 'portal_unused';
|
|
456
|
+
}
|
|
457
|
+
| {
|
|
458
|
+
// SPELL_EFFECT_TAMECREATURE (55). Full pet build is OOC tame path. Cite: SpellEffects.cpp
|
|
459
|
+
// EffectTameCreature :3149–3225.
|
|
460
|
+
kind: 'tame_creature';
|
|
461
|
+
}
|
|
462
|
+
| {
|
|
463
|
+
/** SPELL_EFFECT_SELF_RESURRECT (94). Cite: SpellEffects.cpp EffectSelfResurrect :4937–4968. */
|
|
464
|
+
kind: 'self_resurrect';
|
|
465
|
+
percent?: number;
|
|
466
|
+
health?: number;
|
|
467
|
+
mana?: number;
|
|
468
|
+
}
|
|
469
|
+
| {
|
|
470
|
+
// SPELL_AURA_RETAIN_COMBO_POINTS (148). Cite: SpellAuras.cpp HandleAuraRetainComboPoints :4436–4452.
|
|
471
|
+
kind: 'retain_combo_points';
|
|
472
|
+
amount: number;
|
|
473
|
+
durationMs: number;
|
|
474
|
+
}
|
|
475
|
+
| {
|
|
476
|
+
// SPELL_AURA_PERIODIC_HEALTH_FUNNEL (62) transfer multiplier. Cite: SpellAuras.cpp PeriodicTick
|
|
477
|
+
// :4606–4612, :4677.
|
|
478
|
+
kind: 'periodic_health_funnel';
|
|
479
|
+
multipleValue: number;
|
|
480
|
+
}
|
|
481
|
+
| {
|
|
482
|
+
/** SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_CHANCE (179). Cite: Unit.cpp GetCritTakenChance :3516–3536. */
|
|
483
|
+
kind: 'mod_attacker_spell_crit_chance';
|
|
484
|
+
amount: number;
|
|
485
|
+
schoolMask: number;
|
|
486
|
+
durationMs: number;
|
|
487
|
+
}
|
|
488
|
+
| {
|
|
489
|
+
// Distract: clear the moving state, distract the creature for the amount in seconds, and face the
|
|
490
|
+
// destination. Cite: SpellEffects.cpp:2640-2660.
|
|
491
|
+
kind: 'distract';
|
|
492
|
+
/** damage * 1000 — MoveDistract timer ms. */
|
|
493
|
+
durationMs: number;
|
|
494
|
+
/** unitTarget GetTypeId() == TYPEID_UNIT → MoveDistract path. */
|
|
495
|
+
moveDistract: boolean;
|
|
496
|
+
}
|
|
497
|
+
| {
|
|
498
|
+
// SPELL_EFFECT_PICKPOCKET (71). Create/refill LOOT_PICKPOCKETING and ShowContentTo player caster.
|
|
499
|
+
// Cite: SpellEffects.cpp:2662–2706.
|
|
500
|
+
kind: 'pickpocket';
|
|
501
|
+
// When already pickpocketed and !CanRestockPickpocketLoot → LOOT_ERROR_ALREADY_PICKPOCKETED. Cite:
|
|
502
|
+
// :2683–2696.
|
|
503
|
+
alreadyPickpocketed?: boolean;
|
|
504
|
+
/** Restock path when pickpocketed + CanRestockPickpocketLoot. Cite: :2685–2691. */
|
|
505
|
+
restock?: boolean;
|
|
506
|
+
}
|
|
507
|
+
| {
|
|
508
|
+
// SPELL_EFFECT_ATTACK (78) EffectUnused — no server body. Cite: SpellEffects.cpp:136 dispatch →
|
|
509
|
+
// EffectUnused :200–203.
|
|
510
|
+
kind: 'attack_unused';
|
|
511
|
+
}
|
|
512
|
+
| {
|
|
513
|
+
// SPELL_EFFECT_DUEL (83). Create duel-flag GO at midpoint; SMSG_DUEL_REQUESTED; DuelInfo on both
|
|
514
|
+
// players. Cite: SpellEffects.cpp:4227–4308.
|
|
515
|
+
kind: 'duel';
|
|
516
|
+
/** EffectMiscValue = duel flag GameObject entry. Cite: :4257. */
|
|
517
|
+
flagGoEntry: number;
|
|
518
|
+
/** Spell duration → GO respawn seconds when > 0. Cite: :4274. */
|
|
519
|
+
durationMs: number;
|
|
520
|
+
// Early-out reasons when cast-time ctx gates fail. Cite: :4229–4237 player/duel/ignore; :4240–4252
|
|
521
|
+
// AREA_FLAG_DUEL.
|
|
522
|
+
skipped?:
|
|
523
|
+
| 'not_players'
|
|
524
|
+
| 'already_dueling'
|
|
525
|
+
| 'ignored'
|
|
526
|
+
| 'area_no_duel';
|
|
527
|
+
}
|
|
528
|
+
| {
|
|
529
|
+
// Stuck: a ghost repops at the graveyard, else the hearth when it is ready and carried, else a
|
|
530
|
+
// dungeon entrance or a ten-yard nudge. Cite: SpellEffects.cpp:4310-4353.
|
|
531
|
+
kind: 'stuck';
|
|
532
|
+
path: 'graveyard' | 'hearthstone' | 'dungeon_entrance' | 'nudge';
|
|
533
|
+
/** Hearthstone CastSpell id when path is hearthstone. Cite: :4336. */
|
|
534
|
+
hearthSpellId?: number;
|
|
535
|
+
/** Nudge distance DEFAULT_WORLD_OBJECT_SIZE path uses 10.0f. Cite: :4350. */
|
|
536
|
+
nudgeDistance?: number;
|
|
537
|
+
}
|
|
538
|
+
// ── SI3 batch 8 intents ─────────────────────────────────────────────────
|
|
539
|
+
| {
|
|
540
|
+
// Durability damage in points or percent: the points path loses points and the percent path a
|
|
541
|
+
// fraction. Cite: SpellEffects.cpp:5209-5260.
|
|
542
|
+
kind: 'durability_damage';
|
|
543
|
+
/** EffectMiscValue — equipment slot, or −1 all equipped / −2 equipped+inventory. */
|
|
544
|
+
slot: number;
|
|
545
|
+
/** `damage` points subtracted (effect 111). Cite: :5220 / :5232. */
|
|
546
|
+
points?: number;
|
|
547
|
+
/** `damage / 100` fraction (effect 115). Cite: :5247 / :5259. */
|
|
548
|
+
percent?: number;
|
|
549
|
+
/** slot < 0 → DurabilityPointsLossAll / DurabilityLossAll. Cite: :5218 / :5245. */
|
|
550
|
+
allItems: boolean;
|
|
551
|
+
/** slot < −1 → also damage bag contents. Cite: :5220 / :5247. */
|
|
552
|
+
includeInventory: boolean;
|
|
553
|
+
}
|
|
554
|
+
| {
|
|
555
|
+
// SPELL_EFFECT_ATTACK_ME (114) AI path when unit cannot have a threat list. Cite:
|
|
556
|
+
// SpellEffects.cpp:3437–3440 AttackStart(m_caster).
|
|
557
|
+
kind: 'attack_me_ai';
|
|
558
|
+
}
|
|
559
|
+
| {
|
|
560
|
+
// Remove Insignia: an online owner is stripped of theirs, while a corpse alone is converted and
|
|
561
|
+
// its insignia loot shown. Cite: SpellEffects.cpp:5499-5542.
|
|
562
|
+
kind: 'skin_player_corpse';
|
|
563
|
+
path: 'removed_insignia' | 'corpse_bones_loot';
|
|
564
|
+
}
|
|
565
|
+
// ── SI3 aura batch intents ────────────────────────────────────────────────
|
|
566
|
+
| {
|
|
567
|
+
// Flat healing done, by school mask. The C++ body is client-field only on Classic, and the bake
|
|
568
|
+
// has no flat healing-done mod yet. Cite: SpellAuras.cpp:3528-3535.
|
|
569
|
+
kind: 'mod_healing_done';
|
|
570
|
+
amount: number;
|
|
571
|
+
schoolMask: number;
|
|
572
|
+
durationMs: number;
|
|
573
|
+
}
|
|
574
|
+
| {
|
|
575
|
+
// SPELL_AURA_MOUNTED (78). Mount creature template → display model. miscValue = creature entry;
|
|
576
|
+
// display resolved at runtime via ChooseDisplayId. Cite: SpellAuras.cpp:1629–1656 HandleAuraMounted.
|
|
577
|
+
kind: 'mounted';
|
|
578
|
+
creatureEntry: number;
|
|
579
|
+
}
|
|
580
|
+
| {
|
|
581
|
+
// SPELL_AURA_DUMMY (4) spell-id / family specials. Bake maps aura 4 to empty; specials are pure
|
|
582
|
+
// intents for SI5+. Cite: SpellAuras.cpp:1229–1620 HandleAuraDummy; PeriodicDummyTick :5025.
|
|
583
|
+
kind: 'aura_dummy';
|
|
584
|
+
/** Spell id that triggered this special (holder spell). */
|
|
585
|
+
spellId: number;
|
|
586
|
+
action:
|
|
587
|
+
| 'periodic'
|
|
588
|
+
| 'cast_spell'
|
|
589
|
+
| 'remove_aura'
|
|
590
|
+
| 'sleep_visual'
|
|
591
|
+
| 'feign_death'
|
|
592
|
+
| 'seal_crusader_dps'
|
|
593
|
+
| 'quest_tame_final'
|
|
594
|
+
| 'combustion_clear_stacks'
|
|
595
|
+
| 'predatory_strikes_ap'
|
|
596
|
+
| 'interrupt_channel_on_death';
|
|
597
|
+
/** Triggered / final spell id when action casts or removes. */
|
|
598
|
+
relatedSpellId?: number;
|
|
599
|
+
/** Periodic timer ms when action is periodic. */
|
|
600
|
+
periodMs?: number;
|
|
601
|
+
/** Per-tick / per-apply roll in percent when the C++ body gates on roll_chance_i. */
|
|
602
|
+
chancePct?: number;
|
|
603
|
+
/** Seal of the Crusader BASE_ATTACK DPS percent (40). */
|
|
604
|
+
dpsPct?: number;
|
|
605
|
+
/** When the special fires (apply / remove / both / remove modes). */
|
|
606
|
+
on?: 'apply' | 'remove' | 'both' | 'remove_expire' | 'remove_death' | 'remove_dispel';
|
|
607
|
+
}
|
|
608
|
+
| {
|
|
609
|
+
// SPELL_AURA_MOD_STUN (12) frost freeze state / Wyvern Sting aftermath. Cite:
|
|
610
|
+
// SpellAuras.cpp:2453–2575 HandleAuraModStun.
|
|
611
|
+
kind: 'mod_stun_special';
|
|
612
|
+
/** Frost school stun → AURA_STATE_FROZEN on apply. Cite: :2461–2462. */
|
|
613
|
+
frostFreeze?: boolean;
|
|
614
|
+
/** Wyvern Sting sleep spell cast on stun remove (family flag 0x10000 ranks). Cite: :2530–2554. */
|
|
615
|
+
wyvernStingSleepSpellId?: number;
|
|
616
|
+
// Boss Wyvern Sting 26180 → CastCustomSpell 26233 nature damage on remove. Cite: :2558–2565 (500
|
|
617
|
+
// expire / 3000 dispel).
|
|
618
|
+
wyvernBossNatureDamage?: { expire: number; dispel: number };
|
|
619
|
+
}
|
|
620
|
+
| {
|
|
621
|
+
// SPELL_AURA_PERIODIC_TRIGGER_SPELL (23) remove-time specials. Cite: SpellAuras.cpp:3092–3111
|
|
622
|
+
// HandlePeriodicTriggerSpell.
|
|
623
|
+
kind: 'periodic_trigger_remove';
|
|
624
|
+
/** Spells cast on aura remove (Burning Adrenaline 18173/23620 → 23478+23644). */
|
|
625
|
+
castSpellIds: number[];
|
|
626
|
+
}
|
|
627
|
+
| {
|
|
628
|
+
// The full proc metadata for the fire path. The bake surface is also emitted as a proc trigger or
|
|
629
|
+
// damage shield. Cite: UnitAuraProcHandler.cpp:515-650, :1242; Unit.cpp:7717.
|
|
630
|
+
kind: 'proc_trigger_spell';
|
|
631
|
+
/** Holder aura spell id. */
|
|
632
|
+
holderSpellId: number;
|
|
633
|
+
// Spell cast on successful proc (after LShield / family id rewrites). Cite:
|
|
634
|
+
// UnitAuraProcHandler.cpp:1255 EffectTriggerSpell path.
|
|
635
|
+
triggerSpellId: number;
|
|
636
|
+
// Effective EventProcFlag (spell_proc_event.procFlags || spell_template.procFlags). Cite:
|
|
637
|
+
// UnitAuraProcHandler.cpp:523–526.
|
|
638
|
+
procFlags: number;
|
|
639
|
+
/** spell_proc_event.procEx when non-zero. */
|
|
640
|
+
procEx?: number;
|
|
641
|
+
// Flat chance as percent 0..100 (ProcChance / CustomChance). Cite: UnitAuraProcHandler.cpp:590–595.
|
|
642
|
+
chancePct: number;
|
|
643
|
+
// spell_proc_event.ppmRate — when set, replaces flat chance via GetPPMProcChance. Cite:
|
|
644
|
+
// UnitAuraProcHandler.cpp:596–600; Unit.cpp:7717.
|
|
645
|
+
ppmRate?: number;
|
|
646
|
+
// Internal cooldown ms (spell_proc_event.Cooldown baked as cooldownMs). Cite:
|
|
647
|
+
// UnitAuraProcHandler.cpp:431–435 SetProcCooldown.
|
|
648
|
+
cooldownMs?: number;
|
|
649
|
+
charges?: number;
|
|
650
|
+
amount?: number;
|
|
651
|
+
schoolMask?: number;
|
|
652
|
+
spellFamilyName?: number;
|
|
653
|
+
spellFamilyMask?: number[];
|
|
654
|
+
// When ctx.procEvent + rng supplied: whether this interpret rolled a fire. Absent on bake-thin (no
|
|
655
|
+
// event).
|
|
656
|
+
fired?: boolean;
|
|
657
|
+
/** After successful fire with cooldownMs: nowMs + cooldownMs. */
|
|
658
|
+
cooldownReadyAt?: number | null;
|
|
659
|
+
}
|
|
660
|
+
| {
|
|
661
|
+
// A successful proc: interpret the triggered spell through the dispatcher. Emitted only when the
|
|
662
|
+
// context resolves the trigger and the roll fired. Cite: UnitAuraProcHandler.cpp:698-725.
|
|
663
|
+
kind: 'proc_triggered_cast';
|
|
664
|
+
triggerSpellId: number;
|
|
665
|
+
/** Normalized effects from interpretSpell(trigger). */
|
|
666
|
+
effects: import('../../../data/schema.ts').SpellEffect[];
|
|
667
|
+
}
|
|
668
|
+
// ── SI3 aura batch 2 intents ──────────────────────────────────────────────
|
|
669
|
+
| {
|
|
670
|
+
// SPELL_AURA_MOD_ROOT (26) frost freeze state on apply/remove. Cite: SpellAuras.cpp:2727–2775
|
|
671
|
+
// HandleAuraModRoot.
|
|
672
|
+
kind: 'mod_root_special';
|
|
673
|
+
/** Frost school root → AURA_STATE_FROZEN. Cite: :2737–2739 / :2748–2765. */
|
|
674
|
+
frostFreeze?: boolean;
|
|
675
|
+
}
|
|
676
|
+
| {
|
|
677
|
+
// Modify a skill bonus, temporary for aura 30 and permanent for the talent form 98.
|
|
678
|
+
// Cite: SpellAuras.cpp:2055-2067 HandleAuraModSkill.
|
|
679
|
+
kind: 'mod_skill';
|
|
680
|
+
skillId: number;
|
|
681
|
+
amount: number;
|
|
682
|
+
permanent: boolean;
|
|
683
|
+
durationMs: number;
|
|
684
|
+
}
|
|
685
|
+
| {
|
|
686
|
+
// A display model change from a creature entry. The bake also maps a hostile transform as a
|
|
687
|
+
// breakable incapacitate. Cite: SpellAuras.cpp:1979-2052 HandleAuraTransform.
|
|
688
|
+
kind: 'transform';
|
|
689
|
+
/** EffectMiscValue creature template entry (0 → script/custom amount). Cite: :1988–2007. */
|
|
690
|
+
creatureEntry: number;
|
|
691
|
+
// Missing creature template fallback display id (pig pink). Cite: SpellAuras.cpp:2003
|
|
692
|
+
// m_modifier.m_amount = 16358.
|
|
693
|
+
missingCreatureDisplayId?: number;
|
|
694
|
+
}
|
|
695
|
+
| {
|
|
696
|
+
// SPELL_AURA_MECHANIC_IMMUNITY (77) apply-time purge when SPELL_ATTR_EX_IMMUNITY_PURGES_EFFECT is
|
|
697
|
+
// set. mechanicMask = 1 << (misc − 1). Cite: SpellAuras.cpp:2936–2948.
|
|
698
|
+
kind: 'mechanic_immunity_purge';
|
|
699
|
+
mechanic: number;
|
|
700
|
+
mechanicMask: number;
|
|
701
|
+
}
|
|
702
|
+
// ── SI3 aura batch 3 intents ──────────────────────────────────────────────
|
|
703
|
+
| {
|
|
704
|
+
// SPELL_AURA_MOD_SCALE (61). ApplyPercentModFloatValue(OBJECT_FIELD_SCALE_X). Cosmetic / model scale
|
|
705
|
+
// only — no bake SpellEffect. Cite: SpellAuras.cpp:2182–2185 HandleAuraModScale.
|
|
706
|
+
kind: 'mod_scale';
|
|
707
|
+
/** Signed percent from base points (e.g. +10 → 10% larger). Cite: :2184. */
|
|
708
|
+
pct: number;
|
|
709
|
+
durationMs: number;
|
|
710
|
+
}
|
|
711
|
+
| {
|
|
712
|
+
// SPELL_AURA_SCHOOL_IMMUNITY (39) apply-time specials beyond the baked school_immunity effect. Cite:
|
|
713
|
+
// SpellAuras.cpp:2992–3043 HandleAuraModSchoolImmunity.
|
|
714
|
+
kind: 'school_immunity_special';
|
|
715
|
+
schoolMask: number;
|
|
716
|
+
// Positive immunity + SPELL_ATTR_EX_IMMUNITY_PURGES_EFFECT → remove negative auras matching school
|
|
717
|
+
// mask. Cite: :3002–3023.
|
|
718
|
+
purgeNegativeSchoolAuras?: boolean;
|
|
719
|
+
// Spell mechanic MECHANIC_BANISH → UNIT_STAT_ISOLATED. Cite: :3025–3030; SharedDefines.h
|
|
720
|
+
// MECHANIC_BANISH = 18.
|
|
721
|
+
isolated?: boolean;
|
|
722
|
+
}
|
|
723
|
+
| {
|
|
724
|
+
// Dispel immunity by type, with an optional purge; the bake leaves it empty.
|
|
725
|
+
// Cite: SpellAuras.cpp:3053-3059; Unit.cpp:7697-7702 ApplySpellDispelImmunity.
|
|
726
|
+
kind: 'dispel_immunity';
|
|
727
|
+
/** EffectMiscValue = DispelType. Cite: :3059. */
|
|
728
|
+
dispelType: number;
|
|
729
|
+
durationMs: number;
|
|
730
|
+
// On apply + SPELL_ATTR_EX_IMMUNITY_PURGES_EFFECT → RemoveAurasWithDispelType. Cite:
|
|
731
|
+
// Unit.cpp:7701–7702. Gate: ctx.immunityPurgesEffect === true.
|
|
732
|
+
purgeDispelType?: boolean;
|
|
733
|
+
}
|
|
734
|
+
| {
|
|
735
|
+
// SPELL_AURA_ADD_FLAT_MODIFIER (107). Player AddSpellMod(SpellModifier(op, SPELLMOD_FLAT, amount,
|
|
736
|
+
// …)). Bake leaves empty (talent path only). Cite: SpellAuras.cpp:899–939.
|
|
737
|
+
kind: 'add_flat_modifier';
|
|
738
|
+
/** EffectMiscValue = SpellModOp. Cite: :924–925; SpellDefines.h MAX_SPELLMOD=32. */
|
|
739
|
+
spellModOp: number;
|
|
740
|
+
/** Flat modifier amount (base points). Cite: :927. */
|
|
741
|
+
amount: number;
|
|
742
|
+
durationMs: number;
|
|
743
|
+
/** EffectItemType family mask. Cite: SpellMgr.h GetSpellAffectMask. */
|
|
744
|
+
familyFlags?: number;
|
|
745
|
+
/** Aura charges override (Shadow Trance / Netherwind Focus → 1). Cite: :915–918 SetAuraCharges(1). */
|
|
746
|
+
auraCharges?: number;
|
|
747
|
+
/** Spell priority override (Clearcasting 16246 → 100). Cite: :919–921. */
|
|
748
|
+
priority?: number;
|
|
749
|
+
}
|
|
750
|
+
| {
|
|
751
|
+
// The health transfer of a periodic leech to the caster: the bake maps a plain dot only, and the
|
|
752
|
+
// heal is the damage times the multiple value. Cite: SpellAuras.cpp:4592-4682.
|
|
753
|
+
kind: 'periodic_leech_heal';
|
|
754
|
+
/** EffectMultipleValue (≤0 → 1.0). Cite: :4645. */
|
|
755
|
+
multipleValue: number;
|
|
756
|
+
}
|
|
757
|
+
| {
|
|
758
|
+
// SPELL_AURA_MOD_DAMAGE_PERCENT_DONE (79) expire special. Cite: SpellAuras.cpp:4170–4172 (id 30423 →
|
|
759
|
+
// cast 38639 on expire).
|
|
760
|
+
kind: 'mod_damage_percent_done_expire';
|
|
761
|
+
castSpellId: number;
|
|
762
|
+
}
|
|
763
|
+
// ── SI3 aura batch 4 intents ──────────────────────────────────────────────
|
|
764
|
+
| {
|
|
765
|
+
// Hit chance: a player recomputes all three weapon hit chances from every hit aura, an NPC adds
|
|
766
|
+
// the amount to each. The bake has no hit mod. Cite: SpellAuras.cpp:3850-3866.
|
|
767
|
+
kind: 'mod_hit_chance';
|
|
768
|
+
/** Signed percent points from base points (e.g. −50 hit). Cite: :3862–3864. */
|
|
769
|
+
amount: number;
|
|
770
|
+
durationMs: number;
|
|
771
|
+
// When true, target is non-player — flat ±amount on m_modWeaponHitChance[3]. Omit / false → player
|
|
772
|
+
// recompute path. Gate: ctx.unitTargetIsPlayer === false. Cite: SpellAuras.cpp:3854–3865.
|
|
773
|
+
nonPlayerFlat?: boolean;
|
|
774
|
+
}
|
|
775
|
+
| {
|
|
776
|
+
// Melee attack power against a creature type mask, added in the damage-done path. Unmapped in the
|
|
777
|
+
// bake. Cite: SpellAuras.cpp:163; Unit.cpp:7475-7476.
|
|
778
|
+
kind: 'mod_melee_attack_power_versus';
|
|
779
|
+
/** EffectMiscValue = creature type mask bitfield. Cite: Unit.cpp:7476. */
|
|
780
|
+
creatureTypeMask: number;
|
|
781
|
+
/** Flat melee AP bonus vs matching creature types. */
|
|
782
|
+
amount: number;
|
|
783
|
+
durationMs: number;
|
|
784
|
+
}
|
|
785
|
+
| {
|
|
786
|
+
// The apply-time interrupt of casts with the silence prevention type. The bake surface is the
|
|
787
|
+
// silence itself; this documents the interrupt loop. Cite: SpellAuras.cpp:2787-2794.
|
|
788
|
+
kind: 'mod_silence_interrupt';
|
|
789
|
+
}
|
|
790
|
+
| {
|
|
791
|
+
// SPELL_AURA_MOD_CHARM (6) side-switch / charm ownership. Bake surface is cc incapacitate+charm; this
|
|
792
|
+
// intent carries TakeCharmOf path. Cite: SpellAuras.cpp:2282–2329 HandleModCharm.
|
|
793
|
+
kind: 'mod_charm';
|
|
794
|
+
/** Spell id of the charm holder (GetId()). Cite: :2307 TakeCharmOf(target, GetId()). */
|
|
795
|
+
spellId: number;
|
|
796
|
+
durationMs: number;
|
|
797
|
+
// Player caster BreakCharmOutgoing(true) before TakeCharmOf (unique advertised charm). Gate:
|
|
798
|
+
// ctx.casterIsPlayer !== false. Cite: :2304–2305.
|
|
799
|
+
breakOutgoing?: boolean;
|
|
800
|
+
// TakeCharmOf advertised flag. false = HandleAoECharm private set (co-exists). Cite:
|
|
801
|
+
// SpellAuras.cpp:2346–2348 TakeCharmOf(target, GetId(), false); Unit.cpp:11350.
|
|
802
|
+
advertised?: boolean;
|
|
803
|
+
}
|
|
804
|
+
// ── SI3 aura batch 5 intents ──────────────────────────────────────────────
|
|
805
|
+
| {
|
|
806
|
+
// Ranged attack power against a creature type mask, for ranged attacks only. Unmapped in the bake.
|
|
807
|
+
// Cite: SpellAuras.cpp:192; Unit.cpp:7469-7471.
|
|
808
|
+
kind: 'mod_ranged_attack_power_versus';
|
|
809
|
+
/** EffectMiscValue = creature type mask bitfield. Cite: Unit.cpp:7471. */
|
|
810
|
+
creatureTypeMask: number;
|
|
811
|
+
/** Flat ranged AP bonus vs matching creature types. */
|
|
812
|
+
amount: number;
|
|
813
|
+
durationMs: number;
|
|
814
|
+
}
|
|
815
|
+
| {
|
|
816
|
+
// SPELL_AURA_MOD_INVISIBILITY (18). AddInvisibilityValue(misc, ±amount); mask when value > 0;
|
|
817
|
+
// visibility group. Bake unmapped. Cite: SpellAuras.cpp:2626–2675 HandleInvisibility.
|
|
818
|
+
kind: 'mod_invisibility';
|
|
819
|
+
/** EffectMiscValue = invisibility type / mask bit. Cite: :2630. */
|
|
820
|
+
invisibilityType: number;
|
|
821
|
+
/** Strength amount (base points). Cite: :2630. */
|
|
822
|
+
amount: number;
|
|
823
|
+
durationMs: number;
|
|
824
|
+
}
|
|
825
|
+
| {
|
|
826
|
+
// Block percent: a player recomputes the block chance, an NPC adds the amount. The bake has no
|
|
827
|
+
// block mod. Cite: SpellAuras.cpp:3789-3800.
|
|
828
|
+
kind: 'mod_block_percent';
|
|
829
|
+
/** Signed percent points from base points. */
|
|
830
|
+
amount: number;
|
|
831
|
+
durationMs: number;
|
|
832
|
+
// When true, target is non-player — flat ±amount on m_modBlockChance. Gate: ctx.unitTargetIsPlayer
|
|
833
|
+
// === false. Cite: :3793–3796.
|
|
834
|
+
nonPlayerFlat?: boolean;
|
|
835
|
+
}
|
|
836
|
+
| {
|
|
837
|
+
// Crit percent: with an equipped-item class of -1 it lands flat on all three, otherwise it takes
|
|
838
|
+
// the weapon-dependent path. The bake is empty. Cite: SpellAuras.cpp:3815-3848.
|
|
839
|
+
kind: 'mod_crit_percent';
|
|
840
|
+
/** Signed percent points from base points (e.g. Recklessness +100). */
|
|
841
|
+
amount: number;
|
|
842
|
+
durationMs: number;
|
|
843
|
+
// When true, target is non-player — flat ±amount on all m_modCritChance. Gate: ctx.unitTargetIsPlayer
|
|
844
|
+
// === false. Cite: :3819–3823.
|
|
845
|
+
nonPlayerFlat?: boolean;
|
|
846
|
+
// Spell EquippedItemClass. −1 / omit → apply all three crit base mods. Non−1 → weapon-dependent equip
|
|
847
|
+
// apply (SI5). Cite: :3838–3847.
|
|
848
|
+
equippedItemClass?: number;
|
|
849
|
+
}
|
|
850
|
+
| {
|
|
851
|
+
// The caster's power gain from a periodic mana leech, plus its expiry specials. The bake carries
|
|
852
|
+
// the negative restore on the victim only. Cite: SpellAuras.cpp:4740-4807.
|
|
853
|
+
kind: 'periodic_mana_leech';
|
|
854
|
+
/** Powers(misc) — 0 mana default. Cite: :4747–4750. */
|
|
855
|
+
powerType: number;
|
|
856
|
+
/** EffectMultipleValue gain multiplier (0 → no caster gain). Cite: :4791. */
|
|
857
|
+
multipleValue: number;
|
|
858
|
+
// On expire cast Sleep 24004 (Tranquilizing Poison 24002/24003 only). Cite: SpellAuras.cpp:3274–3280.
|
|
859
|
+
expireCastSpellId?: number;
|
|
860
|
+
}
|
|
861
|
+
| {
|
|
862
|
+
// Resistance percent per school bit — a percent, not flat armor, and unmapped in the bake.
|
|
863
|
+
// Cite: SpellAuras.cpp:3388-3408 HandleModResistancePercent.
|
|
864
|
+
kind: 'mod_resistance_pct';
|
|
865
|
+
/** EffectMiscValue = SpellSchoolMask. Cite: :3397. */
|
|
866
|
+
schoolMask: number;
|
|
867
|
+
/** Signed percent (TOTAL_PCT). Cite: :3400. */
|
|
868
|
+
amount: number;
|
|
869
|
+
durationMs: number;
|
|
870
|
+
}
|
|
871
|
+
| {
|
|
872
|
+
// SPELL_AURA_MOD_SHAPESHIFT (36) apply-time extras beyond bake `{ kind:'shapeshift' }`. Cite:
|
|
873
|
+
// SpellAuras.cpp:1709–1976 HandleAuraModShapeshift; :4223–4344 HandleShapeshiftBoosts.
|
|
874
|
+
kind: 'mod_shapeshift';
|
|
875
|
+
/** EffectMiscValue = ShapeshiftForm. Cite: :1714. */
|
|
876
|
+
form: number;
|
|
877
|
+
// Powers enum when form changes resource (1=rage, 3=energy). Omit = mana / no change. Cite:
|
|
878
|
+
// :1723–1794.
|
|
879
|
+
powerType?: number;
|
|
880
|
+
// Display model id when form has a fixed model (race-independent). Race-split forms use
|
|
881
|
+
// displayIdAlliance / displayIdHorde instead. Cite: :1727–1797.
|
|
882
|
+
displayId?: number;
|
|
883
|
+
displayIdAlliance?: number;
|
|
884
|
+
displayIdHorde?: number;
|
|
885
|
+
/** Triggered form-passive spell ids on apply (HandleShapeshiftBoosts). Cite: :4235–4273. */
|
|
886
|
+
boostSpellIds?: number[];
|
|
887
|
+
/** Heart of the Wild custom spell id when form supports it. Cite: :4237–4256 / :4315–4326. */
|
|
888
|
+
hotWSpellId?: number;
|
|
889
|
+
// Cat/Tree/Travel/Aqua/Bear/Direbear/Moonkin: strip root + slow auras (mechanic filter). Cite:
|
|
890
|
+
// :1805–1841.
|
|
891
|
+
removeRootAndSlow?: boolean;
|
|
892
|
+
/** Ghostwolf + above: strip WATER_WALK. Cite: :1845–1850. */
|
|
893
|
+
removeWaterWalk?: boolean;
|
|
894
|
+
/** Spirit Shade Visual 24809 uses caster native display (not moonkin model). Cite: :1767–1774. */
|
|
895
|
+
spiritShadeNativeDisplay?: boolean;
|
|
896
|
+
/** FORM_CAT: Track Humanoids 5225 if known and no other tracking. Cite: :1940–1942. */
|
|
897
|
+
trackHumanoidsSpellId?: number;
|
|
898
|
+
/** FORM_CAT furor proc spell. Cite: :1959–1963. */
|
|
899
|
+
furorEnergySpellId?: number;
|
|
900
|
+
/** FORM_BEAR / DIREBEAR furor proc spell. Cite: :1967–1969. */
|
|
901
|
+
furorRageSpellId?: number;
|
|
902
|
+
}
|
|
903
|
+
// ── SI3 aura batch 6 intents ──────────────────────────────────────────────
|
|
904
|
+
| {
|
|
905
|
+
// SPELL_AURA_MOD_INVISIBILITY_DETECTION (19). SetInvisibilityDetectMask/Value; on remove re-max among
|
|
906
|
+
// remaining auras. Bake unmapped. Cite: SpellAuras.cpp:2677–2717 HandleInvisibilityDetect.
|
|
907
|
+
kind: 'mod_invisibility_detection';
|
|
908
|
+
/** EffectMiscValue = invisibility type / mask bit. Cite: :2687. */
|
|
909
|
+
invisibilityType: number;
|
|
910
|
+
/** Detection strength amount. Cite: :2681 / :2689. */
|
|
911
|
+
amount: number;
|
|
912
|
+
durationMs: number;
|
|
913
|
+
}
|
|
914
|
+
| {
|
|
915
|
+
// SPELL_AURA_TRACK_CREATURES (44). Player-only: SetFlag/RemoveFlag PLAYER_TRACK_CREATURES bit
|
|
916
|
+
// (misc−1). Bake empty. Cite: SpellAuras.cpp:2152–2161.
|
|
917
|
+
kind: 'track_creatures';
|
|
918
|
+
/** EffectMiscValue = creature type id (1-based bit index). Cite: :2158. */
|
|
919
|
+
creatureType: number;
|
|
920
|
+
/** Bit mask = 1 << (creatureType − 1). Cite: :2158. */
|
|
921
|
+
trackFlag: number;
|
|
922
|
+
durationMs: number;
|
|
923
|
+
}
|
|
924
|
+
| {
|
|
925
|
+
// On a real remove by death only, store the named item for a player caster. The Soul Shard has its
|
|
926
|
+
// own honor, tapped and single-shard guards. Cite: SpellAuras.cpp:2070-2123.
|
|
927
|
+
kind: 'channel_death_item';
|
|
928
|
+
/** EffectItemType — item entry granted on death. Cite: :2081 / :2089. */
|
|
929
|
+
itemType: number;
|
|
930
|
+
/** m_amount item count (≤0 → no grant). Cite: :2077–2078 / :2109. */
|
|
931
|
+
count: number;
|
|
932
|
+
/** itemType === 6265 Soul Shard specials (honor/XP + tapped + de-dupe). Cite: :2092–2104. */
|
|
933
|
+
soulShard?: boolean;
|
|
934
|
+
}
|
|
935
|
+
| {
|
|
936
|
+
// SPELL_AURA_MOD_HEALTH_REGEN_PERCENT (88). NoImmediateEffect: out-of-combat spirit HP regen ×
|
|
937
|
+
// (100+amount)/100. Bake unmapped. Cite: SpellAuras.cpp:149; Player.cpp:2395–2398.
|
|
938
|
+
kind: 'mod_health_regen_percent';
|
|
939
|
+
/** Signed percent of out-of-combat HP regen (Rabies −50). Cite: Player.cpp:2397. */
|
|
940
|
+
amount: number;
|
|
941
|
+
durationMs: number;
|
|
942
|
+
}
|
|
943
|
+
| {
|
|
944
|
+
// Target resistance: the attacker's penetration is the negated modifier by mask, used in the armor
|
|
945
|
+
// and resist reductions. Cite: SpellAuras.cpp:184; Unit.cpp:3890-3895, :2329.
|
|
946
|
+
kind: 'mod_target_resistance';
|
|
947
|
+
/** EffectMiscValue = SpellSchoolMask. Cite: Unit.cpp:3894. */
|
|
948
|
+
schoolMask: number;
|
|
949
|
+
// Signed aura amount (typically negative, e.g. −700 armor pen). Penetration = −sum(amount) per school
|
|
950
|
+
// bit. Cite: Unit.cpp:3894.
|
|
951
|
+
amount: number;
|
|
952
|
+
durationMs: number;
|
|
953
|
+
}
|
|
954
|
+
| {
|
|
955
|
+
// Shield block value as a FLAT modifier; the percent form is aura 150. The bake is empty.
|
|
956
|
+
// Cite: SpellAuras.cpp:4426-4433 HandleShieldBlockValue.
|
|
957
|
+
kind: 'mod_shield_blockvalue';
|
|
958
|
+
/** Flat shield block value points. Cite: :4433. */
|
|
959
|
+
amount: number;
|
|
960
|
+
durationMs: number;
|
|
961
|
+
}
|
|
962
|
+
| {
|
|
963
|
+
// SPELL_AURA_MOD_SHIELD_BLOCKVALUE_PCT (150). Player HandleBaseModValue(SHIELD_BLOCK_VALUE, PCT_MOD,
|
|
964
|
+
// amount). Cite: SpellAuras.cpp:4426–4433 HandleShieldBlockValue.
|
|
965
|
+
kind: 'mod_shield_blockvalue_pct';
|
|
966
|
+
amount: number;
|
|
967
|
+
durationMs: number;
|
|
968
|
+
}
|
|
969
|
+
| {
|
|
970
|
+
// The stamina health rescale on a percent-stat aura flagged as an ability: current health keeps
|
|
971
|
+
// its fraction of the new maximum. Cite: SpellAuras.cpp:3561-3567.
|
|
972
|
+
kind: 'mod_total_stat_pct_stamina_hp_scale';
|
|
973
|
+
}
|
|
974
|
+
// ── SI3 aura batch 7 intents ──────────────────────────────────────────────
|
|
975
|
+
| {
|
|
976
|
+
// A percent spell modifier, sharing its handler with the flat form. The bake leaves it empty.
|
|
977
|
+
// Cite: SpellAuras.cpp:899-939 HandleAddModifier.
|
|
978
|
+
kind: 'add_pct_modifier';
|
|
979
|
+
/** EffectMiscValue = SpellModOp. Cite: :924–925; SpellDefines.h MAX_SPELLMOD=32. */
|
|
980
|
+
spellModOp: number;
|
|
981
|
+
/** Percent modifier amount (base points). Cite: :927. */
|
|
982
|
+
amount: number;
|
|
983
|
+
durationMs: number;
|
|
984
|
+
/** EffectItemType family mask. Cite: SpellMgr.h GetSpellAffectMask. */
|
|
985
|
+
familyFlags?: number;
|
|
986
|
+
/** Aura charges override (Shadow Trance / Netherwind Focus → 1). Cite: :915–918 SetAuraCharges(1). */
|
|
987
|
+
auraCharges?: number;
|
|
988
|
+
/** Spell priority override (Clearcasting 16246 → 100). Cite: :919–921. */
|
|
989
|
+
priority?: number;
|
|
990
|
+
}
|
|
991
|
+
| {
|
|
992
|
+
// The apply-time current-health specials of a flat max-health aura. The bake surface is the flat
|
|
993
|
+
// maximum; these flags document the C++ id branches. Cite: SpellAuras.cpp:3658-3716.
|
|
994
|
+
kind: 'mod_increase_health_special';
|
|
995
|
+
// Ids 4148 / 12976 / 16609: on apply ModifyHealth(+amount); on remove clamp current HP then drop max.
|
|
996
|
+
// Cite: :3671–3695.
|
|
997
|
+
currentHealthAdjust?: boolean;
|
|
998
|
+
// Bear / Dire Bear form passives 1178 / 9635: preserve health % across max change. Cite: :3698–3707.
|
|
999
|
+
preserveHealthPercent?: boolean;
|
|
1000
|
+
}
|
|
1001
|
+
| {
|
|
1002
|
+
// The main-hand attack-time reset on a disarm, skipped for a feral target with no weapon form.
|
|
1003
|
+
// Cite: SpellAuras.cpp:2438-2450; Unit.h:68 base attack time.
|
|
1004
|
+
kind: 'mod_disarm_attack_time';
|
|
1005
|
+
/** Apply path: SetAttackTime(BASE_ATTACK, BASE_ATTACK_TIME). Cite: :2444–2445. */
|
|
1006
|
+
baseAttackTimeMs: number;
|
|
1007
|
+
}
|
|
1008
|
+
| {
|
|
1009
|
+
// SPELL_AURA_MOD_MECHANIC_RESISTANCE (117). NoImmediateEffect: full-resist chance vs spell/effect
|
|
1010
|
+
// mechanic (misc). Bake unmapped. Cite: SpellAuras.cpp:178; Unit.cpp:4015–4031.
|
|
1011
|
+
kind: 'mod_mechanic_resistance';
|
|
1012
|
+
/** EffectMiscValue = mechanic id. Cite: Unit.cpp:4016. */
|
|
1013
|
+
mechanic: number;
|
|
1014
|
+
/** Signed resist chance percent points. Cite: Unit.cpp:4016 / :4026. */
|
|
1015
|
+
amount: number;
|
|
1016
|
+
durationMs: number;
|
|
1017
|
+
}
|
|
1018
|
+
// ── SI3 aura batch 8 intents ──────────────────────────────────────────────
|
|
1019
|
+
| {
|
|
1020
|
+
// SPELL_AURA_MOD_POSSESS (2) side-switch / possess ownership. Bake surface is cc incapacitate+charm;
|
|
1021
|
+
// this intent carries TakePossessOf. Cite: SpellAuras.cpp:2188–2256 HandleModPossess.
|
|
1022
|
+
kind: 'mod_possess';
|
|
1023
|
+
/** Spell id of the possess holder (GetId()). Cite: :2222 TakePossessOf. */
|
|
1024
|
+
spellId: number;
|
|
1025
|
+
durationMs: number;
|
|
1026
|
+
// Player caster BreakCharmOutgoing(true) before TakePossessOf. Gate: ctx.casterIsPlayer !== false.
|
|
1027
|
+
// Cite: :2200 / :2219–2220.
|
|
1028
|
+
breakOutgoing?: boolean;
|
|
1029
|
+
// Spell 24937 Using Control Console apply: creature UpdateSpell slot 5 from {25026, 25024, 27759,
|
|
1030
|
+
// 25027}. Needs ctx.rng for pick. Cite: :2209–2214.
|
|
1031
|
+
controlConsoleApplySpells?: readonly number[];
|
|
1032
|
+
// Spell 24937 remove: caster casts these on self. Cite: :2245–2246. 24938 Close Control Console,
|
|
1033
|
+
// 27880 Stun.
|
|
1034
|
+
controlConsoleRemoveCasterSpells?: readonly number[];
|
|
1035
|
+
// Spell 24937 remove on creature target: Quiet Suicide 3617 + ForcedDespawn(5000). Cite: :2249–2250.
|
|
1036
|
+
controlConsoleRemoveTargetSpell?: number;
|
|
1037
|
+
controlConsoleDespawnMs?: number;
|
|
1038
|
+
}
|
|
1039
|
+
| {
|
|
1040
|
+
// SPELL_AURA_MOD_INCREASE_HEALTH_PERCENT (133) Mutate Bug apply-time ModifyHealth(+maxDelta). Cite:
|
|
1041
|
+
// SpellAuras.cpp:3748–3753.
|
|
1042
|
+
kind: 'mod_increase_health_percent_special';
|
|
1043
|
+
/** Spell 802: on apply ModifyHealth(GetMaxHealth() − oldMaxHealth). */
|
|
1044
|
+
mutateBugHealthGain?: boolean;
|
|
1045
|
+
}
|
|
1046
|
+
| {
|
|
1047
|
+
// The percent of spirit regen allowed while casting, clamped at 100 and unmapped in the bake.
|
|
1048
|
+
// Cite: SpellAuras.cpp:3803-3812; StatSystem.cpp:558-562.
|
|
1049
|
+
kind: 'mod_mana_regen_interrupt';
|
|
1050
|
+
/** Percent of spirit-based mana regen retained while casting. */
|
|
1051
|
+
amount: number;
|
|
1052
|
+
durationMs: number;
|
|
1053
|
+
}
|
|
1054
|
+
| {
|
|
1055
|
+
// SPELL_AURA_MOD_STALKED (68). SetFlag/RemoveFlag UNIT_DYNFLAG_TRACK_UNIT (Hunter's Mark, Mind
|
|
1056
|
+
// Vision). Bake unmapped. Cite: SpellAuras.cpp:3079–3086; SharedDefines.h UNIT_DYNFLAG_TRACK_UNIT.
|
|
1057
|
+
kind: 'mod_stalked';
|
|
1058
|
+
durationMs: number;
|
|
1059
|
+
}
|
|
1060
|
+
| {
|
|
1061
|
+
// SPELL_AURA_MOD_RANGED_DAMAGE_TAKEN (113). NoImmediateEffect: MeleeDamageBonusTaken TakenFlat for
|
|
1062
|
+
// RANGED_ATTACK. Bake unmapped. Cite: SpellAuras.cpp:174; Unit.cpp:7615–7617.
|
|
1063
|
+
kind: 'mod_ranged_damage_taken';
|
|
1064
|
+
/** Flat ranged damage taken modifier (signed base points). */
|
|
1065
|
+
amount: number;
|
|
1066
|
+
durationMs: number;
|
|
1067
|
+
}
|
|
1068
|
+
| {
|
|
1069
|
+
// SPELL_AURA_OBS_MOD_MANA (21) remove special for Shade of Aran drink. Cite: SpellAuras.cpp:3603–3609
|
|
1070
|
+
// — id 30024 AURA_REMOVE_BY_DEFAULT → AI event.
|
|
1071
|
+
kind: 'obs_mod_mana_remove_special';
|
|
1072
|
+
/** Spell id that fires the AI event on default remove. */
|
|
1073
|
+
spellId: number;
|
|
1074
|
+
}
|
|
1075
|
+
// ── SI3 aura batch 9 intents ──────────────────────────────────────────────
|
|
1076
|
+
| {
|
|
1077
|
+
// SPELL_AURA_MOD_SPELL_CRIT_CHANCE (57). Real only. Player: UpdateAllSpellCritChances(); NPC: ±amount
|
|
1078
|
+
// all schools. Bake empty. Cite: SpellAuras.cpp:3873–3889; StatSystem.cpp:505–515 / :541–545.
|
|
1079
|
+
kind: 'mod_spell_crit_chance';
|
|
1080
|
+
/** Signed percent points from base points. */
|
|
1081
|
+
amount: number;
|
|
1082
|
+
durationMs: number;
|
|
1083
|
+
// When true, target is non-player — flat ±amount on m_modSpellCritChance[school]. Gate:
|
|
1084
|
+
// ctx.unitTargetIsPlayer === false. Cite: :3881–3886.
|
|
1085
|
+
nonPlayerFlat?: boolean;
|
|
1086
|
+
}
|
|
1087
|
+
| {
|
|
1088
|
+
// SPELL_AURA_MOD_SPELL_CRIT_CHANCE_SCHOOL (71). Real only. Per school bit in misc mask: NPC flat or
|
|
1089
|
+
// player UpdateSpellCritChance. Bake empty. Cite: SpellAuras.cpp:3891–3911; StatSystem.cpp:512–513.
|
|
1090
|
+
kind: 'mod_spell_crit_chance_school';
|
|
1091
|
+
/** EffectMiscValue = SpellSchoolMask. Cite: :3899. */
|
|
1092
|
+
schoolMask: number;
|
|
1093
|
+
/** Signed percent points from base points. */
|
|
1094
|
+
amount: number;
|
|
1095
|
+
durationMs: number;
|
|
1096
|
+
// When true, target is non-player — flat ±amount per matching school. Gate: ctx.unitTargetIsPlayer
|
|
1097
|
+
// === false. Cite: :3902–3906.
|
|
1098
|
+
nonPlayerFlat?: boolean;
|
|
1099
|
+
}
|
|
1100
|
+
| {
|
|
1101
|
+
// SPELL_AURA_MOD_LANGUAGE (75). NoImmediateEffect: chat lang overwrite from front aura misc. Bake
|
|
1102
|
+
// unmapped. Cite: SpellAuras.cpp:136; ChatHandler.cpp:151–155.
|
|
1103
|
+
kind: 'mod_language';
|
|
1104
|
+
/** EffectMiscValue = language id (LANG_*). Cite: ChatHandler.cpp:154–155. */
|
|
1105
|
+
languageId: number;
|
|
1106
|
+
durationMs: number;
|
|
1107
|
+
}
|
|
1108
|
+
| {
|
|
1109
|
+
// SPELL_AURA_WATER_BREATHING (82). Player: SetWaterBreathingIntervalMultiplier(0) while any such aura
|
|
1110
|
+
// present. Bake empty. Cite: SpellAuras.cpp:1688–1699.
|
|
1111
|
+
kind: 'water_breathing';
|
|
1112
|
+
// Interval multiplier while aura applies (0 = infinite breath). Cite: :1694–1695
|
|
1113
|
+
// SetWaterBreathingIntervalMultiplier(0).
|
|
1114
|
+
intervalMultiplier: number;
|
|
1115
|
+
durationMs: number;
|
|
1116
|
+
}
|
|
1117
|
+
| {
|
|
1118
|
+
// SPELL_AURA_MOD_DETECT_RANGE (91). NoImmediateEffect: attackDistance += GetTotalAuraModifier on the
|
|
1119
|
+
// *creature*. Bake unmapped. Cite: SpellAuras.cpp:152; Unit.cpp:11772.
|
|
1120
|
+
kind: 'mod_detect_range';
|
|
1121
|
+
/** Signed yards (Mind Soothe −10). Cite: Unit.cpp:11772. */
|
|
1122
|
+
amount: number;
|
|
1123
|
+
durationMs: number;
|
|
1124
|
+
}
|
|
1125
|
+
| {
|
|
1126
|
+
// SPELL_AURA_OVERRIDE_CLASS_SCRIPTS (112). RegisterOverrideScriptAura(this, miscValue, apply). Bake
|
|
1127
|
+
// empty. Cite: SpellAuras.cpp:5096–5099; Unit.cpp:11980–11985.
|
|
1128
|
+
kind: 'override_class_scripts';
|
|
1129
|
+
/** EffectMiscValue = script id key in m_classScripts. Cite: :5098. */
|
|
1130
|
+
scriptId: number;
|
|
1131
|
+
/** m_amount carried for script consumers (Tactical Mastery rage, etc.). */
|
|
1132
|
+
amount: number;
|
|
1133
|
+
durationMs: number;
|
|
1134
|
+
}
|
|
1135
|
+
| {
|
|
1136
|
+
// Force reaction: apply the forced rank for a faction, and stop attacking once the effective rank
|
|
1137
|
+
// is friendly. Unmapped in the bake. Cite: SpellAuras.cpp:2034-2052.
|
|
1138
|
+
kind: 'force_reaction';
|
|
1139
|
+
/** EffectMiscValue = faction template id. Cite: :2043. */
|
|
1140
|
+
factionId: number;
|
|
1141
|
+
/** m_amount cast to ReputationRank. Cite: :2044. */
|
|
1142
|
+
reputationRank: number;
|
|
1143
|
+
durationMs: number;
|
|
1144
|
+
/** apply && rank ≥ REP_FRIENDLY → StopAttackFaction. Cite: :2050–2051; SharedDefines.h:110. */
|
|
1145
|
+
stopAttackFaction?: boolean;
|
|
1146
|
+
}
|
|
1147
|
+
| {
|
|
1148
|
+
// The cast-time spell-power fold into a mana shield's pool for the mage family, omitted on a thin
|
|
1149
|
+
// bake. Cite: SpellAuras.cpp:5063-5093; Unit.cpp:2791-2794.
|
|
1150
|
+
kind: 'mana_shield_spd_bonus';
|
|
1151
|
+
/** Integer absorb points added to m_amount. Cite: :5091. */
|
|
1152
|
+
bonusAmount: number;
|
|
1153
|
+
}
|
|
1154
|
+
// ── SI3 aura batch 10 intents ─────────────────────────────────────────────
|
|
1155
|
+
| {
|
|
1156
|
+
// SPELL_AURA_EFFECT_IMMUNITY (37). ApplySpellImmune(IMMUNITY_EFFECT, misc); positive apply purges
|
|
1157
|
+
// invuln buffs. Bake empty. Cite: SpellAuras.cpp:2962–2970.
|
|
1158
|
+
kind: 'effect_immunity';
|
|
1159
|
+
/** EffectMiscValue = SpellEffects enum id. Cite: :2966. */
|
|
1160
|
+
effectId: number;
|
|
1161
|
+
durationMs: number;
|
|
1162
|
+
// apply + IsPositive → RemoveAurasWithInterruptFlags INVULNERABILITY. Cite: :2968–2969. Always true
|
|
1163
|
+
// at interpret (positive immunity buffs).
|
|
1164
|
+
purgeInvulnerabilityBuffs?: boolean;
|
|
1165
|
+
}
|
|
1166
|
+
| {
|
|
1167
|
+
// SPELL_AURA_STATE_IMMUNITY (38). ApplySpellImmune(IMMUNITY_STATE, misc); optional purge of that
|
|
1168
|
+
// AuraType. Bake empty. Cite: SpellAuras.cpp:2972–2989.
|
|
1169
|
+
kind: 'state_immunity';
|
|
1170
|
+
/** EffectMiscValue = AuraType id to be immune to. Cite: :2989. */
|
|
1171
|
+
auraType: number;
|
|
1172
|
+
durationMs: number;
|
|
1173
|
+
// apply + Real + SPELL_ATTR_EX_IMMUNITY_PURGES_EFFECT → remove auras of type. Gate:
|
|
1174
|
+
// ctx.immunityPurgesEffect === true. Cite: :2974–2987.
|
|
1175
|
+
purgeAuraType?: boolean;
|
|
1176
|
+
}
|
|
1177
|
+
| {
|
|
1178
|
+
// SPELL_AURA_TRACK_RESOURCES (45). Player-only: SetFlag/RemoveFlag PLAYER_TRACK_RESOURCES bit
|
|
1179
|
+
// (misc−1). Bake empty. Cite: SpellAuras.cpp:2163–2171.
|
|
1180
|
+
kind: 'track_resources';
|
|
1181
|
+
/** EffectMiscValue = resource type id (1-based bit index). Cite: :2169. */
|
|
1182
|
+
resourceType: number;
|
|
1183
|
+
/** Bit mask = 1 << (resourceType − 1). Cite: :2169. */
|
|
1184
|
+
trackFlag: number;
|
|
1185
|
+
durationMs: number;
|
|
1186
|
+
}
|
|
1187
|
+
| {
|
|
1188
|
+
// SPELL_AURA_PREVENTS_FLEEING (92). Real: if fear auras present, SetFleeing(false) on apply / restore
|
|
1189
|
+
// on remove. Bake empty. Cite: SpellAuras.cpp:5047–5060 HandlePreventFleeing.
|
|
1190
|
+
kind: 'prevents_fleeing';
|
|
1191
|
+
durationMs: number;
|
|
1192
|
+
}
|
|
1193
|
+
| {
|
|
1194
|
+
// SPELL_AURA_MOD_FLAT_SPELL_DAMAGE_VERSUS (180). NoImmediateEffect: SpellDamageBonusDone DoneTotal +=
|
|
1195
|
+
// GetTotalAuraModifierByMiscMask. Bake empty. Cite: SpellAuras.cpp:241; Unit.cpp:7055.
|
|
1196
|
+
kind: 'mod_flat_spell_damage_versus';
|
|
1197
|
+
/** EffectMiscValue = creature type mask bitfield. Cite: Unit.cpp:7055. */
|
|
1198
|
+
creatureTypeMask: number;
|
|
1199
|
+
/** Flat spell damage bonus vs matching creature types. */
|
|
1200
|
+
amount: number;
|
|
1201
|
+
durationMs: number;
|
|
1202
|
+
}
|
|
1203
|
+
| {
|
|
1204
|
+
// SPELL_AURA_MOD_RANGED_AMMO_HASTE (141) highest-only stacking note. Only the highest positive amount
|
|
1205
|
+
// applies to ranged attack time. Cite: SpellAuras.cpp:3945–3980 HandleRangedAmmoHaste.
|
|
1206
|
+
kind: 'ranged_ammo_haste_highest';
|
|
1207
|
+
/** This aura's amount (candidate highest). Cite: :3967. */
|
|
1208
|
+
amount: number;
|
|
1209
|
+
}
|
|
1210
|
+
// ── SI3 aura batch 11 intents ─────────────────────────────────────────────
|
|
1211
|
+
| {
|
|
1212
|
+
// Spell hit chance across all schools. The bake is empty, since both hit auras return early.
|
|
1213
|
+
// Cite: SpellAuras.cpp:3868-3870; StatSystem.cpp:538.
|
|
1214
|
+
kind: 'mod_spell_hit_chance';
|
|
1215
|
+
/** Signed percent points (e.g. +10 hit). Cite: :3870. */
|
|
1216
|
+
amount: number;
|
|
1217
|
+
durationMs: number;
|
|
1218
|
+
}
|
|
1219
|
+
| {
|
|
1220
|
+
// SPELL_AURA_WATER_WALK (104). Real: SetWaterWalk(apply) movement flag / packet. Bake empty. Cite:
|
|
1221
|
+
// SpellAuras.cpp:1661–1667; Unit.cpp:12486.
|
|
1222
|
+
kind: 'water_walk';
|
|
1223
|
+
durationMs: number;
|
|
1224
|
+
}
|
|
1225
|
+
| {
|
|
1226
|
+
// On a caster's spell hit, chance-cast the named trigger. The bake is empty.
|
|
1227
|
+
// Cite: SpellAuras.cpp:170; Spell.cpp:7433-7468 ProcSpellAuraTriggers.
|
|
1228
|
+
kind: 'add_target_trigger';
|
|
1229
|
+
/** EffectTriggerSpell id cast on successful hit. Cite: Spell.cpp:7454. */
|
|
1230
|
+
triggerSpellId: number;
|
|
1231
|
+
// Proc chance % = CalculateSpellEffectValue (base points + dice). Cite: Spell.cpp:7457–7458
|
|
1232
|
+
// roll_chance_i(chance).
|
|
1233
|
+
chancePct: number;
|
|
1234
|
+
durationMs: number;
|
|
1235
|
+
}
|
|
1236
|
+
| {
|
|
1237
|
+
// Power regen percent at its use site: spirit mana regen is multiplied by it, and rage or energy
|
|
1238
|
+
// scale per matching power. Cite: SpellAuras.cpp:3644-3655; StatSystem.cpp:551-552.
|
|
1239
|
+
kind: 'mod_power_regen_percent';
|
|
1240
|
+
/** EffectMiscValue = Powers enum (0 mana, 1 rage, 3 energy). Cite: :3654. */
|
|
1241
|
+
powerType: number;
|
|
1242
|
+
/** Signed percent (e.g. 100 → ×2). Cite: Player.cpp:2343 (amount+100)/100. */
|
|
1243
|
+
amount: number;
|
|
1244
|
+
durationMs: number;
|
|
1245
|
+
/** Real + player + POWER_MANA → UpdateManaRegen on apply/remove. Cite: SpellAuras.cpp:3650–3655. */
|
|
1246
|
+
updateManaRegen?: boolean;
|
|
1247
|
+
}
|
|
1248
|
+
| {
|
|
1249
|
+
// SPELL_AURA_SAFE_FALL (144). Handler body empty; fall damage reduces z_diff by
|
|
1250
|
+
// GetTotalAuraModifier(144). Bake empty. Cite: SpellAuras.cpp:5649–5651; Player.cpp:19535–19537.
|
|
1251
|
+
kind: 'safe_fall';
|
|
1252
|
+
/** Height reduction yards (e.g. 10). Cite: Player.cpp:19535. */
|
|
1253
|
+
amount: number;
|
|
1254
|
+
durationMs: number;
|
|
1255
|
+
}
|
|
1256
|
+
| {
|
|
1257
|
+
// SPELL_AURA_BIND_SIGHT (1). Player caster: camera.SetView(target) / ResetView on remove. Bake empty.
|
|
1258
|
+
// Cite: SpellAuras.cpp:2126–2136.
|
|
1259
|
+
kind: 'bind_sight';
|
|
1260
|
+
durationMs: number;
|
|
1261
|
+
}
|
|
1262
|
+
| {
|
|
1263
|
+
// Power cost school: a flat cost modifier per school bit in the mask, and the bake is empty.
|
|
1264
|
+
// Cite: SpellAuras.cpp:4208-4216.
|
|
1265
|
+
kind: 'mod_power_cost_school';
|
|
1266
|
+
/** EffectMiscValue = school mask. Cite: :4214–4215. */
|
|
1267
|
+
schoolMask: number;
|
|
1268
|
+
/** Flat power cost modifier (negative = cheaper). Cite: :4216. */
|
|
1269
|
+
amount: number;
|
|
1270
|
+
durationMs: number;
|
|
1271
|
+
}
|
|
1272
|
+
| {
|
|
1273
|
+
// SPELL_AURA_FAR_SIGHT (76). Same body as BIND_SIGHT: player caster camera.SetView(target). Bake
|
|
1274
|
+
// empty. Cite: SpellAuras.cpp:2139–2149.
|
|
1275
|
+
kind: 'far_sight';
|
|
1276
|
+
durationMs: number;
|
|
1277
|
+
}
|
|
1278
|
+
// ── SI3 aura batch 12 intents ─────────────────────────────────────────────
|
|
1279
|
+
| {
|
|
1280
|
+
// Unattackable: a real apply stops combat, and the untargetable flag is always set. The bake is
|
|
1281
|
+
// empty. Cite: SpellAuras.cpp:4454-4459 HandleModUnattackable.
|
|
1282
|
+
kind: 'mod_unattackable';
|
|
1283
|
+
durationMs: number;
|
|
1284
|
+
// Real && Apply → CombatStop(). Cite: :4456–4457. Interpret apply snapshot always true when real path
|
|
1285
|
+
// is taken.
|
|
1286
|
+
combatStopOnApply: true;
|
|
1287
|
+
}
|
|
1288
|
+
| {
|
|
1289
|
+
// Interrupt regen: while held, out-of-combat rage regen is skipped, and two ids also set the
|
|
1290
|
+
// dummy combat state. Cite: SpellAuras.cpp:5109-5117; Player.cpp:2301.
|
|
1291
|
+
kind: 'interrupt_regen';
|
|
1292
|
+
durationMs: number;
|
|
1293
|
+
/** Spell id 5229 or 29131 → SetInDummyCombatState. Cite: :5114–5117. */
|
|
1294
|
+
setInDummyCombatState?: boolean;
|
|
1295
|
+
}
|
|
1296
|
+
| {
|
|
1297
|
+
// Resist pushback: the modifier is added to the resist chance in the cast and channel delays.
|
|
1298
|
+
// The bake is empty. Cite: SpellAuras.cpp:210; Spell.cpp:6817-6820, :6849-6852.
|
|
1299
|
+
kind: 'resist_pushback';
|
|
1300
|
+
// Signed aura amount (e.g. Concentration 35, Barkskin 100). Formula: resistChance = 100 + amount −
|
|
1301
|
+
// 100 = amount (before spellmod). Cite: Spell.cpp:6817–6819.
|
|
1302
|
+
amount: number;
|
|
1303
|
+
durationMs: number;
|
|
1304
|
+
}
|
|
1305
|
+
| {
|
|
1306
|
+
// Split damage flat: up to the amount goes to a living linked caster when the school matches.
|
|
1307
|
+
// Cite: SpellAuras.cpp:214; Unit.cpp:2501-2537.
|
|
1308
|
+
kind: 'split_damage_flat';
|
|
1309
|
+
/** Flat damage redirected per hit (cap). Cite: Unit.cpp:2516–2519. */
|
|
1310
|
+
amount: number;
|
|
1311
|
+
/** EffectMiscValue school mask. Cite: Unit.cpp:2507. */
|
|
1312
|
+
schoolMask: number;
|
|
1313
|
+
durationMs: number;
|
|
1314
|
+
}
|
|
1315
|
+
| {
|
|
1316
|
+
// Power burn: the tick burns power and deals the burned amount times the multiple value as school
|
|
1317
|
+
// damage. Cite: SpellAuras.cpp:3124-3126, :4892-4946.
|
|
1318
|
+
kind: 'power_burn_mana';
|
|
1319
|
+
/** Powers enum (misc). Cite: :4915. */
|
|
1320
|
+
powerType: number;
|
|
1321
|
+
/** Mana/power burned per tick (m_amount). Cite: :4902. */
|
|
1322
|
+
amountPerTick: number;
|
|
1323
|
+
/** EffectAmplitude ms. Cite: aura amplitude. */
|
|
1324
|
+
tickMs: number;
|
|
1325
|
+
// EffectMultipleValue — damage = burned × mult. Cite: :4922. Classic DB float (Ignite Mana / Soul Tap
|
|
1326
|
+
// = 1).
|
|
1327
|
+
multiplier: number;
|
|
1328
|
+
durationMs: number;
|
|
1329
|
+
}
|
|
1330
|
+
| {
|
|
1331
|
+
// Damage done versus a creature type mask, multiplied into both the spell and melee done paths.
|
|
1332
|
+
// The bake is empty. Cite: SpellAuras.cpp:229; Unit.cpp:7058, :7503.
|
|
1333
|
+
kind: 'mod_damage_done_versus';
|
|
1334
|
+
/** EffectMiscValue = creature type mask. Cite: Unit.cpp:7058. */
|
|
1335
|
+
creatureTypeMask: number;
|
|
1336
|
+
/** Percent points (e.g. Murder R2 +2). Cite: amount as aura modifier. */
|
|
1337
|
+
amount: number;
|
|
1338
|
+
durationMs: number;
|
|
1339
|
+
}
|
|
1340
|
+
| {
|
|
1341
|
+
// SPELL_AURA_MOD_INCREASE_ENERGY_PERCENT (132). HandleStatModifier(UNIT_MOD_POWER_START+power,
|
|
1342
|
+
// TOTAL_PCT, ±amount). Cite: SpellAuras.cpp:3734-3743.
|
|
1343
|
+
kind: 'mod_increase_energy_percent';
|
|
1344
|
+
powerType: number;
|
|
1345
|
+
amount: number;
|
|
1346
|
+
durationMs: number;
|
|
1347
|
+
}
|
|
1348
|
+
| {
|
|
1349
|
+
// SPELL_AURA_MOD_INCREASE_ENERGY (35). HandleStatModifier(UNIT_MOD_POWER_START+power, TOTAL_VALUE,
|
|
1350
|
+
// ±amount). Bake empty. Cite: SpellAuras.cpp:3719–3726.
|
|
1351
|
+
kind: 'mod_increase_energy';
|
|
1352
|
+
/** Powers enum (misc: 0 mana, 1 rage, 3 energy). Cite: :3722. */
|
|
1353
|
+
powerType: number;
|
|
1354
|
+
/** Flat max-power TOTAL_VALUE. Cite: :3726. */
|
|
1355
|
+
amount: number;
|
|
1356
|
+
durationMs: number;
|
|
1357
|
+
}
|
|
1358
|
+
// ── SI3 aura batch 13 intents ─────────────────────────────────────────────
|
|
1359
|
+
| {
|
|
1360
|
+
// SPELL_AURA_PERIODIC_MANA_FUNNEL (63). HandleUnused — empty body; obsolete (zzOLDMana Funnel only).
|
|
1361
|
+
// Cite: SpellAuras.h:279–282; SpellAuras.cpp:124.
|
|
1362
|
+
kind: 'periodic_mana_funnel_unused';
|
|
1363
|
+
}
|
|
1364
|
+
| {
|
|
1365
|
+
// Feign Death: a player-controlled target may fail a resist roll against the attackers' miss
|
|
1366
|
+
// chance, and a success interrupts the casts aimed at them. Cite: Unit.cpp:10083-10140.
|
|
1367
|
+
kind: 'feign_death';
|
|
1368
|
+
durationMs: number;
|
|
1369
|
+
// When true, apply path runs resist roll before success side-effects. Gate:
|
|
1370
|
+
// ctx.unitTargetPlayerControlled === true. Cite: :2390–2410.
|
|
1371
|
+
playerControlledResistRoll?: boolean;
|
|
1372
|
+
}
|
|
1373
|
+
| {
|
|
1374
|
+
// Power cost school percent: a cost multiplier per school bit in the mask.
|
|
1375
|
+
// Cite: SpellAuras.cpp:4190-4204; Spell.cpp:6368.
|
|
1376
|
+
kind: 'mod_power_cost_school_pct';
|
|
1377
|
+
/** EffectMiscValue = school mask. Cite: :4199–4200. */
|
|
1378
|
+
schoolMask: number;
|
|
1379
|
+
/** Percent points (e.g. −15 → −0.15 field delta). Cite: :4197 amount/100. */
|
|
1380
|
+
amount: number;
|
|
1381
|
+
durationMs: number;
|
|
1382
|
+
// Spell 30422 expire → CastSpell(38638). Cite: :4202–4204. Not present in Classic 1.12 DB; branch
|
|
1383
|
+
// ported for handler completeness.
|
|
1384
|
+
expireCastSpellId?: number;
|
|
1385
|
+
}
|
|
1386
|
+
| {
|
|
1387
|
+
// SPELL_AURA_GHOST (95). SetVisFlags(GHOST); player: PLAYER_FLAGS_GHOST + water-walk if no
|
|
1388
|
+
// WATER_WALK. Cite: SpellAuras.cpp:4396–4420.
|
|
1389
|
+
kind: 'ghost';
|
|
1390
|
+
durationMs: number;
|
|
1391
|
+
// Apply water-walk unless target already has SPELL_AURA_WATER_WALK. Gate: player target. Cite:
|
|
1392
|
+
// :4406–4408 / :4416–4418.
|
|
1393
|
+
setWaterWalkUnlessWaterWalkAura: true;
|
|
1394
|
+
}
|
|
1395
|
+
| {
|
|
1396
|
+
// Spell magnet: one harmful single-target magic spell is redirected to the magnet and its charge
|
|
1397
|
+
// consumed. Cite: SpellAuras.cpp:157; Unit.cpp:6894-6919 SelectMagnetTarget.
|
|
1398
|
+
kind: 'spell_magnet';
|
|
1399
|
+
durationMs: number;
|
|
1400
|
+
}
|
|
1401
|
+
| {
|
|
1402
|
+
// SPELL_AURA_AURAS_VISIBLE (100). ApplyModFlag(UNIT_FLAG_AURAS_VISIBLE). Cite:
|
|
1403
|
+
// SpellAuras.cpp:3383–3385.
|
|
1404
|
+
kind: 'auras_visible';
|
|
1405
|
+
durationMs: number;
|
|
1406
|
+
}
|
|
1407
|
+
| {
|
|
1408
|
+
// SPELL_AURA_HOVER (106). Real: SetHover(apply) movement flag / packet. Cite:
|
|
1409
|
+
// SpellAuras.cpp:1679–1686; Unit.cpp:12428.
|
|
1410
|
+
kind: 'hover';
|
|
1411
|
+
durationMs: number;
|
|
1412
|
+
}
|
|
1413
|
+
| {
|
|
1414
|
+
// Regen during combat: spirit health regen keeps running in combat, scaled by the modifier.
|
|
1415
|
+
// Cite: SpellAuras.cpp:177; Player.cpp:2297-2299, :2390-2400.
|
|
1416
|
+
kind: 'mod_regen_during_combat';
|
|
1417
|
+
// Percent of OOC spirit HP regen while in combat (e.g. troll racial 10). Cite: Player.cpp:2400
|
|
1418
|
+
// addvalue *= amount/100.
|
|
1419
|
+
amount: number;
|
|
1420
|
+
durationMs: number;
|
|
1421
|
+
}
|
|
1422
|
+
| {
|
|
1423
|
+
// SPELL_AURA_UNTRACKABLE (120). Set/Remove UNIT_VIS_FLAG_UNTRACKABLE. Cite: SpellAuras.cpp:4374–4379.
|
|
1424
|
+
kind: 'untrackable';
|
|
1425
|
+
durationMs: number;
|
|
1426
|
+
}
|
|
1427
|
+
// ── SI3 aura batch 14 intents ─────────────────────────────────────────────
|
|
1428
|
+
| {
|
|
1429
|
+
// Empathy, the Beast Lore info flag on a player or a beast. The bake is empty.
|
|
1430
|
+
// Cite: SpellAuras.cpp:4351-4371.
|
|
1431
|
+
kind: 'empathy';
|
|
1432
|
+
durationMs: number;
|
|
1433
|
+
// Target eligible for UNIT_DYNFLAG_SPECIALINFO (player or beast). Cite: :4355–4357. Gate:
|
|
1434
|
+
// unitTargetIsPlayer / unitTargetCreatureType.
|
|
1435
|
+
applySpecialInfo: boolean;
|
|
1436
|
+
// apply path sends BuildValuesUpdateBlockForPlayerWithFlags to player caster. Cite: :4359–4369. Gate:
|
|
1437
|
+
// casterIsPlayer !== false.
|
|
1438
|
+
sendSpecialInfoUpdate?: boolean;
|
|
1439
|
+
}
|
|
1440
|
+
| {
|
|
1441
|
+
// Possess pet, Eyes of the Beast: a player caster takes their own pet's vision. Own-pet only, so
|
|
1442
|
+
// there is no control surface. Cite: SpellAuras.cpp:2258-2279; Spell.cpp:5717-5735.
|
|
1443
|
+
kind: 'mod_possess_pet';
|
|
1444
|
+
/** Holder spell id (GetId()). Cite: TakePossessOf path :2273. */
|
|
1445
|
+
spellId: number;
|
|
1446
|
+
durationMs: number;
|
|
1447
|
+
/** BreakCharmOutgoing(true) before TakePossessOf on apply. Cite: :2270–2273. Player casters only. */
|
|
1448
|
+
breakOutgoing: true;
|
|
1449
|
+
}
|
|
1450
|
+
| {
|
|
1451
|
+
// Water breathing multiplier, a product per stack — distinct from aura 82, which forces zero.
|
|
1452
|
+
// Cite: SpellAuras.cpp:1701-1706; Unit.cpp:4492-4500 GetTotalAuraMultiplier.
|
|
1453
|
+
kind: 'mod_water_breathing';
|
|
1454
|
+
/** Signed percent points added inside (100+amount)/100. Cite: Unit.cpp:4498. */
|
|
1455
|
+
amount: number;
|
|
1456
|
+
// This aura's contribution = (100+amount)/100 (stack product is SI5 runtime). Cite: Unit.cpp:4498.
|
|
1457
|
+
intervalMultiplier: number;
|
|
1458
|
+
durationMs: number;
|
|
1459
|
+
}
|
|
1460
|
+
| {
|
|
1461
|
+
// SPELL_AURA_MOD_REPUTATION_GAIN (156). NoImmediateEffect: Player::CalculateReputationGain adds
|
|
1462
|
+
// GetTotalAuraModifier. Bake empty. Cite: SpellAuras.cpp:217; Player.cpp:6297–6302.
|
|
1463
|
+
kind: 'mod_reputation_gain';
|
|
1464
|
+
// Signed percent points (Diplomacy +10). Applied as percent += ±repMod. Cite: Player.cpp:6297, :6302.
|
|
1465
|
+
amount: number;
|
|
1466
|
+
durationMs: number;
|
|
1467
|
+
}
|
|
1468
|
+
| {
|
|
1469
|
+
// No PvP credit, the Honorless Target aura: the honor reward returns false while the victim holds
|
|
1470
|
+
// it, and only that one spell uses it. Cite: Player.cpp:6626-6627.
|
|
1471
|
+
kind: 'no_pvp_credit';
|
|
1472
|
+
durationMs: number;
|
|
1473
|
+
}
|
|
1474
|
+
| {
|
|
1475
|
+
// Track Hidden, a player tracking flag. The bake is empty.
|
|
1476
|
+
// Cite: SpellAuras.cpp:2174-2179 HandleAuraTrackStealthed.
|
|
1477
|
+
kind: 'track_stealthed';
|
|
1478
|
+
durationMs: number;
|
|
1479
|
+
}
|
|
1480
|
+
// ── SI4 registry intents (dummy / script proof cases) ─────────────────────
|
|
1481
|
+
| {
|
|
1482
|
+
// Life Tap converts health to mana: the health cost is the script value with its modifiers, and
|
|
1483
|
+
// the mana is that base scaled by Improved Life Tap. Cite: Warlock.cpp:52-103.
|
|
1484
|
+
kind: 'life_tap';
|
|
1485
|
+
healthCost: number;
|
|
1486
|
+
manaGain: number;
|
|
1487
|
+
/** Life Tap mana energize custom spell. Cite: Warlock.cpp:102 (31818). */
|
|
1488
|
+
manaSpellId: number;
|
|
1489
|
+
// OnCheckCast: script value > caster health → SPELL_FAILED_FIZZLE. Set when ctx.casterHealth is
|
|
1490
|
+
// provided and check fails. Cite: Warlock.cpp:69–70.
|
|
1491
|
+
fizzled?: boolean;
|
|
1492
|
+
}
|
|
1493
|
+
| {
|
|
1494
|
+
// Judgement 20271 SCRIPT_EFFECT: remove seal + cast judgement spell from seal. Cite: Paladin.cpp
|
|
1495
|
+
// spell_judgement OnEffectExecute ~78–116.
|
|
1496
|
+
kind: 'judgement_cast';
|
|
1497
|
+
/** Seal aura spell id removed. Cite: RemoveAurasDueToSpell(sealId). */
|
|
1498
|
+
sealSpellId: number;
|
|
1499
|
+
/** Judgement spell from seal CalculateSimpleValue(EFFECT_INDEX_2). */
|
|
1500
|
+
judgementSpellId: number;
|
|
1501
|
+
};
|