@datamoc/mw_games 0.3.1 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +401 -395
- package/dist/actors/Advancement.d.ts +17 -0
- package/dist/actors/Advancement.d.ts.map +1 -1
- package/dist/actors/Advancement.js +17 -0
- package/dist/actors/Advancement.js.map +1 -1
- package/dist/actors/Affix.d.ts +46 -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/Appearances.d.ts +12 -0
- package/dist/actors/Appearances.d.ts.map +1 -1
- package/dist/actors/Appearances.js +12 -0
- package/dist/actors/Appearances.js.map +1 -1
- package/dist/actors/Aura.d.ts +16 -0
- package/dist/actors/Aura.d.ts.map +1 -1
- package/dist/actors/Aura.js +16 -0
- package/dist/actors/Aura.js.map +1 -1
- package/dist/actors/Barrier.d.ts +60 -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 +35 -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 +48 -0
- package/dist/actors/Equipment.d.ts.map +1 -1
- package/dist/actors/Equipment.js +51 -1
- package/dist/actors/Equipment.js.map +1 -1
- package/dist/actors/Inventory.d.ts +70 -3
- package/dist/actors/Inventory.d.ts.map +1 -1
- package/dist/actors/Inventory.js +109 -5
- package/dist/actors/Inventory.js.map +1 -1
- package/dist/actors/ItemState.d.ts +24 -2
- package/dist/actors/ItemState.d.ts.map +1 -1
- package/dist/actors/ItemState.js +31 -2
- package/dist/actors/ItemState.js.map +1 -1
- package/dist/actors/ItemStatusEffect.d.ts +13 -0
- package/dist/actors/ItemStatusEffect.d.ts.map +1 -1
- package/dist/actors/ItemStatusEffect.js +13 -0
- package/dist/actors/ItemStatusEffect.js.map +1 -1
- package/dist/actors/Loot.d.ts +15 -1
- package/dist/actors/Loot.d.ts.map +1 -1
- package/dist/actors/Loot.js +16 -2
- package/dist/actors/Loot.js.map +1 -1
- package/dist/actors/Progression.d.ts +23 -1
- package/dist/actors/Progression.d.ts.map +1 -1
- package/dist/actors/Progression.js +21 -1
- package/dist/actors/Progression.js.map +1 -1
- package/dist/actors/Resource.d.ts +30 -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/Scaling.d.ts +8 -0
- package/dist/actors/Scaling.d.ts.map +1 -1
- package/dist/actors/Scaling.js.map +1 -1
- package/dist/actors/Shop.d.ts +15 -0
- package/dist/actors/Shop.d.ts.map +1 -1
- package/dist/actors/Shop.js.map +1 -1
- package/dist/actors/SkillPoints.d.ts +27 -0
- package/dist/actors/SkillPoints.d.ts.map +1 -1
- package/dist/actors/SkillPoints.js +29 -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/StatusEffect.d.ts +18 -0
- package/dist/actors/StatusEffect.d.ts.map +1 -1
- package/dist/actors/StatusEffect.js +18 -0
- package/dist/actors/StatusEffect.js.map +1 -1
- package/dist/actors/Support.d.ts +13 -2
- package/dist/actors/Support.d.ts.map +1 -1
- package/dist/actors/Support.js +13 -2
- package/dist/actors/Support.js.map +1 -1
- package/dist/actors/Traits.d.ts +14 -0
- package/dist/actors/Traits.d.ts.map +1 -1
- package/dist/actors/Traits.js +14 -0
- package/dist/actors/Traits.js.map +1 -1
- package/dist/actors/craft.d.ts +16 -0
- package/dist/actors/craft.d.ts.map +1 -1
- package/dist/actors/craft.js +16 -0
- package/dist/actors/craft.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/actors/skillCheck.d.ts +8 -0
- package/dist/actors/skillCheck.d.ts.map +1 -1
- package/dist/actors/skillCheck.js +8 -0
- package/dist/actors/skillCheck.js.map +1 -1
- package/dist/assets/ByteProgress.d.ts +37 -0
- package/dist/assets/ByteProgress.d.ts.map +1 -0
- package/dist/assets/ByteProgress.js +54 -0
- package/dist/assets/ByteProgress.js.map +1 -0
- package/dist/assets/Streaming.d.ts +11 -1
- package/dist/assets/Streaming.d.ts.map +1 -1
- package/dist/assets/Streaming.js +11 -1
- package/dist/assets/Streaming.js.map +1 -1
- package/dist/assets/index.d.ts +11 -52
- package/dist/assets/index.d.ts.map +1 -1
- package/dist/assets/index.js +9 -80
- package/dist/assets/index.js.map +1 -1
- package/dist/assets/loader.d.ts +45 -0
- package/dist/assets/loader.d.ts.map +1 -0
- package/dist/assets/loader.js +72 -0
- package/dist/assets/loader.js.map +1 -0
- package/dist/assets/paths.d.ts +50 -0
- package/dist/assets/paths.d.ts.map +1 -0
- package/dist/assets/paths.js +59 -0
- package/dist/assets/paths.js.map +1 -0
- package/dist/audio/Captions.d.ts +13 -1
- package/dist/audio/Captions.d.ts.map +1 -1
- package/dist/audio/Captions.js +13 -1
- package/dist/audio/Captions.js.map +1 -1
- package/dist/audio/Midi.d.ts +19 -1
- package/dist/audio/Midi.d.ts.map +1 -1
- package/dist/audio/Midi.js +19 -1
- package/dist/audio/Midi.js.map +1 -1
- package/dist/audio/Music.d.ts +11 -0
- package/dist/audio/Music.d.ts.map +1 -1
- package/dist/audio/Music.js +11 -0
- package/dist/audio/Music.js.map +1 -1
- package/dist/audio/Orchestrator.d.ts +14 -0
- package/dist/audio/Orchestrator.d.ts.map +1 -1
- package/dist/audio/Orchestrator.js +14 -0
- package/dist/audio/Orchestrator.js.map +1 -1
- package/dist/audio/Playable.d.ts +11 -1
- package/dist/audio/Playable.d.ts.map +1 -1
- package/dist/audio/Playable.js +12 -2
- package/dist/audio/Playable.js.map +1 -1
- package/dist/audio/Sound.d.ts +8 -0
- package/dist/audio/Sound.d.ts.map +1 -1
- package/dist/audio/Sound.js +8 -0
- package/dist/audio/Sound.js.map +1 -1
- package/dist/audio/Synth.d.ts +15 -0
- package/dist/audio/Synth.d.ts.map +1 -1
- package/dist/audio/Synth.js +15 -0
- package/dist/audio/Synth.js.map +1 -1
- package/dist/battle/BattleAI.d.ts +18 -2
- package/dist/battle/BattleAI.d.ts.map +1 -1
- package/dist/battle/BattleAI.js +18 -2
- package/dist/battle/BattleAI.js.map +1 -1
- package/dist/battle/Evolution.d.ts +12 -0
- package/dist/battle/Evolution.d.ts.map +1 -1
- package/dist/battle/Evolution.js +12 -0
- package/dist/battle/Evolution.js.map +1 -1
- package/dist/battle/Field.d.ts +13 -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 +23 -13
- package/dist/battle/Hooks.d.ts.map +1 -1
- package/dist/battle/Hooks.js +36 -18
- package/dist/battle/Hooks.js.map +1 -1
- package/dist/battle/Move.d.ts +13 -0
- package/dist/battle/Move.d.ts.map +1 -1
- package/dist/battle/Move.js +13 -0
- package/dist/battle/Move.js.map +1 -1
- package/dist/battle/Party.d.ts +11 -0
- package/dist/battle/Party.d.ts.map +1 -1
- package/dist/battle/Party.js +11 -0
- package/dist/battle/Party.js.map +1 -1
- package/dist/battle/Species.d.ts +10 -0
- package/dist/battle/Species.d.ts.map +1 -1
- package/dist/battle/Species.js +10 -0
- package/dist/battle/Species.js.map +1 -1
- package/dist/battle/StatStages.d.ts +14 -0
- package/dist/battle/StatStages.d.ts.map +1 -1
- package/dist/battle/StatStages.js.map +1 -1
- package/dist/battle/TypeMatrix.d.ts +11 -0
- package/dist/battle/TypeMatrix.d.ts.map +1 -1
- package/dist/battle/TypeMatrix.js +11 -0
- package/dist/battle/TypeMatrix.js.map +1 -1
- package/dist/core/Achievements.d.ts +15 -0
- package/dist/core/Achievements.d.ts.map +1 -1
- package/dist/core/Achievements.js +15 -0
- package/dist/core/Achievements.js.map +1 -1
- package/dist/core/Collection.d.ts +12 -0
- package/dist/core/Collection.d.ts.map +1 -1
- package/dist/core/Collection.js +12 -0
- package/dist/core/Collection.js.map +1 -1
- package/dist/core/Entity.d.ts +42 -0
- package/dist/core/Entity.d.ts.map +1 -0
- package/dist/core/Entity.js +47 -0
- package/dist/core/Entity.js.map +1 -0
- package/dist/core/Feedback.d.ts +11 -1
- package/dist/core/Feedback.d.ts.map +1 -1
- package/dist/core/Feedback.js +11 -1
- package/dist/core/Feedback.js.map +1 -1
- package/dist/core/Hex.d.ts +14 -0
- package/dist/core/Hex.d.ts.map +1 -1
- package/dist/core/Hex.js +14 -0
- package/dist/core/Hex.js.map +1 -1
- package/dist/core/Hooks.d.ts +48 -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/Input.d.ts +53 -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/Loading.d.ts +17 -0
- package/dist/core/Loading.d.ts.map +1 -1
- package/dist/core/Loading.js +17 -0
- package/dist/core/Loading.js.map +1 -1
- package/dist/core/Log.d.ts +9 -0
- package/dist/core/Log.d.ts.map +1 -1
- package/dist/core/Log.js +9 -0
- package/dist/core/Log.js.map +1 -1
- package/dist/core/Multiplayer.d.ts +12 -0
- package/dist/core/Multiplayer.d.ts.map +1 -1
- package/dist/core/Multiplayer.js +12 -0
- package/dist/core/Multiplayer.js.map +1 -1
- package/dist/core/News.d.ts +12 -0
- package/dist/core/News.d.ts.map +1 -1
- package/dist/core/News.js.map +1 -1
- package/dist/core/PlayerInput.d.ts +19 -0
- package/dist/core/PlayerInput.d.ts.map +1 -1
- package/dist/core/PlayerInput.js +25 -0
- package/dist/core/PlayerInput.js.map +1 -1
- package/dist/core/Presentation.d.ts +56 -0
- package/dist/core/Presentation.d.ts.map +1 -0
- package/dist/core/Presentation.js +78 -0
- package/dist/core/Presentation.js.map +1 -0
- package/dist/core/Random.d.ts +38 -5
- package/dist/core/Random.d.ts.map +1 -1
- package/dist/core/Random.js +38 -5
- package/dist/core/Random.js.map +1 -1
- package/dist/core/Replay.d.ts +31 -0
- package/dist/core/Replay.d.ts.map +1 -1
- package/dist/core/Replay.js +31 -0
- package/dist/core/Replay.js.map +1 -1
- package/dist/core/RunHistory.d.ts +12 -0
- package/dist/core/RunHistory.d.ts.map +1 -1
- package/dist/core/RunHistory.js.map +1 -1
- package/dist/core/Sanitize.d.ts +18 -0
- package/dist/core/Sanitize.d.ts.map +1 -1
- package/dist/core/Sanitize.js +18 -0
- package/dist/core/Sanitize.js.map +1 -1
- package/dist/core/Save.d.ts.map +1 -1
- package/dist/core/Save.js +13 -0
- package/dist/core/Save.js.map +1 -1
- package/dist/core/SaveSync.d.ts +14 -0
- package/dist/core/SaveSync.d.ts.map +1 -1
- package/dist/core/SaveSync.js.map +1 -1
- package/dist/core/Scene.d.ts +29 -6
- package/dist/core/Scene.d.ts.map +1 -1
- package/dist/core/Scene.js +31 -6
- package/dist/core/Scene.js.map +1 -1
- package/dist/core/SceneStack.d.ts +28 -4
- package/dist/core/SceneStack.d.ts.map +1 -1
- package/dist/core/SceneStack.js +24 -0
- package/dist/core/SceneStack.js.map +1 -1
- package/dist/core/Scramble.d.ts +8 -0
- package/dist/core/Scramble.d.ts.map +1 -1
- package/dist/core/Scramble.js +8 -0
- package/dist/core/Scramble.js.map +1 -1
- package/dist/core/Session.d.ts +10 -0
- package/dist/core/Session.d.ts.map +1 -1
- package/dist/core/Session.js.map +1 -1
- package/dist/core/Signal.d.ts +11 -0
- package/dist/core/Signal.d.ts.map +1 -1
- package/dist/core/Signal.js.map +1 -1
- package/dist/core/Spawner.d.ts +17 -0
- package/dist/core/Spawner.d.ts.map +1 -1
- package/dist/core/Spawner.js +17 -0
- package/dist/core/Spawner.js.map +1 -1
- package/dist/core/Stats.d.ts +14 -0
- package/dist/core/Stats.d.ts.map +1 -1
- package/dist/core/Stats.js +14 -0
- package/dist/core/Stats.js.map +1 -1
- package/dist/core/Telemetry.d.ts +11 -0
- package/dist/core/Telemetry.d.ts.map +1 -1
- package/dist/core/Telemetry.js +11 -0
- package/dist/core/Telemetry.js.map +1 -1
- package/dist/core/Tween.d.ts +16 -1
- package/dist/core/Tween.d.ts.map +1 -1
- package/dist/core/Tween.js +16 -1
- package/dist/core/Tween.js.map +1 -1
- package/dist/core/UndoHistory.d.ts +15 -0
- package/dist/core/UndoHistory.d.ts.map +1 -1
- package/dist/core/UndoHistory.js.map +1 -1
- package/dist/core/index.d.ts +7 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +3 -1
- package/dist/core/index.js.map +1 -1
- package/dist/i18n/Format.d.ts +25 -0
- package/dist/i18n/Format.d.ts.map +1 -0
- package/dist/i18n/Format.js +32 -0
- package/dist/i18n/Format.js.map +1 -0
- package/dist/i18n/SemanticMessage.d.ts +71 -0
- package/dist/i18n/SemanticMessage.d.ts.map +1 -0
- package/dist/i18n/SemanticMessage.js +40 -0
- package/dist/i18n/SemanticMessage.js.map +1 -0
- package/dist/i18n/Validate.d.ts +56 -0
- package/dist/i18n/Validate.d.ts.map +1 -0
- package/dist/i18n/Validate.js +65 -0
- package/dist/i18n/Validate.js.map +1 -0
- package/dist/i18n/index.d.ts +39 -0
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +48 -1
- package/dist/i18n/index.js.map +1 -1
- package/dist/index.d.ts +4 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -5
- package/dist/index.js.map +1 -1
- package/dist/mw_games.global.js +153 -88
- package/dist/roguelike/Blob.d.ts +11 -0
- package/dist/roguelike/Blob.d.ts.map +1 -1
- package/dist/roguelike/Blob.js +11 -0
- package/dist/roguelike/Blob.js.map +1 -1
- package/dist/roguelike/Boss.d.ts +16 -4
- package/dist/roguelike/Boss.d.ts.map +1 -1
- package/dist/roguelike/Boss.js +18 -6
- package/dist/roguelike/Boss.js.map +1 -1
- package/dist/roguelike/Combat.d.ts +23 -11
- package/dist/roguelike/Combat.d.ts.map +1 -1
- package/dist/roguelike/Combat.js +22 -16
- package/dist/roguelike/Combat.js.map +1 -1
- package/dist/roguelike/ContentRoll.d.ts +53 -0
- package/dist/roguelike/ContentRoll.d.ts.map +1 -0
- package/dist/roguelike/ContentRoll.js +48 -0
- package/dist/roguelike/ContentRoll.js.map +1 -0
- package/dist/roguelike/Doors.d.ts +13 -0
- package/dist/roguelike/Doors.d.ts.map +1 -1
- package/dist/roguelike/Doors.js +13 -0
- package/dist/roguelike/Doors.js.map +1 -1
- package/dist/roguelike/DungeonParity.d.ts +57 -0
- package/dist/roguelike/DungeonParity.d.ts.map +1 -0
- package/dist/roguelike/DungeonParity.js +78 -0
- package/dist/roguelike/DungeonParity.js.map +1 -0
- package/dist/roguelike/Elevation.d.ts +15 -0
- package/dist/roguelike/Elevation.d.ts.map +1 -1
- package/dist/roguelike/Elevation.js +15 -0
- package/dist/roguelike/Elevation.js.map +1 -1
- package/dist/roguelike/Features.d.ts +59 -0
- package/dist/roguelike/Features.d.ts.map +1 -0
- package/dist/roguelike/Features.js +76 -0
- package/dist/roguelike/Features.js.map +1 -0
- package/dist/roguelike/FieldOfView.d.ts +13 -0
- package/dist/roguelike/FieldOfView.d.ts.map +1 -1
- package/dist/roguelike/FieldOfView.js +13 -0
- package/dist/roguelike/FieldOfView.js.map +1 -1
- package/dist/roguelike/Level.d.ts +26 -1
- package/dist/roguelike/Level.d.ts.map +1 -1
- package/dist/roguelike/Level.js +26 -1
- package/dist/roguelike/Level.js.map +1 -1
- package/dist/roguelike/MonsterAI.d.ts +14 -0
- package/dist/roguelike/MonsterAI.d.ts.map +1 -1
- package/dist/roguelike/MonsterAI.js +15 -1
- package/dist/roguelike/MonsterAI.js.map +1 -1
- package/dist/roguelike/MultiStageAbility.d.ts +59 -0
- package/dist/roguelike/MultiStageAbility.d.ts.map +1 -0
- package/dist/roguelike/MultiStageAbility.js +76 -0
- package/dist/roguelike/MultiStageAbility.js.map +1 -0
- package/dist/roguelike/Pathfinder.d.ts +23 -2
- package/dist/roguelike/Pathfinder.d.ts.map +1 -1
- package/dist/roguelike/Pathfinder.js +23 -2
- package/dist/roguelike/Pathfinder.js.map +1 -1
- package/dist/roguelike/RoomBuilders.d.ts +60 -0
- package/dist/roguelike/RoomBuilders.d.ts.map +1 -0
- package/dist/roguelike/RoomBuilders.js +57 -0
- package/dist/roguelike/RoomBuilders.js.map +1 -0
- package/dist/roguelike/Scheduler.d.ts +48 -1
- package/dist/roguelike/Scheduler.d.ts.map +1 -1
- package/dist/roguelike/Scheduler.js +58 -1
- package/dist/roguelike/Scheduler.js.map +1 -1
- package/dist/roguelike/Secrets.d.ts +13 -0
- package/dist/roguelike/Secrets.d.ts.map +1 -1
- package/dist/roguelike/Secrets.js +13 -0
- package/dist/roguelike/Secrets.js.map +1 -1
- package/dist/roguelike/Stealth.d.ts +13 -0
- package/dist/roguelike/Stealth.d.ts.map +1 -1
- package/dist/roguelike/Stealth.js +13 -0
- package/dist/roguelike/Stealth.js.map +1 -1
- package/dist/roguelike/Targeting.d.ts +67 -1
- package/dist/roguelike/Targeting.d.ts.map +1 -1
- package/dist/roguelike/Targeting.js +53 -1
- package/dist/roguelike/Targeting.js.map +1 -1
- package/dist/roguelike/TriggerTracker.d.ts +46 -0
- package/dist/roguelike/TriggerTracker.d.ts.map +1 -0
- package/dist/roguelike/TriggerTracker.js +59 -0
- package/dist/roguelike/TriggerTracker.js.map +1 -0
- package/dist/roguelike/generate.d.ts +90 -1
- package/dist/roguelike/generate.d.ts.map +1 -1
- package/dist/roguelike/generate.js +79 -11
- package/dist/roguelike/generate.js.map +1 -1
- package/dist/roguelike/index.d.ts +17 -5
- 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/Collision.d.ts +19 -0
- package/dist/rpg/Collision.d.ts.map +1 -1
- package/dist/rpg/Collision.js +19 -0
- package/dist/rpg/Collision.js.map +1 -1
- package/dist/rpg/Event.d.ts +17 -0
- package/dist/rpg/Event.d.ts.map +1 -1
- package/dist/rpg/Event.js +17 -0
- package/dist/rpg/Event.js.map +1 -1
- package/dist/rpg/EventRunner.d.ts +44 -8
- package/dist/rpg/EventRunner.d.ts.map +1 -1
- package/dist/rpg/EventRunner.js +15 -13
- package/dist/rpg/EventRunner.js.map +1 -1
- package/dist/rpg/FreeMover.d.ts +16 -2
- package/dist/rpg/FreeMover.d.ts.map +1 -1
- package/dist/rpg/FreeMover.js +19 -5
- package/dist/rpg/FreeMover.js.map +1 -1
- package/dist/rpg/GameState.d.ts +14 -0
- package/dist/rpg/GameState.d.ts.map +1 -1
- package/dist/rpg/GameState.js +14 -0
- package/dist/rpg/GameState.js.map +1 -1
- package/dist/rpg/GridMover.d.ts +16 -2
- package/dist/rpg/GridMover.d.ts.map +1 -1
- package/dist/rpg/GridMover.js +19 -5
- package/dist/rpg/GridMover.js.map +1 -1
- package/dist/rpg/Marshal.d.ts +16 -0
- package/dist/rpg/Marshal.d.ts.map +1 -1
- package/dist/rpg/Marshal.js +16 -0
- package/dist/rpg/Marshal.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 +21 -1
- package/dist/rpg/Quest.d.ts.map +1 -1
- package/dist/rpg/Quest.js +21 -1
- package/dist/rpg/Quest.js.map +1 -1
- package/dist/rpg/automap.d.ts +39 -2
- package/dist/rpg/automap.d.ts.map +1 -1
- package/dist/rpg/automap.js +24 -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/Runtime.d.ts +98 -0
- package/dist/simulation/Runtime.d.ts.map +1 -0
- package/dist/simulation/Runtime.js +91 -0
- package/dist/simulation/Runtime.js.map +1 -0
- package/dist/simulation/Scenario.d.ts +15 -0
- package/dist/simulation/Scenario.d.ts.map +1 -1
- package/dist/simulation/Scenario.js +15 -0
- package/dist/simulation/Scenario.js.map +1 -1
- package/dist/simulation/Turns.d.ts +11 -0
- package/dist/simulation/Turns.d.ts.map +1 -1
- package/dist/simulation/Turns.js +11 -0
- package/dist/simulation/Turns.js.map +1 -1
- package/dist/simulation/index.d.ts +10 -0
- package/dist/simulation/index.d.ts.map +1 -1
- package/dist/simulation/index.js +8 -0
- package/dist/simulation/index.js.map +1 -1
- 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 +15 -17
- 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/pixi-interop.d.ts +13 -0
- package/dist/two-d/pixi-interop.d.ts.map +1 -0
- package/dist/two-d/pixi-interop.js +12 -0
- package/dist/two-d/pixi-interop.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/{render → two-d/render}/AnimatedSprite.d.ts +4 -4
- 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/{render → two-d/render}/ColorTransformBatcher.d.ts +8 -3
- package/dist/two-d/render/ColorTransformBatcher.d.ts.map +1 -0
- package/dist/{render → two-d/render}/ColorTransformBatcher.js +11 -5
- package/dist/two-d/render/ColorTransformBatcher.js.map +1 -0
- package/dist/{render → two-d/render}/LayeredSprite.d.ts +3 -3
- 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/Shape2D.d.ts +40 -0
- package/dist/two-d/render/Shape2D.d.ts.map +1 -0
- package/dist/two-d/render/Shape2D.js +40 -0
- package/dist/two-d/render/Shape2D.js.map +1 -0
- package/dist/{render → two-d/render}/SpriteSheet.d.ts +9 -6
- package/dist/two-d/render/SpriteSheet.d.ts.map +1 -0
- package/dist/{render → two-d/render}/SpriteSheet.js +8 -1
- package/dist/two-d/render/SpriteSheet.js.map +1 -0
- package/dist/two-d/render/StatusVisuals.d.ts.map +1 -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/{render → two-d/render}/TintedSprite.d.ts +3 -2
- package/dist/two-d/render/TintedSprite.d.ts.map +1 -0
- package/dist/{render → two-d/render}/TintedSprite.js +5 -1
- package/dist/two-d/render/TintedSprite.js.map +1 -0
- package/dist/two-d/render/Types2D.d.ts +27 -0
- package/dist/two-d/render/Types2D.d.ts.map +1 -0
- package/dist/two-d/render/Types2D.js +6 -0
- package/dist/two-d/render/Types2D.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 +9 -0
- package/dist/two-d/render/index.d.ts.map +1 -0
- package/dist/{render → two-d/render}/index.js +5 -0
- package/dist/two-d/render/index.js.map +1 -0
- package/dist/{stage → two-d/stage}/DialogueStage.d.ts +16 -0
- package/dist/two-d/stage/DialogueStage.d.ts.map +1 -0
- package/dist/{stage → two-d/stage}/DialogueStage.js +17 -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/{stage → two-d/stage}/script.d.ts +20 -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/{stage → two-d/stage}/twee.d.ts +11 -0
- package/dist/two-d/stage/twee.d.ts.map +1 -0
- package/dist/{stage → two-d/stage}/twee.js +11 -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 +11 -4
- package/dist/two-d/ui/Button.d.ts.map +1 -0
- package/dist/{ui → two-d/ui}/Button.js +20 -4
- 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 +3 -2
- package/dist/two-d/ui/IconGrid.d.ts.map +1 -0
- package/dist/two-d/ui/IconGrid.js.map +1 -0
- package/dist/two-d/ui/Label.d.ts.map +1 -0
- package/dist/two-d/ui/Label.js.map +1 -0
- package/dist/{ui → two-d/ui}/ListView.d.ts +3 -2
- 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/{ui → two-d/ui}/NinePatch.d.ts +3 -2
- package/dist/two-d/ui/NinePatch.d.ts.map +1 -0
- package/dist/{ui → two-d/ui}/NinePatch.js +1 -1
- 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.map +1 -0
- package/dist/two-d/ui/StatsScreen.js.map +1 -0
- package/dist/{ui → two-d/ui}/Toast.d.ts +2 -1
- 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 +4 -0
- package/dist/two-d/ui/index.d.ts.map +1 -0
- package/dist/{ui → two-d/ui}/index.js +2 -0
- package/dist/two-d/ui/index.js.map +1 -0
- package/dist/{ui → two-d/ui}/theme.d.ts +4 -4
- 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.d.ts +12 -0
- package/dist/world/Encounters.d.ts.map +1 -1
- package/dist/world/Encounters.js +1 -1
- package/dist/world/Encounters.js.map +1 -1
- package/dist/world/Environment.d.ts +27 -4
- package/dist/world/Environment.d.ts.map +1 -1
- package/dist/world/Environment.js +33 -10
- package/dist/world/Environment.js.map +1 -1
- package/dist/world/Overworld.d.ts +14 -0
- package/dist/world/Overworld.d.ts.map +1 -1
- package/dist/world/Overworld.js +14 -0
- package/dist/world/Overworld.js.map +1 -1
- package/dist/world/TurnClock.d.ts +16 -0
- package/dist/world/TurnClock.d.ts.map +1 -1
- package/dist/world/TurnClock.js +16 -0
- package/dist/world/TurnClock.js.map +1 -1
- package/dist/world/World.d.ts +14 -0
- package/dist/world/World.d.ts.map +1 -1
- package/dist/world/World.js +14 -0
- package/dist/world/World.js.map +1 -1
- package/package.json +228 -147
- 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/StatusVisuals.d.ts.map +0 -1
- package/dist/render/StatusVisuals.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/StatsScreen.d.ts.map +0 -1
- package/dist/ui/StatsScreen.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.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}/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}/StatusVisuals.d.ts +0 -0
- /package/dist/{render → two-d/render}/StatusVisuals.js +0 -0
- /package/dist/{render → two-d/render}/TileMap.d.ts +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}/index.d.ts +0 -0
- /package/dist/{stage → two-d/stage}/index.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}/Label.d.ts +0 -0
- /package/dist/{ui → two-d/ui}/Label.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}/StatsScreen.d.ts +0 -0
- /package/dist/{ui → two-d/ui}/StatsScreen.js +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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Targeting.d.ts","sourceRoot":"","sources":["../../src/roguelike/Targeting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;;;;;;;GAQG;AACH,MAAM,MAAM,SAAS,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnC,MAAM,WAAW,gBAAgB;IAChC,2FAA2F;IAC3F,KAAK,EAAE,MAAM,CAAC;IAEd,6FAA6F;IAC7F,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED
|
|
1
|
+
{"version":3,"file":"Targeting.d.ts","sourceRoot":"","sources":["../../src/roguelike/Targeting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;;;;;;;GAQG;AACH,MAAM,MAAM,SAAS,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnC,MAAM,WAAW,gBAAgB;IAChC,2FAA2F;IAC3F,KAAK,EAAE,MAAM,CAAC;IAEd,6FAA6F;IAC7F,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAE1D;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,EAAE,CA2BtD;AAED,8FAA8F;AAC9F,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAM1E;AAED,gGAAgG;AAChG,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAItG;AAED,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,EAAE,CAuBhF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,CAoB3E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,SAAS,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,CAsB5G;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,SAAS;IACzB,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,SAAS,EAAE,EAAE,MAAM,SAAI,GAAG,MAAM,CAKjG;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAGrF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,CAQjG"}
|
|
@@ -1,4 +1,23 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* The straight-line ruler distance a roguelike uses: diagonals cost the same as a step.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { chebyshevDistance, traceLine, hasLineOfSight, canTarget, resolveArea, Level, WALL, FLOOR } from '@datamoc/mw_games/roguelike';
|
|
7
|
+
*
|
|
8
|
+
* const level = new Level(20, 20, [WALL, FLOOR], 1); // an open floor
|
|
9
|
+
* const origin = { x: 2, y: 2 };
|
|
10
|
+
* const target = { x: 8, y: 5 };
|
|
11
|
+
*
|
|
12
|
+
* chebyshevDistance(origin, target); // 6
|
|
13
|
+
* traceLine(origin, target); // every cell the shot crosses
|
|
14
|
+
* hasLineOfSight(level, origin, target); // true - nothing blocks it
|
|
15
|
+
*
|
|
16
|
+
* if (canTarget(level, origin, target, { range: 10 })) {
|
|
17
|
+
* const hit = resolveArea(origin, target, { kind: 'burst', radius: 2 });
|
|
18
|
+
* }
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
2
21
|
export function chebyshevDistance(a, b) {
|
|
3
22
|
return Math.max(Math.abs(a.x - b.x), Math.abs(a.y - b.y));
|
|
4
23
|
}
|
|
@@ -79,6 +98,19 @@ export function resolveArea(origin, target, shape) {
|
|
|
79
98
|
* nearest of the 8 directions, the length is the distance aimed, and step `i` of `length`
|
|
80
99
|
* spans `round(i / length * width)` cells to each side of the centre line. A width of 0
|
|
81
100
|
* is a single-file beam, the same cells `line` would trace along that snapped direction.
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```ts
|
|
104
|
+
* import { coneCells, chainTargets, knockbackPath, Level, WALL, FLOOR } from '@datamoc/mw_games/roguelike';
|
|
105
|
+
*
|
|
106
|
+
* const breath = coneCells({ x: 5, y: 5 }, { x: 5, y: 0 }, 3); // a dragon's breath, aimed north
|
|
107
|
+
*
|
|
108
|
+
* const monsters = [{ x: 5, y: 4 }, { x: 5, y: 3 }, { x: 6, y: 2 }];
|
|
109
|
+
* const arc = chainTargets(monsters, { x: 5, y: 5 }, 3, 2); // a lightning bolt hopping between them
|
|
110
|
+
*
|
|
111
|
+
* const level = new Level(20, 20, [WALL, FLOOR], 1);
|
|
112
|
+
* const shovedTo = knockbackPath(level, { x: 5, y: 5 }, { x: 1, y: 0 }, 3); // shoved 3 cells east
|
|
113
|
+
* ```
|
|
82
114
|
*/
|
|
83
115
|
export function coneCells(origin, target, width) {
|
|
84
116
|
const dx = target.x - origin.x;
|
|
@@ -131,6 +163,26 @@ export function chainTargets(candidates, origin, jumps, range) {
|
|
|
131
163
|
}
|
|
132
164
|
return chain;
|
|
133
165
|
}
|
|
166
|
+
export function rangeMultiplier(distance, bands, beyond = 1) {
|
|
167
|
+
for (const band of bands) {
|
|
168
|
+
if (distance <= band.max)
|
|
169
|
+
return band.multiplier;
|
|
170
|
+
}
|
|
171
|
+
return beyond;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* A per-target multiplier for an area effect hitting several targets at once, stepping down
|
|
175
|
+
* (or up) by how many targets were already resolved before this one - "full damage to the
|
|
176
|
+
* first target hit, half to every one after" is `areaFalloffMultiplier(index, [1, 0.5])`.
|
|
177
|
+
* `index` is the target's zero-based order among everyone the area shape hit (`resolveArea`'s
|
|
178
|
+
* own returned order is a natural source); an index past the end of `steps` repeats the last
|
|
179
|
+
* step rather than falling back to full strength.
|
|
180
|
+
*/
|
|
181
|
+
export function areaFalloffMultiplier(index, steps) {
|
|
182
|
+
if (steps.length === 0)
|
|
183
|
+
return 1;
|
|
184
|
+
return steps[Math.min(index, steps.length - 1)];
|
|
185
|
+
}
|
|
134
186
|
/**
|
|
135
187
|
* The cells something shoved from `from` along `direction` (a unit step, one of the 8)
|
|
136
188
|
* travels: every passable cell up to `distance`, stopping before the first impassable
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Targeting.js","sourceRoot":"","sources":["../../src/roguelike/Targeting.ts"],"names":[],"mappings":"AA0BA
|
|
1
|
+
{"version":3,"file":"Targeting.js","sourceRoot":"","sources":["../../src/roguelike/Targeting.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Counts qualifying events (a landed hit, a heal, a kill) toward a streak, but restarts the
|
|
3
|
+
* streak once more than `window` turns pass without a qualifying event - the shape every
|
|
4
|
+
* "combo", "kill streak", or "stays hidden as long as you keep landing sneak attacks" talent
|
|
5
|
+
* proc shares. `mwg` tracks only the streak and its turn-window; what counts as a qualifying
|
|
6
|
+
* event, and what a streak length unlocks, stay the game's own rule, fired from `trigger`'s
|
|
7
|
+
* own returned count.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { TriggerTracker } from '@datamoc/mw_games/roguelike';
|
|
12
|
+
*
|
|
13
|
+
* const combo = new TriggerTracker(2); // a hit must land within 2 turns of the last
|
|
14
|
+
* combo.trigger(1); // streak: 1
|
|
15
|
+
* combo.trigger(2); // streak: 2 - within the window
|
|
16
|
+
* combo.trigger(10); // streak restarts at 1 - the window lapsed
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare class TriggerTracker {
|
|
20
|
+
private readonly window;
|
|
21
|
+
private streak;
|
|
22
|
+
private lastTurn;
|
|
23
|
+
constructor(window: number);
|
|
24
|
+
/** the current streak length; 0 once the window has lapsed with nothing recorded */
|
|
25
|
+
get count(): number;
|
|
26
|
+
/**
|
|
27
|
+
* Records a qualifying event on `turn`, extending the streak when it falls within `window`
|
|
28
|
+
* turns of the last one, or restarting it at 1 otherwise.
|
|
29
|
+
*
|
|
30
|
+
* @returns the streak length after this event
|
|
31
|
+
*/
|
|
32
|
+
trigger(turn: number): number;
|
|
33
|
+
/** true while fewer than `window` turns have passed since the last trigger, as of `turn` */
|
|
34
|
+
isActive(turn: number): boolean;
|
|
35
|
+
/** ends the streak immediately - a missed attack, breaking stealth - without waiting out the window */
|
|
36
|
+
reset(): void;
|
|
37
|
+
toJSON(): {
|
|
38
|
+
streak: number;
|
|
39
|
+
lastTurn: number;
|
|
40
|
+
};
|
|
41
|
+
static fromJSON(window: number, data: {
|
|
42
|
+
streak: number;
|
|
43
|
+
lastTurn: number;
|
|
44
|
+
}): TriggerTracker;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=TriggerTracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TriggerTracker.d.ts","sourceRoot":"","sources":["../../src/roguelike/TriggerTracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,cAAc;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAa;IAE7B,YAAY,MAAM,EAAE,MAAM,EAEzB;IAED,oFAAoF;IACpF,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI5B;IAED,4FAA4F;IAC5F,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9B;IAED,uGAAuG;IACvG,KAAK,IAAI,IAAI,CAGZ;IAED,MAAM,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAE7C;IAED,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,cAAc,CAK1F;CACD"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Counts qualifying events (a landed hit, a heal, a kill) toward a streak, but restarts the
|
|
3
|
+
* streak once more than `window` turns pass without a qualifying event - the shape every
|
|
4
|
+
* "combo", "kill streak", or "stays hidden as long as you keep landing sneak attacks" talent
|
|
5
|
+
* proc shares. `mwg` tracks only the streak and its turn-window; what counts as a qualifying
|
|
6
|
+
* event, and what a streak length unlocks, stay the game's own rule, fired from `trigger`'s
|
|
7
|
+
* own returned count.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { TriggerTracker } from '@datamoc/mw_games/roguelike';
|
|
12
|
+
*
|
|
13
|
+
* const combo = new TriggerTracker(2); // a hit must land within 2 turns of the last
|
|
14
|
+
* combo.trigger(1); // streak: 1
|
|
15
|
+
* combo.trigger(2); // streak: 2 - within the window
|
|
16
|
+
* combo.trigger(10); // streak restarts at 1 - the window lapsed
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export class TriggerTracker {
|
|
20
|
+
constructor(window) {
|
|
21
|
+
this.streak = 0;
|
|
22
|
+
this.lastTurn = -Infinity;
|
|
23
|
+
this.window = window;
|
|
24
|
+
}
|
|
25
|
+
/** the current streak length; 0 once the window has lapsed with nothing recorded */
|
|
26
|
+
get count() {
|
|
27
|
+
return this.streak;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Records a qualifying event on `turn`, extending the streak when it falls within `window`
|
|
31
|
+
* turns of the last one, or restarting it at 1 otherwise.
|
|
32
|
+
*
|
|
33
|
+
* @returns the streak length after this event
|
|
34
|
+
*/
|
|
35
|
+
trigger(turn) {
|
|
36
|
+
this.streak = turn - this.lastTurn <= this.window ? this.streak + 1 : 1;
|
|
37
|
+
this.lastTurn = turn;
|
|
38
|
+
return this.streak;
|
|
39
|
+
}
|
|
40
|
+
/** true while fewer than `window` turns have passed since the last trigger, as of `turn` */
|
|
41
|
+
isActive(turn) {
|
|
42
|
+
return turn - this.lastTurn <= this.window;
|
|
43
|
+
}
|
|
44
|
+
/** ends the streak immediately - a missed attack, breaking stealth - without waiting out the window */
|
|
45
|
+
reset() {
|
|
46
|
+
this.streak = 0;
|
|
47
|
+
this.lastTurn = -Infinity;
|
|
48
|
+
}
|
|
49
|
+
toJSON() {
|
|
50
|
+
return { streak: this.streak, lastTurn: this.lastTurn };
|
|
51
|
+
}
|
|
52
|
+
static fromJSON(window, data) {
|
|
53
|
+
const tracker = new TriggerTracker(window);
|
|
54
|
+
tracker.streak = data.streak;
|
|
55
|
+
tracker.lastTurn = data.lastTurn;
|
|
56
|
+
return tracker;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=TriggerTracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TriggerTracker.js","sourceRoot":"","sources":["../../src/roguelike/TriggerTracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,cAAc;IAK1B,YAAY,MAAc;QAHlB,WAAM,GAAG,CAAC,CAAC;QACX,aAAQ,GAAG,CAAC,QAAQ,CAAC;QAG5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAED,oFAAoF;IACpF,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,IAAY;QACnB,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,4FAA4F;IAC5F,QAAQ,CAAC,IAAY;QACpB,OAAO,IAAI,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC;IAC5C,CAAC;IAED,uGAAuG;IACvG,KAAK;QACJ,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC;IAC3B,CAAC;IAED,MAAM;QACL,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,MAAc,EAAE,IAA0C;QACzE,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;QAC3C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC7B,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACjC,OAAO,OAAO,CAAC;IAChB,CAAC;CACD"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Level, type Rect, type TerrainKind } from './Level.ts';
|
|
2
|
+
import { type RoomBuilder } from './RoomBuilders.ts';
|
|
2
3
|
/**
|
|
3
4
|
* Rooms joined by corridors.
|
|
4
5
|
*
|
|
@@ -31,10 +32,98 @@ export interface DungeonOptions {
|
|
|
31
32
|
floor?: number;
|
|
32
33
|
/** extra terrain kinds beyond wall/floor, appended after them - a game's own trap or door ids */
|
|
33
34
|
kinds?: TerrainKind[];
|
|
35
|
+
/**
|
|
36
|
+
* Regional generation callbacks, fired as the pipeline reaches each stage - the seam a
|
|
37
|
+
* game hangs hand-placed rooms, branch entrances, wells, plants, statues, chasms, doors
|
|
38
|
+
* and traps from, without forking the generator itself. `mwg` calls these; it never
|
|
39
|
+
* decides what a game does inside one.
|
|
40
|
+
*/
|
|
41
|
+
hooks?: DungeonGenerationHooks;
|
|
42
|
+
/**
|
|
43
|
+
* Room interiors to compose the floor from, picked per room by weight and size fit.
|
|
44
|
+
*
|
|
45
|
+
* Omit it and every room is a plain filled rectangle, exactly as before builders existed;
|
|
46
|
+
* a room no listed builder fits falls back to that same plain rectangle rather than being
|
|
47
|
+
* left as solid rock, since it has already been placed and joined by a corridor.
|
|
48
|
+
*/
|
|
49
|
+
builders?: readonly RoomBuilder[];
|
|
50
|
+
}
|
|
51
|
+
export interface DungeonGenerationHooks {
|
|
52
|
+
/** fired once a room is placed and filled, before any corridor touches it */
|
|
53
|
+
onRoomPlaced?(room: Rect, index: number): void;
|
|
54
|
+
/** fired after a corridor is carved between two rooms */
|
|
55
|
+
onCorridorCarved?(edge: RoomEdge, from: Rect, to: Rect): void;
|
|
56
|
+
}
|
|
57
|
+
/** a corridor between two rooms, by index into the level's own `rooms` array */
|
|
58
|
+
export interface RoomEdge {
|
|
59
|
+
a: number;
|
|
60
|
+
b: number;
|
|
61
|
+
/** false for the backbone chain that guarantees reachability; true for an added loop */
|
|
62
|
+
extra: boolean;
|
|
34
63
|
}
|
|
64
|
+
export interface DungeonResult {
|
|
65
|
+
level: Level;
|
|
66
|
+
/** every corridor carved, backbone first then loops, in carve order */
|
|
67
|
+
graph: RoomEdge[];
|
|
68
|
+
/** placement attempts that were rejected (overlap or off-map) before every room resolved */
|
|
69
|
+
retries: number;
|
|
70
|
+
/**
|
|
71
|
+
* Which builder carved each room, by the same index the room has in `level.rooms`.
|
|
72
|
+
*
|
|
73
|
+
* Always populated, so a floor generated with no `builders` reads as every room being
|
|
74
|
+
* `'hall'` rather than as an absent field a parity trace would have to special-case.
|
|
75
|
+
*/
|
|
76
|
+
roomBuilders: string[];
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* The two terrain kinds every dungeon needs: wall (index 0) and floor (index 1). A game
|
|
80
|
+
* appends its own kinds (traps, doors) after these via `DungeonOptions.kinds`.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```ts
|
|
84
|
+
* import { DUNGEON_KINDS } from '@datamoc/mw_games/roguelike';
|
|
85
|
+
*
|
|
86
|
+
* const kinds = [...DUNGEON_KINDS, { passable: false, transparent: true }]; // + a window
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
35
89
|
export declare const DUNGEON_KINDS: TerrainKind[];
|
|
90
|
+
/**
|
|
91
|
+
* The full pipeline result: the level, its room graph, and how many placement attempts were
|
|
92
|
+
* rejected along the way. `generateDungeon` is the same pipeline, returning only the level,
|
|
93
|
+
* for a caller that has no use for the graph or retry count.
|
|
94
|
+
*/
|
|
95
|
+
export declare function generateDungeonGraph(options: DungeonOptions): DungeonResult;
|
|
96
|
+
/**
|
|
97
|
+
* Rooms joined by corridors, seeded and reproducible.
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```ts
|
|
101
|
+
* import { generateDungeon, generateDungeonGraph } from '@datamoc/mw_games/roguelike';
|
|
102
|
+
* import { Random } from '@datamoc/mw_games/core';
|
|
103
|
+
*
|
|
104
|
+
* Random.push(12345); // the same seed always produces the same floor
|
|
105
|
+
* const level = generateDungeon({ width: 60, height: 40, rooms: 12 });
|
|
106
|
+
* Random.pop();
|
|
107
|
+
*
|
|
108
|
+
* // generateDungeonGraph is the same pipeline, also returning the room graph and retries
|
|
109
|
+
* const { level: level2, graph, retries, roomBuilders } = generateDungeonGraph({ width: 60, height: 40 });
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
36
112
|
export declare function generateDungeon(options: DungeonOptions): Level;
|
|
37
|
-
/**
|
|
113
|
+
/**
|
|
114
|
+
* A random passable cell, avoiding any listed as taken.
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```ts
|
|
118
|
+
* import { generateDungeon, findFreeCell, furthestRoom, rectCenter } from '@datamoc/mw_games/roguelike';
|
|
119
|
+
*
|
|
120
|
+
* const level = generateDungeon({ width: 40, height: 30 });
|
|
121
|
+
* const start = rectCenter(level.rooms[0]);
|
|
122
|
+
*
|
|
123
|
+
* const stairsRoom = furthestRoom(level, start); // put the exit far from the entrance
|
|
124
|
+
* const monsterCell = findFreeCell(level, new Set([level.index(start.x, start.y)]));
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
38
127
|
export declare function findFreeCell(level: Level, taken?: ReadonlySet<number>): number | null;
|
|
39
128
|
/** the room furthest from `from`, by straight-line distance between centres */
|
|
40
129
|
export declare function furthestRoom(level: Level, from: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/roguelike/generate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAA4B,KAAK,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/roguelike/generate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAA4B,KAAK,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAC1F,OAAO,EAA4B,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE/E;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IAEf,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,iGAAiG;IACjG,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IAEtB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,sBAAsB,CAAC;IAE/B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,sBAAsB;IACtC,6EAA6E;IAC7E,YAAY,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/C,yDAAyD;IACzD,gBAAgB,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,CAAC;CAC9D;AAED,gFAAgF;AAChF,MAAM,WAAW,QAAQ;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IAEV,wFAAwF;IACxF,KAAK,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC7B,KAAK,EAAE,KAAK,CAAC;IAEb,uEAAuE;IACvE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAElB,4FAA4F;IAC5F,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,YAAY,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,EAAE,WAAW,EAGtC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,GAAG,aAAa,CA4E3E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,cAAc,GAAG,KAAK,CAE9D;AA0CD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAE,WAAW,CAAC,MAAM,CAAa,GAAG,MAAM,GAAG,IAAI,CAGhG;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GAAG,IAAI,CActF"}
|
|
@@ -1,13 +1,33 @@
|
|
|
1
1
|
import * as Random from '../core/Random.js';
|
|
2
2
|
import { Level, rectCenter, rectsOverlap } from './Level.js';
|
|
3
|
+
import { hallBuilder, pickBuilder } from './RoomBuilders.js';
|
|
4
|
+
/**
|
|
5
|
+
* The two terrain kinds every dungeon needs: wall (index 0) and floor (index 1). A game
|
|
6
|
+
* appends its own kinds (traps, doors) after these via `DungeonOptions.kinds`.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { DUNGEON_KINDS } from '@datamoc/mw_games/roguelike';
|
|
11
|
+
*
|
|
12
|
+
* const kinds = [...DUNGEON_KINDS, { passable: false, transparent: true }]; // + a window
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
3
15
|
export const DUNGEON_KINDS = [
|
|
4
16
|
{ passable: false, transparent: false }, //0 wall
|
|
5
17
|
{ passable: true, transparent: true }, //1 floor
|
|
6
18
|
];
|
|
7
|
-
|
|
8
|
-
|
|
19
|
+
/**
|
|
20
|
+
* The full pipeline result: the level, its room graph, and how many placement attempts were
|
|
21
|
+
* rejected along the way. `generateDungeon` is the same pipeline, returning only the level,
|
|
22
|
+
* for a caller that has no use for the graph or retry count.
|
|
23
|
+
*/
|
|
24
|
+
export function generateDungeonGraph(options) {
|
|
25
|
+
const { width, height, rooms: roomAttempts = 14, minRoomSize = 4, maxRoomSize = 10, extraCorridors = 3, wall = 0, floor = 1, kinds = [], hooks, builders, } = options;
|
|
9
26
|
const level = new Level(width, height, [...DUNGEON_KINDS, ...kinds], wall);
|
|
10
27
|
const placed = [];
|
|
28
|
+
const graph = [];
|
|
29
|
+
const roomBuilders = [];
|
|
30
|
+
let retries = 0;
|
|
11
31
|
//rejection sampling: try a spot, keep it if it clears the others. simple, and it fails
|
|
12
32
|
//gracefully: a crowded level just ends up with fewer rooms rather than looping forever
|
|
13
33
|
for (let attempt = 0; attempt < roomAttempts * 6 && placed.length < roomAttempts; attempt++) {
|
|
@@ -17,27 +37,62 @@ export function generateDungeon(options) {
|
|
|
17
37
|
const left = Random.int(1, Math.max(2, width - w - 1));
|
|
18
38
|
const top = Random.int(1, Math.max(2, height - h - 1));
|
|
19
39
|
const room = { left, top, right: left + w - 1, bottom: top + h - 1 };
|
|
20
|
-
if (room.right >= width - 1 || room.bottom >= height - 1)
|
|
40
|
+
if (room.right >= width - 1 || room.bottom >= height - 1) {
|
|
41
|
+
retries++;
|
|
21
42
|
continue;
|
|
43
|
+
}
|
|
22
44
|
//a two-cell margin, so rooms never share a wall and corridors have somewhere to run
|
|
23
|
-
if (placed.some((other) => rectsOverlap(room, other, 2)))
|
|
45
|
+
if (placed.some((other) => rectsOverlap(room, other, 2))) {
|
|
46
|
+
retries++;
|
|
24
47
|
continue;
|
|
48
|
+
}
|
|
25
49
|
placed.push(room);
|
|
26
|
-
|
|
50
|
+
//a builder carves the interior; with none supplied (or none that fits) this is the
|
|
51
|
+
//plain filled rectangle the generator always did
|
|
52
|
+
const builder = (builders?.length ? pickBuilder(builders, room) : null) ?? hallBuilder;
|
|
53
|
+
builder.paint(level, room, floor);
|
|
54
|
+
roomBuilders.push(builder.id);
|
|
55
|
+
hooks?.onRoomPlaced?.(room, placed.length - 1);
|
|
27
56
|
}
|
|
28
57
|
//join each room to the previous one, which guarantees every room is reachable
|
|
29
58
|
for (let i = 1; i < placed.length; i++) {
|
|
30
59
|
carveCorridor(level, rectCenter(placed[i - 1]), rectCenter(placed[i]), floor);
|
|
60
|
+
const edge = { a: i - 1, b: i, extra: false };
|
|
61
|
+
graph.push(edge);
|
|
62
|
+
hooks?.onCorridorCarved?.(edge, placed[i - 1], placed[i]);
|
|
31
63
|
}
|
|
32
64
|
//then a few extra links, so the map has loops instead of being a tree
|
|
33
65
|
for (let i = 0; i < extraCorridors && placed.length > 2; i++) {
|
|
34
|
-
const a =
|
|
35
|
-
const b =
|
|
36
|
-
if (a !== b)
|
|
37
|
-
carveCorridor(level, rectCenter(a), rectCenter(b), floor);
|
|
66
|
+
const a = Random.int(placed.length);
|
|
67
|
+
const b = Random.int(placed.length);
|
|
68
|
+
if (a !== b) {
|
|
69
|
+
carveCorridor(level, rectCenter(placed[a]), rectCenter(placed[b]), floor);
|
|
70
|
+
const edge = { a, b, extra: true };
|
|
71
|
+
graph.push(edge);
|
|
72
|
+
hooks?.onCorridorCarved?.(edge, placed[a], placed[b]);
|
|
73
|
+
}
|
|
38
74
|
}
|
|
39
75
|
level.rooms = placed;
|
|
40
|
-
return level;
|
|
76
|
+
return { level, graph, retries, roomBuilders };
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Rooms joined by corridors, seeded and reproducible.
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```ts
|
|
83
|
+
* import { generateDungeon, generateDungeonGraph } from '@datamoc/mw_games/roguelike';
|
|
84
|
+
* import { Random } from '@datamoc/mw_games/core';
|
|
85
|
+
*
|
|
86
|
+
* Random.push(12345); // the same seed always produces the same floor
|
|
87
|
+
* const level = generateDungeon({ width: 60, height: 40, rooms: 12 });
|
|
88
|
+
* Random.pop();
|
|
89
|
+
*
|
|
90
|
+
* // generateDungeonGraph is the same pipeline, also returning the room graph and retries
|
|
91
|
+
* const { level: level2, graph, retries, roomBuilders } = generateDungeonGraph({ width: 60, height: 40 });
|
|
92
|
+
* ```
|
|
93
|
+
*/
|
|
94
|
+
export function generateDungeon(options) {
|
|
95
|
+
return generateDungeonGraph(options).level;
|
|
41
96
|
}
|
|
42
97
|
/**
|
|
43
98
|
* An L-shaped corridor between two points.
|
|
@@ -66,7 +121,20 @@ function carveLine(level, fromCoord, toCoord, fixed, horizontal, floor) {
|
|
|
66
121
|
level.set(x, y, floor);
|
|
67
122
|
}
|
|
68
123
|
}
|
|
69
|
-
/**
|
|
124
|
+
/**
|
|
125
|
+
* A random passable cell, avoiding any listed as taken.
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```ts
|
|
129
|
+
* import { generateDungeon, findFreeCell, furthestRoom, rectCenter } from '@datamoc/mw_games/roguelike';
|
|
130
|
+
*
|
|
131
|
+
* const level = generateDungeon({ width: 40, height: 30 });
|
|
132
|
+
* const start = rectCenter(level.rooms[0]);
|
|
133
|
+
*
|
|
134
|
+
* const stairsRoom = furthestRoom(level, start); // put the exit far from the entrance
|
|
135
|
+
* const monsterCell = findFreeCell(level, new Set([level.index(start.x, start.y)]));
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
70
138
|
export function findFreeCell(level, taken = new Set()) {
|
|
71
139
|
const free = level.passableCells().filter((cell) => !taken.has(cell));
|
|
72
140
|
return free.length > 0 ? free[Random.int(free.length)] : null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/roguelike/generate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAA+B,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/roguelike/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +1,37 @@
|
|
|
1
1
|
export { Level, WALL, FLOOR, rectCenter, rectsOverlap } from './Level.ts';
|
|
2
|
-
export type { TerrainKind, Rect } from './Level.ts';
|
|
3
|
-
export { generateDungeon, findFreeCell, furthestRoom, DUNGEON_KINDS } from './generate.ts';
|
|
4
|
-
export type { DungeonOptions } from './generate.ts';
|
|
2
|
+
export type { TerrainKind, Rect, LevelShape } from './Level.ts';
|
|
3
|
+
export { generateDungeon, generateDungeonGraph, findFreeCell, furthestRoom, DUNGEON_KINDS } from './generate.ts';
|
|
4
|
+
export type { DungeonOptions, DungeonGenerationHooks, RoomEdge, DungeonResult } from './generate.ts';
|
|
5
|
+
export { hallBuilder, eligibleBuilders, pickBuilder } from './RoomBuilders.ts';
|
|
6
|
+
export type { RoomBuilder } from './RoomBuilders.ts';
|
|
7
|
+
export { FeatureLayer } from './Features.ts';
|
|
8
|
+
export type { CellFeatureDef } from './Features.ts';
|
|
9
|
+
export { rollRoster } from './ContentRoll.ts';
|
|
10
|
+
export type { RosterEntry, RareEntry, RollOutcome, RollTraceEntry, ContentRollResult } from './ContentRoll.ts';
|
|
11
|
+
export { compareDungeonArtifacts, checkDeterminism } from './DungeonParity.ts';
|
|
12
|
+
export type { DungeonArtifacts, DungeonParityStage, DungeonMismatch } from './DungeonParity.ts';
|
|
5
13
|
export { FieldOfView } from './FieldOfView.ts';
|
|
6
14
|
export type { HeightSight } from './FieldOfView.ts';
|
|
7
15
|
export { Elevation } from './Elevation.ts';
|
|
8
16
|
export { Pathfinder, neighbourOffsets } from './Pathfinder.ts';
|
|
9
17
|
export type { Step, PathOptions } from './Pathfinder.ts';
|
|
10
18
|
export { Scheduler } from './Scheduler.ts';
|
|
11
|
-
export type { Actor } from './Scheduler.ts';
|
|
19
|
+
export type { Actor, SchedulerSnapshot } from './Scheduler.ts';
|
|
12
20
|
export { decideMonsterAI } from './MonsterAI.ts';
|
|
13
21
|
export type { AIState, AIDecision, MonsterAIOptions, Disposition } from './MonsterAI.ts';
|
|
14
22
|
export { Secrets } from './Secrets.ts';
|
|
15
23
|
export { Doors } from './Doors.ts';
|
|
16
24
|
export { chebyshevDistance, traceLine, hasLineOfSight, canTarget, resolveArea } from './Targeting.ts';
|
|
17
25
|
export type { AreaShape, TargetingOptions } from './Targeting.ts';
|
|
18
|
-
export { coneCells, chainTargets, knockbackPath } from './Targeting.ts';
|
|
26
|
+
export { coneCells, chainTargets, knockbackPath, rangeMultiplier, areaFalloffMultiplier } from './Targeting.ts';
|
|
27
|
+
export type { RangeBand } from './Targeting.ts';
|
|
19
28
|
export { BossPhases, AbilityCycle } from './Boss.ts';
|
|
20
29
|
export { Blob } from './Blob.ts';
|
|
21
30
|
export { CombatHooks } from './Combat.ts';
|
|
22
31
|
export type { CombatEvent, CombatHook, DamageContext } from './Combat.ts';
|
|
23
32
|
export { Stealth } from './Stealth.ts';
|
|
24
33
|
export type { StealthOptions } from './Stealth.ts';
|
|
34
|
+
export { TriggerTracker } from './TriggerTracker.ts';
|
|
35
|
+
export { MultiStageAbility } from './MultiStageAbility.ts';
|
|
36
|
+
export type { AbilityStage } from './MultiStageAbility.ts';
|
|
25
37
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/roguelike/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1E,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/roguelike/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1E,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACjH,YAAY,EAAE,cAAc,EAAE,sBAAsB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAErG,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC/E,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE/G,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEhG,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC/D,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAE/D,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEzF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACtG,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAChH,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAErD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/roguelike/index.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
export { Level, WALL, FLOOR, rectCenter, rectsOverlap } from './Level.js';
|
|
2
|
-
export { generateDungeon, findFreeCell, furthestRoom, DUNGEON_KINDS } from './generate.js';
|
|
2
|
+
export { generateDungeon, generateDungeonGraph, findFreeCell, furthestRoom, DUNGEON_KINDS } from './generate.js';
|
|
3
|
+
export { hallBuilder, eligibleBuilders, pickBuilder } from './RoomBuilders.js';
|
|
4
|
+
export { FeatureLayer } from './Features.js';
|
|
5
|
+
export { rollRoster } from './ContentRoll.js';
|
|
6
|
+
export { compareDungeonArtifacts, checkDeterminism } from './DungeonParity.js';
|
|
3
7
|
export { FieldOfView } from './FieldOfView.js';
|
|
4
8
|
export { Elevation } from './Elevation.js';
|
|
5
9
|
export { Pathfinder, neighbourOffsets } from './Pathfinder.js';
|
|
@@ -8,9 +12,11 @@ export { decideMonsterAI } from './MonsterAI.js';
|
|
|
8
12
|
export { Secrets } from './Secrets.js';
|
|
9
13
|
export { Doors } from './Doors.js';
|
|
10
14
|
export { chebyshevDistance, traceLine, hasLineOfSight, canTarget, resolveArea } from './Targeting.js';
|
|
11
|
-
export { coneCells, chainTargets, knockbackPath } from './Targeting.js';
|
|
15
|
+
export { coneCells, chainTargets, knockbackPath, rangeMultiplier, areaFalloffMultiplier } from './Targeting.js';
|
|
12
16
|
export { BossPhases, AbilityCycle } from './Boss.js';
|
|
13
17
|
export { Blob } from './Blob.js';
|
|
14
18
|
export { CombatHooks } from './Combat.js';
|
|
15
19
|
export { Stealth } from './Stealth.js';
|
|
20
|
+
export { TriggerTracker } from './TriggerTracker.js';
|
|
21
|
+
export { MultiStageAbility } from './MultiStageAbility.js';
|
|
16
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/roguelike/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1E,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/roguelike/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1E,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGjH,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG/E,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG/E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAG/D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEtG,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAGhH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAErD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/rpg/Collision.d.ts
CHANGED
|
@@ -7,6 +7,25 @@
|
|
|
7
7
|
* `rpg.FreeMover`'s own doc comment: "both own position and animation only, nothing about
|
|
8
8
|
* collision or passability". A game wires this in itself; `FreeMover` stays unopinionated
|
|
9
9
|
* about whether a game wants tile solidity, circle-vs-circle hits, or no collision at all.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* import { aabbOverlap, circleOverlap, circleAabbOverlap, resolveAabbAgainstTiles } from '@datamoc/mw_games/rpg';
|
|
14
|
+
*
|
|
15
|
+
* const player = { x: 10, y: 10, width: 16, height: 16 };
|
|
16
|
+
* const chest = { x: 20, y: 10, width: 16, height: 16 };
|
|
17
|
+
* aabbOverlap(player, chest); // false, not touching yet
|
|
18
|
+
*
|
|
19
|
+
* const hero = { x: 100, y: 100, radius: 8 };
|
|
20
|
+
* const bomb = { x: 105, y: 100, radius: 4 };
|
|
21
|
+
* circleOverlap(hero, bomb); // true - within blast radius
|
|
22
|
+
* circleAabbOverlap(hero, chest); // circle vs box, same idea
|
|
23
|
+
*
|
|
24
|
+
* const resolved = resolveAabbAgainstTiles(player, 5, 0, {
|
|
25
|
+
* tileSize: 32,
|
|
26
|
+
* isSolid: (tx, ty) => tx === 1 && ty === 0, // one solid tile
|
|
27
|
+
* });
|
|
28
|
+
* ```
|
|
10
29
|
*/
|
|
11
30
|
export interface AABB {
|
|
12
31
|
x: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Collision.d.ts","sourceRoot":"","sources":["../../src/rpg/Collision.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"Collision.d.ts","sourceRoot":"","sources":["../../src/rpg/Collision.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,MAAM,WAAW,IAAI;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,MAAM;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAErD;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAK3D;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAMpE;AAED,sDAAsD;AACtD,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;AAElE,MAAM,WAAW,sBAAsB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,SAAS,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAOpI"}
|