@datamoc/mw_games 0.3.1 → 0.4.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 (770) hide show
  1. package/README.md +401 -395
  2. package/dist/actors/Advancement.d.ts +17 -0
  3. package/dist/actors/Advancement.d.ts.map +1 -1
  4. package/dist/actors/Advancement.js +17 -0
  5. package/dist/actors/Advancement.js.map +1 -1
  6. package/dist/actors/Affix.d.ts +46 -0
  7. package/dist/actors/Affix.d.ts.map +1 -1
  8. package/dist/actors/Affix.js +32 -1
  9. package/dist/actors/Affix.js.map +1 -1
  10. package/dist/actors/Appearances.d.ts +12 -0
  11. package/dist/actors/Appearances.d.ts.map +1 -1
  12. package/dist/actors/Appearances.js +12 -0
  13. package/dist/actors/Appearances.js.map +1 -1
  14. package/dist/actors/Aura.d.ts +16 -0
  15. package/dist/actors/Aura.d.ts.map +1 -1
  16. package/dist/actors/Aura.js +16 -0
  17. package/dist/actors/Aura.js.map +1 -1
  18. package/dist/actors/Barrier.d.ts +60 -0
  19. package/dist/actors/Barrier.d.ts.map +1 -0
  20. package/dist/actors/Barrier.js +70 -0
  21. package/dist/actors/Barrier.js.map +1 -0
  22. package/dist/actors/Charges.d.ts +35 -0
  23. package/dist/actors/Charges.d.ts.map +1 -1
  24. package/dist/actors/Charges.js +26 -0
  25. package/dist/actors/Charges.js.map +1 -1
  26. package/dist/actors/Equipment.d.ts +48 -0
  27. package/dist/actors/Equipment.d.ts.map +1 -1
  28. package/dist/actors/Equipment.js +51 -1
  29. package/dist/actors/Equipment.js.map +1 -1
  30. package/dist/actors/Inventory.d.ts +70 -3
  31. package/dist/actors/Inventory.d.ts.map +1 -1
  32. package/dist/actors/Inventory.js +109 -5
  33. package/dist/actors/Inventory.js.map +1 -1
  34. package/dist/actors/ItemState.d.ts +24 -2
  35. package/dist/actors/ItemState.d.ts.map +1 -1
  36. package/dist/actors/ItemState.js +31 -2
  37. package/dist/actors/ItemState.js.map +1 -1
  38. package/dist/actors/ItemStatusEffect.d.ts +13 -0
  39. package/dist/actors/ItemStatusEffect.d.ts.map +1 -1
  40. package/dist/actors/ItemStatusEffect.js +13 -0
  41. package/dist/actors/ItemStatusEffect.js.map +1 -1
  42. package/dist/actors/Loot.d.ts +15 -1
  43. package/dist/actors/Loot.d.ts.map +1 -1
  44. package/dist/actors/Loot.js +16 -2
  45. package/dist/actors/Loot.js.map +1 -1
  46. package/dist/actors/Progression.d.ts +23 -1
  47. package/dist/actors/Progression.d.ts.map +1 -1
  48. package/dist/actors/Progression.js +21 -1
  49. package/dist/actors/Progression.js.map +1 -1
  50. package/dist/actors/Resource.d.ts +30 -0
  51. package/dist/actors/Resource.d.ts.map +1 -1
  52. package/dist/actors/Resource.js +22 -0
  53. package/dist/actors/Resource.js.map +1 -1
  54. package/dist/actors/Scaling.d.ts +8 -0
  55. package/dist/actors/Scaling.d.ts.map +1 -1
  56. package/dist/actors/Scaling.js.map +1 -1
  57. package/dist/actors/Shop.d.ts +15 -0
  58. package/dist/actors/Shop.d.ts.map +1 -1
  59. package/dist/actors/Shop.js.map +1 -1
  60. package/dist/actors/SkillPoints.d.ts +27 -0
  61. package/dist/actors/SkillPoints.d.ts.map +1 -1
  62. package/dist/actors/SkillPoints.js +29 -0
  63. package/dist/actors/SkillPoints.js.map +1 -1
  64. package/dist/actors/StatBlock.d.ts +16 -0
  65. package/dist/actors/StatBlock.d.ts.map +1 -1
  66. package/dist/actors/StatBlock.js +21 -0
  67. package/dist/actors/StatBlock.js.map +1 -1
  68. package/dist/actors/StatusEffect.d.ts +18 -0
  69. package/dist/actors/StatusEffect.d.ts.map +1 -1
  70. package/dist/actors/StatusEffect.js +18 -0
  71. package/dist/actors/StatusEffect.js.map +1 -1
  72. package/dist/actors/Support.d.ts +13 -2
  73. package/dist/actors/Support.d.ts.map +1 -1
  74. package/dist/actors/Support.js +13 -2
  75. package/dist/actors/Support.js.map +1 -1
  76. package/dist/actors/Traits.d.ts +14 -0
  77. package/dist/actors/Traits.d.ts.map +1 -1
  78. package/dist/actors/Traits.js +14 -0
  79. package/dist/actors/Traits.js.map +1 -1
  80. package/dist/actors/craft.d.ts +16 -0
  81. package/dist/actors/craft.d.ts.map +1 -1
  82. package/dist/actors/craft.js +16 -0
  83. package/dist/actors/craft.js.map +1 -1
  84. package/dist/actors/index.d.ts +8 -5
  85. package/dist/actors/index.d.ts.map +1 -1
  86. package/dist/actors/index.js +3 -2
  87. package/dist/actors/index.js.map +1 -1
  88. package/dist/actors/skillCheck.d.ts +8 -0
  89. package/dist/actors/skillCheck.d.ts.map +1 -1
  90. package/dist/actors/skillCheck.js +8 -0
  91. package/dist/actors/skillCheck.js.map +1 -1
  92. package/dist/assets/ByteProgress.d.ts +37 -0
  93. package/dist/assets/ByteProgress.d.ts.map +1 -0
  94. package/dist/assets/ByteProgress.js +54 -0
  95. package/dist/assets/ByteProgress.js.map +1 -0
  96. package/dist/assets/Streaming.d.ts +11 -1
  97. package/dist/assets/Streaming.d.ts.map +1 -1
  98. package/dist/assets/Streaming.js +11 -1
  99. package/dist/assets/Streaming.js.map +1 -1
  100. package/dist/assets/index.d.ts +11 -52
  101. package/dist/assets/index.d.ts.map +1 -1
  102. package/dist/assets/index.js +9 -80
  103. package/dist/assets/index.js.map +1 -1
  104. package/dist/assets/loader.d.ts +45 -0
  105. package/dist/assets/loader.d.ts.map +1 -0
  106. package/dist/assets/loader.js +72 -0
  107. package/dist/assets/loader.js.map +1 -0
  108. package/dist/assets/paths.d.ts +50 -0
  109. package/dist/assets/paths.d.ts.map +1 -0
  110. package/dist/assets/paths.js +59 -0
  111. package/dist/assets/paths.js.map +1 -0
  112. package/dist/audio/Captions.d.ts +13 -1
  113. package/dist/audio/Captions.d.ts.map +1 -1
  114. package/dist/audio/Captions.js +13 -1
  115. package/dist/audio/Captions.js.map +1 -1
  116. package/dist/audio/Midi.d.ts +19 -1
  117. package/dist/audio/Midi.d.ts.map +1 -1
  118. package/dist/audio/Midi.js +19 -1
  119. package/dist/audio/Midi.js.map +1 -1
  120. package/dist/audio/Music.d.ts +11 -0
  121. package/dist/audio/Music.d.ts.map +1 -1
  122. package/dist/audio/Music.js +11 -0
  123. package/dist/audio/Music.js.map +1 -1
  124. package/dist/audio/Orchestrator.d.ts +14 -0
  125. package/dist/audio/Orchestrator.d.ts.map +1 -1
  126. package/dist/audio/Orchestrator.js +14 -0
  127. package/dist/audio/Orchestrator.js.map +1 -1
  128. package/dist/audio/Playable.d.ts +11 -1
  129. package/dist/audio/Playable.d.ts.map +1 -1
  130. package/dist/audio/Playable.js +12 -2
  131. package/dist/audio/Playable.js.map +1 -1
  132. package/dist/audio/Sound.d.ts +8 -0
  133. package/dist/audio/Sound.d.ts.map +1 -1
  134. package/dist/audio/Sound.js +8 -0
  135. package/dist/audio/Sound.js.map +1 -1
  136. package/dist/audio/Synth.d.ts +15 -0
  137. package/dist/audio/Synth.d.ts.map +1 -1
  138. package/dist/audio/Synth.js +15 -0
  139. package/dist/audio/Synth.js.map +1 -1
  140. package/dist/battle/BattleAI.d.ts +18 -2
  141. package/dist/battle/BattleAI.d.ts.map +1 -1
  142. package/dist/battle/BattleAI.js +18 -2
  143. package/dist/battle/BattleAI.js.map +1 -1
  144. package/dist/battle/Evolution.d.ts +12 -0
  145. package/dist/battle/Evolution.d.ts.map +1 -1
  146. package/dist/battle/Evolution.js +12 -0
  147. package/dist/battle/Evolution.js.map +1 -1
  148. package/dist/battle/Field.d.ts +13 -2
  149. package/dist/battle/Field.d.ts.map +1 -1
  150. package/dist/battle/Field.js +3 -3
  151. package/dist/battle/Field.js.map +1 -1
  152. package/dist/battle/Hooks.d.ts +23 -13
  153. package/dist/battle/Hooks.d.ts.map +1 -1
  154. package/dist/battle/Hooks.js +36 -18
  155. package/dist/battle/Hooks.js.map +1 -1
  156. package/dist/battle/Move.d.ts +13 -0
  157. package/dist/battle/Move.d.ts.map +1 -1
  158. package/dist/battle/Move.js +13 -0
  159. package/dist/battle/Move.js.map +1 -1
  160. package/dist/battle/Party.d.ts +11 -0
  161. package/dist/battle/Party.d.ts.map +1 -1
  162. package/dist/battle/Party.js +11 -0
  163. package/dist/battle/Party.js.map +1 -1
  164. package/dist/battle/Species.d.ts +10 -0
  165. package/dist/battle/Species.d.ts.map +1 -1
  166. package/dist/battle/Species.js +10 -0
  167. package/dist/battle/Species.js.map +1 -1
  168. package/dist/battle/StatStages.d.ts +14 -0
  169. package/dist/battle/StatStages.d.ts.map +1 -1
  170. package/dist/battle/StatStages.js.map +1 -1
  171. package/dist/battle/TypeMatrix.d.ts +11 -0
  172. package/dist/battle/TypeMatrix.d.ts.map +1 -1
  173. package/dist/battle/TypeMatrix.js +11 -0
  174. package/dist/battle/TypeMatrix.js.map +1 -1
  175. package/dist/core/Achievements.d.ts +15 -0
  176. package/dist/core/Achievements.d.ts.map +1 -1
  177. package/dist/core/Achievements.js +15 -0
  178. package/dist/core/Achievements.js.map +1 -1
  179. package/dist/core/Collection.d.ts +12 -0
  180. package/dist/core/Collection.d.ts.map +1 -1
  181. package/dist/core/Collection.js +12 -0
  182. package/dist/core/Collection.js.map +1 -1
  183. package/dist/core/Entity.d.ts +42 -0
  184. package/dist/core/Entity.d.ts.map +1 -0
  185. package/dist/core/Entity.js +47 -0
  186. package/dist/core/Entity.js.map +1 -0
  187. package/dist/core/Feedback.d.ts +11 -1
  188. package/dist/core/Feedback.d.ts.map +1 -1
  189. package/dist/core/Feedback.js +11 -1
  190. package/dist/core/Feedback.js.map +1 -1
  191. package/dist/core/Hex.d.ts +14 -0
  192. package/dist/core/Hex.d.ts.map +1 -1
  193. package/dist/core/Hex.js +14 -0
  194. package/dist/core/Hex.js.map +1 -1
  195. package/dist/core/Hooks.d.ts +48 -0
  196. package/dist/core/Hooks.d.ts.map +1 -0
  197. package/dist/core/Hooks.js +33 -0
  198. package/dist/core/Hooks.js.map +1 -0
  199. package/dist/core/Input.d.ts +53 -0
  200. package/dist/core/Input.d.ts.map +1 -1
  201. package/dist/core/Input.js +126 -21
  202. package/dist/core/Input.js.map +1 -1
  203. package/dist/core/Loading.d.ts +17 -0
  204. package/dist/core/Loading.d.ts.map +1 -1
  205. package/dist/core/Loading.js +17 -0
  206. package/dist/core/Loading.js.map +1 -1
  207. package/dist/core/Log.d.ts +9 -0
  208. package/dist/core/Log.d.ts.map +1 -1
  209. package/dist/core/Log.js +9 -0
  210. package/dist/core/Log.js.map +1 -1
  211. package/dist/core/Multiplayer.d.ts +12 -0
  212. package/dist/core/Multiplayer.d.ts.map +1 -1
  213. package/dist/core/Multiplayer.js +12 -0
  214. package/dist/core/Multiplayer.js.map +1 -1
  215. package/dist/core/News.d.ts +12 -0
  216. package/dist/core/News.d.ts.map +1 -1
  217. package/dist/core/News.js.map +1 -1
  218. package/dist/core/PlayerInput.d.ts +19 -0
  219. package/dist/core/PlayerInput.d.ts.map +1 -1
  220. package/dist/core/PlayerInput.js +25 -0
  221. package/dist/core/PlayerInput.js.map +1 -1
  222. package/dist/core/Presentation.d.ts +56 -0
  223. package/dist/core/Presentation.d.ts.map +1 -0
  224. package/dist/core/Presentation.js +78 -0
  225. package/dist/core/Presentation.js.map +1 -0
  226. package/dist/core/Random.d.ts +38 -5
  227. package/dist/core/Random.d.ts.map +1 -1
  228. package/dist/core/Random.js +38 -5
  229. package/dist/core/Random.js.map +1 -1
  230. package/dist/core/Replay.d.ts +31 -0
  231. package/dist/core/Replay.d.ts.map +1 -1
  232. package/dist/core/Replay.js +31 -0
  233. package/dist/core/Replay.js.map +1 -1
  234. package/dist/core/RunHistory.d.ts +12 -0
  235. package/dist/core/RunHistory.d.ts.map +1 -1
  236. package/dist/core/RunHistory.js.map +1 -1
  237. package/dist/core/Sanitize.d.ts +18 -0
  238. package/dist/core/Sanitize.d.ts.map +1 -1
  239. package/dist/core/Sanitize.js +18 -0
  240. package/dist/core/Sanitize.js.map +1 -1
  241. package/dist/core/Save.d.ts.map +1 -1
  242. package/dist/core/Save.js +13 -0
  243. package/dist/core/Save.js.map +1 -1
  244. package/dist/core/SaveSync.d.ts +14 -0
  245. package/dist/core/SaveSync.d.ts.map +1 -1
  246. package/dist/core/SaveSync.js.map +1 -1
  247. package/dist/core/Scene.d.ts +29 -6
  248. package/dist/core/Scene.d.ts.map +1 -1
  249. package/dist/core/Scene.js +31 -6
  250. package/dist/core/Scene.js.map +1 -1
  251. package/dist/core/SceneStack.d.ts +28 -4
  252. package/dist/core/SceneStack.d.ts.map +1 -1
  253. package/dist/core/SceneStack.js +24 -0
  254. package/dist/core/SceneStack.js.map +1 -1
  255. package/dist/core/Scramble.d.ts +8 -0
  256. package/dist/core/Scramble.d.ts.map +1 -1
  257. package/dist/core/Scramble.js +8 -0
  258. package/dist/core/Scramble.js.map +1 -1
  259. package/dist/core/Session.d.ts +10 -0
  260. package/dist/core/Session.d.ts.map +1 -1
  261. package/dist/core/Session.js.map +1 -1
  262. package/dist/core/Signal.d.ts +11 -0
  263. package/dist/core/Signal.d.ts.map +1 -1
  264. package/dist/core/Signal.js.map +1 -1
  265. package/dist/core/Spawner.d.ts +17 -0
  266. package/dist/core/Spawner.d.ts.map +1 -1
  267. package/dist/core/Spawner.js +17 -0
  268. package/dist/core/Spawner.js.map +1 -1
  269. package/dist/core/Stats.d.ts +14 -0
  270. package/dist/core/Stats.d.ts.map +1 -1
  271. package/dist/core/Stats.js +14 -0
  272. package/dist/core/Stats.js.map +1 -1
  273. package/dist/core/Telemetry.d.ts +11 -0
  274. package/dist/core/Telemetry.d.ts.map +1 -1
  275. package/dist/core/Telemetry.js +11 -0
  276. package/dist/core/Telemetry.js.map +1 -1
  277. package/dist/core/Tween.d.ts +16 -1
  278. package/dist/core/Tween.d.ts.map +1 -1
  279. package/dist/core/Tween.js +16 -1
  280. package/dist/core/Tween.js.map +1 -1
  281. package/dist/core/UndoHistory.d.ts +15 -0
  282. package/dist/core/UndoHistory.d.ts.map +1 -1
  283. package/dist/core/UndoHistory.js.map +1 -1
  284. package/dist/core/index.d.ts +7 -2
  285. package/dist/core/index.d.ts.map +1 -1
  286. package/dist/core/index.js +3 -1
  287. package/dist/core/index.js.map +1 -1
  288. package/dist/i18n/Format.d.ts +25 -0
  289. package/dist/i18n/Format.d.ts.map +1 -0
  290. package/dist/i18n/Format.js +32 -0
  291. package/dist/i18n/Format.js.map +1 -0
  292. package/dist/i18n/SemanticMessage.d.ts +71 -0
  293. package/dist/i18n/SemanticMessage.d.ts.map +1 -0
  294. package/dist/i18n/SemanticMessage.js +40 -0
  295. package/dist/i18n/SemanticMessage.js.map +1 -0
  296. package/dist/i18n/Validate.d.ts +56 -0
  297. package/dist/i18n/Validate.d.ts.map +1 -0
  298. package/dist/i18n/Validate.js +65 -0
  299. package/dist/i18n/Validate.js.map +1 -0
  300. package/dist/i18n/index.d.ts +39 -0
  301. package/dist/i18n/index.d.ts.map +1 -1
  302. package/dist/i18n/index.js +48 -1
  303. package/dist/i18n/index.js.map +1 -1
  304. package/dist/index.d.ts +4 -5
  305. package/dist/index.d.ts.map +1 -1
  306. package/dist/index.js +4 -5
  307. package/dist/index.js.map +1 -1
  308. package/dist/mw_games.global.js +153 -88
  309. package/dist/roguelike/Blob.d.ts +11 -0
  310. package/dist/roguelike/Blob.d.ts.map +1 -1
  311. package/dist/roguelike/Blob.js +11 -0
  312. package/dist/roguelike/Blob.js.map +1 -1
  313. package/dist/roguelike/Boss.d.ts +16 -4
  314. package/dist/roguelike/Boss.d.ts.map +1 -1
  315. package/dist/roguelike/Boss.js +18 -6
  316. package/dist/roguelike/Boss.js.map +1 -1
  317. package/dist/roguelike/Combat.d.ts +23 -11
  318. package/dist/roguelike/Combat.d.ts.map +1 -1
  319. package/dist/roguelike/Combat.js +22 -16
  320. package/dist/roguelike/Combat.js.map +1 -1
  321. package/dist/roguelike/ContentRoll.d.ts +53 -0
  322. package/dist/roguelike/ContentRoll.d.ts.map +1 -0
  323. package/dist/roguelike/ContentRoll.js +48 -0
  324. package/dist/roguelike/ContentRoll.js.map +1 -0
  325. package/dist/roguelike/Doors.d.ts +13 -0
  326. package/dist/roguelike/Doors.d.ts.map +1 -1
  327. package/dist/roguelike/Doors.js +13 -0
  328. package/dist/roguelike/Doors.js.map +1 -1
  329. package/dist/roguelike/DungeonParity.d.ts +57 -0
  330. package/dist/roguelike/DungeonParity.d.ts.map +1 -0
  331. package/dist/roguelike/DungeonParity.js +78 -0
  332. package/dist/roguelike/DungeonParity.js.map +1 -0
  333. package/dist/roguelike/Elevation.d.ts +15 -0
  334. package/dist/roguelike/Elevation.d.ts.map +1 -1
  335. package/dist/roguelike/Elevation.js +15 -0
  336. package/dist/roguelike/Elevation.js.map +1 -1
  337. package/dist/roguelike/Features.d.ts +59 -0
  338. package/dist/roguelike/Features.d.ts.map +1 -0
  339. package/dist/roguelike/Features.js +76 -0
  340. package/dist/roguelike/Features.js.map +1 -0
  341. package/dist/roguelike/FieldOfView.d.ts +13 -0
  342. package/dist/roguelike/FieldOfView.d.ts.map +1 -1
  343. package/dist/roguelike/FieldOfView.js +13 -0
  344. package/dist/roguelike/FieldOfView.js.map +1 -1
  345. package/dist/roguelike/Level.d.ts +26 -1
  346. package/dist/roguelike/Level.d.ts.map +1 -1
  347. package/dist/roguelike/Level.js +26 -1
  348. package/dist/roguelike/Level.js.map +1 -1
  349. package/dist/roguelike/MonsterAI.d.ts +14 -0
  350. package/dist/roguelike/MonsterAI.d.ts.map +1 -1
  351. package/dist/roguelike/MonsterAI.js +15 -1
  352. package/dist/roguelike/MonsterAI.js.map +1 -1
  353. package/dist/roguelike/MultiStageAbility.d.ts +59 -0
  354. package/dist/roguelike/MultiStageAbility.d.ts.map +1 -0
  355. package/dist/roguelike/MultiStageAbility.js +76 -0
  356. package/dist/roguelike/MultiStageAbility.js.map +1 -0
  357. package/dist/roguelike/Pathfinder.d.ts +23 -2
  358. package/dist/roguelike/Pathfinder.d.ts.map +1 -1
  359. package/dist/roguelike/Pathfinder.js +23 -2
  360. package/dist/roguelike/Pathfinder.js.map +1 -1
  361. package/dist/roguelike/RoomBuilders.d.ts +60 -0
  362. package/dist/roguelike/RoomBuilders.d.ts.map +1 -0
  363. package/dist/roguelike/RoomBuilders.js +57 -0
  364. package/dist/roguelike/RoomBuilders.js.map +1 -0
  365. package/dist/roguelike/Scheduler.d.ts +48 -1
  366. package/dist/roguelike/Scheduler.d.ts.map +1 -1
  367. package/dist/roguelike/Scheduler.js +58 -1
  368. package/dist/roguelike/Scheduler.js.map +1 -1
  369. package/dist/roguelike/Secrets.d.ts +13 -0
  370. package/dist/roguelike/Secrets.d.ts.map +1 -1
  371. package/dist/roguelike/Secrets.js +13 -0
  372. package/dist/roguelike/Secrets.js.map +1 -1
  373. package/dist/roguelike/Stealth.d.ts +13 -0
  374. package/dist/roguelike/Stealth.d.ts.map +1 -1
  375. package/dist/roguelike/Stealth.js +13 -0
  376. package/dist/roguelike/Stealth.js.map +1 -1
  377. package/dist/roguelike/Targeting.d.ts +67 -1
  378. package/dist/roguelike/Targeting.d.ts.map +1 -1
  379. package/dist/roguelike/Targeting.js +53 -1
  380. package/dist/roguelike/Targeting.js.map +1 -1
  381. package/dist/roguelike/TriggerTracker.d.ts +46 -0
  382. package/dist/roguelike/TriggerTracker.d.ts.map +1 -0
  383. package/dist/roguelike/TriggerTracker.js +59 -0
  384. package/dist/roguelike/TriggerTracker.js.map +1 -0
  385. package/dist/roguelike/generate.d.ts +90 -1
  386. package/dist/roguelike/generate.d.ts.map +1 -1
  387. package/dist/roguelike/generate.js +79 -11
  388. package/dist/roguelike/generate.js.map +1 -1
  389. package/dist/roguelike/index.d.ts +17 -5
  390. package/dist/roguelike/index.d.ts.map +1 -1
  391. package/dist/roguelike/index.js +8 -2
  392. package/dist/roguelike/index.js.map +1 -1
  393. package/dist/rpg/Collision.d.ts +19 -0
  394. package/dist/rpg/Collision.d.ts.map +1 -1
  395. package/dist/rpg/Collision.js +19 -0
  396. package/dist/rpg/Collision.js.map +1 -1
  397. package/dist/rpg/Event.d.ts +17 -0
  398. package/dist/rpg/Event.d.ts.map +1 -1
  399. package/dist/rpg/Event.js +17 -0
  400. package/dist/rpg/Event.js.map +1 -1
  401. package/dist/rpg/EventRunner.d.ts +44 -8
  402. package/dist/rpg/EventRunner.d.ts.map +1 -1
  403. package/dist/rpg/EventRunner.js +15 -13
  404. package/dist/rpg/EventRunner.js.map +1 -1
  405. package/dist/rpg/FreeMover.d.ts +16 -2
  406. package/dist/rpg/FreeMover.d.ts.map +1 -1
  407. package/dist/rpg/FreeMover.js +19 -5
  408. package/dist/rpg/FreeMover.js.map +1 -1
  409. package/dist/rpg/GameState.d.ts +14 -0
  410. package/dist/rpg/GameState.d.ts.map +1 -1
  411. package/dist/rpg/GameState.js +14 -0
  412. package/dist/rpg/GameState.js.map +1 -1
  413. package/dist/rpg/GridMover.d.ts +16 -2
  414. package/dist/rpg/GridMover.d.ts.map +1 -1
  415. package/dist/rpg/GridMover.js +19 -5
  416. package/dist/rpg/GridMover.js.map +1 -1
  417. package/dist/rpg/Marshal.d.ts +16 -0
  418. package/dist/rpg/Marshal.d.ts.map +1 -1
  419. package/dist/rpg/Marshal.js +16 -0
  420. package/dist/rpg/Marshal.js.map +1 -1
  421. package/dist/rpg/MovableSprite.d.ts +25 -0
  422. package/dist/rpg/MovableSprite.d.ts.map +1 -0
  423. package/dist/rpg/MovableSprite.js +2 -0
  424. package/dist/rpg/MovableSprite.js.map +1 -0
  425. package/dist/rpg/Quest.d.ts +21 -1
  426. package/dist/rpg/Quest.d.ts.map +1 -1
  427. package/dist/rpg/Quest.js +21 -1
  428. package/dist/rpg/Quest.js.map +1 -1
  429. package/dist/rpg/automap.d.ts +39 -2
  430. package/dist/rpg/automap.d.ts.map +1 -1
  431. package/dist/rpg/automap.js +24 -1
  432. package/dist/rpg/automap.js.map +1 -1
  433. package/dist/rpg/index.d.ts +4 -4
  434. package/dist/rpg/index.d.ts.map +1 -1
  435. package/dist/rpg/index.js +1 -1
  436. package/dist/rpg/index.js.map +1 -1
  437. package/dist/simulation/Runtime.d.ts +98 -0
  438. package/dist/simulation/Runtime.d.ts.map +1 -0
  439. package/dist/simulation/Runtime.js +91 -0
  440. package/dist/simulation/Runtime.js.map +1 -0
  441. package/dist/simulation/Scenario.d.ts +15 -0
  442. package/dist/simulation/Scenario.d.ts.map +1 -1
  443. package/dist/simulation/Scenario.js +15 -0
  444. package/dist/simulation/Scenario.js.map +1 -1
  445. package/dist/simulation/Turns.d.ts +11 -0
  446. package/dist/simulation/Turns.d.ts.map +1 -1
  447. package/dist/simulation/Turns.js +11 -0
  448. package/dist/simulation/Turns.js.map +1 -1
  449. package/dist/simulation/index.d.ts +10 -0
  450. package/dist/simulation/index.d.ts.map +1 -1
  451. package/dist/simulation/index.js +8 -0
  452. package/dist/simulation/index.js.map +1 -1
  453. package/dist/three-d/Character3D.d.ts +26 -1
  454. package/dist/three-d/Character3D.d.ts.map +1 -1
  455. package/dist/three-d/Character3D.js +31 -14
  456. package/dist/three-d/Character3D.js.map +1 -1
  457. package/dist/three-d/Collision3D.d.ts +63 -0
  458. package/dist/three-d/Collision3D.d.ts.map +1 -0
  459. package/dist/three-d/Collision3D.js +75 -0
  460. package/dist/three-d/Collision3D.js.map +1 -0
  461. package/dist/three-d/Models.js +1 -1
  462. package/dist/three-d/index.d.ts +3 -1
  463. package/dist/three-d/index.d.ts.map +1 -1
  464. package/dist/three-d/index.js +1 -0
  465. package/dist/three-d/index.js.map +1 -1
  466. package/dist/{core → two-d}/Game.d.ts +15 -17
  467. package/dist/two-d/Game.d.ts.map +1 -0
  468. package/dist/{core → two-d}/Game.js +3 -3
  469. package/dist/two-d/Game.js.map +1 -0
  470. package/dist/two-d/Scene2D.d.ts +19 -0
  471. package/dist/two-d/Scene2D.d.ts.map +1 -0
  472. package/dist/two-d/Scene2D.js +23 -0
  473. package/dist/two-d/Scene2D.js.map +1 -0
  474. package/dist/two-d/index.d.ts +20 -0
  475. package/dist/two-d/index.d.ts.map +1 -0
  476. package/dist/two-d/index.js +18 -0
  477. package/dist/two-d/index.js.map +1 -0
  478. package/dist/two-d/pixi-interop.d.ts +13 -0
  479. package/dist/two-d/pixi-interop.d.ts.map +1 -0
  480. package/dist/two-d/pixi-interop.js +12 -0
  481. package/dist/two-d/pixi-interop.js.map +1 -0
  482. package/dist/two-d/render/ActorAnimator.d.ts.map +1 -0
  483. package/dist/two-d/render/ActorAnimator.js.map +1 -0
  484. package/dist/{render → two-d/render}/AnimatedSprite.d.ts +4 -4
  485. package/dist/two-d/render/AnimatedSprite.d.ts.map +1 -0
  486. package/dist/two-d/render/AnimatedSprite.js.map +1 -0
  487. package/dist/two-d/render/Autotile.d.ts.map +1 -0
  488. package/dist/two-d/render/Autotile.js.map +1 -0
  489. package/dist/two-d/render/Camera.d.ts.map +1 -0
  490. package/dist/{render → two-d/render}/Camera.js +2 -2
  491. package/dist/two-d/render/Camera.js.map +1 -0
  492. package/dist/two-d/render/Capabilities.d.ts.map +1 -0
  493. package/dist/two-d/render/Capabilities.js.map +1 -0
  494. package/dist/two-d/render/ColorBlindness.d.ts.map +1 -0
  495. package/dist/two-d/render/ColorBlindness.js.map +1 -0
  496. package/dist/{render → two-d/render}/ColorTransformBatcher.d.ts +8 -3
  497. package/dist/two-d/render/ColorTransformBatcher.d.ts.map +1 -0
  498. package/dist/{render → two-d/render}/ColorTransformBatcher.js +11 -5
  499. package/dist/two-d/render/ColorTransformBatcher.js.map +1 -0
  500. package/dist/{render → two-d/render}/LayeredSprite.d.ts +3 -3
  501. package/dist/two-d/render/LayeredSprite.d.ts.map +1 -0
  502. package/dist/two-d/render/LayeredSprite.js.map +1 -0
  503. package/dist/two-d/render/Minimap.d.ts.map +1 -0
  504. package/dist/{render → two-d/render}/Minimap.js +1 -1
  505. package/dist/two-d/render/Minimap.js.map +1 -0
  506. package/dist/two-d/render/Particles.d.ts +109 -0
  507. package/dist/two-d/render/Particles.d.ts.map +1 -0
  508. package/dist/two-d/render/Particles.js +178 -0
  509. package/dist/two-d/render/Particles.js.map +1 -0
  510. package/dist/two-d/render/Projectile.d.ts.map +1 -0
  511. package/dist/two-d/render/Projectile.js.map +1 -0
  512. package/dist/two-d/render/ScreenEffects.d.ts +71 -0
  513. package/dist/two-d/render/ScreenEffects.d.ts.map +1 -0
  514. package/dist/two-d/render/ScreenEffects.js +133 -0
  515. package/dist/two-d/render/ScreenEffects.js.map +1 -0
  516. package/dist/two-d/render/Shape2D.d.ts +40 -0
  517. package/dist/two-d/render/Shape2D.d.ts.map +1 -0
  518. package/dist/two-d/render/Shape2D.js +40 -0
  519. package/dist/two-d/render/Shape2D.js.map +1 -0
  520. package/dist/{render → two-d/render}/SpriteSheet.d.ts +9 -6
  521. package/dist/two-d/render/SpriteSheet.d.ts.map +1 -0
  522. package/dist/{render → two-d/render}/SpriteSheet.js +8 -1
  523. package/dist/two-d/render/SpriteSheet.js.map +1 -0
  524. package/dist/two-d/render/StatusVisuals.d.ts.map +1 -0
  525. package/dist/two-d/render/StatusVisuals.js.map +1 -0
  526. package/dist/two-d/render/TileMap.d.ts.map +1 -0
  527. package/dist/{render → two-d/render}/TileMap.js +1 -1
  528. package/dist/two-d/render/TileMap.js.map +1 -0
  529. package/dist/{rpg → two-d/render}/TiledMap.d.ts +2 -2
  530. package/dist/two-d/render/TiledMap.d.ts.map +1 -0
  531. package/dist/{rpg → two-d/render}/TiledMap.js +2 -2
  532. package/dist/two-d/render/TiledMap.js.map +1 -0
  533. package/dist/{render → two-d/render}/TintedSprite.d.ts +3 -2
  534. package/dist/two-d/render/TintedSprite.d.ts.map +1 -0
  535. package/dist/{render → two-d/render}/TintedSprite.js +5 -1
  536. package/dist/two-d/render/TintedSprite.js.map +1 -0
  537. package/dist/two-d/render/Types2D.d.ts +27 -0
  538. package/dist/two-d/render/Types2D.d.ts.map +1 -0
  539. package/dist/two-d/render/Types2D.js +6 -0
  540. package/dist/two-d/render/Types2D.js.map +1 -0
  541. package/dist/two-d/render/Viewport.d.ts.map +1 -0
  542. package/dist/two-d/render/Viewport.js.map +1 -0
  543. package/dist/{render → two-d/render}/index.d.ts +9 -0
  544. package/dist/two-d/render/index.d.ts.map +1 -0
  545. package/dist/{render → two-d/render}/index.js +5 -0
  546. package/dist/two-d/render/index.js.map +1 -0
  547. package/dist/{stage → two-d/stage}/DialogueStage.d.ts +16 -0
  548. package/dist/two-d/stage/DialogueStage.d.ts.map +1 -0
  549. package/dist/{stage → two-d/stage}/DialogueStage.js +17 -1
  550. package/dist/two-d/stage/DialogueStage.js.map +1 -0
  551. package/dist/two-d/stage/index.d.ts.map +1 -0
  552. package/dist/two-d/stage/index.js.map +1 -0
  553. package/dist/{stage → two-d/stage}/script.d.ts +20 -0
  554. package/dist/two-d/stage/script.d.ts.map +1 -0
  555. package/dist/{stage → two-d/stage}/script.js +0 -0
  556. package/dist/two-d/stage/script.js.map +1 -0
  557. package/dist/{stage → two-d/stage}/twee.d.ts +11 -0
  558. package/dist/two-d/stage/twee.d.ts.map +1 -0
  559. package/dist/{stage → two-d/stage}/twee.js +11 -0
  560. package/dist/two-d/stage/twee.js.map +1 -0
  561. package/dist/two-d/ui/Bar.d.ts.map +1 -0
  562. package/dist/two-d/ui/Bar.js.map +1 -0
  563. package/dist/two-d/ui/BitmapLabel.d.ts.map +1 -0
  564. package/dist/two-d/ui/BitmapLabel.js.map +1 -0
  565. package/dist/{ui → two-d/ui}/Button.d.ts +11 -4
  566. package/dist/two-d/ui/Button.d.ts.map +1 -0
  567. package/dist/{ui → two-d/ui}/Button.js +20 -4
  568. package/dist/two-d/ui/Button.js.map +1 -0
  569. package/dist/two-d/ui/EventDialogue.d.ts +23 -0
  570. package/dist/two-d/ui/EventDialogue.d.ts.map +1 -0
  571. package/dist/two-d/ui/EventDialogue.js +27 -0
  572. package/dist/two-d/ui/EventDialogue.js.map +1 -0
  573. package/dist/two-d/ui/FloatingText.d.ts.map +1 -0
  574. package/dist/two-d/ui/FloatingText.js.map +1 -0
  575. package/dist/{ui → two-d/ui}/HelpScreen.d.ts +1 -1
  576. package/dist/two-d/ui/HelpScreen.d.ts.map +1 -0
  577. package/dist/two-d/ui/HelpScreen.js.map +1 -0
  578. package/dist/{ui → two-d/ui}/IconGrid.d.ts +3 -2
  579. package/dist/two-d/ui/IconGrid.d.ts.map +1 -0
  580. package/dist/two-d/ui/IconGrid.js.map +1 -0
  581. package/dist/two-d/ui/Label.d.ts.map +1 -0
  582. package/dist/two-d/ui/Label.js.map +1 -0
  583. package/dist/{ui → two-d/ui}/ListView.d.ts +3 -2
  584. package/dist/two-d/ui/ListView.d.ts.map +1 -0
  585. package/dist/two-d/ui/ListView.js.map +1 -0
  586. package/dist/{ui → two-d/ui}/LoadingScreen.d.ts +1 -1
  587. package/dist/two-d/ui/LoadingScreen.d.ts.map +1 -0
  588. package/dist/two-d/ui/LoadingScreen.js.map +1 -0
  589. package/dist/{ui → two-d/ui}/MessageBox.d.ts +1 -1
  590. package/dist/two-d/ui/MessageBox.d.ts.map +1 -0
  591. package/dist/two-d/ui/MessageBox.js.map +1 -0
  592. package/dist/{ui → two-d/ui}/NinePatch.d.ts +3 -2
  593. package/dist/two-d/ui/NinePatch.d.ts.map +1 -0
  594. package/dist/{ui → two-d/ui}/NinePatch.js +1 -1
  595. package/dist/two-d/ui/NinePatch.js.map +1 -0
  596. package/dist/{ui → two-d/ui}/RebindScreen.d.ts +1 -1
  597. package/dist/two-d/ui/RebindScreen.d.ts.map +1 -0
  598. package/dist/{ui → two-d/ui}/RebindScreen.js +1 -1
  599. package/dist/two-d/ui/RebindScreen.js.map +1 -0
  600. package/dist/two-d/ui/StatsScreen.d.ts.map +1 -0
  601. package/dist/two-d/ui/StatsScreen.js.map +1 -0
  602. package/dist/{ui → two-d/ui}/Toast.d.ts +2 -1
  603. package/dist/two-d/ui/Toast.d.ts.map +1 -0
  604. package/dist/{ui → two-d/ui}/Toast.js +1 -1
  605. package/dist/two-d/ui/Toast.js.map +1 -0
  606. package/dist/two-d/ui/Tooltip.d.ts +94 -0
  607. package/dist/two-d/ui/Tooltip.d.ts.map +1 -0
  608. package/dist/two-d/ui/Tooltip.js +149 -0
  609. package/dist/two-d/ui/Tooltip.js.map +1 -0
  610. package/dist/two-d/ui/VerticalLabel.d.ts.map +1 -0
  611. package/dist/two-d/ui/VerticalLabel.js.map +1 -0
  612. package/dist/{ui → two-d/ui}/Window.d.ts +2 -2
  613. package/dist/two-d/ui/Window.d.ts.map +1 -0
  614. package/dist/{ui → two-d/ui}/Window.js +1 -1
  615. package/dist/two-d/ui/Window.js.map +1 -0
  616. package/dist/two-d/ui/WindowStack.d.ts.map +1 -0
  617. package/dist/{ui → two-d/ui}/WindowStack.js +1 -1
  618. package/dist/two-d/ui/WindowStack.js.map +1 -0
  619. package/dist/{ui → two-d/ui}/index.d.ts +4 -0
  620. package/dist/two-d/ui/index.d.ts.map +1 -0
  621. package/dist/{ui → two-d/ui}/index.js +2 -0
  622. package/dist/two-d/ui/index.js.map +1 -0
  623. package/dist/{ui → two-d/ui}/theme.d.ts +4 -4
  624. package/dist/two-d/ui/theme.d.ts.map +1 -0
  625. package/dist/{ui → two-d/ui}/theme.js +1 -1
  626. package/dist/two-d/ui/theme.js.map +1 -0
  627. package/dist/version.d.ts +1 -1
  628. package/dist/version.js +1 -1
  629. package/dist/world/Encounters.d.ts +12 -0
  630. package/dist/world/Encounters.d.ts.map +1 -1
  631. package/dist/world/Encounters.js +1 -1
  632. package/dist/world/Encounters.js.map +1 -1
  633. package/dist/world/Environment.d.ts +27 -4
  634. package/dist/world/Environment.d.ts.map +1 -1
  635. package/dist/world/Environment.js +33 -10
  636. package/dist/world/Environment.js.map +1 -1
  637. package/dist/world/Overworld.d.ts +14 -0
  638. package/dist/world/Overworld.d.ts.map +1 -1
  639. package/dist/world/Overworld.js +14 -0
  640. package/dist/world/Overworld.js.map +1 -1
  641. package/dist/world/TurnClock.d.ts +16 -0
  642. package/dist/world/TurnClock.d.ts.map +1 -1
  643. package/dist/world/TurnClock.js +16 -0
  644. package/dist/world/TurnClock.js.map +1 -1
  645. package/dist/world/World.d.ts +14 -0
  646. package/dist/world/World.d.ts.map +1 -1
  647. package/dist/world/World.js +14 -0
  648. package/dist/world/World.js.map +1 -1
  649. package/package.json +228 -147
  650. package/dist/core/Game.d.ts.map +0 -1
  651. package/dist/core/Game.js.map +0 -1
  652. package/dist/render/ActorAnimator.d.ts.map +0 -1
  653. package/dist/render/ActorAnimator.js.map +0 -1
  654. package/dist/render/AnimatedSprite.d.ts.map +0 -1
  655. package/dist/render/AnimatedSprite.js.map +0 -1
  656. package/dist/render/Autotile.d.ts.map +0 -1
  657. package/dist/render/Autotile.js.map +0 -1
  658. package/dist/render/Camera.d.ts.map +0 -1
  659. package/dist/render/Camera.js.map +0 -1
  660. package/dist/render/Capabilities.d.ts.map +0 -1
  661. package/dist/render/Capabilities.js.map +0 -1
  662. package/dist/render/ColorBlindness.d.ts.map +0 -1
  663. package/dist/render/ColorBlindness.js.map +0 -1
  664. package/dist/render/ColorTransformBatcher.d.ts.map +0 -1
  665. package/dist/render/ColorTransformBatcher.js.map +0 -1
  666. package/dist/render/LayeredSprite.d.ts.map +0 -1
  667. package/dist/render/LayeredSprite.js.map +0 -1
  668. package/dist/render/Minimap.d.ts.map +0 -1
  669. package/dist/render/Minimap.js.map +0 -1
  670. package/dist/render/Projectile.d.ts.map +0 -1
  671. package/dist/render/Projectile.js.map +0 -1
  672. package/dist/render/SpriteSheet.d.ts.map +0 -1
  673. package/dist/render/SpriteSheet.js.map +0 -1
  674. package/dist/render/StatusVisuals.d.ts.map +0 -1
  675. package/dist/render/StatusVisuals.js.map +0 -1
  676. package/dist/render/TileMap.d.ts.map +0 -1
  677. package/dist/render/TileMap.js.map +0 -1
  678. package/dist/render/TintedSprite.d.ts.map +0 -1
  679. package/dist/render/TintedSprite.js.map +0 -1
  680. package/dist/render/Viewport.d.ts.map +0 -1
  681. package/dist/render/Viewport.js.map +0 -1
  682. package/dist/render/index.d.ts.map +0 -1
  683. package/dist/render/index.js.map +0 -1
  684. package/dist/rpg/TiledMap.d.ts.map +0 -1
  685. package/dist/rpg/TiledMap.js.map +0 -1
  686. package/dist/stage/DialogueStage.d.ts.map +0 -1
  687. package/dist/stage/DialogueStage.js.map +0 -1
  688. package/dist/stage/index.d.ts.map +0 -1
  689. package/dist/stage/index.js.map +0 -1
  690. package/dist/stage/script.d.ts.map +0 -1
  691. package/dist/stage/script.js.map +0 -1
  692. package/dist/stage/twee.d.ts.map +0 -1
  693. package/dist/stage/twee.js.map +0 -1
  694. package/dist/ui/Bar.d.ts.map +0 -1
  695. package/dist/ui/Bar.js.map +0 -1
  696. package/dist/ui/BitmapLabel.d.ts.map +0 -1
  697. package/dist/ui/BitmapLabel.js.map +0 -1
  698. package/dist/ui/Button.d.ts.map +0 -1
  699. package/dist/ui/Button.js.map +0 -1
  700. package/dist/ui/FloatingText.d.ts.map +0 -1
  701. package/dist/ui/FloatingText.js.map +0 -1
  702. package/dist/ui/HelpScreen.d.ts.map +0 -1
  703. package/dist/ui/HelpScreen.js.map +0 -1
  704. package/dist/ui/IconGrid.d.ts.map +0 -1
  705. package/dist/ui/IconGrid.js.map +0 -1
  706. package/dist/ui/Label.d.ts.map +0 -1
  707. package/dist/ui/Label.js.map +0 -1
  708. package/dist/ui/ListView.d.ts.map +0 -1
  709. package/dist/ui/ListView.js.map +0 -1
  710. package/dist/ui/LoadingScreen.d.ts.map +0 -1
  711. package/dist/ui/LoadingScreen.js.map +0 -1
  712. package/dist/ui/MessageBox.d.ts.map +0 -1
  713. package/dist/ui/MessageBox.js.map +0 -1
  714. package/dist/ui/NinePatch.d.ts.map +0 -1
  715. package/dist/ui/NinePatch.js.map +0 -1
  716. package/dist/ui/RebindScreen.d.ts.map +0 -1
  717. package/dist/ui/RebindScreen.js.map +0 -1
  718. package/dist/ui/StatsScreen.d.ts.map +0 -1
  719. package/dist/ui/StatsScreen.js.map +0 -1
  720. package/dist/ui/Toast.d.ts.map +0 -1
  721. package/dist/ui/Toast.js.map +0 -1
  722. package/dist/ui/VerticalLabel.d.ts.map +0 -1
  723. package/dist/ui/VerticalLabel.js.map +0 -1
  724. package/dist/ui/Window.d.ts.map +0 -1
  725. package/dist/ui/Window.js.map +0 -1
  726. package/dist/ui/WindowStack.d.ts.map +0 -1
  727. package/dist/ui/WindowStack.js.map +0 -1
  728. package/dist/ui/index.d.ts.map +0 -1
  729. package/dist/ui/index.js.map +0 -1
  730. package/dist/ui/theme.d.ts.map +0 -1
  731. package/dist/ui/theme.js.map +0 -1
  732. /package/dist/{render → two-d/render}/ActorAnimator.d.ts +0 -0
  733. /package/dist/{render → two-d/render}/ActorAnimator.js +0 -0
  734. /package/dist/{render → two-d/render}/AnimatedSprite.js +0 -0
  735. /package/dist/{render → two-d/render}/Autotile.d.ts +0 -0
  736. /package/dist/{render → two-d/render}/Autotile.js +0 -0
  737. /package/dist/{render → two-d/render}/Camera.d.ts +0 -0
  738. /package/dist/{render → two-d/render}/Capabilities.d.ts +0 -0
  739. /package/dist/{render → two-d/render}/Capabilities.js +0 -0
  740. /package/dist/{render → two-d/render}/ColorBlindness.d.ts +0 -0
  741. /package/dist/{render → two-d/render}/ColorBlindness.js +0 -0
  742. /package/dist/{render → two-d/render}/LayeredSprite.js +0 -0
  743. /package/dist/{render → two-d/render}/Minimap.d.ts +0 -0
  744. /package/dist/{render → two-d/render}/Projectile.d.ts +0 -0
  745. /package/dist/{render → two-d/render}/Projectile.js +0 -0
  746. /package/dist/{render → two-d/render}/StatusVisuals.d.ts +0 -0
  747. /package/dist/{render → two-d/render}/StatusVisuals.js +0 -0
  748. /package/dist/{render → two-d/render}/TileMap.d.ts +0 -0
  749. /package/dist/{render → two-d/render}/Viewport.d.ts +0 -0
  750. /package/dist/{render → two-d/render}/Viewport.js +0 -0
  751. /package/dist/{stage → two-d/stage}/index.d.ts +0 -0
  752. /package/dist/{stage → two-d/stage}/index.js +0 -0
  753. /package/dist/{ui → two-d/ui}/Bar.d.ts +0 -0
  754. /package/dist/{ui → two-d/ui}/Bar.js +0 -0
  755. /package/dist/{ui → two-d/ui}/BitmapLabel.d.ts +0 -0
  756. /package/dist/{ui → two-d/ui}/BitmapLabel.js +0 -0
  757. /package/dist/{ui → two-d/ui}/FloatingText.d.ts +0 -0
  758. /package/dist/{ui → two-d/ui}/FloatingText.js +0 -0
  759. /package/dist/{ui → two-d/ui}/HelpScreen.js +0 -0
  760. /package/dist/{ui → two-d/ui}/IconGrid.js +0 -0
  761. /package/dist/{ui → two-d/ui}/Label.d.ts +0 -0
  762. /package/dist/{ui → two-d/ui}/Label.js +0 -0
  763. /package/dist/{ui → two-d/ui}/ListView.js +0 -0
  764. /package/dist/{ui → two-d/ui}/LoadingScreen.js +0 -0
  765. /package/dist/{ui → two-d/ui}/MessageBox.js +0 -0
  766. /package/dist/{ui → two-d/ui}/StatsScreen.d.ts +0 -0
  767. /package/dist/{ui → two-d/ui}/StatsScreen.js +0 -0
  768. /package/dist/{ui → two-d/ui}/VerticalLabel.d.ts +0 -0
  769. /package/dist/{ui → two-d/ui}/VerticalLabel.js +0 -0
  770. /package/dist/{ui → two-d/ui}/WindowStack.d.ts +0 -0
