@datamoc/mw_games 0.4.0 → 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 (512) hide show
  1. package/README.md +1 -1
  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 +20 -0
  7. package/dist/actors/Affix.d.ts.map +1 -1
  8. package/dist/actors/Affix.js.map +1 -1
  9. package/dist/actors/Appearances.d.ts +12 -0
  10. package/dist/actors/Appearances.d.ts.map +1 -1
  11. package/dist/actors/Appearances.js +12 -0
  12. package/dist/actors/Appearances.js.map +1 -1
  13. package/dist/actors/Aura.d.ts +16 -0
  14. package/dist/actors/Aura.d.ts.map +1 -1
  15. package/dist/actors/Aura.js +16 -0
  16. package/dist/actors/Aura.js.map +1 -1
  17. package/dist/actors/Barrier.d.ts +13 -0
  18. package/dist/actors/Barrier.d.ts.map +1 -1
  19. package/dist/actors/Barrier.js.map +1 -1
  20. package/dist/actors/Charges.d.ts +13 -0
  21. package/dist/actors/Charges.d.ts.map +1 -1
  22. package/dist/actors/Charges.js.map +1 -1
  23. package/dist/actors/Equipment.d.ts +18 -0
  24. package/dist/actors/Equipment.d.ts.map +1 -1
  25. package/dist/actors/Equipment.js +18 -0
  26. package/dist/actors/Equipment.js.map +1 -1
  27. package/dist/actors/Inventory.d.ts +12 -0
  28. package/dist/actors/Inventory.d.ts.map +1 -1
  29. package/dist/actors/Inventory.js +12 -0
  30. package/dist/actors/Inventory.js.map +1 -1
  31. package/dist/actors/ItemState.d.ts +13 -0
  32. package/dist/actors/ItemState.d.ts.map +1 -1
  33. package/dist/actors/ItemState.js +13 -0
  34. package/dist/actors/ItemState.js.map +1 -1
  35. package/dist/actors/ItemStatusEffect.d.ts +13 -0
  36. package/dist/actors/ItemStatusEffect.d.ts.map +1 -1
  37. package/dist/actors/ItemStatusEffect.js +13 -0
  38. package/dist/actors/ItemStatusEffect.js.map +1 -1
  39. package/dist/actors/Loot.d.ts +15 -1
  40. package/dist/actors/Loot.d.ts.map +1 -1
  41. package/dist/actors/Loot.js +15 -1
  42. package/dist/actors/Loot.js.map +1 -1
  43. package/dist/actors/Progression.d.ts +14 -1
  44. package/dist/actors/Progression.d.ts.map +1 -1
  45. package/dist/actors/Progression.js +14 -1
  46. package/dist/actors/Progression.js.map +1 -1
  47. package/dist/actors/Resource.d.ts +14 -0
  48. package/dist/actors/Resource.d.ts.map +1 -1
  49. package/dist/actors/Resource.js.map +1 -1
  50. package/dist/actors/Scaling.d.ts +8 -0
  51. package/dist/actors/Scaling.d.ts.map +1 -1
  52. package/dist/actors/Scaling.js.map +1 -1
  53. package/dist/actors/Shop.d.ts +15 -0
  54. package/dist/actors/Shop.d.ts.map +1 -1
  55. package/dist/actors/Shop.js.map +1 -1
  56. package/dist/actors/SkillPoints.d.ts +13 -0
  57. package/dist/actors/SkillPoints.d.ts.map +1 -1
  58. package/dist/actors/SkillPoints.js +13 -0
  59. package/dist/actors/SkillPoints.js.map +1 -1
  60. package/dist/actors/StatusEffect.d.ts +18 -0
  61. package/dist/actors/StatusEffect.d.ts.map +1 -1
  62. package/dist/actors/StatusEffect.js +18 -0
  63. package/dist/actors/StatusEffect.js.map +1 -1
  64. package/dist/actors/Support.d.ts +11 -0
  65. package/dist/actors/Support.d.ts.map +1 -1
  66. package/dist/actors/Support.js +11 -0
  67. package/dist/actors/Support.js.map +1 -1
  68. package/dist/actors/Traits.d.ts +14 -0
  69. package/dist/actors/Traits.d.ts.map +1 -1
  70. package/dist/actors/Traits.js +14 -0
  71. package/dist/actors/Traits.js.map +1 -1
  72. package/dist/actors/craft.d.ts +16 -0
  73. package/dist/actors/craft.d.ts.map +1 -1
  74. package/dist/actors/craft.js +16 -0
  75. package/dist/actors/craft.js.map +1 -1
  76. package/dist/actors/skillCheck.d.ts +8 -0
  77. package/dist/actors/skillCheck.d.ts.map +1 -1
  78. package/dist/actors/skillCheck.js +8 -0
  79. package/dist/actors/skillCheck.js.map +1 -1
  80. package/dist/assets/ByteProgress.d.ts +10 -0
  81. package/dist/assets/ByteProgress.d.ts.map +1 -1
  82. package/dist/assets/ByteProgress.js +10 -0
  83. package/dist/assets/ByteProgress.js.map +1 -1
  84. package/dist/assets/Streaming.d.ts +10 -0
  85. package/dist/assets/Streaming.d.ts.map +1 -1
  86. package/dist/assets/Streaming.js +10 -0
  87. package/dist/assets/Streaming.js.map +1 -1
  88. package/dist/assets/loader.d.ts +11 -0
  89. package/dist/assets/loader.d.ts.map +1 -1
  90. package/dist/assets/loader.js +11 -0
  91. package/dist/assets/loader.js.map +1 -1
  92. package/dist/assets/paths.d.ts +10 -0
  93. package/dist/assets/paths.d.ts.map +1 -1
  94. package/dist/assets/paths.js +10 -0
  95. package/dist/assets/paths.js.map +1 -1
  96. package/dist/audio/Captions.d.ts +13 -1
  97. package/dist/audio/Captions.d.ts.map +1 -1
  98. package/dist/audio/Captions.js +13 -1
  99. package/dist/audio/Captions.js.map +1 -1
  100. package/dist/audio/Midi.d.ts +19 -1
  101. package/dist/audio/Midi.d.ts.map +1 -1
  102. package/dist/audio/Midi.js +19 -1
  103. package/dist/audio/Midi.js.map +1 -1
  104. package/dist/audio/Music.d.ts +11 -0
  105. package/dist/audio/Music.d.ts.map +1 -1
  106. package/dist/audio/Music.js +11 -0
  107. package/dist/audio/Music.js.map +1 -1
  108. package/dist/audio/Orchestrator.d.ts +14 -0
  109. package/dist/audio/Orchestrator.d.ts.map +1 -1
  110. package/dist/audio/Orchestrator.js +14 -0
  111. package/dist/audio/Orchestrator.js.map +1 -1
  112. package/dist/audio/Playable.d.ts +11 -1
  113. package/dist/audio/Playable.d.ts.map +1 -1
  114. package/dist/audio/Playable.js +11 -1
  115. package/dist/audio/Playable.js.map +1 -1
  116. package/dist/audio/Sound.d.ts +8 -0
  117. package/dist/audio/Sound.d.ts.map +1 -1
  118. package/dist/audio/Sound.js +8 -0
  119. package/dist/audio/Sound.js.map +1 -1
  120. package/dist/audio/Synth.d.ts +15 -0
  121. package/dist/audio/Synth.d.ts.map +1 -1
  122. package/dist/audio/Synth.js +15 -0
  123. package/dist/audio/Synth.js.map +1 -1
  124. package/dist/battle/BattleAI.d.ts +18 -2
  125. package/dist/battle/BattleAI.d.ts.map +1 -1
  126. package/dist/battle/BattleAI.js +18 -2
  127. package/dist/battle/BattleAI.js.map +1 -1
  128. package/dist/battle/Evolution.d.ts +12 -0
  129. package/dist/battle/Evolution.d.ts.map +1 -1
  130. package/dist/battle/Evolution.js +12 -0
  131. package/dist/battle/Evolution.js.map +1 -1
  132. package/dist/battle/Field.d.ts +11 -0
  133. package/dist/battle/Field.d.ts.map +1 -1
  134. package/dist/battle/Field.js.map +1 -1
  135. package/dist/battle/Hooks.d.ts +16 -0
  136. package/dist/battle/Hooks.d.ts.map +1 -1
  137. package/dist/battle/Hooks.js +16 -0
  138. package/dist/battle/Hooks.js.map +1 -1
  139. package/dist/battle/Move.d.ts +13 -0
  140. package/dist/battle/Move.d.ts.map +1 -1
  141. package/dist/battle/Move.js +13 -0
  142. package/dist/battle/Move.js.map +1 -1
  143. package/dist/battle/Party.d.ts +11 -0
  144. package/dist/battle/Party.d.ts.map +1 -1
  145. package/dist/battle/Party.js +11 -0
  146. package/dist/battle/Party.js.map +1 -1
  147. package/dist/battle/Species.d.ts +10 -0
  148. package/dist/battle/Species.d.ts.map +1 -1
  149. package/dist/battle/Species.js +10 -0
  150. package/dist/battle/Species.js.map +1 -1
  151. package/dist/battle/StatStages.d.ts +14 -0
  152. package/dist/battle/StatStages.d.ts.map +1 -1
  153. package/dist/battle/StatStages.js.map +1 -1
  154. package/dist/battle/TypeMatrix.d.ts +11 -0
  155. package/dist/battle/TypeMatrix.d.ts.map +1 -1
  156. package/dist/battle/TypeMatrix.js +11 -0
  157. package/dist/battle/TypeMatrix.js.map +1 -1
  158. package/dist/core/Achievements.d.ts +15 -0
  159. package/dist/core/Achievements.d.ts.map +1 -1
  160. package/dist/core/Achievements.js +15 -0
  161. package/dist/core/Achievements.js.map +1 -1
  162. package/dist/core/Collection.d.ts +12 -0
  163. package/dist/core/Collection.d.ts.map +1 -1
  164. package/dist/core/Collection.js +12 -0
  165. package/dist/core/Collection.js.map +1 -1
  166. package/dist/core/Entity.d.ts +42 -0
  167. package/dist/core/Entity.d.ts.map +1 -0
  168. package/dist/core/Entity.js +47 -0
  169. package/dist/core/Entity.js.map +1 -0
  170. package/dist/core/Feedback.d.ts +11 -1
  171. package/dist/core/Feedback.d.ts.map +1 -1
  172. package/dist/core/Feedback.js +11 -1
  173. package/dist/core/Feedback.js.map +1 -1
  174. package/dist/core/Hex.d.ts +14 -0
  175. package/dist/core/Hex.d.ts.map +1 -1
  176. package/dist/core/Hex.js +14 -0
  177. package/dist/core/Hex.js.map +1 -1
  178. package/dist/core/Hooks.d.ts +14 -0
  179. package/dist/core/Hooks.d.ts.map +1 -1
  180. package/dist/core/Hooks.js.map +1 -1
  181. package/dist/core/Input.d.ts +12 -0
  182. package/dist/core/Input.d.ts.map +1 -1
  183. package/dist/core/Input.js.map +1 -1
  184. package/dist/core/Loading.d.ts +17 -0
  185. package/dist/core/Loading.d.ts.map +1 -1
  186. package/dist/core/Loading.js +17 -0
  187. package/dist/core/Loading.js.map +1 -1
  188. package/dist/core/Log.d.ts +9 -0
  189. package/dist/core/Log.d.ts.map +1 -1
  190. package/dist/core/Log.js +9 -0
  191. package/dist/core/Log.js.map +1 -1
  192. package/dist/core/Multiplayer.d.ts +12 -0
  193. package/dist/core/Multiplayer.d.ts.map +1 -1
  194. package/dist/core/Multiplayer.js +12 -0
  195. package/dist/core/Multiplayer.js.map +1 -1
  196. package/dist/core/News.d.ts +12 -0
  197. package/dist/core/News.d.ts.map +1 -1
  198. package/dist/core/News.js.map +1 -1
  199. package/dist/core/PlayerInput.d.ts +14 -0
  200. package/dist/core/PlayerInput.d.ts.map +1 -1
  201. package/dist/core/PlayerInput.js +14 -0
  202. package/dist/core/PlayerInput.js.map +1 -1
  203. package/dist/core/Presentation.d.ts +56 -0
  204. package/dist/core/Presentation.d.ts.map +1 -0
  205. package/dist/core/Presentation.js +78 -0
  206. package/dist/core/Presentation.js.map +1 -0
  207. package/dist/core/Random.d.ts +24 -0
  208. package/dist/core/Random.d.ts.map +1 -1
  209. package/dist/core/Random.js +24 -0
  210. package/dist/core/Random.js.map +1 -1
  211. package/dist/core/Replay.d.ts +31 -0
  212. package/dist/core/Replay.d.ts.map +1 -1
  213. package/dist/core/Replay.js +31 -0
  214. package/dist/core/Replay.js.map +1 -1
  215. package/dist/core/RunHistory.d.ts +12 -0
  216. package/dist/core/RunHistory.d.ts.map +1 -1
  217. package/dist/core/RunHistory.js.map +1 -1
  218. package/dist/core/Sanitize.d.ts +18 -0
  219. package/dist/core/Sanitize.d.ts.map +1 -1
  220. package/dist/core/Sanitize.js +18 -0
  221. package/dist/core/Sanitize.js.map +1 -1
  222. package/dist/core/Save.d.ts.map +1 -1
  223. package/dist/core/Save.js +13 -0
  224. package/dist/core/Save.js.map +1 -1
  225. package/dist/core/SaveSync.d.ts +14 -0
  226. package/dist/core/SaveSync.d.ts.map +1 -1
  227. package/dist/core/SaveSync.js.map +1 -1
  228. package/dist/core/Scene.d.ts +13 -0
  229. package/dist/core/Scene.d.ts.map +1 -1
  230. package/dist/core/Scene.js +13 -0
  231. package/dist/core/Scene.js.map +1 -1
  232. package/dist/core/SceneStack.d.ts +20 -0
  233. package/dist/core/SceneStack.d.ts.map +1 -1
  234. package/dist/core/SceneStack.js +20 -0
  235. package/dist/core/SceneStack.js.map +1 -1
  236. package/dist/core/Scramble.d.ts +8 -0
  237. package/dist/core/Scramble.d.ts.map +1 -1
  238. package/dist/core/Scramble.js +8 -0
  239. package/dist/core/Scramble.js.map +1 -1
  240. package/dist/core/Session.d.ts +10 -0
  241. package/dist/core/Session.d.ts.map +1 -1
  242. package/dist/core/Session.js.map +1 -1
  243. package/dist/core/Signal.d.ts +11 -0
  244. package/dist/core/Signal.d.ts.map +1 -1
  245. package/dist/core/Signal.js.map +1 -1
  246. package/dist/core/Spawner.d.ts +17 -0
  247. package/dist/core/Spawner.d.ts.map +1 -1
  248. package/dist/core/Spawner.js +17 -0
  249. package/dist/core/Spawner.js.map +1 -1
  250. package/dist/core/Stats.d.ts +14 -0
  251. package/dist/core/Stats.d.ts.map +1 -1
  252. package/dist/core/Stats.js +14 -0
  253. package/dist/core/Stats.js.map +1 -1
  254. package/dist/core/Telemetry.d.ts +11 -0
  255. package/dist/core/Telemetry.d.ts.map +1 -1
  256. package/dist/core/Telemetry.js +11 -0
  257. package/dist/core/Telemetry.js.map +1 -1
  258. package/dist/core/Tween.d.ts +16 -1
  259. package/dist/core/Tween.d.ts.map +1 -1
  260. package/dist/core/Tween.js +16 -1
  261. package/dist/core/Tween.js.map +1 -1
  262. package/dist/core/UndoHistory.d.ts +15 -0
  263. package/dist/core/UndoHistory.d.ts.map +1 -1
  264. package/dist/core/UndoHistory.js.map +1 -1
  265. package/dist/core/index.d.ts +4 -0
  266. package/dist/core/index.d.ts.map +1 -1
  267. package/dist/core/index.js +2 -0
  268. package/dist/core/index.js.map +1 -1
  269. package/dist/i18n/Format.d.ts +25 -0
  270. package/dist/i18n/Format.d.ts.map +1 -0
  271. package/dist/i18n/Format.js +32 -0
  272. package/dist/i18n/Format.js.map +1 -0
  273. package/dist/i18n/SemanticMessage.d.ts +71 -0
  274. package/dist/i18n/SemanticMessage.d.ts.map +1 -0
  275. package/dist/i18n/SemanticMessage.js +40 -0
  276. package/dist/i18n/SemanticMessage.js.map +1 -0
  277. package/dist/i18n/Validate.d.ts +56 -0
  278. package/dist/i18n/Validate.d.ts.map +1 -0
  279. package/dist/i18n/Validate.js +65 -0
  280. package/dist/i18n/Validate.js.map +1 -0
  281. package/dist/i18n/index.d.ts +39 -0
  282. package/dist/i18n/index.d.ts.map +1 -1
  283. package/dist/i18n/index.js +48 -1
  284. package/dist/i18n/index.js.map +1 -1
  285. package/dist/mw_games.global.js +153 -88
  286. package/dist/roguelike/Blob.d.ts +11 -0
  287. package/dist/roguelike/Blob.d.ts.map +1 -1
  288. package/dist/roguelike/Blob.js +11 -0
  289. package/dist/roguelike/Blob.js.map +1 -1
  290. package/dist/roguelike/Boss.d.ts +12 -0
  291. package/dist/roguelike/Boss.d.ts.map +1 -1
  292. package/dist/roguelike/Boss.js +12 -0
  293. package/dist/roguelike/Boss.js.map +1 -1
  294. package/dist/roguelike/Combat.d.ts +13 -0
  295. package/dist/roguelike/Combat.d.ts.map +1 -1
  296. package/dist/roguelike/Combat.js +13 -0
  297. package/dist/roguelike/Combat.js.map +1 -1
  298. package/dist/roguelike/ContentRoll.d.ts +10 -0
  299. package/dist/roguelike/ContentRoll.d.ts.map +1 -1
  300. package/dist/roguelike/ContentRoll.js +10 -0
  301. package/dist/roguelike/ContentRoll.js.map +1 -1
  302. package/dist/roguelike/Doors.d.ts +13 -0
  303. package/dist/roguelike/Doors.d.ts.map +1 -1
  304. package/dist/roguelike/Doors.js +13 -0
  305. package/dist/roguelike/Doors.js.map +1 -1
  306. package/dist/roguelike/DungeonParity.d.ts +15 -0
  307. package/dist/roguelike/DungeonParity.d.ts.map +1 -1
  308. package/dist/roguelike/DungeonParity.js +15 -0
  309. package/dist/roguelike/DungeonParity.js.map +1 -1
  310. package/dist/roguelike/Elevation.d.ts +15 -0
  311. package/dist/roguelike/Elevation.d.ts.map +1 -1
  312. package/dist/roguelike/Elevation.js +15 -0
  313. package/dist/roguelike/Elevation.js.map +1 -1
  314. package/dist/roguelike/Features.d.ts +17 -0
  315. package/dist/roguelike/Features.d.ts.map +1 -1
  316. package/dist/roguelike/Features.js +17 -0
  317. package/dist/roguelike/Features.js.map +1 -1
  318. package/dist/roguelike/FieldOfView.d.ts +13 -0
  319. package/dist/roguelike/FieldOfView.d.ts.map +1 -1
  320. package/dist/roguelike/FieldOfView.js +13 -0
  321. package/dist/roguelike/FieldOfView.js.map +1 -1
  322. package/dist/roguelike/Level.d.ts +26 -1
  323. package/dist/roguelike/Level.d.ts.map +1 -1
  324. package/dist/roguelike/Level.js +26 -1
  325. package/dist/roguelike/Level.js.map +1 -1
  326. package/dist/roguelike/MonsterAI.d.ts +14 -0
  327. package/dist/roguelike/MonsterAI.d.ts.map +1 -1
  328. package/dist/roguelike/MonsterAI.js +14 -0
  329. package/dist/roguelike/MonsterAI.js.map +1 -1
  330. package/dist/roguelike/MultiStageAbility.d.ts +16 -0
  331. package/dist/roguelike/MultiStageAbility.d.ts.map +1 -1
  332. package/dist/roguelike/MultiStageAbility.js +16 -0
  333. package/dist/roguelike/MultiStageAbility.js.map +1 -1
  334. package/dist/roguelike/Pathfinder.d.ts +23 -2
  335. package/dist/roguelike/Pathfinder.d.ts.map +1 -1
  336. package/dist/roguelike/Pathfinder.js +23 -2
  337. package/dist/roguelike/Pathfinder.js.map +1 -1
  338. package/dist/roguelike/RoomBuilders.d.ts +18 -1
  339. package/dist/roguelike/RoomBuilders.d.ts.map +1 -1
  340. package/dist/roguelike/RoomBuilders.js +18 -1
  341. package/dist/roguelike/RoomBuilders.js.map +1 -1
  342. package/dist/roguelike/Scheduler.d.ts +48 -1
  343. package/dist/roguelike/Scheduler.d.ts.map +1 -1
  344. package/dist/roguelike/Scheduler.js +58 -1
  345. package/dist/roguelike/Scheduler.js.map +1 -1
  346. package/dist/roguelike/Secrets.d.ts +13 -0
  347. package/dist/roguelike/Secrets.d.ts.map +1 -1
  348. package/dist/roguelike/Secrets.js +13 -0
  349. package/dist/roguelike/Secrets.js.map +1 -1
  350. package/dist/roguelike/Stealth.d.ts +13 -0
  351. package/dist/roguelike/Stealth.d.ts.map +1 -1
  352. package/dist/roguelike/Stealth.js +13 -0
  353. package/dist/roguelike/Stealth.js.map +1 -1
  354. package/dist/roguelike/Targeting.d.ts +45 -1
  355. package/dist/roguelike/Targeting.d.ts.map +1 -1
  356. package/dist/roguelike/Targeting.js +33 -1
  357. package/dist/roguelike/Targeting.js.map +1 -1
  358. package/dist/roguelike/TriggerTracker.d.ts +10 -0
  359. package/dist/roguelike/TriggerTracker.d.ts.map +1 -1
  360. package/dist/roguelike/TriggerTracker.js +10 -0
  361. package/dist/roguelike/TriggerTracker.js.map +1 -1
  362. package/dist/roguelike/generate.d.ts +41 -1
  363. package/dist/roguelike/generate.d.ts.map +1 -1
  364. package/dist/roguelike/generate.js +41 -1
  365. package/dist/roguelike/generate.js.map +1 -1
  366. package/dist/roguelike/index.d.ts +1 -1
  367. package/dist/roguelike/index.d.ts.map +1 -1
  368. package/dist/rpg/Collision.d.ts +19 -0
  369. package/dist/rpg/Collision.d.ts.map +1 -1
  370. package/dist/rpg/Collision.js +19 -0
  371. package/dist/rpg/Collision.js.map +1 -1
  372. package/dist/rpg/Event.d.ts +17 -0
  373. package/dist/rpg/Event.d.ts.map +1 -1
  374. package/dist/rpg/Event.js +17 -0
  375. package/dist/rpg/Event.js.map +1 -1
  376. package/dist/rpg/EventRunner.d.ts +14 -0
  377. package/dist/rpg/EventRunner.d.ts.map +1 -1
  378. package/dist/rpg/EventRunner.js +14 -0
  379. package/dist/rpg/EventRunner.js.map +1 -1
  380. package/dist/rpg/FreeMover.d.ts +14 -0
  381. package/dist/rpg/FreeMover.d.ts.map +1 -1
  382. package/dist/rpg/FreeMover.js +14 -0
  383. package/dist/rpg/FreeMover.js.map +1 -1
  384. package/dist/rpg/GameState.d.ts +14 -0
  385. package/dist/rpg/GameState.d.ts.map +1 -1
  386. package/dist/rpg/GameState.js +14 -0
  387. package/dist/rpg/GameState.js.map +1 -1
  388. package/dist/rpg/GridMover.d.ts +14 -0
  389. package/dist/rpg/GridMover.d.ts.map +1 -1
  390. package/dist/rpg/GridMover.js +14 -0
  391. package/dist/rpg/GridMover.js.map +1 -1
  392. package/dist/rpg/Marshal.d.ts +16 -0
  393. package/dist/rpg/Marshal.d.ts.map +1 -1
  394. package/dist/rpg/Marshal.js +16 -0
  395. package/dist/rpg/Marshal.js.map +1 -1
  396. package/dist/rpg/Quest.d.ts +15 -0
  397. package/dist/rpg/Quest.d.ts.map +1 -1
  398. package/dist/rpg/Quest.js +15 -0
  399. package/dist/rpg/Quest.js.map +1 -1
  400. package/dist/rpg/automap.d.ts +15 -0
  401. package/dist/rpg/automap.d.ts.map +1 -1
  402. package/dist/rpg/automap.js +15 -0
  403. package/dist/rpg/automap.js.map +1 -1
  404. package/dist/simulation/Runtime.d.ts +98 -0
  405. package/dist/simulation/Runtime.d.ts.map +1 -0
  406. package/dist/simulation/Runtime.js +91 -0
  407. package/dist/simulation/Runtime.js.map +1 -0
  408. package/dist/simulation/Scenario.d.ts +15 -0
  409. package/dist/simulation/Scenario.d.ts.map +1 -1
  410. package/dist/simulation/Scenario.js +15 -0
  411. package/dist/simulation/Scenario.js.map +1 -1
  412. package/dist/simulation/Turns.d.ts +11 -0
  413. package/dist/simulation/Turns.d.ts.map +1 -1
  414. package/dist/simulation/Turns.js +11 -0
  415. package/dist/simulation/Turns.js.map +1 -1
  416. package/dist/simulation/index.d.ts +10 -0
  417. package/dist/simulation/index.d.ts.map +1 -1
  418. package/dist/simulation/index.js +8 -0
  419. package/dist/simulation/index.js.map +1 -1
  420. package/dist/two-d/Game.d.ts +8 -11
  421. package/dist/two-d/Game.d.ts.map +1 -1
  422. package/dist/two-d/Game.js.map +1 -1
  423. package/dist/two-d/Scene2D.d.ts +2 -2
  424. package/dist/two-d/Scene2D.d.ts.map +1 -1
  425. package/dist/two-d/Scene2D.js.map +1 -1
  426. package/dist/two-d/pixi-interop.d.ts +13 -0
  427. package/dist/two-d/pixi-interop.d.ts.map +1 -0
  428. package/dist/two-d/pixi-interop.js +12 -0
  429. package/dist/two-d/pixi-interop.js.map +1 -0
  430. package/dist/two-d/render/AnimatedSprite.d.ts +4 -4
  431. package/dist/two-d/render/AnimatedSprite.d.ts.map +1 -1
  432. package/dist/two-d/render/AnimatedSprite.js.map +1 -1
  433. package/dist/two-d/render/ColorTransformBatcher.d.ts +8 -3
  434. package/dist/two-d/render/ColorTransformBatcher.d.ts.map +1 -1
  435. package/dist/two-d/render/ColorTransformBatcher.js +8 -3
  436. package/dist/two-d/render/ColorTransformBatcher.js.map +1 -1
  437. package/dist/two-d/render/LayeredSprite.d.ts +3 -3
  438. package/dist/two-d/render/LayeredSprite.d.ts.map +1 -1
  439. package/dist/two-d/render/LayeredSprite.js.map +1 -1
  440. package/dist/two-d/render/Shape2D.d.ts +40 -0
  441. package/dist/two-d/render/Shape2D.d.ts.map +1 -0
  442. package/dist/two-d/render/Shape2D.js +40 -0
  443. package/dist/two-d/render/Shape2D.js.map +1 -0
  444. package/dist/two-d/render/SpriteSheet.d.ts +9 -6
  445. package/dist/two-d/render/SpriteSheet.d.ts.map +1 -1
  446. package/dist/two-d/render/SpriteSheet.js +7 -0
  447. package/dist/two-d/render/SpriteSheet.js.map +1 -1
  448. package/dist/two-d/render/TintedSprite.d.ts +3 -2
  449. package/dist/two-d/render/TintedSprite.d.ts.map +1 -1
  450. package/dist/two-d/render/TintedSprite.js +5 -1
  451. package/dist/two-d/render/TintedSprite.js.map +1 -1
  452. package/dist/two-d/render/Types2D.d.ts +27 -0
  453. package/dist/two-d/render/Types2D.d.ts.map +1 -0
  454. package/dist/two-d/render/Types2D.js +6 -0
  455. package/dist/two-d/render/Types2D.js.map +1 -0
  456. package/dist/two-d/render/index.d.ts +3 -0
  457. package/dist/two-d/render/index.d.ts.map +1 -1
  458. package/dist/two-d/render/index.js +2 -0
  459. package/dist/two-d/render/index.js.map +1 -1
  460. package/dist/two-d/stage/DialogueStage.d.ts +16 -0
  461. package/dist/two-d/stage/DialogueStage.d.ts.map +1 -1
  462. package/dist/two-d/stage/DialogueStage.js +16 -0
  463. package/dist/two-d/stage/DialogueStage.js.map +1 -1
  464. package/dist/two-d/stage/script.d.ts +20 -0
  465. package/dist/two-d/stage/script.d.ts.map +1 -1
  466. package/dist/two-d/stage/script.js +20 -0
  467. package/dist/two-d/stage/script.js.map +1 -1
  468. package/dist/two-d/stage/twee.d.ts +11 -0
  469. package/dist/two-d/stage/twee.d.ts.map +1 -1
  470. package/dist/two-d/stage/twee.js +11 -0
  471. package/dist/two-d/stage/twee.js.map +1 -1
  472. package/dist/two-d/ui/Button.d.ts +4 -3
  473. package/dist/two-d/ui/Button.d.ts.map +1 -1
  474. package/dist/two-d/ui/Button.js.map +1 -1
  475. package/dist/two-d/ui/IconGrid.d.ts +2 -1
  476. package/dist/two-d/ui/IconGrid.d.ts.map +1 -1
  477. package/dist/two-d/ui/IconGrid.js.map +1 -1
  478. package/dist/two-d/ui/ListView.d.ts +2 -1
  479. package/dist/two-d/ui/ListView.d.ts.map +1 -1
  480. package/dist/two-d/ui/ListView.js.map +1 -1
  481. package/dist/two-d/ui/NinePatch.d.ts +3 -2
  482. package/dist/two-d/ui/NinePatch.d.ts.map +1 -1
  483. package/dist/two-d/ui/NinePatch.js +1 -1
  484. package/dist/two-d/ui/NinePatch.js.map +1 -1
  485. package/dist/two-d/ui/Toast.d.ts +2 -1
  486. package/dist/two-d/ui/Toast.d.ts.map +1 -1
  487. package/dist/two-d/ui/Toast.js.map +1 -1
  488. package/dist/two-d/ui/theme.d.ts +2 -2
  489. package/dist/two-d/ui/theme.d.ts.map +1 -1
  490. package/dist/two-d/ui/theme.js.map +1 -1
  491. package/dist/version.d.ts +1 -1
  492. package/dist/version.js +1 -1
  493. package/dist/world/Encounters.d.ts +12 -0
  494. package/dist/world/Encounters.d.ts.map +1 -1
  495. package/dist/world/Encounters.js.map +1 -1
  496. package/dist/world/Environment.d.ts +15 -1
  497. package/dist/world/Environment.d.ts.map +1 -1
  498. package/dist/world/Environment.js +15 -1
  499. package/dist/world/Environment.js.map +1 -1
  500. package/dist/world/Overworld.d.ts +14 -0
  501. package/dist/world/Overworld.d.ts.map +1 -1
  502. package/dist/world/Overworld.js +14 -0
  503. package/dist/world/Overworld.js.map +1 -1
  504. package/dist/world/TurnClock.d.ts +16 -0
  505. package/dist/world/TurnClock.d.ts.map +1 -1
  506. package/dist/world/TurnClock.js +16 -0
  507. package/dist/world/TurnClock.js.map +1 -1
  508. package/dist/world/World.d.ts +14 -0
  509. package/dist/world/World.d.ts.map +1 -1
  510. package/dist/world/World.js +14 -0
  511. package/dist/world/World.js.map +1 -1
  512. package/package.json +3 -2
