azeroth-shell 0.0.0-stage → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +138 -2
- package/bin/azsh.mjs +19 -0
- package/docs/aifid/eventai-texts.json +4414 -0
- package/docs/dungeons/atlas/atlas-rows-dungeons.json +8989 -0
- package/docs/dungeons/survey/pack-id-migration.json +2418 -0
- package/package.json +35 -4
- package/src/autopilot/bossSkip.ts +26 -0
- package/src/autopilot/combatRotation.ts +824 -0
- package/src/autopilot/config.ts +533 -0
- package/src/autopilot/consumables.ts +58 -0
- package/src/autopilot/encounterStand.ts +121 -0
- package/src/autopilot/objectGatePlan.ts +53 -0
- package/src/autopilot/pathEngage.ts +229 -0
- package/src/autopilot/plan.ts +1643 -0
- package/src/autopilot/questPolicy.ts +274 -0
- package/src/autopilot/routeStep.ts +69 -0
- package/src/autopilot/sessionReport.ts +88 -0
- package/src/autopilot/topOffPower.ts +26 -0
- package/src/autopilot/view.ts +476 -0
- package/src/cli/bootCheck.mjs +34 -0
- package/src/cli/bootData.mjs +57 -0
- package/src/cli/combatLogFilter.ts +153 -0
- package/src/cli/combatLogFormat.ts +613 -0
- package/src/cli/fileRepository.mjs +105 -0
- package/src/cli/gzLoader.mjs +31 -0
- package/src/cli/liveGauntletEscort.ts +978 -0
- package/src/cli/liveStratUndead.ts +305 -0
- package/src/cli/macroHostCombat.ts +545 -0
- package/src/cli/macroHostWorld.ts +330 -0
- package/src/cli/prefs.mjs +31 -0
- package/src/cli/register.mjs +4 -0
- package/src/cli/repl.mjs +693 -0
- package/src/cli/rotationText.mjs +226 -0
- package/src/cli/squad.mjs +105 -0
- package/src/cli/term.mjs +144 -0
- package/src/cli/text.mjs +122 -0
- package/src/cli/tui.mjs +626 -0
- package/src/cli/tuiArena.mjs +109 -0
- package/src/cli/tuiAutopilotSettings.mjs +93 -0
- package/src/cli/tuiBags.mjs +180 -0
- package/src/cli/tuiBars.mjs +133 -0
- package/src/cli/tuiBg.mjs +243 -0
- package/src/cli/tuiBulk.mjs +162 -0
- package/src/cli/tuiCheck.mjs +1882 -0
- package/src/cli/tuiCity.mjs +396 -0
- package/src/cli/tuiCompanionKit.mjs +300 -0
- package/src/cli/tuiCompanions.mjs +471 -0
- package/src/cli/tuiDev.mjs +62 -0
- package/src/cli/tuiDungeon.mjs +606 -0
- package/src/cli/tuiEnchantTarget.mjs +120 -0
- package/src/cli/tuiFight.mjs +577 -0
- package/src/cli/tuiFightPanes.mjs +228 -0
- package/src/cli/tuiFloor.mjs +506 -0
- package/src/cli/tuiGear.mjs +158 -0
- package/src/cli/tuiHonor.mjs +74 -0
- package/src/cli/tuiLoot.mjs +97 -0
- package/src/cli/tuiMacros.mjs +144 -0
- package/src/cli/tuiOutfitter.mjs +115 -0
- package/src/cli/tuiPet.mjs +116 -0
- package/src/cli/tuiProfessions.mjs +800 -0
- package/src/cli/tuiRaid.mjs +127 -0
- package/src/cli/tuiRep.mjs +65 -0
- package/src/cli/tuiSaves.mjs +69 -0
- package/src/cli/tuiSearch.mjs +363 -0
- package/src/cli/tuiSettings.mjs +151 -0
- package/src/cli/tuiSimLab.mjs +80 -0
- package/src/cli/tuiTalents.mjs +60 -0
- package/src/cli/tuiViews.mjs +1178 -0
- package/src/cli/tuiWiki.mjs +181 -0
- package/src/cli/tuiWorld.mjs +361 -0
- package/src/cli/wikiIndex.ts +259 -0
- package/src/cli/wikiSources.ts +355 -0
- package/src/data/alteracValley.ts +176 -0
- package/src/data/appearanceOptions.ts +534 -0
- package/src/data/applyLootChanceSanity.ts +21 -0
- package/src/data/createFlavor.ts +96 -0
- package/src/data/customItems.ts +33 -0
- package/src/data/dataStore.ts +1904 -0
- package/src/data/dungeonGameObjects.ts +84 -0
- package/src/data/dungeonPlateCover.ts +66 -0
- package/src/data/dungeonSpawns.ts +294 -0
- package/src/data/dungeons/alterac-valley.ts +135 -0
- package/src/data/dungeons/apply-dungeon-rooms.ts +29 -0
- package/src/data/dungeons/apply-encounter-outdoors.ts +72 -0
- package/src/data/dungeons/apply-instance-geometry.ts +65 -0
- package/src/data/dungeons/apply-spawn-placement.ts +171 -0
- package/src/data/dungeons/blackfathom-deeps.ts +539 -0
- package/src/data/dungeons/blackrock-depths.ts +1410 -0
- package/src/data/dungeons/blackwing-lair.ts +129 -0
- package/src/data/dungeons/boss-eventai.ts +8 -0
- package/src/data/dungeons/deadmines.ts +410 -0
- package/src/data/dungeons/dire-maul-east.ts +980 -0
- package/src/data/dungeons/dire-maul-north.ts +661 -0
- package/src/data/dungeons/dire-maul-west.ts +785 -0
- package/src/data/dungeons/dungeon-rooms.json +5479 -0
- package/src/data/dungeons/encounter-outdoors.json +359 -0
- package/src/data/dungeons/eventai/blackfathom-deeps.ts +308 -0
- package/src/data/dungeons/eventai/blackrock-depths.ts +1257 -0
- package/src/data/dungeons/eventai/deadmines.ts +264 -0
- package/src/data/dungeons/eventai/dire-maul-east.ts +320 -0
- package/src/data/dungeons/eventai/gnomeregan.ts +213 -0
- package/src/data/dungeons/eventai/helpers.ts +79 -0
- package/src/data/dungeons/eventai/index.ts +133 -0
- package/src/data/dungeons/eventai/lbrs.ts +372 -0
- package/src/data/dungeons/eventai/maraudon.ts +323 -0
- package/src/data/dungeons/eventai/ragefire-chasm.ts +108 -0
- package/src/data/dungeons/eventai/razorfen-downs.ts +207 -0
- package/src/data/dungeons/eventai/razorfen-kraul.ts +326 -0
- package/src/data/dungeons/eventai/scholomance.ts +680 -0
- package/src/data/dungeons/eventai/shadowfang-keep.ts +230 -0
- package/src/data/dungeons/eventai/sm-cathedral.ts +75 -0
- package/src/data/dungeons/eventai/sm-graveyard.ts +150 -0
- package/src/data/dungeons/eventai/sm-library.ts +55 -0
- package/src/data/dungeons/eventai/stratholme-undead.ts +127 -0
- package/src/data/dungeons/eventai/sunken-temple.ts +582 -0
- package/src/data/dungeons/eventai/the-stockade.ts +228 -0
- package/src/data/dungeons/eventai/ubrs.ts +225 -0
- package/src/data/dungeons/eventai/uldaman.ts +355 -0
- package/src/data/dungeons/eventai/wailing-caverns.ts +396 -0
- package/src/data/dungeons/eventai/zul-farrak.ts +591 -0
- package/src/data/dungeons/gnomeregan.ts +909 -0
- package/src/data/dungeons/index.ts +126 -0
- package/src/data/dungeons/instance-geometry.json +5233 -0
- package/src/data/dungeons/key-sources.json +169 -0
- package/src/data/dungeons/lbrs.ts +996 -0
- package/src/data/dungeons/maraudon.ts +786 -0
- package/src/data/dungeons/molten-core.ts +194 -0
- package/src/data/dungeons/naxxramas.ts +173 -0
- package/src/data/dungeons/onyxias-lair.ts +71 -0
- package/src/data/dungeons/pack-from-clusters.ts +1256 -0
- package/src/data/dungeons/ragefire-chasm.ts +238 -0
- package/src/data/dungeons/razorfen-downs.ts +698 -0
- package/src/data/dungeons/razorfen-kraul.ts +766 -0
- package/src/data/dungeons/ruins-of-ahnqiraj.ts +121 -0
- package/src/data/dungeons/scholomance.ts +1076 -0
- package/src/data/dungeons/shadowfang-keep.ts +740 -0
- package/src/data/dungeons/sm-armory.ts +266 -0
- package/src/data/dungeons/sm-cathedral.ts +430 -0
- package/src/data/dungeons/sm-graveyard.ts +482 -0
- package/src/data/dungeons/sm-library.ts +337 -0
- package/src/data/dungeons/stratholme-live.ts +808 -0
- package/src/data/dungeons/stratholme-undead.ts +1164 -0
- package/src/data/dungeons/sunken-temple.ts +931 -0
- package/src/data/dungeons/temple-of-ahnqiraj.ts +119 -0
- package/src/data/dungeons/the-stockade.ts +282 -0
- package/src/data/dungeons/ubrs.ts +1286 -0
- package/src/data/dungeons/uldaman.ts +685 -0
- package/src/data/dungeons/wailing-caverns.ts +356 -0
- package/src/data/dungeons/zul-farrak.ts +686 -0
- package/src/data/dungeons/zul-gurub.ts +142 -0
- package/src/data/dungeons.ts +42 -0
- package/src/data/fixtures.ts +446 -0
- package/src/data/gameobject-data.json.gz +0 -0
- package/src/data/item-data.json.gz +0 -0
- package/src/data/loot-data.json.gz +0 -0
- package/src/data/maps/atlas-approach-maps.json +1425 -0
- package/src/data/maps/atlas-landmarks.json +1711 -0
- package/src/data/maps/dungeon-viewports.json +392 -0
- package/src/data/materializeModDamagePercentTaken.ts +70 -0
- package/src/data/materializeModHealthRegen.ts +89 -0
- package/src/data/materializeSpellReputation.ts +26 -0
- package/src/data/pageTexts.ts +19 -0
- package/src/data/profession-data.json.gz +0 -0
- package/src/data/raid-plans/blackfathom-deeps.json +86 -0
- package/src/data/raid-plans/blackrock-depths.json +419 -0
- package/src/data/raid-plans/blackwing-lair.json +328 -0
- package/src/data/raid-plans/deadmines.json +55 -0
- package/src/data/raid-plans/dire-maul-east.json +94 -0
- package/src/data/raid-plans/dire-maul-north.json +70 -0
- package/src/data/raid-plans/dire-maul-west.json +75 -0
- package/src/data/raid-plans/gnomeregan.json +131 -0
- package/src/data/raid-plans/lbrs.json +176 -0
- package/src/data/raid-plans/maraudon.json +102 -0
- package/src/data/raid-plans/molten-core.json +169 -0
- package/src/data/raid-plans/naxxramas.json +354 -0
- package/src/data/raid-plans/onyxias-lair.json +18 -0
- package/src/data/raid-plans/ragefire-chasm.json +30 -0
- package/src/data/raid-plans/razorfen-downs.json +75 -0
- package/src/data/raid-plans/razorfen-kraul.json +53 -0
- package/src/data/raid-plans/ruins-of-ahnqiraj.json +110 -0
- package/src/data/raid-plans/scholomance.json +170 -0
- package/src/data/raid-plans/shadowfang-keep.json +87 -0
- package/src/data/raid-plans/sm-armory.json +53 -0
- package/src/data/raid-plans/sm-cathedral.json +72 -0
- package/src/data/raid-plans/sm-graveyard.json +63 -0
- package/src/data/raid-plans/sm-library.json +23 -0
- package/src/data/raid-plans/stratholme-live.json +129 -0
- package/src/data/raid-plans/stratholme-undead.json +73 -0
- package/src/data/raid-plans/sunken-temple.json +159 -0
- package/src/data/raid-plans/temple-of-ahnqiraj.json +163 -0
- package/src/data/raid-plans/the-stockade.json +42 -0
- package/src/data/raid-plans/ubrs.json +53 -0
- package/src/data/raid-plans/uldaman.json +131 -0
- package/src/data/raid-plans/wailing-caverns.json +90 -0
- package/src/data/raid-plans/zul-farrak.json +156 -0
- package/src/data/raid-plans/zul-gurub.json +307 -0
- package/src/data/raidInstanceCreatures.mjs +473 -0
- package/src/data/rotations/index.ts +152 -0
- package/src/data/rotations/layout.mjs +72 -0
- package/src/data/rotations/pve/druid/balance.json +754 -0
- package/src/data/rotations/pve/druid/feral-tank.json +2448 -0
- package/src/data/rotations/pve/druid/feral.json +2660 -0
- package/src/data/rotations/pve/druid/restoration.json +424 -0
- package/src/data/rotations/pve/hunter/beast-mastery.json +1288 -0
- package/src/data/rotations/pve/hunter/marksmanship.json +1260 -0
- package/src/data/rotations/pve/hunter/survival.json +1373 -0
- package/src/data/rotations/pve/mage/arcane-leveling.json +1798 -0
- package/src/data/rotations/pve/mage/fire-leveling.json +2003 -0
- package/src/data/rotations/pve/mage/frost-leveling.json +1912 -0
- package/src/data/rotations/pve/paladin/holy.json +755 -0
- package/src/data/rotations/pve/paladin/protection.json +962 -0
- package/src/data/rotations/pve/paladin/retribution.json +924 -0
- package/src/data/rotations/pve/priest/discipline.json +772 -0
- package/src/data/rotations/pve/priest/holy.json +707 -0
- package/src/data/rotations/pve/priest/shadow.json +787 -0
- package/src/data/rotations/pve/rogue/assassination.json +2477 -0
- package/src/data/rotations/pve/rogue/combat.json +2483 -0
- package/src/data/rotations/pve/rogue/subtlety.json +2523 -0
- package/src/data/rotations/pve/shaman/elemental.json +1157 -0
- package/src/data/rotations/pve/shaman/enhancement.json +1085 -0
- package/src/data/rotations/pve/shaman/restoration.json +592 -0
- package/src/data/rotations/pve/warlock/affliction.json +1185 -0
- package/src/data/rotations/pve/warlock/demonology.json +1165 -0
- package/src/data/rotations/pve/warlock/destruction.json +1177 -0
- package/src/data/rotations/pve/warrior/arms.json +3020 -0
- package/src/data/rotations/pve/warrior/fury.json +2996 -0
- package/src/data/rotations/pve/warrior/protection.json +2509 -0
- package/src/data/rotations/pvp/druid/balance.json +593 -0
- package/src/data/rotations/pvp/druid/feral.json +3276 -0
- package/src/data/rotations/pvp/druid/restoration.json +662 -0
- package/src/data/rotations/pvp/hunter/beast-mastery.json +665 -0
- package/src/data/rotations/pvp/hunter/marksmanship.json +2406 -0
- package/src/data/rotations/pvp/hunter/survival.json +635 -0
- package/src/data/rotations/pvp/mage/arcane.json +574 -0
- package/src/data/rotations/pvp/mage/fire.json +570 -0
- package/src/data/rotations/pvp/mage/frost.json +4048 -0
- package/src/data/rotations/pvp/paladin/holy.json +1498 -0
- package/src/data/rotations/pvp/paladin/protection.json +567 -0
- package/src/data/rotations/pvp/paladin/retribution.json +1110 -0
- package/src/data/rotations/pvp/priest/discipline.json +1848 -0
- package/src/data/rotations/pvp/priest/holy.json +6340 -0
- package/src/data/rotations/pvp/priest/shadow.json +2329 -0
- package/src/data/rotations/pvp/rogue/assassination.json +1322 -0
- package/src/data/rotations/pvp/rogue/combat.json +5258 -0
- package/src/data/rotations/pvp/rogue/subtlety.json +586 -0
- package/src/data/rotations/pvp/shaman/elemental.json +1404 -0
- package/src/data/rotations/pvp/shaman/enhancement.json +1277 -0
- package/src/data/rotations/pvp/shaman/restoration.json +2490 -0
- package/src/data/rotations/pvp/warlock/affliction.json +1017 -0
- package/src/data/rotations/pvp/warlock/demonology.json +1503 -0
- package/src/data/rotations/pvp/warlock/destruction.json +638 -0
- package/src/data/rotations/pvp/warrior/arms.json +5665 -0
- package/src/data/rotations/pvp/warrior/fury.json +850 -0
- package/src/data/rotations/pvp/warrior/protection.json +777 -0
- package/src/data/schema/bundle.ts +511 -0
- package/src/data/schema/constants.ts +49 -0
- package/src/data/schema/creature.ts +454 -0
- package/src/data/schema/encounter.ts +155 -0
- package/src/data/schema/faction.ts +48 -0
- package/src/data/schema/item.ts +297 -0
- package/src/data/schema/itemEnchant.ts +105 -0
- package/src/data/schema/npc.ts +44 -0
- package/src/data/schema/primitives.ts +295 -0
- package/src/data/schema/profession.ts +226 -0
- package/src/data/schema/quest.ts +154 -0
- package/src/data/schema/spell.ts +1149 -0
- package/src/data/schema/talent.ts +74 -0
- package/src/data/schema/world.ts +124 -0
- package/src/data/schema.ts +19 -0
- package/src/data/skinNodeGapFill.ts +68 -0
- package/src/data/spell-data.json.gz +0 -0
- package/src/data/spell-script-targets.json +1 -0
- package/src/data/tables/ahItemValues.json.gz +0 -0
- package/src/data/tables/alteracValley.json.gz +0 -0
- package/src/data/tables/areatriggerTeleports.json.gz +0 -0
- package/src/data/tables/botNames.json.gz +0 -0
- package/src/data/tables/botPopulation.json.gz +0 -0
- package/src/data/tables/botSpecs.json.gz +0 -0
- package/src/data/tables/classLevelStats.json.gz +0 -0
- package/src/data/tables/combatConditions.json.gz +0 -0
- package/src/data/tables/combatSkillMeta.json.gz +0 -0
- package/src/data/tables/conditions.json.gz +0 -0
- package/src/data/tables/createInfo.json.gz +0 -0
- package/src/data/tables/creatureAggroGroups.json.gz +0 -0
- package/src/data/tables/creatureClassLevelStats.json.gz +0 -0
- package/src/data/tables/creaturePatrolPacks.json.gz +0 -0
- package/src/data/tables/creatureWeapons.json.gz +0 -0
- package/src/data/tables/creatures.json.gz +0 -0
- package/src/data/tables/dbScripts.json.gz +0 -0
- package/src/data/tables/dungeonAuthoredRoutes.json.gz +0 -0
- package/src/data/tables/dungeonCensus.json.gz +0 -0
- package/src/data/tables/dungeonGameObjects.json.gz +0 -0
- package/src/data/tables/dungeonPacks.json.gz +0 -0
- package/src/data/tables/dungeonPlateCover.json.gz +0 -0
- package/src/data/tables/dungeonSpawns.json.gz +0 -0
- package/src/data/tables/dungeonSurvey.json.gz +0 -0
- package/src/data/tables/durabilityCosts.json.gz +0 -0
- package/src/data/tables/durabilityQuality.json.gz +0 -0
- package/src/data/tables/enchantApplicators.json.gz +0 -0
- package/src/data/tables/entranceYards.json.gz +0 -0
- package/src/data/tables/explorationBasexp.json.gz +0 -0
- package/src/data/tables/factionTemplates.json.gz +0 -0
- package/src/data/tables/factions.json.gz +0 -0
- package/src/data/tables/gameEvents.json.gz +0 -0
- package/src/data/tables/gameObjects.json.gz +0 -0
- package/src/data/tables/gossipMenus.json.gz +0 -0
- package/src/data/tables/graveyards.json.gz +0 -0
- package/src/data/tables/instanceMaps.json.gz +0 -0
- package/src/data/tables/itemEnchantmentTemplates.json.gz +0 -0
- package/src/data/tables/itemEnchants.json.gz +0 -0
- package/src/data/tables/itemRandomProperties.json.gz +0 -0
- package/src/data/tables/itemSets.json.gz +0 -0
- package/src/data/tables/items.json.gz +0 -0
- package/src/data/tables/levelStats.json.gz +0 -0
- package/src/data/tables/locks.json.gz +0 -0
- package/src/data/tables/map-pin-overrides.json.gz +0 -0
- package/src/data/tables/nonCombatTrash.json.gz +0 -0
- package/src/data/tables/npcTexts.json.gz +0 -0
- package/src/data/tables/pageTexts.json.gz +0 -0
- package/src/data/tables/petAbilityTP.json.gz +0 -0
- package/src/data/tables/petGenericSpells.json.gz +0 -0
- package/src/data/tables/petLevelStats.json.gz +0 -0
- package/src/data/tables/playerbot-weightscales.json.gz +0 -0
- package/src/data/tables/pools.json.gz +0 -0
- package/src/data/tables/quests.json.gz +0 -0
- package/src/data/tables/races.json.gz +0 -0
- package/src/data/tables/reputationRanks.json.gz +0 -0
- package/src/data/tables/reputationRates.json.gz +0 -0
- package/src/data/tables/reputationSpillover.json.gz +0 -0
- package/src/data/tables/ridingSpells.json.gz +0 -0
- package/src/data/tables/scriptTexts.json.gz +0 -0
- package/src/data/tables/soundClipVolume.json.gz +0 -0
- package/src/data/tables/spellChain.json.gz +0 -0
- package/src/data/tables/spellTeleports.json.gz +0 -0
- package/src/data/tables/spells.json.gz +0 -0
- package/src/data/tables/talents.json.gz +0 -0
- package/src/data/tables/tavernTriggers.json.gz +0 -0
- package/src/data/tables/taxiNodes.json.gz +0 -0
- package/src/data/tables/taxiRoutes.json.gz +0 -0
- package/src/data/tables/trainers.json.gz +0 -0
- package/src/data/tables/transports.json.gz +0 -0
- package/src/data/tables/travelAnchors.json.gz +0 -0
- package/src/data/tables/travelEdges.json.gz +0 -0
- package/src/data/tables/unitConditions.json.gz +0 -0
- package/src/data/tables/vendors.json.gz +0 -0
- package/src/data/tables/weaponEnchantProcs.json.gz +0 -0
- package/src/data/tables/xp.json.gz +0 -0
- package/src/data/tables/zoneWeather.json.gz +0 -0
- package/src/data/tables/zones.json.gz +0 -0
- package/src/data/world-data.ts +56 -0
- package/src/data/zone-music-sets.json +2751 -0
- package/src/dev/etl/lib/loot-chance-sanity.mjs +180 -0
- package/src/domain/audioQuality.mjs +145 -0
- package/src/domain/bg/ab.ts +433 -0
- package/src/domain/bg/arenaComps.ts +644 -0
- package/src/domain/bg/arenaLab.ts +695 -0
- package/src/domain/bg/arenaPace.ts +31 -0
- package/src/domain/bg/arenaRating.ts +110 -0
- package/src/domain/bg/av.ts +758 -0
- package/src/domain/bg/avEnemyPush.ts +219 -0
- package/src/domain/bg/avField.ts +283 -0
- package/src/domain/bg/avInstanceNodes.ts +197 -0
- package/src/domain/bg/avInstanceScore.ts +123 -0
- package/src/domain/bg/avQuestItems.ts +55 -0
- package/src/domain/bg/avQuests.ts +210 -0
- package/src/domain/bg/avSession.ts +196 -0
- package/src/domain/bg/bgConsumes.ts +269 -0
- package/src/domain/bg/bgPrebuff.ts +153 -0
- package/src/domain/bg/bgRest.ts +91 -0
- package/src/domain/bg/bgRoster.ts +305 -0
- package/src/domain/bg/bgTier.ts +61 -0
- package/src/domain/bg/bgWorld.ts +862 -0
- package/src/domain/bg/match.ts +215 -0
- package/src/domain/bg/strategies.ts +552 -0
- package/src/domain/bg/types.ts +291 -0
- package/src/domain/bg/wsg.ts +264 -0
- package/src/domain/bots/actionProviderSpec.ts +38 -0
- package/src/domain/bots/autoConsumables.ts +285 -0
- package/src/domain/bots/betweenPullRest.ts +239 -0
- package/src/domain/bots/botGear.ts +248 -0
- package/src/domain/bots/botInventory.ts +486 -0
- package/src/domain/bots/botPet.ts +535 -0
- package/src/domain/bots/botPool.ts +291 -0
- package/src/domain/bots/botProfessions.ts +334 -0
- package/src/domain/bots/companionActionBar.ts +209 -0
- package/src/domain/bots/companionHireCost.ts +236 -0
- package/src/domain/bots/companionMissions.ts +582 -0
- package/src/domain/bots/companionPrep.ts +254 -0
- package/src/domain/bots/companionQuests.ts +270 -0
- package/src/domain/bots/companionRep.ts +75 -0
- package/src/domain/bots/companionRotation.ts +708 -0
- package/src/domain/bots/companionXp.ts +66 -0
- package/src/domain/bots/consumableShare.ts +811 -0
- package/src/domain/bots/dpsMate.ts +1072 -0
- package/src/domain/bots/groupCompReport.ts +132 -0
- package/src/domain/bots/healthstoneSupply.ts +198 -0
- package/src/domain/bots/outfitter.ts +1056 -0
- package/src/domain/bots/paladinPrePull.ts +231 -0
- package/src/domain/bots/partyRole.ts +40 -0
- package/src/domain/bots/playerbotEquipCache.ts +412 -0
- package/src/domain/bots/playerbotItemEligibility.ts +60 -0
- package/src/domain/bots/playerbotStatWeight.ts +853 -0
- package/src/domain/bots/playerbotUnavailableItems.ts +147 -0
- package/src/domain/bots/prePullBuffs.ts +219 -0
- package/src/domain/bots/prePullStealth.ts +82 -0
- package/src/domain/bots/runSupply.ts +251 -0
- package/src/domain/bots/runSupplyPrefs.ts +28 -0
- package/src/domain/bots/sendTradeGoods.ts +394 -0
- package/src/domain/bots/soulShardCap.ts +35 -0
- package/src/domain/bots/squad.ts +842 -0
- package/src/domain/bots/squadRun.ts +81 -0
- package/src/domain/character/actionbar.ts +346 -0
- package/src/domain/character/appearance.ts +165 -0
- package/src/domain/character/buildCombatant.ts +1726 -0
- package/src/domain/character/character.ts +356 -0
- package/src/domain/character/characterName.ts +43 -0
- package/src/domain/character/characterRatings.ts +424 -0
- package/src/domain/character/characterSpells.ts +282 -0
- package/src/domain/character/characterStats.ts +1559 -0
- package/src/domain/character/characterTalents.ts +398 -0
- package/src/domain/character/combatSkills.ts +994 -0
- package/src/domain/character/displayForm.ts +72 -0
- package/src/domain/character/formTalentAuras.ts +171 -0
- package/src/domain/character/forms.ts +499 -0
- package/src/domain/character/races.ts +40 -0
- package/src/domain/character/resurrectionSickness.ts +49 -0
- package/src/domain/character/spellbook.ts +169 -0
- package/src/domain/character/stanceBar.ts +354 -0
- package/src/domain/character/stancePrereq.ts +70 -0
- package/src/domain/character/talentBuilds.ts +63 -0
- package/src/domain/character/talentImport.ts +130 -0
- package/src/domain/character/talentLink.ts +123 -0
- package/src/domain/character/talents.ts +201 -0
- package/src/domain/core/conditionSnapshot.ts +92 -0
- package/src/domain/core/hover.ts +14 -0
- package/src/domain/core/ids.ts +58 -0
- package/src/domain/core/internalNameTags.ts +5 -0
- package/src/domain/core/runtimeDataPatches.ts +357 -0
- package/src/domain/creature/aiTargeting.ts +588 -0
- package/src/domain/creature/combatCondition.ts +157 -0
- package/src/domain/creature/creatureAggro.ts +804 -0
- package/src/domain/creature/creatureAi.ts +206 -0
- package/src/domain/creature/creatureAiConstants.ts +661 -0
- package/src/domain/creature/creatureCastList.ts +1007 -0
- package/src/domain/creature/creatureEventAi.ts +1409 -0
- package/src/domain/creature/creatureGroups.ts +144 -0
- package/src/domain/creature/creatureLinking.ts +333 -0
- package/src/domain/creature/creatureScaling.ts +320 -0
- package/src/domain/creature/creatureTrigger.ts +53 -0
- package/src/domain/creature/creatureWander.ts +74 -0
- package/src/domain/creature/eventAiTexts.ts +145 -0
- package/src/domain/creature/faction.ts +287 -0
- package/src/domain/creature/forcedReaction.ts +48 -0
- package/src/domain/creature/outdoorHuntable.ts +74 -0
- package/src/domain/creature/patrolPacks.ts +210 -0
- package/src/domain/creature/reputation.ts +967 -0
- package/src/domain/creature/unitFlags.ts +74 -0
- package/src/domain/creature/worldBosses.ts +393 -0
- package/src/domain/dungeonMusic.mjs +48 -0
- package/src/domain/economy/auction.ts +282 -0
- package/src/domain/economy/auctionBot.ts +1060 -0
- package/src/domain/economy/honorPrice.ts +100 -0
- package/src/domain/economy/mail.ts +958 -0
- package/src/domain/economy/money.ts +42 -0
- package/src/domain/economy/syntheticClassTrainers.ts +62 -0
- package/src/domain/economy/trading.ts +296 -0
- package/src/domain/economy/vendorSellAll.ts +252 -0
- package/src/domain/economy/vendorStock.ts +146 -0
- package/src/domain/items/ammo.ts +817 -0
- package/src/domain/items/bank.ts +162 -0
- package/src/domain/items/consumableFamily.ts +205 -0
- package/src/domain/items/craftUpgrades.ts +83 -0
- package/src/domain/items/createItem.ts +93 -0
- package/src/domain/items/durability.ts +581 -0
- package/src/domain/items/equipment.ts +441 -0
- package/src/domain/items/equipmentHelper.ts +767 -0
- package/src/domain/items/inventory.ts +561 -0
- package/src/domain/items/itemBonding.ts +93 -0
- package/src/domain/items/itemContainer.ts +245 -0
- package/src/domain/items/itemDisplayName.ts +33 -0
- package/src/domain/items/itemInstance.ts +181 -0
- package/src/domain/items/itemRandomEnchantOutcomes.ts +315 -0
- package/src/domain/items/itemRandomProps.ts +77 -0
- package/src/domain/items/itemRestrictions.ts +329 -0
- package/src/domain/items/itemTeaches.ts +82 -0
- package/src/domain/items/itemUseCooldown.ts +52 -0
- package/src/domain/items/itemUseTarget.ts +90 -0
- package/src/domain/items/junkCategories.ts +174 -0
- package/src/domain/items/junkFilter.ts +368 -0
- package/src/domain/items/keyring.ts +131 -0
- package/src/domain/items/loot.ts +221 -0
- package/src/domain/items/mounts.ts +190 -0
- package/src/domain/items/onUsePayload.ts +102 -0
- package/src/domain/items/pendingLoot.ts +107 -0
- package/src/domain/items/relic.ts +105 -0
- package/src/domain/items/rocketBoots.ts +36 -0
- package/src/domain/items/sortContainer.ts +139 -0
- package/src/domain/items/spareContainers.ts +71 -0
- package/src/domain/items/spellReagentIndex.ts +131 -0
- package/src/domain/items/staleConsumables.ts +66 -0
- package/src/domain/items/weaponSpender.ts +110 -0
- package/src/domain/listDungeonIds.mjs +28 -0
- package/src/domain/macro/compose.ts +239 -0
- package/src/domain/macro/conditions.ts +260 -0
- package/src/domain/macro/creatureTypes.ts +40 -0
- package/src/domain/macro/describe.ts +169 -0
- package/src/domain/macro/icon.ts +60 -0
- package/src/domain/macro/index.ts +20 -0
- package/src/domain/macro/normalize.ts +112 -0
- package/src/domain/macro/parse.ts +316 -0
- package/src/domain/macro/plan.ts +288 -0
- package/src/domain/macro/rotation.ts +590 -0
- package/src/domain/macro/rotationEnv.ts +173 -0
- package/src/domain/macro/slots.ts +101 -0
- package/src/domain/macro/snapshot.ts +114 -0
- package/src/domain/macro/templates.ts +446 -0
- package/src/domain/macro/types.ts +70 -0
- package/src/domain/macro/units.ts +93 -0
- package/src/domain/macro/weaponTypes.ts +83 -0
- package/src/domain/nav/cityTeleports.ts +10 -0
- package/src/domain/nav/mounting.ts +113 -0
- package/src/domain/nav/nav.ts +43 -0
- package/src/domain/nav/navCollision.ts +606 -0
- package/src/domain/nav/navOutdoors.ts +91 -0
- package/src/domain/nav/navRegistry.ts +179 -0
- package/src/domain/nav/navRoomGraph.ts +302 -0
- package/src/domain/nav/navTypes.ts +43 -0
- package/src/domain/nav/navmesh.ts +1715 -0
- package/src/domain/nav/speed.ts +200 -0
- package/src/domain/nav/storey.ts +10 -0
- package/src/domain/nav/travel.ts +725 -0
- package/src/domain/nav/travelTypes.ts +75 -0
- package/src/domain/pet/pet.ts +1150 -0
- package/src/domain/pet/petActionBar.ts +180 -0
- package/src/domain/pet/petSpellbook.ts +39 -0
- package/src/domain/pet/petStable.ts +81 -0
- package/src/domain/professions/autoDisenchant.ts +236 -0
- package/src/domain/professions/characterEnchants.ts +176 -0
- package/src/domain/professions/craftCooldown.ts +52 -0
- package/src/domain/professions/enchantApply.ts +62 -0
- package/src/domain/professions/enchantTargets.ts +114 -0
- package/src/domain/professions/enchanting.ts +236 -0
- package/src/domain/professions/gatherFilter.ts +149 -0
- package/src/domain/professions/gearEnchant.ts +137 -0
- package/src/domain/professions/heldTools.ts +29 -0
- package/src/domain/professions/learnAllRecipes.ts +146 -0
- package/src/domain/professions/miningHarvest.ts +69 -0
- package/src/domain/professions/partyDisenchant.ts +294 -0
- package/src/domain/professions/partyWork.ts +83 -0
- package/src/domain/professions/pickpocket.ts +172 -0
- package/src/domain/professions/poisons.ts +240 -0
- package/src/domain/professions/professions.ts +677 -0
- package/src/domain/professions/rareNodes.ts +45 -0
- package/src/domain/professions/skinLoot.ts +27 -0
- package/src/domain/professions/vendorReagents.ts +152 -0
- package/src/domain/professions/weaponImbueHand.ts +171 -0
- package/src/domain/questFarmFilter.mjs +42 -0
- package/src/domain/quests/doQuest.ts +1204 -0
- package/src/domain/quests/gossip.ts +308 -0
- package/src/domain/quests/gossipTalk.ts +298 -0
- package/src/domain/quests/interpreter/canComplete.ts +150 -0
- package/src/domain/quests/interpreter/claim.ts +137 -0
- package/src/domain/quests/interpreter/dbscript/handlers.ts +1371 -0
- package/src/domain/quests/interpreter/dbscript/handlersBatch.ts +1251 -0
- package/src/domain/quests/interpreter/dbscript/hooks.ts +331 -0
- package/src/domain/quests/interpreter/dbscript/index.ts +212 -0
- package/src/domain/quests/interpreter/dbscript/opcodes.ts +257 -0
- package/src/domain/quests/interpreter/dbscript/registry.ts +1194 -0
- package/src/domain/quests/interpreter/dbscript/registryAreatriggerScripts.ts +539 -0
- package/src/domain/quests/interpreter/dbscript/registryAshenvale.ts +553 -0
- package/src/domain/quests/interpreter/dbscript/registryAzshara.ts +272 -0
- package/src/domain/quests/interpreter/dbscript/registryDarkshore.ts +637 -0
- package/src/domain/quests/interpreter/dbscript/registryDesolace.ts +501 -0
- package/src/domain/quests/interpreter/dbscript/registryDustwallowMarsh.ts +735 -0
- package/src/domain/quests/interpreter/dbscript/registryFelwood.ts +493 -0
- package/src/domain/quests/interpreter/dbscript/registryFeralas.ts +485 -0
- package/src/domain/quests/interpreter/dbscript/registryGoScripts.ts +203 -0
- package/src/domain/quests/interpreter/dbscript/registryMoonglade.ts +288 -0
- package/src/domain/quests/interpreter/dbscript/registryNpcProfessions.ts +230 -0
- package/src/domain/quests/interpreter/dbscript/registryNpcsSpecial.ts +545 -0
- package/src/domain/quests/interpreter/dbscript/registryRazorfenDowns.ts +293 -0
- package/src/domain/quests/interpreter/dbscript/registryRazorfenKraul.ts +221 -0
- package/src/domain/quests/interpreter/dbscript/registryRedridge.ts +112 -0
- package/src/domain/quests/interpreter/dbscript/registrySearingGorge.ts +125 -0
- package/src/domain/quests/interpreter/dbscript/registrySiblings.ts +51 -0
- package/src/domain/quests/interpreter/dbscript/registrySilverpineForest.ts +172 -0
- package/src/domain/quests/interpreter/dbscript/registryStonetalonMountains.ts +180 -0
- package/src/domain/quests/interpreter/dbscript/registryStormwindCity.ts +369 -0
- package/src/domain/quests/interpreter/dbscript/registryStranglethornVale.ts +115 -0
- package/src/domain/quests/interpreter/dbscript/registryStratholme.ts +146 -0
- package/src/domain/quests/interpreter/dbscript/registrySunkenTemple.ts +149 -0
- package/src/domain/quests/interpreter/dbscript/registrySwampOfSorrows.ts +163 -0
- package/src/domain/quests/interpreter/dbscript/registryTanaris.ts +318 -0
- package/src/domain/quests/interpreter/dbscript/registryTeldrassil.ts +120 -0
- package/src/domain/quests/interpreter/dbscript/registryTheBarrens.ts +603 -0
- package/src/domain/quests/interpreter/dbscript/registryThousandNeedles.ts +499 -0
- package/src/domain/quests/interpreter/dbscript/registryTirisfalGlades.ts +222 -0
- package/src/domain/quests/interpreter/dbscript/registryUngoroCrater.ts +291 -0
- package/src/domain/quests/interpreter/dbscript/registryWarEffort.ts +773 -0
- package/src/domain/quests/interpreter/dbscript/registryWesternPlaguelands.ts +206 -0
- package/src/domain/quests/interpreter/dbscript/registryWestfall.ts +190 -0
- package/src/domain/quests/interpreter/dbscript/registryWetlands.ts +186 -0
- package/src/domain/quests/interpreter/dbscript/registryWinterspring.ts +235 -0
- package/src/domain/quests/interpreter/dbscript/types.ts +817 -0
- package/src/domain/quests/interpreter/dbscript/vm.ts +171 -0
- package/src/domain/quests/interpreter/diff.ts +349 -0
- package/src/domain/quests/interpreter/fixtures/oracle-questlog-qi2.json +2417 -0
- package/src/domain/quests/interpreter/flags.ts +101 -0
- package/src/domain/quests/interpreter/index.ts +113 -0
- package/src/domain/quests/interpreter/live.ts +178 -0
- package/src/domain/quests/interpreter/types.ts +81 -0
- package/src/domain/quests/interpreter/updaters.ts +412 -0
- package/src/domain/quests/questCorpseUse.ts +155 -0
- package/src/domain/quests/questDialog.ts +43 -0
- package/src/domain/quests/questFight.ts +34 -0
- package/src/domain/quests/questObjectiveLabel.ts +39 -0
- package/src/domain/quests/questRewardChoice.ts +85 -0
- package/src/domain/quests/questScriptCredit.ts +26 -0
- package/src/domain/quests/questScriptItemUse.ts +74 -0
- package/src/domain/quests/questTameRods.ts +79 -0
- package/src/domain/quests/questlog.ts +1545 -0
- package/src/domain/quests/talkDeliver.ts +170 -0
- package/src/domain/raid/globalActionBar.ts +195 -0
- package/src/domain/raid/instanceRoster.ts +194 -0
- package/src/domain/raid/partySummon.ts +198 -0
- package/src/domain/raid/partyVault.ts +320 -0
- package/src/domain/raid/raidBossAbilities.ts +268 -0
- package/src/domain/raid/raidComp.ts +335 -0
- package/src/domain/raid/raidCustomRows.ts +453 -0
- package/src/domain/raid/raidEncounterGear.ts +298 -0
- package/src/domain/raid/raidEncounterTactics.ts +412 -0
- package/src/domain/raid/raidPlan.ts +509 -0
- package/src/domain/raid/raidPlanEdits.ts +98 -0
- package/src/domain/raid/raidPlanPacks.ts +480 -0
- package/src/domain/raid/raidRecovery.ts +183 -0
- package/src/domain/raid/raidRosterTemplate.ts +138 -0
- package/src/domain/rotation/auraSide.ts +68 -0
- package/src/domain/rotation/build.ts +3031 -0
- package/src/domain/rotation/classes/druid.ts +58 -0
- package/src/domain/rotation/classes/hooks.ts +59 -0
- package/src/domain/rotation/classes/hunter.ts +156 -0
- package/src/domain/rotation/classes/index.ts +104 -0
- package/src/domain/rotation/classes/mage.ts +99 -0
- package/src/domain/rotation/classes/paladin.ts +296 -0
- package/src/domain/rotation/classes/priest.ts +94 -0
- package/src/domain/rotation/classes/pullOpener.ts +92 -0
- package/src/domain/rotation/classes/rogue.ts +69 -0
- package/src/domain/rotation/classes/shaman.ts +29 -0
- package/src/domain/rotation/classes/supportSpec.ts +94 -0
- package/src/domain/rotation/classes/warlock.ts +81 -0
- package/src/domain/rotation/classes/warrior.ts +402 -0
- package/src/domain/rotation/classify.ts +1381 -0
- package/src/domain/rotation/condMetricPicker.ts +379 -0
- package/src/domain/rotation/consumables.ts +242 -0
- package/src/domain/rotation/evaluate.ts +1115 -0
- package/src/domain/rotation/finisherLadder.ts +145 -0
- package/src/domain/rotation/invent.ts +938 -0
- package/src/domain/rotation/killOrder.ts +30 -0
- package/src/domain/rotation/openerForm.ts +22 -0
- package/src/domain/rotation/paladinBuffs.ts +568 -0
- package/src/domain/rotation/prebuff.ts +283 -0
- package/src/domain/rotation/raidRowTuning.ts +34 -0
- package/src/domain/rotation/rotation.ts +11 -0
- package/src/domain/rotation/rotationProfiles.ts +180 -0
- package/src/domain/rotation/rotationSuggestions.ts +851 -0
- package/src/domain/rotation/ruleAfterChain.ts +49 -0
- package/src/domain/rotation/spec.ts +70 -0
- package/src/domain/rotation/spellPicker.ts +140 -0
- package/src/domain/rotation/stand.ts +143 -0
- package/src/domain/rotation/types.ts +718 -0
- package/src/domain/run/battlegroundRun.ts +111 -0
- package/src/domain/run/canEnterContext.ts +32 -0
- package/src/domain/run/death.ts +561 -0
- package/src/domain/run/deathRecovery.ts +289 -0
- package/src/domain/run/duel.ts +141 -0
- package/src/domain/run/dungeonRun.ts +344 -0
- package/src/domain/run/floorRest.ts +159 -0
- package/src/domain/run/honor.ts +557 -0
- package/src/domain/run/honorWeek.ts +180 -0
- package/src/domain/run/whenMap.ts +977 -0
- package/src/domain/scriptdev/arathiHighlands.ts +445 -0
- package/src/domain/scriptdev/ashenvale.ts +635 -0
- package/src/domain/scriptdev/ashenvaleHelpers.ts +1215 -0
- package/src/domain/scriptdev/azshara.ts +892 -0
- package/src/domain/scriptdev/blackfathomDeeps.ts +212 -0
- package/src/domain/scriptdev/blackrockDepths.ts +1434 -0
- package/src/domain/scriptdev/blackrockSpire.ts +730 -0
- package/src/domain/scriptdev/blackwingLair.ts +521 -0
- package/src/domain/scriptdev/burningSteppes.ts +62 -0
- package/src/domain/scriptdev/classFilter.ts +43 -0
- package/src/domain/scriptdev/darkshore.ts +817 -0
- package/src/domain/scriptdev/darkshoreHelpers.ts +853 -0
- package/src/domain/scriptdev/deadmines.ts +331 -0
- package/src/domain/scriptdev/desolace.ts +1239 -0
- package/src/domain/scriptdev/direMaul.ts +859 -0
- package/src/domain/scriptdev/durotar.ts +532 -0
- package/src/domain/scriptdev/dustwallowMarsh.ts +758 -0
- package/src/domain/scriptdev/dustwallowMarshHelpers.ts +994 -0
- package/src/domain/scriptdev/easternPlaguelands.ts +21 -0
- package/src/domain/scriptdev/felwood.ts +1055 -0
- package/src/domain/scriptdev/feralas.ts +571 -0
- package/src/domain/scriptdev/feralasHelpers.ts +838 -0
- package/src/domain/scriptdev/gnomeregan.ts +466 -0
- package/src/domain/scriptdev/guards.ts +616 -0
- package/src/domain/scriptdev/hinterlands.ts +693 -0
- package/src/domain/scriptdev/host.ts +1134 -0
- package/src/domain/scriptdev/index.ts +123 -0
- package/src/domain/scriptdev/instanceRaids.ts +136 -0
- package/src/domain/scriptdev/itemScripts.ts +37 -0
- package/src/domain/scriptdev/lochModan.ts +283 -0
- package/src/domain/scriptdev/maraudon.ts +232 -0
- package/src/domain/scriptdev/moltenCore.ts +831 -0
- package/src/domain/scriptdev/moonglade.ts +659 -0
- package/src/domain/scriptdev/moongladeHelpers.ts +933 -0
- package/src/domain/scriptdev/naxxramas.ts +577 -0
- package/src/domain/scriptdev/naxxramasConstruct.ts +364 -0
- package/src/domain/scriptdev/naxxramasFrostwyrm.ts +378 -0
- package/src/domain/scriptdev/naxxramasMilitary.ts +276 -0
- package/src/domain/scriptdev/npcProfessions.ts +1025 -0
- package/src/domain/scriptdev/npcsSpecial.ts +1379 -0
- package/src/domain/scriptdev/onyxiasLair.ts +313 -0
- package/src/domain/scriptdev/orgrimmar.ts +147 -0
- package/src/domain/scriptdev/professionSpecConsumer.ts +481 -0
- package/src/domain/scriptdev/razorfenDowns.ts +468 -0
- package/src/domain/scriptdev/razorfenKraul.ts +410 -0
- package/src/domain/scriptdev/redridgeMountains.ts +163 -0
- package/src/domain/scriptdev/registry.ts +945 -0
- package/src/domain/scriptdev/ruinsOfAhnqiraj.ts +356 -0
- package/src/domain/scriptdev/scarletMonastery.ts +713 -0
- package/src/domain/scriptdev/scholomance.ts +682 -0
- package/src/domain/scriptdev/searingGorge.ts +295 -0
- package/src/domain/scriptdev/shadowfangKeep.ts +181 -0
- package/src/domain/scriptdev/silithus.ts +71 -0
- package/src/domain/scriptdev/silverpineForest.ts +662 -0
- package/src/domain/scriptdev/stonetalonMountains.ts +493 -0
- package/src/domain/scriptdev/stormwindCity.ts +1192 -0
- package/src/domain/scriptdev/stranglethornVale.ts +402 -0
- package/src/domain/scriptdev/stratholme.ts +650 -0
- package/src/domain/scriptdev/stratholmeScripts.ts +505 -0
- package/src/domain/scriptdev/sunkenTemple.ts +736 -0
- package/src/domain/scriptdev/swampOfSorrows.ts +22 -0
- package/src/domain/scriptdev/tanaris.ts +391 -0
- package/src/domain/scriptdev/tanarisHelpers.ts +661 -0
- package/src/domain/scriptdev/teldrassil.ts +143 -0
- package/src/domain/scriptdev/templeOfAhnqiraj.ts +1013 -0
- package/src/domain/scriptdev/theBarrens.ts +709 -0
- package/src/domain/scriptdev/theBarrensHelpers.ts +1026 -0
- package/src/domain/scriptdev/thousandNeedles.ts +426 -0
- package/src/domain/scriptdev/thousandNeedlesHelpers.ts +566 -0
- package/src/domain/scriptdev/tirisfalGlades.ts +533 -0
- package/src/domain/scriptdev/types.ts +1026 -0
- package/src/domain/scriptdev/uldaman.ts +437 -0
- package/src/domain/scriptdev/ungoroCrater.ts +549 -0
- package/src/domain/scriptdev/ungoroCraterHelpers.ts +1006 -0
- package/src/domain/scriptdev/wailingCaverns.ts +700 -0
- package/src/domain/scriptdev/warEffort.ts +371 -0
- package/src/domain/scriptdev/westernPlaguelands.ts +952 -0
- package/src/domain/scriptdev/westfall.ts +767 -0
- package/src/domain/scriptdev/wetlands.ts +660 -0
- package/src/domain/scriptdev/winterspring.ts +482 -0
- package/src/domain/scriptdev/winterspringHelpers.ts +801 -0
- package/src/domain/scriptdev/worldBosses.ts +605 -0
- package/src/domain/scriptdev/zulfarrak.ts +478 -0
- package/src/domain/scriptdev/zulgurub.ts +1152 -0
- package/src/domain/sim/dummySim.ts +408 -0
- package/src/domain/sim/targetDummy.ts +29 -0
- package/src/domain/social/guild.ts +148 -0
- package/src/domain/spells/areaAuraMembership.ts +93 -0
- package/src/domain/spells/breakableStunCc.ts +166 -0
- package/src/domain/spells/cancelAura.ts +80 -0
- package/src/domain/spells/diminishing.ts +167 -0
- package/src/domain/spells/dispel.ts +149 -0
- package/src/domain/spells/dispelMechanic.ts +105 -0
- package/src/domain/spells/equipSpells.ts +247 -0
- package/src/domain/spells/learnOnTargets.ts +260 -0
- package/src/domain/spells/mergeSchoolImmunityFromRaw.ts +66 -0
- package/src/domain/spells/resurrectSpell.ts +124 -0
- package/src/domain/spells/spellPushback.ts +39 -0
- package/src/domain/spells/spellReflect.ts +43 -0
- package/src/domain/spells/stealth.ts +183 -0
- package/src/domain/spells/totem.ts +394 -0
- package/src/domain/spells/worldCast.ts +187 -0
- package/src/domain/world/areaTriggerLocks.ts +177 -0
- package/src/domain/world/dungeonMusic.ts +108 -0
- package/src/domain/world/gameEvents.ts +119 -0
- package/src/domain/world/gameObjects.ts +1030 -0
- package/src/domain/world/goEventFire.ts +234 -0
- package/src/domain/world/goMoTransport.ts +74 -0
- package/src/domain/world/goTransport.ts +81 -0
- package/src/domain/world/hazards.ts +459 -0
- package/src/domain/world/openLock.ts +398 -0
- package/src/domain/world/pools.ts +470 -0
- package/src/domain/world/restArea.ts +37 -0
- package/src/domain/world/weather.ts +201 -0
- package/src/domain/zoneAmbience.mjs +87 -0
- package/src/domain/zoneMusic.mjs +62 -0
- package/src/domain/zoneMusicQueue.mjs +7 -0
- package/src/engine/combat/activeSeal.ts +39 -0
- package/src/engine/combat/aiTargetResolve.ts +64 -0
- package/src/engine/combat/aoeCast.ts +289 -0
- package/src/engine/combat/applyConsumeAura.ts +74 -0
- package/src/engine/combat/applyDemonicSacrifice.ts +70 -0
- package/src/engine/combat/applyDispelMechanic.ts +30 -0
- package/src/engine/combat/applyHealEffect.ts +301 -0
- package/src/engine/combat/applySchoolAbsorb.ts +114 -0
- package/src/engine/combat/applySpell.ts +3169 -0
- package/src/engine/combat/applySpellLate.ts +2026 -0
- package/src/engine/combat/applySpellLateBag.ts +144 -0
- package/src/engine/combat/areaAura.ts +283 -0
- package/src/engine/combat/attackTable.ts +508 -0
- package/src/engine/combat/battleRez.ts +87 -0
- package/src/engine/combat/castAction.ts +36 -0
- package/src/engine/combat/castTargetGates.ts +75 -0
- package/src/engine/combat/castableKit.ts +68 -0
- package/src/engine/combat/ccMirrorUpgrade.ts +39 -0
- package/src/engine/combat/chainFan.ts +210 -0
- package/src/engine/combat/channel.ts +423 -0
- package/src/engine/combat/chaseCloseness.ts +95 -0
- package/src/engine/combat/cmangosCastGates.ts +129 -0
- package/src/engine/combat/combatFlag.ts +77 -0
- package/src/engine/combat/combatGeometry.ts +1329 -0
- package/src/engine/combat/combustion.ts +68 -0
- package/src/engine/combat/context.ts +730 -0
- package/src/engine/combat/createSession.ts +1165 -0
- package/src/engine/combat/creatureLeash.ts +38 -0
- package/src/engine/combat/crowdControl.ts +1259 -0
- package/src/engine/combat/dispelDuty.ts +54 -0
- package/src/engine/combat/dispelReflect.ts +609 -0
- package/src/engine/combat/displaceFloor.ts +113 -0
- package/src/engine/combat/duelBounds.ts +47 -0
- package/src/engine/combat/equippedItemGate.ts +297 -0
- package/src/engine/combat/evadeLifecycle.ts +63 -0
- package/src/engine/combat/eventAi.ts +2220 -0
- package/src/engine/combat/facing.ts +74 -0
- package/src/engine/combat/fearFlee.ts +137 -0
- package/src/engine/combat/fighterFactory.ts +1144 -0
- package/src/engine/combat/forceDespawnAction.ts +51 -0
- package/src/engine/combat/formulas.ts +807 -0
- package/src/engine/combat/friendlyFan.ts +55 -0
- package/src/engine/combat/groundPoolTick.ts +210 -0
- package/src/engine/combat/hazards.ts +114 -0
- package/src/engine/combat/healTargets.ts +226 -0
- package/src/engine/combat/heartbeatResist.ts +49 -0
- package/src/engine/combat/hostileItemUse.ts +75 -0
- package/src/engine/combat/interruptAuras.ts +66 -0
- package/src/engine/combat/itemRescue.ts +49 -0
- package/src/engine/combat/itemUse.ts +260 -0
- package/src/engine/combat/kitById.ts +23 -0
- package/src/engine/combat/knockBack.ts +201 -0
- package/src/engine/combat/leap.ts +89 -0
- package/src/engine/combat/mitigation.ts +587 -0
- package/src/engine/combat/modTaunt.ts +43 -0
- package/src/engine/combat/motionClaim.ts +268 -0
- package/src/engine/combat/motionGate.ts +150 -0
- package/src/engine/combat/motionGenerator.ts +27 -0
- package/src/engine/combat/navSight.ts +138 -0
- package/src/engine/combat/perfSink.ts +28 -0
- package/src/engine/combat/periodicDue.ts +55 -0
- package/src/engine/combat/petAuras.ts +86 -0
- package/src/engine/combat/pickAction.ts +3449 -0
- package/src/engine/combat/powerForm.ts +735 -0
- package/src/engine/combat/powerPools.ts +49 -0
- package/src/engine/combat/predicates.ts +538 -0
- package/src/engine/combat/procsDamage.ts +1823 -0
- package/src/engine/combat/reactiveGates.ts +135 -0
- package/src/engine/combat/roles.ts +389 -0
- package/src/engine/combat/rotationSubject.ts +78 -0
- package/src/engine/combat/ruleAfter.ts +106 -0
- package/src/engine/combat/seedDisplayAuras.ts +203 -0
- package/src/engine/combat/seedOocEffects.ts +317 -0
- package/src/engine/combat/seedSchoolImmunities.ts +45 -0
- package/src/engine/combat/session-types.ts +458 -0
- package/src/engine/combat/sessionApi.ts +1785 -0
- package/src/engine/combat/sessionCharge.ts +124 -0
- package/src/engine/combat/sessionChase.ts +869 -0
- package/src/engine/combat/sessionDeaths.ts +469 -0
- package/src/engine/combat/sessionFocus.ts +506 -0
- package/src/engine/combat/sessionFollow.ts +167 -0
- package/src/engine/combat/sessionGeometry.ts +188 -0
- package/src/engine/combat/sessionHome.ts +75 -0
- package/src/engine/combat/sessionInject.ts +719 -0
- package/src/engine/combat/sessionMechanicMove.ts +555 -0
- package/src/engine/combat/sessionMotion.ts +1553 -0
- package/src/engine/combat/sessionMotionKit.ts +247 -0
- package/src/engine/combat/sessionMoveIntent.ts +49 -0
- package/src/engine/combat/sessionMoveOrder.ts +200 -0
- package/src/engine/combat/sessionPathTo.ts +657 -0
- package/src/engine/combat/sessionPools.ts +688 -0
- package/src/engine/combat/sessionSteer.ts +144 -0
- package/src/engine/combat/sessionStepBack.ts +151 -0
- package/src/engine/combat/sessionStepWrap.ts +116 -0
- package/src/engine/combat/sessionView.ts +442 -0
- package/src/engine/combat/simEffects.ts +32 -0
- package/src/engine/combat/simFacade.ts +620 -0
- package/src/engine/combat/simPump.ts +264 -0
- package/src/engine/combat/simSnapshot.ts +165 -0
- package/src/engine/combat/simThreadPool.ts +35 -0
- package/src/engine/combat/skeramImages.ts +57 -0
- package/src/engine/combat/slowUpdate.ts +178 -0
- package/src/engine/combat/snapToFloor.ts +42 -0
- package/src/engine/combat/speedAura.ts +29 -0
- package/src/engine/combat/spellReagents.ts +71 -0
- package/src/engine/combat/stealthDetect.ts +93 -0
- package/src/engine/combat/stepBackMotion.ts +171 -0
- package/src/engine/combat/stepSession.ts +3102 -0
- package/src/engine/combat/summonCast.ts +243 -0
- package/src/engine/combat/thaddiusPolarity.ts +97 -0
- package/src/engine/combat/threat.ts +388 -0
- package/src/engine/combat/threatOps.ts +272 -0
- package/src/engine/combat/tickWorkerBody.ts +211 -0
- package/src/engine/combat/totemAuras.ts +122 -0
- package/src/engine/combat/triggerPayload.ts +42 -0
- package/src/engine/combat/triggeredCompanion.ts +63 -0
- package/src/engine/combat/types.ts +1897 -0
- package/src/engine/combat/useObjectTrap.ts +140 -0
- package/src/engine/combat/walkSurface.ts +54 -0
- package/src/engine/combat/weapon.ts +1248 -0
- package/src/engine/combat/worldFrame.ts +43 -0
- package/src/engine/combat.solo-golden.json +2242 -0
- package/src/engine/combat.ts +84 -0
- package/src/engine/core/detMath.ts +289 -0
- package/src/engine/core/events.ts +357 -0
- package/src/engine/core/rng.ts +36 -0
- package/src/engine/game/actionBars.ts +124 -0
- package/src/engine/game/activateObjectFromSpell.ts +320 -0
- package/src/engine/game/applyActiveObjectFromDbScript.ts +98 -0
- package/src/engine/game/applyDeathAndSpellScripts.ts +268 -0
- package/src/engine/game/applyDoorFromDbScript.ts +388 -0
- package/src/engine/game/applyEscortFromDbScript.ts +290 -0
- package/src/engine/game/applyGoSpellcasterCast.ts +40 -0
- package/src/engine/game/applyHoverFromDbScript.ts +110 -0
- package/src/engine/game/applyOocResurrect.ts +71 -0
- package/src/engine/game/applySpellDurability.ts +115 -0
- package/src/engine/game/applyTailFromDbScript.ts +478 -0
- package/src/engine/game/applyTerminateFromDbScript.ts +95 -0
- package/src/engine/game/auctionMail.ts +269 -0
- package/src/engine/game/bagOverflow.ts +130 -0
- package/src/engine/game/bank.ts +110 -0
- package/src/engine/game/barAutofill.ts +26 -0
- package/src/engine/game/battleground.ts +369 -0
- package/src/engine/game/combatEnemySpec.ts +216 -0
- package/src/engine/game/combatObjectTraps.ts +167 -0
- package/src/engine/game/combatSeed.ts +320 -0
- package/src/engine/game/combatSession.ts +3241 -0
- package/src/engine/game/combatSessionClock.ts +62 -0
- package/src/engine/game/companionQuestActions.ts +242 -0
- package/src/engine/game/companionTraining.ts +40 -0
- package/src/engine/game/consumables.ts +624 -0
- package/src/engine/game/context.ts +53 -0
- package/src/engine/game/createHealthstone.ts +45 -0
- package/src/engine/game/deathFlow.ts +127 -0
- package/src/engine/game/devGrant.ts +117 -0
- package/src/engine/game/dynamicObject.ts +365 -0
- package/src/engine/game/enchantItem.ts +177 -0
- package/src/engine/game/equipmentHelper.ts +806 -0
- package/src/engine/game/factionState.ts +108 -0
- package/src/engine/game/garmentsOoc.ts +69 -0
- package/src/engine/game/globalActionBar.ts +179 -0
- package/src/engine/game/goInteractQuestCredit.ts +51 -0
- package/src/engine/game/goMoTransportUse.ts +61 -0
- package/src/engine/game/goTransportUse.ts +60 -0
- package/src/engine/game/healthstoneUpkeep.ts +59 -0
- package/src/engine/game/killSkin.ts +124 -0
- package/src/engine/game/learnFromItem.ts +118 -0
- package/src/engine/game/loadReconcile.ts +551 -0
- package/src/engine/game/loot.ts +294 -0
- package/src/engine/game/macros.ts +125 -0
- package/src/engine/game/mail.ts +293 -0
- package/src/engine/game/meetingStoneQueue.ts +75 -0
- package/src/engine/game/meetingStoneUse.ts +54 -0
- package/src/engine/game/newGameState.ts +363 -0
- package/src/engine/game/oocAuraInterrupt.ts +92 -0
- package/src/engine/game/oocCast.ts +241 -0
- package/src/engine/game/oocCastEffects.ts +803 -0
- package/src/engine/game/oocCastMethods.ts +1077 -0
- package/src/engine/game/openLockFromSpell.ts +174 -0
- package/src/engine/game/outdoorPvp.ts +187 -0
- package/src/engine/game/outfitter.ts +644 -0
- package/src/engine/game/paladinBoard.ts +393 -0
- package/src/engine/game/partyAuras.ts +121 -0
- package/src/engine/game/persistCombatAuras.ts +91 -0
- package/src/engine/game/pets.ts +459 -0
- package/src/engine/game/prePullHealthstones.ts +154 -0
- package/src/engine/game/professions.ts +2227 -0
- package/src/engine/game/pruneStaleRuntime.ts +39 -0
- package/src/engine/game/questFightCredit.ts +36 -0
- package/src/engine/game/questItemOnCorpse.ts +166 -0
- package/src/engine/game/questItemOnCreature.ts +103 -0
- package/src/engine/game/questLog.ts +879 -0
- package/src/engine/game/questSpellComplete.ts +21 -0
- package/src/engine/game/questTurnIn.ts +598 -0
- package/src/engine/game/raidParty.ts +32 -0
- package/src/engine/game/reagentBuyIn.ts +39 -0
- package/src/engine/game/regenRest.ts +186 -0
- package/src/engine/game/rotation.ts +425 -0
- package/src/engine/game/runFullDungeon.ts +611 -0
- package/src/engine/game/runSupply.ts +80 -0
- package/src/engine/game/sanitizeDriftedItems.ts +135 -0
- package/src/engine/game/scriptDevGoUse.ts +397 -0
- package/src/engine/game/scriptDevInnkeeper.ts +150 -0
- package/src/engine/game/scriptDevProfessionSpec.ts +99 -0
- package/src/engine/game/sendEventFromSpell.ts +87 -0
- package/src/engine/game/sortContainers.ts +85 -0
- package/src/engine/game/spellReputation.ts +69 -0
- package/src/engine/game/squad/squadDungeonSeating.ts +197 -0
- package/src/engine/game/squadDungeon.ts +4222 -0
- package/src/engine/game/squadQuestShare.ts +260 -0
- package/src/engine/game/summonObjectSlot.ts +69 -0
- package/src/engine/game/summonObjectWild.ts +73 -0
- package/src/engine/game/summoningRitualUse.ts +141 -0
- package/src/engine/game/talents.ts +356 -0
- package/src/engine/game/tamingRodUse.ts +66 -0
- package/src/engine/game/tempSpawnCreature.ts +136 -0
- package/src/engine/game/tickDungeonPatrolScripts.ts +205 -0
- package/src/engine/game/tickTimedQuests.ts +28 -0
- package/src/engine/game/trade.ts +586 -0
- package/src/engine/game/travel.ts +1155 -0
- package/src/engine/game/types.ts +1855 -0
- package/src/engine/game/vendorOffers.ts +244 -0
- package/src/engine/game/weaponImbueItem.ts +281 -0
- package/src/engine/game/worldSession.ts +183 -0
- package/src/engine/game/worldState.ts +166 -0
- package/src/engine/game.ts +968 -0
- package/src/engine/spells/GAP.md +67 -0
- package/src/engine/spells/absorbs.ts +376 -0
- package/src/engine/spells/addTargetTrigger.ts +53 -0
- package/src/engine/spells/auraPerSecondCost.ts +50 -0
- package/src/engine/spells/auraStacking.ts +497 -0
- package/src/engine/spells/cmangos-special-cases-combustion.ts +13 -0
- package/src/engine/spells/cmangos-special-cases-s18.ts +445 -0
- package/src/engine/spells/cmangos-special-cases-s19.ts +324 -0
- package/src/engine/spells/cmangos-special-cases-s20.ts +385 -0
- package/src/engine/spells/cmangos-special-cases-s21.ts +116 -0
- package/src/engine/spells/cmangos-special-cases-s22.ts +24 -0
- package/src/engine/spells/cmangos-special-cases-s23.ts +52 -0
- package/src/engine/spells/cmangos-special-cases.ts +1570 -0
- package/src/engine/spells/conditions.ts +718 -0
- package/src/engine/spells/effects.ts +203 -0
- package/src/engine/spells/fixtures/oracle-effects-lock9a.json +1 -0
- package/src/engine/spells/immunity.ts +942 -0
- package/src/engine/spells/intentEffects.ts +351 -0
- package/src/engine/spells/interpreter/GAPS.md +21 -0
- package/src/engine/spells/interpreter/amount.ts +109 -0
- package/src/engine/spells/interpreter/class-scripts-kit.ts +478 -0
- package/src/engine/spells/interpreter/diff.ts +246 -0
- package/src/engine/spells/interpreter/duration.ts +90 -0
- package/src/engine/spells/interpreter/form-attrs.json +1 -0
- package/src/engine/spells/interpreter/form-attrs.ts +95 -0
- package/src/engine/spells/interpreter/handlers/aura-remove.ts +113 -0
- package/src/engine/spells/interpreter/handlers/auras-control.ts +1547 -0
- package/src/engine/spells/interpreter/handlers/auras-core.ts +1583 -0
- package/src/engine/spells/interpreter/handlers/auras-misc.ts +1774 -0
- package/src/engine/spells/interpreter/handlers/effect-disenchant.ts +17 -0
- package/src/engine/spells/interpreter/handlers/effect-skinning.ts +20 -0
- package/src/engine/spells/interpreter/handlers/effects-action-utility.ts +1455 -0
- package/src/engine/spells/interpreter/handlers/effects-core.ts +432 -0
- package/src/engine/spells/interpreter/handlers/effects-remainder.ts +105 -0
- package/src/engine/spells/interpreter/handlers/effects-summon-item.ts +687 -0
- package/src/engine/spells/interpreter/handlers/mod-increase-energy-percent.ts +36 -0
- package/src/engine/spells/interpreter/handlers/mod-increase-energy.ts +36 -0
- package/src/engine/spells/interpreter/handlers/periodic-trigger-zero.ts +327 -0
- package/src/engine/spells/interpreter/handlers/procs.ts +131 -0
- package/src/engine/spells/interpreter/handlers/registry.ts +975 -0
- package/src/engine/spells/interpreter/handlers/shared.ts +667 -0
- package/src/engine/spells/interpreter/handlers.ts +9 -0
- package/src/engine/spells/interpreter/hunter-kit.ts +202 -0
- package/src/engine/spells/interpreter/index.ts +525 -0
- package/src/engine/spells/interpreter/item-triggers.ts +1121 -0
- package/src/engine/spells/interpreter/lift-consume-energy.ts +37 -0
- package/src/engine/spells/interpreter/mage-portals.ts +37 -0
- package/src/engine/spells/interpreter/materialize-charm.ts +88 -0
- package/src/engine/spells/interpreter/materialize-dispel-mechanic.ts +25 -0
- package/src/engine/spells/interpreter/materialize-rating-buffs.ts +81 -0
- package/src/engine/spells/interpreter/materialize-speed.ts +109 -0
- package/src/engine/spells/interpreter/materialize-spell-magnet.ts +22 -0
- package/src/engine/spells/interpreter/opcodes.ts +789 -0
- package/src/engine/spells/interpreter/paladin-kit.ts +95 -0
- package/src/engine/spells/interpreter/paladin-seals.ts +499 -0
- package/src/engine/spells/interpreter/priest-warlock-kit.ts +135 -0
- package/src/engine/spells/interpreter/proc.ts +443 -0
- package/src/engine/spells/interpreter/registry/helpers.ts +16 -0
- package/src/engine/spells/interpreter/registry/index.ts +216 -0
- package/src/engine/spells/interpreter/registry/packs/class-abilities.ts +304 -0
- package/src/engine/spells/interpreter/registry/packs/dire-maul.ts +44 -0
- package/src/engine/spells/interpreter/registry/packs/dummy-script-tail.ts +1065 -0
- package/src/engine/spells/interpreter/registry/packs/ex-wave-m.ts +70 -0
- package/src/engine/spells/interpreter/registry/packs/life-tap.ts +107 -0
- package/src/engine/spells/interpreter/registry/packs/paladin.ts +246 -0
- package/src/engine/spells/interpreter/registry/packs/raid-script-summons.ts +26 -0
- package/src/engine/spells/interpreter/registry/packs/raid-threat-wipe.ts +22 -0
- package/src/engine/spells/interpreter/registry/packs/shaman.ts +214 -0
- package/src/engine/spells/interpreter/registry/packs/si4-dummy-generic-a.ts +269 -0
- package/src/engine/spells/interpreter/registry/packs/si4-dummy-generic-b.ts +370 -0
- package/src/engine/spells/interpreter/registry/packs/si4-dummy-generic-c.ts +172 -0
- package/src/engine/spells/interpreter/registry/packs/si4-dummy-hunter.ts +60 -0
- package/src/engine/spells/interpreter/registry/packs/si4-dummy-warrior.ts +31 -0
- package/src/engine/spells/interpreter/registry/packs/si4-script-generic-a.ts +114 -0
- package/src/engine/spells/interpreter/registry/packs/si4-script-generic-b.ts +249 -0
- package/src/engine/spells/interpreter/registry/packs/si4-script-generic-c.ts +233 -0
- package/src/engine/spells/interpreter/registry/types.ts +48 -0
- package/src/engine/spells/interpreter/talent-scripted.ts +329 -0
- package/src/engine/spells/interpreter/targeting.ts +90 -0
- package/src/engine/spells/interpreter/types-intent.ts +1501 -0
- package/src/engine/spells/interpreter/types.ts +419 -0
- package/src/engine/spells/interpreter/warrior-druid-kit.ts +314 -0
- package/src/engine/spells/interpreter/weapon-imbue-kit.ts +384 -0
- package/src/engine/spells/interrupt.ts +217 -0
- package/src/engine/spells/meleeAttackReset.ts +60 -0
- package/src/engine/spells/oocTriggerSpell.ts +49 -0
- package/src/engine/spells/overrideClassScripts.ts +319 -0
- package/src/engine/spells/parryHaste.ts +20 -0
- package/src/engine/spells/procs.ts +300 -0
- package/src/engine/spells/recovery.ts +203 -0
- package/src/engine/spells/scriptTargetDest.ts +76 -0
- package/src/engine/spells/scriptTargets.ts +85 -0
- package/src/engine/spells/singleTargetAura.ts +82 -0
- package/src/engine/spells/specialCasePayloads.ts +57 -0
- package/src/engine/spells/spellAttributes.ts +249 -0
- package/src/engine/spells/spellBonus.ts +143 -0
- package/src/engine/spells/spellModIntents.ts +419 -0
- package/src/engine/spells/spellMods.ts +283 -0
- package/src/engine/spells/spellRadius.ts +15 -0
- package/src/engine/spells/trapObjects.ts +26 -0
- package/src/json.d.ts +7 -0
- package/src/persistence/memoryRepository.ts +23 -0
- package/src/persistence/saveBackups.ts +162 -0
- package/src/persistence/saveFile.ts +68 -0
- package/src/persistence/saveRepository.ts +11 -0
- package/src/persistence/saveShape.ts +668 -0
- package/src/progression/leveling.ts +89 -0
- package/src/progression/rest.ts +1434 -0
- package/src/progression/training.ts +226 -0
- package/src/progression/xpGain.ts +369 -0
- package/src/quests/quests.ts +1580 -0
- package/src/world/aoePull.ts +198 -0
- package/src/world/areaTableDbc.ts +39 -0
- package/src/world/areaTableMapIdPairs.ts +141 -0
- package/src/world/bakeSlug.ts +43 -0
- package/src/world/continuousDungeon.ts +1250 -0
- package/src/world/dungeonBakeProjection.ts +190 -0
- package/src/world/dungeonMapDensity.ts +342 -0
- package/src/world/dungeonMapProjection.ts +135 -0
- package/src/world/dungeonNav.ts +904 -0
- package/src/world/dungeonNpcSim.ts +147 -0
- package/src/world/dungeonObjectives.ts +234 -0
- package/src/world/dungeonPreset.ts +35 -0
- package/src/world/dungeonRoute.ts +311 -0
- package/src/world/dungeonRouteGeometry.ts +732 -0
- package/src/world/dungeonRouteOrder.ts +1037 -0
- package/src/world/dungeonWingRooms.ts +426 -0
- package/src/world/escort.ts +296 -0
- package/src/world/goPoolRoll.ts +75 -0
- package/src/world/instanceObjects.ts +785 -0
- package/src/world/instances.ts +1572 -0
- package/src/world/meetingStones.ts +56 -0
- package/src/world/navmeshFloors.ts +145 -0
- package/src/world/nearGrid.ts +167 -0
- package/src/world/packBudget.ts +613 -0
- package/src/world/rareRoll.ts +335 -0
- package/src/world/routeAuthoring.ts +132 -0
- package/src/world/routeEdit.ts +209 -0
- package/src/world/world.ts +812 -0
- package/src/world/zoneHazards.ts +47 -0
|
@@ -0,0 +1,454 @@
|
|
|
1
|
+
// ---- Creatures ------------------------------------------------------------
|
|
2
|
+
|
|
3
|
+
import type { School } from './primitives.ts';
|
|
4
|
+
|
|
5
|
+
// One `creature_template_classlevelstats` row after loader adjustments. Primary stats are optional:
|
|
6
|
+
// this DB dump lacks the Strength/Agility columns, so treat missing as 0. Cite: ObjectMgr.cpp:779.
|
|
7
|
+
export interface CreatureClassLvlStatsRow {
|
|
8
|
+
level: number;
|
|
9
|
+
unitClass: number; // creature UnitClass: 1 Warrior, 2 Paladin, 8 Mage
|
|
10
|
+
baseHealth: number;
|
|
11
|
+
baseMana: number;
|
|
12
|
+
baseDamage: number;
|
|
13
|
+
baseMeleeAttackPower: number;
|
|
14
|
+
baseRangedAttackPower: number;
|
|
15
|
+
baseArmor: number;
|
|
16
|
+
strength?: number;
|
|
17
|
+
agility?: number;
|
|
18
|
+
stamina?: number;
|
|
19
|
+
intellect?: number;
|
|
20
|
+
spirit?: number;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// One `pet_levelstats` row. Hunter pets always look up creature_entry = 1; summons use their own
|
|
24
|
+
// template entry. Cite: ObjectMgr.cpp ~2946–3055; Pet.cpp InitStatsForLevel ~1199–1398.
|
|
25
|
+
export interface PetLevelStatsRow {
|
|
26
|
+
creatureEntry: number;
|
|
27
|
+
level: number;
|
|
28
|
+
hp: number;
|
|
29
|
+
mana: number;
|
|
30
|
+
armor: number;
|
|
31
|
+
str: number;
|
|
32
|
+
agi: number;
|
|
33
|
+
sta: number;
|
|
34
|
+
inte: number;
|
|
35
|
+
spi: number;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Raw `creature_template` SelectLevel inputs, preferred over legacy baked hpMin/dmgMin. A NEGATIVE
|
|
39
|
+
// multiplier means ignore that CLS branch and fall back to the Min/Max template fields.
|
|
40
|
+
export interface CreatureTemplateScaling {
|
|
41
|
+
minLevel: number;
|
|
42
|
+
maxLevel: number;
|
|
43
|
+
unitClass: number;
|
|
44
|
+
rank: number; // CREATURE_ELITE_*
|
|
45
|
+
healthMultiplier: number;
|
|
46
|
+
powerMultiplier: number;
|
|
47
|
+
damageMultiplier: number;
|
|
48
|
+
damageVariance: number;
|
|
49
|
+
armorMultiplier: number;
|
|
50
|
+
experienceMultiplier: number;
|
|
51
|
+
/** Optional primary-stat multipliers (creature_template z2822). Absent ⇒ treat as 1 / unused. */
|
|
52
|
+
strengthMultiplier?: number;
|
|
53
|
+
agilityMultiplier?: number;
|
|
54
|
+
staminaMultiplier?: number;
|
|
55
|
+
intellectMultiplier?: number;
|
|
56
|
+
spiritMultiplier?: number;
|
|
57
|
+
minLevelHealth: number;
|
|
58
|
+
maxLevelHealth: number;
|
|
59
|
+
minLevelMana: number;
|
|
60
|
+
maxLevelMana: number;
|
|
61
|
+
minMeleeDmg: number;
|
|
62
|
+
maxMeleeDmg: number;
|
|
63
|
+
minRangedDmg: number;
|
|
64
|
+
maxRangedDmg: number;
|
|
65
|
+
armor: number;
|
|
66
|
+
meleeAttackPower: number;
|
|
67
|
+
rangedAttackPower: number;
|
|
68
|
+
meleeBaseAttackTime: number;
|
|
69
|
+
rangedBaseAttackTime: number;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// One creature's `creature_immunities` set 0. Types 2/3/5 hold zero rows in both tiers and the baker
|
|
73
|
+
// throws rather than drop one, so they have no field here. Cite: Creature.cpp:2412-2431.
|
|
74
|
+
export interface CreatureImmunities {
|
|
75
|
+
/** IMMUNITY_EFFECT (0) — SpellEffect ids this creature ignores. 18 of 19 rows are ATTACK_ME. */
|
|
76
|
+
effects?: number[];
|
|
77
|
+
/** IMMUNITY_STATE (1) — AuraType ids that never apply (11 MOD_TAUNT, 65, 137, 33 snare). */
|
|
78
|
+
states?: number[];
|
|
79
|
+
/** IMMUNITY_DISPEL (4) — OR of `1 << DispelType`; 127 of 144 rows are poison. */
|
|
80
|
+
dispelMask?: number;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export interface CreatureDef {
|
|
84
|
+
entry: number;
|
|
85
|
+
name: string;
|
|
86
|
+
level: number;
|
|
87
|
+
hpMin: number;
|
|
88
|
+
hpMax: number;
|
|
89
|
+
dmgMin: number; // per-swing melee range (baked)
|
|
90
|
+
dmgMax: number;
|
|
91
|
+
attackTimeMs: number;
|
|
92
|
+
armor: number;
|
|
93
|
+
lootId: number;
|
|
94
|
+
minGold: number; // copper
|
|
95
|
+
maxGold: number;
|
|
96
|
+
// Legacy display kill-XP scalar. The grant path does NOT use it — killXpAmount computes
|
|
97
|
+
// Formulas.h Gain from player and mob levels, rank and ExperienceMultiplier.
|
|
98
|
+
xp: number;
|
|
99
|
+
// Template `ExperienceMultiplier`, applied once at the XP grant choke after BaseGain and the
|
|
100
|
+
// elite mult. Default 1. Not pre-multiplied into baked `xp`, so it cannot double-apply.
|
|
101
|
+
experienceMultiplier?: number;
|
|
102
|
+
// Raw SelectLevel inputs from creature_template. When present, fight setup uses selectCreatureLevel
|
|
103
|
+
// instead of rolling `hpMin`/`hpMax` alone; fixtures without it keep the legacy behaviour.
|
|
104
|
+
scaling?: CreatureTemplateScaling;
|
|
105
|
+
// CreatureDisplayInfo id (most-probable ModelId per creature_template_model, baked by
|
|
106
|
+
// enrich-creature-display.mjs). Keys public/portraits/creature/<displayId>.webp sprites.
|
|
107
|
+
displayId?: number;
|
|
108
|
+
creatureType?: number; // CMaNGOS CreatureType (see CREATURE_TYPE: 1 Beast, 6 Undead, 7 Humanoid, …); baked for all typed mobs
|
|
109
|
+
// creature_template.DamageSchool — the SPELL_SCHOOL index for this creature's WHITE hits. Non-zero
|
|
110
|
+
// (100 of 10,384) means the swing is magical: resistance applies, armor does not, no block.
|
|
111
|
+
damageSchool?: number;
|
|
112
|
+
// creature_template.ResistanceHoly..Arcane. Non-zero on 532 of 10,384; Ossirian carries 1000 in
|
|
113
|
+
// five schools, which is what his crystals strip. Cite: Creature.cpp:585-590 SetCreateResistance.
|
|
114
|
+
resistances?: Partial<Record<School, number>>;
|
|
115
|
+
// creature_template.RegenerateStats. Absent means the 14 every other row carries
|
|
116
|
+
// (HEALTH|POWER_IN_COMBAT|POWER). Cite: Creature.h:425-428; Creature.cpp:1803-1808.
|
|
117
|
+
regenerateStats?: number;
|
|
118
|
+
// creature_template.CreatureTypeFlags. TAMEABLE 0x1 is the third half of isTameable.
|
|
119
|
+
// Cite: CreatureDefines.h:282-317; Creature.h:199-202.
|
|
120
|
+
typeFlags?: number;
|
|
121
|
+
// UNIT_FIELD_COMBATREACH in yards. Melee reach is BOTH bodies' reach plus 1.33, floored at 5,
|
|
122
|
+
// which is why a boss is meleeable from further out. Cite: Object.cpp:1741-1758.
|
|
123
|
+
combatReachYd?: number;
|
|
124
|
+
family?: number; // CreatureFamily (1 Wolf, 3 Spider, 5 Boar, …) — pet diet/abilities
|
|
125
|
+
tameable?: boolean; // a Beast a Hunter can tame as a pet
|
|
126
|
+
mana?: number; // baked max mana pool (MaxLevelMana); Demons carry one, Beasts 0 (Focus)
|
|
127
|
+
// Pet ability spell ids a pet from this creature CAN use — every ability and rank it could ever
|
|
128
|
+
// have. buildPet keeps only the innate kit plus ranks a book unlocked; absent => auto-attack only.
|
|
129
|
+
petSpells?: number[];
|
|
130
|
+
// The innate ability ranks a pet of this creature knows for free — its default kit. Everything
|
|
131
|
+
// else in `petSpells` is book-taught, and this must be a subset of it.
|
|
132
|
+
petDefaultSpells?: number[];
|
|
133
|
+
// Auto-applied family passives for a pet of this family, using the exact sPetFamilySpellsStore
|
|
134
|
+
// filter: IS_ABILITY|PASSIVE|DO_NOT_DISPLAY|DO_NOT_LOG all set. Cite: DBCStores.cpp ~365.
|
|
135
|
+
petFamilyPassives?: number[];
|
|
136
|
+
// CreatureFamily.PetFoodMask for tameable beasts (bit = 1<<(FoodType-1); wolf=1 meat-only,
|
|
137
|
+
// cat=3 meat+fish). Pet::HaveInDiet gates feeding on it. Baked by enrich-pet-diet.mjs.
|
|
138
|
+
petFoodMask?: number;
|
|
139
|
+
// Spells this creature casts IN COMBAT: EventAI ACTION_T_CAST rows plus its creature_spell_list.
|
|
140
|
+
// `creature_template_spells` is deliberately NOT here — see `charmSpells`; totems are the exception.
|
|
141
|
+
spells?: number[];
|
|
142
|
+
// The charm / pet ACTION BAR from creature_template_spells, loaded Disabled so it never casts on
|
|
143
|
+
// the creature's own AI. Totem::Summon ignores the flag, so reading `spells` left 91 totems hollow.
|
|
144
|
+
charmSpells?: number[];
|
|
145
|
+
// Structured cast list (System 9): EventAI ACTION_T_CAST rows with optional combat-timer / on-aggro / HP%
|
|
146
|
+
// params from creature_ai_scripts, plus armed spell-list rows.
|
|
147
|
+
creatureCasts?: CreatureCastEntry[];
|
|
148
|
+
// Top-level creature_spell_list schedule, rows verbatim. The engine arms these as TIMER_IN_COMBAT
|
|
149
|
+
// slots on the same scheduler as creatureCasts. Distinct from ai.spellLists. Cite: UnitAI.cpp:1186.
|
|
150
|
+
spellList?: CreatureSpellListEntry[];
|
|
151
|
+
// FE1 full EventAI bake (extract only; FE2 interprets): raw DB-shaped scripts plus optional
|
|
152
|
+
// summons and spell-list rows. Does not replace creatureCasts/spells.
|
|
153
|
+
ai?: CreatureAiBundle;
|
|
154
|
+
// creature_template.SpeedRun — run RATE, multiplied by Unit.cpp:66 baseMoveSpeed[MOVE_RUN] 7.0
|
|
155
|
+
// for yd/s. The DB default 1.14286 is 8 yd/s. Cite: Creature.cpp:1580-1584 SetBaseRunSpeed.
|
|
156
|
+
speedRun?: number;
|
|
157
|
+
// creature_template.Detection — base aggro LOS yards for GetAttackDistance. Absent → engine default 18
|
|
158
|
+
// (Unit.h GetDetectionRange).
|
|
159
|
+
detectionRange?: number;
|
|
160
|
+
// creature_template.CallForHelp — assist radius override; 0/absent →
|
|
161
|
+
// CONFIG_FLOAT_CREATURE_FAMILY_ASSISTANCE_RADIUS (5).
|
|
162
|
+
callForHelpRadius?: number;
|
|
163
|
+
/** creature_template.Leash — evade range (baked for future; not full pathing this system). */
|
|
164
|
+
leash?: number;
|
|
165
|
+
// How many of this creature stand in the open world at once, when that is FEWER than its spawn
|
|
166
|
+
// rows: spawn_group.MaxCount / pool_template.max_limit over its guids. Absent = every row is a
|
|
167
|
+
// body. Cite: spawn_group 19983 "Hogger 448" MaxCount 1 over 6 rows; ObjectMgr LoadSpawnGroups.
|
|
168
|
+
spawnCap?: number;
|
|
169
|
+
/** creature_template.MechanicImmuneMask — (1 << (mechanic-1)); gates spell application. */
|
|
170
|
+
mechanicImmuneMask?: number;
|
|
171
|
+
/** creature_template.SchoolImmuneMask — (1 << school); gates spell application. */
|
|
172
|
+
schoolImmuneMask?: number;
|
|
173
|
+
// creature_immunities set 0, applied on spawn — the per-creature immunity SET, separate from the
|
|
174
|
+
// two template masks above. Cite: Creature.cpp:613; ObjectMgr.cpp:945-975.
|
|
175
|
+
immunities?: CreatureImmunities;
|
|
176
|
+
// creature_template.ExtraFlags — selected bits: NO_AGGRO_ON_SIGHT (2), NO_CALL_ASSIST (2048), GUARD
|
|
177
|
+
// (1024), AGGRO_ZONE (512). See domain/creatureAi CREATURE_EXTRA_FLAG.
|
|
178
|
+
extraFlags?: number;
|
|
179
|
+
// creature_template.StaticFlags1 (DB) / CreatureInfo.StaticFlags — raw bitfield. Wave E: NO_XP bit
|
|
180
|
+
// exposed as `noXp`. Cite: CreatureDefines.h CreatureStaticFlags.
|
|
181
|
+
staticFlags?: number;
|
|
182
|
+
// creature_template.StaticFlags2. NO_CRUSHING_BLOWS (0x10) is the combat consumer. Cite:
|
|
183
|
+
// CreatureDefines.h CreatureStaticFlags2; Unit.cpp:3109 CanCrushInCombat.
|
|
184
|
+
staticFlags2?: number;
|
|
185
|
+
// creature_template.UnitFlags — UNIT_FIELD_FLAGS at spawn, raw. Read it with the masks in
|
|
186
|
+
// `domain/creature/unitFlags.ts`, never bit-by-bit at the call site. Cite: Unit.h:468-503.
|
|
187
|
+
unitFlags?: number;
|
|
188
|
+
// CreatureStaticFlags::NO_XP (0x2) from StaticFlags — kill grants 0 XP. Cite: Creature.cpp IsNoXp;
|
|
189
|
+
// Formulas.h Gain early-out. Wave E bake.
|
|
190
|
+
noXp?: boolean;
|
|
191
|
+
// creature_template.GossipMenuId — join key into GameData.gossipMenus. Cite: Creature.h
|
|
192
|
+
// CreatureInfo.GossipMenuId. Wave E bake; 0/absent = no gossip tree.
|
|
193
|
+
gossipMenuId?: number;
|
|
194
|
+
// creature_template.Faction — for CanAssistTo same-faction check (Wave 4B pack assist). Cite:
|
|
195
|
+
// Creature.cpp CanAssistTo GetFaction match.
|
|
196
|
+
factionId?: number;
|
|
197
|
+
// Reputation awarded on kill: up to 2 factions with a standing `value`, a `maxStanding` cap and
|
|
198
|
+
// an `isTeamAward` spread. `teamDependent` means only the player's own team variant applies.
|
|
199
|
+
onKillRep?: {
|
|
200
|
+
teamDependent: boolean;
|
|
201
|
+
rewards: Array<{ faction: number; value: number; maxStanding: number; isTeamAward: boolean }>;
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// FE1 — the full EventAI payload on CreatureDef. Fields are DB-shaped and action/event semantics
|
|
206
|
+
// are NOT interpreted here. Cite: CreatureEventAI.h; sql creature_ai_scripts.
|
|
207
|
+
export interface CreatureAiBundle {
|
|
208
|
+
/** Raw EventAI scripts (creature_ai_scripts), one entry per script row. */
|
|
209
|
+
scripts?: CreatureAiScript[];
|
|
210
|
+
/** creature_ai_summons placements referenced by this creature's scripts (keyed by id). */
|
|
211
|
+
summons?: CreatureAiSummon[];
|
|
212
|
+
/** creature_spell_list rows for creature_template.SpellList when tables exist. */
|
|
213
|
+
spellLists?: CreatureSpellListEntry[];
|
|
214
|
+
// Optional targeting defs (creature_spell_targeting) used by spellLists.targetId. Only attached when the
|
|
215
|
+
// targeting table is present and referenced.
|
|
216
|
+
spellTargeting?: CreatureSpellTargeting[];
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/** One creature_ai_scripts row — event + up to 3 actions of any type (not CAST-only). */
|
|
220
|
+
export interface CreatureAiScript {
|
|
221
|
+
/** creature_ai_scripts.id (script PK). */
|
|
222
|
+
id: number;
|
|
223
|
+
/** event_type (EventAI_Type). */
|
|
224
|
+
eventType: number;
|
|
225
|
+
/** event_chance 0–100. */
|
|
226
|
+
eventChance: number;
|
|
227
|
+
/** event_flags bitfield (EFLAG_REPEATABLE = 0x01, …). */
|
|
228
|
+
eventFlags: number;
|
|
229
|
+
/** event_inverse_phase_mask — phases where this event does NOT fire. */
|
|
230
|
+
eventInversePhaseMask?: number;
|
|
231
|
+
eventParam1: number;
|
|
232
|
+
eventParam2: number;
|
|
233
|
+
eventParam3: number;
|
|
234
|
+
eventParam4: number;
|
|
235
|
+
/** Wider dumps may have event_param5/6 (CreatureEventAIMgr SELECT). */
|
|
236
|
+
eventParam5?: number;
|
|
237
|
+
eventParam6?: number;
|
|
238
|
+
/** Up to 3 actions; trailing NONE (type 0) slots may be omitted. */
|
|
239
|
+
actions: CreatureAiAction[];
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/** One actionN_* triple from creature_ai_scripts. */
|
|
243
|
+
export interface CreatureAiAction {
|
|
244
|
+
/** actionN_type (EventAI_ActionType; ACTION_T_CAST = 11, ACTION_T_SUMMON_ID = 32, …). */
|
|
245
|
+
type: number;
|
|
246
|
+
param1: number;
|
|
247
|
+
param2: number;
|
|
248
|
+
param3: number;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
// creature_ai_summons placement. Referenced by ACTION_T_SUMMON_ID param3 (SpawnId). Cite: CreatureEventAI.h
|
|
252
|
+
// CreatureEventAI_Summon; sql creature_ai_summons.
|
|
253
|
+
export interface CreatureAiSummon {
|
|
254
|
+
id: number;
|
|
255
|
+
x: number;
|
|
256
|
+
y: number;
|
|
257
|
+
z: number;
|
|
258
|
+
o: number;
|
|
259
|
+
/** spawntimesecs — despawn/respawn window (seconds). */
|
|
260
|
+
spawnTimeSecs: number;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
// One creature_spell_list row (list Id + Position). Linked via creature_template.SpellList. Cite: sql
|
|
264
|
+
// creature_spell_list / ObjectMgr LoadCreatureSpellLists.
|
|
265
|
+
export interface CreatureSpellListEntry {
|
|
266
|
+
listId: number;
|
|
267
|
+
position: number;
|
|
268
|
+
spellId: number;
|
|
269
|
+
flags: number;
|
|
270
|
+
targetId: number;
|
|
271
|
+
scriptId?: number;
|
|
272
|
+
availability?: number;
|
|
273
|
+
probability?: number;
|
|
274
|
+
initialMin?: number;
|
|
275
|
+
initialMax?: number;
|
|
276
|
+
repeatMin?: number;
|
|
277
|
+
repeatMax?: number;
|
|
278
|
+
combatCondition?: number;
|
|
279
|
+
listName?: string;
|
|
280
|
+
chanceSupportAction?: number;
|
|
281
|
+
chanceRangedAttack?: number;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
// One unit_condition Variable/Op/Value slot. `op` is ConditionOperation and `variable` is
|
|
285
|
+
// UnitCondition, both defaulting to 0 (NONE), which CheckOp passes.
|
|
286
|
+
export interface UnitConditionTerm {
|
|
287
|
+
variable: number;
|
|
288
|
+
op?: number;
|
|
289
|
+
value?: number;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
// unit_condition row. Terms AND together unless `flags` carries UNIT_CONDITION_FLAG_OR (0x1). Cite:
|
|
293
|
+
// UnitCondition.cpp Meets; UnitCondition.h:118-121.
|
|
294
|
+
export interface UnitConditionDef {
|
|
295
|
+
id: number;
|
|
296
|
+
terms: UnitConditionTerm[];
|
|
297
|
+
flags?: number;
|
|
298
|
+
// OR row with a spare slot: the empty slot's meets() returns true and the loop returns on the
|
|
299
|
+
// first true, so the row always passes. Source behaviour, recorded at bake time.
|
|
300
|
+
orShortCircuit?: boolean;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/** One friend/enemy clause: count units meeting `condition`, compare with `op` against `count`. */
|
|
304
|
+
export interface CombatConditionClause {
|
|
305
|
+
condition: number;
|
|
306
|
+
op?: number;
|
|
307
|
+
count?: number;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
// combat_condition row — the gate on a creature_spell_list entry. Cite: Globals/CombatCondition.h
|
|
311
|
+
// CombatConditionEntry; CombatCondition.cpp Meets.
|
|
312
|
+
export interface CombatConditionDef {
|
|
313
|
+
id: number;
|
|
314
|
+
worldStateExpression?: number;
|
|
315
|
+
selfCondition?: number;
|
|
316
|
+
targetCondition?: number;
|
|
317
|
+
friend?: CombatConditionClause[];
|
|
318
|
+
friendLogic?: number;
|
|
319
|
+
enemy?: CombatConditionClause[];
|
|
320
|
+
enemyLogic?: number;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
/** creature_spell_targeting row when table present. */
|
|
324
|
+
export interface CreatureSpellTargeting {
|
|
325
|
+
id: number;
|
|
326
|
+
type: number;
|
|
327
|
+
param1: number;
|
|
328
|
+
param2: number;
|
|
329
|
+
param3: number;
|
|
330
|
+
unitCondition?: number;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
// One enemy cast from creature_template_spells and/or EventAI ACTION_T_CAST (11). Timers and
|
|
334
|
+
// conditions appear only when sourced from event_param*; never invented.
|
|
335
|
+
export interface CreatureCastEntry {
|
|
336
|
+
spellId: number;
|
|
337
|
+
// creature_spell_list.CombatCondition — a combat_condition id gating this row at pick time. Cite:
|
|
338
|
+
// UnitAI.cpp:1218-1224 UpdateSpellLists.
|
|
339
|
+
combatCondition?: number;
|
|
340
|
+
/** ScriptDev instance-data gate (IR timer.gate). Cite: zulgurub.h TYPE_*; dataGatePasses. */
|
|
341
|
+
instanceDataField?: number;
|
|
342
|
+
instanceDataEquals?: number;
|
|
343
|
+
instanceDataNotEquals?: number;
|
|
344
|
+
// Skip unless the current victim is known out of melee. Cite: boss_grobbulus.cpp:97-110
|
|
345
|
+
// CanReachWithMeleeAttack.
|
|
346
|
+
requireVictimNotInMelee?: boolean;
|
|
347
|
+
/** Fire timer actions without casting. Cite: boss_four_horsemen.cpp:169-174. */
|
|
348
|
+
pollOnly?: boolean;
|
|
349
|
+
/** Exhaust after this many CAST_OK. Cite: boss_gothik.cpp:305 m_teleportCount >= 4. */
|
|
350
|
+
maxFires?: number;
|
|
351
|
+
/** SCHEME_HIGHEST_HP among the first N threat entries in melee. Cite: boss_patchwerk.cpp:114-127. */
|
|
352
|
+
highestHpTopThreat?: number;
|
|
353
|
+
/** Shuffle and cast `ids[waveLeft-1]`. Cite: boss_fankriss.cpp:91-99,141-157. */
|
|
354
|
+
rotateSpellIds?: number[];
|
|
355
|
+
// One urand pick per SPAWN, held for the whole fight. Cite: zulgurubScripts.cpp:61,110-115.
|
|
356
|
+
pickPerSpawnSpellIds?: number[];
|
|
357
|
+
// An empty friendly-selector pool falls back to SELF. Cite: boss_sulfuron_harbinger.cpp:104-105.
|
|
358
|
+
friendlyFallbackSelf?: boolean;
|
|
359
|
+
// DoSelectLowestHpFriendly radius; pairs with friendlyHpDeficit as its minHPDiff.
|
|
360
|
+
// Cite: UnitAI.cpp DoSelectLowestHpFriendly; boss_sulfuron_harbinger.cpp:162.
|
|
361
|
+
friendlyLowestHpYd?: number;
|
|
362
|
+
waveMinCount?: number;
|
|
363
|
+
waveMaxCount?: number;
|
|
364
|
+
intraWaveMinMs?: number;
|
|
365
|
+
intraWaveMaxMs?: number;
|
|
366
|
+
/** EventAI event_type: 0 TIMER_IN_COMBAT, 2 HP, 3 MANA, 4 AGGRO, 9 RANGE, 12 TARGET_HP, … */
|
|
367
|
+
eventType?: number;
|
|
368
|
+
initialMinMs?: number;
|
|
369
|
+
initialMaxMs?: number;
|
|
370
|
+
repeatMinMs?: number;
|
|
371
|
+
repeatMaxMs?: number;
|
|
372
|
+
/** EVENT_T_HP / TARGET_HP: percentMax / percentMin (CreatureEventAI.cpp percent_range). */
|
|
373
|
+
hpPctMax?: number;
|
|
374
|
+
hpPctMin?: number;
|
|
375
|
+
/** EVENT_T_MANA / TARGET_MANA: ManaMax% / ManaMin%. */
|
|
376
|
+
manaPctMax?: number;
|
|
377
|
+
manaPctMin?: number;
|
|
378
|
+
/** EVENT_T_RANGE: MinDist / MaxDist yards. */
|
|
379
|
+
rangeMinYd?: number;
|
|
380
|
+
rangeMaxYd?: number;
|
|
381
|
+
/** EVENT_T_MISSING_AURA / TARGET_MISSING_AURA / AURA: SpellID + stack threshold. */
|
|
382
|
+
auraSpellId?: number;
|
|
383
|
+
/** Stack amount required (MISSING: re-cast when below; default 1). */
|
|
384
|
+
auraStacks?: number;
|
|
385
|
+
// EVENT_T_FRIENDLY_HP: absolute HP deficit (or percent when friendlyHpIsPercent). Cite: CreatureEventAI.h
|
|
386
|
+
// friendly_hp ~697–704; CheckEvent ~379–390.
|
|
387
|
+
friendlyHpDeficit?: number;
|
|
388
|
+
/** EVENT_T_FRIENDLY_HP / FRIENDLY_IS_CC / FRIENDLY_MISSING_BUFF: scan radius yards. */
|
|
389
|
+
friendlyRadiusYd?: number;
|
|
390
|
+
/** EVENT_T_FRIENDLY_HP isPercent (event_param5). */
|
|
391
|
+
friendlyHpIsPercent?: boolean;
|
|
392
|
+
// EVENT_T_FRIENDLY_MISSING_BUFF: required buff spell id. Cite: CreatureEventAI.h friendly_buff ~713–721.
|
|
393
|
+
friendlyBuffSpellId?: number;
|
|
394
|
+
// EVENT_T_FRIENDLY_MISSING_BUFF inCombat mode: 0 combat-only, 1 both, 2 OOC-only. Cite:
|
|
395
|
+
// CreatureEventAI.cpp ~409–428.
|
|
396
|
+
friendlyBuffInCombat?: number;
|
|
397
|
+
/** EVENT_T_FACING_TARGET: 0 = expect back, 1 = expect front. Cite: facingTarget ~770–777. */
|
|
398
|
+
facingBackOrFront?: number;
|
|
399
|
+
/** EVENT_T_SELECT_ATTACKING_TARGET / OOC_LOS range band. */
|
|
400
|
+
selectMinRangeYd?: number;
|
|
401
|
+
selectMaxRangeYd?: number;
|
|
402
|
+
/** EVENT_T_RECEIVE_AI_EVENT: AIEventType + optional sender entry. Cite: receiveAIEvent ~754–761. */
|
|
403
|
+
receiveAiEventType?: number;
|
|
404
|
+
receiveAiSenderEntry?: number;
|
|
405
|
+
/** EVENT_T_RECEIVE_EMOTE: emote id. Cite: receive_emote ~737–742. */
|
|
406
|
+
receiveEmoteId?: number;
|
|
407
|
+
/** EVENT_T_SUMMONED_UNIT / SUMMONED_JUST_DIED / DESPAWN: creature entry filter (0 = any). */
|
|
408
|
+
summonedCreatureId?: number;
|
|
409
|
+
/** EVENT_T_SPELLHIT / SPELLHIT_TARGET / SPELL_CAST: spell id filter (0 = any for hit). */
|
|
410
|
+
spellHitSpellId?: number;
|
|
411
|
+
/** EVENT_T_SPELLHIT school mask (-1 / 0xffffffff = any). */
|
|
412
|
+
spellHitSchoolMask?: number;
|
|
413
|
+
// event_chance 0–100. Absent = 100. Cite: CreatureEventAI.cpp ProcessEvent `event_chance <= rnd % 100` →
|
|
414
|
+
// fail and reset timer.
|
|
415
|
+
chancePct?: number;
|
|
416
|
+
// event_flags bitfield. EFLAG_REPEATABLE = 0x01 — without it, timer-based events exhaust after one fire
|
|
417
|
+
// (CreatureEventAI.cpp ResetEvent).
|
|
418
|
+
eventFlags?: number;
|
|
419
|
+
// event_inverse_phase_mask — event is skipped when `(mask & (1 << m_Phase)) != 0`. Cite:
|
|
420
|
+
// CreatureEventAI.cpp CheckEvent ~266–270.
|
|
421
|
+
eventInversePhaseMask?: number;
|
|
422
|
+
castFlags?: number;
|
|
423
|
+
// SPELL_LIST_FLAG_NON_BLOCKING — cast outside the one-action roll, so it never competes for the slot. 1
|
|
424
|
+
// armed row. Cite: UnitAI.cpp:1265-1269.
|
|
425
|
+
nonBlocking?: boolean;
|
|
426
|
+
// SPELL_LIST_FLAG_CATEGORY_COOLDOWN — impose the category cooldown, not the personal one. 4 armed rows on
|
|
427
|
+
// one list (the Four Horsemen). Cite: Creature.cpp:1553.
|
|
428
|
+
categoryCooldown?: boolean;
|
|
429
|
+
// `creature_spell_list.ScriptId` — a `dbscripts_on_relay` id started when this cast succeeds. 5 armed
|
|
430
|
+
// rows. Cite: UnitAI.cpp:1259 ScriptsStart(SCRIPT_TYPE_RELAY, …).
|
|
431
|
+
relayScriptId?: number;
|
|
432
|
+
target?: number;
|
|
433
|
+
// When 'spell_list', `target` is a creature_spell_list TargetId, not an EventAI TARGET_T_*, and
|
|
434
|
+
// combat routes through selectTarget(..., 'spell_list') to disambiguate the overlapping 0–7 ids.
|
|
435
|
+
targetSpace?: 'eventai' | 'spell_list';
|
|
436
|
+
// This row's cadence belongs to creature_spell_list, so it obeys the 1200 ms poll even though it
|
|
437
|
+
// reached the scheduler as a ScriptDev timer. 164 IR timers across 43 lists are in that shape.
|
|
438
|
+
spellListPolled?: boolean;
|
|
439
|
+
/** Unit::getClass() filter (enum Classes). Cite: SharedDefines.h:65-79; boss_nefarian.cpp:270-280. */
|
|
440
|
+
selectClass?: number;
|
|
441
|
+
/** SELECT_FLAG_IN_MELEE_RANGE as a target PICK. Cite: boss_twinemperors.cpp:256. */
|
|
442
|
+
selectInMelee?: boolean;
|
|
443
|
+
// The same flag as an EXISTENCE test before a self-centred cast: fire only while somebody is in
|
|
444
|
+
// melee reach. Cite: shadowfang_keep.cpp:477 Thundershock; darkshore.cpp:805 Thunderclap.
|
|
445
|
+
requireMeleeTargetExists?: boolean;
|
|
446
|
+
// creature_spell_list Probability (weight among ready spells; 0 = position priority). Kept for scheduler
|
|
447
|
+
// / tests; not EventAI event_chance (0–100). Cite: UnitAI.cpp UpdateSpellLists ~1199–1292.
|
|
448
|
+
spellListProbability?: number;
|
|
449
|
+
/** creature_ai_scripts.id — stable priority key. */
|
|
450
|
+
scriptId?: number;
|
|
451
|
+
// ScriptDev startDisabled — slot arms exhausted until arm_timer. Cite: boss_marli.cpp:72
|
|
452
|
+
// AddCombatAction(MARLI_CHARGE, true).
|
|
453
|
+
startDisabled?: boolean;
|
|
454
|
+
}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
// ---- Instances / dungeons (Phase 5) ---------------------------------------
|
|
2
|
+
|
|
3
|
+
export type EncounterKind = 'trash' | 'boss' | 'object' | 'rare' | 'entrance' | 'exit';
|
|
4
|
+
|
|
5
|
+
// One stop inside a dungeon, trash or boss. `pack` makes it a real multi-enemy pull through the
|
|
6
|
+
// engine's N-enemy path, and `events` is the DSL for death-summons, waves, gates and flags.
|
|
7
|
+
export interface EncounterDef {
|
|
8
|
+
id: string; // unique within its instance
|
|
9
|
+
name: string; // display name of the pull ("Rhahk'zor")
|
|
10
|
+
kind: EncounterKind;
|
|
11
|
+
creatureEntry: number; // the primary CreatureDef fought
|
|
12
|
+
bossSpells?: number[]; // ability spell ids the boss can cast (boss mechanics)
|
|
13
|
+
intro?: string; // optional flavor shown before engaging
|
|
14
|
+
// Which wing of its instance this encounter is in. Naxxramas ships ten ZoneMusic sets while
|
|
15
|
+
// DUNGEON_MUSIC is keyed by instance, so nine had no route. Not InstanceDef.wing, which splits maps.
|
|
16
|
+
wing?: string;
|
|
17
|
+
// Additional creatures pulled alongside the primary as one fight, crediting individually but
|
|
18
|
+
// clearing only when the whole pull is dead. CSE slots use `poolCandidates` with count 1.
|
|
19
|
+
pack?: EncounterPackMember[];
|
|
20
|
+
// When the primary is itself a CSE spawn slot (entry 0 in creature table), candidates from survey/DB.
|
|
21
|
+
// Placeholder `creatureEntry` is candidates[0].
|
|
22
|
+
poolCandidates?: number[];
|
|
23
|
+
// Cluster centroid or world point from pack-clusters.json. Combat seeds multi-enemy positions
|
|
24
|
+
// from origin plus per-guid member coords; `z` is carried for floorplan stacking only.
|
|
25
|
+
origin?: { x: number; y: number; z?: number };
|
|
26
|
+
// Named WMO room this pack's centroid falls in: `roomId` is `${mapId}/${slug}` and `roomName` is
|
|
27
|
+
// the WMOAreaTable name verbatim. Absent when it sits in no named room — never nearest-snapped.
|
|
28
|
+
roomId?: string | null;
|
|
29
|
+
roomName?: string | null;
|
|
30
|
+
// True when this pull sits under open sky, gating SPELL_ATTR_ONLY_OUTDOORS. Absent ⇒ outdoors,
|
|
31
|
+
// which is the core's own default when a point has no WMO. Cite: GridMap.cpp:886-903.
|
|
32
|
+
outdoors?: boolean;
|
|
33
|
+
// Optional patrol / scripted path (creature_movement waypoints). W5 populates the 22 patrol encounters;
|
|
34
|
+
// planar consumers ignore z.
|
|
35
|
+
path?: { x: number; y: number; z?: number }[];
|
|
36
|
+
// Source spawn guids for this pull after boss/rare strip. Used with origin to place enemies at real
|
|
37
|
+
// relative cluster coords (static seed); missing → synthetic slots.
|
|
38
|
+
spawnGuids?: number[];
|
|
39
|
+
// Optional encounter-event DSL (Wave-1 D-4 primitives). See `EncounterEvent`. Evaluated by pure helpers
|
|
40
|
+
// in `world/instances.ts`; wired in `engine/game.ts`.
|
|
41
|
+
events?: EncounterEvent[];
|
|
42
|
+
// Quest whose accept/active-log state starts this encounter (dbscripts_on_quest_start). The autopilot
|
|
43
|
+
// must not target it unless that quest is open in the party's log.
|
|
44
|
+
startQuestId?: number;
|
|
45
|
+
// Tribute / optional bosses: an uncleared optional prefix does not block later encounters, and
|
|
46
|
+
// isComplete ignores them. Cite: instance_dire_maul.cpp:507-515 counts the guards ALIVE.
|
|
47
|
+
optional?: boolean;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// One authored pack row, the same shape as EncounterDef.pack members, used by waves and
|
|
51
|
+
// HP-threshold spawns. `poolCandidates` is CSE one-slot-per-guid and count must be 1.
|
|
52
|
+
export type EncounterPackMember = {
|
|
53
|
+
creatureEntry: number;
|
|
54
|
+
count: number;
|
|
55
|
+
poolCandidates?: number[];
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
// The encounter event DSL: `onDeathSummon` chains a follow-up phase, `waves` are player-paced
|
|
59
|
+
// staged pulls, `hpThreshold` fires at an HP percent, and requiresFlag/setsFlag/objectGate gate.
|
|
60
|
+
export type EncounterEvent =
|
|
61
|
+
| { kind: 'onDeathSummon'; creatureEntry: number; bossSpells?: number[] }
|
|
62
|
+
| { kind: 'waves'; waves: { pack: EncounterPackMember[] }[] }
|
|
63
|
+
| {
|
|
64
|
+
kind: 'hpThreshold';
|
|
65
|
+
/** Fire when primary HP% is ≤ this value (0–100). */
|
|
66
|
+
pct: number;
|
|
67
|
+
/** Default true — fire at most once per run/encounter. */
|
|
68
|
+
once?: boolean;
|
|
69
|
+
/** Adds to spawn when the threshold fires (Wave-1: phase-chain after primary). */
|
|
70
|
+
spawn?: EncounterPackMember[];
|
|
71
|
+
/** Optional phase id recorded on the run as flag `phase:<phase>` when fired. */
|
|
72
|
+
phase?: number;
|
|
73
|
+
}
|
|
74
|
+
| { kind: 'requiresFlag'; flag: string }
|
|
75
|
+
| { kind: 'setsFlag'; flag: string }
|
|
76
|
+
| {
|
|
77
|
+
kind: 'objectGate';
|
|
78
|
+
/** Primary / representative GO entry (always pin + match). */
|
|
79
|
+
goEntry: number;
|
|
80
|
+
// All GO entries that count toward this gate (BRD vault doors, ST statues). Absent ⇒ only `goEntry`.
|
|
81
|
+
// Multi-entry: each entry counts at most once.
|
|
82
|
+
goEntries?: number[];
|
|
83
|
+
// Uses required before `setsFlag` is set. Default 1 (single-use gates unchanged). May be ≤
|
|
84
|
+
// `goEntries.length` (e.g. Strat 3-of-6 postboxes).
|
|
85
|
+
needUses?: number;
|
|
86
|
+
/** Item entry required in inventory; consumed per successful use when spellcharges_1 < 0, kept at 0. Cite: Spell.cpp:4209 TakeCastItem. */
|
|
87
|
+
requiredItem?: number;
|
|
88
|
+
setsFlag: string;
|
|
89
|
+
/** Default true — second use is a no-op once `setsFlag` is present. */
|
|
90
|
+
once?: boolean;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
// A lootable instance GO (chest / quest object) surfaced as a walk-and-use pin. Position, name and
|
|
94
|
+
// lootId come from the baked GO rows; looted-once state is the run flag `go-looted:<guid>`.
|
|
95
|
+
export type LootObjectDef = {
|
|
96
|
+
goEntry: number;
|
|
97
|
+
/** Hidden until this run flag is set (Chest of The Seven after the tomb event). */
|
|
98
|
+
revealedByFlag?: string;
|
|
99
|
+
/** Item entry that must be in inventory to open (key). */
|
|
100
|
+
requiredItem?: number;
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
// An instanced dungeon whose entrance portal lives in `portalZone`. Encounters clear in listed
|
|
104
|
+
// order, and `lockoutMs` is 0 for the freely-resettable 5-man loop.
|
|
105
|
+
export interface InstanceDef {
|
|
106
|
+
id: string;
|
|
107
|
+
name: string;
|
|
108
|
+
// Classic map id (Map.dbc / creature.map). Required for dungeon-map projection and shared-map wing
|
|
109
|
+
// partition. 26 InstanceDefs → 19 distinct mapIds. Cite: cluster-dungeon-packs.mjs DUNGEONS; dmapfid W2.
|
|
110
|
+
mapId: number;
|
|
111
|
+
// Shared-map wing key when multiple InstanceDefs share one mapId (SM gy/lib/arm/cat, BRS lbrs/ubrs, Strat
|
|
112
|
+
// live/undead, Dire Maul east/west/north). Absent on single-instance maps.
|
|
113
|
+
wing?: string;
|
|
114
|
+
portalZone: string; // world zone id where the entrance is found
|
|
115
|
+
// areatrigger_teleport id of the entrance when the zone match cannot find it: BWL (3726) and MC's
|
|
116
|
+
// bridge (2886) sit INSIDE another instance map. Naxx is 4055; 4156 is the in-instance lair pad.
|
|
117
|
+
entranceTriggerId?: number;
|
|
118
|
+
minLevel: number; // level required to enter
|
|
119
|
+
// instance_template.maxPlayers — the sourced group size. Absent means 5. Drives how many companions walk
|
|
120
|
+
// the run (squad.ts maxCompanionsFor). Cite: cmangos-classic/sql/base/mangos.sql:2545-2577.
|
|
121
|
+
maxPlayers?: number;
|
|
122
|
+
levelRange: [number, number];
|
|
123
|
+
/** Optional. No invented brochure text - omit or leave empty (AI.md §1b). */
|
|
124
|
+
description?: string;
|
|
125
|
+
lockoutMs: number; // 0 = freely resettable; >0 = timed lockout
|
|
126
|
+
encounters: EncounterDef[];
|
|
127
|
+
quests?: number[]; // dungeon quest entries offered at the entrance
|
|
128
|
+
/** Lootable chests / quest objects the floor should surface (baked GO rows by entry). */
|
|
129
|
+
lootObjects?: readonly LootObjectDef[];
|
|
130
|
+
/**
|
|
131
|
+
* Where the party stands on entry, for an instance that is QUEUED rather than walked into and so
|
|
132
|
+
* has no areatrigger to read. Alterac Valley's two wings are the case: BattleGroundAV seats each
|
|
133
|
+
* side at its own gate, and without this `entranceWorld` falls through to the first encounter's
|
|
134
|
+
* origin — which is the enemy captain, on the far side of the valley.
|
|
135
|
+
*/
|
|
136
|
+
partyStart?: { x: number; y: number; z?: number };
|
|
137
|
+
// In-instance teleporters (Naxx wing returns / Frostwyrm pad). Dest always from areatrigger_teleport via
|
|
138
|
+
// `areatriggerId` — never hand-typed arrivals.
|
|
139
|
+
teleporters?: readonly InstanceTeleporterDef[];
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// Clickable in-instance teleporter. Arrival is `areatriggerTeleports` row `areatriggerId`. GO portals
|
|
143
|
+
// supply `goEntry`; areatrigger-only pads supply `src` (AreaTrigger.dbc stand).
|
|
144
|
+
export type InstanceTeleporterDef = {
|
|
145
|
+
/** Baked gameobject entry to click. Omit for areatrigger-only pads. */
|
|
146
|
+
goEntry?: number;
|
|
147
|
+
/** areatrigger_teleport id — targetX/Y/Z is the arrival. */
|
|
148
|
+
areatriggerId: number;
|
|
149
|
+
/** Pin stand when there is no GO. Cite AreaTrigger.dbc for the trigger's own x/y/z. */
|
|
150
|
+
src?: { x: number; y: number; z?: number };
|
|
151
|
+
/** Encounter ids that must be cleared before the portal accepts a click. */
|
|
152
|
+
requiresCleared?: readonly string[];
|
|
153
|
+
/** Display name override; GO bake name wins when goEntry is set. */
|
|
154
|
+
name?: string;
|
|
155
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// ---- Reputation (E1 — Wave C keystone) ------------------------------------
|
|
2
|
+
|
|
3
|
+
// A player-tracked reputation faction (Faction.dbc, reputationListID >= 0). `base` is the per-race
|
|
4
|
+
// table: start standing is the first entry whose masks fit (0 = wildcard), else 0.
|
|
5
|
+
export interface FactionDef {
|
|
6
|
+
id: number; // Faction.dbc ID (grant target + char.reputations key)
|
|
7
|
+
repListId: number; // reputationListID (player rep-list index)
|
|
8
|
+
name: string;
|
|
9
|
+
team: number; // parent/team faction group id (used for team-award spillover)
|
|
10
|
+
base: Array<{ raceMask: number; classMask: number; value: number; flags: number }>;
|
|
11
|
+
/** Faction.dbc Description[enUS] — the blurb the client shows in ReputationDetailFrame
|
|
12
|
+
* ("One of the last bastions of human power…"). Absent for the ~20 rows that have none. */
|
|
13
|
+
description?: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// A FactionTemplate.dbc row — the reaction masks deciding friendly/neutral/hostile between two
|
|
17
|
+
// units. Reaction is computed by domain/creature/faction.ts, ported from Relations.cpp.
|
|
18
|
+
export interface FactionTemplateDef {
|
|
19
|
+
id: number; // FactionTemplate.dbc ID (= creature_template.Faction)
|
|
20
|
+
faction: number; // Faction.dbc id — the identity used by enemy/friend cross-refs
|
|
21
|
+
ourMask: number; // factionGroupMask — the groups this template belongs to
|
|
22
|
+
friendMask: number; // friendGroupMask — groups it is friendly toward
|
|
23
|
+
enemyMask: number; // enemyGroupMask — groups it is hostile toward
|
|
24
|
+
enemyFactions: number[]; // Faction.dbc ids it is explicitly hostile to (enemyFaction[4], nonzero)
|
|
25
|
+
friendFactions: number[]; // Faction.dbc ids it is explicitly friendly to (friendFaction[4], nonzero)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** One of the 8 global reputation rank bands (ReputationMgr PointsInRank, cumulative from -42000). */
|
|
29
|
+
export interface ReputationRankDef {
|
|
30
|
+
rank: number; // 0 Hated … 7 Exalted
|
|
31
|
+
name: string;
|
|
32
|
+
min: number; // lowest standing that reads as this rank
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** Per-faction rep-gain multipliers (reputation_reward_rate). A faction absent here => rate 1.0. */
|
|
36
|
+
export interface ReputationRateDef {
|
|
37
|
+
faction: number;
|
|
38
|
+
quest: number;
|
|
39
|
+
creature: number;
|
|
40
|
+
spell: number;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** Reputation spillover: gaining rep with `faction` also grants a fraction to related factions,
|
|
44
|
+
* each gated by a minimum rank (reputation_spillover_template). Cite: Player.cpp RewardReputation. */
|
|
45
|
+
export interface ReputationSpilloverDef {
|
|
46
|
+
faction: number;
|
|
47
|
+
targets: Array<{ faction: number; rate: number; rank: number }>;
|
|
48
|
+
}
|