@@ -11,6 +11,23 @@
11
11
  * Points are deliberately only a ledger here, not a spend rule: what a point buys is a
12
12
  * game's own design (a stat rank, a talent node), so spending stays game-side the way
13
13
  * `skillCheck` is a dice roll and nothing about who is rolling it.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * import { Advancement, type AdvancementTrack } from '@datamoc/mw_games/actors';
18
+ *
19
+ * const track: AdvancementTrack = {
20
+ * tiers: [
21
+ * { threshold: 5, kind: 'points', points: 2 },
22
+ * { threshold: 10, kind: 'branch', options: [{ id: 'ranger' }, { id: 'mage' }] },
23
+ * ],
24
+ * };
25
+ *
26
+ * const advancement = new Advancement(track);
27
+ * advancement.grant(6); // opens tier 0, granting 2 points
28
+ * advancement.grant(10); // opens tier 1, a branch to commit to
29
+ * advancement.choose(1, 'ranger', 10);
30
+ * ```
14
31
  */
15
32
  export type AdvancementTierKind = 'points' | 'branch' | 'capstone';
16
33
  export interface AdvancementOption {
@@ -1 +1 @@
1
- {"version":3,"file":"Advancement.d.ts","sourceRoot":"","sources":["../../src/actors/Advancement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEnE,MAAM,WAAW,iBAAiB;IACjC,EAAE,EAAE,MAAM,CAAC;IAEX,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC/B,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAElB,IAAI,EAAE,mBAAmB,CAAC;IAE1B,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,sFAAsF;IACtF,OAAO,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;CAClC;AAED,qBAAa,WAAW;IACvB,OAAO,CAAC,KAAK,CAAmB;IAEhC,0DAA0D;IAC1D,OAAO,CAAC,YAAY,CAAK;IAEzB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,OAAO,CAA6B;IAE5C,YAAY,KAAK,EAAE,gBAAgB,EAElC;IAED,4BAA4B;IAC5B,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,yEAAyE;IACzE,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAMjC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAW3B;IAED,+EAA+E;IAC/E,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAI7B;IAED;;;;OAIG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAU/D;IAED,yEAAyE;IACzE,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEvC;IAED,MAAM,IAAI;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;KAAE,CAE/E;IAED,mHAAmH;IACnH,MAAM,CAAC,QAAQ,CACd,KAAK,EAAE,gBAAgB,EACvB,IAAI,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;KAAE,GAC1E,WAAW,CAMb;CACD"}
1
+ {"version":3,"file":"Advancement.d.ts","sourceRoot":"","sources":["../../src/actors/Advancement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEnE,MAAM,WAAW,iBAAiB;IACjC,EAAE,EAAE,MAAM,CAAC;IAEX,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC/B,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAElB,IAAI,EAAE,mBAAmB,CAAC;IAE1B,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,sFAAsF;IACtF,OAAO,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;CAClC;AAED,qBAAa,WAAW;IACvB,OAAO,CAAC,KAAK,CAAmB;IAEhC,0DAA0D;IAC1D,OAAO,CAAC,YAAY,CAAK;IAEzB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,OAAO,CAA6B;IAE5C,YAAY,KAAK,EAAE,gBAAgB,EAElC;IAED,4BAA4B;IAC5B,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,yEAAyE;IACzE,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAMjC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAW3B;IAED,+EAA+E;IAC/E,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAI7B;IAED;;;;OAIG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAU/D;IAED,yEAAyE;IACzE,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEvC;IAED,MAAM,IAAI;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;KAAE,CAE/E;IAED,mHAAmH;IACnH,MAAM,CAAC,QAAQ,CACd,KAAK,EAAE,gBAAgB,EACvB,IAAI,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;KAAE,GAC1E,WAAW,CAMb;CACD"}
@@ -11,6 +11,23 @@
11
11
  * Points are deliberately only a ledger here, not a spend rule: what a point buys is a
12
12
  * game's own design (a stat rank, a talent node), so spending stays game-side the way
13
13
  * `skillCheck` is a dice roll and nothing about who is rolling it.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * import { Advancement, type AdvancementTrack } from '@datamoc/mw_games/actors';
18
+ *
19
+ * const track: AdvancementTrack = {
20
+ * tiers: [
21
+ * { threshold: 5, kind: 'points', points: 2 },
22
+ * { threshold: 10, kind: 'branch', options: [{ id: 'ranger' }, { id: 'mage' }] },
23
+ * ],
24
+ * };
25
+ *
26
+ * const advancement = new Advancement(track);
27
+ * advancement.grant(6); // opens tier 0, granting 2 points
28
+ * advancement.grant(10); // opens tier 1, a branch to commit to
29
+ * advancement.choose(1, 'ranger', 10);
30
+ * ```
14
31
  */