package/README.md CHANGED
@@ -11,7 +11,7 @@ of their own; improvements to `mwg`'s own files are shared back.
11
11
  **[Live examples and API docs](https://datamoc.github.io/mwg/)**: every example below,
12
12
  playable in the browser with no download, plus the generated API reference.
13
13
 
14
- > **Status: early release (v0.4.0).** Every module in the shared floor below, plus optional
14
+ > **Status: early release (v0.4.1).** Every module in the shared floor below, plus optional
15
15
  > 3D, mobile (Capacitor) and desktop (WebView2) packaging, is built and tested - see
16
16
  > [ROADMAP.md](ROADMAP.md) for the full, numbered history.
17
17
  >
@@ -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,6 +9,26 @@ 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';
14
34
  /** the kind of action a `strike`/`defend` trigger fired from - melee, thrown, a bow, an ability */
@@ -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,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"}
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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Affix.js","sourceRoot":"","sources":["../../src/actors/Affix.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAmD5C;;;;;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"}
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":"AAAA,OAAO,EAAE,SAAS,EAAiB,MAAM,gBAAgB,CAAC;AAc1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;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"}
@@ -5,6 +5,19 @@
5
5
  * absorption always drains the most recently added layer first, so a ward cast on top of a
6
6
  * standing shield breaks before the shield underneath it does, matching how a layered proc
7
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
+ * ```
8
21
  */
9
22
  export interface BarrierLayer {
10
23
  amount: number;
@@ -1 +1 @@
1
- {"version":3,"file":"Barrier.d.ts","sourceRoot":"","sources":["../../src/actors/Barrier.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;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"}
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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Barrier.js","sourceRoot":"","sources":["../../src/actors/Barrier.ts"],"names":[],"mappings":"AAeA,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"}
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 */
@@ -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;;;;;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"}
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"}
@@ -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;;;;;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"}
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"}
@@ -17,6 +17,24 @@ export interface EquipmentOptions<Slot extends string, Item extends EquippableIt
17
17
  * Whatever an item's `modifiers` are, equipping it applies them to the given `StatBlock` and
18
18
  * unequipping removes exactly those - tagged by the item itself as their `source`, so two
19
19
  * rings of the same kind never remove each other's bonus by mistake.
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * import { EquipmentSlots, StatBlock } from '@datamoc/mw_games/actors';
24
+ *
25
+ * const stats = new StatBlock({ base: { attack: 3 } });
26
+ * const equipment = new EquipmentSlots<'weapon' | 'armor', { modifiers?: import('@datamoc/mw_games/actors').Modifier[] }>(
27
+ * ['weapon', 'armor'],
28
+ * stats
29
+ * );
30
+ *
31
+ * const sword = { modifiers: [{ stat: 'attack', op: 'add' as const, value: 5 }] };
32
+ * equipment.equip('weapon', sword);
33
+ * console.log(stats.get('attack')); // 8
34
+ *
35
+ * equipment.unequip('weapon');
36
+ * console.log(stats.get('attack')); // 3
37
+ * ```
20
38
  */
21
39
  export declare class EquipmentSlots<Slot extends string, Item extends EquippableItem> {
22
40
  private readonly names;
@@ -1 +1 @@
1
- {"version":3,"file":"Equipment.d.ts","sourceRoot":"","sources":["../../src/actors/Equipment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1D,MAAM,WAAW,cAAc;IAC9B,oFAAoF;IACpF,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB,CAAC,IAAI,SAAS,MAAM,EAAE,IAAI,SAAS,cAAc;IACjF;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;CAC7C;AAED;;;;;;GAMG;AACH,qBAAa,cAAc,CAAC,IAAI,SAAS,MAAM,EAAE,IAAI,SAAS,cAAc;IAC3E,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAC1C,OAAO,CAAC,IAAI,CAAyB;IACrC,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,YAAY,CAAsC;IAE1D,YAAY,KAAK,EAAE,SAAS,IAAI,EAAE,EAAE,KAAK,GAAE,SAAS,GAAG,IAAW,EAAE,OAAO,GAAE,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAM,EAI7G;IAED,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAEhC;IAED,4JAA4J;IAC5J,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAG5B;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAO9C;IAED,gHAAgH;IAChH,OAAO,CAAC,IAAI;IAOZ,mGAAmG;IACnG,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAQpC;IAED,IAAI,KAAK,IAAI,SAAS,IAAI,EAAE,CAE3B;IAED,OAAO,CAAC,UAAU;IAIlB;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAE7D;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAS,MAAM,EAAE,IAAI,SAAS,cAAc,EAC/D,IAAI,EAAE;QACL,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;QACvB,4DAA4D;QAC5D,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;QAC9B,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;QACzB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;KAC7C,EACD,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,GACxB,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAQ5B;CACD;AAED,MAAM,WAAW,cAAc,CAAC,IAAI,SAAS,MAAM;IAClD,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;CACvB"}
1
+ {"version":3,"file":"Equipment.d.ts","sourceRoot":"","sources":["../../src/actors/Equipment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1D,MAAM,WAAW,cAAc;IAC9B,oFAAoF;IACpF,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB,CAAC,IAAI,SAAS,MAAM,EAAE,IAAI,SAAS,cAAc;IACjF;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;CAC7C;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,cAAc,CAAC,IAAI,SAAS,MAAM,EAAE,IAAI,SAAS,cAAc;IAC3E,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAC1C,OAAO,CAAC,IAAI,CAAyB;IACrC,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,YAAY,CAAsC;IAE1D,YAAY,KAAK,EAAE,SAAS,IAAI,EAAE,EAAE,KAAK,GAAE,SAAS,GAAG,IAAW,EAAE,OAAO,GAAE,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAM,EAI7G;IAED,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAEhC;IAED,4JAA4J;IAC5J,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAG5B;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAO9C;IAED,gHAAgH;IAChH,OAAO,CAAC,IAAI;IAOZ,mGAAmG;IACnG,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAQpC;IAED,IAAI,KAAK,IAAI,SAAS,IAAI,EAAE,CAE3B;IAED,OAAO,CAAC,UAAU;IAIlB;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAE7D;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAS,MAAM,EAAE,IAAI,SAAS,cAAc,EAC/D,IAAI,EAAE;QACL,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;QACvB,4DAA4D;QAC5D,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;QAC9B,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;QACzB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;KAC7C,EACD,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,GACxB,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAQ5B;CACD;AAED,MAAM,WAAW,cAAc,CAAC,IAAI,SAAS,MAAM;IAClD,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;CACvB"}
@@ -4,6 +4,24 @@
4
4
  * Whatever an item's `modifiers` are, equipping it applies them to the given `StatBlock` and
5
5
  * unequipping removes exactly those - tagged by the item itself as their `source`, so two
6
6
  * rings of the same kind never remove each other's bonus by mistake.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { EquipmentSlots, StatBlock } from '@datamoc/mw_games/actors';
11
+ *
12
+ * const stats = new StatBlock({ base: { attack: 3 } });
13
+ * const equipment = new EquipmentSlots<'weapon' | 'armor', { modifiers?: import('@datamoc/mw_games/actors').Modifier[] }>(
14
+ * ['weapon', 'armor'],
15
+ * stats
16
+ * );
17
+ *
18
+ * const sword = { modifiers: [{ stat: 'attack', op: 'add' as const, value: 5 }] };
19
+ * equipment.equip('weapon', sword);
20
+ * console.log(stats.get('attack')); // 8
21
+ *
22
+ * equipment.unequip('weapon');
23
+ * console.log(stats.get('attack')); // 3
24
+ * ```
7
25
  */
8
26
  export class EquipmentSlots {
9
27
  constructor(slots, stats = null, options = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"Equipment.js","sourceRoot":"","sources":["../../src/actors/Equipment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Equipment.js","sourceRoot":"","sources":["../../src/actors/Equipment.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,18 @@
5
5
  * stacking means in practice - forty arrows are one inventory slot, not forty. Weight and
6
6
  * capacity are optional: a game that does not track carry weight simply never sets a
7
7
  * capacity, and every check trivially passes.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import { Inventory } from '@datamoc/mw_games/actors';
12
+ *
13
+ * const bag = new Inventory({ capacity: 50 });
14
+ * bag.add({ id: 'potion', quantity: 3, stackable: true, weight: 0.5 });
15
+ * bag.add({ id: 'potion', quantity: 2, stackable: true, weight: 0.5 }); // merges into one stack of 5
16
+ *
17
+ * const potion = bag.find('potion');
18
+ * console.log(potion?.quantity, bag.totalWeight);
19
+ * ```
8
20
  */
9
21
  export interface InventoryItem {
10
22
  /** identifies the kind of item; two stackable entries with the same id (and `instanceId`) merge */
@@ -1 +1 @@
1
- {"version":3,"file":"Inventory.d.ts","sourceRoot":"","sources":["../../src/actors/Inventory.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,aAAa;IAC7B,mGAAmG;IACnG,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,mFAAmF;IACnF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAChC,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,SAAS;IACrB,OAAO,CAAC,KAAK,CAAuB;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAE3B,YAAY,OAAO,GAAE,gBAAqB,EAEzC;IAED,IAAI,KAAK,IAAI,SAAS,aAAa,EAAE,CAEpC;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,OAAO,CAAC,QAAQ;IAIhB,8FAA8F;IAC9F,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAE/D;IAED;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAiBhC;IAED,0FAA0F;IAC1F,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAQ/D;IAED;;;OAGG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,SAAI,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAY7E;IAED;;;;;;;;;;;OAWG;IACH,MAAM,IAAI,cAAc,CAiBvB;IAED;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,IAAI,EAAE,cAAc,GAAG,SAAS,CAiB1F;CACD;AAED,wFAAwF;AACxF,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,QAAQ,CAAC,CAAC;AAEzE,mEAAmE;AACnE,MAAM,WAAW,kBAAkB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,kBAAkB,EAAE,CAAC;CAC5B"}
1
+ {"version":3,"file":"Inventory.d.ts","sourceRoot":"","sources":["../../src/actors/Inventory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,aAAa;IAC7B,mGAAmG;IACnG,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,mFAAmF;IACnF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAChC,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,SAAS;IACrB,OAAO,CAAC,KAAK,CAAuB;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAE3B,YAAY,OAAO,GAAE,gBAAqB,EAEzC;IAED,IAAI,KAAK,IAAI,SAAS,aAAa,EAAE,CAEpC;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,OAAO,CAAC,QAAQ;IAIhB,8FAA8F;IAC9F,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAE/D;IAED;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAiBhC;IAED,0FAA0F;IAC1F,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAQ/D;IAED;;;OAGG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,SAAI,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAY7E;IAED;;;;;;;;;;;OAWG;IACH,MAAM,IAAI,cAAc,CAiBvB;IAED;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,IAAI,EAAE,cAAc,GAAG,SAAS,CAiB1F;CACD;AAED,wFAAwF;AACxF,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,QAAQ,CAAC,CAAC;AAEzE,mEAAmE;AACnE,MAAM,WAAW,kBAAkB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,kBAAkB,EAAE,CAAC;CAC5B"}
@@ -5,6 +5,18 @@
5
5
  * stacking means in practice - forty arrows are one inventory slot, not forty. Weight and
6
6
  * capacity are optional: a game that does not track carry weight simply never sets a
7
7
  * capacity, and every check trivially passes.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import { Inventory } from '@datamoc/mw_games/actors';
12
+ *
13
+ * const bag = new Inventory({ capacity: 50 });
14
+ * bag.add({ id: 'potion', quantity: 3, stackable: true, weight: 0.5 });
15
+ * bag.add({ id: 'potion', quantity: 2, stackable: true, weight: 0.5 }); // merges into one stack of 5
16
+ *
17
+ * const potion = bag.find('potion');
18
+ * console.log(potion?.quantity, bag.totalWeight);
19
+ * ```
8
20
  */
9
21
  export class Inventory {
10
22
  constructor(options = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"Inventory.js","sourceRoot":"","sources":["../../src/actors/Inventory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Inventory.js","sourceRoot":"","sources":["../../src/actors/Inventory.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,19 @@ import type { InventoryItem } from './Inventory.ts';
4
4
  * an enchantment/upgrade level, and durability that wears down with use. Small, focused
5
5
  * functions over a plain `InventoryItem` - the same size of primitive `skillCheck` already is -
6
6
  * rather than a class, since none of the three need to remember anything beyond the item.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { identify, enchant, damageItem, repairItem } from '@datamoc/mw_games/actors';
11
+ *
12
+ * const sword = { id: 'sword', quantity: 1, durability: 30, maxDurability: 50 };
13
+ *
14
+ * identify(sword);
15
+ * enchant(sword, 1); // now +1
16
+ *
17
+ * const broke = damageItem(sword, 40); // durability floors at 0
18
+ * repairItem(sword, 10);
19
+ * ```
7
20
  */
8
21
  /** reveals an item's real nature - a potion's true effect, a ring's curse - once identified */
9
22
  export declare function identify(item: InventoryItem): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ItemState.d.ts","sourceRoot":"","sources":["../../src/actors/ItemState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD;;;;;GAKG;AAEH,+FAA+F;AAC/F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAElD;AAED,uEAAuE;AACvE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEnD;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,GAAE,kBAA2B,GAAG,MAAM,CAK5G;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAMvE;AAED,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAIpE"}
1
+ {"version":3,"file":"ItemState.d.ts","sourceRoot":"","sources":["../../src/actors/ItemState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD;;;;;;;;;;;;;;;;;;GAkBG;AAEH,+FAA+F;AAC/F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAElD;AAED,uEAAuE;AACvE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEnD;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,GAAE,kBAA2B,GAAG,MAAM,CAK5G;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAMvE;AAED,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAIpE"}
@@ -4,6 +4,19 @@ import { removeAffix } from './Affix.js';
4
4
  * an enchantment/upgrade level, and durability that wears down with use. Small, focused
5
5
  * functions over a plain `InventoryItem` - the same size of primitive `skillCheck` already is -
6
6
  * rather than a class, since none of the three need to remember anything beyond the item.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { identify, enchant, damageItem, repairItem } from '@datamoc/mw_games/actors';
11
+ *
12
+ * const sword = { id: 'sword', quantity: 1, durability: 30, maxDurability: 50 };
13
+ *
14
+ * identify(sword);
15
+ * enchant(sword, 1); // now +1
16
+ *
17
+ * const broke = damageItem(sword, 40); // durability floors at 0
18
+ * repairItem(sword, 10);
19
+ * ```
7
20
  */
8
21
  /** reveals an item's real nature - a potion's true effect, a ring's curse - once identified */
9
22
  export function identify(item) {
@@ -1 +1 @@
1
- {"version":3,"file":"ItemState.js","sourceRoot":"","sources":["../../src/actors/ItemState.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;;GAKG;AAEH,+FAA+F;AAC/F,MAAM,UAAU,QAAQ,CAAC,IAAmB;IAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACxB,CAAC;AAKD;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CAAC,IAAmB,EAAE,KAAa,EAAE,WAAW,GAAuB,MAAM;IACnG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IACpD,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;IACvC,IAAI,WAAW,KAAK,QAAQ;QAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,KAAK,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,IAAmB,EAAE,MAAc;IAC7D,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACnD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAEjG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,CAAC;IAChF,OAAO,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,UAAU,CAAC,IAAmB,EAAE,MAAc;IAC7D,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;QAAE,OAAO;IAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO;IACpD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,CAAC;AAClG,CAAC"}
1
+ {"version":3,"file":"ItemState.js","sourceRoot":"","sources":["../../src/actors/ItemState.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;;;;;;;;;;;;;;;GAkBG;AAEH,+FAA+F;AAC/F,MAAM,UAAU,QAAQ,CAAC,IAAmB;IAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACxB,CAAC;AAKD;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CAAC,IAAmB,EAAE,KAAa,EAAE,WAAW,GAAuB,MAAM;IACnG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IACpD,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;IACvC,IAAI,WAAW,KAAK,QAAQ;QAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,KAAK,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,IAAmB,EAAE,MAAc;IAC7D,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACnD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAEjG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,CAAC;IAChF,OAAO,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,UAAU,CAAC,IAAmB,EAAE,MAAc;IAC7D,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;QAAE,OAAO;IAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO;IACpD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,CAAC;AAClG,CAAC"}
@@ -22,6 +22,19 @@ export interface ItemStatusEffectHandle {
22
22
  * it), and restores exactly that value once `clock` expires the effect or `cancel()` is
23
23
  * called early - the same "never has to remember to remove what it added" guarantee
24
24
  * `applyStatusEffect` already gives a `StatBlock`.
25
+ *
26
+ * @example
27
+ * ```ts
28
+ * import { applyItemStatusEffect } from '@datamoc/mw_games/actors';
29
+ * import { TurnClock } from '@datamoc/mw_games/world';
30
+ *
31
+ * const sword = { id: 'sword', quantity: 1, blessed: false };
32
+ * const clock = new TurnClock();
33
+ *
34
+ * const blessing = applyItemStatusEffect(sword, clock, { fields: { blessed: true }, duration: 3 });
35
+ * clock.advance(3); // blessed reverts to false automatically
36
+ * blessing.cancel(); // or end it early
37
+ * ```
25
38
  */
26
39
  export declare function applyItemStatusEffect<T extends object>(item: T, clock: EffectClock, options: ItemStatusEffectOptions<T>): ItemStatusEffectHandle;
27
40
  //# sourceMappingURL=ItemStatusEffect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ItemStatusEffect.d.ts","sourceRoot":"","sources":["../../src/actors/ItemStatusEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,uBAAuB,CAAC,CAAC;IACzC,2FAA2F;IAC3F,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAEnB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IAEjB,qFAAqF;IACrF,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED,sGAAsG;AACtG,MAAM,WAAW,sBAAsB;IACtC,MAAM,IAAI,IAAI,CAAC;CACf;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,MAAM,EACrD,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC,GACjC,sBAAsB,CAuBxB"}
1
+ {"version":3,"file":"ItemStatusEffect.d.ts","sourceRoot":"","sources":["../../src/actors/ItemStatusEffect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,uBAAuB,CAAC,CAAC;IACzC,2FAA2F;IAC3F,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAEnB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IAEjB,qFAAqF;IACrF,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED,sGAAsG;AACtG,MAAM,WAAW,sBAAsB;IACtC,MAAM,IAAI,IAAI,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,MAAM,EACrD,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC,GACjC,sBAAsB,CAuBxB"}
@@ -9,6 +9,19 @@
9
9
  * it), and restores exactly that value once `clock` expires the effect or `cancel()` is
10
10
  * called early - the same "never has to remember to remove what it added" guarantee
11
11
  * `applyStatusEffect` already gives a `StatBlock`.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * import { applyItemStatusEffect } from '@datamoc/mw_games/actors';
16
+ * import { TurnClock } from '@datamoc/mw_games/world';
17
+ *
18
+ * const sword = { id: 'sword', quantity: 1, blessed: false };
19
+ * const clock = new TurnClock();
20
+ *
21
+ * const blessing = applyItemStatusEffect(sword, clock, { fields: { blessed: true }, duration: 3 });
22
+ * clock.advance(3); // blessed reverts to false automatically
23
+ * blessing.cancel(); // or end it early
24
+ * ```
12
25
  */
13
26
  export function applyItemStatusEffect(item, clock, options) {
14
27
  const previous = new Map();