@datamoc/mw_games 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (478) hide show
  1. package/README.md +401 -395
  2. package/dist/actors/Affix.d.ts +26 -0
  3. package/dist/actors/Affix.d.ts.map +1 -1
  4. package/dist/actors/Affix.js +32 -1
  5. package/dist/actors/Affix.js.map +1 -1
  6. package/dist/actors/Barrier.d.ts +47 -0
  7. package/dist/actors/Barrier.d.ts.map +1 -0
  8. package/dist/actors/Barrier.js +70 -0
  9. package/dist/actors/Barrier.js.map +1 -0
  10. package/dist/actors/Charges.d.ts +22 -0
  11. package/dist/actors/Charges.d.ts.map +1 -1
  12. package/dist/actors/Charges.js +26 -0
  13. package/dist/actors/Charges.js.map +1 -1
  14. package/dist/actors/Equipment.d.ts +30 -0
  15. package/dist/actors/Equipment.d.ts.map +1 -1
  16. package/dist/actors/Equipment.js +33 -1
  17. package/dist/actors/Equipment.js.map +1 -1
  18. package/dist/actors/Inventory.d.ts +58 -3
  19. package/dist/actors/Inventory.d.ts.map +1 -1
  20. package/dist/actors/Inventory.js +97 -5
  21. package/dist/actors/Inventory.js.map +1 -1
  22. package/dist/actors/ItemState.d.ts +11 -2
  23. package/dist/actors/ItemState.d.ts.map +1 -1
  24. package/dist/actors/ItemState.js +18 -2
  25. package/dist/actors/ItemState.js.map +1 -1
  26. package/dist/actors/Loot.js +1 -1
  27. package/dist/actors/Loot.js.map +1 -1
  28. package/dist/actors/Progression.d.ts +9 -0
  29. package/dist/actors/Progression.d.ts.map +1 -1
  30. package/dist/actors/Progression.js +7 -0
  31. package/dist/actors/Progression.js.map +1 -1
  32. package/dist/actors/Resource.d.ts +16 -0
  33. package/dist/actors/Resource.d.ts.map +1 -1
  34. package/dist/actors/Resource.js +22 -0
  35. package/dist/actors/Resource.js.map +1 -1
  36. package/dist/actors/SkillPoints.d.ts +14 -0
  37. package/dist/actors/SkillPoints.d.ts.map +1 -1
  38. package/dist/actors/SkillPoints.js +16 -0
  39. package/dist/actors/SkillPoints.js.map +1 -1
  40. package/dist/actors/StatBlock.d.ts +16 -0
  41. package/dist/actors/StatBlock.d.ts.map +1 -1
  42. package/dist/actors/StatBlock.js +21 -0
  43. package/dist/actors/StatBlock.js.map +1 -1
  44. package/dist/actors/Support.d.ts +2 -2
  45. package/dist/actors/Support.d.ts.map +1 -1
  46. package/dist/actors/Support.js +2 -2
  47. package/dist/actors/Support.js.map +1 -1
  48. package/dist/actors/index.d.ts +8 -5
  49. package/dist/actors/index.d.ts.map +1 -1
  50. package/dist/actors/index.js +3 -2
  51. package/dist/actors/index.js.map +1 -1
  52. package/dist/assets/ByteProgress.d.ts +27 -0
  53. package/dist/assets/ByteProgress.d.ts.map +1 -0
  54. package/dist/assets/ByteProgress.js +44 -0
  55. package/dist/assets/ByteProgress.js.map +1 -0
  56. package/dist/assets/Streaming.d.ts +1 -1
  57. package/dist/assets/Streaming.js +1 -1
  58. package/dist/assets/Streaming.js.map +1 -1
  59. package/dist/assets/index.d.ts +11 -52
  60. package/dist/assets/index.d.ts.map +1 -1
  61. package/dist/assets/index.js +9 -80
  62. package/dist/assets/index.js.map +1 -1
  63. package/dist/assets/loader.d.ts +34 -0
  64. package/dist/assets/loader.d.ts.map +1 -0
  65. package/dist/assets/loader.js +61 -0
  66. package/dist/assets/loader.js.map +1 -0
  67. package/dist/assets/paths.d.ts +40 -0
  68. package/dist/assets/paths.d.ts.map +1 -0
  69. package/dist/assets/paths.js +49 -0
  70. package/dist/assets/paths.js.map +1 -0
  71. package/dist/audio/Playable.js +1 -1
  72. package/dist/battle/Field.d.ts +2 -2
  73. package/dist/battle/Field.d.ts.map +1 -1
  74. package/dist/battle/Field.js +3 -3
  75. package/dist/battle/Field.js.map +1 -1
  76. package/dist/battle/Hooks.d.ts +7 -13
  77. package/dist/battle/Hooks.d.ts.map +1 -1
  78. package/dist/battle/Hooks.js +20 -18
  79. package/dist/battle/Hooks.js.map +1 -1
  80. package/dist/core/Hooks.d.ts +34 -0
  81. package/dist/core/Hooks.d.ts.map +1 -0
  82. package/dist/core/Hooks.js +33 -0
  83. package/dist/core/Hooks.js.map +1 -0
  84. package/dist/core/Input.d.ts +41 -0
  85. package/dist/core/Input.d.ts.map +1 -1
  86. package/dist/core/Input.js +126 -21
  87. package/dist/core/Input.js.map +1 -1
  88. package/dist/core/PlayerInput.d.ts +5 -0
  89. package/dist/core/PlayerInput.d.ts.map +1 -1
  90. package/dist/core/PlayerInput.js +11 -0
  91. package/dist/core/PlayerInput.js.map +1 -1
  92. package/dist/core/Random.d.ts +14 -5
  93. package/dist/core/Random.d.ts.map +1 -1
  94. package/dist/core/Random.js +14 -5
  95. package/dist/core/Random.js.map +1 -1
  96. package/dist/core/Scene.d.ts +16 -6
  97. package/dist/core/Scene.d.ts.map +1 -1
  98. package/dist/core/Scene.js +18 -6
  99. package/dist/core/Scene.js.map +1 -1
  100. package/dist/core/SceneStack.d.ts +8 -4
  101. package/dist/core/SceneStack.d.ts.map +1 -1
  102. package/dist/core/SceneStack.js +4 -0
  103. package/dist/core/SceneStack.js.map +1 -1
  104. package/dist/core/index.d.ts +3 -2
  105. package/dist/core/index.d.ts.map +1 -1
  106. package/dist/core/index.js +1 -1
  107. package/dist/core/index.js.map +1 -1
  108. package/dist/index.d.ts +4 -5
  109. package/dist/index.d.ts.map +1 -1
  110. package/dist/index.js +4 -5
  111. package/dist/index.js.map +1 -1
  112. package/dist/mw_games.global.js +88 -88
  113. package/dist/roguelike/Boss.d.ts +4 -4
  114. package/dist/roguelike/Boss.d.ts.map +1 -1
  115. package/dist/roguelike/Boss.js +6 -6
  116. package/dist/roguelike/Boss.js.map +1 -1
  117. package/dist/roguelike/Combat.d.ts +10 -11
  118. package/dist/roguelike/Combat.d.ts.map +1 -1
  119. package/dist/roguelike/Combat.js +9 -16
  120. package/dist/roguelike/Combat.js.map +1 -1
  121. package/dist/roguelike/ContentRoll.d.ts +43 -0
  122. package/dist/roguelike/ContentRoll.d.ts.map +1 -0
  123. package/dist/roguelike/ContentRoll.js +38 -0
  124. package/dist/roguelike/ContentRoll.js.map +1 -0
  125. package/dist/roguelike/DungeonParity.d.ts +42 -0
  126. package/dist/roguelike/DungeonParity.d.ts.map +1 -0
  127. package/dist/roguelike/DungeonParity.js +63 -0
  128. package/dist/roguelike/DungeonParity.js.map +1 -0
  129. package/dist/roguelike/Features.d.ts +42 -0
  130. package/dist/roguelike/Features.d.ts.map +1 -0
  131. package/dist/roguelike/Features.js +59 -0
  132. package/dist/roguelike/Features.js.map +1 -0
  133. package/dist/roguelike/MonsterAI.js +1 -1
  134. package/dist/roguelike/MonsterAI.js.map +1 -1
  135. package/dist/roguelike/MultiStageAbility.d.ts +43 -0
  136. package/dist/roguelike/MultiStageAbility.d.ts.map +1 -0
  137. package/dist/roguelike/MultiStageAbility.js +60 -0
  138. package/dist/roguelike/MultiStageAbility.js.map +1 -0
  139. package/dist/roguelike/RoomBuilders.d.ts +43 -0
  140. package/dist/roguelike/RoomBuilders.d.ts.map +1 -0
  141. package/dist/roguelike/RoomBuilders.js +40 -0
  142. package/dist/roguelike/RoomBuilders.js.map +1 -0
  143. package/dist/roguelike/Targeting.d.ts +22 -0
  144. package/dist/roguelike/Targeting.d.ts.map +1 -1
  145. package/dist/roguelike/Targeting.js +20 -0
  146. package/dist/roguelike/Targeting.js.map +1 -1
  147. package/dist/roguelike/TriggerTracker.d.ts +36 -0
  148. package/dist/roguelike/TriggerTracker.d.ts.map +1 -0
  149. package/dist/roguelike/TriggerTracker.js +49 -0
  150. package/dist/roguelike/TriggerTracker.js.map +1 -0
  151. package/dist/roguelike/generate.d.ts +49 -0
  152. package/dist/roguelike/generate.d.ts.map +1 -1
  153. package/dist/roguelike/generate.js +38 -10
  154. package/dist/roguelike/generate.js.map +1 -1
  155. package/dist/roguelike/index.d.ts +16 -4
  156. package/dist/roguelike/index.d.ts.map +1 -1
  157. package/dist/roguelike/index.js +8 -2
  158. package/dist/roguelike/index.js.map +1 -1
  159. package/dist/rpg/EventRunner.d.ts +30 -8
  160. package/dist/rpg/EventRunner.d.ts.map +1 -1
  161. package/dist/rpg/EventRunner.js +1 -13
  162. package/dist/rpg/EventRunner.js.map +1 -1
  163. package/dist/rpg/FreeMover.d.ts +2 -2
  164. package/dist/rpg/FreeMover.d.ts.map +1 -1
  165. package/dist/rpg/FreeMover.js +5 -5
  166. package/dist/rpg/FreeMover.js.map +1 -1
  167. package/dist/rpg/GridMover.d.ts +2 -2
  168. package/dist/rpg/GridMover.d.ts.map +1 -1
  169. package/dist/rpg/GridMover.js +5 -5
  170. package/dist/rpg/GridMover.js.map +1 -1
  171. package/dist/rpg/MovableSprite.d.ts +25 -0
  172. package/dist/rpg/MovableSprite.d.ts.map +1 -0
  173. package/dist/rpg/MovableSprite.js +2 -0
  174. package/dist/rpg/MovableSprite.js.map +1 -0
  175. package/dist/rpg/Quest.d.ts +6 -1
  176. package/dist/rpg/Quest.d.ts.map +1 -1
  177. package/dist/rpg/Quest.js +6 -1
  178. package/dist/rpg/Quest.js.map +1 -1
  179. package/dist/rpg/automap.d.ts +24 -2
  180. package/dist/rpg/automap.d.ts.map +1 -1
  181. package/dist/rpg/automap.js +9 -1
  182. package/dist/rpg/automap.js.map +1 -1
  183. package/dist/rpg/index.d.ts +4 -4
  184. package/dist/rpg/index.d.ts.map +1 -1
  185. package/dist/rpg/index.js +1 -1
  186. package/dist/rpg/index.js.map +1 -1
  187. package/dist/three-d/Character3D.d.ts +26 -1
  188. package/dist/three-d/Character3D.d.ts.map +1 -1
  189. package/dist/three-d/Character3D.js +31 -14
  190. package/dist/three-d/Character3D.js.map +1 -1
  191. package/dist/three-d/Collision3D.d.ts +63 -0
  192. package/dist/three-d/Collision3D.d.ts.map +1 -0
  193. package/dist/three-d/Collision3D.js +75 -0
  194. package/dist/three-d/Collision3D.js.map +1 -0
  195. package/dist/three-d/Models.js +1 -1
  196. package/dist/three-d/index.d.ts +3 -1
  197. package/dist/three-d/index.d.ts.map +1 -1
  198. package/dist/three-d/index.js +1 -0
  199. package/dist/three-d/index.js.map +1 -1
  200. package/dist/{core → two-d}/Game.d.ts +7 -6
  201. package/dist/two-d/Game.d.ts.map +1 -0
  202. package/dist/{core → two-d}/Game.js +3 -3
  203. package/dist/two-d/Game.js.map +1 -0
  204. package/dist/two-d/Scene2D.d.ts +19 -0
  205. package/dist/two-d/Scene2D.d.ts.map +1 -0
  206. package/dist/two-d/Scene2D.js +23 -0
  207. package/dist/two-d/Scene2D.js.map +1 -0
  208. package/dist/two-d/index.d.ts +20 -0
  209. package/dist/two-d/index.d.ts.map +1 -0
  210. package/dist/two-d/index.js +18 -0
  211. package/dist/two-d/index.js.map +1 -0
  212. package/dist/two-d/render/ActorAnimator.d.ts.map +1 -0
  213. package/dist/two-d/render/ActorAnimator.js.map +1 -0
  214. package/dist/two-d/render/AnimatedSprite.d.ts.map +1 -0
  215. package/dist/two-d/render/AnimatedSprite.js.map +1 -0
  216. package/dist/two-d/render/Autotile.d.ts.map +1 -0
  217. package/dist/two-d/render/Autotile.js.map +1 -0
  218. package/dist/two-d/render/Camera.d.ts.map +1 -0
  219. package/dist/{render → two-d/render}/Camera.js +2 -2
  220. package/dist/two-d/render/Camera.js.map +1 -0
  221. package/dist/two-d/render/Capabilities.d.ts.map +1 -0
  222. package/dist/two-d/render/Capabilities.js.map +1 -0
  223. package/dist/two-d/render/ColorBlindness.d.ts.map +1 -0
  224. package/dist/two-d/render/ColorBlindness.js.map +1 -0
  225. package/dist/two-d/render/ColorTransformBatcher.d.ts.map +1 -0
  226. package/dist/{render → two-d/render}/ColorTransformBatcher.js +3 -2
  227. package/dist/two-d/render/ColorTransformBatcher.js.map +1 -0
  228. package/dist/two-d/render/LayeredSprite.d.ts.map +1 -0
  229. package/dist/two-d/render/LayeredSprite.js.map +1 -0
  230. package/dist/two-d/render/Minimap.d.ts.map +1 -0
  231. package/dist/{render → two-d/render}/Minimap.js +1 -1
  232. package/dist/two-d/render/Minimap.js.map +1 -0
  233. package/dist/two-d/render/Particles.d.ts +109 -0
  234. package/dist/two-d/render/Particles.d.ts.map +1 -0
  235. package/dist/two-d/render/Particles.js +178 -0
  236. package/dist/two-d/render/Particles.js.map +1 -0
  237. package/dist/two-d/render/Projectile.d.ts.map +1 -0
  238. package/dist/two-d/render/Projectile.js.map +1 -0
  239. package/dist/two-d/render/ScreenEffects.d.ts +71 -0
  240. package/dist/two-d/render/ScreenEffects.d.ts.map +1 -0
  241. package/dist/two-d/render/ScreenEffects.js +133 -0
  242. package/dist/two-d/render/ScreenEffects.js.map +1 -0
  243. package/dist/two-d/render/SpriteSheet.d.ts.map +1 -0
  244. package/dist/{render → two-d/render}/SpriteSheet.js +1 -1
  245. package/dist/two-d/render/SpriteSheet.js.map +1 -0
  246. package/dist/two-d/render/StatusVisuals.d.ts.map +1 -0
  247. package/dist/two-d/render/StatusVisuals.js.map +1 -0
  248. package/dist/two-d/render/TileMap.d.ts.map +1 -0
  249. package/dist/{render → two-d/render}/TileMap.js +1 -1
  250. package/dist/two-d/render/TileMap.js.map +1 -0
  251. package/dist/{rpg → two-d/render}/TiledMap.d.ts +2 -2
  252. package/dist/two-d/render/TiledMap.d.ts.map +1 -0
  253. package/dist/{rpg → two-d/render}/TiledMap.js +2 -2
  254. package/dist/two-d/render/TiledMap.js.map +1 -0
  255. package/dist/two-d/render/TintedSprite.d.ts.map +1 -0
  256. package/dist/two-d/render/TintedSprite.js.map +1 -0
  257. package/dist/two-d/render/Viewport.d.ts.map +1 -0
  258. package/dist/two-d/render/Viewport.js.map +1 -0
  259. package/dist/{render → two-d/render}/index.d.ts +6 -0
  260. package/dist/two-d/render/index.d.ts.map +1 -0
  261. package/dist/{render → two-d/render}/index.js +3 -0
  262. package/dist/two-d/render/index.js.map +1 -0
  263. package/dist/two-d/stage/DialogueStage.d.ts.map +1 -0
  264. package/dist/{stage → two-d/stage}/DialogueStage.js +1 -1
  265. package/dist/two-d/stage/DialogueStage.js.map +1 -0
  266. package/dist/two-d/stage/index.d.ts.map +1 -0
  267. package/dist/two-d/stage/index.js.map +1 -0
  268. package/dist/two-d/stage/script.d.ts.map +1 -0
  269. package/dist/{stage → two-d/stage}/script.js +0 -0
  270. package/dist/two-d/stage/script.js.map +1 -0
  271. package/dist/two-d/stage/twee.d.ts.map +1 -0
  272. package/dist/two-d/stage/twee.js.map +1 -0
  273. package/dist/two-d/ui/Bar.d.ts.map +1 -0
  274. package/dist/two-d/ui/Bar.js.map +1 -0
  275. package/dist/two-d/ui/BitmapLabel.d.ts.map +1 -0
  276. package/dist/two-d/ui/BitmapLabel.js.map +1 -0
  277. package/dist/{ui → two-d/ui}/Button.d.ts +7 -1
  278. package/dist/two-d/ui/Button.d.ts.map +1 -0
  279. package/dist/{ui → two-d/ui}/Button.js +20 -4
  280. package/dist/two-d/ui/Button.js.map +1 -0
  281. package/dist/two-d/ui/EventDialogue.d.ts +23 -0
  282. package/dist/two-d/ui/EventDialogue.d.ts.map +1 -0
  283. package/dist/two-d/ui/EventDialogue.js +27 -0
  284. package/dist/two-d/ui/EventDialogue.js.map +1 -0
  285. package/dist/two-d/ui/FloatingText.d.ts.map +1 -0
  286. package/dist/two-d/ui/FloatingText.js.map +1 -0
  287. package/dist/{ui → two-d/ui}/HelpScreen.d.ts +1 -1
  288. package/dist/two-d/ui/HelpScreen.d.ts.map +1 -0
  289. package/dist/two-d/ui/HelpScreen.js.map +1 -0
  290. package/dist/{ui → two-d/ui}/IconGrid.d.ts +1 -1
  291. package/dist/two-d/ui/IconGrid.d.ts.map +1 -0
  292. package/dist/two-d/ui/IconGrid.js.map +1 -0
  293. package/dist/two-d/ui/Label.d.ts.map +1 -0
  294. package/dist/two-d/ui/Label.js.map +1 -0
  295. package/dist/{ui → two-d/ui}/ListView.d.ts +1 -1
  296. package/dist/two-d/ui/ListView.d.ts.map +1 -0
  297. package/dist/two-d/ui/ListView.js.map +1 -0
  298. package/dist/{ui → two-d/ui}/LoadingScreen.d.ts +1 -1
  299. package/dist/two-d/ui/LoadingScreen.d.ts.map +1 -0
  300. package/dist/two-d/ui/LoadingScreen.js.map +1 -0
  301. package/dist/{ui → two-d/ui}/MessageBox.d.ts +1 -1
  302. package/dist/two-d/ui/MessageBox.d.ts.map +1 -0
  303. package/dist/two-d/ui/MessageBox.js.map +1 -0
  304. package/dist/two-d/ui/NinePatch.d.ts.map +1 -0
  305. package/dist/two-d/ui/NinePatch.js.map +1 -0
  306. package/dist/{ui → two-d/ui}/RebindScreen.d.ts +1 -1
  307. package/dist/two-d/ui/RebindScreen.d.ts.map +1 -0
  308. package/dist/{ui → two-d/ui}/RebindScreen.js +1 -1
  309. package/dist/two-d/ui/RebindScreen.js.map +1 -0
  310. package/dist/two-d/ui/StatsScreen.d.ts.map +1 -0
  311. package/dist/two-d/ui/StatsScreen.js.map +1 -0
  312. package/dist/two-d/ui/Toast.d.ts.map +1 -0
  313. package/dist/{ui → two-d/ui}/Toast.js +1 -1
  314. package/dist/two-d/ui/Toast.js.map +1 -0
  315. package/dist/two-d/ui/Tooltip.d.ts +94 -0
  316. package/dist/two-d/ui/Tooltip.d.ts.map +1 -0
  317. package/dist/two-d/ui/Tooltip.js +149 -0
  318. package/dist/two-d/ui/Tooltip.js.map +1 -0
  319. package/dist/two-d/ui/VerticalLabel.d.ts.map +1 -0
  320. package/dist/two-d/ui/VerticalLabel.js.map +1 -0
  321. package/dist/{ui → two-d/ui}/Window.d.ts +2 -2
  322. package/dist/two-d/ui/Window.d.ts.map +1 -0
  323. package/dist/{ui → two-d/ui}/Window.js +1 -1
  324. package/dist/two-d/ui/Window.js.map +1 -0
  325. package/dist/two-d/ui/WindowStack.d.ts.map +1 -0
  326. package/dist/{ui → two-d/ui}/WindowStack.js +1 -1
  327. package/dist/two-d/ui/WindowStack.js.map +1 -0
  328. package/dist/{ui → two-d/ui}/index.d.ts +4 -0
  329. package/dist/two-d/ui/index.d.ts.map +1 -0
  330. package/dist/{ui → two-d/ui}/index.js +2 -0
  331. package/dist/two-d/ui/index.js.map +1 -0
  332. package/dist/{ui → two-d/ui}/theme.d.ts +2 -2
  333. package/dist/two-d/ui/theme.d.ts.map +1 -0
  334. package/dist/{ui → two-d/ui}/theme.js +1 -1
  335. package/dist/two-d/ui/theme.js.map +1 -0
  336. package/dist/version.d.ts +1 -1
  337. package/dist/version.js +1 -1
  338. package/dist/world/Encounters.js +1 -1
  339. package/dist/world/Encounters.js.map +1 -1
  340. package/dist/world/Environment.d.ts +12 -3
  341. package/dist/world/Environment.d.ts.map +1 -1
  342. package/dist/world/Environment.js +18 -9
  343. package/dist/world/Environment.js.map +1 -1
  344. package/package.json +227 -147
  345. package/dist/core/Game.d.ts.map +0 -1
  346. package/dist/core/Game.js.map +0 -1
  347. package/dist/render/ActorAnimator.d.ts.map +0 -1
  348. package/dist/render/ActorAnimator.js.map +0 -1
  349. package/dist/render/AnimatedSprite.d.ts.map +0 -1
  350. package/dist/render/AnimatedSprite.js.map +0 -1
  351. package/dist/render/Autotile.d.ts.map +0 -1
  352. package/dist/render/Autotile.js.map +0 -1
  353. package/dist/render/Camera.d.ts.map +0 -1
  354. package/dist/render/Camera.js.map +0 -1
  355. package/dist/render/Capabilities.d.ts.map +0 -1
  356. package/dist/render/Capabilities.js.map +0 -1
  357. package/dist/render/ColorBlindness.d.ts.map +0 -1
  358. package/dist/render/ColorBlindness.js.map +0 -1
  359. package/dist/render/ColorTransformBatcher.d.ts.map +0 -1
  360. package/dist/render/ColorTransformBatcher.js.map +0 -1
  361. package/dist/render/LayeredSprite.d.ts.map +0 -1
  362. package/dist/render/LayeredSprite.js.map +0 -1
  363. package/dist/render/Minimap.d.ts.map +0 -1
  364. package/dist/render/Minimap.js.map +0 -1
  365. package/dist/render/Projectile.d.ts.map +0 -1
  366. package/dist/render/Projectile.js.map +0 -1
  367. package/dist/render/SpriteSheet.d.ts.map +0 -1
  368. package/dist/render/SpriteSheet.js.map +0 -1
  369. package/dist/render/StatusVisuals.d.ts.map +0 -1
  370. package/dist/render/StatusVisuals.js.map +0 -1
  371. package/dist/render/TileMap.d.ts.map +0 -1
  372. package/dist/render/TileMap.js.map +0 -1
  373. package/dist/render/TintedSprite.d.ts.map +0 -1
  374. package/dist/render/TintedSprite.js.map +0 -1
  375. package/dist/render/Viewport.d.ts.map +0 -1
  376. package/dist/render/Viewport.js.map +0 -1
  377. package/dist/render/index.d.ts.map +0 -1
  378. package/dist/render/index.js.map +0 -1
  379. package/dist/rpg/TiledMap.d.ts.map +0 -1
  380. package/dist/rpg/TiledMap.js.map +0 -1
  381. package/dist/stage/DialogueStage.d.ts.map +0 -1
  382. package/dist/stage/DialogueStage.js.map +0 -1
  383. package/dist/stage/index.d.ts.map +0 -1
  384. package/dist/stage/index.js.map +0 -1
  385. package/dist/stage/script.d.ts.map +0 -1
  386. package/dist/stage/script.js.map +0 -1
  387. package/dist/stage/twee.d.ts.map +0 -1
  388. package/dist/stage/twee.js.map +0 -1
  389. package/dist/ui/Bar.d.ts.map +0 -1
  390. package/dist/ui/Bar.js.map +0 -1
  391. package/dist/ui/BitmapLabel.d.ts.map +0 -1
  392. package/dist/ui/BitmapLabel.js.map +0 -1
  393. package/dist/ui/Button.d.ts.map +0 -1
  394. package/dist/ui/Button.js.map +0 -1
  395. package/dist/ui/FloatingText.d.ts.map +0 -1
  396. package/dist/ui/FloatingText.js.map +0 -1
  397. package/dist/ui/HelpScreen.d.ts.map +0 -1
  398. package/dist/ui/HelpScreen.js.map +0 -1
  399. package/dist/ui/IconGrid.d.ts.map +0 -1
  400. package/dist/ui/IconGrid.js.map +0 -1
  401. package/dist/ui/Label.d.ts.map +0 -1
  402. package/dist/ui/Label.js.map +0 -1
  403. package/dist/ui/ListView.d.ts.map +0 -1
  404. package/dist/ui/ListView.js.map +0 -1
  405. package/dist/ui/LoadingScreen.d.ts.map +0 -1
  406. package/dist/ui/LoadingScreen.js.map +0 -1
  407. package/dist/ui/MessageBox.d.ts.map +0 -1
  408. package/dist/ui/MessageBox.js.map +0 -1
  409. package/dist/ui/NinePatch.d.ts.map +0 -1
  410. package/dist/ui/NinePatch.js.map +0 -1
  411. package/dist/ui/RebindScreen.d.ts.map +0 -1
  412. package/dist/ui/RebindScreen.js.map +0 -1
  413. package/dist/ui/StatsScreen.d.ts.map +0 -1
  414. package/dist/ui/StatsScreen.js.map +0 -1
  415. package/dist/ui/Toast.d.ts.map +0 -1
  416. package/dist/ui/Toast.js.map +0 -1
  417. package/dist/ui/VerticalLabel.d.ts.map +0 -1
  418. package/dist/ui/VerticalLabel.js.map +0 -1
  419. package/dist/ui/Window.d.ts.map +0 -1
  420. package/dist/ui/Window.js.map +0 -1
  421. package/dist/ui/WindowStack.d.ts.map +0 -1
  422. package/dist/ui/WindowStack.js.map +0 -1
  423. package/dist/ui/index.d.ts.map +0 -1
  424. package/dist/ui/index.js.map +0 -1
  425. package/dist/ui/theme.d.ts.map +0 -1
  426. package/dist/ui/theme.js.map +0 -1
  427. /package/dist/{render → two-d/render}/ActorAnimator.d.ts +0 -0
  428. /package/dist/{render → two-d/render}/ActorAnimator.js +0 -0
  429. /package/dist/{render → two-d/render}/AnimatedSprite.d.ts +0 -0
  430. /package/dist/{render → two-d/render}/AnimatedSprite.js +0 -0
  431. /package/dist/{render → two-d/render}/Autotile.d.ts +0 -0
  432. /package/dist/{render → two-d/render}/Autotile.js +0 -0
  433. /package/dist/{render → two-d/render}/Camera.d.ts +0 -0
  434. /package/dist/{render → two-d/render}/Capabilities.d.ts +0 -0
  435. /package/dist/{render → two-d/render}/Capabilities.js +0 -0
  436. /package/dist/{render → two-d/render}/ColorBlindness.d.ts +0 -0
  437. /package/dist/{render → two-d/render}/ColorBlindness.js +0 -0
  438. /package/dist/{render → two-d/render}/ColorTransformBatcher.d.ts +0 -0
  439. /package/dist/{render → two-d/render}/LayeredSprite.d.ts +0 -0
  440. /package/dist/{render → two-d/render}/LayeredSprite.js +0 -0
  441. /package/dist/{render → two-d/render}/Minimap.d.ts +0 -0
  442. /package/dist/{render → two-d/render}/Projectile.d.ts +0 -0
  443. /package/dist/{render → two-d/render}/Projectile.js +0 -0
  444. /package/dist/{render → two-d/render}/SpriteSheet.d.ts +0 -0
  445. /package/dist/{render → two-d/render}/StatusVisuals.d.ts +0 -0
  446. /package/dist/{render → two-d/render}/StatusVisuals.js +0 -0
  447. /package/dist/{render → two-d/render}/TileMap.d.ts +0 -0
  448. /package/dist/{render → two-d/render}/TintedSprite.d.ts +0 -0
  449. /package/dist/{render → two-d/render}/TintedSprite.js +0 -0
  450. /package/dist/{render → two-d/render}/Viewport.d.ts +0 -0
  451. /package/dist/{render → two-d/render}/Viewport.js +0 -0
  452. /package/dist/{stage → two-d/stage}/DialogueStage.d.ts +0 -0
  453. /package/dist/{stage → two-d/stage}/index.d.ts +0 -0
  454. /package/dist/{stage → two-d/stage}/index.js +0 -0
  455. /package/dist/{stage → two-d/stage}/script.d.ts +0 -0
  456. /package/dist/{stage → two-d/stage}/twee.d.ts +0 -0
  457. /package/dist/{stage → two-d/stage}/twee.js +0 -0
  458. /package/dist/{ui → two-d/ui}/Bar.d.ts +0 -0
  459. /package/dist/{ui → two-d/ui}/Bar.js +0 -0
  460. /package/dist/{ui → two-d/ui}/BitmapLabel.d.ts +0 -0
  461. /package/dist/{ui → two-d/ui}/BitmapLabel.js +0 -0
  462. /package/dist/{ui → two-d/ui}/FloatingText.d.ts +0 -0
  463. /package/dist/{ui → two-d/ui}/FloatingText.js +0 -0
  464. /package/dist/{ui → two-d/ui}/HelpScreen.js +0 -0
  465. /package/dist/{ui → two-d/ui}/IconGrid.js +0 -0
  466. /package/dist/{ui → two-d/ui}/Label.d.ts +0 -0
  467. /package/dist/{ui → two-d/ui}/Label.js +0 -0
  468. /package/dist/{ui → two-d/ui}/ListView.js +0 -0
  469. /package/dist/{ui → two-d/ui}/LoadingScreen.js +0 -0
  470. /package/dist/{ui → two-d/ui}/MessageBox.js +0 -0
  471. /package/dist/{ui → two-d/ui}/NinePatch.d.ts +0 -0
  472. /package/dist/{ui → two-d/ui}/NinePatch.js +0 -0
  473. /package/dist/{ui → two-d/ui}/StatsScreen.d.ts +0 -0
  474. /package/dist/{ui → two-d/ui}/StatsScreen.js +0 -0
  475. /package/dist/{ui → two-d/ui}/Toast.d.ts +0 -0
  476. /package/dist/{ui → two-d/ui}/VerticalLabel.d.ts +0 -0
  477. /package/dist/{ui → two-d/ui}/VerticalLabel.js +0 -0
  478. /package/dist/{ui → two-d/ui}/WindowStack.d.ts +0 -0