15
32
  export class Advancement {
16
33
  constructor(track) {
@@ -1 +1 @@
1
- {"version":3,"file":"Advancement.js","sourceRoot":"","sources":["../../src/actors/Advancement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA4BH,MAAM,OAAO,WAAW;IASvB,YAAY,KAAuB;QANnC,0DAA0D;QAClD,iBAAY,GAAG,CAAC,CAAC;QAEjB,YAAO,GAAG,CAAC,CAAC;QACZ,YAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;QAG3C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,4BAA4B;IAC5B,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,yEAAyE;IACzE,SAAS,CAAC,KAAa;QACtB,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACxC,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS;gBAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACZ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAa;QAClB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC;YAC9G,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5B,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;gBACjC,OAAO,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;YAC7B,CAAC;YACD,IAAI,CAAC,YAAY,EAAE,CAAC;QACrB,CAAC;QACD,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,+EAA+E;IAC/E,KAAK,CAAC,MAAc;QACnB,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM;YAAE,OAAO,KAAK,CAAC;QACxC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC;QACvB,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,SAAiB,EAAE,QAAgB,EAAE,KAAa;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,SAAS,kCAAkC,CAAC,CAAC;QACjG,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,SAAS,qBAAqB,CAAC,CAAC;QACpF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,SAAS,qBAAqB,CAAC,CAAC;QACzF,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,KAAK,CAAC,QAAQ,SAAS,mBAAmB,QAAQ,GAAG,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,yEAAyE;IACzE,MAAM,CAAC,SAAiB;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;IAC5C,CAAC;IAED,MAAM;QACL,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/F,CAAC;IAED,mHAAmH;IACnH,MAAM,CAAC,QAAQ,CACd,KAAuB,EACvB,IAA4E;QAE5E,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;QAC3C,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAC7C,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO;YAAE,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACjF,OAAO,WAAW,CAAC;IACpB,CAAC;CACD"}
1
+ {"version":3,"file":"Advancement.js","sourceRoot":"","sources":["../../src/actors/Advancement.ts"],"names":[],"mappings":"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"}
@@ -9,11 +9,44 @@ import type { InventoryItem } from './Inventory.ts';
9
9
  * answers to (`strike`, `defend`, or a `passive` that is always on), how likely it is
10
10
  * relative to its table, and whether it is a curse - and the game interprets the id
11
11
  * itself when that trigger fires, the same way `Move.effects` is data `mwg` never reads.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * import { rollAffix, applyAffix, affixOf, removeAffix, copyAffix, matchesContext, type AffixTable } from '@datamoc/mw_games/actors';
16
+ *
17
+ * const table: AffixTable = { entries: [{ id: 'flaming', trigger: 'strike', weight: 1, kinds: ['melee'] }] };
18
+ * const sword = { id: 'sword', quantity: 1 };
19
+ * const betterSword = { id: 'sword', quantity: 1, instanceId: 'b' };
20
+ *
21
+ * const affix = rollAffix(table);
22
+ * if (affix) applyAffix(sword, affix);
23
+ * console.log(affixOf(sword)); // 'flaming'
24
+ *
25
+ * if (affix && matchesContext(affix, { trigger: 'strike', kind: 'melee' })) {
26
+ * console.log('flaming affix fires on this melee hit');
27
+ * }
28
+ *
29
+ * copyAffix(sword, betterSword); // carries the enchantment onto an upgraded item
30
+ * removeAffix(sword);
31
+ * ```
12
32
  */
13
33
  export type AffixTrigger = 'strike' | 'defend' | 'passive';
34
+ /** the kind of action a `strike`/`defend` trigger fired from - melee, thrown, a bow, an ability */
35
+ export type AttackKind = 'melee' | 'thrown' | 'bow' | 'ability' | string;
36
+ /** what actually happened, for `matchesContext` to check an affix against */
37
+ export interface AffixContext {
38
+ trigger: AffixTrigger;
39
+ kind?: AttackKind;
40
+ }
14
41
  export interface AffixDef {
15
42
  id: string;
16
43
  trigger: AffixTrigger;
44
+ /**
45
+ * restricts this affix to specific attack kinds within its trigger (a "bow only" affix on
46
+ * a `strike` trigger); omitted, the affix fires for any kind, the same as before this
47
+ * existed
48
+ */
49
+ kinds?: readonly AttackKind[];
17
50
  /** relative likelihood within its own table; 0 never rolls */
18
51
  weight: number;
19
52
  /** a curse locks the item (see `EquipmentSlots`' lock option) once identified */
@@ -41,4 +74,17 @@ export declare function affixOf(item: InventoryItem): string | undefined;
41
74
  export declare function applyAffix(item: InventoryItem, affix: AffixDef): void;
42
75
  /** removes an item's affix (and its curse mark, if the affix was a curse) */
43
76
  export declare function removeAffix(item: InventoryItem): void;
77
+ /**
78
+ * Copies `from`'s affix (and curse mark) onto `to`, replacing whatever `to` already had -
79
+ * "transfer" an enchantment or rune between item instances. Clears `to`'s affix when `from`
80
+ * carries none. A true transfer (move rather than copy) is this plus `removeAffix(from)`,
81
+ * left to the caller rather than a second near-identical function.
82
+ */
83
+ export declare function copyAffix(from: InventoryItem, to: InventoryItem): void;
84
+ /**
85
+ * Whether `affix` should fire for `context`: the trigger must match, and when the affix
86
+ * restricts itself to specific attack `kinds`, `context.kind` must be one of them. An affix
87
+ * with no `kinds` fires for any attack kind, unchanged from before this existed.
88
+ */
89
+ export declare function matchesContext(affix: AffixDef, context: AffixContext): boolean;
44
90
  //# sourceMappingURL=Affix.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Affix.d.ts","sourceRoot":"","sources":["../../src/actors/Affix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3D,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,MAAM,CAAC;IAEX,OAAO,EAAE,YAAY,CAAC;IAEtB,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IAEf,iFAAiF;IACjF,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IAC1B,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,QAAQ,GAAG,IAAI,CAK5D;AAED,yFAAyF;AACzF,wBAAgB,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI,CAGrE;AAED,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAGrD"}
1
+ {"version":3,"file":"Affix.d.ts","sourceRoot":"","sources":["../../src/actors/Affix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3D,mGAAmG;AACnG,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;AAEzE,6EAA6E;AAC7E,MAAM,WAAW,YAAY;IAC5B,OAAO,EAAE,YAAY,CAAC;IACtB,IAAI,CAAC,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,MAAM,CAAC;IAEX,OAAO,EAAE,YAAY,CAAC;IAEtB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAE9B,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IAEf,iFAAiF;IACjF,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IAC1B,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,QAAQ,GAAG,IAAI,CAK5D;AAED,yFAAyF;AACzF,wBAAgB,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI,CAOrE;AAED,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAGrD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,aAAa,GAAG,IAAI,CAOtE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAI9E"}
@@ -10,7 +10,7 @@ export function rollAffix(table) {
10
10
  if (live.length === 0)
11
11
  return null;
12
12
  const index = Random.weighted(live.map((entry) => entry.weight));
13
- return index === -1 ? null : live[index];
13
+ return index === null ? null : live[index];
14
14
  }
15
15
  /** the affix an item carries, if any - stored on the item next to its upgrade `level` */
16
16
  export function affixOf(item) {
@@ -22,9 +22,14 @@ export function affixOf(item) {
22
22
  * wiring them separately.
23
23
  */
24
24
  export function applyAffix(item, affix) {
25
+ const hadAffix = item.affix !== undefined;
25
26
  item.affix = affix.id;
27
+ // The curse bit belongs to the affix currently installed. Replacing a cursed
28
+ // affix with a benign one must not leave the item permanently cursed.
26
29
  if (affix.curse)
27
30
  item.cursed = true;
31
+ else if (hadAffix)
32
+ item.cursed = false;
28
33
  }
29
34
  /** removes an item's affix (and its curse mark, if the affix was a curse) */
30
35
  export function removeAffix(item) {
@@ -32,4 +37,30 @@ export function removeAffix(item) {
32
37
  item.cursed = false;
33
38
  delete item.affix;
34
39
  }
40
+ /**
41
+ * Copies `from`'s affix (and curse mark) onto `to`, replacing whatever `to` already had -
42
+ * "transfer" an enchantment or rune between item instances. Clears `to`'s affix when `from`
43
+ * carries none. A true transfer (move rather than copy) is this plus `removeAffix(from)`,
44
+ * left to the caller rather than a second near-identical function.
45
+ */
46
+ export function copyAffix(from, to) {
47
+ if (from.affix === undefined) {
48
+ removeAffix(to);
49
+ return;
50
+ }
51
+ to.affix = from.affix;
52
+ to.cursed = from.cursed ?? false;
53
+ }
54
+ /**
55
+ * Whether `affix` should fire for `context`: the trigger must match, and when the affix
56
+ * restricts itself to specific attack `kinds`, `context.kind` must be one of them. An affix
57
+ * with no `kinds` fires for any attack kind, unchanged from before this existed.
58
+ */
59
+ export function matchesContext(affix, context) {
60
+ if (affix.trigger !== context.trigger)
61
+ return false;
62
+ if (affix.kinds && (context.kind === undefined || !affix.kinds.includes(context.kind)))
63
+ return false;
64
+ return true;
65
+ }
35
66
  //# sourceMappingURL=Affix.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Affix.js","sourceRoot":"","sources":["../../src/actors/Affix.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAmC5C;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,KAAiB;IAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACjE,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,OAAO,CAAC,IAAmB;IAC1C,OAAO,IAAI,CAAC,KAAK,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAAmB,EAAE,KAAe;IAC9D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC;IACtB,IAAI,KAAK,CAAC,KAAK;QAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACrC,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,WAAW,CAAC,IAAmB;IAC9C,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IAClD,OAAO,IAAI,CAAC,KAAK,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"Affix.js","sourceRoot":"","sources":["../../src/actors/Affix.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAuE5C;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,KAAiB;IAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACjE,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,OAAO,CAAC,IAAmB;IAC1C,OAAO,IAAI,CAAC,KAAK,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAAmB,EAAE,KAAe;IAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC;IAC1C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC;IACtB,8EAA8E;IAC9E,sEAAsE;IACtE,IAAI,KAAK,CAAC,KAAK;QAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SAC/B,IAAI,QAAQ;QAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACxC,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,WAAW,CAAC,IAAmB;IAC9C,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IAClD,OAAO,IAAI,CAAC,KAAK,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,IAAmB,EAAE,EAAiB;IAC/D,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC9B,WAAW,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACR,CAAC;IACD,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACtB,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,KAAe,EAAE,OAAqB;IACpE,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IACpD,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrG,OAAO,IAAI,CAAC;AACb,CAAC"}
@@ -17,6 +17,18 @@ export interface AppearanceTable {
17
17
  /**
18
18
  * Deals each kind a distinct label from a shuffled copy of the pool - pure, so a game
19
19
  * that wants the shuffle scoped (one seed per run, say) wraps it in `Random.withSeed`.
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * import { assignAppearances, Appearances } from '@datamoc/mw_games/actors';
24
+ *
25
+ * const potions = assignAppearances({ kinds: ['healing', 'poison'], labels: ['red', 'blue'] });
26
+ * console.log(potions.get('healing')); // 'red' or 'blue', fixed for this shuffle
27
+ *
28
+ * // Appearances wraps this per category, drawing lazily on first ask and caching for the run
29
+ * const appearances = new Appearances({ potions: { kinds: ['healing', 'poison'], labels: ['red', 'blue'] } });
30
+ * const label = appearances.appearanceOf('potions', 'healing');
31
+ * ```
20
32
  */
21
33
  export declare function assignAppearances(table: AppearanceTable): Map<string, string>;
22
34
  export declare class Appearances {
@@ -1 +1 @@
1
- {"version":3,"file":"Appearances.d.ts","sourceRoot":"","sources":["../../src/actors/Appearances.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,MAAM,WAAW,eAAe;IAC/B,uEAAuE;IACvE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAEzB,gFAAgF;IAChF,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAc7E;AAED,qBAAa,WAAW;IACvB,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,QAAQ,CAA0C;IAE1D,YAAY,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EAElD;IAED,qFAAqF;IACrF,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAWnD;IAED,MAAM,IAAI;QAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAA;KAAE,CAErD;IAED,yHAAyH;IACzH,MAAM,CAAC,QAAQ,CACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EACvC,IAAI,EAAE;QAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAA;KAAE,GAChD,WAAW,CAIb;CACD"}
1
+ {"version":3,"file":"Appearances.d.ts","sourceRoot":"","sources":["../../src/actors/Appearances.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,MAAM,WAAW,eAAe;IAC/B,uEAAuE;IACvE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAEzB,gFAAgF;IAChF,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAc7E;AAED,qBAAa,WAAW;IACvB,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,QAAQ,CAA0C;IAE1D,YAAY,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EAElD;IAED,qFAAqF;IACrF,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAWnD;IAED,MAAM,IAAI;QAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAA;KAAE,CAErD;IAED,yHAAyH;IACzH,MAAM,CAAC,QAAQ,CACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EACvC,IAAI,EAAE;QAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAA;KAAE,GAChD,WAAW,CAIb;CACD"}
@@ -2,6 +2,18 @@ import * as Random from '../core/Random.js';
2
2
  /**
3
3
  * Deals each kind a distinct label from a shuffled copy of the pool - pure, so a game
4
4
  * that wants the shuffle scoped (one seed per run, say) wraps it in `Random.withSeed`.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * import { assignAppearances, Appearances } from '@datamoc/mw_games/actors';
9
+ *
10
+ * const potions = assignAppearances({ kinds: ['healing', 'poison'], labels: ['red', 'blue'] });
11
+ * console.log(potions.get('healing')); // 'red' or 'blue', fixed for this shuffle
12
+ *
13
+ * // Appearances wraps this per category, drawing lazily on first ask and caching for the run
14
+ * const appearances = new Appearances({ potions: { kinds: ['healing', 'poison'], labels: ['red', 'blue'] } });
15
+ * const label = appearances.appearanceOf('potions', 'healing');
16
+ * ```
5
17
  */
6
18
  export function assignAppearances(table) {
7
19
  if (table.labels.length < table.kinds.length) {
@@ -1 +1 @@
1
- {"version":3,"file":"Appearances.js","sourceRoot":"","sources":["../../src/actors/Appearances.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Appearances.js","sourceRoot":"","sources":["../../src/actors/Appearances.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,22 @@ export interface AuraParticipant {
21
21
  * each carrier last time: a unit that just became adjacent gets the carrier's modifiers added,
22
22
  * one that just left loses exactly those modifiers, and one that stays adjacent is left alone
23
23
  * rather than having its modifiers reapplied on every tick.
24
+ *
25
+ * @example
26
+ * ```ts
27
+ * import { AuraField, StatBlock, type AuraParticipant } from '@datamoc/mw_games/actors';
28
+ *
29
+ * const field = new AuraField();
30
+ * const captain: AuraParticipant = {
31
+ * stats: new StatBlock({ base: {} }),
32
+ * aura: { name: 'rally', modifiers: [{ stat: 'attack', op: 'add', value: 2 }] },
33
+ * };
34
+ * const soldier: AuraParticipant = { stats: new StatBlock({ base: { attack: 5 } }) };
35
+ *
36
+ * // call every time positions change, with whatever "adjacent" means on this grid
37
+ * field.update([captain, soldier], (a, b) => a === captain && b === soldier);
38
+ * console.log(soldier.stats.get('attack')); // 7, while adjacent
39
+ * ```
24
40
  */
25
41
  export declare class AuraField {
26
42
  private affected;
@@ -1 +1 @@
1
- {"version":3,"file":"Aura.d.ts","sourceRoot":"","sources":["../../src/actors/Aura.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1D,+FAA+F;AAC/F,MAAM,WAAW,OAAO;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,SAAS,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;CAC/C;AAED,8FAA8F;AAC9F,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CACtB;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,SAAS;IAGrB,OAAO,CAAC,QAAQ,CAA4D;IAE5E,MAAM,CAAC,YAAY,EAAE,SAAS,eAAe,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,eAAe,KAAK,OAAO,GAAG,IAAI,CA6CtH;CACD"}
1
+ {"version":3,"file":"Aura.d.ts","sourceRoot":"","sources":["../../src/actors/Aura.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1D,+FAA+F;AAC/F,MAAM,WAAW,OAAO;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,SAAS,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;CAC/C;AAED,8FAA8F;AAC9F,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,SAAS;IAGrB,OAAO,CAAC,QAAQ,CAA4D;IAE5E,MAAM,CAAC,YAAY,EAAE,SAAS,eAAe,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,eAAe,KAAK,OAAO,GAAG,IAAI,CA6CtH;CACD"}
@@ -11,6 +11,22 @@ import { StatBlock } from './StatBlock.js';
11
11
  * each carrier last time: a unit that just became adjacent gets the carrier's modifiers added,
12
12
  * one that just left loses exactly those modifiers, and one that stays adjacent is left alone
13
13
  * rather than having its modifiers reapplied on every tick.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * import { AuraField, StatBlock, type AuraParticipant } from '@datamoc/mw_games/actors';
18
+ *
19
+ * const field = new AuraField();
20
+ * const captain: AuraParticipant = {
21
+ * stats: new StatBlock({ base: {} }),
22
+ * aura: { name: 'rally', modifiers: [{ stat: 'attack', op: 'add', value: 2 }] },
23
+ * };
24
+ * const soldier: AuraParticipant = { stats: new StatBlock({ base: { attack: 5 } }) };
25
+ *
26
+ * // call every time positions change, with whatever "adjacent" means on this grid
27
+ * field.update([captain, soldier], (a, b) => a === captain && b === soldier);
28
+ * console.log(soldier.stats.get('attack')); // 7, while adjacent
29
+ * ```
14
30
  */
15
31
  export class AuraField {
16
32
  constructor() {
@@ -1 +1 @@
1
- {"version":3,"file":"Aura.js","sourceRoot":"","sources":["../../src/actors/Aura.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAiB,MAAM,gBAAgB,CAAC;AAc1D;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,SAAS;IAAtB;QACC,oFAAoF;QACpF,0FAA0F;QAClF,aAAQ,GAAG,IAAI,GAAG,EAAiD,CAAC;IAgD7E,CAAC;IA9CA,MAAM,CAAC,YAAwC,EAAE,UAA+D;QAC/G,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAA4C,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAChG,MAAM,UAAU,GAAG,IAAI,GAAG,CAAkB,QAAQ,CAAC,CAAC;QAEtD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAChC,IAAI,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACxB,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;gBAC9B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;YAC/C,CAAC;YAED,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;gBAClC,IAAI,KAAK,KAAK,OAAO;oBAAE,SAAS;gBAChC,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC5C,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAE5C,IAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;oBACzB,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;oBACtD,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS;wBAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;oBAC3G,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBACzC,CAAC;qBAAM,IAAI,CAAC,QAAQ,IAAI,MAAM,EAAE,CAAC;oBAChC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;oBACxC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACjC,CAAC;YACF,CAAC;YAED,gFAAgF;YAChF,wEAAwE;YACxE,8EAA8E;YAC9E,4BAA4B;YAC5B,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,EAAE,CAAC;gBACtD,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;oBAAE,SAAS;gBAChC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBACxC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;QACF,CAAC;QAED,qFAAqF;QACrF,oFAAoF;QACpF,KAAK,MAAM,CAAC,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/D,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,SAAS;YACtC,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,iBAAiB;gBAAE,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACzF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;IACF,CAAC;CACD"}
1
+ {"version":3,"file":"Aura.js","sourceRoot":"","sources":["../../src/actors/Aura.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * A shield/barrier pool absorbed before HP, decaying on its own each tick unlike a plain
3
+ * `StatBlock` stat, which only ever changes when something explicitly touches it. Several
4
+ * layers can be held at once - a fresh cast over an older one, a ward stacked on a shield -
5
+ * absorption always drains the most recently added layer first, so a ward cast on top of a
6
+ * standing shield breaks before the shield underneath it does, matching how a layered proc
7
+ * family (barrier-then-shield, shield-then-barrier) is meant to read regardless of order cast.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import { Barrier } from '@datamoc/mw_games/actors';
12
+ *
13
+ * const barrier = new Barrier();
14
+ * barrier.add(20); // a shield spell
15
+ * barrier.add(10, 2); // a ward on top, decaying 2 per turn on its own
16
+ *
17
+ * const absorbed = barrier.absorb(15); // drains the ward first, then spills into the shield
18
+ * barrier.advance(1); // one turn of decay
19
+ * console.log(barrier.total);
20
+ * ```
21
+ */
22
+ export interface BarrierLayer {
23
+ amount: number;
24
+ /** how much this layer's `amount` drops per turn advanced; 0 (the default) never decays on its own */
25
+ decayPerTick?: number;
26
+ }
27
+ export declare class Barrier {
28
+ private layers;
29
+ /** adds a new outermost layer; a non-positive amount is a no-op rather than an empty layer */
30
+ add(amount: number, decayPerTick?: number): void;
31
+ /** total absorption currently held, across every layer */
32
+ get total(): number;
33
+ /** how many independent layers are currently held */
34
+ get layerCount(): number;
35
+ /**
36
+ * Absorbs up to `amount` of incoming damage, draining the outermost layer first and
37
+ * spilling into the next one once a layer empties.
38
+ *
39
+ * @returns the amount actually absorbed - never more than `amount`, never more than
40
+ * `total` was before the call - so the caller applies `amount - absorbed` to HP
41
+ */
42
+ absorb(amount: number): number;
43
+ /**
44
+ * Decays every layer by its own `decayPerTick`, removing any that reach zero or below.
45
+ *
46
+ * Named `advance(turns)` like every other turn-scale ticker here (`TurnClock`, `Charges`,
47
+ * `Field`, `AbilityCycle`) rather than `decay`, so one word means one thing across the
48
+ * framework: `advance` takes whole turns, `update` takes `dt` seconds.
49
+ */
50
+ advance(turns?: number): void;
51
+ /** drops every layer at once - a dispel, a fresh encounter starting clean */
52
+ clear(): void;
53
+ toJSON(): {
54
+ layers: BarrierLayer[];
55
+ };
56
+ static fromJSON(data: {
57
+ layers: BarrierLayer[];
58
+ }): Barrier;
59
+ }
60
+ //# sourceMappingURL=Barrier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Barrier.d.ts","sourceRoot":"","sources":["../../src/actors/Barrier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,MAAM,CAAC;IAEf,sGAAsG;IACtG,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,OAAO;IACnB,OAAO,CAAC,MAAM,CAAsB;IAEpC,8FAA8F;IAC9F,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,SAAI,GAAG,IAAI,CAG1C;IAED,0DAA0D;IAC1D,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,qDAAqD;IACrD,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAY7B;IAED;;;;;;OAMG;IACH,OAAO,CAAC,KAAK,SAAI,GAAG,IAAI,CAOvB;IAED,6EAA6E;IAC7E,KAAK,IAAI,IAAI,CAEZ;IAED,MAAM,IAAI;QAAE,MAAM,EAAE,YAAY,EAAE,CAAA;KAAE,CAEnC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,YAAY,EAAE,CAAA;KAAE,GAAG,OAAO,CAIzD;CACD"}
@@ -0,0 +1,70 @@
1
+ export class Barrier {
2
+ constructor() {
3
+ this.layers = [];
4
+ }
5
+ /** adds a new outermost layer; a non-positive amount is a no-op rather than an empty layer */
6
+ add(amount, decayPerTick = 0) {
7
+ if (amount <= 0)
8
+ return;
9
+ this.layers.push({ amount, decayPerTick });
10
+ }
11
+ /** total absorption currently held, across every layer */
12
+ get total() {
13
+ return this.layers.reduce((sum, layer) => sum + layer.amount, 0);
14
+ }
15
+ /** how many independent layers are currently held */
16
+ get layerCount() {
17
+ return this.layers.length;
18
+ }
19
+ /**
20
+ * Absorbs up to `amount` of incoming damage, draining the outermost layer first and
21
+ * spilling into the next one once a layer empties.
22
+ *
23
+ * @returns the amount actually absorbed - never more than `amount`, never more than
24
+ * `total` was before the call - so the caller applies `amount - absorbed` to HP
25
+ */
26
+ absorb(amount) {
27
+ let remaining = amount;
28
+ let absorbed = 0;
29
+ while (remaining > 0 && this.layers.length > 0) {
30
+ const layer = this.layers[this.layers.length - 1];
31
+ const take = Math.min(layer.amount, remaining);
32
+ layer.amount -= take;
33
+ remaining -= take;
34
+ absorbed += take;
35
+ if (layer.amount <= 0)
36
+ this.layers.pop();
37
+ }
38
+ return absorbed;
39
+ }
40
+ /**
41
+ * Decays every layer by its own `decayPerTick`, removing any that reach zero or below.
42
+ *
43
+ * Named `advance(turns)` like every other turn-scale ticker here (`TurnClock`, `Charges`,
44
+ * `Field`, `AbilityCycle`) rather than `decay`, so one word means one thing across the
45
+ * framework: `advance` takes whole turns, `update` takes `dt` seconds.
46
+ */
47
+ advance(turns = 1) {
48
+ for (let i = this.layers.length - 1; i >= 0; i--) {
49
+ const layer = this.layers[i];
50
+ if (!layer.decayPerTick)
51
+ continue;
52
+ layer.amount -= layer.decayPerTick * turns;
53
+ if (layer.amount <= 0)
54
+ this.layers.splice(i, 1);
55
+ }
56
+ }
57
+ /** drops every layer at once - a dispel, a fresh encounter starting clean */
58
+ clear() {
59
+ this.layers = [];
60
+ }
61
+ toJSON() {
62
+ return { layers: this.layers.map((layer) => ({ ...layer })) };
63
+ }
64
+ static fromJSON(data) {
65
+ const barrier = new Barrier();
66
+ barrier.layers = data.layers.map((layer) => ({ ...layer }));
67
+ return barrier;
68
+ }
69
+ }
70
+ //# sourceMappingURL=Barrier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Barrier.js","sourceRoot":"","sources":["../../src/actors/Barrier.ts"],"names":[],"mappings":"AA4BA,MAAM,OAAO,OAAO;IAApB;QACS,WAAM,GAAmB,EAAE,CAAC;IAqErC,CAAC;IAnEA,8FAA8F;IAC9F,GAAG,CAAC,MAAc,EAAE,YAAY,GAAG,CAAC;QACnC,IAAI,MAAM,IAAI,CAAC;YAAE,OAAO;QACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,0DAA0D;IAC1D,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,qDAAqD;IACrD,IAAI,UAAU;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,MAAc;QACpB,IAAI,SAAS,GAAG,MAAM,CAAC;QACvB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,OAAO,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAClD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAC/C,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC;YACrB,SAAS,IAAI,IAAI,CAAC;YAClB,QAAQ,IAAI,IAAI,CAAC;YACjB,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;gBAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAC1C,CAAC;QACD,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CAAC,KAAK,GAAG,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,YAAY;gBAAE,SAAS;YAClC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;YAC3C,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;gBAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC;IACF,CAAC;IAED,6EAA6E;IAC7E,KAAK;QACJ,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,MAAM;QACL,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;IAC/D,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAgC;QAC/C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5D,OAAO,OAAO,CAAC;IAChB,CAAC;CACD"}
@@ -6,6 +6,19 @@
6
6
  * carries its own regeneration progress instead of leaning on `TurnClock` for it - a charge
7
7
  * either has or does not have enough banked turns to regenerate, which is exactly the kind
8
8
  * of running total a class holds more naturally than a callback would.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import { Charges } from '@datamoc/mw_games/actors';
13
+ *
14
+ * const wand = new Charges({ max: 3, regenRate: 10 }); // one charge every 10 turns
15
+ * wand.spend(1);
16
+ *
17
+ * wand.advance(10); // 10 turns pass; one charge regenerates
18
+ * console.log(wand.current); // back to max
19
+ *
20
+ * wand.refund(1); // a kill or crit grants a charge directly, outside the normal regen path
21
+ * ```
9
22
  */
10
23
  export interface ChargesOptions {
11
24
  /** the most this can ever hold */
@@ -25,7 +38,29 @@ export declare class Charges {
25
38
  canAfford(cost: number): boolean;
26
39
  /** @returns false, spending nothing, if `cost` is not affordable right now */
27
40
  spend(cost: number): boolean;
41
+ /**
42
+ * Restores charges directly, outside the normal regen path - a killing blow or a crit
43
+ * refunding one on the spot. Capped at `max`.
44
+ *
45
+ * @returns how many were actually added, which is less than `amount` once `max` is hit
46
+ */
47
+ refund(amount?: number): number;
28
48
  /** banks `turns` of regeneration time, converting whole `regenRate`-sized chunks into charges */
29
49
  advance(turns?: number): void;
50
+ /**
51
+ * Charges held, and progress banked towards the next one.
52
+ *
53
+ * The banked progress matters as much as the count: without it, saving and loading part
54
+ * way to a recharge would silently reset that wait, so a player could refresh a wand a
55
+ * little faster by reloading. `max` and `regenRate` are definitions, supplied fresh.
56
+ */
57
+ toJSON(): {
58
+ current: number;
59
+ progress: number;
60
+ };
61
+ static fromJSON(options: ChargesOptions, data: {
62
+ current: number;
63
+ progress: number;
64
+ }): Charges;
30
65
  }
31
66
  //# sourceMappingURL=Charges.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Charges.d.ts","sourceRoot":"","sources":["../../src/actors/Charges.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC9B,kCAAkC;IAClC,GAAG,EAAE,MAAM,CAAC;IAEZ,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,OAAO;IACnB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAK;IAErB,YAAY,OAAO,EAAE,cAAc,EAIlC;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/B;IAED,8EAA8E;IAC9E,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAI3B;IAED,iGAAiG;IACjG,OAAO,CAAC,KAAK,SAAI,GAAG,IAAI,CAWvB;CACD"}
1
+ {"version":3,"file":"Charges.d.ts","sourceRoot":"","sources":["../../src/actors/Charges.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,cAAc;IAC9B,kCAAkC;IAClC,GAAG,EAAE,MAAM,CAAC;IAEZ,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,OAAO;IACnB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAK;IAErB,YAAY,OAAO,EAAE,cAAc,EAIlC;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/B;IAED,8EAA8E;IAC9E,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAI3B;IAED;;;;;OAKG;IACH,MAAM,CAAC,MAAM,SAAI,GAAG,MAAM,CAIzB;IAED,iGAAiG;IACjG,OAAO,CAAC,KAAK,SAAI,GAAG,IAAI,CAWvB;IAED;;;;;;OAMG;IACH,MAAM,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAE9C;IAED,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAI7F;CACD"}
@@ -18,6 +18,17 @@ export class Charges {
18
18
  this.value -= cost;
19
19
  return true;
20
20
  }
21
+ /**
22
+ * Restores charges directly, outside the normal regen path - a killing blow or a crit
23
+ * refunding one on the spot. Capped at `max`.
24
+ *
25
+ * @returns how many were actually added, which is less than `amount` once `max` is hit
26
+ */
27
+ refund(amount = 1) {
28
+ const added = Math.min(amount, this.max - this.value);
29
+ this.value += added;
30
+ return added;
31
+ }
21
32
  /** banks `turns` of regeneration time, converting whole `regenRate`-sized chunks into charges */
22
33
  advance(turns = 1) {
23
34
  if (this.value >= this.max)
@@ -31,5 +42,20 @@ export class Charges {
31
42
  if (this.value >= this.max)
32
43
  this.progress = 0;
33
44
  }
45
+ /**
46
+ * Charges held, and progress banked towards the next one.
47
+ *
48
+ * The banked progress matters as much as the count: without it, saving and loading part
49
+ * way to a recharge would silently reset that wait, so a player could refresh a wand a
50
+ * little faster by reloading. `max` and `regenRate` are definitions, supplied fresh.
51
+ */
52
+ toJSON() {
53
+ return { current: this.value, progress: this.progress };
54
+ }
55
+ static fromJSON(options, data) {
56
+ const charges = new Charges({ ...options, current: data.current });
57
+ charges.progress = data.progress;
58
+ return charges;
59
+ }
34
60
  }
35
61
  //# sourceMappingURL=Charges.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Charges.js","sourceRoot":"","sources":["../../src/actors/Charges.ts"],"names":[],"mappings":"AAoBA,MAAM,OAAO,OAAO;IAMnB,YAAY,OAAuB;QAF3B,aAAQ,GAAG,CAAC,CAAC;QAGpB,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC;IAC7C,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,SAAS,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;IAC3B,CAAC;IAED,8EAA8E;IAC9E,KAAK,CAAC,IAAY;QACjB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QACxC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;QACnB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,iGAAiG;IACjG,OAAO,CAAC,KAAK,GAAG,CAAC;QAChB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG;YAAE,OAAO;QAEnC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC;QACvB,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACjE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC;YAChC,IAAI,CAAC,KAAK,EAAE,CAAC;QACd,CAAC;QAED,qFAAqF;QACrF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IAC/C,CAAC;CACD"}
1
+ {"version":3,"file":"Charges.js","sourceRoot":"","sources":["../../src/actors/Charges.ts"],"names":[],"mappings":"AAiCA,MAAM,OAAO,OAAO;IAMnB,YAAY,OAAuB;QAF3B,aAAQ,GAAG,CAAC,CAAC;QAGpB,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC;IAC7C,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,SAAS,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;IAC3B,CAAC;IAED,8EAA8E;IAC9E,KAAK,CAAC,IAAY;QACjB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QACxC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;QACnB,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,MAAM,GAAG,CAAC;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;QACpB,OAAO,KAAK,CAAC;IACd,CAAC;IAED,iGAAiG;IACjG,OAAO,CAAC,KAAK,GAAG,CAAC;QAChB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG;YAAE,OAAO;QAEnC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC;QACvB,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACjE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC;YAChC,IAAI,CAAC,KAAK,EAAE,CAAC;QACd,CAAC;QAED,qFAAqF;QACrF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;OAMG;IACH,MAAM;QACL,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,OAAuB,EAAE,IAA2C;QACnF,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACnE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACjC,OAAO,OAAO,CAAC;IAChB,CAAC;CACD"}