azeroth-shell 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1163) hide show
  1. package/README.md +138 -2
  2. package/bin/azsh.mjs +19 -0
  3. package/docs/aifid/eventai-texts.json +4414 -0
  4. package/docs/dungeons/atlas/atlas-rows-dungeons.json +8989 -0
  5. package/docs/dungeons/survey/pack-id-migration.json +2418 -0
  6. package/package.json +26 -4
  7. package/src/autopilot/bossSkip.ts +26 -0
  8. package/src/autopilot/combatRotation.ts +824 -0
  9. package/src/autopilot/config.ts +533 -0
  10. package/src/autopilot/consumables.ts +58 -0
  11. package/src/autopilot/encounterStand.ts +121 -0
  12. package/src/autopilot/objectGatePlan.ts +53 -0
  13. package/src/autopilot/pathEngage.ts +229 -0
  14. package/src/autopilot/plan.ts +1643 -0
  15. package/src/autopilot/questPolicy.ts +274 -0
  16. package/src/autopilot/routeStep.ts +69 -0
  17. package/src/autopilot/sessionReport.ts +88 -0
  18. package/src/autopilot/topOffPower.ts +26 -0
  19. package/src/autopilot/view.ts +476 -0
  20. package/src/cli/bootCheck.mjs +34 -0
  21. package/src/cli/bootData.mjs +57 -0
  22. package/src/cli/combatLogFilter.ts +153 -0
  23. package/src/cli/combatLogFormat.ts +613 -0
  24. package/src/cli/fileRepository.mjs +105 -0
  25. package/src/cli/gzLoader.mjs +31 -0
  26. package/src/cli/liveGauntletEscort.ts +978 -0
  27. package/src/cli/liveStratUndead.ts +305 -0
  28. package/src/cli/macroHostCombat.ts +545 -0
  29. package/src/cli/macroHostWorld.ts +330 -0
  30. package/src/cli/prefs.mjs +31 -0
  31. package/src/cli/register.mjs +4 -0
  32. package/src/cli/repl.mjs +693 -0
  33. package/src/cli/rotationText.mjs +226 -0
  34. package/src/cli/squad.mjs +105 -0
  35. package/src/cli/term.mjs +126 -0
  36. package/src/cli/text.mjs +122 -0
  37. package/src/cli/tui.mjs +626 -0
  38. package/src/cli/tuiArena.mjs +109 -0
  39. package/src/cli/tuiAutopilotSettings.mjs +93 -0
  40. package/src/cli/tuiBags.mjs +180 -0
  41. package/src/cli/tuiBars.mjs +133 -0
  42. package/src/cli/tuiBg.mjs +243 -0
  43. package/src/cli/tuiBulk.mjs +162 -0
  44. package/src/cli/tuiCheck.mjs +1882 -0
  45. package/src/cli/tuiCity.mjs +396 -0
  46. package/src/cli/tuiCompanionKit.mjs +300 -0
  47. package/src/cli/tuiCompanions.mjs +471 -0
  48. package/src/cli/tuiDev.mjs +62 -0
  49. package/src/cli/tuiDungeon.mjs +606 -0
  50. package/src/cli/tuiEnchantTarget.mjs +120 -0
  51. package/src/cli/tuiFight.mjs +577 -0
  52. package/src/cli/tuiFightPanes.mjs +228 -0
  53. package/src/cli/tuiFloor.mjs +506 -0
  54. package/src/cli/tuiGear.mjs +158 -0
  55. package/src/cli/tuiHonor.mjs +74 -0
  56. package/src/cli/tuiLoot.mjs +97 -0
  57. package/src/cli/tuiMacros.mjs +144 -0
  58. package/src/cli/tuiOutfitter.mjs +115 -0
  59. package/src/cli/tuiPet.mjs +116 -0
  60. package/src/cli/tuiProfessions.mjs +800 -0
  61. package/src/cli/tuiRaid.mjs +127 -0
  62. package/src/cli/tuiRep.mjs +65 -0
  63. package/src/cli/tuiSaves.mjs +69 -0
  64. package/src/cli/tuiSearch.mjs +363 -0
  65. package/src/cli/tuiSettings.mjs +151 -0
  66. package/src/cli/tuiSimLab.mjs +80 -0
  67. package/src/cli/tuiTalents.mjs +60 -0
  68. package/src/cli/tuiViews.mjs +1178 -0
  69. package/src/cli/tuiWiki.mjs +181 -0
  70. package/src/cli/tuiWorld.mjs +361 -0
  71. package/src/cli/wikiIndex.ts +259 -0
  72. package/src/cli/wikiSources.ts +355 -0
  73. package/src/data/alteracValley.ts +176 -0
  74. package/src/data/appearanceOptions.ts +534 -0
  75. package/src/data/applyLootChanceSanity.ts +21 -0
  76. package/src/data/createFlavor.ts +96 -0
  77. package/src/data/customItems.ts +33 -0
  78. package/src/data/dataStore.ts +1904 -0
  79. package/src/data/dungeonGameObjects.ts +84 -0
  80. package/src/data/dungeonPlateCover.ts +66 -0
  81. package/src/data/dungeonSpawns.ts +294 -0
  82. package/src/data/dungeons/alterac-valley.ts +135 -0
  83. package/src/data/dungeons/apply-dungeon-rooms.ts +29 -0
  84. package/src/data/dungeons/apply-encounter-outdoors.ts +72 -0
  85. package/src/data/dungeons/apply-instance-geometry.ts +65 -0
  86. package/src/data/dungeons/apply-spawn-placement.ts +171 -0
  87. package/src/data/dungeons/blackfathom-deeps.ts +539 -0
  88. package/src/data/dungeons/blackrock-depths.ts +1410 -0
  89. package/src/data/dungeons/blackwing-lair.ts +129 -0
  90. package/src/data/dungeons/boss-eventai.ts +8 -0
  91. package/src/data/dungeons/deadmines.ts +410 -0
  92. package/src/data/dungeons/dire-maul-east.ts +980 -0
  93. package/src/data/dungeons/dire-maul-north.ts +661 -0
  94. package/src/data/dungeons/dire-maul-west.ts +785 -0
  95. package/src/data/dungeons/dungeon-rooms.json +5479 -0
  96. package/src/data/dungeons/encounter-outdoors.json +359 -0
  97. package/src/data/dungeons/eventai/blackfathom-deeps.ts +308 -0
  98. package/src/data/dungeons/eventai/blackrock-depths.ts +1257 -0
  99. package/src/data/dungeons/eventai/deadmines.ts +264 -0
  100. package/src/data/dungeons/eventai/dire-maul-east.ts +320 -0
  101. package/src/data/dungeons/eventai/gnomeregan.ts +213 -0
  102. package/src/data/dungeons/eventai/helpers.ts +79 -0
  103. package/src/data/dungeons/eventai/index.ts +133 -0
  104. package/src/data/dungeons/eventai/lbrs.ts +372 -0
  105. package/src/data/dungeons/eventai/maraudon.ts +323 -0
  106. package/src/data/dungeons/eventai/ragefire-chasm.ts +108 -0
  107. package/src/data/dungeons/eventai/razorfen-downs.ts +207 -0
  108. package/src/data/dungeons/eventai/razorfen-kraul.ts +326 -0
  109. package/src/data/dungeons/eventai/scholomance.ts +680 -0
  110. package/src/data/dungeons/eventai/shadowfang-keep.ts +230 -0
  111. package/src/data/dungeons/eventai/sm-cathedral.ts +75 -0
  112. package/src/data/dungeons/eventai/sm-graveyard.ts +150 -0
  113. package/src/data/dungeons/eventai/sm-library.ts +55 -0
  114. package/src/data/dungeons/eventai/stratholme-undead.ts +127 -0
  115. package/src/data/dungeons/eventai/sunken-temple.ts +582 -0
  116. package/src/data/dungeons/eventai/the-stockade.ts +228 -0
  117. package/src/data/dungeons/eventai/ubrs.ts +225 -0
  118. package/src/data/dungeons/eventai/uldaman.ts +355 -0
  119. package/src/data/dungeons/eventai/wailing-caverns.ts +396 -0
  120. package/src/data/dungeons/eventai/zul-farrak.ts +591 -0
  121. package/src/data/dungeons/gnomeregan.ts +909 -0
  122. package/src/data/dungeons/index.ts +126 -0
  123. package/src/data/dungeons/instance-geometry.json +5233 -0
  124. package/src/data/dungeons/key-sources.json +169 -0
  125. package/src/data/dungeons/lbrs.ts +996 -0
  126. package/src/data/dungeons/maraudon.ts +786 -0
  127. package/src/data/dungeons/molten-core.ts +194 -0
  128. package/src/data/dungeons/naxxramas.ts +173 -0
  129. package/src/data/dungeons/onyxias-lair.ts +71 -0
  130. package/src/data/dungeons/pack-from-clusters.ts +1256 -0
  131. package/src/data/dungeons/ragefire-chasm.ts +238 -0
  132. package/src/data/dungeons/razorfen-downs.ts +698 -0
  133. package/src/data/dungeons/razorfen-kraul.ts +766 -0
  134. package/src/data/dungeons/ruins-of-ahnqiraj.ts +121 -0
  135. package/src/data/dungeons/scholomance.ts +1076 -0
  136. package/src/data/dungeons/shadowfang-keep.ts +740 -0
  137. package/src/data/dungeons/sm-armory.ts +266 -0
  138. package/src/data/dungeons/sm-cathedral.ts +430 -0
  139. package/src/data/dungeons/sm-graveyard.ts +482 -0
  140. package/src/data/dungeons/sm-library.ts +337 -0
  141. package/src/data/dungeons/stratholme-live.ts +808 -0
  142. package/src/data/dungeons/stratholme-undead.ts +1164 -0
  143. package/src/data/dungeons/sunken-temple.ts +931 -0
  144. package/src/data/dungeons/temple-of-ahnqiraj.ts +119 -0
  145. package/src/data/dungeons/the-stockade.ts +282 -0
  146. package/src/data/dungeons/ubrs.ts +1286 -0
  147. package/src/data/dungeons/uldaman.ts +685 -0
  148. package/src/data/dungeons/wailing-caverns.ts +356 -0
  149. package/src/data/dungeons/zul-farrak.ts +686 -0
  150. package/src/data/dungeons/zul-gurub.ts +142 -0
  151. package/src/data/dungeons.ts +42 -0
  152. package/src/data/fixtures.ts +446 -0
  153. package/src/data/gameobject-data.json.gz +0 -0
  154. package/src/data/item-data.json.gz +0 -0
  155. package/src/data/loot-data.json.gz +0 -0
  156. package/src/data/maps/atlas-approach-maps.json +1425 -0
  157. package/src/data/maps/atlas-landmarks.json +1711 -0
  158. package/src/data/maps/dungeon-viewports.json +392 -0
  159. package/src/data/materializeModDamagePercentTaken.ts +70 -0
  160. package/src/data/materializeModHealthRegen.ts +89 -0
  161. package/src/data/materializeSpellReputation.ts +26 -0
  162. package/src/data/pageTexts.ts +19 -0
  163. package/src/data/profession-data.json.gz +0 -0
  164. package/src/data/raid-plans/blackfathom-deeps.json +86 -0
  165. package/src/data/raid-plans/blackrock-depths.json +419 -0
  166. package/src/data/raid-plans/blackwing-lair.json +328 -0
  167. package/src/data/raid-plans/deadmines.json +55 -0
  168. package/src/data/raid-plans/dire-maul-east.json +94 -0
  169. package/src/data/raid-plans/dire-maul-north.json +70 -0
  170. package/src/data/raid-plans/dire-maul-west.json +75 -0
  171. package/src/data/raid-plans/gnomeregan.json +131 -0
  172. package/src/data/raid-plans/lbrs.json +176 -0
  173. package/src/data/raid-plans/maraudon.json +102 -0
  174. package/src/data/raid-plans/molten-core.json +169 -0
  175. package/src/data/raid-plans/naxxramas.json +354 -0
  176. package/src/data/raid-plans/onyxias-lair.json +18 -0
  177. package/src/data/raid-plans/ragefire-chasm.json +30 -0
  178. package/src/data/raid-plans/razorfen-downs.json +75 -0
  179. package/src/data/raid-plans/razorfen-kraul.json +53 -0
  180. package/src/data/raid-plans/ruins-of-ahnqiraj.json +110 -0
  181. package/src/data/raid-plans/scholomance.json +170 -0
  182. package/src/data/raid-plans/shadowfang-keep.json +87 -0
  183. package/src/data/raid-plans/sm-armory.json +53 -0
  184. package/src/data/raid-plans/sm-cathedral.json +72 -0
  185. package/src/data/raid-plans/sm-graveyard.json +63 -0
  186. package/src/data/raid-plans/sm-library.json +23 -0
  187. package/src/data/raid-plans/stratholme-live.json +129 -0
  188. package/src/data/raid-plans/stratholme-undead.json +73 -0
  189. package/src/data/raid-plans/sunken-temple.json +159 -0
  190. package/src/data/raid-plans/temple-of-ahnqiraj.json +163 -0
  191. package/src/data/raid-plans/the-stockade.json +42 -0
  192. package/src/data/raid-plans/ubrs.json +53 -0
  193. package/src/data/raid-plans/uldaman.json +131 -0
  194. package/src/data/raid-plans/wailing-caverns.json +90 -0
  195. package/src/data/raid-plans/zul-farrak.json +156 -0
  196. package/src/data/raid-plans/zul-gurub.json +307 -0
  197. package/src/data/raidInstanceCreatures.mjs +473 -0
  198. package/src/data/rotations/index.ts +152 -0
  199. package/src/data/rotations/layout.mjs +72 -0
  200. package/src/data/rotations/pve/druid/balance.json +754 -0
  201. package/src/data/rotations/pve/druid/feral-tank.json +2448 -0
  202. package/src/data/rotations/pve/druid/feral.json +2660 -0
  203. package/src/data/rotations/pve/druid/restoration.json +424 -0
  204. package/src/data/rotations/pve/hunter/beast-mastery.json +1288 -0
  205. package/src/data/rotations/pve/hunter/marksmanship.json +1260 -0
  206. package/src/data/rotations/pve/hunter/survival.json +1373 -0
  207. package/src/data/rotations/pve/mage/arcane-leveling.json +1798 -0
  208. package/src/data/rotations/pve/mage/fire-leveling.json +2003 -0
  209. package/src/data/rotations/pve/mage/frost-leveling.json +1912 -0
  210. package/src/data/rotations/pve/paladin/holy.json +755 -0
  211. package/src/data/rotations/pve/paladin/protection.json +962 -0
  212. package/src/data/rotations/pve/paladin/retribution.json +924 -0
  213. package/src/data/rotations/pve/priest/discipline.json +772 -0
  214. package/src/data/rotations/pve/priest/holy.json +707 -0
  215. package/src/data/rotations/pve/priest/shadow.json +787 -0
  216. package/src/data/rotations/pve/rogue/assassination.json +2477 -0
  217. package/src/data/rotations/pve/rogue/combat.json +2483 -0
  218. package/src/data/rotations/pve/rogue/subtlety.json +2523 -0
  219. package/src/data/rotations/pve/shaman/elemental.json +1157 -0
  220. package/src/data/rotations/pve/shaman/enhancement.json +1085 -0
  221. package/src/data/rotations/pve/shaman/restoration.json +592 -0
  222. package/src/data/rotations/pve/warlock/affliction.json +1185 -0
  223. package/src/data/rotations/pve/warlock/demonology.json +1165 -0
  224. package/src/data/rotations/pve/warlock/destruction.json +1177 -0
  225. package/src/data/rotations/pve/warrior/arms.json +3020 -0
  226. package/src/data/rotations/pve/warrior/fury.json +2996 -0
  227. package/src/data/rotations/pve/warrior/protection.json +2509 -0
  228. package/src/data/rotations/pvp/druid/balance.json +593 -0
  229. package/src/data/rotations/pvp/druid/feral.json +3276 -0
  230. package/src/data/rotations/pvp/druid/restoration.json +662 -0
  231. package/src/data/rotations/pvp/hunter/beast-mastery.json +665 -0
  232. package/src/data/rotations/pvp/hunter/marksmanship.json +2406 -0
  233. package/src/data/rotations/pvp/hunter/survival.json +635 -0
  234. package/src/data/rotations/pvp/mage/arcane.json +574 -0
  235. package/src/data/rotations/pvp/mage/fire.json +570 -0
  236. package/src/data/rotations/pvp/mage/frost.json +4048 -0
  237. package/src/data/rotations/pvp/paladin/holy.json +1498 -0
  238. package/src/data/rotations/pvp/paladin/protection.json +567 -0
  239. package/src/data/rotations/pvp/paladin/retribution.json +1110 -0
  240. package/src/data/rotations/pvp/priest/discipline.json +1848 -0
  241. package/src/data/rotations/pvp/priest/holy.json +6340 -0
  242. package/src/data/rotations/pvp/priest/shadow.json +2329 -0
  243. package/src/data/rotations/pvp/rogue/assassination.json +1322 -0
  244. package/src/data/rotations/pvp/rogue/combat.json +5258 -0
  245. package/src/data/rotations/pvp/rogue/subtlety.json +586 -0
  246. package/src/data/rotations/pvp/shaman/elemental.json +1404 -0
  247. package/src/data/rotations/pvp/shaman/enhancement.json +1277 -0
  248. package/src/data/rotations/pvp/shaman/restoration.json +2490 -0
  249. package/src/data/rotations/pvp/warlock/affliction.json +1017 -0
  250. package/src/data/rotations/pvp/warlock/demonology.json +1503 -0
  251. package/src/data/rotations/pvp/warlock/destruction.json +638 -0
  252. package/src/data/rotations/pvp/warrior/arms.json +5665 -0
  253. package/src/data/rotations/pvp/warrior/fury.json +850 -0
  254. package/src/data/rotations/pvp/warrior/protection.json +777 -0
  255. package/src/data/schema/bundle.ts +511 -0
  256. package/src/data/schema/constants.ts +49 -0
  257. package/src/data/schema/creature.ts +454 -0
  258. package/src/data/schema/encounter.ts +155 -0
  259. package/src/data/schema/faction.ts +48 -0
  260. package/src/data/schema/item.ts +297 -0
  261. package/src/data/schema/itemEnchant.ts +105 -0
  262. package/src/data/schema/npc.ts +44 -0
  263. package/src/data/schema/primitives.ts +295 -0
  264. package/src/data/schema/profession.ts +226 -0
  265. package/src/data/schema/quest.ts +154 -0
  266. package/src/data/schema/spell.ts +1149 -0
  267. package/src/data/schema/talent.ts +74 -0
  268. package/src/data/schema/world.ts +124 -0
  269. package/src/data/schema.ts +19 -0
  270. package/src/data/skinNodeGapFill.ts +68 -0
  271. package/src/data/spell-data.json.gz +0 -0
  272. package/src/data/spell-script-targets.json +1 -0
  273. package/src/data/tables/ahItemValues.json.gz +0 -0
  274. package/src/data/tables/alteracValley.json.gz +0 -0
  275. package/src/data/tables/areatriggerTeleports.json.gz +0 -0
  276. package/src/data/tables/botNames.json.gz +0 -0
  277. package/src/data/tables/botPopulation.json.gz +0 -0
  278. package/src/data/tables/botSpecs.json.gz +0 -0
  279. package/src/data/tables/classLevelStats.json.gz +0 -0
  280. package/src/data/tables/combatConditions.json.gz +0 -0
  281. package/src/data/tables/combatSkillMeta.json.gz +0 -0
  282. package/src/data/tables/conditions.json.gz +0 -0
  283. package/src/data/tables/createInfo.json.gz +0 -0
  284. package/src/data/tables/creatureAggroGroups.json.gz +0 -0
  285. package/src/data/tables/creatureClassLevelStats.json.gz +0 -0
  286. package/src/data/tables/creaturePatrolPacks.json.gz +0 -0
  287. package/src/data/tables/creatureWeapons.json.gz +0 -0
  288. package/src/data/tables/creatures.json.gz +0 -0
  289. package/src/data/tables/dbScripts.json.gz +0 -0
  290. package/src/data/tables/dungeonAuthoredRoutes.json.gz +0 -0
  291. package/src/data/tables/dungeonCensus.json.gz +0 -0
  292. package/src/data/tables/dungeonGameObjects.json.gz +0 -0
  293. package/src/data/tables/dungeonPacks.json.gz +0 -0
  294. package/src/data/tables/dungeonPlateCover.json.gz +0 -0
  295. package/src/data/tables/dungeonSpawns.json.gz +0 -0
  296. package/src/data/tables/dungeonSurvey.json.gz +0 -0
  297. package/src/data/tables/durabilityCosts.json.gz +0 -0
  298. package/src/data/tables/durabilityQuality.json.gz +0 -0
  299. package/src/data/tables/enchantApplicators.json.gz +0 -0
  300. package/src/data/tables/entranceYards.json.gz +0 -0
  301. package/src/data/tables/explorationBasexp.json.gz +0 -0
  302. package/src/data/tables/factionTemplates.json.gz +0 -0
  303. package/src/data/tables/factions.json.gz +0 -0
  304. package/src/data/tables/gameEvents.json.gz +0 -0
  305. package/src/data/tables/gameObjects.json.gz +0 -0
  306. package/src/data/tables/gossipMenus.json.gz +0 -0
  307. package/src/data/tables/graveyards.json.gz +0 -0
  308. package/src/data/tables/instanceMaps.json.gz +0 -0
  309. package/src/data/tables/itemEnchantmentTemplates.json.gz +0 -0
  310. package/src/data/tables/itemEnchants.json.gz +0 -0
  311. package/src/data/tables/itemRandomProperties.json.gz +0 -0
  312. package/src/data/tables/itemSets.json.gz +0 -0
  313. package/src/data/tables/items.json.gz +0 -0
  314. package/src/data/tables/levelStats.json.gz +0 -0
  315. package/src/data/tables/locks.json.gz +0 -0
  316. package/src/data/tables/map-pin-overrides.json.gz +0 -0
  317. package/src/data/tables/nonCombatTrash.json.gz +0 -0
  318. package/src/data/tables/npcTexts.json.gz +0 -0
  319. package/src/data/tables/pageTexts.json.gz +0 -0
  320. package/src/data/tables/petAbilityTP.json.gz +0 -0
  321. package/src/data/tables/petGenericSpells.json.gz +0 -0
  322. package/src/data/tables/petLevelStats.json.gz +0 -0
  323. package/src/data/tables/playerbot-weightscales.json.gz +0 -0
  324. package/src/data/tables/pools.json.gz +0 -0
  325. package/src/data/tables/quests.json.gz +0 -0
  326. package/src/data/tables/races.json.gz +0 -0
  327. package/src/data/tables/reputationRanks.json.gz +0 -0
  328. package/src/data/tables/reputationRates.json.gz +0 -0
  329. package/src/data/tables/reputationSpillover.json.gz +0 -0
  330. package/src/data/tables/ridingSpells.json.gz +0 -0
  331. package/src/data/tables/scriptTexts.json.gz +0 -0
  332. package/src/data/tables/soundClipVolume.json.gz +0 -0
  333. package/src/data/tables/spellChain.json.gz +0 -0
  334. package/src/data/tables/spellTeleports.json.gz +0 -0
  335. package/src/data/tables/spells.json.gz +0 -0
  336. package/src/data/tables/talents.json.gz +0 -0
  337. package/src/data/tables/tavernTriggers.json.gz +0 -0
  338. package/src/data/tables/taxiNodes.json.gz +0 -0
  339. package/src/data/tables/taxiRoutes.json.gz +0 -0
  340. package/src/data/tables/trainers.json.gz +0 -0
  341. package/src/data/tables/transports.json.gz +0 -0
  342. package/src/data/tables/travelAnchors.json.gz +0 -0
  343. package/src/data/tables/travelEdges.json.gz +0 -0
  344. package/src/data/tables/unitConditions.json.gz +0 -0
  345. package/src/data/tables/vendors.json.gz +0 -0
  346. package/src/data/tables/weaponEnchantProcs.json.gz +0 -0
  347. package/src/data/tables/xp.json.gz +0 -0
  348. package/src/data/tables/zoneWeather.json.gz +0 -0
  349. package/src/data/tables/zones.json.gz +0 -0
  350. package/src/data/world-data.ts +56 -0
  351. package/src/data/zone-music-sets.json +2751 -0
  352. package/src/dev/etl/lib/loot-chance-sanity.mjs +180 -0
  353. package/src/domain/audioQuality.mjs +145 -0
  354. package/src/domain/bg/ab.ts +433 -0
  355. package/src/domain/bg/arenaComps.ts +644 -0
  356. package/src/domain/bg/arenaLab.ts +695 -0
  357. package/src/domain/bg/arenaPace.ts +31 -0
  358. package/src/domain/bg/arenaRating.ts +110 -0
  359. package/src/domain/bg/av.ts +758 -0
  360. package/src/domain/bg/avEnemyPush.ts +219 -0
  361. package/src/domain/bg/avField.ts +283 -0
  362. package/src/domain/bg/avInstanceNodes.ts +197 -0
  363. package/src/domain/bg/avInstanceScore.ts +123 -0
  364. package/src/domain/bg/avQuestItems.ts +55 -0
  365. package/src/domain/bg/avQuests.ts +210 -0
  366. package/src/domain/bg/avSession.ts +196 -0
  367. package/src/domain/bg/bgConsumes.ts +269 -0
  368. package/src/domain/bg/bgPrebuff.ts +153 -0
  369. package/src/domain/bg/bgRest.ts +91 -0
  370. package/src/domain/bg/bgRoster.ts +305 -0
  371. package/src/domain/bg/bgTier.ts +61 -0
  372. package/src/domain/bg/bgWorld.ts +862 -0
  373. package/src/domain/bg/match.ts +215 -0
  374. package/src/domain/bg/strategies.ts +552 -0
  375. package/src/domain/bg/types.ts +291 -0
  376. package/src/domain/bg/wsg.ts +264 -0
  377. package/src/domain/bots/actionProviderSpec.ts +38 -0
  378. package/src/domain/bots/autoConsumables.ts +285 -0
  379. package/src/domain/bots/betweenPullRest.ts +239 -0
  380. package/src/domain/bots/botGear.ts +248 -0
  381. package/src/domain/bots/botInventory.ts +486 -0
  382. package/src/domain/bots/botPet.ts +535 -0
  383. package/src/domain/bots/botPool.ts +291 -0
  384. package/src/domain/bots/botProfessions.ts +334 -0
  385. package/src/domain/bots/companionActionBar.ts +209 -0
  386. package/src/domain/bots/companionHireCost.ts +236 -0
  387. package/src/domain/bots/companionMissions.ts +582 -0
  388. package/src/domain/bots/companionPrep.ts +254 -0
  389. package/src/domain/bots/companionQuests.ts +270 -0
  390. package/src/domain/bots/companionRep.ts +75 -0
  391. package/src/domain/bots/companionRotation.ts +708 -0
  392. package/src/domain/bots/companionXp.ts +66 -0
  393. package/src/domain/bots/consumableShare.ts +811 -0
  394. package/src/domain/bots/dpsMate.ts +1072 -0
  395. package/src/domain/bots/groupCompReport.ts +132 -0
  396. package/src/domain/bots/healthstoneSupply.ts +198 -0
  397. package/src/domain/bots/outfitter.ts +1056 -0
  398. package/src/domain/bots/paladinPrePull.ts +231 -0
  399. package/src/domain/bots/partyRole.ts +40 -0
  400. package/src/domain/bots/playerbotEquipCache.ts +412 -0
  401. package/src/domain/bots/playerbotItemEligibility.ts +60 -0
  402. package/src/domain/bots/playerbotStatWeight.ts +853 -0
  403. package/src/domain/bots/playerbotUnavailableItems.ts +147 -0
  404. package/src/domain/bots/prePullBuffs.ts +219 -0
  405. package/src/domain/bots/prePullStealth.ts +82 -0
  406. package/src/domain/bots/runSupply.ts +251 -0
  407. package/src/domain/bots/runSupplyPrefs.ts +28 -0
  408. package/src/domain/bots/sendTradeGoods.ts +394 -0
  409. package/src/domain/bots/soulShardCap.ts +35 -0
  410. package/src/domain/bots/squad.ts +842 -0
  411. package/src/domain/bots/squadRun.ts +81 -0
  412. package/src/domain/character/actionbar.ts +346 -0
  413. package/src/domain/character/appearance.ts +165 -0
  414. package/src/domain/character/buildCombatant.ts +1726 -0
  415. package/src/domain/character/character.ts +356 -0
  416. package/src/domain/character/characterName.ts +43 -0
  417. package/src/domain/character/characterRatings.ts +424 -0
  418. package/src/domain/character/characterSpells.ts +282 -0
  419. package/src/domain/character/characterStats.ts +1559 -0
  420. package/src/domain/character/characterTalents.ts +398 -0
  421. package/src/domain/character/combatSkills.ts +994 -0
  422. package/src/domain/character/displayForm.ts +72 -0
  423. package/src/domain/character/formTalentAuras.ts +171 -0
  424. package/src/domain/character/forms.ts +499 -0
  425. package/src/domain/character/races.ts +40 -0
  426. package/src/domain/character/resurrectionSickness.ts +49 -0
  427. package/src/domain/character/spellbook.ts +169 -0
  428. package/src/domain/character/stanceBar.ts +354 -0
  429. package/src/domain/character/stancePrereq.ts +70 -0
  430. package/src/domain/character/talentBuilds.ts +63 -0
  431. package/src/domain/character/talentImport.ts +130 -0
  432. package/src/domain/character/talentLink.ts +123 -0
  433. package/src/domain/character/talents.ts +201 -0
  434. package/src/domain/core/conditionSnapshot.ts +92 -0
  435. package/src/domain/core/hover.ts +14 -0
  436. package/src/domain/core/ids.ts +58 -0
  437. package/src/domain/core/internalNameTags.ts +5 -0
  438. package/src/domain/core/runtimeDataPatches.ts +357 -0
  439. package/src/domain/creature/aiTargeting.ts +588 -0
  440. package/src/domain/creature/combatCondition.ts +157 -0
  441. package/src/domain/creature/creatureAggro.ts +804 -0
  442. package/src/domain/creature/creatureAi.ts +206 -0
  443. package/src/domain/creature/creatureAiConstants.ts +661 -0
  444. package/src/domain/creature/creatureCastList.ts +1007 -0
  445. package/src/domain/creature/creatureEventAi.ts +1409 -0
  446. package/src/domain/creature/creatureGroups.ts +144 -0
  447. package/src/domain/creature/creatureLinking.ts +333 -0
  448. package/src/domain/creature/creatureScaling.ts +320 -0
  449. package/src/domain/creature/creatureTrigger.ts +53 -0
  450. package/src/domain/creature/creatureWander.ts +74 -0
  451. package/src/domain/creature/eventAiTexts.ts +145 -0
  452. package/src/domain/creature/faction.ts +287 -0
  453. package/src/domain/creature/forcedReaction.ts +48 -0
  454. package/src/domain/creature/outdoorHuntable.ts +74 -0
  455. package/src/domain/creature/patrolPacks.ts +210 -0
  456. package/src/domain/creature/reputation.ts +967 -0
  457. package/src/domain/creature/unitFlags.ts +74 -0
  458. package/src/domain/creature/worldBosses.ts +393 -0
  459. package/src/domain/dungeonMusic.mjs +48 -0
  460. package/src/domain/economy/auction.ts +282 -0
  461. package/src/domain/economy/auctionBot.ts +1060 -0
  462. package/src/domain/economy/honorPrice.ts +100 -0
  463. package/src/domain/economy/mail.ts +958 -0
  464. package/src/domain/economy/money.ts +42 -0
  465. package/src/domain/economy/syntheticClassTrainers.ts +62 -0
  466. package/src/domain/economy/trading.ts +296 -0
  467. package/src/domain/economy/vendorSellAll.ts +252 -0
  468. package/src/domain/economy/vendorStock.ts +146 -0
  469. package/src/domain/items/ammo.ts +817 -0
  470. package/src/domain/items/bank.ts +162 -0
  471. package/src/domain/items/consumableFamily.ts +205 -0
  472. package/src/domain/items/craftUpgrades.ts +83 -0
  473. package/src/domain/items/createItem.ts +93 -0
  474. package/src/domain/items/durability.ts +581 -0
  475. package/src/domain/items/equipment.ts +441 -0
  476. package/src/domain/items/equipmentHelper.ts +767 -0
  477. package/src/domain/items/inventory.ts +561 -0
  478. package/src/domain/items/itemBonding.ts +93 -0
  479. package/src/domain/items/itemContainer.ts +245 -0
  480. package/src/domain/items/itemDisplayName.ts +33 -0
  481. package/src/domain/items/itemInstance.ts +181 -0
  482. package/src/domain/items/itemRandomEnchantOutcomes.ts +315 -0
  483. package/src/domain/items/itemRandomProps.ts +77 -0
  484. package/src/domain/items/itemRestrictions.ts +329 -0
  485. package/src/domain/items/itemTeaches.ts +82 -0
  486. package/src/domain/items/itemUseCooldown.ts +52 -0
  487. package/src/domain/items/itemUseTarget.ts +90 -0
  488. package/src/domain/items/junkCategories.ts +174 -0
  489. package/src/domain/items/junkFilter.ts +368 -0
  490. package/src/domain/items/keyring.ts +131 -0
  491. package/src/domain/items/loot.ts +221 -0
  492. package/src/domain/items/mounts.ts +190 -0
  493. package/src/domain/items/onUsePayload.ts +102 -0
  494. package/src/domain/items/pendingLoot.ts +107 -0
  495. package/src/domain/items/relic.ts +105 -0
  496. package/src/domain/items/rocketBoots.ts +36 -0
  497. package/src/domain/items/sortContainer.ts +139 -0
  498. package/src/domain/items/spareContainers.ts +71 -0
  499. package/src/domain/items/spellReagentIndex.ts +131 -0
  500. package/src/domain/items/staleConsumables.ts +66 -0
  501. package/src/domain/items/weaponSpender.ts +110 -0
  502. package/src/domain/listDungeonIds.mjs +28 -0
  503. package/src/domain/macro/compose.ts +239 -0
  504. package/src/domain/macro/conditions.ts +260 -0
  505. package/src/domain/macro/creatureTypes.ts +40 -0
  506. package/src/domain/macro/describe.ts +169 -0
  507. package/src/domain/macro/icon.ts +60 -0
  508. package/src/domain/macro/index.ts +20 -0
  509. package/src/domain/macro/normalize.ts +112 -0
  510. package/src/domain/macro/parse.ts +316 -0
  511. package/src/domain/macro/plan.ts +288 -0
  512. package/src/domain/macro/rotation.ts +590 -0
  513. package/src/domain/macro/rotationEnv.ts +173 -0
  514. package/src/domain/macro/slots.ts +101 -0
  515. package/src/domain/macro/snapshot.ts +114 -0
  516. package/src/domain/macro/templates.ts +446 -0
  517. package/src/domain/macro/types.ts +70 -0
  518. package/src/domain/macro/units.ts +93 -0
  519. package/src/domain/macro/weaponTypes.ts +83 -0
  520. package/src/domain/nav/cityTeleports.ts +10 -0
  521. package/src/domain/nav/mounting.ts +113 -0
  522. package/src/domain/nav/nav.ts +43 -0
  523. package/src/domain/nav/navCollision.ts +606 -0
  524. package/src/domain/nav/navOutdoors.ts +91 -0
  525. package/src/domain/nav/navRegistry.ts +179 -0
  526. package/src/domain/nav/navRoomGraph.ts +302 -0
  527. package/src/domain/nav/navTypes.ts +43 -0
  528. package/src/domain/nav/navmesh.ts +1715 -0
  529. package/src/domain/nav/speed.ts +200 -0
  530. package/src/domain/nav/storey.ts +10 -0
  531. package/src/domain/nav/travel.ts +725 -0
  532. package/src/domain/nav/travelTypes.ts +75 -0
  533. package/src/domain/pet/pet.ts +1150 -0
  534. package/src/domain/pet/petActionBar.ts +180 -0
  535. package/src/domain/pet/petSpellbook.ts +39 -0
  536. package/src/domain/pet/petStable.ts +81 -0
  537. package/src/domain/professions/autoDisenchant.ts +236 -0
  538. package/src/domain/professions/characterEnchants.ts +176 -0
  539. package/src/domain/professions/craftCooldown.ts +52 -0
  540. package/src/domain/professions/enchantApply.ts +62 -0
  541. package/src/domain/professions/enchantTargets.ts +114 -0
  542. package/src/domain/professions/enchanting.ts +236 -0
  543. package/src/domain/professions/gatherFilter.ts +149 -0
  544. package/src/domain/professions/gearEnchant.ts +137 -0
  545. package/src/domain/professions/heldTools.ts +29 -0
  546. package/src/domain/professions/learnAllRecipes.ts +146 -0
  547. package/src/domain/professions/miningHarvest.ts +69 -0
  548. package/src/domain/professions/partyDisenchant.ts +294 -0
  549. package/src/domain/professions/partyWork.ts +83 -0
  550. package/src/domain/professions/pickpocket.ts +172 -0
  551. package/src/domain/professions/poisons.ts +240 -0
  552. package/src/domain/professions/professions.ts +677 -0
  553. package/src/domain/professions/rareNodes.ts +45 -0
  554. package/src/domain/professions/skinLoot.ts +27 -0
  555. package/src/domain/professions/vendorReagents.ts +152 -0
  556. package/src/domain/professions/weaponImbueHand.ts +171 -0
  557. package/src/domain/questFarmFilter.mjs +42 -0
  558. package/src/domain/quests/doQuest.ts +1204 -0
  559. package/src/domain/quests/gossip.ts +308 -0
  560. package/src/domain/quests/gossipTalk.ts +298 -0
  561. package/src/domain/quests/interpreter/canComplete.ts +150 -0
  562. package/src/domain/quests/interpreter/claim.ts +137 -0
  563. package/src/domain/quests/interpreter/dbscript/handlers.ts +1371 -0
  564. package/src/domain/quests/interpreter/dbscript/handlersBatch.ts +1251 -0
  565. package/src/domain/quests/interpreter/dbscript/hooks.ts +331 -0
  566. package/src/domain/quests/interpreter/dbscript/index.ts +212 -0
  567. package/src/domain/quests/interpreter/dbscript/opcodes.ts +257 -0
  568. package/src/domain/quests/interpreter/dbscript/registry.ts +1194 -0
  569. package/src/domain/quests/interpreter/dbscript/registryAreatriggerScripts.ts +539 -0
  570. package/src/domain/quests/interpreter/dbscript/registryAshenvale.ts +553 -0
  571. package/src/domain/quests/interpreter/dbscript/registryAzshara.ts +272 -0
  572. package/src/domain/quests/interpreter/dbscript/registryDarkshore.ts +637 -0
  573. package/src/domain/quests/interpreter/dbscript/registryDesolace.ts +501 -0
  574. package/src/domain/quests/interpreter/dbscript/registryDustwallowMarsh.ts +735 -0
  575. package/src/domain/quests/interpreter/dbscript/registryFelwood.ts +493 -0
  576. package/src/domain/quests/interpreter/dbscript/registryFeralas.ts +485 -0
  577. package/src/domain/quests/interpreter/dbscript/registryGoScripts.ts +203 -0
  578. package/src/domain/quests/interpreter/dbscript/registryMoonglade.ts +288 -0
  579. package/src/domain/quests/interpreter/dbscript/registryNpcProfessions.ts +230 -0
  580. package/src/domain/quests/interpreter/dbscript/registryNpcsSpecial.ts +545 -0
  581. package/src/domain/quests/interpreter/dbscript/registryRazorfenDowns.ts +293 -0
  582. package/src/domain/quests/interpreter/dbscript/registryRazorfenKraul.ts +221 -0
  583. package/src/domain/quests/interpreter/dbscript/registryRedridge.ts +112 -0
  584. package/src/domain/quests/interpreter/dbscript/registrySearingGorge.ts +125 -0
  585. package/src/domain/quests/interpreter/dbscript/registrySiblings.ts +51 -0
  586. package/src/domain/quests/interpreter/dbscript/registrySilverpineForest.ts +172 -0
  587. package/src/domain/quests/interpreter/dbscript/registryStonetalonMountains.ts +180 -0
  588. package/src/domain/quests/interpreter/dbscript/registryStormwindCity.ts +369 -0
  589. package/src/domain/quests/interpreter/dbscript/registryStranglethornVale.ts +115 -0
  590. package/src/domain/quests/interpreter/dbscript/registryStratholme.ts +146 -0
  591. package/src/domain/quests/interpreter/dbscript/registrySunkenTemple.ts +149 -0
  592. package/src/domain/quests/interpreter/dbscript/registrySwampOfSorrows.ts +163 -0
  593. package/src/domain/quests/interpreter/dbscript/registryTanaris.ts +318 -0
  594. package/src/domain/quests/interpreter/dbscript/registryTeldrassil.ts +120 -0
  595. package/src/domain/quests/interpreter/dbscript/registryTheBarrens.ts +603 -0
  596. package/src/domain/quests/interpreter/dbscript/registryThousandNeedles.ts +499 -0
  597. package/src/domain/quests/interpreter/dbscript/registryTirisfalGlades.ts +222 -0
  598. package/src/domain/quests/interpreter/dbscript/registryUngoroCrater.ts +291 -0
  599. package/src/domain/quests/interpreter/dbscript/registryWarEffort.ts +773 -0
  600. package/src/domain/quests/interpreter/dbscript/registryWesternPlaguelands.ts +206 -0
  601. package/src/domain/quests/interpreter/dbscript/registryWestfall.ts +190 -0
  602. package/src/domain/quests/interpreter/dbscript/registryWetlands.ts +186 -0
  603. package/src/domain/quests/interpreter/dbscript/registryWinterspring.ts +235 -0
  604. package/src/domain/quests/interpreter/dbscript/types.ts +817 -0
  605. package/src/domain/quests/interpreter/dbscript/vm.ts +171 -0
  606. package/src/domain/quests/interpreter/diff.ts +349 -0
  607. package/src/domain/quests/interpreter/fixtures/oracle-questlog-qi2.json +2417 -0
  608. package/src/domain/quests/interpreter/flags.ts +101 -0
  609. package/src/domain/quests/interpreter/index.ts +113 -0
  610. package/src/domain/quests/interpreter/live.ts +178 -0
  611. package/src/domain/quests/interpreter/types.ts +81 -0
  612. package/src/domain/quests/interpreter/updaters.ts +412 -0
  613. package/src/domain/quests/questCorpseUse.ts +155 -0
  614. package/src/domain/quests/questDialog.ts +43 -0
  615. package/src/domain/quests/questFight.ts +34 -0
  616. package/src/domain/quests/questObjectiveLabel.ts +39 -0
  617. package/src/domain/quests/questRewardChoice.ts +85 -0
  618. package/src/domain/quests/questScriptCredit.ts +26 -0
  619. package/src/domain/quests/questScriptItemUse.ts +74 -0
  620. package/src/domain/quests/questTameRods.ts +79 -0
  621. package/src/domain/quests/questlog.ts +1545 -0
  622. package/src/domain/quests/talkDeliver.ts +170 -0
  623. package/src/domain/raid/globalActionBar.ts +195 -0
  624. package/src/domain/raid/instanceRoster.ts +194 -0
  625. package/src/domain/raid/partySummon.ts +198 -0
  626. package/src/domain/raid/partyVault.ts +320 -0
  627. package/src/domain/raid/raidBossAbilities.ts +268 -0
  628. package/src/domain/raid/raidComp.ts +335 -0
  629. package/src/domain/raid/raidCustomRows.ts +453 -0
  630. package/src/domain/raid/raidEncounterGear.ts +298 -0
  631. package/src/domain/raid/raidEncounterTactics.ts +412 -0
  632. package/src/domain/raid/raidPlan.ts +509 -0
  633. package/src/domain/raid/raidPlanEdits.ts +98 -0
  634. package/src/domain/raid/raidPlanPacks.ts +480 -0
  635. package/src/domain/raid/raidRecovery.ts +183 -0
  636. package/src/domain/raid/raidRosterTemplate.ts +138 -0
  637. package/src/domain/rotation/auraSide.ts +68 -0
  638. package/src/domain/rotation/build.ts +3031 -0
  639. package/src/domain/rotation/classes/druid.ts +58 -0
  640. package/src/domain/rotation/classes/hooks.ts +59 -0
  641. package/src/domain/rotation/classes/hunter.ts +156 -0
  642. package/src/domain/rotation/classes/index.ts +104 -0
  643. package/src/domain/rotation/classes/mage.ts +99 -0
  644. package/src/domain/rotation/classes/paladin.ts +296 -0
  645. package/src/domain/rotation/classes/priest.ts +94 -0
  646. package/src/domain/rotation/classes/pullOpener.ts +92 -0
  647. package/src/domain/rotation/classes/rogue.ts +69 -0
  648. package/src/domain/rotation/classes/shaman.ts +29 -0
  649. package/src/domain/rotation/classes/supportSpec.ts +94 -0
  650. package/src/domain/rotation/classes/warlock.ts +81 -0
  651. package/src/domain/rotation/classes/warrior.ts +402 -0
  652. package/src/domain/rotation/classify.ts +1381 -0
  653. package/src/domain/rotation/condMetricPicker.ts +379 -0
  654. package/src/domain/rotation/consumables.ts +242 -0
  655. package/src/domain/rotation/evaluate.ts +1115 -0
  656. package/src/domain/rotation/finisherLadder.ts +145 -0
  657. package/src/domain/rotation/invent.ts +938 -0
  658. package/src/domain/rotation/killOrder.ts +30 -0
  659. package/src/domain/rotation/openerForm.ts +22 -0
  660. package/src/domain/rotation/paladinBuffs.ts +568 -0
  661. package/src/domain/rotation/prebuff.ts +283 -0
  662. package/src/domain/rotation/raidRowTuning.ts +34 -0
  663. package/src/domain/rotation/rotation.ts +11 -0
  664. package/src/domain/rotation/rotationProfiles.ts +180 -0
  665. package/src/domain/rotation/rotationSuggestions.ts +851 -0
  666. package/src/domain/rotation/ruleAfterChain.ts +49 -0
  667. package/src/domain/rotation/spec.ts +70 -0
  668. package/src/domain/rotation/spellPicker.ts +140 -0
  669. package/src/domain/rotation/stand.ts +143 -0
  670. package/src/domain/rotation/types.ts +718 -0
  671. package/src/domain/run/battlegroundRun.ts +111 -0
  672. package/src/domain/run/canEnterContext.ts +32 -0
  673. package/src/domain/run/death.ts +561 -0
  674. package/src/domain/run/deathRecovery.ts +289 -0
  675. package/src/domain/run/duel.ts +141 -0
  676. package/src/domain/run/dungeonRun.ts +344 -0
  677. package/src/domain/run/floorRest.ts +159 -0
  678. package/src/domain/run/honor.ts +557 -0
  679. package/src/domain/run/honorWeek.ts +180 -0
  680. package/src/domain/run/whenMap.ts +977 -0
  681. package/src/domain/scriptdev/arathiHighlands.ts +445 -0
  682. package/src/domain/scriptdev/ashenvale.ts +635 -0
  683. package/src/domain/scriptdev/ashenvaleHelpers.ts +1215 -0
  684. package/src/domain/scriptdev/azshara.ts +892 -0
  685. package/src/domain/scriptdev/blackfathomDeeps.ts +212 -0
  686. package/src/domain/scriptdev/blackrockDepths.ts +1434 -0
  687. package/src/domain/scriptdev/blackrockSpire.ts +730 -0
  688. package/src/domain/scriptdev/blackwingLair.ts +521 -0
  689. package/src/domain/scriptdev/burningSteppes.ts +62 -0
  690. package/src/domain/scriptdev/classFilter.ts +43 -0
  691. package/src/domain/scriptdev/darkshore.ts +817 -0
  692. package/src/domain/scriptdev/darkshoreHelpers.ts +853 -0
  693. package/src/domain/scriptdev/deadmines.ts +331 -0
  694. package/src/domain/scriptdev/desolace.ts +1239 -0
  695. package/src/domain/scriptdev/direMaul.ts +859 -0
  696. package/src/domain/scriptdev/durotar.ts +532 -0
  697. package/src/domain/scriptdev/dustwallowMarsh.ts +758 -0
  698. package/src/domain/scriptdev/dustwallowMarshHelpers.ts +994 -0
  699. package/src/domain/scriptdev/easternPlaguelands.ts +21 -0
  700. package/src/domain/scriptdev/felwood.ts +1055 -0
  701. package/src/domain/scriptdev/feralas.ts +571 -0
  702. package/src/domain/scriptdev/feralasHelpers.ts +838 -0
  703. package/src/domain/scriptdev/gnomeregan.ts +466 -0
  704. package/src/domain/scriptdev/guards.ts +616 -0
  705. package/src/domain/scriptdev/hinterlands.ts +693 -0
  706. package/src/domain/scriptdev/host.ts +1134 -0
  707. package/src/domain/scriptdev/index.ts +123 -0
  708. package/src/domain/scriptdev/instanceRaids.ts +136 -0
  709. package/src/domain/scriptdev/itemScripts.ts +37 -0
  710. package/src/domain/scriptdev/lochModan.ts +283 -0
  711. package/src/domain/scriptdev/maraudon.ts +232 -0
  712. package/src/domain/scriptdev/moltenCore.ts +831 -0
  713. package/src/domain/scriptdev/moonglade.ts +659 -0
  714. package/src/domain/scriptdev/moongladeHelpers.ts +933 -0
  715. package/src/domain/scriptdev/naxxramas.ts +577 -0
  716. package/src/domain/scriptdev/naxxramasConstruct.ts +364 -0
  717. package/src/domain/scriptdev/naxxramasFrostwyrm.ts +378 -0
  718. package/src/domain/scriptdev/naxxramasMilitary.ts +276 -0
  719. package/src/domain/scriptdev/npcProfessions.ts +1025 -0
  720. package/src/domain/scriptdev/npcsSpecial.ts +1379 -0
  721. package/src/domain/scriptdev/onyxiasLair.ts +313 -0
  722. package/src/domain/scriptdev/orgrimmar.ts +147 -0
  723. package/src/domain/scriptdev/professionSpecConsumer.ts +481 -0
  724. package/src/domain/scriptdev/razorfenDowns.ts +468 -0
  725. package/src/domain/scriptdev/razorfenKraul.ts +410 -0
  726. package/src/domain/scriptdev/redridgeMountains.ts +163 -0
  727. package/src/domain/scriptdev/registry.ts +945 -0
  728. package/src/domain/scriptdev/ruinsOfAhnqiraj.ts +356 -0
  729. package/src/domain/scriptdev/scarletMonastery.ts +713 -0
  730. package/src/domain/scriptdev/scholomance.ts +682 -0
  731. package/src/domain/scriptdev/searingGorge.ts +295 -0
  732. package/src/domain/scriptdev/shadowfangKeep.ts +181 -0
  733. package/src/domain/scriptdev/silithus.ts +71 -0
  734. package/src/domain/scriptdev/silverpineForest.ts +662 -0
  735. package/src/domain/scriptdev/stonetalonMountains.ts +493 -0
  736. package/src/domain/scriptdev/stormwindCity.ts +1192 -0
  737. package/src/domain/scriptdev/stranglethornVale.ts +402 -0
  738. package/src/domain/scriptdev/stratholme.ts +650 -0
  739. package/src/domain/scriptdev/stratholmeScripts.ts +505 -0
  740. package/src/domain/scriptdev/sunkenTemple.ts +736 -0
  741. package/src/domain/scriptdev/swampOfSorrows.ts +22 -0
  742. package/src/domain/scriptdev/tanaris.ts +391 -0
  743. package/src/domain/scriptdev/tanarisHelpers.ts +661 -0
  744. package/src/domain/scriptdev/teldrassil.ts +143 -0
  745. package/src/domain/scriptdev/templeOfAhnqiraj.ts +1013 -0
  746. package/src/domain/scriptdev/theBarrens.ts +709 -0
  747. package/src/domain/scriptdev/theBarrensHelpers.ts +1026 -0
  748. package/src/domain/scriptdev/thousandNeedles.ts +426 -0
  749. package/src/domain/scriptdev/thousandNeedlesHelpers.ts +566 -0
  750. package/src/domain/scriptdev/tirisfalGlades.ts +533 -0
  751. package/src/domain/scriptdev/types.ts +1026 -0
  752. package/src/domain/scriptdev/uldaman.ts +437 -0
  753. package/src/domain/scriptdev/ungoroCrater.ts +549 -0
  754. package/src/domain/scriptdev/ungoroCraterHelpers.ts +1006 -0
  755. package/src/domain/scriptdev/wailingCaverns.ts +700 -0
  756. package/src/domain/scriptdev/warEffort.ts +371 -0
  757. package/src/domain/scriptdev/westernPlaguelands.ts +952 -0
  758. package/src/domain/scriptdev/westfall.ts +767 -0
  759. package/src/domain/scriptdev/wetlands.ts +660 -0
  760. package/src/domain/scriptdev/winterspring.ts +482 -0
  761. package/src/domain/scriptdev/winterspringHelpers.ts +801 -0
  762. package/src/domain/scriptdev/worldBosses.ts +605 -0
  763. package/src/domain/scriptdev/zulfarrak.ts +478 -0
  764. package/src/domain/scriptdev/zulgurub.ts +1152 -0
  765. package/src/domain/sim/dummySim.ts +408 -0
  766. package/src/domain/sim/targetDummy.ts +29 -0
  767. package/src/domain/social/guild.ts +148 -0
  768. package/src/domain/spells/areaAuraMembership.ts +93 -0
  769. package/src/domain/spells/breakableStunCc.ts +166 -0
  770. package/src/domain/spells/cancelAura.ts +80 -0
  771. package/src/domain/spells/diminishing.ts +167 -0
  772. package/src/domain/spells/dispel.ts +149 -0
  773. package/src/domain/spells/dispelMechanic.ts +105 -0
  774. package/src/domain/spells/equipSpells.ts +247 -0
  775. package/src/domain/spells/learnOnTargets.ts +260 -0
  776. package/src/domain/spells/mergeSchoolImmunityFromRaw.ts +66 -0
  777. package/src/domain/spells/resurrectSpell.ts +124 -0
  778. package/src/domain/spells/spellPushback.ts +39 -0
  779. package/src/domain/spells/spellReflect.ts +43 -0
  780. package/src/domain/spells/stealth.ts +183 -0
  781. package/src/domain/spells/totem.ts +394 -0
  782. package/src/domain/spells/worldCast.ts +187 -0
  783. package/src/domain/world/areaTriggerLocks.ts +177 -0
  784. package/src/domain/world/dungeonMusic.ts +108 -0
  785. package/src/domain/world/gameEvents.ts +119 -0
  786. package/src/domain/world/gameObjects.ts +1030 -0
  787. package/src/domain/world/goEventFire.ts +234 -0
  788. package/src/domain/world/goMoTransport.ts +74 -0
  789. package/src/domain/world/goTransport.ts +81 -0
  790. package/src/domain/world/hazards.ts +459 -0
  791. package/src/domain/world/openLock.ts +398 -0
  792. package/src/domain/world/pools.ts +470 -0
  793. package/src/domain/world/restArea.ts +37 -0
  794. package/src/domain/world/weather.ts +201 -0
  795. package/src/domain/zoneAmbience.mjs +87 -0
  796. package/src/domain/zoneMusic.mjs +62 -0
  797. package/src/domain/zoneMusicQueue.mjs +7 -0
  798. package/src/engine/combat/activeSeal.ts +39 -0
  799. package/src/engine/combat/aiTargetResolve.ts +64 -0
  800. package/src/engine/combat/aoeCast.ts +289 -0
  801. package/src/engine/combat/applyConsumeAura.ts +74 -0
  802. package/src/engine/combat/applyDemonicSacrifice.ts +70 -0
  803. package/src/engine/combat/applyDispelMechanic.ts +30 -0
  804. package/src/engine/combat/applyHealEffect.ts +301 -0
  805. package/src/engine/combat/applySchoolAbsorb.ts +114 -0
  806. package/src/engine/combat/applySpell.ts +3169 -0
  807. package/src/engine/combat/applySpellLate.ts +2026 -0
  808. package/src/engine/combat/applySpellLateBag.ts +144 -0
  809. package/src/engine/combat/areaAura.ts +283 -0
  810. package/src/engine/combat/attackTable.ts +508 -0
  811. package/src/engine/combat/battleRez.ts +87 -0
  812. package/src/engine/combat/castAction.ts +36 -0
  813. package/src/engine/combat/castTargetGates.ts +75 -0
  814. package/src/engine/combat/castableKit.ts +68 -0
  815. package/src/engine/combat/ccMirrorUpgrade.ts +39 -0
  816. package/src/engine/combat/chainFan.ts +210 -0
  817. package/src/engine/combat/channel.ts +423 -0
  818. package/src/engine/combat/chaseCloseness.ts +95 -0
  819. package/src/engine/combat/cmangosCastGates.ts +129 -0
  820. package/src/engine/combat/combatFlag.ts +77 -0
  821. package/src/engine/combat/combatGeometry.ts +1329 -0
  822. package/src/engine/combat/combustion.ts +68 -0
  823. package/src/engine/combat/context.ts +730 -0
  824. package/src/engine/combat/createSession.ts +1165 -0
  825. package/src/engine/combat/creatureLeash.ts +38 -0
  826. package/src/engine/combat/crowdControl.ts +1259 -0
  827. package/src/engine/combat/dispelDuty.ts +54 -0
  828. package/src/engine/combat/dispelReflect.ts +609 -0
  829. package/src/engine/combat/displaceFloor.ts +113 -0
  830. package/src/engine/combat/duelBounds.ts +47 -0
  831. package/src/engine/combat/equippedItemGate.ts +297 -0
  832. package/src/engine/combat/evadeLifecycle.ts +63 -0
  833. package/src/engine/combat/eventAi.ts +2220 -0
  834. package/src/engine/combat/facing.ts +74 -0
  835. package/src/engine/combat/fearFlee.ts +137 -0
  836. package/src/engine/combat/fighterFactory.ts +1144 -0
  837. package/src/engine/combat/forceDespawnAction.ts +51 -0
  838. package/src/engine/combat/formulas.ts +807 -0
  839. package/src/engine/combat/friendlyFan.ts +55 -0
  840. package/src/engine/combat/groundPoolTick.ts +210 -0
  841. package/src/engine/combat/hazards.ts +114 -0
  842. package/src/engine/combat/healTargets.ts +226 -0
  843. package/src/engine/combat/heartbeatResist.ts +49 -0
  844. package/src/engine/combat/hostileItemUse.ts +75 -0
  845. package/src/engine/combat/interruptAuras.ts +66 -0
  846. package/src/engine/combat/itemRescue.ts +49 -0
  847. package/src/engine/combat/itemUse.ts +260 -0
  848. package/src/engine/combat/kitById.ts +23 -0
  849. package/src/engine/combat/knockBack.ts +201 -0
  850. package/src/engine/combat/leap.ts +89 -0
  851. package/src/engine/combat/mitigation.ts +587 -0
  852. package/src/engine/combat/modTaunt.ts +43 -0
  853. package/src/engine/combat/motionClaim.ts +268 -0
  854. package/src/engine/combat/motionGate.ts +150 -0
  855. package/src/engine/combat/motionGenerator.ts +27 -0
  856. package/src/engine/combat/navSight.ts +138 -0
  857. package/src/engine/combat/perfSink.ts +28 -0
  858. package/src/engine/combat/periodicDue.ts +55 -0
  859. package/src/engine/combat/petAuras.ts +86 -0
  860. package/src/engine/combat/pickAction.ts +3449 -0
  861. package/src/engine/combat/powerForm.ts +735 -0
  862. package/src/engine/combat/powerPools.ts +49 -0
  863. package/src/engine/combat/predicates.ts +538 -0
  864. package/src/engine/combat/procsDamage.ts +1823 -0
  865. package/src/engine/combat/reactiveGates.ts +135 -0
  866. package/src/engine/combat/roles.ts +389 -0
  867. package/src/engine/combat/rotationSubject.ts +78 -0
  868. package/src/engine/combat/ruleAfter.ts +106 -0
  869. package/src/engine/combat/seedDisplayAuras.ts +203 -0
  870. package/src/engine/combat/seedOocEffects.ts +317 -0
  871. package/src/engine/combat/seedSchoolImmunities.ts +45 -0
  872. package/src/engine/combat/session-types.ts +458 -0
  873. package/src/engine/combat/sessionApi.ts +1785 -0
  874. package/src/engine/combat/sessionCharge.ts +124 -0
  875. package/src/engine/combat/sessionChase.ts +869 -0
  876. package/src/engine/combat/sessionDeaths.ts +469 -0
  877. package/src/engine/combat/sessionFocus.ts +506 -0
  878. package/src/engine/combat/sessionFollow.ts +167 -0
  879. package/src/engine/combat/sessionGeometry.ts +188 -0
  880. package/src/engine/combat/sessionHome.ts +75 -0
  881. package/src/engine/combat/sessionInject.ts +719 -0
  882. package/src/engine/combat/sessionMechanicMove.ts +555 -0
  883. package/src/engine/combat/sessionMotion.ts +1553 -0
  884. package/src/engine/combat/sessionMotionKit.ts +247 -0
  885. package/src/engine/combat/sessionMoveIntent.ts +49 -0
  886. package/src/engine/combat/sessionMoveOrder.ts +200 -0
  887. package/src/engine/combat/sessionPathTo.ts +657 -0
  888. package/src/engine/combat/sessionPools.ts +688 -0
  889. package/src/engine/combat/sessionSteer.ts +144 -0
  890. package/src/engine/combat/sessionStepBack.ts +151 -0
  891. package/src/engine/combat/sessionStepWrap.ts +116 -0
  892. package/src/engine/combat/sessionView.ts +442 -0
  893. package/src/engine/combat/simEffects.ts +32 -0
  894. package/src/engine/combat/simFacade.ts +620 -0
  895. package/src/engine/combat/simPump.ts +264 -0
  896. package/src/engine/combat/simSnapshot.ts +165 -0
  897. package/src/engine/combat/simThreadPool.ts +35 -0
  898. package/src/engine/combat/skeramImages.ts +57 -0
  899. package/src/engine/combat/slowUpdate.ts +178 -0
  900. package/src/engine/combat/snapToFloor.ts +42 -0
  901. package/src/engine/combat/speedAura.ts +29 -0
  902. package/src/engine/combat/spellReagents.ts +71 -0
  903. package/src/engine/combat/stealthDetect.ts +93 -0
  904. package/src/engine/combat/stepBackMotion.ts +171 -0
  905. package/src/engine/combat/stepSession.ts +3102 -0
  906. package/src/engine/combat/summonCast.ts +243 -0
  907. package/src/engine/combat/thaddiusPolarity.ts +97 -0
  908. package/src/engine/combat/threat.ts +388 -0
  909. package/src/engine/combat/threatOps.ts +272 -0
  910. package/src/engine/combat/tickWorkerBody.ts +211 -0
  911. package/src/engine/combat/totemAuras.ts +122 -0
  912. package/src/engine/combat/triggerPayload.ts +42 -0
  913. package/src/engine/combat/triggeredCompanion.ts +63 -0
  914. package/src/engine/combat/types.ts +1897 -0
  915. package/src/engine/combat/useObjectTrap.ts +140 -0
  916. package/src/engine/combat/walkSurface.ts +54 -0
  917. package/src/engine/combat/weapon.ts +1248 -0
  918. package/src/engine/combat/worldFrame.ts +43 -0
  919. package/src/engine/combat.solo-golden.json +2242 -0
  920. package/src/engine/combat.ts +84 -0
  921. package/src/engine/core/detMath.ts +289 -0
  922. package/src/engine/core/events.ts +357 -0
  923. package/src/engine/core/rng.ts +36 -0
  924. package/src/engine/game/actionBars.ts +124 -0
  925. package/src/engine/game/activateObjectFromSpell.ts +320 -0
  926. package/src/engine/game/applyActiveObjectFromDbScript.ts +98 -0
  927. package/src/engine/game/applyDeathAndSpellScripts.ts +268 -0
  928. package/src/engine/game/applyDoorFromDbScript.ts +388 -0
  929. package/src/engine/game/applyEscortFromDbScript.ts +290 -0
  930. package/src/engine/game/applyGoSpellcasterCast.ts +40 -0
  931. package/src/engine/game/applyHoverFromDbScript.ts +110 -0
  932. package/src/engine/game/applyOocResurrect.ts +71 -0
  933. package/src/engine/game/applySpellDurability.ts +115 -0
  934. package/src/engine/game/applyTailFromDbScript.ts +478 -0
  935. package/src/engine/game/applyTerminateFromDbScript.ts +95 -0
  936. package/src/engine/game/auctionMail.ts +269 -0
  937. package/src/engine/game/bagOverflow.ts +130 -0
  938. package/src/engine/game/bank.ts +110 -0
  939. package/src/engine/game/barAutofill.ts +26 -0
  940. package/src/engine/game/battleground.ts +369 -0
  941. package/src/engine/game/combatEnemySpec.ts +216 -0
  942. package/src/engine/game/combatObjectTraps.ts +167 -0
  943. package/src/engine/game/combatSeed.ts +320 -0
  944. package/src/engine/game/combatSession.ts +3241 -0
  945. package/src/engine/game/combatSessionClock.ts +62 -0
  946. package/src/engine/game/companionQuestActions.ts +242 -0
  947. package/src/engine/game/companionTraining.ts +40 -0
  948. package/src/engine/game/consumables.ts +624 -0
  949. package/src/engine/game/context.ts +53 -0
  950. package/src/engine/game/createHealthstone.ts +45 -0
  951. package/src/engine/game/deathFlow.ts +127 -0
  952. package/src/engine/game/devGrant.ts +117 -0
  953. package/src/engine/game/dynamicObject.ts +365 -0
  954. package/src/engine/game/enchantItem.ts +177 -0
  955. package/src/engine/game/equipmentHelper.ts +806 -0
  956. package/src/engine/game/factionState.ts +108 -0
  957. package/src/engine/game/garmentsOoc.ts +69 -0
  958. package/src/engine/game/globalActionBar.ts +179 -0
  959. package/src/engine/game/goInteractQuestCredit.ts +51 -0
  960. package/src/engine/game/goMoTransportUse.ts +61 -0
  961. package/src/engine/game/goTransportUse.ts +60 -0
  962. package/src/engine/game/healthstoneUpkeep.ts +59 -0
  963. package/src/engine/game/killSkin.ts +124 -0
  964. package/src/engine/game/learnFromItem.ts +118 -0
  965. package/src/engine/game/loadReconcile.ts +551 -0
  966. package/src/engine/game/loot.ts +294 -0
  967. package/src/engine/game/macros.ts +125 -0
  968. package/src/engine/game/mail.ts +293 -0
  969. package/src/engine/game/meetingStoneQueue.ts +75 -0
  970. package/src/engine/game/meetingStoneUse.ts +54 -0
  971. package/src/engine/game/newGameState.ts +363 -0
  972. package/src/engine/game/oocAuraInterrupt.ts +92 -0
  973. package/src/engine/game/oocCast.ts +241 -0
  974. package/src/engine/game/oocCastEffects.ts +803 -0
  975. package/src/engine/game/oocCastMethods.ts +1077 -0
  976. package/src/engine/game/openLockFromSpell.ts +174 -0
  977. package/src/engine/game/outdoorPvp.ts +187 -0
  978. package/src/engine/game/outfitter.ts +644 -0
  979. package/src/engine/game/paladinBoard.ts +393 -0
  980. package/src/engine/game/partyAuras.ts +121 -0
  981. package/src/engine/game/persistCombatAuras.ts +91 -0
  982. package/src/engine/game/pets.ts +459 -0
  983. package/src/engine/game/prePullHealthstones.ts +154 -0
  984. package/src/engine/game/professions.ts +2227 -0
  985. package/src/engine/game/pruneStaleRuntime.ts +39 -0
  986. package/src/engine/game/questFightCredit.ts +36 -0
  987. package/src/engine/game/questItemOnCorpse.ts +166 -0
  988. package/src/engine/game/questItemOnCreature.ts +103 -0
  989. package/src/engine/game/questLog.ts +879 -0
  990. package/src/engine/game/questSpellComplete.ts +21 -0
  991. package/src/engine/game/questTurnIn.ts +598 -0
  992. package/src/engine/game/raidParty.ts +32 -0
  993. package/src/engine/game/reagentBuyIn.ts +39 -0
  994. package/src/engine/game/regenRest.ts +186 -0
  995. package/src/engine/game/rotation.ts +425 -0
  996. package/src/engine/game/runFullDungeon.ts +611 -0
  997. package/src/engine/game/runSupply.ts +80 -0
  998. package/src/engine/game/sanitizeDriftedItems.ts +135 -0
  999. package/src/engine/game/scriptDevGoUse.ts +397 -0
  1000. package/src/engine/game/scriptDevInnkeeper.ts +150 -0
  1001. package/src/engine/game/scriptDevProfessionSpec.ts +99 -0
  1002. package/src/engine/game/sendEventFromSpell.ts +87 -0
  1003. package/src/engine/game/sortContainers.ts +85 -0
  1004. package/src/engine/game/spellReputation.ts +69 -0
  1005. package/src/engine/game/squad/squadDungeonSeating.ts +197 -0
  1006. package/src/engine/game/squadDungeon.ts +4222 -0
  1007. package/src/engine/game/squadQuestShare.ts +260 -0
  1008. package/src/engine/game/summonObjectSlot.ts +69 -0
  1009. package/src/engine/game/summonObjectWild.ts +73 -0
  1010. package/src/engine/game/summoningRitualUse.ts +141 -0
  1011. package/src/engine/game/talents.ts +356 -0
  1012. package/src/engine/game/tamingRodUse.ts +66 -0
  1013. package/src/engine/game/tempSpawnCreature.ts +136 -0
  1014. package/src/engine/game/tickDungeonPatrolScripts.ts +205 -0
  1015. package/src/engine/game/tickTimedQuests.ts +28 -0
  1016. package/src/engine/game/trade.ts +586 -0
  1017. package/src/engine/game/travel.ts +1155 -0
  1018. package/src/engine/game/types.ts +1855 -0
  1019. package/src/engine/game/vendorOffers.ts +244 -0
  1020. package/src/engine/game/weaponImbueItem.ts +281 -0
  1021. package/src/engine/game/worldSession.ts +183 -0
  1022. package/src/engine/game/worldState.ts +166 -0
  1023. package/src/engine/game.ts +968 -0
  1024. package/src/engine/spells/GAP.md +67 -0
  1025. package/src/engine/spells/absorbs.ts +376 -0
  1026. package/src/engine/spells/addTargetTrigger.ts +53 -0
  1027. package/src/engine/spells/auraPerSecondCost.ts +50 -0
  1028. package/src/engine/spells/auraStacking.ts +497 -0
  1029. package/src/engine/spells/cmangos-special-cases-combustion.ts +13 -0
  1030. package/src/engine/spells/cmangos-special-cases-s18.ts +445 -0
  1031. package/src/engine/spells/cmangos-special-cases-s19.ts +324 -0
  1032. package/src/engine/spells/cmangos-special-cases-s20.ts +385 -0
  1033. package/src/engine/spells/cmangos-special-cases-s21.ts +116 -0
  1034. package/src/engine/spells/cmangos-special-cases-s22.ts +24 -0
  1035. package/src/engine/spells/cmangos-special-cases-s23.ts +52 -0
  1036. package/src/engine/spells/cmangos-special-cases.ts +1570 -0
  1037. package/src/engine/spells/conditions.ts +718 -0
  1038. package/src/engine/spells/effects.ts +203 -0
  1039. package/src/engine/spells/fixtures/oracle-effects-lock9a.json +1 -0
  1040. package/src/engine/spells/immunity.ts +942 -0
  1041. package/src/engine/spells/intentEffects.ts +351 -0
  1042. package/src/engine/spells/interpreter/GAPS.md +21 -0
  1043. package/src/engine/spells/interpreter/amount.ts +109 -0
  1044. package/src/engine/spells/interpreter/class-scripts-kit.ts +478 -0
  1045. package/src/engine/spells/interpreter/diff.ts +246 -0
  1046. package/src/engine/spells/interpreter/duration.ts +90 -0
  1047. package/src/engine/spells/interpreter/form-attrs.json +1 -0
  1048. package/src/engine/spells/interpreter/form-attrs.ts +95 -0
  1049. package/src/engine/spells/interpreter/handlers/aura-remove.ts +113 -0
  1050. package/src/engine/spells/interpreter/handlers/auras-control.ts +1547 -0
  1051. package/src/engine/spells/interpreter/handlers/auras-core.ts +1583 -0
  1052. package/src/engine/spells/interpreter/handlers/auras-misc.ts +1774 -0
  1053. package/src/engine/spells/interpreter/handlers/effect-disenchant.ts +17 -0
  1054. package/src/engine/spells/interpreter/handlers/effect-skinning.ts +20 -0
  1055. package/src/engine/spells/interpreter/handlers/effects-action-utility.ts +1455 -0
  1056. package/src/engine/spells/interpreter/handlers/effects-core.ts +432 -0
  1057. package/src/engine/spells/interpreter/handlers/effects-remainder.ts +105 -0
  1058. package/src/engine/spells/interpreter/handlers/effects-summon-item.ts +687 -0
  1059. package/src/engine/spells/interpreter/handlers/mod-increase-energy-percent.ts +36 -0
  1060. package/src/engine/spells/interpreter/handlers/mod-increase-energy.ts +36 -0
  1061. package/src/engine/spells/interpreter/handlers/periodic-trigger-zero.ts +327 -0
  1062. package/src/engine/spells/interpreter/handlers/procs.ts +131 -0
  1063. package/src/engine/spells/interpreter/handlers/registry.ts +975 -0
  1064. package/src/engine/spells/interpreter/handlers/shared.ts +667 -0
  1065. package/src/engine/spells/interpreter/handlers.ts +9 -0
  1066. package/src/engine/spells/interpreter/hunter-kit.ts +202 -0
  1067. package/src/engine/spells/interpreter/index.ts +525 -0
  1068. package/src/engine/spells/interpreter/item-triggers.ts +1121 -0
  1069. package/src/engine/spells/interpreter/lift-consume-energy.ts +37 -0
  1070. package/src/engine/spells/interpreter/mage-portals.ts +37 -0
  1071. package/src/engine/spells/interpreter/materialize-charm.ts +88 -0
  1072. package/src/engine/spells/interpreter/materialize-dispel-mechanic.ts +25 -0
  1073. package/src/engine/spells/interpreter/materialize-rating-buffs.ts +81 -0
  1074. package/src/engine/spells/interpreter/materialize-speed.ts +109 -0
  1075. package/src/engine/spells/interpreter/materialize-spell-magnet.ts +22 -0
  1076. package/src/engine/spells/interpreter/opcodes.ts +789 -0
  1077. package/src/engine/spells/interpreter/paladin-kit.ts +95 -0
  1078. package/src/engine/spells/interpreter/paladin-seals.ts +499 -0
  1079. package/src/engine/spells/interpreter/priest-warlock-kit.ts +135 -0
  1080. package/src/engine/spells/interpreter/proc.ts +443 -0
  1081. package/src/engine/spells/interpreter/registry/helpers.ts +16 -0
  1082. package/src/engine/spells/interpreter/registry/index.ts +216 -0
  1083. package/src/engine/spells/interpreter/registry/packs/class-abilities.ts +304 -0
  1084. package/src/engine/spells/interpreter/registry/packs/dire-maul.ts +44 -0
  1085. package/src/engine/spells/interpreter/registry/packs/dummy-script-tail.ts +1065 -0
  1086. package/src/engine/spells/interpreter/registry/packs/ex-wave-m.ts +70 -0
  1087. package/src/engine/spells/interpreter/registry/packs/life-tap.ts +107 -0
  1088. package/src/engine/spells/interpreter/registry/packs/paladin.ts +246 -0
  1089. package/src/engine/spells/interpreter/registry/packs/raid-script-summons.ts +26 -0
  1090. package/src/engine/spells/interpreter/registry/packs/raid-threat-wipe.ts +22 -0
  1091. package/src/engine/spells/interpreter/registry/packs/shaman.ts +214 -0
  1092. package/src/engine/spells/interpreter/registry/packs/si4-dummy-generic-a.ts +269 -0
  1093. package/src/engine/spells/interpreter/registry/packs/si4-dummy-generic-b.ts +370 -0
  1094. package/src/engine/spells/interpreter/registry/packs/si4-dummy-generic-c.ts +172 -0
  1095. package/src/engine/spells/interpreter/registry/packs/si4-dummy-hunter.ts +60 -0
  1096. package/src/engine/spells/interpreter/registry/packs/si4-dummy-warrior.ts +31 -0
  1097. package/src/engine/spells/interpreter/registry/packs/si4-script-generic-a.ts +114 -0
  1098. package/src/engine/spells/interpreter/registry/packs/si4-script-generic-b.ts +249 -0
  1099. package/src/engine/spells/interpreter/registry/packs/si4-script-generic-c.ts +233 -0
  1100. package/src/engine/spells/interpreter/registry/types.ts +48 -0
  1101. package/src/engine/spells/interpreter/talent-scripted.ts +329 -0
  1102. package/src/engine/spells/interpreter/targeting.ts +90 -0
  1103. package/src/engine/spells/interpreter/types-intent.ts +1501 -0
  1104. package/src/engine/spells/interpreter/types.ts +419 -0
  1105. package/src/engine/spells/interpreter/warrior-druid-kit.ts +314 -0
  1106. package/src/engine/spells/interpreter/weapon-imbue-kit.ts +384 -0
  1107. package/src/engine/spells/interrupt.ts +217 -0
  1108. package/src/engine/spells/meleeAttackReset.ts +60 -0
  1109. package/src/engine/spells/oocTriggerSpell.ts +49 -0
  1110. package/src/engine/spells/overrideClassScripts.ts +319 -0
  1111. package/src/engine/spells/parryHaste.ts +20 -0
  1112. package/src/engine/spells/procs.ts +300 -0
  1113. package/src/engine/spells/recovery.ts +203 -0
  1114. package/src/engine/spells/scriptTargetDest.ts +76 -0
  1115. package/src/engine/spells/scriptTargets.ts +85 -0
  1116. package/src/engine/spells/singleTargetAura.ts +82 -0
  1117. package/src/engine/spells/specialCasePayloads.ts +57 -0
  1118. package/src/engine/spells/spellAttributes.ts +249 -0
  1119. package/src/engine/spells/spellBonus.ts +143 -0
  1120. package/src/engine/spells/spellModIntents.ts +419 -0
  1121. package/src/engine/spells/spellMods.ts +283 -0
  1122. package/src/engine/spells/spellRadius.ts +15 -0
  1123. package/src/engine/spells/trapObjects.ts +26 -0
  1124. package/src/json.d.ts +7 -0
  1125. package/src/persistence/memoryRepository.ts +23 -0
  1126. package/src/persistence/saveBackups.ts +162 -0
  1127. package/src/persistence/saveFile.ts +68 -0
  1128. package/src/persistence/saveRepository.ts +11 -0
  1129. package/src/persistence/saveShape.ts +668 -0
  1130. package/src/progression/leveling.ts +89 -0
  1131. package/src/progression/rest.ts +1434 -0
  1132. package/src/progression/training.ts +226 -0
  1133. package/src/progression/xpGain.ts +369 -0
  1134. package/src/quests/quests.ts +1580 -0
  1135. package/src/world/aoePull.ts +198 -0
  1136. package/src/world/areaTableDbc.ts +39 -0
  1137. package/src/world/areaTableMapIdPairs.ts +141 -0
  1138. package/src/world/bakeSlug.ts +43 -0
  1139. package/src/world/continuousDungeon.ts +1250 -0
  1140. package/src/world/dungeonBakeProjection.ts +190 -0
  1141. package/src/world/dungeonMapDensity.ts +342 -0
  1142. package/src/world/dungeonMapProjection.ts +135 -0
  1143. package/src/world/dungeonNav.ts +904 -0
  1144. package/src/world/dungeonNpcSim.ts +147 -0
  1145. package/src/world/dungeonObjectives.ts +234 -0
  1146. package/src/world/dungeonPreset.ts +35 -0
  1147. package/src/world/dungeonRoute.ts +311 -0
  1148. package/src/world/dungeonRouteGeometry.ts +732 -0
  1149. package/src/world/dungeonRouteOrder.ts +1037 -0
  1150. package/src/world/dungeonWingRooms.ts +426 -0
  1151. package/src/world/escort.ts +296 -0
  1152. package/src/world/goPoolRoll.ts +75 -0
  1153. package/src/world/instanceObjects.ts +785 -0
  1154. package/src/world/instances.ts +1572 -0
  1155. package/src/world/meetingStones.ts +56 -0
  1156. package/src/world/navmeshFloors.ts +145 -0
  1157. package/src/world/nearGrid.ts +167 -0
  1158. package/src/world/packBudget.ts +613 -0
  1159. package/src/world/rareRoll.ts +335 -0
  1160. package/src/world/routeAuthoring.ts +132 -0
  1161. package/src/world/routeEdit.ts +209 -0
  1162. package/src/world/world.ts +812 -0
  1163. package/src/world/zoneHazards.ts +47 -0
