azeroth-shell 0.0.0-stage → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +35 -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 +144 -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,149 @@
1
+ // QI4 — sunken_templeScripts residual, extracted for the 1500-line ratchet: the Shade of Eranikus
2
+ // areatrigger, gated on quest 8555 being rewarded. Cite: sunken_temple/sunken_templeScripts.cpp.
3
+
4
+ import type { DbScriptIntent } from './types.ts';
5
+ import { TEMPSPAWN_DEAD_DESPAWN } from './opcodes.ts';
6
+
7
+ /** Matches registry.ts QuestScriptHook — local to avoid circular import. */
8
+ type QuestScriptHook = 'accept' | 'reward' | 'complete' | 'frame';
9
+
10
+ // ── sourced constants ────────────────────────────────────────────────────────
11
+
12
+ // Cite: sunken_templeScripts.cpp:40 QUEST_THE_CHARGE_OF_DRAGONFLIGHTS = 8555 — the pre-quest gate
13
+ // for the Shade of Eranikus trigger. The bake has Anachronos 15192 on both ends, prevQuest 8519.
14
+ export const QUEST_THE_CHARGE_OF_DRAGONFLIGHTS = 8555;
15
+ // Cite: sunken_templeScripts.cpp:41 QUEST_ERANIKUS_TYRANT_OF_DREAMS = 8733, accepted from Malfurion
16
+ // after the summon. Not in the Phonecraft bake — kept for whole-chain mapping only.
17
+ const QUEST_ERANIKUS_TYRANT_OF_DREAMS = 8733;
18
+ // Cite: sunken_temple.h:17 TYPE_MALFURION = 3 Instance encounter slot set IN_PROGRESS when Malfurion is
19
+ // summoned.
20
+ const TYPE_MALFURION = 3;
21
+ // Cite: sc_instance.h:15 IN_PROGRESS = 1 EncounterState written by SetData(TYPE_MALFURION, IN_PROGRESS).
22
+ const ENCOUNTER_IN_PROGRESS = 1;
23
+ // Cite: sunken_temple.h:42 NPC_MALFURION = 15362 Summoned by AreaTrigger_at_shade_of_eranikus when 8555 is
24
+ // rewarded.
25
+ const NPC_MALFURION = 15362;
26
+ // Cite: sunken_temple.h:99–104 aSunkenTempleLocation[2] Malfurion summon loc { -660.5277f, -16.7117f,
27
+ // -90.8357f, 1.6055f }
28
+ const MALFURION_SPAWN = {
29
+ x: -660.5277,
30
+ y: -16.7117,
31
+ z: -90.8357,
32
+ o: 1.6055,
33
+ } as const;
34
+ // Cite: sunken_templeScripts.cpp:55 — SummonCreature(NPC_MALFURION, …, TEMPSPAWN_DEAD_DESPAWN, 0),
35
+ // which opcodes.ts spells TEMPSPAWN_DEAD_DESPAWN = 1 (Object.h:44).
36
+ const MALFURION_SPAWN_TYPE = TEMPSPAWN_DEAD_DESPAWN;
37
+ // Cite: sunken_temple.h:76 SPELL_SPIRIT_SPAWN_IN = 17321 npc_malfurionAI ctor DoCastSpellIfCan on spawn.
38
+ const SPELL_SPIRIT_SPAWN_IN = 17321;
39
+ /** Cite: sunken_templeScripts.cpp:69 EMOTE_MALFURION1 = -1109000 DoScriptText on dungeon spawn (ctor). */
40
+ const EMOTE_MALFURION1 = -1109000;
41
+ // Cite: sunken_templeScripts.cpp:70–73 SAY_MALFURION1–4 Speech sequence before SetFlag QUESTGIVER (UpdateAI
42
+ // cases 1–4).
43
+ const SAY_MALFURION1 = -1109001;
44
+ const SAY_MALFURION2 = -1109002;
45
+ const SAY_MALFURION3 = -1109003;
46
+ const SAY_MALFURION4 = -1109004;
47
+ // Cite: Unit.h:511 UNIT_NPC_FLAG_QUESTGIVER = 0x00000002 Ctor removes QUESTGIVER; speech case 5 restores it
48
+ // so 8733 can be accepted.
49
+ const UNIT_NPC_FLAG_QUESTGIVER = 0x00000002;
50
+
51
+ // AreaTrigger_at_shade_of_eranikus — with 8555 rewarded, 8733 not, and TYPE_MALFURION idle, summon
52
+ // Malfurion and mark it IN_PROGRESS; his speech then flags him a questgiver. Cite: :44–61, :78–143.
53
+ function runShadeOfEranikusAt(): DbScriptIntent[] {
54
+ const citeAt =
55
+ 'sunken_templeScripts.cpp:44–61 AreaTrigger_at_shade_of_eranikus ' +
56
+ `GetQuestRewardStatus(${QUEST_THE_CHARGE_OF_DRAGONFLIGHTS}) gate`;
57
+ const citeSpawn =
58
+ `sunken_templeScripts.cpp:55 SummonCreature(NPC_MALFURION=${NPC_MALFURION}, ` +
59
+ `aSunkenTempleLocation[2]=(${MALFURION_SPAWN.x},${MALFURION_SPAWN.y},${MALFURION_SPAWN.z},${MALFURION_SPAWN.o}), ` +
60
+ `TEMPSPAWN_DEAD_DESPAWN, 0)`;
61
+ const citeSet =
62
+ `sunken_templeScripts.cpp:56 SetData(TYPE_MALFURION=${TYPE_MALFURION}, IN_PROGRESS=${ENCOUNTER_IN_PROGRESS})`;
63
+ const citeCtor =
64
+ `sunken_templeScripts.cpp:86–92 npc_malfurionAI ctor: DoScriptText(EMOTE_MALFURION1=${EMOTE_MALFURION1}) ` +
65
+ `+ DoCastSpellIfCan(SPELL_SPIRIT_SPAWN_IN=${SPELL_SPIRIT_SPAWN_IN}) + RemoveFlag(QUESTGIVER)`;
66
+ const citeSpeech =
67
+ `sunken_templeScripts.cpp:98–143 UpdateAI speech 0–5 SAY_MALFURION1–4 ` +
68
+ `(${SAY_MALFURION1}…${SAY_MALFURION4}) then SetFlag(UNIT_NPC_FLAG_QUESTGIVER) - FO6 timer`;
69
+ const citeFollowUp =
70
+ `sunken_templeScripts.cpp:41 QUEST_ERANIKUS_TYRANT_OF_DREAMS=${QUEST_ERANIKUS_TYRANT_OF_DREAMS} ` +
71
+ 'accept from Malfurion after speech - bake gap FO6';
72
+ return [
73
+ {
74
+ kind: 'skip',
75
+ reason:
76
+ `AT Shade of Eranikus requires rewarded ${QUEST_THE_CHARGE_OF_DRAGONFLIGHTS} ` +
77
+ `and incomplete/unrewarded ${QUEST_ERANIKUS_TYRANT_OF_DREAMS} + TYPE_MALFURION != IN_PROGRESS`,
78
+ cite: citeAt,
79
+ },
80
+ {
81
+ kind: 'temp_spawn_creature',
82
+ creatureEntry: NPC_MALFURION,
83
+ x: MALFURION_SPAWN.x,
84
+ y: MALFURION_SPAWN.y,
85
+ z: MALFURION_SPAWN.z,
86
+ o: MALFURION_SPAWN.o,
87
+ despawnDelay: 0,
88
+ pathId: 0,
89
+ setRun: false,
90
+ summonActive: false,
91
+ spawnDataEntry: 0,
92
+ spawnType: MALFURION_SPAWN_TYPE,
93
+ cite: citeSpawn,
94
+ },
95
+ {
96
+ kind: 'set_instance_data',
97
+ type: TYPE_MALFURION,
98
+ data: ENCOUNTER_IN_PROGRESS,
99
+ cite: citeSet,
100
+ },
101
+ {
102
+ kind: 'cast_spell',
103
+ spellId: SPELL_SPIRIT_SPAWN_IN,
104
+ castFlags: 0,
105
+ sourceIsGo: false,
106
+ targetCleared: false,
107
+ cite: citeCtor,
108
+ },
109
+ {
110
+ kind: 'talk',
111
+ textId: EMOTE_MALFURION1,
112
+ stringTemplateId: 0,
113
+ cite: citeCtor,
114
+ },
115
+ {
116
+ kind: 'skip',
117
+ reason:
118
+ `npc_malfurionAI ctor RemoveFlag(UNIT_NPC_FLAG_QUESTGIVER=${UNIT_NPC_FLAG_QUESTGIVER}) on summon - host NPC flags`,
119
+ cite: citeCtor,
120
+ },
121
+ {
122
+ kind: 'skip',
123
+ reason:
124
+ 'Malfurion speech timers (bow + SAY1–4) then SetFlag QUESTGIVER - FO6 timed AI',
125
+ cite: citeSpeech,
126
+ },
127
+ {
128
+ kind: 'skip',
129
+ reason:
130
+ `follow-up accept QUEST_ERANIKUS_TYRANT_OF_DREAMS (${QUEST_ERANIKUS_TYRANT_OF_DREAMS}) from Malfurion - bake gap FO6`,
131
+ cite: citeFollowUp,
132
+ },
133
+ ];
134
+ }
135
+
136
+ // Family pack: sunken_temple/sunken_templeScripts.cpp. Only the Shade of Eranikus areatrigger,
137
+ // gated on 8555 being rewarded — this file has no accept or reward hook.
138
+ export function runSunkenTempleScripts(
139
+ phase: QuestScriptHook,
140
+ questId: number,
141
+ ): DbScriptIntent[] {
142
+ if (
143
+ (phase === 'frame' || phase === 'complete') &&
144
+ questId === QUEST_THE_CHARGE_OF_DRAGONFLIGHTS
145
+ ) {
146
+ return runShadeOfEranikusAt();
147
+ }
148
+ return [];
149
+ }
@@ -0,0 +1,163 @@
1
+ // QI4 — eastern_kingdoms/swamp_of_sorrows residual, extracted for the 1500-line ratchet. It claims
2
+ // the accept hook for quest 1393 only. Cite: eastern_kingdoms/swamp_of_sorrows.cpp.
3
+
4
+ import type { DbScriptIntent } from './types.ts';
5
+
6
+ /** Matches registry.ts QuestScriptHook — local to avoid circular import. */
7
+ type QuestScriptHook = 'accept' | 'reward' | 'complete' | 'frame';
8
+
9
+ // ── sourced constants ────────────────────────────────────────────────────────
10
+
11
+ // Cite: swamp_of_sorrows.cpp:39 QUEST_GALENS_ESCAPE = 1393 Escort Galen Goodward out of his cage, then open
12
+ // his strongbox camp.
13
+ export const QUEST_GALENS_ESCAPE = 1393;
14
+ // Cite: scriptdev2.sql ScriptName='npc_galen_goodward' WHERE entry=5391; bake starterCreatureEntries for
15
+ // quest 1393.
16
+ const NPC_GALEN_GOODWARD = 5391;
17
+ // Cite: swamp_of_sorrows.cpp:41 GO_GALENS_CAGE = 37118 WaypointStart point 1 opens nearest cage via
18
+ // UseDoorOrButton; WP1 reached resets it.
19
+ const GO_GALENS_CAGE = 37118;
20
+ // Cite: swamp_of_sorrows.cpp:44 SAY_QUEST_ACCEPTED = -1000583 DoScriptText on accept
21
+ // (QuestAccept_npc_galen_goodward).
22
+ const SAY_QUEST_ACCEPTED = -1000583;
23
+ // Cite: swamp_of_sorrows.cpp:43 SAY_PERIODIC = -1000582 UpdateEscortAI when STATE_ESCORT_NONE — idle FO6
24
+ // (not accept-hook).
25
+ const SAY_PERIODIC = -1000582;
26
+ // Cite: swamp_of_sorrows.cpp:45–46 SAY_ATTACKED_1/2 = -1000584 / -1000585 Aggro while escorting — combat
27
+ // FO6 (urand branch not ported as RNG).
28
+ const SAY_ATTACKED_1 = -1000584;
29
+ const SAY_ATTACKED_2 = -1000585;
30
+ // Cite: swamp_of_sorrows.cpp:47 SAY_QUEST_COMPLETE = -1000586 WaypointReached WP21 DoScriptText before
31
+ // explore credit.
32
+ const SAY_QUEST_COMPLETE = -1000586;
33
+ // Cite: swamp_of_sorrows.cpp:48 EMOTE_WHISPER = -1000587 WaypointReached WP21 DoScriptText (strongbox
34
+ // secret whisper).
35
+ const EMOTE_WHISPER = -1000587;
36
+ // Cite: swamp_of_sorrows.cpp:49 EMOTE_DISAPPEAR = -1000588 WaypointReached WP22 DoScriptText before
37
+ // ForcedDespawn at WP23.
38
+ const EMOTE_DISAPPEAR = -1000588;
39
+ // Cite: ScriptDevAIMgr.h:50 FACTION_ESCORT_N_NEUTRAL_ACTIVE = 250 QuestAccept SetFactionTemporary on Galen
40
+ // escort start.
41
+ const FACTION_ESCORT_N_NEUTRAL_ACTIVE = 250;
42
+ /** Cite: Creature.h:577 TEMPFACTION_RESTORE_RESPAWN = 0x01 */
43
+ const TEMPFACTION_RESTORE_RESPAWN = 0x01;
44
+ /** Cite: Creature.h:582 TEMPFACTION_TOGGLE_IMMUNE_TO_NPC = 0x20 */
45
+ const TEMPFACTION_TOGGLE_IMMUNE_TO_NPC = 0x20;
46
+ // Cite: swamp_of_sorrows.cpp:147 TEMPFACTION_RESTORE_RESPAWN | TEMPFACTION_TOGGLE_IMMUNE_TO_NPC = 0x01 |
47
+ // 0x20 = 0x21
48
+ const GALEN_TEMP_FACTION_FLAGS =
49
+ TEMPFACTION_RESTORE_RESPAWN | TEMPFACTION_TOGGLE_IMMUNE_TO_NPC;
50
+ // Cite: swamp_of_sorrows.cpp:61 m_periodicSay = 6000 Idle periodic say interval (ms) while not escorting —
51
+ // FO6 timer.
52
+ const GALEN_PERIODIC_SAY_MS = 6000;
53
+ /** Cite: swamp_of_sorrows.cpp:113 ForcedDespawn(1000) WP23 despawn delay after pause. */
54
+ const GALEN_DESPAWN_MS = 1000;
55
+ // Cite: bake goEnderEntries / classic-db quest 1393 ender Galen's Strongbox (GO 32569) — camp north of
56
+ // Stonard after escort credit.
57
+ const GO_GALENS_STRONGBOX = 32569;
58
+
59
+ // QuestAccept_npc_galen_goodward — quest 1393 Galen's Escape: temporary faction, the accept line
60
+ // and an escort that opens his cage at WP1; WP21 credits. Cite: swamp_of_sorrows.cpp:139–152.
61
+ function runGalenGoodwardAccept(): DbScriptIntent[] {
62
+ const citeEscort =
63
+ `swamp_of_sorrows.cpp:146 npc_galen_goodward (${NPC_GALEN_GOODWARD}) ` +
64
+ 'npc_escortAI::Start(false, player, quest) - FO6 degraded finishEscort';
65
+ const citeFaction =
66
+ 'swamp_of_sorrows.cpp:147 SetFactionTemporary(FACTION_ESCORT_N_NEUTRAL_ACTIVE, ' +
67
+ 'TEMPFACTION_RESTORE_RESPAWN | TEMPFACTION_TOGGLE_IMMUNE_TO_NPC)';
68
+ const citeTalk =
69
+ `swamp_of_sorrows.cpp:148 DoScriptText(SAY_QUEST_ACCEPTED=${SAY_QUEST_ACCEPTED})`;
70
+ const citeCage =
71
+ `swamp_of_sorrows.cpp:72–85 WaypointStart WP1 GetClosestGameObjectWithEntry(` +
72
+ `GO_GALENS_CAGE=${GO_GALENS_CAGE}) UseDoorOrButton; WP1 reached ResetDoorOrButton - FO6 WP`;
73
+ const citeRun =
74
+ 'swamp_of_sorrows.cpp:97–98 WP20 SetRun(true) - FO6 waypoint';
75
+ const citeCredit =
76
+ `swamp_of_sorrows.cpp:100–106 WP21 DoScriptText(SAY_QUEST_COMPLETE=${SAY_QUEST_COMPLETE}) + ` +
77
+ `DoScriptText(EMOTE_WHISPER=${EMOTE_WHISPER}) + RewardPlayerAndGroupAtEventExplored(1393) - FO6 finishEscort`;
78
+ const citeDespawn =
79
+ `swamp_of_sorrows.cpp:108–114 WP22 EMOTE_DISAPPEAR=${EMOTE_DISAPPEAR}; ` +
80
+ `WP23 SetEscortPaused + ForcedDespawn(${GALEN_DESPAWN_MS}) - FO6 WP`;
81
+ const citeAggro =
82
+ `swamp_of_sorrows.cpp:64–67 Aggro while escorting DoScriptText(urand SAY_ATTACKED_1=${SAY_ATTACKED_1} / ` +
83
+ `SAY_ATTACKED_2=${SAY_ATTACKED_2}) - FO6 combat`;
84
+ const citePeriodic =
85
+ `swamp_of_sorrows.cpp:123–128 idle STATE_ESCORT_NONE DoScriptText(SAY_PERIODIC=${SAY_PERIODIC}) ` +
86
+ `every ${GALEN_PERIODIC_SAY_MS}ms - FO6 idle`;
87
+ const citeEnder =
88
+ `bake goEnderEntries GO_GALENS_STRONGBOX=${GO_GALENS_STRONGBOX} after WP21 explore credit`;
89
+ return [
90
+ {
91
+ kind: 'skip',
92
+ reason:
93
+ `escort Start(false, player, quest) npc_galen_goodward (${NPC_GALEN_GOODWARD}) - FO6 degraded finishEscort`,
94
+ cite: citeEscort,
95
+ },
96
+ {
97
+ kind: 'set_faction',
98
+ factionId: FACTION_ESCORT_N_NEUTRAL_ACTIVE,
99
+ flags: GALEN_TEMP_FACTION_FLAGS,
100
+ cleared: false,
101
+ cite: citeFaction,
102
+ },
103
+ {
104
+ kind: 'talk',
105
+ textId: SAY_QUEST_ACCEPTED,
106
+ stringTemplateId: 0,
107
+ cite: citeTalk,
108
+ },
109
+ {
110
+ kind: 'skip',
111
+ reason:
112
+ `WP1 UseDoorOrButton / ResetDoorOrButton GO_GALENS_CAGE (${GO_GALENS_CAGE}) - FO6 waypoint`,
113
+ cite: citeCage,
114
+ },
115
+ {
116
+ kind: 'skip',
117
+ reason: 'WP20 SetRun(true) - FO6 waypoint',
118
+ cite: citeRun,
119
+ },
120
+ {
121
+ kind: 'skip',
122
+ reason:
123
+ `WP21 SAY_QUEST_COMPLETE (${SAY_QUEST_COMPLETE}) + EMOTE_WHISPER (${EMOTE_WHISPER}) + ` +
124
+ 'RewardPlayerAndGroupAtEventExplored(1393) - FO6 finishEscort',
125
+ cite: citeCredit,
126
+ },
127
+ {
128
+ kind: 'skip',
129
+ reason:
130
+ `WP22 EMOTE_DISAPPEAR (${EMOTE_DISAPPEAR}) + WP23 ForcedDespawn(${GALEN_DESPAWN_MS}) - FO6`,
131
+ cite: citeDespawn,
132
+ },
133
+ {
134
+ kind: 'skip',
135
+ reason:
136
+ `Aggro SAY_ATTACKED_1/2 (${SAY_ATTACKED_1}/${SAY_ATTACKED_2}) while escorting - FO6 combat`,
137
+ cite: citeAggro,
138
+ },
139
+ {
140
+ kind: 'skip',
141
+ reason:
142
+ `idle SAY_PERIODIC (${SAY_PERIODIC}) every ${GALEN_PERIODIC_SAY_MS}ms - FO6`,
143
+ cite: citePeriodic,
144
+ },
145
+ {
146
+ kind: 'skip',
147
+ reason:
148
+ `turn-in Galen's Strongbox GO (${GO_GALENS_STRONGBOX}) after explore credit - host GO ender`,
149
+ cite: citeEnder,
150
+ },
151
+ ];
152
+ }
153
+
154
+ // Family pack: eastern_kingdoms/swamp_of_sorrows.cpp Hooks: pQuestAcceptNPC QuestAccept_npc_galen_goodward
155
+ // (1393).
156
+ export function runSwampOfSorrows(
157
+ phase: QuestScriptHook,
158
+ questId: number,
159
+ ): DbScriptIntent[] {
160
+ if (phase !== 'accept') return [];
161
+ if (questId === QUEST_GALENS_ESCAPE) return runGalenGoodwardAccept();
162
+ return [];
163
+ }
@@ -0,0 +1,318 @@
1
+ // QI4 — kalimdor/tanaris residuals, extracted for the 1500-line ratchet. This batch claims the
2
+ // accept hooks for quests 648 and 1560; mob_aquementas is combat residual. Cite: kalimdor/tanaris.cpp.
3
+
4
+ import type { DbScriptIntent } from './types.ts';
5
+ import { UNIT_STAND_STATE_STAND } from './opcodes.ts';
6
+
7
+ /** Matches registry.ts QuestScriptHook — local to avoid circular import. */
8
+ type QuestScriptHook = 'accept' | 'reward' | 'complete' | 'frame';
9
+
10
+ /** Minimal registry entry shape (mirrors registry.ts QuestScriptEntry). */
11
+ export interface TanarisQuestScriptEntry {
12
+ family?: string;
13
+ questId?: number;
14
+ questIds?: number[];
15
+ hooks?: QuestScriptHook[];
16
+ run?: (phase: QuestScriptHook, questId: number) => DbScriptIntent[];
17
+ cite?: string;
18
+ }
19
+
20
+ // ── sourced constants ────────────────────────────────────────────────────────
21
+
22
+ /** Cite: tanaris.cpp:148 QUEST_RESCUE_OOX_17TN = 648 Escort Homing Robot OOX-17/TN; WP35 explore credit. */
23
+ export const QUEST_RESCUE_OOX_17TN = 648;
24
+ /** Cite: tanaris.cpp:265 QUEST_TOOGA = 1560 FollowerAI Tooga → Torta LOS explore credit. */
25
+ export const QUEST_TOOGA = 1560;
26
+
27
+ /** Cite: bake starterCreatureEntries quest 648; scriptdev2 npc_oox17tn Homing Robot OOX-17/TN. */
28
+ const NPC_OOX17TN = 7784;
29
+ /** Cite: bake enderCreatureEntries quest 648 — Oglethorpe Obnoticus (7406). */
30
+ const NPC_OGLETHORPE = 7406;
31
+ /** Cite: bake starterCreatureEntries quest 1560; scriptdev2 npc_tooga Tooga. */
32
+ const NPC_TOOGA = 5955;
33
+ /** Cite: tanaris.cpp:266 NPC_TORTA = 6015 Bake enderCreatureEntries quest 1560. */
34
+ const NPC_TORTA = 6015;
35
+
36
+ /** Cite: tanaris.cpp:150–152 ambush templates. */
37
+ const NPC_SCORPION = 7803;
38
+ const NPC_SCOFFLAW = 7805;
39
+ const NPC_SHADOW_MAGE = 5617;
40
+
41
+ /** Cite: tanaris.cpp:141–146 OOX script texts (shared line ids with OOX-09/HL / OOX-22/FE). */
42
+ const SAY_OOX_START = -1000287;
43
+ const SAY_OOX_AGGRO1 = -1000288;
44
+ const SAY_OOX_AGGRO2 = -1000289;
45
+ const SAY_OOX_AMBUSH = -1000290;
46
+ const SAY_OOX17_AMBUSH_REPLY = -1000291;
47
+ const SAY_OOX_END = -1000292;
48
+
49
+ /** Cite: tanaris.cpp:256–263 Tooga / Torta post-event texts. */
50
+ const SAY_TOOG_THIRST = -1000391;
51
+ const SAY_TOOG_WORRIED = -1000392;
52
+ const SAY_TOOG_POST_1 = -1000393;
53
+ const SAY_TORT_POST_2 = -1000394;
54
+ const SAY_TOOG_POST_3 = -1000395;
55
+ const SAY_TORT_POST_4 = -1000396;
56
+ const SAY_TOOG_POST_5 = -1000397;
57
+ const SAY_TORT_POST_6 = -1000398;
58
+
59
+ /** Cite: ScriptDevAIMgr.h:53 FACTION_ESCORT_N_FRIEND_ACTIVE = 495 OOX SetFactionTemporary on accept. */
60
+ const FACTION_ESCORT_N_FRIEND_ACTIVE = 495;
61
+ /** Cite: ScriptDevAIMgr.h:52 FACTION_ESCORT_N_FRIEND_PASSIVE = 290 Tooga StartFollow faction. */
62
+ const FACTION_ESCORT_N_FRIEND_PASSIVE = 290;
63
+ /** Cite: Creature.h:577 TEMPFACTION_RESTORE_RESPAWN = 0x01 */
64
+ const TEMPFACTION_RESTORE_RESPAWN = 0x01;
65
+ /** Cite: Creature.h:582 TEMPFACTION_TOGGLE_IMMUNE_TO_NPC = 0x20 */
66
+ const TEMPFACTION_TOGGLE_IMMUNE_TO_NPC = 0x20;
67
+ // Cite: tanaris.cpp:242 TEMPFACTION_RESTORE_RESPAWN | TEMPFACTION_TOGGLE_IMMUNE_TO_NPC = 0x01 | 0x20 = 0x21
68
+ const OOX_TEMP_FACTION_FLAGS =
69
+ TEMPFACTION_RESTORE_RESPAWN | TEMPFACTION_TOGGLE_IMMUNE_TO_NPC;
70
+
71
+ /** Cite: Unit.h:97 UNIT_STAND_STATE_STAND = 0 (opcodes.ts re-export) */
72
+ const UNIT_STAND_STATE_STAND_TANARIS = UNIT_STAND_STATE_STAND;
73
+ /** Cite: Unit.h:104 UNIT_STAND_STATE_DEAD = 7 OOX Reset() while not escorting. */
74
+ const UNIT_STAND_STATE_DEAD = 7;
75
+
76
+ // Cite: Object.h:45 TEMPSPAWN_CORPSE_TIMED_DESPAWN = 3 WP23/29 SummonCreature
77
+ // TEMPSPAWN_CORPSE_TIMED_DESPAWN.
78
+ const TEMPSPAWN_CORPSE_TIMED_DESPAWN = 3;
79
+ /** Cite: tanaris.cpp:173–175 WP23 scorpion despawn 30000ms */
80
+ const SCORPION_DESPAWN_MS = 30000;
81
+ /** Cite: tanaris.cpp:181 first scofflaw despawn 10000ms */
82
+ const SCOFFLAW_SHORT_DESPAWN_MS = 10000;
83
+ /** Cite: tanaris.cpp:182–184 shadow mage / second scofflaw 30000ms */
84
+ const AMBUSH_DESPAWN_MS = 30000;
85
+
86
+ /** Cite: tanaris.cpp:173–175 WP23 SummonCreature scorpion positions. */
87
+ const SCORPION_SPAWN = [
88
+ { entry: NPC_SCORPION, x: -8340.7, y: -4448.17, z: 9.17, o: 3.1 },
89
+ { entry: NPC_SCORPION, x: -8343.18, y: -4444.35, z: 9.44, o: 2.35 },
90
+ { entry: NPC_SCORPION, x: -8348.7, y: -4457.8, z: 9.58, o: 2.02 },
91
+ ] as const;
92
+ /** Cite: tanaris.cpp:181–184 WP29 SummonCreature positions. */
93
+ const WP29_SPAWN = [
94
+ { entry: NPC_SCOFFLAW, x: -7488.02, y: -4786.56, z: 10.67, o: 3.74, despawn: SCOFFLAW_SHORT_DESPAWN_MS },
95
+ { entry: NPC_SHADOW_MAGE, x: -7486.41, y: -4791.55, z: 10.54, o: 3.26, despawn: AMBUSH_DESPAWN_MS },
96
+ { entry: NPC_SCOFFLAW, x: -7488.47, y: -4800.77, z: 9.77, o: 2.5, despawn: AMBUSH_DESPAWN_MS },
97
+ ] as const;
98
+
99
+ /** Cite: tanaris.cpp:268 POINT_ID_TO_WATER = 1 Post-event MovePoint after dialogue phase 6. */
100
+ const POINT_ID_TO_WATER = 1;
101
+ /** Cite: tanaris.cpp:271 m_afToWaterLoc */
102
+ const TO_WATER_LOC = {
103
+ x: -7032.664551,
104
+ y: -4906.199219,
105
+ z: -1.606446,
106
+ } as const;
107
+ /** Cite: ObjectDefines.h INTERACTION_DISTANCE = 5.0f Tooga MoveInLineOfSight Torta credit range. */
108
+ const INTERACTION_DISTANCE = 5;
109
+ /** Cite: tanaris.cpp:285 m_uiCheckSpeechTimer = 2500 initial; :374 = 5000 after tick */
110
+ const TOGA_SPEECH_TIMER_MS = 2500;
111
+ const TOGA_SPEECH_INTERVAL_MS = 5000;
112
+ /** Cite: tanaris.cpp:286 m_uiPostEventTimer = 1000; :332 = 5000 between phases */
113
+ const TOGA_POST_EVENT_START_MS = 1000;
114
+ const TOGA_POST_EVENT_INTERVAL_MS = 5000;
115
+
116
+ // ── accept handlers ──────────────────────────────────────────────────────────
117
+
118
+ // QuestAccept_npc_oox17tn — quest 648 Rescue OOX-17/TN!: talk, stand, temporary friendly faction
119
+ // and escort; two ambushes then the WP35 credit. Cite: tanaris.cpp:235–248, :161–194.
120
+ function runOox17tnAccept(): DbScriptIntent[] {
121
+ const citeTalk =
122
+ `tanaris.cpp:239 npc_oox17tn (${NPC_OOX17TN}) DoScriptText(SAY_OOX_START=${SAY_OOX_START})`;
123
+ const citeActive = 'tanaris.cpp:240 SetActiveObjectState(true)';
124
+ const citeStand =
125
+ `tanaris.cpp:241 SetStandState(UNIT_STAND_STATE_STAND) from Reset DEAD=${UNIT_STAND_STATE_DEAD}`;
126
+ const citeFaction =
127
+ 'tanaris.cpp:242 SetFactionTemporary(FACTION_ESCORT_N_FRIEND_ACTIVE, ' +
128
+ 'TEMPFACTION_RESTORE_RESPAWN | TEMPFACTION_TOGGLE_IMMUNE_TO_NPC)';
129
+ const citeEscort =
130
+ `tanaris.cpp:244–245 npc_oox17tn (${NPC_OOX17TN}) ` +
131
+ 'npc_escortAI::Start(false, player, quest) - FO6 degraded finishEscort';
132
+ const citeWp23 =
133
+ `tanaris.cpp:171–176 WP23 DoScriptText(SAY_OOX_AMBUSH=${SAY_OOX_AMBUSH}) + ` +
134
+ `3× SummonCreature(NPC_SCORPION=${NPC_SCORPION} @ ${SCORPION_SPAWN[0].x}/` +
135
+ `${SCORPION_SPAWN[1].x}/${SCORPION_SPAWN[2].x}) ` +
136
+ `TEMPSPAWN_CORPSE_TIMED_DESPAWN=${TEMPSPAWN_CORPSE_TIMED_DESPAWN} ${SCORPION_DESPAWN_MS}ms - FO6`;
137
+ const citeWp29 =
138
+ `tanaris.cpp:178–187 WP29 SAY_OOX_AMBUSH=${SAY_OOX_AMBUSH} + ` +
139
+ `NPC_SCOFFLAW=${NPC_SCOFFLAW} @ ${WP29_SPAWN[0].x} ${SCOFFLAW_SHORT_DESPAWN_MS}ms + ` +
140
+ `NPC_SHADOW_MAGE=${NPC_SHADOW_MAGE} @ ${WP29_SPAWN[1].x} + ` +
141
+ `NPC_SCOFFLAW @ ${WP29_SPAWN[2].x} SAY_OOX17_AMBUSH_REPLY=${SAY_OOX17_AMBUSH_REPLY} - FO6`;
142
+ const citeAggro =
143
+ `tanaris.cpp:202–210 Aggro urand SAY_OOX_AGGRO1/2=${SAY_OOX_AGGRO1}/${SAY_OOX_AGGRO2} - FO6 combat`;
144
+ const citeSummoned =
145
+ `tanaris.cpp:212–216 JustSummoned AttackStart(m_creature) for ` +
146
+ `scorpion/scofflaw/mage ${NPC_SCORPION}/${NPC_SCOFFLAW}/${NPC_SHADOW_MAGE} - FO6 combat`;
147
+ const citeCredit =
148
+ `tanaris.cpp:188–192 WP35 DoScriptText(SAY_OOX_END=${SAY_OOX_END}) + ` +
149
+ 'RewardPlayerAndGroupAtEventExplored(648) - FO6 finishEscort';
150
+ const citeEnder =
151
+ `bake enderCreatureEntries NPC_OGLETHORPE=${NPC_OGLETHORPE} after WP35 explore credit`;
152
+ return [
153
+ {
154
+ kind: 'talk',
155
+ textId: SAY_OOX_START,
156
+ stringTemplateId: 0,
157
+ cite: citeTalk,
158
+ },
159
+ {
160
+ kind: 'set_active_object',
161
+ active: true,
162
+ cite: citeActive,
163
+ },
164
+ {
165
+ kind: 'stand_state',
166
+ standState: UNIT_STAND_STATE_STAND_TANARIS,
167
+ cite: citeStand,
168
+ },
169
+ {
170
+ kind: 'set_faction',
171
+ factionId: FACTION_ESCORT_N_FRIEND_ACTIVE,
172
+ flags: OOX_TEMP_FACTION_FLAGS,
173
+ cleared: false,
174
+ cite: citeFaction,
175
+ },
176
+ {
177
+ kind: 'skip',
178
+ reason:
179
+ `escort Start(false, player, quest) npc_oox17tn (${NPC_OOX17TN}) - FO6 degraded finishEscort`,
180
+ cite: citeEscort,
181
+ },
182
+ {
183
+ kind: 'skip',
184
+ reason:
185
+ `WP23 SAY_OOX_AMBUSH (${SAY_OOX_AMBUSH}) + 3× NPC_SCORPION (${NPC_SCORPION}) ` +
186
+ `TEMPSPAWN_CORPSE_TIMED_DESPAWN (${TEMPSPAWN_CORPSE_TIMED_DESPAWN}) ${SCORPION_DESPAWN_MS}ms - FO6`,
187
+ cite: citeWp23,
188
+ },
189
+ {
190
+ kind: 'skip',
191
+ reason:
192
+ `WP29 SAY_OOX_AMBUSH (${SAY_OOX_AMBUSH}) + NPC_SCOFFLAW (${NPC_SCOFFLAW}) + ` +
193
+ `NPC_SHADOW_MAGE (${NPC_SHADOW_MAGE}) + SAY_OOX17_AMBUSH_REPLY (${SAY_OOX17_AMBUSH_REPLY}) - FO6`,
194
+ cite: citeWp29,
195
+ },
196
+ {
197
+ kind: 'skip',
198
+ reason:
199
+ `Aggro SAY_OOX_AGGRO1/2 (${SAY_OOX_AGGRO1}/${SAY_OOX_AGGRO2}) - FO6 combat`,
200
+ cite: citeAggro,
201
+ },
202
+ {
203
+ kind: 'skip',
204
+ reason:
205
+ `JustSummoned AttackStart ambush (${NPC_SCORPION}/${NPC_SCOFFLAW}/${NPC_SHADOW_MAGE}) - FO6 combat`,
206
+ cite: citeSummoned,
207
+ },
208
+ {
209
+ kind: 'skip',
210
+ reason:
211
+ `WP35 SAY_OOX_END (${SAY_OOX_END}) + RewardPlayerAndGroupAtEventExplored(648) - FO6 finishEscort`,
212
+ cite: citeCredit,
213
+ },
214
+ {
215
+ kind: 'skip',
216
+ reason: `turn-in NPC_OGLETHORPE (${NPC_OGLETHORPE}) after explore credit`,
217
+ cite: citeEnder,
218
+ },
219
+ ];
220
+ }
221
+
222
+ // QuestAccept_npc_tooga — quest 1560 Tooga's Quest: start following at a friendly faction, and
223
+ // sighting Torta gives the explore credit before the post-event talk. Cite: tanaris.cpp:398–407.
224
+ function runToogaAccept(): DbScriptIntent[] {
225
+ const citeFollow =
226
+ `tanaris.cpp:402–403 npc_tooga (${NPC_TOOGA}) ` +
227
+ `StartFollow(player, FACTION_ESCORT_N_FRIEND_PASSIVE=${FACTION_ESCORT_N_FRIEND_PASSIVE}, quest) ` +
228
+ '- FO6 degraded FollowerAI finishEscort';
229
+ const citeSpeech =
230
+ `tanaris.cpp:370–383 speech timer ${TOGA_SPEECH_TIMER_MS}/${TOGA_SPEECH_INTERVAL_MS}ms ` +
231
+ `urand SAY_TOOG_THIRST=${SAY_TOOG_THIRST} / SAY_TOOG_WORRIED=${SAY_TOOG_WORRIED} - FO6`;
232
+ const citeCredit =
233
+ `tanaris.cpp:296–308 LOS NPC_TORTA=${NPC_TORTA} INTERACTION_DISTANCE=${INTERACTION_DISTANCE}: ` +
234
+ 'RewardPlayerAndGroupAtEventExplored(1560) + SetFollowComplete(true) - FO6 finishEscort';
235
+ const citePost =
236
+ `tanaris.cpp:328–365 post-event timer ${TOGA_POST_EVENT_START_MS}/${TOGA_POST_EVENT_INTERVAL_MS}ms ` +
237
+ `phases SAY_TOOG_POST_1=${SAY_TOOG_POST_1}…SAY_TORT_POST_6=${SAY_TORT_POST_6}; ` +
238
+ `MovePoint(POINT_ID_TO_WATER=${POINT_ID_TO_WATER}, ` +
239
+ `${TO_WATER_LOC.x},${TO_WATER_LOC.y},${TO_WATER_LOC.z}) - FO6`;
240
+ const citeEnder =
241
+ `bake enderCreatureEntries NPC_TORTA=${NPC_TORTA} after LOS explore credit`;
242
+ return [
243
+ {
244
+ kind: 'skip',
245
+ reason:
246
+ `StartFollow(player, FACTION_ESCORT_N_FRIEND_PASSIVE=${FACTION_ESCORT_N_FRIEND_PASSIVE}, quest) ` +
247
+ `npc_tooga (${NPC_TOOGA}) - FO6 degraded FollowerAI finishEscort`,
248
+ cite: citeFollow,
249
+ },
250
+ {
251
+ kind: 'skip',
252
+ reason:
253
+ `speech SAY_TOOG_THIRST (${SAY_TOOG_THIRST}) / SAY_TOOG_WORRIED (${SAY_TOOG_WORRIED}) - FO6`,
254
+ cite: citeSpeech,
255
+ },
256
+ {
257
+ kind: 'skip',
258
+ reason:
259
+ `LOS NPC_TORTA (${NPC_TORTA}) RewardPlayerAndGroupAtEventExplored(1560) ` +
260
+ `INTERACTION_DISTANCE=${INTERACTION_DISTANCE} - FO6 finishEscort`,
261
+ cite: citeCredit,
262
+ },
263
+ {
264
+ kind: 'skip',
265
+ reason:
266
+ `post-event SAY_TOOG_POST_1–SAY_TORT_POST_6 (${SAY_TOOG_POST_1}–${SAY_TORT_POST_6}) + ` +
267
+ `MovePoint water (${TO_WATER_LOC.x}) - FO6`,
268
+ cite: citePost,
269
+ },
270
+ {
271
+ kind: 'skip',
272
+ reason: `turn-in NPC_TORTA (${NPC_TORTA}) after explore credit`,
273
+ cite: citeEnder,
274
+ },
275
+ ];
276
+ }
277
+
278
+ // Family pack: kalimdor/tanaris.cpp Hooks: pQuestAcceptNPC oox17tn (648), tooga (1560). Residuals
279
+ // documented on accept chains: WP ambushes / Torta LOS credit.
280
+ export function runTanaris(
281
+ phase: QuestScriptHook,
282
+ questId: number,
283
+ ): DbScriptIntent[] {
284
+ if (phase === 'accept') {
285
+ if (questId === QUEST_RESCUE_OOX_17TN) return runOox17tnAccept();
286
+ if (questId === QUEST_TOOGA) return runToogaAccept();
287
+ return [];
288
+ }
289
+ return [];
290
+ }
291
+
292
+ // Map entries spread into QUEST_SCRIPT_REGISTRY (keeps registry.ts under 1500). next-batch.mjs also matches
293
+ // `family: 'kalimdor/tanaris'` in registry.ts.
294
+ export const TANARIS_REGISTRY: Record<string | number, TanarisQuestScriptEntry> = {
295
+ 'kalimdor/tanaris': {
296
+ family: 'kalimdor/tanaris',
297
+ questIds: [QUEST_RESCUE_OOX_17TN, QUEST_TOOGA],
298
+ hooks: ['accept'],
299
+ cite: 'kalimdor/tanaris.cpp:235–248,398–407,161–194,292–310,323–383',
300
+ run: runTanaris,
301
+ },
302
+ [QUEST_RESCUE_OOX_17TN]: {
303
+ family: 'kalimdor/tanaris',
304
+ questId: QUEST_RESCUE_OOX_17TN,
305
+ questIds: [QUEST_RESCUE_OOX_17TN],
306
+ hooks: ['accept'],
307
+ cite: 'tanaris.cpp:235–248 QuestAccept_npc_oox17tn',
308
+ run: runTanaris,
309
+ },
310
+ [QUEST_TOOGA]: {
311
+ family: 'kalimdor/tanaris',
312
+ questId: QUEST_TOOGA,
313
+ questIds: [QUEST_TOOGA],
314
+ hooks: ['accept'],
315
+ cite: 'tanaris.cpp:398–407 QuestAccept_npc_tooga',
316
+ run: runTanaris,
317
+ },
318
+ };