@@ -20,8 +20,9 @@ export class Inventory {
20
20
  weightOf(item) {
21
21
  return (item.weight ?? 0) * item.quantity + (item.contents?.totalWeight ?? 0);
22
22
  }
23
- find(id) {
24
- return this.slots.find((item) => item.id === id);
23
+ /** Finds the first item of a kind, or the matching instance when `instanceId` is supplied. */
24
+ find(id, instanceId) {
25
+ return this.slots.find((item) => item.id === id && (instanceId === undefined || item.instanceId === instanceId));
25
26
  }
26
27
  /**
27
28
  * Adds an item, merging into an existing stack when both are stackable.
@@ -29,11 +30,15 @@ export class Inventory {
29
30
  * @returns false when a capacity is set and this would exceed it - nothing is added
30
31
  */
31
32
  add(item) {
33
+ if (!Number.isFinite(item.quantity) || item.quantity <= 0)
34
+ return false;
35
+ if (item.weight !== undefined && (!Number.isFinite(item.weight) || item.weight < 0))
36
+ return false;
32
37
  if (this.capacity !== undefined && this.totalWeight + this.weightOf(item) > this.capacity) {
33
38
  return false;
34
39
  }
35
40
  if (item.stackable) {
36
- const existing = this.slots.find((s) => s.id === item.id && s.stackable);
41
+ const existing = this.slots.find((s) => s.id === item.id && s.stackable && s.instanceId === item.instanceId);
37
42
  if (existing) {
38
43
  existing.quantity += item.quantity;
39
44
  return true;
@@ -43,8 +48,10 @@ export class Inventory {
43
48
  return true;
44
49
  }
45
50
  /** removes up to `quantity` (default: the whole stack); the slot disappears once empty */
46
- remove(id, quantity) {
47
- const index = this.slots.findIndex((item) => item.id === id);
51
+ remove(id, quantity, instanceId) {
52
+ if (quantity !== undefined && (!Number.isFinite(quantity) || quantity <= 0))
53
+ return;
54
+ const index = this.slots.findIndex((item) => item.id === id && (instanceId === undefined || item.instanceId === instanceId));
48
55
  if (index === -1)
49
56
  return;
50
57
  const item = this.slots[index];
@@ -52,5 +59,90 @@ export class Inventory {
52
59
  if (item.quantity <= 0)
53
60
  this.slots.splice(index, 1);
54
61
  }
62
+ /**
63
+ * Takes up to `quantity` from one stack and returns an item snapshot suitable for adding to
64
+ * another inventory. All instance state travels with it; only the quantity is split.
65
+ */
66
+ take(id, quantity = 1, instanceId) {
67
+ if (!Number.isFinite(quantity) || quantity <= 0)
68
+ return undefined;
69
+ const index = this.slots.findIndex((item) => item.id === id && (instanceId === undefined || item.instanceId === instanceId));
70
+ if (index === -1)
71
+ return undefined;
72
+ const item = this.slots[index];
73
+ const taken = Math.min(Math.floor(quantity), item.quantity);
74
+ if (taken <= 0)
75
+ return undefined;
76
+ const snapshot = { ...item, quantity: taken };
77
+ item.quantity -= taken;
78
+ if (item.quantity <= 0)
79
+ this.slots.splice(index, 1);
80
+ return snapshot;
81
+ }
82
+ /**
83
+ * What a save has to remember about one slot: its id, how many, and every field that can
84
+ * diverge between two items sharing that id.
85
+ *
86
+ * The split is the whole design question here. `stackable` and `weight` describe the *kind*
87
+ * of item and live in a game's own item table, so they are supplied fresh on load like
88
+ * every other definition in this framework, and a game that rebalances an item's weight
89
+ * sees the new value on an old save rather than the stale one baked into it. Everything
90
+ * else - an enchantment level, wear, a rolled affix, whether it has been identified, the
91
+ * `instanceId` keeping two otherwise-identical swords apart - belongs to the individual
92
+ * item and is exactly what would be lost if a save recorded only "3 x potion".
93
+ */
94
+ toJSON() {
95
+ return {
96
+ capacity: this.capacity,
97
+ slots: this.slots.map((item) => ({
98
+ id: item.id,
99
+ quantity: item.quantity,
100
+ instanceId: item.instanceId,
101
+ identified: item.identified,
102
+ cursed: item.cursed,
103
+ blessed: item.blessed,
104
+ level: item.level,
105
+ affix: item.affix,
106
+ durability: item.durability,
107
+ maxDurability: item.maxDurability,
108
+ contents: item.contents?.toJSON(),
109
+ })),
110
+ };
111
+ }
112
+ /**
113
+ * Rebuilds an inventory, taking each item's kind-level fields from `defs`.
114
+ *
115
+ * Throws on an id `defs` does not know, rather than restoring a weightless unstackable
116
+ * ghost of it: a save naming an item the game no longer has is a real problem, and finding
117
+ * out at load is far cheaper than finding out when a carry-weight check silently disagrees.
118
+ */
119
+ static fromJSON(defs, data) {
120
+ const inventory = new Inventory({ capacity: data.capacity });
121
+ inventory.slots = data.slots.map((saved) => {
122
+ const definition = defs.get(saved.id);
123
+ if (!definition)
124
+ throw new Error(`Inventory.fromJSON: no definition for item "${saved.id}"`);
125
+ const { contents, ...instance } = saved;
126
+ //the definition first, then the saved instance state over it, with absent optional
127
+ //fields dropped rather than written as undefined - spreading those would overwrite
128
+ //the definition's own weight or stackable flag with nothing
129
+ const item = { ...definition, ...stripUndefined(instance), id: saved.id, quantity: saved.quantity };
130
+ if (contents)
131
+ item.contents = Inventory.fromJSON(defs, contents);
132
+ return item;
133
+ });
134
+ return inventory;
135
+ }
136
+ }
137
+ /**
138
+ * Drops keys whose value is `undefined`.
139
+ *
140
+ * `toJSON` writes every optional field, so a slot that never had a `level` round-trips as
141
+ * `level: undefined`. Spreading that over a definition would overwrite the definition's own
142
+ * value with `undefined` rather than leaving it alone, which is how a restored item would
143
+ * quietly lose its weight.
144
+ */
145
+ function stripUndefined(value) {
146
+ return Object.fromEntries(Object.entries(value).filter(([, v]) => v !== undefined));
55
147
  }
56
148
  //# sourceMappingURL=Inventory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Inventory.js","sourceRoot":"","sources":["../../src/actors/Inventory.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAiCH,MAAM,OAAO,SAAS;IAIrB,YAAY,OAAO,GAAqB,EAAE;QAHlC,UAAK,GAAoB,EAAE,CAAC;QAInC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,CAAC;IAED,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,IAAI,WAAW;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC;IAEO,QAAQ,CAAC,IAAmB;QACnC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,IAAI,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,IAAI,CAAC,EAAU;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAClD,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,IAAmB;QACtB,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3F,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;YACzE,IAAI,QAAQ,EAAE,CAAC;gBACd,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;gBACnC,OAAO,IAAI,CAAC;YACb,CAAC;QACF,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,0FAA0F;IAC1F,MAAM,CAAC,EAAU,EAAE,QAAiB;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,OAAO;QAEzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,IAAI,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;QAC3C,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;CACD"}
1
+ {"version":3,"file":"Inventory.js","sourceRoot":"","sources":["../../src/actors/Inventory.ts"],"names":[],"mappings":"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"}
@@ -7,8 +7,17 @@ import type { InventoryItem } from './Inventory.ts';
7
7
  */
8
8
  /** reveals an item's real nature - a potion's true effect, a ring's curse - once identified */
9
9
  export declare function identify(item: InventoryItem): void;
10
- /** raises (or, given a negative delta, lowers) an item's enchantment/upgrade level */
11
- export declare function enchant(item: InventoryItem, delta: number): number;
10
+ /** whether an upgrade leaves an item's affix as it is, or strips it */
11
+ export type AffixUpgradePolicy = 'keep' | 'remove';
12
+ /**
13
+ * Raises (or, given a negative delta, lowers) an item's enchantment/upgrade level.
14
+ *
15
+ * @param affixPolicy `'keep'` (the default, and the only behaviour before this option
16
+ * existed) leaves whatever affix the item carries untouched; `'remove'` strips it - some
17
+ * upgrade paths only preserve an enchantment past a certain rarity tier, a game's own rule
18
+ * this only ever applies when asked to
19
+ */
20
+ export declare function enchant(item: InventoryItem, delta: number, affixPolicy?: AffixUpgradePolicy): number;
12
21
  /**
13
22
  * Wears an item down by `amount`. An item with no `maxDurability` set cannot wear out at all
14
23
  * and this is a no-op - durability is opt-in per item, not a hidden default every item pays for.
@@ -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;AAEpD;;;;;GAKG;AAEH,+FAA+F;AAC/F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAElD;AAED,sFAAsF;AACtF,wBAAgB,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGlE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAKvE;AAED,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAGpE"}
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,3 +1,4 @@
1
+ import { removeAffix } from './Affix.js';
1
2
  /**
2
3
  * The three item-shaped states `Inventory` only had fields for, not behaviour: identification,
3
4
  * an enchantment/upgrade level, and durability that wears down with use. Small, focused
@@ -8,9 +9,20 @@
8
9
  export function identify(item) {
9
10
  item.identified = true;
10
11
  }
11
- /** raises (or, given a negative delta, lowers) an item's enchantment/upgrade level */
12
- export function enchant(item, delta) {
12
+ /**
13
+ * Raises (or, given a negative delta, lowers) an item's enchantment/upgrade level.
14
+ *
15
+ * @param affixPolicy `'keep'` (the default, and the only behaviour before this option
16
+ * existed) leaves whatever affix the item carries untouched; `'remove'` strips it - some
17
+ * upgrade paths only preserve an enchantment past a certain rarity tier, a game's own rule
18
+ * this only ever applies when asked to
19
+ */
20
+ export function enchant(item, delta, affixPolicy = 'keep') {
21
+ if (!Number.isFinite(delta))
22
+ return item.level ?? 0;
13
23
  item.level = (item.level ?? 0) + delta;
24
+ if (affixPolicy === 'remove')
25
+ removeAffix(item);
14
26
  return item.level;
15
27
  }
16
28
  /**
@@ -22,6 +34,8 @@ export function enchant(item, delta) {
22
34
  export function damageItem(item, amount) {
23
35
  if (item.maxDurability === undefined)
24
36
  return false;
37
+ if (!Number.isFinite(amount) || amount <= 0)
38
+ return (item.durability ?? item.maxDurability) <= 0;
25
39
  item.durability = Math.max(0, (item.durability ?? item.maxDurability) - amount);
26
40
  return item.durability <= 0;
27
41
  }
@@ -29,6 +43,8 @@ export function damageItem(item, amount) {
29
43
  export function repairItem(item, amount) {
30
44
  if (item.maxDurability === undefined)
31
45
  return;
46
+ if (!Number.isFinite(amount) || amount <= 0)
47
+ return;
32
48
  item.durability = Math.min(item.maxDurability, (item.durability ?? item.maxDurability) + amount);
33
49
  }
34
50
  //# sourceMappingURL=ItemState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ItemState.js","sourceRoot":"","sources":["../../src/actors/ItemState.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,+FAA+F;AAC/F,MAAM,UAAU,QAAQ,CAAC,IAAmB;IAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACxB,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,OAAO,CAAC,IAAmB,EAAE,KAAa;IACzD,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;IACvC,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;IAEnD,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,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;;;;;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"}
@@ -6,7 +6,7 @@ export function rollLoot(table) {
6
6
  if (!Random.chance(table.chance ?? 1))
7
7
  return null;
8
8
  const index = Random.weighted(table.entries.map((entry) => entry.weight));
9
- if (index === -1)
9
+ if (index === null)
10
10
  return null;
11
11
  const entry = table.entries[index];
12
12
  return { id: entry.id, quantity: entry.quantity ?? 1 };
@@ -1 +1 @@
1
- {"version":3,"file":"Loot.js","sourceRoot":"","sources":["../../src/actors/Loot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAuB5C,gFAAgF;AAChF,MAAM,UAAU,QAAQ,CAAC,KAAgB;IACxC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAEnD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1E,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAE9B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"Loot.js","sourceRoot":"","sources":["../../src/actors/Loot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAuB5C,gFAAgF;AAChF,MAAM,UAAU,QAAQ,CAAC,KAAgB;IACxC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAEnD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1E,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAEhC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC;AACxD,CAAC"}
@@ -26,5 +26,14 @@ export declare class Progression {
26
26
  get experienceToNext(): number | null;
27
27
  /** @returns how many levels were gained, 0 if none - a single large gain may span several */
28
28
  addExperience(amount: number): number;
29
+ /** level and experience; the curve itself is a definition, supplied fresh on load */
30
+ toJSON(): {
31
+ level: number;
32
+ experience: number;
33
+ };
34
+ static fromJSON(curve: GrowthCurve, data: {
35
+ level: number;
36
+ experience: number;
37
+ }): Progression;
29
38
  }
30
39
  //# sourceMappingURL=Progression.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Progression.d.ts","sourceRoot":"","sources":["../../src/actors/Progression.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,WAAW;IAC3B,yEAAyE;IACzE,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAErC,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,2FAA2F;AAC3F,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,CAKrF;AAED,qBAAa,WAAW;IACvB,OAAO,CAAC,KAAK,CAAc;IAE3B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IAEnB,YAAY,KAAK,EAAE,WAAW,EAAE,KAAK,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAO,EAIlF;IAED,uFAAuF;IACvF,IAAI,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAGpC;IAED,6FAA6F;IAC7F,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CASpC;CACD"}
1
+ {"version":3,"file":"Progression.d.ts","sourceRoot":"","sources":["../../src/actors/Progression.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,WAAW;IAC3B,yEAAyE;IACzE,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAErC,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,2FAA2F;AAC3F,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,CAKrF;AAED,qBAAa,WAAW;IACvB,OAAO,CAAC,KAAK,CAAc;IAE3B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IAEnB,YAAY,KAAK,EAAE,WAAW,EAAE,KAAK,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAO,EAIlF;IAED,uFAAuF;IACvF,IAAI,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAGpC;IAED,6FAA6F;IAC7F,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CASpC;IAED,qFAAqF;IACrF,MAAM,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAE9C;IAED,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,WAAW,CAE5F;CACD"}
@@ -35,5 +35,12 @@ export class Progression {
35
35
  }
36
36
  return gained;
37
37
  }
38
+ /** level and experience; the curve itself is a definition, supplied fresh on load */
39
+ toJSON() {
40
+ return { level: this.level, experience: this.experience };
41
+ }
42
+ static fromJSON(curve, data) {
43
+ return new Progression(curve, data);
44
+ }
38
45
  }
39
46
  //# sourceMappingURL=Progression.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Progression.js","sourceRoot":"","sources":["../../src/actors/Progression.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH,2FAA2F;AAC3F,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,KAAa,EAAE,QAAgB;IACvE,OAAO;QACN,QAAQ;QACR,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;KAC1F,CAAC;AACH,CAAC;AAED,MAAM,OAAO,WAAW;IAMvB,YAAY,KAAkB,EAAE,KAAK,GAA4C,EAAE;QAClF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,CAAC;IAED,uFAAuF;IACvF,IAAI,gBAAgB;QACnB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QACnD,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;IACnE,CAAC;IAED,6FAA6F;IAC7F,aAAa,CAAC,MAAc;QAC3B,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC;QAE1B,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YACxG,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,MAAM,EAAE,CAAC;QACV,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;CACD"}
1
+ {"version":3,"file":"Progression.js","sourceRoot":"","sources":["../../src/actors/Progression.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH,2FAA2F;AAC3F,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,KAAa,EAAE,QAAgB;IACvE,OAAO;QACN,QAAQ;QACR,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;KAC1F,CAAC;AACH,CAAC;AAED,MAAM,OAAO,WAAW;IAMvB,YAAY,KAAkB,EAAE,KAAK,GAA4C,EAAE;QAClF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,CAAC;IAED,uFAAuF;IACvF,IAAI,gBAAgB;QACnB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QACnD,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;IACnE,CAAC;IAED,6FAA6F;IAC7F,aAAa,CAAC,MAAc;QAC3B,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC;QAE1B,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YACxG,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,MAAM,EAAE,CAAC;QACV,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,qFAAqF;IACrF,MAAM;QACL,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,KAAkB,EAAE,IAA2C;QAC9E,OAAO,IAAI,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;CACD"}
@@ -1,4 +1,5 @@
1
1
  import type { StatBlock } from './StatBlock.ts';
2
+ import type { Charges } from './Charges.ts';
2
3
  /**
3
4
  * One spendable cost: `amount` of the `stat` pool, the way a spell costs mana.
4
5
  *
@@ -20,4 +21,19 @@ export declare function canAfford(stats: StatBlock, cost: ResourceCost | readonl
20
21
  * this returns false. A zero cost is always affordable and deducts nothing.
21
22
  */
22
23
  export declare function spend(stats: StatBlock, cost: ResourceCost | readonly ResourceCost[]): boolean;
24
+ /**
25
+ * Refunds a previously spent cost - a missed cast, an ability that returns part of its own
26
+ * cost on a kill - the mirror of `spend`, without `spend`'s all-or-nothing check since there
27
+ * is nothing to check on the way back in. `fraction` scales every cost in `cost` at once
28
+ * (`0.5` for "half back").
29
+ */
30
+ export declare function refund(stats: StatBlock, cost: ResourceCost | readonly ResourceCost[], fraction?: number): void;
31
+ /**
32
+ * Spends `cost` from a `StatBlock` pool and converts it into charges of a different resource
33
+ * at `rate` per charge - "channel mana into a battery" - all-or-nothing the same way `spend`
34
+ * itself is: nothing is spent, and no charge is gained, unless the full cost is affordable.
35
+ *
36
+ * @returns the charges actually gained, capped by `charges`' own `max` (0 when the spend failed)
37
+ */
38
+ export declare function convertToCharges(stats: StatBlock, cost: ResourceCost, charges: Charges, rate: number): number;
23
39
  //# sourceMappingURL=Resource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Resource.d.ts","sourceRoot":"","sources":["../../src/actors/Resource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CACf;AAoBD,yFAAyF;AACzF,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,GAAG,SAAS,YAAY,EAAE,GAAG,OAAO,CAEjG;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,GAAG,SAAS,YAAY,EAAE,GAAG,OAAO,CAK7F"}
1
+ {"version":3,"file":"Resource.d.ts","sourceRoot":"","sources":["../../src/actors/Resource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CACf;AAoBD,yFAAyF;AACzF,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,GAAG,SAAS,YAAY,EAAE,GAAG,OAAO,CAEjG;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,GAAG,SAAS,YAAY,EAAE,GAAG,OAAO,CAK7F;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,GAAG,SAAS,YAAY,EAAE,EAAE,QAAQ,SAAI,GAAG,IAAI,CAEzG;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAG7G"}
@@ -33,4 +33,26 @@ export function spend(stats, cost) {
33
33
  stats.setBase(stat, stats.base(stat) - amount);
34
34
  return true;
35
35
  }
36
+ /**
37
+ * Refunds a previously spent cost - a missed cast, an ability that returns part of its own
38
+ * cost on a kill - the mirror of `spend`, without `spend`'s all-or-nothing check since there
39
+ * is nothing to check on the way back in. `fraction` scales every cost in `cost` at once
40
+ * (`0.5` for "half back").
41
+ */
42
+ export function refund(stats, cost, fraction = 1) {
43
+ for (const [stat, amount] of totals(all(cost)))
44
+ stats.setBase(stat, stats.base(stat) + amount * fraction);
45
+ }
46
+ /**
47
+ * Spends `cost` from a `StatBlock` pool and converts it into charges of a different resource
48
+ * at `rate` per charge - "channel mana into a battery" - all-or-nothing the same way `spend`
49
+ * itself is: nothing is spent, and no charge is gained, unless the full cost is affordable.
50
+ *
51
+ * @returns the charges actually gained, capped by `charges`' own `max` (0 when the spend failed)
52
+ */
53
+ export function convertToCharges(stats, cost, charges, rate) {
54
+ if (!spend(stats, cost))
55
+ return 0;
56
+ return charges.refund(Math.floor(cost.amount / rate));
57
+ }
36
58
  //# sourceMappingURL=Resource.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Resource.js","sourceRoot":"","sources":["../../src/actors/Resource.ts"],"names":[],"mappings":"AAeA,SAAS,GAAG,CAAC,IAA4C;IACxD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACjD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACjG,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,qFAAqF;AACrF,qFAAqF;AACrF,SAAS,MAAM,CAAC,IAA6B;IAC5C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,IAAI;QAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IACzE,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,SAAS,CAAC,KAAgB,EAAE,IAA4C;IACvF,OAAO,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC;AACrF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAC,KAAgB,EAAE,IAA4C;IACnF,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACvF,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,QAAQ;QAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;IACtF,OAAO,IAAI,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"Resource.js","sourceRoot":"","sources":["../../src/actors/Resource.ts"],"names":[],"mappings":"AAgBA,SAAS,GAAG,CAAC,IAA4C;IACxD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACjD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACjG,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,qFAAqF;AACrF,qFAAqF;AACrF,SAAS,MAAM,CAAC,IAA6B;IAC5C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,IAAI;QAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IACzE,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,SAAS,CAAC,KAAgB,EAAE,IAA4C;IACvF,OAAO,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC;AACrF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAC,KAAgB,EAAE,IAA4C;IACnF,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACvF,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,QAAQ;QAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;IACtF,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,KAAgB,EAAE,IAA4C,EAAE,QAAQ,GAAG,CAAC;IAClG,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC;AAC3G,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAgB,EAAE,IAAkB,EAAE,OAAgB,EAAE,IAAY;IACpG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAClC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;AACvD,CAAC"}
@@ -41,5 +41,19 @@ export declare class SkillPoints {
41
41
  * the cost callback exactly once, so `canSpend` and `spend` never call it twice between
42
42
  * them for the same decision */
43
43
  private nextRankCost;
44
+ /**
45
+ * The unspent ledger, and only that.
46
+ *
47
+ * Spent points are already saved: `spend` raises a stat's *base* value on the `StatBlock`,
48
+ * so restoring that block restores every rank ever bought. Recording them a second time
49
+ * here would be state kept in two places, which is exactly the kind of pair that drifts
50
+ * the first time one path forgets to update the other.
51
+ */
52
+ toJSON(): {
53
+ points: number;
54
+ };
55
+ static fromJSON(stats: StatBlock, options: SkillPointsOptions, data: {
56
+ points: number;
57
+ }): SkillPoints;
44
58
  }
45
59
  //# sourceMappingURL=SkillPoints.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SkillPoints.d.ts","sourceRoot":"","sources":["../../src/actors/SkillPoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,WAAW,kBAAkB;IAClC,gFAAgF;IAChF,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAE/B;yFACqF;IACrF,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAC9C;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAW;IACvB,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,OAAO,CAAyC;IAExD,OAAO,CAAC,SAAS,CAAK;IAEtB,YAAY,KAAK,EAAE,SAAS,EAAE,OAAO,GAAE,kBAAuB,EAI7D;IAED,2BAA2B;IAC3B,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,4FAA4F;IAC5F,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE1B;IAED,6FAA6F;IAC7F,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9B;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ3B;IAED;;oCAEgC;IAChC,OAAO,CAAC,YAAY;CAOpB"}
1
+ {"version":3,"file":"SkillPoints.d.ts","sourceRoot":"","sources":["../../src/actors/SkillPoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,WAAW,kBAAkB;IAClC,gFAAgF;IAChF,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAE/B;yFACqF;IACrF,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAC9C;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAW;IACvB,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,OAAO,CAAyC;IAExD,OAAO,CAAC,SAAS,CAAK;IAEtB,YAAY,KAAK,EAAE,SAAS,EAAE,OAAO,GAAE,kBAAuB,EAI7D;IAED,2BAA2B;IAC3B,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,4FAA4F;IAC5F,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE1B;IAED,6FAA6F;IAC7F,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9B;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ3B;IAED;;oCAEgC;IAChC,OAAO,CAAC,YAAY;IAQpB;;;;;;;OAOG;IACH,MAAM,IAAI;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAE3B;IAED,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,WAAW,CAIpG;CACD"}
@@ -54,5 +54,21 @@ export class SkillPoints {
54
54
  const cost = this.costFor(stat, rank + 1);
55
55
  return this.available >= cost ? cost : null;
56
56
  }
57
+ /**
58
+ * The unspent ledger, and only that.
59
+ *
60
+ * Spent points are already saved: `spend` raises a stat's *base* value on the `StatBlock`,
61
+ * so restoring that block restores every rank ever bought. Recording them a second time
62
+ * here would be state kept in two places, which is exactly the kind of pair that drifts
63
+ * the first time one path forgets to update the other.
64
+ */
65
+ toJSON() {
66
+ return { points: this.available };
67
+ }
68
+ static fromJSON(stats, options, data) {
69
+ const ledger = new SkillPoints(stats, options);
70
+ ledger.available = data.points;
71
+ return ledger;
72
+ }
57
73
  }
58
74
  //# sourceMappingURL=SkillPoints.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SkillPoints.js","sourceRoot":"","sources":["../../src/actors/SkillPoints.ts"],"names":[],"mappings":"AAWA;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,WAAW;IAOvB,YAAY,KAAgB,EAAE,OAAO,GAAuB,EAAE;QAFtD,cAAS,GAAG,CAAC,CAAC;QAGrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,2BAA2B;IAC3B,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAED,4FAA4F;IAC5F,KAAK,CAAC,MAAc;QACnB,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;IAC1B,CAAC;IAED,6FAA6F;IAC7F,QAAQ,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAY;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAEhC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;oCAEgC;IACxB,YAAY,CAAC,IAAY;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAE3C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7C,CAAC;CACD"}
1
+ {"version":3,"file":"SkillPoints.js","sourceRoot":"","sources":["../../src/actors/SkillPoints.ts"],"names":[],"mappings":"AAWA;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,WAAW;IAOvB,YAAY,KAAgB,EAAE,OAAO,GAAuB,EAAE;QAFtD,cAAS,GAAG,CAAC,CAAC;QAGrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,2BAA2B;IAC3B,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAED,4FAA4F;IAC5F,KAAK,CAAC,MAAc;QACnB,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;IAC1B,CAAC;IAED,6FAA6F;IAC7F,QAAQ,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAY;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAEhC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;oCAEgC;IACxB,YAAY,CAAC,IAAY;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAE3C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7C,CAAC;IAED;;;;;;;OAOG;IACH,MAAM;QACL,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,KAAgB,EAAE,OAA2B,EAAE,IAAwB;QACtF,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;QAC/B,OAAO,MAAM,CAAC;IACf,CAAC;CACD"}
@@ -48,5 +48,21 @@ export declare class StatBlock {
48
48
  get(name: string): number;
49
49
  private resolveAll;
50
50
  private modifiersFor;
51
+ /**
52
+ * Base attribute values, and deliberately nothing else.
53
+ *
54
+ * Modifiers are not saved, because every one of them is owned by whatever applied it: a
55
+ * worn item through `EquipmentSlots`, a timed effect through `applyStatusEffect`, an
56
+ * adjacency bonus through `AuraField`. Each of those reapplies its own on load, tagged
57
+ * with its own `source`, so saving them here as well would double every bonus the instant
58
+ * a restored character re-equipped what it was already wearing. Derived stats are
59
+ * definitions, supplied fresh on load like every other definition in this framework.
60
+ */
61
+ toJSON(): {
62
+ base: Stats;
63
+ };
64
+ static fromJSON(options: StatBlockOptions, data: {
65
+ base: Stats;
66
+ }): StatBlock;
51
67
  }
52
68
  //# sourceMappingURL=StatBlock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StatBlock.d.ts","sourceRoot":"","sources":["../../src/actors/StatBlock.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE3C,0DAA0D;AAC1D,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK,CAAC;AAEpD,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,UAAU,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,2FAA2F;IAC3F,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,2FAA2F;IAC3F,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC;CACzC;AAED,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;CACxB;AAqBD,qBAAa,SAAS;IACrB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,KAAK,CAAsB;IAEnC,YAAY,OAAO,EAAE,gBAAgB,EAGpC;IAED,uEAAuE;IACvE,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzB;IAED,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAGzC;IAED,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAGpC;IAED,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAIvC;IAED,qFAAqF;IACrF,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAGzC;IAED,wFAAwF;IACxF,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExB;IAED,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,YAAY;CAGpB"}
1
+ {"version":3,"file":"StatBlock.d.ts","sourceRoot":"","sources":["../../src/actors/StatBlock.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE3C,0DAA0D;AAC1D,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK,CAAC;AAEpD,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,UAAU,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,2FAA2F;IAC3F,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,2FAA2F;IAC3F,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC;CACzC;AAED,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;CACxB;AAqBD,qBAAa,SAAS;IACrB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,KAAK,CAAsB;IAEnC,YAAY,OAAO,EAAE,gBAAgB,EAGpC;IAED,uEAAuE;IACvE,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzB;IAED,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAGzC;IAED,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAGpC;IAED,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAIvC;IAED,qFAAqF;IACrF,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAGzC;IAED,wFAAwF;IACxF,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExB;IAED,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,YAAY;IAIpB;;;;;;;;;OASG;IACH,MAAM,IAAI;QAAE,IAAI,EAAE,KAAK,CAAA;KAAE,CAExB;IAED,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE;QAAE,IAAI,EAAE,KAAK,CAAA;KAAE,GAAG,SAAS,CAO3E;CACD"}
@@ -76,5 +76,26 @@ export class StatBlock {
76
76
  modifiersFor(stat) {
77
77
  return this.modifiers.filter((m) => m.stat === stat);
78
78
  }
79
+ /**
80
+ * Base attribute values, and deliberately nothing else.
81
+ *
82
+ * Modifiers are not saved, because every one of them is owned by whatever applied it: a
83
+ * worn item through `EquipmentSlots`, a timed effect through `applyStatusEffect`, an
84
+ * adjacency bonus through `AuraField`. Each of those reapplies its own on load, tagged
85
+ * with its own `source`, so saving them here as well would double every bonus the instant
86
+ * a restored character re-equipped what it was already wearing. Derived stats are
87
+ * definitions, supplied fresh on load like every other definition in this framework.
88
+ */
89
+ toJSON() {
90
+ return { base: { ...this.baseValues } };
91
+ }
92
+ static fromJSON(options, data) {
93
+ const stats = new StatBlock(options);
94
+ //the saved values win, but a stat added to the game since the save was written keeps
95
+ //the definition's starting value rather than vanishing
96
+ stats.baseValues = { ...options.base, ...data.base };
97
+ stats.cache = null;
98
+ return stats;
99
+ }
79
100
  }
80
101
  //# sourceMappingURL=StatBlock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StatBlock.js","sourceRoot":"","sources":["../../src/actors/StatBlock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StatBlock.js","sourceRoot":"","sources":["../../src/actors/StatBlock.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiCH;;;;;;;GAOG;AACH,SAAS,OAAO,CAAC,IAAY,EAAE,SAA8B;IAC5D,MAAM,IAAI,GAAG,CAAC,EAAc,EAAE,EAAE,CAC/B,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;IAEtF,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC;QAAE,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC;QAAE,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC;IACnD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC;QAAE,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;IAC7C,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,OAAO,SAAS;IAMrB,YAAY,OAAyB;QAH7B,cAAS,GAAe,EAAE,CAAC;QAC3B,UAAK,GAAiB,IAAI,CAAC;QAGlC,IAAI,CAAC,UAAU,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IACtC,CAAC;IAED,uEAAuE;IACvE,IAAI,CAAC,IAAY;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,CAAC,IAAY,EAAE,KAAa;QAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,WAAW,CAAC,QAAkB;QAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,cAAc,CAAC,QAAkB;QAChC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,CAAC;YAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,qFAAqF;IACrF,mBAAmB,CAAC,MAAe;QAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QACnE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,wFAAwF;IACxF,GAAG,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAEO,UAAU;QACjB,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC;QAElC,MAAM,MAAM,GAAU,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACpB,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,YAAY,CAAC,IAAY;QAChC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM;QACL,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,OAAyB,EAAE,IAAqB;QAC/D,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;QACrC,qFAAqF;QACrF,uDAAuD;QACvD,KAAK,CAAC,UAAU,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACrD,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;QACnB,OAAO,KAAK,CAAC;IACd,CAAC;CACD"}
@@ -26,7 +26,7 @@ export declare class SupportLedger {
26
26
  get(a: string, b: string): number;
27
27
  level(a: string, b: string): SupportLevel | null;
28
28
  add(a: string, b: string, amount: number): SupportChange;
29
- save(): SupportSave;
30
- static restore(levels: readonly SupportLevel[], data: SupportSave): SupportLedger;
29
+ toJSON(): SupportSave;
30
+ static fromJSON(levels: readonly SupportLevel[], data: SupportSave): SupportLedger;
31
31
  }
32
32
  //# sourceMappingURL=Support.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Support.d.ts","sourceRoot":"","sources":["../../src/actors/Support.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC7B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC3B,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACvC;AAED;;;GAGG;AACH,qBAAa,aAAa;IACzB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAA6B;IAE3C,YAAY,MAAM,EAAE,SAAS,YAAY,EAAE,EAK1C;IAED,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhC;IAED,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAQ/C;IAED,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CAQvD;IAED,IAAI,IAAI,WAAW,CAMlB;IAED,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,EAAE,IAAI,EAAE,WAAW,GAAG,aAAa,CAShF;CACD"}
1
+ {"version":3,"file":"Support.d.ts","sourceRoot":"","sources":["../../src/actors/Support.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC7B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC3B,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACvC;AAED;;;GAGG;AACH,qBAAa,aAAa;IACzB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAA6B;IAE3C,YAAY,MAAM,EAAE,SAAS,YAAY,EAAE,EAK1C;IAED,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhC;IAED,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAQ/C;IAED,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CAQvD;IAED,MAAM,IAAI,WAAW,CAMpB;IAED,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,EAAE,IAAI,EAAE,WAAW,GAAG,aAAa,CASjF;CACD"}
@@ -34,14 +34,14 @@ export class SupportLedger {
34
34
  this.points.set(key, points);
35
35
  return { a, b, points, previousLevel, level: this.level(a, b) };
36
36
  }
37
- save() {
37
+ toJSON() {
38
38
  const pairs = [...this.points].map(([key, points]) => {
39
39
  const [a, b] = key.split('\u0000');
40
40
  return [a, b, points];
41
41
  });
42
42
  return { pairs };
43
43
  }
44
- static restore(levels, data) {
44
+ static fromJSON(levels, data) {
45
45
  const ledger = new SupportLedger(levels);
46
46
  for (const [a, b, points] of data.pairs) {
47
47
  if (!a || !b || a === b || !Number.isFinite(points) || points < 0)
@@ -1 +1 @@
1
- {"version":3,"file":"Support.js","sourceRoot":"","sources":["../../src/actors/Support.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Support.js","sourceRoot":"","sources":["../../src/actors/Support.ts"],"names":[],"mappings":"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"}
@@ -6,14 +6,15 @@ export { skillCheck } from './skillCheck.ts';
6
6
  export { SkillPoints } from './SkillPoints.ts';
7
7
  export type { SkillPointsOptions } from './SkillPoints.ts';
8
8
  export { EquipmentSlots } from './Equipment.ts';
9
- export type { EquippableItem, EquipmentOptions } from './Equipment.ts';
9
+ export type { EquippableItem, EquipmentOptions, SavedEquipment } from './Equipment.ts';
10
10
  export { Inventory } from './Inventory.ts';
11
- export type { InventoryItem, InventoryOptions } from './Inventory.ts';
11
+ export type { InventoryItem, InventoryOptions, ItemDefinition, SavedInventory, SavedInventoryItem } from './Inventory.ts';
12
12
  export { craft } from './craft.ts';
13
13
  export type { Recipe } from './craft.ts';
14
14
  export { applyStatusEffect } from './StatusEffect.ts';
15
15
  export type { EffectClock, StatusEffectOptions, StatusEffectHandle } from './StatusEffect.ts';
16
16
  export { identify, enchant, damageItem, repairItem } from './ItemState.ts';
17
+ export type { AffixUpgradePolicy } from './ItemState.ts';
17
18
  export { applyItemStatusEffect } from './ItemStatusEffect.ts';
18
19
  export type { ItemStatusEffectOptions, ItemStatusEffectHandle } from './ItemStatusEffect.ts';
19
20
  export { Charges } from './Charges.ts';
@@ -22,16 +23,18 @@ export { rollLoot } from './Loot.ts';
22
23
  export type { LootEntry, LootTable } from './Loot.ts';
23
24
  export { Advancement } from './Advancement.ts';
24
25
  export type { AdvancementOption, AdvancementTier, AdvancementTierKind, AdvancementTrack } from './Advancement.ts';
25
- export { rollAffix, affixOf, applyAffix, removeAffix } from './Affix.ts';
26
- export type { AffixDef, AffixTable, AffixTrigger } from './Affix.ts';
26
+ export { rollAffix, affixOf, applyAffix, removeAffix, copyAffix, matchesContext } from './Affix.ts';
27
+ export type { AffixDef, AffixTable, AffixTrigger, AttackKind, AffixContext } from './Affix.ts';
27
28
  export { scaledModifiers } from './Scaling.ts';
28
29
  export type { LevelScale } from './Scaling.ts';
29
30
  export { assignAppearances, Appearances } from './Appearances.ts';
30
31
  export type { AppearanceTable } from './Appearances.ts';
31
32
  export { buy, sell } from './Shop.ts';
32
33
  export type { Price, ShopOptions } from './Shop.ts';
33
- export { canAfford, spend } from './Resource.ts';
34
+ export { canAfford, spend, refund, convertToCharges } from './Resource.ts';
34
35
  export type { ResourceCost } from './Resource.ts';
36
+ export { Barrier } from './Barrier.ts';
37
+ export type { BarrierLayer } from './Barrier.ts';
35
38
  export { assignTraits } from './Traits.ts';
36
39
  export type { TraitDef, AssignedTrait } from './Traits.ts';
37
40
  export { AuraField } from './Aura.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/actors/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/actors/index.ts"],"names":[],"mappings":"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"}