@@ -0,0 +1,661 @@
1
+ // Creature AI constants: EventAI type ids, action types, flags, school and mechanic maps, and
2
+ // immune-mask helpers. Pure domain, every default cited from CMaNGOS Classic sources.
3
+
4
+ import type {
5
+ Mechanic,
6
+ School,
7
+ SpellDef,
8
+ } from '../../data/schema.ts';
9
+
10
+ // Config defaults (World.cpp setConfigPos)
11
+
12
+ /** CONFIG_FLOAT_RATE_CREATURE_AGGRO — World.cpp ~443, mangosd.conf Rate.Creature.Aggro */
13
+ export const RATE_CREATURE_AGGRO = 1.0;
14
+
15
+ // CONFIG_FLOAT_CREATURE_FAMILY_ASSISTANCE_RADIUS — World.cpp ~472, mangosd.conf
16
+ // CreatureFamilyAssistanceRadius = 5
17
+ export const CREATURE_FAMILY_ASSISTANCE_RADIUS = 5.0;
18
+
19
+ // CONFIG_FLOAT_CREATURE_CHECK_FOR_HELP_RADIUS — World.cpp:473, default 5. Same 5 yd as the
20
+ // assistance radius but continuous: CheckForHelp runs from MoveInLineOfSight all fight.
21
+ export const CREATURE_CHECK_FOR_HELP_RADIUS = 5.0;
22
+
23
+ // CONFIG_UINT32_CREATURE_FAMILY_ASSISTANCE_DELAY — World.cpp:661, default 1500. The gap between
24
+ // a creature entering combat and its neighbours joining. Cite: Creature.cpp:2163.
25
+ export const CREATURE_FAMILY_ASSISTANCE_DELAY_MS = 1500;
26
+
27
+ // CONFIG_UINT32_CREATURE_CHECK_FOR_HELP_AGGRO_DELAY — World.cpp:474, default 2000. SetInCombatState
28
+ // disables CheckForHelp on the newly engaged creature for this long. Cite: Unit.cpp:7995.
29
+ export const CREATURE_CHECK_FOR_HELP_AGGRO_DELAY_MS = 2000;
30
+
31
+ // Default detection when template Detection is absent. Unit.h GetDetectionRange returns 18; the
32
+ // Creature ctor seeds 20 then overwrites from cinfo->Detection.
33
+ export const DEFAULT_DETECTION_RANGE = 18;
34
+
35
+ /** Minimum aggro radius (yards) — Unit.cpp ~11777–11779 */
36
+ export const MIN_AGGRO_DISTANCE = 5;
37
+
38
+ /** Level-diff floor: player more than 25 levels below creature — Unit.cpp ~11758–11760 */
39
+ export const AGGRO_LEVEL_DIFF_CAP = -25;
40
+
41
+ /** Player-controlled pet aggro factor — Unit.cpp ~11781–11782 */
42
+ export const PET_AGGRO_FACTOR = 0.65;
43
+
44
+ // ExtraFlags bits we gate on this system (Creature.h ~49–60)
45
+
46
+ export const CREATURE_EXTRA_FLAG = {
47
+ NO_AGGRO_ON_SIGHT: 0x00000002, // 2
48
+ /** Creature.h:52 — skip parry-haste swing reduction. */
49
+ NO_PARRY_HASTEN: 0x00000008, // 8
50
+ RUN_DURING_WANDER: 0x00000020, // 32
51
+ /** Creature.h:56 — always invisible (script triggers). */
52
+ INVISIBLE: 0x00000080, // 128
53
+ AGGRO_ZONE: 0x00000200, // 512
54
+ GUARD: 0x00000400, // 1024
55
+ NO_CALL_ASSIST: 0x00000800, // 2048
56
+ /** Creature.h:65 — Civilian-column substitute. Classic IsCivilian is Creature.h:636. */
57
+ CIVILIAN: 0x00010000, // 65536
58
+ } as const;
59
+
60
+ // creature_template StaticFlags / StaticFlags2 bits this tree gates on, counted over the 10,384
61
+ // shipped rows. Cite: CreatureDefines.h:27-61.
62
+ export const CREATURE_STATIC_FLAGS = {
63
+ /** 3 rows. Skinning and the corpse still work; the loot roll does not happen. */
64
+ NO_LOOT: 0x00000004,
65
+ /** 8 (0x8) — already read by the damage path as death prevention. */
66
+ UNKILLABLE: 0x00000008,
67
+ /** 256 (0x100) — immobilised, already read by sessionMotion. */
68
+ SESSILE: 0x00000100,
69
+ // 71 rows (Imp, Deer, Sheep, Earthbind Totem): never melees, and flees for 30 s when a
70
+ // player-controlled unit engages it. Cite: CreatureDefines.h:49; Unit.cpp:7980 DoFlee(30000).
71
+ NO_MELEE_FLEE: 0x00100000,
72
+ } as const;
73
+
74
+ // `CreatureStaticFlags2` — creature_template.StaticFlags2. Counts on the 10,384 shipped rows. Cite:
75
+ // CreatureDefines.h:65-90.
76
+ export const CREATURE_STATIC_FLAGS2 = {
77
+ NO_CRUSHING_BLOWS: 0x00000010, // 2 rows — Unit.cpp:3109 CanCrushInCombat
78
+ /** 8 rows (Sentry Totem, Eye of Kilrogg): the owner takes no threat for its actions. */
79
+ NO_OWNER_THREAT: 0x00000020,
80
+ // 369 of 10,384, so the slowdown is the DEFAULT. Below 30% health chase and wander speed take
81
+ // a 1 - ((30 - min(hp%,30)) * 1.67)/100 multiplier. Cite: Creature.cpp:2938 IsSlowedInCombat.
82
+ NO_WOUNDED_SLOWDOWN: 0x00000040,
83
+ /** 72 rows — a guard with this bit keeps attacking a Feign Death'd hunter. */
84
+ IGNORE_FEIGN_DEATH: 0x00000100,
85
+ } as const;
86
+
87
+ // Creature::IsSlowedInCombat — below 30% health and not opted out, reaching 0.67x at 10% hp and
88
+ // 0.50x at 0%. Returns 1 when nothing applies. Cite: Creature.cpp:2938-2941.
89
+ export function woundedSlowdownFactor(healthPercent: number, staticFlags2: number): number {
90
+ if ((staticFlags2 & CREATURE_STATIC_FLAGS2.NO_WOUNDED_SLOWDOWN) !== 0) return 1;
91
+ if (!(healthPercent < 30)) return 1;
92
+ const hp = Math.max(0, Math.min(30, healthPercent));
93
+ return 1 - ((30 - hp) * 1.67) / 100;
94
+ }
95
+
96
+ // GuardAI assist radii (GuardAI.cpp:54–76 MoveInLineOfSight)
97
+
98
+ export const GUARD_ASSIST_PLAYER_DIST_YD = 5.0;
99
+ export const GUARD_ASSIST_VICTIM_DIST_YD = 10.0;
100
+ export const GUARD_ASSIST_PVP_DIST_YD = 30.0;
101
+ export const GUARD_ASSIST_GUARD_CIVILIAN_DIST_YD = 20.0;
102
+
103
+ // Motion constants: Wander, Flee, Home (RandomMovementGenerator.cpp, HomeMovementGenerator.cpp)
104
+
105
+ /** RandomMovementGenerator.cpp:166 WanderMovementGenerator: 3000–10000 ms pause, 3 max moves */
106
+ export const WANDER_DELAY_MIN_MS = 3000;
107
+ export const WANDER_DELAY_MAX_MS = 10000;
108
+ export const WANDER_MAX_HOPS = 3;
109
+
110
+ /** RandomMovementGenerator.cpp:242–243 MIN_QUIET_DISTANCE 28.0f, MAX_QUIET_DISTANCE 43.0f */
111
+ /** `DoFlee(30000)` for a NO_MELEE_FLEE critter. Cite: Unit.cpp:7982. */
112
+ export const CRITTER_FLEE_MS = 30000;
113
+
114
+ export const FLEE_MIN_QUIET_DISTANCE_YD = 28.0;
115
+ export const FLEE_MAX_QUIET_DISTANCE_YD = 43.0;
116
+
117
+ /** HomeMovementGenerator.cpp:52–60 outdoor evade distance > 150 yd despawns */
118
+ export const HOME_DESPAWN_DISTANCE_YD = 150;
119
+ export const HOME_DESPAWN_DISTANCE_SQ = 22500;
120
+
121
+ // Chase movement: Backpedal & Fan-out (TargetedMovementGenerator.cpp)
122
+
123
+ /** TargetedMovementGenerator.cpp:35 CHASE_CLOSENESS_TIMER 2000 ms */
124
+ export const CHASE_CLOSENESS_TIMER_MS = 2000;
125
+
126
+ /** TargetedMovementGenerator.cpp:395 targetDist = min(combinedCombatReach, 3.75f) */
127
+ export const CHASE_BACKPEDAL_MAX_DIST_YD = 3.75;
128
+
129
+ /** TargetedMovementGenerator.cpp:408 inside model threshold: distSq < (targetDist^2) * 0.33f */
130
+ export const CHASE_BACKPEDAL_THRESHOLD_FACTOR = 0.33;
131
+
132
+ /** TargetedMovementGenerator.cpp:410 backpedal distance: targetDist * 0.75f */
133
+ export const CHASE_BACKPEDAL_DIST_FACTOR = 0.75;
134
+
135
+ /** TargetedMovementGenerator.cpp:428 fanning search radius 1.0 yd */
136
+ export const CHASE_FANNING_RADIUS_YD = 1.0;
137
+
138
+ /** TargetedMovementGenerator.cpp:429 fanAngleMin pi/5 (36 deg) */
139
+ export const CHASE_FAN_ANGLE_MIN_RAD = Math.PI / 5;
140
+
141
+ /** TargetedMovementGenerator.cpp:430 fanAngleMax pi/4 (45 deg) */
142
+ export const CHASE_FAN_ANGLE_MAX_RAD = Math.PI / 4;
143
+
144
+ // Follow distance: PET_FOLLOW_DIST vs GuardianAI (do not share one constant)
145
+
146
+ /** MotionMaster.h:45 `#define PET_FOLLOW_DIST 1.0f` — pet MoveFollow park. */
147
+ export const PET_FOLLOW_DIST_YD = 1.0;
148
+
149
+ // GuardianAI.cpp:31 `m_followDist = 1.5f`. Not PET_FOLLOW_DIST. MotionMaster.h:46 is PET_FOLLOW_ANGLE
150
+ // (π/2), not a guardian dist define.
151
+ export const GUARDIAN_FOLLOW_DIST_YD = 1.5;
152
+
153
+ /** GuardianAI.cpp:35–36 UNIT_CREATED_BY_SPELL 11939 (Thule Ravenclaw Imp) → 3.f */
154
+ export const GUARDIAN_IMP_CREATED_BY_SPELL = 11939;
155
+ export const GUARDIAN_IMP_FOLLOW_DIST_YD = 3.0;
156
+
157
+ /** PetAI.cpp:190 recall arrival / repath slack is `PET_FOLLOW_DIST * 2`. */
158
+ export const PET_FOLLOW_SLACK_YD = PET_FOLLOW_DIST_YD * 2;
159
+
160
+ export function isGuardianFollow(spec: { isGuardian?: boolean }): boolean {
161
+ return spec.isGuardian === true;
162
+ }
163
+
164
+ /** Pet follow 1.0; guardian follow 1.5 (Imp 11939 → 3). Separate constants. */
165
+ export function followDistFor(spec: {
166
+ isGuardian?: boolean;
167
+ createdBySpell?: number;
168
+ }): number {
169
+ if (isGuardianFollow(spec)) {
170
+ if (spec.createdBySpell === GUARDIAN_IMP_CREATED_BY_SPELL) return GUARDIAN_IMP_FOLLOW_DIST_YD;
171
+ return GUARDIAN_FOLLOW_DIST_YD;
172
+ }
173
+ return PET_FOLLOW_DIST_YD;
174
+ }
175
+
176
+ // AIEventType enum (AIDefines.h:22–56)
177
+
178
+ export const AI_EVENT_TYPE = {
179
+ JUST_DIED: 0,
180
+ CRITICAL_HEALTH: 1, // 10% health
181
+ LOST_HEALTH: 2, // 50% health
182
+ LOST_SOME_HEALTH: 3, // 90% health
183
+ GOT_FULL_HEALTH: 4,
184
+ CUSTOM_EVENTAI_A: 5,
185
+ CUSTOM_EVENTAI_B: 6,
186
+ GOT_CCED: 7,
187
+ CUSTOM_EVENTAI_C: 8,
188
+ CUSTOM_EVENTAI_D: 9,
189
+ CUSTOM_EVENTAI_E: 10,
190
+ CUSTOM_EVENTAI_F: 11,
191
+ MAXIMAL_EVENTAI: 12,
192
+ CALL_ASSISTANCE: 13,
193
+ START_ESCORT: 100,
194
+ START_ESCORT_B: 101,
195
+ START_EVENT: 102,
196
+ START_EVENT_A: 103,
197
+ START_EVENT_B: 104,
198
+ CUSTOM_A: 1000,
199
+ CUSTOM_B: 1001,
200
+ CUSTOM_C: 1002,
201
+ CUSTOM_D: 1003,
202
+ CUSTOM_E: 1004,
203
+ CUSTOM_F: 1005,
204
+ } as const;
205
+
206
+ // EventAI type ids — full Classic enum (CreatureEventAI.h EventAI_Type ~40–86)
207
+
208
+ export const EVENT_T = {
209
+ TIMER_IN_COMBAT: 0,
210
+ TIMER_OOC: 1,
211
+ HP: 2,
212
+ MANA: 3,
213
+ AGGRO: 4,
214
+ KILL: 5,
215
+ DEATH: 6,
216
+ EVADE: 7,
217
+ SPELLHIT: 8,
218
+ RANGE: 9,
219
+ OOC_LOS: 10,
220
+ SPAWNED: 11,
221
+ TARGET_HP: 12,
222
+ TARGET_CASTING: 13,
223
+ FRIENDLY_HP: 14,
224
+ FRIENDLY_IS_CC: 15,
225
+ FRIENDLY_MISSING_BUFF: 16,
226
+ SUMMONED_UNIT: 17,
227
+ TARGET_MANA: 18,
228
+ QUEST_ACCEPT: 19,
229
+ QUEST_COMPLETE: 20,
230
+ REACHED_HOME: 21,
231
+ RECEIVE_EMOTE: 22,
232
+ AURA: 23,
233
+ TARGET_AURA: 24,
234
+ SUMMONED_JUST_DIED: 25,
235
+ SUMMONED_JUST_DESPAWN: 26,
236
+ MISSING_AURA: 27,
237
+ TARGET_MISSING_AURA: 28,
238
+ TIMER_GENERIC: 29,
239
+ RECEIVE_AI_EVENT: 30,
240
+ ENERGY: 31,
241
+ SELECT_ATTACKING_TARGET: 32,
242
+ FACING_TARGET: 33,
243
+ SPELLHIT_TARGET: 34,
244
+ DEATH_PREVENTED: 35,
245
+ TARGET_NOT_REACHABLE: 36,
246
+ SPELL_CAST: 37,
247
+ BOARD_VEHICLE: 38,
248
+ PASSENGER_BOARDED: 39,
249
+ VEHICLE_RETURN: 40,
250
+ PASSENGER_SPAWN: 41,
251
+ PASSENGER_CONTROL_END: 42,
252
+ } as const;
253
+
254
+ /** ACTION_T_TEXT — CreatureEventAI.h ~93; ProcessAction ~674–728. TextId1..3. */
255
+ export const ACTION_T_TEXT = 1;
256
+ /** ACTION_T_SOUND — CreatureEventAI.h ~96; ProcessAction ~760–761. soundId. */
257
+ export const ACTION_T_SOUND = 4;
258
+ /** ACTION_T_EMOTE — CreatureEventAI.h ~97; ProcessAction ~763–764. emoteId. */
259
+ export const ACTION_T_EMOTE = 5;
260
+ /** ACTION_T_CAST — CreatureEventAI.h ~102 */
261
+ export const ACTION_T_CAST = 11;
262
+
263
+ // ACTION_T_SPAWN — CreatureEventAI.h ~103 Params: creatureId, target, durationMs (0 = no timed despawn).
264
+ // Roadmap “SUMMON” name maps here (no separate ACTION_T_SUMMON enum in Classic).
265
+ export const ACTION_T_SPAWN = 12;
266
+ /** Alias for readability — same id as ACTION_T_SPAWN (CreatureEventAI.h ~103). */
267
+ export const ACTION_T_SUMMON = ACTION_T_SPAWN;
268
+
269
+ // ACTION_T_AUTO_ATTACK — CreatureEventAI.h ~111; ProcessAction ~900–901. param1: AllowAttackState (0 = stop
270
+ // melee AA, nonzero = enable).
271
+ export const ACTION_T_AUTO_ATTACK = 20;
272
+
273
+ /** ACTION_T_SET_PHASE — CreatureEventAI.h ~113; ProcessAction ~919–922 (`m_Phase = phase`). */
274
+ export const ACTION_T_SET_PHASE = 22;
275
+
276
+ // ACTION_T_FLEE_FOR_ASSIST — CreatureEventAI.h ~116; ProcessAction ~948–950 → DoFlee(). Roadmap “FLEE”; no
277
+ // action params.
278
+ export const ACTION_T_FLEE_FOR_ASSIST = 25;
279
+
280
+ // ACTION_T_REMOVEAURASFROMSPELL — CreatureEventAI.h ~119; ProcessAction ~971–973. param1: target selector;
281
+ // param2: spellId → RemoveAurasDueToSpell.
282
+ export const ACTION_T_REMOVEAURASFROMSPELL = 28;
283
+
284
+ // ACTION_T_SUMMON_ID — CreatureEventAI.h ~123 Params: creatureId, target, spawnId → creature_ai_summons
285
+ // lookup.
286
+ export const ACTION_T_SUMMON_ID = 32;
287
+
288
+ // TARGET_T_SELF — CreatureEventAI.h:163. A summon row naming it never AttackStarts its spawn.
289
+ export const EVENT_AI_TARGET_SELF = 0;
290
+
291
+ // ACTION_T_SET_INST_DATA — CreatureEventAI.h ~125; ProcessAction ~1044–1054. param1: field; param2: value
292
+ // on InstanceData.
293
+ export const ACTION_T_SET_INST_DATA = 34;
294
+
295
+ // ACTION_T_UPDATE_TEMPLATE — CreatureEventAI.h ~127; ProcessAction ~1076–1083. param1: new
296
+ // creature_template entry.
297
+ export const ACTION_T_UPDATE_TEMPLATE = 36;
298
+
299
+ // ACTION_T_CALL_FOR_HELP — CreatureEventAI.h ~130; ProcessAction ~1102–1105. param1: radius yards
300
+ // (DoCallForHelp).
301
+ export const ACTION_T_CALL_FOR_HELP = 39;
302
+
303
+ // ACTION_T_FORCE_DESPAWN — CreatureEventAI.h ~132; ProcessAction ~1112–1114. param1: ms delay (0 =
304
+ // instant).
305
+ export const ACTION_T_FORCE_DESPAWN = 41;
306
+
307
+ // ACTION_T_SET_DEATH_PREVENTION — CreatureEventAI.h ~133; ProcessAction ~1117–1119. param1: 0 off / nonzero
308
+ // on (UNKILLABLE).
309
+ export const ACTION_T_SET_DEATH_PREVENTION = 42;
310
+
311
+ // ACTION_T_THROW_AI_EVENT — CreatureEventAI.h ~136; ProcessAction ~1140–1149. param1: AIEventType; param2:
312
+ // radius; param3: target selector.
313
+ export const ACTION_T_THROW_AI_EVENT = 45;
314
+
315
+ // ACTION_T_SET_THROW_MASK — CreatureEventAI.h:137. param1 is an AI_EVENT_TYPE bitmask; mask 0,
316
+ // the ctor default, means no automatic DamageTaken / HealedBy / JustDied throws.
317
+ export const ACTION_T_SET_THROW_MASK = 46;
318
+
319
+ // ACTION_T_SET_STAND_STATE — CreatureEventAI.h ~138; ProcessAction ~1157–1159. param1: UnitStandStateType.
320
+ export const ACTION_T_SET_STAND_STATE = 47;
321
+
322
+ // Default radius for automatic health/death AI event throws. Cite: CreatureEventAI.h:823
323
+ // AIEVENT_DEFAULT_THROW_RADIUS 30.0f.
324
+ export const AIEVENT_DEFAULT_THROW_RADIUS_YD = 30;
325
+
326
+ // DamageTaken health marks (90% / 50% / 10%). Index = m_throwAIEventStep 0..2. Cite:
327
+ // CreatureEventAI.cpp:1839–1851 HEALTH_STEPS; CreatureEventAI.h:933–936.
328
+ export const AI_EVENT_HEALTH_STEP_PCTS = [90, 50, 10] as const;
329
+
330
+ // AIEventType sent at each health step (LOST_SOME / LOST / CRITICAL). Cite: CreatureEventAI.cpp:1851
331
+ // sendEvent[].
332
+ export const AI_EVENT_HEALTH_STEP_TYPES = [
333
+ AI_EVENT_TYPE.LOST_SOME_HEALTH,
334
+ AI_EVENT_TYPE.LOST_HEALTH,
335
+ AI_EVENT_TYPE.CRITICAL_HEALTH,
336
+ ] as const;
337
+
338
+ // ACTION_T_SET_REACT_STATE — CreatureEventAI.h ~141; ProcessAction ~1206–1209. param1: ReactStates (0
339
+ // passive / 1 defensive / 2 aggressive).
340
+ export const ACTION_T_SET_REACT_STATE = 50;
341
+
342
+ // ACTION_T_START_RELAY_SCRIPT — CreatureEventAI.h ~144. Dispositioned: it needs the DBScript
343
+ // opcode VM, so it is not in ACTION_HANDLERS. See the census DISPOSITION_ACTIONS.
344
+ export const ACTION_T_START_RELAY_SCRIPT = 53;
345
+
346
+ /** ACTION_T_KILLED_MONSTER — CreatureEventAI.h:124 (CreatureId, Target). 2 DB rows. */
347
+ export const ACTION_T_KILLED_MONSTER = 33;
348
+
349
+ /** ACTION_T_PAUSE_WAYPOINTS — CreatureEventAI.h:142 (doPause: 1 pause, 0 unpause). 1 DB row. */
350
+ export const ACTION_T_PAUSE_WAYPOINTS = 51;
351
+
352
+ /** ACTION_T_SET_FACING — CreatureEventAI.h:150 (Target, 0 = set / 1 = reset). 2 DB rows. */
353
+ export const ACTION_T_SET_FACING = 59;
354
+
355
+ // ACTION_T_TEXT_NEW — CreatureEventAI.h ~145; ProcessAction ~1246–1268. param1: textId; param2: target;
356
+ // param3: templateId (random from template when set).
357
+ export const ACTION_T_TEXT_NEW = 54;
358
+
359
+ /** ACTION_T_ATTACK_START — CreatureEventAI.h ~146; ProcessAction ~1271–1280. param1: target selector. */
360
+ export const ACTION_T_ATTACK_START = 55;
361
+
362
+ // ACTION_T_DESPAWN_GUARDIANS — CreatureEventAI.h ~147; ProcessAction ~1283–1295. param1: guardian entry (0
363
+ // = all).
364
+ export const ACTION_T_DESPAWN_GUARDIANS = 56;
365
+
366
+ // ACTION_T_SET_RANGED_MODE — CreatureEventAI.h ~148. param1 is RangeModeType (0 disables),
367
+ // param2 the chase distance in yards. Cite: UnitAI.cpp SetRangedMode ~979.
368
+ export const ACTION_T_SET_RANGED_MODE = 57;
369
+
370
+ // ACTION_T_SET_FOLLOW_MOVEMENT — CreatureEventAI.h ~155; ProcessAction ~1366–1367. param1: 0 off / nonzero
371
+ // on.
372
+ export const ACTION_T_SET_FOLLOW_MOVEMENT = 64;
373
+
374
+ // ---- SESSION 4 tail actions (aifid-s4) — CreatureEventAI.h ACTION_T_* ----
375
+
376
+ /** ACTION_T_SET_FACTION — CreatureEventAI.h ~93; ProcessAction ~730–737. factionId, factionFlags. */
377
+ export const ACTION_T_SET_FACTION = 2;
378
+ /** ACTION_T_MORPH_TO_ENTRY_OR_MODEL — ~94; ProcessAction ~739–758. creatureId OR modelId. */
379
+ export const ACTION_T_MORPH_TO_ENTRY_OR_MODEL = 3;
380
+ /** ACTION_T_RANDOM_SOUND — ~100; ProcessAction ~766–771. soundId1..3. */
381
+ export const ACTION_T_RANDOM_SOUND = 9;
382
+ /** ACTION_T_RANDOM_EMOTE — ~101; ProcessAction ~773–778. emoteId1..3. */
383
+ export const ACTION_T_RANDOM_EMOTE = 10;
384
+ /** ACTION_T_THREAT_SINGLE — ~104; ProcessAction ~828–837. value, target, isDirect. */
385
+ export const ACTION_T_THREAT_SINGLE = 13;
386
+ /** ACTION_T_THREAT_ALL_PCT — ~105; ProcessAction ~839–845. percent. */
387
+ export const ACTION_T_THREAT_ALL_PCT = 14;
388
+ /** ACTION_T_QUEST_EVENT — ~106; ProcessAction ~847–862. questId, target, rewardGroup. */
389
+ export const ACTION_T_QUEST_EVENT = 15;
390
+ /** ACTION_T_SET_UNIT_FIELD — ~108; ProcessAction ~873–886. field, value, target. */
391
+ export const ACTION_T_SET_UNIT_FIELD = 17;
392
+ /** ACTION_T_SET_UNIT_FLAG — ~109; ProcessAction ~888–892. flag mask, target. */
393
+ export const ACTION_T_SET_UNIT_FLAG = 18;
394
+ /** ACTION_T_REMOVE_UNIT_FLAG — ~110; ProcessAction ~894–898. flag mask, target. */
395
+ export const ACTION_T_REMOVE_UNIT_FLAG = 19;
396
+ /** ACTION_T_COMBAT_MOVEMENT — ~112; ProcessAction ~903–917. state, melee. */
397
+ export const ACTION_T_COMBAT_MOVEMENT = 21;
398
+ /** ACTION_T_EVADE — ~115; ProcessAction ~942–946. combatOnly. */
399
+ export const ACTION_T_EVADE = 24;
400
+ /** ACTION_T_RANDOM_PHASE — ~121; ProcessAction ~991–993. phase1..3. */
401
+ export const ACTION_T_RANDOM_PHASE = 30;
402
+ /** ACTION_T_RANDOM_PHASE_RANGE — ~122; ProcessAction ~995–999. phaseMin, phaseMax. */
403
+ export const ACTION_T_RANDOM_PHASE_RANGE = 31;
404
+ /** ACTION_T_DIE — ~128; ProcessAction ~1085–1093. Suicide(). */
405
+ export const ACTION_T_DIE = 37;
406
+ /** ACTION_T_ZONE_COMBAT_PULSE — ~129; ProcessAction ~1095–1100. SetInCombatWithZone. */
407
+ export const ACTION_T_ZONE_COMBAT_PULSE = 38;
408
+ /** ACTION_T_SET_SHEATH — ~131; ProcessAction ~1107–1109. sheath state. */
409
+ export const ACTION_T_SET_SHEATH = 40;
410
+ /** ACTION_T_MOUNT_TO_ENTRY_OR_MODEL — ~134; ProcessAction ~1122–1138. entry OR modelId. */
411
+ export const ACTION_T_MOUNT_TO_ENTRY_OR_MODEL = 43;
412
+ /** ACTION_T_CHANGE_MOVEMENT — ~139; ProcessAction ~1162–1204. movementType, wander/path, flags. */
413
+ export const ACTION_T_CHANGE_MOVEMENT = 48;
414
+ /** ACTION_T_SET_WALK — ~149; ProcessAction ~1331–1338. walkSetting type. */
415
+ export const ACTION_T_SET_WALK = 58;
416
+ /** ACTION_T_SET_IMMOBILIZED_STATE — ~152; ProcessAction ~1345–1348. apply, combatOnly. */
417
+ export const ACTION_T_SET_IMMOBILIZED_STATE = 61;
418
+
419
+ /** GetRandActionParam — pick param1/2/3 via rnd%3. Cite: CreatureEventAI.cpp ~1688–1697. */
420
+ export function getRandActionParam(rnd: number, param1: number, param2: number, param3: number): number {
421
+ switch (((rnd % 3) + 3) % 3) {
422
+ case 0:
423
+ return param1;
424
+ case 1:
425
+ return param2;
426
+ case 2:
427
+ return param3;
428
+ default:
429
+ return 0;
430
+ }
431
+ }
432
+
433
+ // RANDOM_PHASE_RANGE: phase = rnd % (max-min+1) + min when max > min. Cite: CreatureEventAI.cpp ~995–999.
434
+ export function randomPhaseInRange(rnd: number, phaseMin: number, phaseMax: number): number | null {
435
+ const lo = phaseMin | 0;
436
+ const hi = phaseMax | 0;
437
+ if (hi <= lo) return null;
438
+ const span = hi - lo + 1;
439
+ return (Math.abs(rnd | 0) % span) + lo;
440
+ }
441
+
442
+ /** UnitAI.h ReactStates — REACT_PASSIVE/DEFENSIVE/AGGRESSIVE. */
443
+ export const REACT_STATE = {
444
+ PASSIVE: 0,
445
+ DEFENSIVE: 1,
446
+ AGGRESSIVE: 2,
447
+ } as const;
448
+
449
+ /** SheathState — SharedDefines / Unit. Cite: ACTION_T_SET_SHEATH ~1107–1109. */
450
+ export const SHEATH_STATE = {
451
+ UNARMED: 0,
452
+ MELEE: 1,
453
+ RANGED: 2,
454
+ } as const;
455
+
456
+ /** Walk setting for ACTION_T_SET_WALK. Cite: CreatureEventAI.h walkSetting. */
457
+ export const WALK_SETTING = {
458
+ WALK_DEFAULT: 0,
459
+ RUN_DEFAULT: 1,
460
+ WALK_CHASE: 2,
461
+ RUN_CHASE: 3,
462
+ } as const;
463
+
464
+ // Classic unit field indices used by SET_UNIT_FIELD rows in the bake. Cite: UpdateFields.h
465
+ // OBJECT_END=6; UNIT_NPC_FLAGS=147; UNIT_FIELD_POWER1=23; UNIT_FIELD_FLAGS=46.
466
+ export const UNIT_FIELD = {
467
+ POWER1: 23,
468
+ FLAGS: 46,
469
+ DISPLAYID: 131,
470
+ MOUNTDISPLAYID: 133,
471
+ NPC_FLAGS: 147,
472
+ } as const;
473
+
474
+ /** UnitAI.h RangeModeType TYPE_NONE = 0 (disables ranged mode). */
475
+ export const RANGE_MODE_TYPE_NONE = 0;
476
+
477
+ // CONFIG_UINT32_CREATURE_FAMILY_FLEE_DELAY — World.cpp ~662, mangosd.conf CreatureFamilyFleeDelay = 10000
478
+ // (ms). Used when DoFlee(duration=0). Cite: UnitAI.cpp DoFlee ~829–832.
479
+ export const CREATURE_FAMILY_FLEE_DELAY_MS = 10_000;
480
+
481
+ /** EFLAG_REPEATABLE — CreatureEventAI.h EventFlags ~201 */
482
+ export const EFLAG_REPEATABLE = 0x01;
483
+ /** EFLAG_RANDOM_ACTION — execute ONE random action per firing, not all. CreatureEventAI.h:206 */
484
+ export const EFLAG_RANDOM_ACTION = 0x20;
485
+
486
+ // creature_spell_list.Flags. Cite: CreatureSpellList.h:58-64 enum SpellListFlags. Measured on the
487
+ // 511 rows of the 238 armed lists: SUPPORT_ACTION 5, RANGED_ACTION 72, CATEGORY_COOLDOWN 4.
488
+ export const SPELL_LIST_FLAG = {
489
+ /** Gated on the list's ChanceSupportAction, one roll per update. UnitAI.cpp:1214. */
490
+ SUPPORT_ACTION: 1,
491
+ /** Gated on ChanceRangedAttack (base ranged, -50 in melee) AND is a main spell. UnitAI.cpp:1227, :1174. */
492
+ RANGED_ACTION: 2,
493
+ /** Imposes the category cooldown instead of the normal one. Creature.cpp:1553. */
494
+ CATEGORY_COOLDOWN: 4,
495
+ /** Cast outside the one-action roll. UnitAI.cpp:1265-1269. */
496
+ NON_BLOCKING: 8,
497
+ } as const;
498
+
499
+ export const CAST_FLAG = {
500
+ /** Interrupt any non-melee spell before casting. UnitAI.cpp ~205–206. */
501
+ INTERRUPT_PREVIOUS: 0x01,
502
+ /** Zero mana cost + no cast time (TRIGGERED_OLD_TRIGGERED). UnitAI.cpp ~214. */
503
+ TRIGGERED: 0x02,
504
+ /** Skip CanCastSpell (OOM / OOR). UnitAI.cpp ~196–202. */
505
+ FORCE_CAST: 0x04,
506
+ // Prevent entering melee when OOM/OOR (header only; no separate C++ body beyond ranged-mode
507
+ // keep-distance). UnitAI.h ~69.
508
+ NO_MELEE_IF_OOM: 0x08,
509
+ /** Forces the target to cast this spell on itself (caster=target). UnitAI.cpp ~169–170. */
510
+ FORCE_TARGET_SELF: 0x10,
511
+ /** Only cast if the target does not already have this spell's aura. UnitAI.cpp ~184–192. */
512
+ AURA_NOT_PRESENT: 0x20,
513
+ /** Can target UNIT_FLAG_UNINTERACTIBLE. UnitAI.cpp ~214 TRIGGERED_IGNORE_UNSELECTABLE_FLAG. */
514
+ IGNORE_UNSELECTABLE: 0x40,
515
+ /** Swaps target and caster for the cast. UnitAI.cpp ~167–168. */
516
+ SWITCH_CASTER_TARGET: 0x80,
517
+ /** Marks main (often ranged) spell — pace like primary attack. UnitAI.h ~74. */
518
+ MAIN_SPELL: 0x100,
519
+ /** Selects only player targets. CreatureEventAI.cpp ~790–791 SELECT_FLAG_PLAYER. */
520
+ PLAYER_ONLY: 0x200,
521
+ /** Cache distance-yourself spell (chase away). CreatureEventAI.cpp ~144–145. */
522
+ DISTANCE_YOURSELF: 0x400,
523
+ /** Selects only casting targets. CreatureEventAI.cpp ~794–795 SELECT_FLAG_CASTING. */
524
+ TARGET_CASTING: 0x800,
525
+ /** Targets coords only. UnitAI.cpp ~220–221. */
526
+ ONLY_XYZ: 0x1000,
527
+ } as const;
528
+
529
+ /** Every CAST_FLAG bit value (for bake sweeps). */
530
+ export const CAST_FLAG_BITS: readonly number[] = [
531
+ CAST_FLAG.INTERRUPT_PREVIOUS,
532
+ CAST_FLAG.TRIGGERED,
533
+ CAST_FLAG.FORCE_CAST,
534
+ CAST_FLAG.NO_MELEE_IF_OOM,
535
+ CAST_FLAG.FORCE_TARGET_SELF,
536
+ CAST_FLAG.AURA_NOT_PRESENT,
537
+ CAST_FLAG.IGNORE_UNSELECTABLE,
538
+ CAST_FLAG.SWITCH_CASTER_TARGET,
539
+ CAST_FLAG.MAIN_SPELL,
540
+ CAST_FLAG.PLAYER_ONLY,
541
+ CAST_FLAG.DISTANCE_YOURSELF,
542
+ CAST_FLAG.TARGET_CASTING,
543
+ CAST_FLAG.ONLY_XYZ,
544
+ ];
545
+
546
+ // School / mechanic index for immune masks
547
+
548
+ /** SharedDefines.h SpellSchools — SchoolImmuneMask uses (1 << school). */
549
+ export const SCHOOL_INDEX: Record<School, number> = {
550
+ physical: 0,
551
+ holy: 1,
552
+ fire: 2,
553
+ nature: 3,
554
+ frost: 4,
555
+ shadow: 5,
556
+ arcane: 6,
557
+ };
558
+
559
+ /** The same table read the other way, for creature_template.DamageSchool. */
560
+ export const SCHOOL_BY_INDEX: readonly School[] = [
561
+ 'physical', 'holy', 'fire', 'nature', 'frost', 'shadow', 'arcane',
562
+ ];
563
+
564
+ // Creature::SetMeleeDamageSchool — a non-zero DamageSchool makes white hits magical (100 of
565
+ // 10,384: 41 fire, 25 frost, 14 nature, 13 shadow, 7 arcane). 0 or out of range is physical.
566
+ export function meleeDamageSchoolOf(damageSchool: number | undefined | null): School {
567
+ return SCHOOL_BY_INDEX[(damageSchool ?? 0) | 0] ?? 'physical';
568
+ }
569
+
570
+ // SharedDefines.h Mechanics (1-based). MechanicImmuneMask uses (1 << (mechanic - 1)). Full enum — every
571
+ // bakeable mechanic name resolves to an id for immunity masks. Cite: SharedDefines.h:351–384.
572
+ export const MECHANIC_ID: Partial<Record<Mechanic, number>> = {
573
+ charm: 1,
574
+ disoriented: 2,
575
+ disarm: 3,
576
+ distract: 4,
577
+ fear: 5,
578
+ fumble: 6,
579
+ root: 7,
580
+ pacify: 8,
581
+ silence: 9,
582
+ sleep: 10,
583
+ snare: 11,
584
+ stun: 12,
585
+ freeze: 13,
586
+ knockout: 14,
587
+ bleed: 15,
588
+ bandage: 16,
589
+ polymorph: 17,
590
+ banish: 18,
591
+ shield: 19,
592
+ shackle: 20,
593
+ mount: 21,
594
+ persuade: 22,
595
+ turn: 23,
596
+ horror: 24,
597
+ invulnerability: 25,
598
+ interrupt: 26,
599
+ daze: 27,
600
+ discovery: 28,
601
+ immune_shield: 29,
602
+ sap: 30, // MECHANIC_SAPPED
603
+ };
604
+
605
+ // School / mechanic immunity — Creature::IsImmuneToSpell ~1972–1986
606
+
607
+ export function isSchoolImmune(
608
+ schoolImmuneMask: number | undefined | null,
609
+ school: School,
610
+ ): boolean {
611
+ const mask = schoolImmuneMask ?? 0;
612
+ if (!mask) return false;
613
+ const idx = SCHOOL_INDEX[school];
614
+ if (idx == null) return false;
615
+ return (mask & (1 << idx)) !== 0;
616
+ }
617
+
618
+ // SPELL_AURA_MOD_MECHANIC_RESISTANCE total for a spell: the max over spell.Mechanic and each
619
+ // effect mechanic, taken as a union so one stun cannot count twice. Cite: Unit.cpp:4015.
620
+ export function mechanicResistBonus(
621
+ mechanicResistPct: Partial<Record<number, number>> | undefined,
622
+ names: readonly (string | undefined | null)[],
623
+ ): number {
624
+ if (!mechanicResistPct) return 0;
625
+ let best = 0;
626
+ for (const name of names) {
627
+ if (!name || name === 'none') continue;
628
+ const id = MECHANIC_ID[name as Mechanic] ?? 0;
629
+ const bonus = id ? (mechanicResistPct[id] ?? 0) : 0;
630
+ if (bonus > best) best = bonus;
631
+ }
632
+ return best;
633
+ }
634
+
635
+ export function isMechanicImmune(
636
+ mechanicImmuneMask: number | undefined | null,
637
+ mechanic: Mechanic | undefined | null,
638
+ ): boolean {
639
+ const mask = mechanicImmuneMask ?? 0;
640
+ if (!mask || !mechanic || mechanic === 'none') return false;
641
+ const id = MECHANIC_ID[mechanic];
642
+ if (id == null || id <= 0) return false;
643
+ return (mask & (1 << (id - 1))) !== 0;
644
+ }
645
+
646
+ // Creature::IsImmuneToSpell for the castOnSelf=false path: the creature_immunities dispel set
647
+ // first, then mechanic or school mask. Effect-level mechanics are checked when applying CC.
648
+ export function isCreatureImmuneToSpell(
649
+ masks:
650
+ | { schoolImmuneMask?: number; mechanicImmuneMask?: number; immunities?: { dispelMask?: number } }
651
+ | undefined
652
+ | null,
653
+ spell: Pick<SpellDef, 'school' | 'mechanic'> & { dispel?: number | null },
654
+ ): boolean {
655
+ if (!masks) return false;
656
+ const dispel = spell.dispel ?? 0;
657
+ if (dispel > 0 && (((masks.immunities?.dispelMask ?? 0) & (1 << dispel)) !== 0)) return true;
658
+ if (isSchoolImmune(masks.schoolImmuneMask, spell.school)) return true;
659
+ if (isMechanicImmune(masks.mechanicImmuneMask, spell.mechanic)) return true;
660
+ return false;
661
+ }