@datamoc/mw_games 0.2.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.
- package/README.md +73 -24
- package/dist/actors/Affix.d.ts +26 -0
- package/dist/actors/Affix.d.ts.map +1 -1
- package/dist/actors/Affix.js +32 -1
- package/dist/actors/Affix.js.map +1 -1
- package/dist/actors/Barrier.d.ts +47 -0
- package/dist/actors/Barrier.d.ts.map +1 -0
- package/dist/actors/Barrier.js +70 -0
- package/dist/actors/Barrier.js.map +1 -0
- package/dist/actors/Charges.d.ts +22 -0
- package/dist/actors/Charges.d.ts.map +1 -1
- package/dist/actors/Charges.js +26 -0
- package/dist/actors/Charges.js.map +1 -1
- package/dist/actors/Equipment.d.ts +30 -0
- package/dist/actors/Equipment.d.ts.map +1 -1
- package/dist/actors/Equipment.js +33 -1
- package/dist/actors/Equipment.js.map +1 -1
- package/dist/actors/Inventory.d.ts +58 -3
- package/dist/actors/Inventory.d.ts.map +1 -1
- package/dist/actors/Inventory.js +97 -5
- package/dist/actors/Inventory.js.map +1 -1
- package/dist/actors/ItemState.d.ts +11 -2
- package/dist/actors/ItemState.d.ts.map +1 -1
- package/dist/actors/ItemState.js +18 -2
- package/dist/actors/ItemState.js.map +1 -1
- package/dist/actors/Loot.js +1 -1
- package/dist/actors/Loot.js.map +1 -1
- package/dist/actors/Progression.d.ts +9 -0
- package/dist/actors/Progression.d.ts.map +1 -1
- package/dist/actors/Progression.js +7 -0
- package/dist/actors/Progression.js.map +1 -1
- package/dist/actors/Resource.d.ts +16 -0
- package/dist/actors/Resource.d.ts.map +1 -1
- package/dist/actors/Resource.js +22 -0
- package/dist/actors/Resource.js.map +1 -1
- package/dist/actors/SkillPoints.d.ts +14 -0
- package/dist/actors/SkillPoints.d.ts.map +1 -1
- package/dist/actors/SkillPoints.js +16 -0
- package/dist/actors/SkillPoints.js.map +1 -1
- package/dist/actors/StatBlock.d.ts +16 -0
- package/dist/actors/StatBlock.d.ts.map +1 -1
- package/dist/actors/StatBlock.js +21 -0
- package/dist/actors/StatBlock.js.map +1 -1
- package/dist/actors/Support.d.ts +2 -2
- package/dist/actors/Support.d.ts.map +1 -1
- package/dist/actors/Support.js +2 -2
- package/dist/actors/Support.js.map +1 -1
- package/dist/actors/index.d.ts +8 -5
- package/dist/actors/index.d.ts.map +1 -1
- package/dist/actors/index.js +3 -2
- package/dist/actors/index.js.map +1 -1
- package/dist/assets/ByteProgress.d.ts +27 -0
- package/dist/assets/ByteProgress.d.ts.map +1 -0
- package/dist/assets/ByteProgress.js +44 -0
- package/dist/assets/ByteProgress.js.map +1 -0
- package/dist/assets/Streaming.d.ts +10 -4
- package/dist/assets/Streaming.d.ts.map +1 -1
- package/dist/assets/Streaming.js +18 -7
- package/dist/assets/Streaming.js.map +1 -1
- package/dist/assets/index.d.ts +11 -44
- package/dist/assets/index.d.ts.map +1 -1
- package/dist/assets/index.js +9 -76
- package/dist/assets/index.js.map +1 -1
- package/dist/assets/loader.d.ts +34 -0
- package/dist/assets/loader.d.ts.map +1 -0
- package/dist/assets/loader.js +61 -0
- package/dist/assets/loader.js.map +1 -0
- package/dist/assets/paths.d.ts +40 -0
- package/dist/assets/paths.d.ts.map +1 -0
- package/dist/assets/paths.js +49 -0
- package/dist/assets/paths.js.map +1 -0
- package/dist/audio/Music.d.ts +10 -0
- package/dist/audio/Music.d.ts.map +1 -1
- package/dist/audio/Music.js +36 -1
- package/dist/audio/Music.js.map +1 -1
- package/dist/audio/Playable.d.ts +3 -0
- package/dist/audio/Playable.d.ts.map +1 -1
- package/dist/audio/Playable.js +1 -1
- package/dist/audio/Playable.js.map +1 -1
- package/dist/battle/Field.d.ts +2 -2
- package/dist/battle/Field.d.ts.map +1 -1
- package/dist/battle/Field.js +3 -3
- package/dist/battle/Field.js.map +1 -1
- package/dist/battle/Hooks.d.ts +7 -13
- package/dist/battle/Hooks.d.ts.map +1 -1
- package/dist/battle/Hooks.js +20 -18
- package/dist/battle/Hooks.js.map +1 -1
- package/dist/core/Feedback.d.ts +3 -9
- package/dist/core/Feedback.d.ts.map +1 -1
- package/dist/core/Feedback.js +6 -18
- package/dist/core/Feedback.js.map +1 -1
- package/dist/core/Hooks.d.ts +34 -0
- package/dist/core/Hooks.d.ts.map +1 -0
- package/dist/core/Hooks.js +33 -0
- package/dist/core/Hooks.js.map +1 -0
- package/dist/core/HttpTransport.d.ts +22 -0
- package/dist/core/HttpTransport.d.ts.map +1 -0
- package/dist/core/HttpTransport.js +33 -0
- package/dist/core/HttpTransport.js.map +1 -0
- package/dist/core/Input.d.ts +41 -0
- package/dist/core/Input.d.ts.map +1 -1
- package/dist/core/Input.js +126 -21
- package/dist/core/Input.js.map +1 -1
- package/dist/core/Multiplayer.d.ts +63 -0
- package/dist/core/Multiplayer.d.ts.map +1 -0
- package/dist/core/Multiplayer.js +73 -0
- package/dist/core/Multiplayer.js.map +1 -0
- package/dist/core/PlayerInput.d.ts +5 -0
- package/dist/core/PlayerInput.d.ts.map +1 -1
- package/dist/core/PlayerInput.js +11 -0
- package/dist/core/PlayerInput.js.map +1 -1
- package/dist/core/Random.d.ts +14 -5
- package/dist/core/Random.d.ts.map +1 -1
- package/dist/core/Random.js +14 -5
- package/dist/core/Random.js.map +1 -1
- package/dist/core/SaveSync.d.ts +17 -14
- package/dist/core/SaveSync.d.ts.map +1 -1
- package/dist/core/SaveSync.js +35 -31
- package/dist/core/SaveSync.js.map +1 -1
- package/dist/core/Scene.d.ts +16 -6
- package/dist/core/Scene.d.ts.map +1 -1
- package/dist/core/Scene.js +18 -6
- package/dist/core/Scene.js.map +1 -1
- package/dist/core/SceneStack.d.ts +8 -4
- package/dist/core/SceneStack.d.ts.map +1 -1
- package/dist/core/SceneStack.js +4 -0
- package/dist/core/SceneStack.js.map +1 -1
- package/dist/core/Stats.d.ts +33 -0
- package/dist/core/Stats.d.ts.map +1 -0
- package/dist/core/Stats.js +34 -0
- package/dist/core/Stats.js.map +1 -0
- package/dist/core/Telemetry.d.ts +34 -0
- package/dist/core/Telemetry.d.ts.map +1 -0
- package/dist/core/Telemetry.js +47 -0
- package/dist/core/Telemetry.js.map +1 -0
- package/dist/core/index.d.ts +9 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +4 -1
- package/dist/core/index.js.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/mw_games.global.js +88 -87
- package/dist/roguelike/Boss.d.ts +4 -4
- package/dist/roguelike/Boss.d.ts.map +1 -1
- package/dist/roguelike/Boss.js +6 -6
- package/dist/roguelike/Boss.js.map +1 -1
- package/dist/roguelike/Combat.d.ts +10 -11
- package/dist/roguelike/Combat.d.ts.map +1 -1
- package/dist/roguelike/Combat.js +9 -16
- package/dist/roguelike/Combat.js.map +1 -1
- package/dist/roguelike/ContentRoll.d.ts +43 -0
- package/dist/roguelike/ContentRoll.d.ts.map +1 -0
- package/dist/roguelike/ContentRoll.js +38 -0
- package/dist/roguelike/ContentRoll.js.map +1 -0
- package/dist/roguelike/DungeonParity.d.ts +42 -0
- package/dist/roguelike/DungeonParity.d.ts.map +1 -0
- package/dist/roguelike/DungeonParity.js +63 -0
- package/dist/roguelike/DungeonParity.js.map +1 -0
- package/dist/roguelike/Features.d.ts +42 -0
- package/dist/roguelike/Features.d.ts.map +1 -0
- package/dist/roguelike/Features.js +59 -0
- package/dist/roguelike/Features.js.map +1 -0
- package/dist/roguelike/MonsterAI.js +1 -1
- package/dist/roguelike/MonsterAI.js.map +1 -1
- package/dist/roguelike/MultiStageAbility.d.ts +43 -0
- package/dist/roguelike/MultiStageAbility.d.ts.map +1 -0
- package/dist/roguelike/MultiStageAbility.js +60 -0
- package/dist/roguelike/MultiStageAbility.js.map +1 -0
- package/dist/roguelike/RoomBuilders.d.ts +43 -0
- package/dist/roguelike/RoomBuilders.d.ts.map +1 -0
- package/dist/roguelike/RoomBuilders.js +40 -0
- package/dist/roguelike/RoomBuilders.js.map +1 -0
- package/dist/roguelike/Targeting.d.ts +22 -0
- package/dist/roguelike/Targeting.d.ts.map +1 -1
- package/dist/roguelike/Targeting.js +20 -0
- package/dist/roguelike/Targeting.js.map +1 -1
- package/dist/roguelike/TriggerTracker.d.ts +36 -0
- package/dist/roguelike/TriggerTracker.d.ts.map +1 -0
- package/dist/roguelike/TriggerTracker.js +49 -0
- package/dist/roguelike/TriggerTracker.js.map +1 -0
- package/dist/roguelike/generate.d.ts +49 -0
- package/dist/roguelike/generate.d.ts.map +1 -1
- package/dist/roguelike/generate.js +38 -10
- package/dist/roguelike/generate.js.map +1 -1
- package/dist/roguelike/index.d.ts +16 -4
- package/dist/roguelike/index.d.ts.map +1 -1
- package/dist/roguelike/index.js +8 -2
- package/dist/roguelike/index.js.map +1 -1
- package/dist/rpg/EventRunner.d.ts +30 -8
- package/dist/rpg/EventRunner.d.ts.map +1 -1
- package/dist/rpg/EventRunner.js +1 -13
- package/dist/rpg/EventRunner.js.map +1 -1
- package/dist/rpg/FreeMover.d.ts +2 -2
- package/dist/rpg/FreeMover.d.ts.map +1 -1
- package/dist/rpg/FreeMover.js +5 -5
- package/dist/rpg/FreeMover.js.map +1 -1
- package/dist/rpg/GridMover.d.ts +2 -2
- package/dist/rpg/GridMover.d.ts.map +1 -1
- package/dist/rpg/GridMover.js +5 -5
- package/dist/rpg/GridMover.js.map +1 -1
- package/dist/rpg/MovableSprite.d.ts +25 -0
- package/dist/rpg/MovableSprite.d.ts.map +1 -0
- package/dist/rpg/MovableSprite.js +2 -0
- package/dist/rpg/MovableSprite.js.map +1 -0
- package/dist/rpg/Quest.d.ts +6 -1
- package/dist/rpg/Quest.d.ts.map +1 -1
- package/dist/rpg/Quest.js +6 -1
- package/dist/rpg/Quest.js.map +1 -1
- package/dist/rpg/automap.d.ts +24 -2
- package/dist/rpg/automap.d.ts.map +1 -1
- package/dist/rpg/automap.js +9 -1
- package/dist/rpg/automap.js.map +1 -1
- package/dist/rpg/index.d.ts +4 -4
- package/dist/rpg/index.d.ts.map +1 -1
- package/dist/rpg/index.js +1 -1
- package/dist/rpg/index.js.map +1 -1
- package/dist/simulation/Scenario.d.ts +29 -0
- package/dist/simulation/Scenario.d.ts.map +1 -0
- package/dist/simulation/Scenario.js +25 -0
- package/dist/simulation/Scenario.js.map +1 -0
- package/dist/simulation/Turns.d.ts +29 -0
- package/dist/simulation/Turns.d.ts.map +1 -0
- package/dist/simulation/Turns.js +30 -0
- package/dist/simulation/Turns.js.map +1 -0
- package/dist/simulation/index.d.ts +5 -0
- package/dist/simulation/index.d.ts.map +1 -0
- package/dist/simulation/index.js +3 -0
- package/dist/simulation/index.js.map +1 -0
- package/dist/three-d/Character3D.d.ts +26 -1
- package/dist/three-d/Character3D.d.ts.map +1 -1
- package/dist/three-d/Character3D.js +31 -14
- package/dist/three-d/Character3D.js.map +1 -1
- package/dist/three-d/Collision3D.d.ts +63 -0
- package/dist/three-d/Collision3D.d.ts.map +1 -0
- package/dist/three-d/Collision3D.js +75 -0
- package/dist/three-d/Collision3D.js.map +1 -0
- package/dist/three-d/Models.js +1 -1
- package/dist/three-d/index.d.ts +3 -1
- package/dist/three-d/index.d.ts.map +1 -1
- package/dist/three-d/index.js +1 -0
- package/dist/three-d/index.js.map +1 -1
- package/dist/{core → two-d}/Game.d.ts +7 -6
- package/dist/two-d/Game.d.ts.map +1 -0
- package/dist/{core → two-d}/Game.js +3 -3
- package/dist/two-d/Game.js.map +1 -0
- package/dist/two-d/Scene2D.d.ts +19 -0
- package/dist/two-d/Scene2D.d.ts.map +1 -0
- package/dist/two-d/Scene2D.js +23 -0
- package/dist/two-d/Scene2D.js.map +1 -0
- package/dist/two-d/index.d.ts +20 -0
- package/dist/two-d/index.d.ts.map +1 -0
- package/dist/two-d/index.js +18 -0
- package/dist/two-d/index.js.map +1 -0
- package/dist/two-d/render/ActorAnimator.d.ts.map +1 -0
- package/dist/two-d/render/ActorAnimator.js.map +1 -0
- package/dist/two-d/render/AnimatedSprite.d.ts.map +1 -0
- package/dist/two-d/render/AnimatedSprite.js.map +1 -0
- package/dist/two-d/render/Autotile.d.ts.map +1 -0
- package/dist/two-d/render/Autotile.js.map +1 -0
- package/dist/two-d/render/Camera.d.ts.map +1 -0
- package/dist/{render → two-d/render}/Camera.js +2 -2
- package/dist/two-d/render/Camera.js.map +1 -0
- package/dist/two-d/render/Capabilities.d.ts.map +1 -0
- package/dist/two-d/render/Capabilities.js.map +1 -0
- package/dist/two-d/render/ColorBlindness.d.ts.map +1 -0
- package/dist/two-d/render/ColorBlindness.js.map +1 -0
- package/dist/two-d/render/ColorTransformBatcher.d.ts.map +1 -0
- package/dist/{render → two-d/render}/ColorTransformBatcher.js +3 -2
- package/dist/two-d/render/ColorTransformBatcher.js.map +1 -0
- package/dist/two-d/render/LayeredSprite.d.ts.map +1 -0
- package/dist/two-d/render/LayeredSprite.js.map +1 -0
- package/dist/two-d/render/Minimap.d.ts.map +1 -0
- package/dist/{render → two-d/render}/Minimap.js +1 -1
- package/dist/two-d/render/Minimap.js.map +1 -0
- package/dist/two-d/render/Particles.d.ts +109 -0
- package/dist/two-d/render/Particles.d.ts.map +1 -0
- package/dist/two-d/render/Particles.js +178 -0
- package/dist/two-d/render/Particles.js.map +1 -0
- package/dist/two-d/render/Projectile.d.ts.map +1 -0
- package/dist/two-d/render/Projectile.js.map +1 -0
- package/dist/two-d/render/ScreenEffects.d.ts +71 -0
- package/dist/two-d/render/ScreenEffects.d.ts.map +1 -0
- package/dist/two-d/render/ScreenEffects.js +133 -0
- package/dist/two-d/render/ScreenEffects.js.map +1 -0
- package/dist/two-d/render/SpriteSheet.d.ts.map +1 -0
- package/dist/{render → two-d/render}/SpriteSheet.js +1 -1
- package/dist/two-d/render/SpriteSheet.js.map +1 -0
- package/dist/two-d/render/StatusVisuals.d.ts +46 -0
- package/dist/two-d/render/StatusVisuals.d.ts.map +1 -0
- package/dist/two-d/render/StatusVisuals.js +48 -0
- package/dist/two-d/render/StatusVisuals.js.map +1 -0
- package/dist/two-d/render/TileMap.d.ts.map +1 -0
- package/dist/{render → two-d/render}/TileMap.js +1 -1
- package/dist/two-d/render/TileMap.js.map +1 -0
- package/dist/{rpg → two-d/render}/TiledMap.d.ts +2 -2
- package/dist/two-d/render/TiledMap.d.ts.map +1 -0
- package/dist/{rpg → two-d/render}/TiledMap.js +2 -2
- package/dist/two-d/render/TiledMap.js.map +1 -0
- package/dist/two-d/render/TintedSprite.d.ts.map +1 -0
- package/dist/two-d/render/TintedSprite.js.map +1 -0
- package/dist/two-d/render/Viewport.d.ts.map +1 -0
- package/dist/two-d/render/Viewport.js.map +1 -0
- package/dist/{render → two-d/render}/index.d.ts +8 -0
- package/dist/two-d/render/index.d.ts.map +1 -0
- package/dist/{render → two-d/render}/index.js +4 -0
- package/dist/two-d/render/index.js.map +1 -0
- package/dist/two-d/stage/DialogueStage.d.ts.map +1 -0
- package/dist/{stage → two-d/stage}/DialogueStage.js +1 -1
- package/dist/two-d/stage/DialogueStage.js.map +1 -0
- package/dist/two-d/stage/index.d.ts.map +1 -0
- package/dist/two-d/stage/index.js.map +1 -0
- package/dist/two-d/stage/script.d.ts.map +1 -0
- package/dist/{stage → two-d/stage}/script.js +0 -0
- package/dist/two-d/stage/script.js.map +1 -0
- package/dist/two-d/stage/twee.d.ts.map +1 -0
- package/dist/two-d/stage/twee.js.map +1 -0
- package/dist/two-d/ui/Bar.d.ts.map +1 -0
- package/dist/two-d/ui/Bar.js.map +1 -0
- package/dist/two-d/ui/BitmapLabel.d.ts.map +1 -0
- package/dist/two-d/ui/BitmapLabel.js.map +1 -0
- package/dist/{ui → two-d/ui}/Button.d.ts +25 -2
- package/dist/two-d/ui/Button.d.ts.map +1 -0
- package/dist/{ui → two-d/ui}/Button.js +35 -9
- package/dist/two-d/ui/Button.js.map +1 -0
- package/dist/two-d/ui/EventDialogue.d.ts +23 -0
- package/dist/two-d/ui/EventDialogue.d.ts.map +1 -0
- package/dist/two-d/ui/EventDialogue.js +27 -0
- package/dist/two-d/ui/EventDialogue.js.map +1 -0
- package/dist/two-d/ui/FloatingText.d.ts.map +1 -0
- package/dist/two-d/ui/FloatingText.js.map +1 -0
- package/dist/{ui → two-d/ui}/HelpScreen.d.ts +1 -1
- package/dist/two-d/ui/HelpScreen.d.ts.map +1 -0
- package/dist/two-d/ui/HelpScreen.js.map +1 -0
- package/dist/{ui → two-d/ui}/IconGrid.d.ts +1 -1
- package/dist/two-d/ui/IconGrid.d.ts.map +1 -0
- package/dist/two-d/ui/IconGrid.js.map +1 -0
- package/dist/{ui → two-d/ui}/Label.d.ts +8 -0
- package/dist/two-d/ui/Label.d.ts.map +1 -0
- package/dist/{ui → two-d/ui}/Label.js +3 -0
- package/dist/two-d/ui/Label.js.map +1 -0
- package/dist/{ui → two-d/ui}/ListView.d.ts +1 -1
- package/dist/two-d/ui/ListView.d.ts.map +1 -0
- package/dist/two-d/ui/ListView.js.map +1 -0
- package/dist/{ui → two-d/ui}/LoadingScreen.d.ts +1 -1
- package/dist/two-d/ui/LoadingScreen.d.ts.map +1 -0
- package/dist/two-d/ui/LoadingScreen.js.map +1 -0
- package/dist/{ui → two-d/ui}/MessageBox.d.ts +1 -1
- package/dist/two-d/ui/MessageBox.d.ts.map +1 -0
- package/dist/two-d/ui/MessageBox.js.map +1 -0
- package/dist/two-d/ui/NinePatch.d.ts.map +1 -0
- package/dist/two-d/ui/NinePatch.js.map +1 -0
- package/dist/{ui → two-d/ui}/RebindScreen.d.ts +1 -1
- package/dist/two-d/ui/RebindScreen.d.ts.map +1 -0
- package/dist/{ui → two-d/ui}/RebindScreen.js +1 -1
- package/dist/two-d/ui/RebindScreen.js.map +1 -0
- package/dist/two-d/ui/StatsScreen.d.ts +25 -0
- package/dist/two-d/ui/StatsScreen.d.ts.map +1 -0
- package/dist/two-d/ui/StatsScreen.js +27 -0
- package/dist/two-d/ui/StatsScreen.js.map +1 -0
- package/dist/two-d/ui/Toast.d.ts.map +1 -0
- package/dist/{ui → two-d/ui}/Toast.js +1 -1
- package/dist/two-d/ui/Toast.js.map +1 -0
- package/dist/two-d/ui/Tooltip.d.ts +94 -0
- package/dist/two-d/ui/Tooltip.d.ts.map +1 -0
- package/dist/two-d/ui/Tooltip.js +149 -0
- package/dist/two-d/ui/Tooltip.js.map +1 -0
- package/dist/two-d/ui/VerticalLabel.d.ts.map +1 -0
- package/dist/two-d/ui/VerticalLabel.js.map +1 -0
- package/dist/{ui → two-d/ui}/Window.d.ts +2 -2
- package/dist/two-d/ui/Window.d.ts.map +1 -0
- package/dist/{ui → two-d/ui}/Window.js +1 -1
- package/dist/two-d/ui/Window.js.map +1 -0
- package/dist/two-d/ui/WindowStack.d.ts.map +1 -0
- package/dist/{ui → two-d/ui}/WindowStack.js +1 -1
- package/dist/two-d/ui/WindowStack.js.map +1 -0
- package/dist/{ui → two-d/ui}/index.d.ts +7 -1
- package/dist/two-d/ui/index.d.ts.map +1 -0
- package/dist/{ui → two-d/ui}/index.js +3 -0
- package/dist/two-d/ui/index.js.map +1 -0
- package/dist/{ui → two-d/ui}/theme.d.ts +2 -2
- package/dist/two-d/ui/theme.d.ts.map +1 -0
- package/dist/{ui → two-d/ui}/theme.js +1 -1
- package/dist/two-d/ui/theme.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/world/Encounters.js +1 -1
- package/dist/world/Encounters.js.map +1 -1
- package/dist/world/Environment.d.ts +12 -3
- package/dist/world/Environment.d.ts.map +1 -1
- package/dist/world/Environment.js +18 -9
- package/dist/world/Environment.js.map +1 -1
- package/package.json +138 -23
- package/dist/core/Game.d.ts.map +0 -1
- package/dist/core/Game.js.map +0 -1
- package/dist/render/ActorAnimator.d.ts.map +0 -1
- package/dist/render/ActorAnimator.js.map +0 -1
- package/dist/render/AnimatedSprite.d.ts.map +0 -1
- package/dist/render/AnimatedSprite.js.map +0 -1
- package/dist/render/Autotile.d.ts.map +0 -1
- package/dist/render/Autotile.js.map +0 -1
- package/dist/render/Camera.d.ts.map +0 -1
- package/dist/render/Camera.js.map +0 -1
- package/dist/render/Capabilities.d.ts.map +0 -1
- package/dist/render/Capabilities.js.map +0 -1
- package/dist/render/ColorBlindness.d.ts.map +0 -1
- package/dist/render/ColorBlindness.js.map +0 -1
- package/dist/render/ColorTransformBatcher.d.ts.map +0 -1
- package/dist/render/ColorTransformBatcher.js.map +0 -1
- package/dist/render/LayeredSprite.d.ts.map +0 -1
- package/dist/render/LayeredSprite.js.map +0 -1
- package/dist/render/Minimap.d.ts.map +0 -1
- package/dist/render/Minimap.js.map +0 -1
- package/dist/render/Projectile.d.ts.map +0 -1
- package/dist/render/Projectile.js.map +0 -1
- package/dist/render/SpriteSheet.d.ts.map +0 -1
- package/dist/render/SpriteSheet.js.map +0 -1
- package/dist/render/TileMap.d.ts.map +0 -1
- package/dist/render/TileMap.js.map +0 -1
- package/dist/render/TintedSprite.d.ts.map +0 -1
- package/dist/render/TintedSprite.js.map +0 -1
- package/dist/render/Viewport.d.ts.map +0 -1
- package/dist/render/Viewport.js.map +0 -1
- package/dist/render/index.d.ts.map +0 -1
- package/dist/render/index.js.map +0 -1
- package/dist/rpg/TiledMap.d.ts.map +0 -1
- package/dist/rpg/TiledMap.js.map +0 -1
- package/dist/stage/DialogueStage.d.ts.map +0 -1
- package/dist/stage/DialogueStage.js.map +0 -1
- package/dist/stage/index.d.ts.map +0 -1
- package/dist/stage/index.js.map +0 -1
- package/dist/stage/script.d.ts.map +0 -1
- package/dist/stage/script.js.map +0 -1
- package/dist/stage/twee.d.ts.map +0 -1
- package/dist/stage/twee.js.map +0 -1
- package/dist/ui/Bar.d.ts.map +0 -1
- package/dist/ui/Bar.js.map +0 -1
- package/dist/ui/BitmapLabel.d.ts.map +0 -1
- package/dist/ui/BitmapLabel.js.map +0 -1
- package/dist/ui/Button.d.ts.map +0 -1
- package/dist/ui/Button.js.map +0 -1
- package/dist/ui/FloatingText.d.ts.map +0 -1
- package/dist/ui/FloatingText.js.map +0 -1
- package/dist/ui/HelpScreen.d.ts.map +0 -1
- package/dist/ui/HelpScreen.js.map +0 -1
- package/dist/ui/IconGrid.d.ts.map +0 -1
- package/dist/ui/IconGrid.js.map +0 -1
- package/dist/ui/Label.d.ts.map +0 -1
- package/dist/ui/Label.js.map +0 -1
- package/dist/ui/ListView.d.ts.map +0 -1
- package/dist/ui/ListView.js.map +0 -1
- package/dist/ui/LoadingScreen.d.ts.map +0 -1
- package/dist/ui/LoadingScreen.js.map +0 -1
- package/dist/ui/MessageBox.d.ts.map +0 -1
- package/dist/ui/MessageBox.js.map +0 -1
- package/dist/ui/NinePatch.d.ts.map +0 -1
- package/dist/ui/NinePatch.js.map +0 -1
- package/dist/ui/RebindScreen.d.ts.map +0 -1
- package/dist/ui/RebindScreen.js.map +0 -1
- package/dist/ui/Toast.d.ts.map +0 -1
- package/dist/ui/Toast.js.map +0 -1
- package/dist/ui/VerticalLabel.d.ts.map +0 -1
- package/dist/ui/VerticalLabel.js.map +0 -1
- package/dist/ui/Window.d.ts.map +0 -1
- package/dist/ui/Window.js.map +0 -1
- package/dist/ui/WindowStack.d.ts.map +0 -1
- package/dist/ui/WindowStack.js.map +0 -1
- package/dist/ui/index.d.ts.map +0 -1
- package/dist/ui/index.js.map +0 -1
- package/dist/ui/theme.d.ts.map +0 -1
- package/dist/ui/theme.js.map +0 -1
- /package/dist/{render → two-d/render}/ActorAnimator.d.ts +0 -0
- /package/dist/{render → two-d/render}/ActorAnimator.js +0 -0
- /package/dist/{render → two-d/render}/AnimatedSprite.d.ts +0 -0
- /package/dist/{render → two-d/render}/AnimatedSprite.js +0 -0
- /package/dist/{render → two-d/render}/Autotile.d.ts +0 -0
- /package/dist/{render → two-d/render}/Autotile.js +0 -0
- /package/dist/{render → two-d/render}/Camera.d.ts +0 -0
- /package/dist/{render → two-d/render}/Capabilities.d.ts +0 -0
- /package/dist/{render → two-d/render}/Capabilities.js +0 -0
- /package/dist/{render → two-d/render}/ColorBlindness.d.ts +0 -0
- /package/dist/{render → two-d/render}/ColorBlindness.js +0 -0
- /package/dist/{render → two-d/render}/ColorTransformBatcher.d.ts +0 -0
- /package/dist/{render → two-d/render}/LayeredSprite.d.ts +0 -0
- /package/dist/{render → two-d/render}/LayeredSprite.js +0 -0
- /package/dist/{render → two-d/render}/Minimap.d.ts +0 -0
- /package/dist/{render → two-d/render}/Projectile.d.ts +0 -0
- /package/dist/{render → two-d/render}/Projectile.js +0 -0
- /package/dist/{render → two-d/render}/SpriteSheet.d.ts +0 -0
- /package/dist/{render → two-d/render}/TileMap.d.ts +0 -0
- /package/dist/{render → two-d/render}/TintedSprite.d.ts +0 -0
- /package/dist/{render → two-d/render}/TintedSprite.js +0 -0
- /package/dist/{render → two-d/render}/Viewport.d.ts +0 -0
- /package/dist/{render → two-d/render}/Viewport.js +0 -0
- /package/dist/{stage → two-d/stage}/DialogueStage.d.ts +0 -0
- /package/dist/{stage → two-d/stage}/index.d.ts +0 -0
- /package/dist/{stage → two-d/stage}/index.js +0 -0
- /package/dist/{stage → two-d/stage}/script.d.ts +0 -0
- /package/dist/{stage → two-d/stage}/twee.d.ts +0 -0
- /package/dist/{stage → two-d/stage}/twee.js +0 -0
- /package/dist/{ui → two-d/ui}/Bar.d.ts +0 -0
- /package/dist/{ui → two-d/ui}/Bar.js +0 -0
- /package/dist/{ui → two-d/ui}/BitmapLabel.d.ts +0 -0
- /package/dist/{ui → two-d/ui}/BitmapLabel.js +0 -0
- /package/dist/{ui → two-d/ui}/FloatingText.d.ts +0 -0
- /package/dist/{ui → two-d/ui}/FloatingText.js +0 -0
- /package/dist/{ui → two-d/ui}/HelpScreen.js +0 -0
- /package/dist/{ui → two-d/ui}/IconGrid.js +0 -0
- /package/dist/{ui → two-d/ui}/ListView.js +0 -0
- /package/dist/{ui → two-d/ui}/LoadingScreen.js +0 -0
- /package/dist/{ui → two-d/ui}/MessageBox.js +0 -0
- /package/dist/{ui → two-d/ui}/NinePatch.d.ts +0 -0
- /package/dist/{ui → two-d/ui}/NinePatch.js +0 -0
- /package/dist/{ui → two-d/ui}/Toast.d.ts +0 -0
- /package/dist/{ui → two-d/ui}/VerticalLabel.d.ts +0 -0
- /package/dist/{ui → two-d/ui}/VerticalLabel.js +0 -0
- /package/dist/{ui → two-d/ui}/WindowStack.d.ts +0 -0
|
@@ -7,11 +7,19 @@
|
|
|
7
7
|
* capacity, and every check trivially passes.
|
|
8
8
|
*/
|
|
9
9
|
export interface InventoryItem {
|
|
10
|
-
/** identifies the kind of item; two stackable entries with the same id merge */
|
|
10
|
+
/** identifies the kind of item; two stackable entries with the same id (and `instanceId`) merge */
|
|
11
11
|
id: string;
|
|
12
12
|
quantity: number;
|
|
13
13
|
stackable?: boolean;
|
|
14
14
|
weight?: number;
|
|
15
|
+
/**
|
|
16
|
+
* Distinguishes otherwise-identical instances of the same item id - two `"sword"`s, one
|
|
17
|
+
* enchanted and one not, or two enchanted differently - so they never silently merge into
|
|
18
|
+
* one stack the way plain quantity stacking assumes every unit of an id is interchangeable.
|
|
19
|
+
* Omitted (the default, and the only behaviour before this existed), every stackable item
|
|
20
|
+
* of an id still merges into a single stack.
|
|
21
|
+
*/
|
|
22
|
+
instanceId?: string;
|
|
15
23
|
/** an unidentified potion, a cursed ring the player does not yet know is cursed */
|
|
16
24
|
identified?: boolean;
|
|
17
25
|
cursed?: boolean;
|
|
@@ -37,7 +45,8 @@ export declare class Inventory {
|
|
|
37
45
|
get items(): readonly InventoryItem[];
|
|
38
46
|
get totalWeight(): number;
|
|
39
47
|
private weightOf;
|
|
40
|
-
|
|
48
|
+
/** Finds the first item of a kind, or the matching instance when `instanceId` is supplied. */
|
|
49
|
+
find(id: string, instanceId?: string): InventoryItem | undefined;
|
|
41
50
|
/**
|
|
42
51
|
* Adds an item, merging into an existing stack when both are stackable.
|
|
43
52
|
*
|
|
@@ -45,6 +54,52 @@ export declare class Inventory {
|
|
|
45
54
|
*/
|
|
46
55
|
add(item: InventoryItem): boolean;
|
|
47
56
|
/** removes up to `quantity` (default: the whole stack); the slot disappears once empty */
|
|
48
|
-
remove(id: string, quantity?: number): void;
|
|
57
|
+
remove(id: string, quantity?: number, instanceId?: string): void;
|
|
58
|
+
/**
|
|
59
|
+
* Takes up to `quantity` from one stack and returns an item snapshot suitable for adding to
|
|
60
|
+
* another inventory. All instance state travels with it; only the quantity is split.
|
|
61
|
+
*/
|
|
62
|
+
take(id: string, quantity?: number, instanceId?: string): InventoryItem | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* What a save has to remember about one slot: its id, how many, and every field that can
|
|
65
|
+
* diverge between two items sharing that id.
|
|
66
|
+
*
|
|
67
|
+
* The split is the whole design question here. `stackable` and `weight` describe the *kind*
|
|
68
|
+
* of item and live in a game's own item table, so they are supplied fresh on load like
|
|
69
|
+
* every other definition in this framework, and a game that rebalances an item's weight
|
|
70
|
+
* sees the new value on an old save rather than the stale one baked into it. Everything
|
|
71
|
+
* else - an enchantment level, wear, a rolled affix, whether it has been identified, the
|
|
72
|
+
* `instanceId` keeping two otherwise-identical swords apart - belongs to the individual
|
|
73
|
+
* item and is exactly what would be lost if a save recorded only "3 x potion".
|
|
74
|
+
*/
|
|
75
|
+
toJSON(): SavedInventory;
|
|
76
|
+
/**
|
|
77
|
+
* Rebuilds an inventory, taking each item's kind-level fields from `defs`.
|
|
78
|
+
*
|
|
79
|
+
* Throws on an id `defs` does not know, rather than restoring a weightless unstackable
|
|
80
|
+
* ghost of it: a save naming an item the game no longer has is a real problem, and finding
|
|
81
|
+
* out at load is far cheaper than finding out when a carry-weight check silently disagrees.
|
|
82
|
+
*/
|
|
83
|
+
static fromJSON(defs: ReadonlyMap<string, ItemDefinition>, data: SavedInventory): Inventory;
|
|
84
|
+
}
|
|
85
|
+
/** the kind-level fields a game's own item table supplies, rather than the save file */
|
|
86
|
+
export type ItemDefinition = Pick<InventoryItem, 'stackable' | 'weight'>;
|
|
87
|
+
/** one slot as saved: instance state only, no kind-level fields */
|
|
88
|
+
export interface SavedInventoryItem {
|
|
89
|
+
id: string;
|
|
90
|
+
quantity: number;
|
|
91
|
+
instanceId?: string;
|
|
92
|
+
identified?: boolean;
|
|
93
|
+
cursed?: boolean;
|
|
94
|
+
blessed?: boolean;
|
|
95
|
+
level?: number;
|
|
96
|
+
affix?: string;
|
|
97
|
+
durability?: number;
|
|
98
|
+
maxDurability?: number;
|
|
99
|
+
contents?: SavedInventory;
|
|
100
|
+
}
|
|
101
|
+
export interface SavedInventory {
|
|
102
|
+
capacity?: number;
|
|
103
|
+
slots: SavedInventoryItem[];
|
|
49
104
|
}
|
|
50
105
|
//# sourceMappingURL=Inventory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Inventory.d.ts","sourceRoot":"","sources":["../../src/actors/Inventory.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,aAAa;IAC7B,
|
|
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"}
|
package/dist/actors/Inventory.js
CHANGED
|
@@ -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
|
-
|
|
24
|
-
|
|
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
|
-
|
|
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;
|
|
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
|
-
/**
|
|
11
|
-
export
|
|
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;
|
|
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"}
|
package/dist/actors/ItemState.js
CHANGED
|
@@ -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
|
-
/**
|
|
12
|
-
|
|
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":"
|
|
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"}
|
package/dist/actors/Loot.js
CHANGED
|
@@ -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 ===
|
|
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 };
|
package/dist/actors/Loot.js.map
CHANGED
|
@@ -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,
|
|
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;
|
|
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"}
|
package/dist/actors/Resource.js
CHANGED
|
@@ -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":"
|
|
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;
|
|
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;
|
|
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"}
|
package/dist/actors/StatBlock.js
CHANGED
|
@@ -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":"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"}
|
package/dist/actors/Support.d.ts
CHANGED
|
@@ -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
|
-
|
|
30
|
-
static
|
|
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,
|
|
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"}
|