@sharpee/world-model 0.9.60-beta
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 +61 -0
- package/dist/behaviors/attack.d.ts +52 -0
- package/dist/behaviors/attack.d.ts.map +1 -0
- package/dist/behaviors/attack.js +161 -0
- package/dist/behaviors/attack.js.map +1 -0
- package/dist/behaviors/behavior.d.ts +67 -0
- package/dist/behaviors/behavior.d.ts.map +1 -0
- package/dist/behaviors/behavior.js +80 -0
- package/dist/behaviors/behavior.js.map +1 -0
- package/dist/behaviors/index.d.ts +21 -0
- package/dist/behaviors/index.d.ts.map +1 -0
- package/dist/behaviors/index.js +39 -0
- package/dist/behaviors/index.js.map +1 -0
- package/dist/capabilities/capability-behavior.d.ts +112 -0
- package/dist/capabilities/capability-behavior.d.ts.map +1 -0
- package/dist/capabilities/capability-behavior.js +9 -0
- package/dist/capabilities/capability-behavior.js.map +1 -0
- package/dist/capabilities/capability-defaults.d.ts +67 -0
- package/dist/capabilities/capability-defaults.d.ts.map +1 -0
- package/dist/capabilities/capability-defaults.js +81 -0
- package/dist/capabilities/capability-defaults.js.map +1 -0
- package/dist/capabilities/capability-helpers.d.ts +76 -0
- package/dist/capabilities/capability-helpers.d.ts.map +1 -0
- package/dist/capabilities/capability-helpers.js +112 -0
- package/dist/capabilities/capability-helpers.js.map +1 -0
- package/dist/capabilities/capability-registry.d.ts +115 -0
- package/dist/capabilities/capability-registry.d.ts.map +1 -0
- package/dist/capabilities/capability-registry.js +136 -0
- package/dist/capabilities/capability-registry.js.map +1 -0
- package/dist/capabilities/entity-builder.d.ts +79 -0
- package/dist/capabilities/entity-builder.d.ts.map +1 -0
- package/dist/capabilities/entity-builder.js +116 -0
- package/dist/capabilities/entity-builder.js.map +1 -0
- package/dist/capabilities/index.d.ts +13 -0
- package/dist/capabilities/index.d.ts.map +1 -0
- package/dist/capabilities/index.js +40 -0
- package/dist/capabilities/index.js.map +1 -0
- package/dist/capabilities/types.d.ts +35 -0
- package/dist/capabilities/types.d.ts.map +1 -0
- package/dist/capabilities/types.js +16 -0
- package/dist/capabilities/types.js.map +1 -0
- package/dist/commands/command-types.d.ts +30 -0
- package/dist/commands/command-types.d.ts.map +1 -0
- package/dist/commands/command-types.js +6 -0
- package/dist/commands/command-types.js.map +1 -0
- package/dist/commands/index.d.ts +7 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +23 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/parsed-command.d.ts +204 -0
- package/dist/commands/parsed-command.d.ts.map +1 -0
- package/dist/commands/parsed-command.js +25 -0
- package/dist/commands/parsed-command.js.map +1 -0
- package/dist/commands/validated-command.d.ts +52 -0
- package/dist/commands/validated-command.d.ts.map +1 -0
- package/dist/commands/validated-command.js +8 -0
- package/dist/commands/validated-command.js.map +1 -0
- package/dist/constants/action-failures.d.ts +54 -0
- package/dist/constants/action-failures.d.ts.map +1 -0
- package/dist/constants/action-failures.js +68 -0
- package/dist/constants/action-failures.js.map +1 -0
- package/dist/constants/directions.d.ts +32 -0
- package/dist/constants/directions.d.ts.map +1 -0
- package/dist/constants/directions.js +53 -0
- package/dist/constants/directions.js.map +1 -0
- package/dist/constants/if-events.d.ts +5 -0
- package/dist/constants/if-events.d.ts.map +1 -0
- package/dist/constants/if-events.js +10 -0
- package/dist/constants/if-events.js.map +1 -0
- package/dist/constants/index.d.ts +9 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +25 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/entities/entity-store.d.ts +66 -0
- package/dist/entities/entity-store.d.ts.map +1 -0
- package/dist/entities/entity-store.js +116 -0
- package/dist/entities/entity-store.js.map +1 -0
- package/dist/entities/entity-types.d.ts +40 -0
- package/dist/entities/entity-types.d.ts.map +1 -0
- package/dist/entities/entity-types.js +56 -0
- package/dist/entities/entity-types.js.map +1 -0
- package/dist/entities/if-entity.d.ts +259 -0
- package/dist/entities/if-entity.d.ts.map +1 -0
- package/dist/entities/if-entity.js +498 -0
- package/dist/entities/if-entity.js.map +1 -0
- package/dist/entities/index.d.ts +5 -0
- package/dist/entities/index.d.ts.map +1 -0
- package/dist/entities/index.js +13 -0
- package/dist/entities/index.js.map +1 -0
- package/dist/events/types.d.ts +45 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +9 -0
- package/dist/events/types.js.map +1 -0
- package/dist/examples/event-handler-registration.d.ts +14 -0
- package/dist/examples/event-handler-registration.d.ts.map +1 -0
- package/dist/examples/event-handler-registration.js +158 -0
- package/dist/examples/event-handler-registration.js.map +1 -0
- package/dist/extensions/base-extension.d.ts +69 -0
- package/dist/extensions/base-extension.d.ts.map +1 -0
- package/dist/extensions/base-extension.js +83 -0
- package/dist/extensions/base-extension.js.map +1 -0
- package/dist/extensions/index.d.ts +11 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +39 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/loader.d.ts +52 -0
- package/dist/extensions/loader.d.ts.map +1 -0
- package/dist/extensions/loader.js +177 -0
- package/dist/extensions/loader.js.map +1 -0
- package/dist/extensions/manager.d.ts +68 -0
- package/dist/extensions/manager.d.ts.map +1 -0
- package/dist/extensions/manager.js +164 -0
- package/dist/extensions/manager.js.map +1 -0
- package/dist/extensions/registry.d.ts +100 -0
- package/dist/extensions/registry.d.ts.map +1 -0
- package/dist/extensions/registry.js +193 -0
- package/dist/extensions/registry.js.map +1 -0
- package/dist/extensions/types.d.ts +226 -0
- package/dist/extensions/types.d.ts.map +1 -0
- package/dist/extensions/types.js +28 -0
- package/dist/extensions/types.js.map +1 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +68 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/command-executor.d.ts +17 -0
- package/dist/interfaces/command-executor.d.ts.map +1 -0
- package/dist/interfaces/command-executor.js +6 -0
- package/dist/interfaces/command-executor.js.map +1 -0
- package/dist/interfaces/command-processor.d.ts +17 -0
- package/dist/interfaces/command-processor.d.ts.map +1 -0
- package/dist/interfaces/command-processor.js +6 -0
- package/dist/interfaces/command-processor.js.map +1 -0
- package/dist/interfaces/command-validator.d.ts +17 -0
- package/dist/interfaces/command-validator.d.ts.map +1 -0
- package/dist/interfaces/command-validator.js +6 -0
- package/dist/interfaces/command-validator.js.map +1 -0
- package/dist/interfaces/index.d.ts +8 -0
- package/dist/interfaces/index.d.ts.map +1 -0
- package/dist/interfaces/index.js +24 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/interfaces/language-provider.d.ts +86 -0
- package/dist/interfaces/language-provider.d.ts.map +1 -0
- package/dist/interfaces/language-provider.js +14 -0
- package/dist/interfaces/language-provider.js.map +1 -0
- package/dist/interfaces/parser.d.ts +16 -0
- package/dist/interfaces/parser.d.ts.map +1 -0
- package/dist/interfaces/parser.js +6 -0
- package/dist/interfaces/parser.js.map +1 -0
- package/dist/scope/index.d.ts +8 -0
- package/dist/scope/index.d.ts.map +1 -0
- package/dist/scope/index.js +24 -0
- package/dist/scope/index.js.map +1 -0
- package/dist/scope/scope-evaluator.d.ts +58 -0
- package/dist/scope/scope-evaluator.d.ts.map +1 -0
- package/dist/scope/scope-evaluator.js +207 -0
- package/dist/scope/scope-evaluator.js.map +1 -0
- package/dist/scope/scope-registry.d.ts +59 -0
- package/dist/scope/scope-registry.d.ts.map +1 -0
- package/dist/scope/scope-registry.js +182 -0
- package/dist/scope/scope-registry.js.map +1 -0
- package/dist/scope/scope-rule.d.ts +86 -0
- package/dist/scope/scope-rule.d.ts.map +1 -0
- package/dist/scope/scope-rule.js +7 -0
- package/dist/scope/scope-rule.js.map +1 -0
- package/dist/services/ScopeService.d.ts +8 -0
- package/dist/services/ScopeService.d.ts.map +1 -0
- package/dist/services/ScopeService.js +19 -0
- package/dist/services/ScopeService.js.map +1 -0
- package/dist/services/index.d.ts +2 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +6 -0
- package/dist/services/index.js.map +1 -0
- package/dist/test-structure.d.ts +3 -0
- package/dist/test-structure.d.ts.map +1 -0
- package/dist/test-structure.js +26 -0
- package/dist/test-structure.js.map +1 -0
- package/dist/traits/actor/actorBehavior.d.ts +121 -0
- package/dist/traits/actor/actorBehavior.d.ts.map +1 -0
- package/dist/traits/actor/actorBehavior.js +288 -0
- package/dist/traits/actor/actorBehavior.js.map +1 -0
- package/dist/traits/actor/actorTrait.d.ts +158 -0
- package/dist/traits/actor/actorTrait.d.ts.map +1 -0
- package/dist/traits/actor/actorTrait.js +152 -0
- package/dist/traits/actor/actorTrait.js.map +1 -0
- package/dist/traits/actor/index.d.ts +3 -0
- package/dist/traits/actor/index.d.ts.map +1 -0
- package/dist/traits/actor/index.js +11 -0
- package/dist/traits/actor/index.js.map +1 -0
- package/dist/traits/all-traits.d.ts +95 -0
- package/dist/traits/all-traits.d.ts.map +1 -0
- package/dist/traits/all-traits.js +178 -0
- package/dist/traits/all-traits.js.map +1 -0
- package/dist/traits/attached/attachedTrait.d.ts +61 -0
- package/dist/traits/attached/attachedTrait.d.ts.map +1 -0
- package/dist/traits/attached/attachedTrait.js +36 -0
- package/dist/traits/attached/attachedTrait.js.map +1 -0
- package/dist/traits/attached/index.d.ts +2 -0
- package/dist/traits/attached/index.d.ts.map +1 -0
- package/dist/traits/attached/index.js +18 -0
- package/dist/traits/attached/index.js.map +1 -0
- package/dist/traits/breakable/breakableBehavior.d.ts +43 -0
- package/dist/traits/breakable/breakableBehavior.d.ts.map +1 -0
- package/dist/traits/breakable/breakableBehavior.js +70 -0
- package/dist/traits/breakable/breakableBehavior.js.map +1 -0
- package/dist/traits/breakable/breakableTrait.d.ts +22 -0
- package/dist/traits/breakable/breakableTrait.d.ts.map +1 -0
- package/dist/traits/breakable/breakableTrait.js +25 -0
- package/dist/traits/breakable/breakableTrait.js.map +1 -0
- package/dist/traits/breakable/index.d.ts +3 -0
- package/dist/traits/breakable/index.d.ts.map +1 -0
- package/dist/traits/breakable/index.js +8 -0
- package/dist/traits/breakable/index.js.map +1 -0
- package/dist/traits/button/buttonTrait.d.ts +53 -0
- package/dist/traits/button/buttonTrait.d.ts.map +1 -0
- package/dist/traits/button/buttonTrait.js +36 -0
- package/dist/traits/button/buttonTrait.js.map +1 -0
- package/dist/traits/button/index.d.ts +2 -0
- package/dist/traits/button/index.d.ts.map +1 -0
- package/dist/traits/button/index.js +18 -0
- package/dist/traits/button/index.js.map +1 -0
- package/dist/traits/climbable/climbableBehavior.d.ts +37 -0
- package/dist/traits/climbable/climbableBehavior.d.ts.map +1 -0
- package/dist/traits/climbable/climbableBehavior.js +70 -0
- package/dist/traits/climbable/climbableBehavior.js.map +1 -0
- package/dist/traits/climbable/climbableTrait.d.ts +31 -0
- package/dist/traits/climbable/climbableTrait.d.ts.map +1 -0
- package/dist/traits/climbable/climbableTrait.js +47 -0
- package/dist/traits/climbable/climbableTrait.js.map +1 -0
- package/dist/traits/climbable/index.d.ts +6 -0
- package/dist/traits/climbable/index.d.ts.map +1 -0
- package/dist/traits/climbable/index.js +22 -0
- package/dist/traits/climbable/index.js.map +1 -0
- package/dist/traits/clothing/clothingTrait.d.ts +58 -0
- package/dist/traits/clothing/clothingTrait.d.ts.map +1 -0
- package/dist/traits/clothing/clothingTrait.js +78 -0
- package/dist/traits/clothing/clothingTrait.js.map +1 -0
- package/dist/traits/clothing/index.d.ts +2 -0
- package/dist/traits/clothing/index.d.ts.map +1 -0
- package/dist/traits/clothing/index.js +19 -0
- package/dist/traits/clothing/index.js.map +1 -0
- package/dist/traits/combatant/combatantBehavior.d.ts +70 -0
- package/dist/traits/combatant/combatantBehavior.d.ts.map +1 -0
- package/dist/traits/combatant/combatantBehavior.js +155 -0
- package/dist/traits/combatant/combatantBehavior.js.map +1 -0
- package/dist/traits/combatant/combatantTrait.d.ts +98 -0
- package/dist/traits/combatant/combatantTrait.d.ts.map +1 -0
- package/dist/traits/combatant/combatantTrait.js +122 -0
- package/dist/traits/combatant/combatantTrait.js.map +1 -0
- package/dist/traits/combatant/index.d.ts +3 -0
- package/dist/traits/combatant/index.d.ts.map +1 -0
- package/dist/traits/combatant/index.js +8 -0
- package/dist/traits/combatant/index.js.map +1 -0
- package/dist/traits/container/container-utils.d.ts +39 -0
- package/dist/traits/container/container-utils.d.ts.map +1 -0
- package/dist/traits/container/container-utils.js +72 -0
- package/dist/traits/container/container-utils.js.map +1 -0
- package/dist/traits/container/containerBehavior.d.ts +94 -0
- package/dist/traits/container/containerBehavior.d.ts.map +1 -0
- package/dist/traits/container/containerBehavior.js +256 -0
- package/dist/traits/container/containerBehavior.js.map +1 -0
- package/dist/traits/container/containerTrait.d.ts +30 -0
- package/dist/traits/container/containerTrait.d.ts.map +1 -0
- package/dist/traits/container/containerTrait.js +45 -0
- package/dist/traits/container/containerTrait.js.map +1 -0
- package/dist/traits/container/index.d.ts +4 -0
- package/dist/traits/container/index.d.ts.map +1 -0
- package/dist/traits/container/index.js +14 -0
- package/dist/traits/container/index.js.map +1 -0
- package/dist/traits/destructible/destructibleBehavior.d.ts +57 -0
- package/dist/traits/destructible/destructibleBehavior.d.ts.map +1 -0
- package/dist/traits/destructible/destructibleBehavior.js +145 -0
- package/dist/traits/destructible/destructibleBehavior.js.map +1 -0
- package/dist/traits/destructible/destructibleTrait.d.ts +49 -0
- package/dist/traits/destructible/destructibleTrait.d.ts.map +1 -0
- package/dist/traits/destructible/destructibleTrait.js +43 -0
- package/dist/traits/destructible/destructibleTrait.js.map +1 -0
- package/dist/traits/destructible/index.d.ts +3 -0
- package/dist/traits/destructible/index.d.ts.map +1 -0
- package/dist/traits/destructible/index.js +8 -0
- package/dist/traits/destructible/index.js.map +1 -0
- package/dist/traits/door/doorBehavior.d.ts +42 -0
- package/dist/traits/door/doorBehavior.d.ts.map +1 -0
- package/dist/traits/door/doorBehavior.js +76 -0
- package/dist/traits/door/doorBehavior.js.map +1 -0
- package/dist/traits/door/doorTrait.d.ts +19 -0
- package/dist/traits/door/doorTrait.d.ts.map +1 -0
- package/dist/traits/door/doorTrait.js +33 -0
- package/dist/traits/door/doorTrait.js.map +1 -0
- package/dist/traits/door/index.d.ts +3 -0
- package/dist/traits/door/index.d.ts.map +1 -0
- package/dist/traits/door/index.js +9 -0
- package/dist/traits/door/index.js.map +1 -0
- package/dist/traits/edible/edibleBehavior.d.ts +63 -0
- package/dist/traits/edible/edibleBehavior.d.ts.map +1 -0
- package/dist/traits/edible/edibleBehavior.js +157 -0
- package/dist/traits/edible/edibleBehavior.js.map +1 -0
- package/dist/traits/edible/edibleTrait.d.ts +57 -0
- package/dist/traits/edible/edibleTrait.d.ts.map +1 -0
- package/dist/traits/edible/edibleTrait.js +51 -0
- package/dist/traits/edible/edibleTrait.js.map +1 -0
- package/dist/traits/edible/index.d.ts +3 -0
- package/dist/traits/edible/index.d.ts.map +1 -0
- package/dist/traits/edible/index.js +20 -0
- package/dist/traits/edible/index.js.map +1 -0
- package/dist/traits/enterable/enterableTrait.d.ts +33 -0
- package/dist/traits/enterable/enterableTrait.d.ts.map +1 -0
- package/dist/traits/enterable/enterableTrait.js +38 -0
- package/dist/traits/enterable/enterableTrait.js.map +1 -0
- package/dist/traits/enterable/index.d.ts +5 -0
- package/dist/traits/enterable/index.d.ts.map +1 -0
- package/dist/traits/enterable/index.js +21 -0
- package/dist/traits/enterable/index.js.map +1 -0
- package/dist/traits/equipped/equippedTrait.d.ts +46 -0
- package/dist/traits/equipped/equippedTrait.d.ts.map +1 -0
- package/dist/traits/equipped/equippedTrait.js +34 -0
- package/dist/traits/equipped/equippedTrait.js.map +1 -0
- package/dist/traits/equipped/index.d.ts +2 -0
- package/dist/traits/equipped/index.d.ts.map +1 -0
- package/dist/traits/equipped/index.js +6 -0
- package/dist/traits/equipped/index.js.map +1 -0
- package/dist/traits/exit/exitBehavior.d.ts +51 -0
- package/dist/traits/exit/exitBehavior.d.ts.map +1 -0
- package/dist/traits/exit/exitBehavior.js +231 -0
- package/dist/traits/exit/exitBehavior.js.map +1 -0
- package/dist/traits/exit/exitTrait.d.ts +41 -0
- package/dist/traits/exit/exitTrait.d.ts.map +1 -0
- package/dist/traits/exit/exitTrait.js +75 -0
- package/dist/traits/exit/exitTrait.js.map +1 -0
- package/dist/traits/exit/index.d.ts +3 -0
- package/dist/traits/exit/index.d.ts.map +1 -0
- package/dist/traits/exit/index.js +9 -0
- package/dist/traits/exit/index.js.map +1 -0
- package/dist/traits/identity/identityBehavior.d.ts +64 -0
- package/dist/traits/identity/identityBehavior.d.ts.map +1 -0
- package/dist/traits/identity/identityBehavior.js +154 -0
- package/dist/traits/identity/identityBehavior.js.map +1 -0
- package/dist/traits/identity/identityTrait.d.ts +70 -0
- package/dist/traits/identity/identityTrait.d.ts.map +1 -0
- package/dist/traits/identity/identityTrait.js +79 -0
- package/dist/traits/identity/identityTrait.js.map +1 -0
- package/dist/traits/identity/index.d.ts +3 -0
- package/dist/traits/identity/index.d.ts.map +1 -0
- package/dist/traits/identity/index.js +20 -0
- package/dist/traits/identity/index.js.map +1 -0
- package/dist/traits/implementations.d.ts +51 -0
- package/dist/traits/implementations.d.ts.map +1 -0
- package/dist/traits/implementations.js +145 -0
- package/dist/traits/implementations.js.map +1 -0
- package/dist/traits/index.d.ts +36 -0
- package/dist/traits/index.d.ts.map +1 -0
- package/dist/traits/index.js +62 -0
- package/dist/traits/index.js.map +1 -0
- package/dist/traits/light-source/index.d.ts +3 -0
- package/dist/traits/light-source/index.d.ts.map +1 -0
- package/dist/traits/light-source/index.js +9 -0
- package/dist/traits/light-source/index.js.map +1 -0
- package/dist/traits/light-source/lightSourceBehavior.d.ts +57 -0
- package/dist/traits/light-source/lightSourceBehavior.d.ts.map +1 -0
- package/dist/traits/light-source/lightSourceBehavior.js +135 -0
- package/dist/traits/light-source/lightSourceBehavior.js.map +1 -0
- package/dist/traits/light-source/lightSourceTrait.d.ts +28 -0
- package/dist/traits/light-source/lightSourceTrait.d.ts.map +1 -0
- package/dist/traits/light-source/lightSourceTrait.js +37 -0
- package/dist/traits/light-source/lightSourceTrait.js.map +1 -0
- package/dist/traits/lockable/index.d.ts +3 -0
- package/dist/traits/lockable/index.d.ts.map +1 -0
- package/dist/traits/lockable/index.js +20 -0
- package/dist/traits/lockable/index.js.map +1 -0
- package/dist/traits/lockable/lockableBehavior.d.ts +88 -0
- package/dist/traits/lockable/lockableBehavior.d.ts.map +1 -0
- package/dist/traits/lockable/lockableBehavior.js +196 -0
- package/dist/traits/lockable/lockableBehavior.js.map +1 -0
- package/dist/traits/lockable/lockableTrait.d.ts +59 -0
- package/dist/traits/lockable/lockableTrait.d.ts.map +1 -0
- package/dist/traits/lockable/lockableTrait.js +50 -0
- package/dist/traits/lockable/lockableTrait.js.map +1 -0
- package/dist/traits/moveable-scenery/index.d.ts +2 -0
- package/dist/traits/moveable-scenery/index.d.ts.map +1 -0
- package/dist/traits/moveable-scenery/index.js +18 -0
- package/dist/traits/moveable-scenery/index.js.map +1 -0
- package/dist/traits/moveable-scenery/moveableSceneryTrait.d.ts +69 -0
- package/dist/traits/moveable-scenery/moveableSceneryTrait.d.ts.map +1 -0
- package/dist/traits/moveable-scenery/moveableSceneryTrait.js +43 -0
- package/dist/traits/moveable-scenery/moveableSceneryTrait.js.map +1 -0
- package/dist/traits/npc/index.d.ts +5 -0
- package/dist/traits/npc/index.d.ts.map +1 -0
- package/dist/traits/npc/index.js +9 -0
- package/dist/traits/npc/index.js.map +1 -0
- package/dist/traits/npc/npcTrait.d.ts +128 -0
- package/dist/traits/npc/npcTrait.d.ts.map +1 -0
- package/dist/traits/npc/npcTrait.js +180 -0
- package/dist/traits/npc/npcTrait.js.map +1 -0
- package/dist/traits/openable/index.d.ts +3 -0
- package/dist/traits/openable/index.d.ts.map +1 -0
- package/dist/traits/openable/index.js +20 -0
- package/dist/traits/openable/index.js.map +1 -0
- package/dist/traits/openable/openableBehavior.d.ts +64 -0
- package/dist/traits/openable/openableBehavior.d.ts.map +1 -0
- package/dist/traits/openable/openableBehavior.js +109 -0
- package/dist/traits/openable/openableBehavior.js.map +1 -0
- package/dist/traits/openable/openableTrait.d.ts +46 -0
- package/dist/traits/openable/openableTrait.d.ts.map +1 -0
- package/dist/traits/openable/openableTrait.js +42 -0
- package/dist/traits/openable/openableTrait.js.map +1 -0
- package/dist/traits/portable/portableTrait.d.ts +26 -0
- package/dist/traits/portable/portableTrait.d.ts.map +1 -0
- package/dist/traits/portable/portableTrait.js +35 -0
- package/dist/traits/portable/portableTrait.js.map +1 -0
- package/dist/traits/pullable/index.d.ts +2 -0
- package/dist/traits/pullable/index.d.ts.map +1 -0
- package/dist/traits/pullable/index.js +18 -0
- package/dist/traits/pullable/index.js.map +1 -0
- package/dist/traits/pullable/pullableTrait.d.ts +81 -0
- package/dist/traits/pullable/pullableTrait.d.ts.map +1 -0
- package/dist/traits/pullable/pullableTrait.js +44 -0
- package/dist/traits/pullable/pullableTrait.js.map +1 -0
- package/dist/traits/pushable/index.d.ts +2 -0
- package/dist/traits/pushable/index.d.ts.map +1 -0
- package/dist/traits/pushable/index.js +18 -0
- package/dist/traits/pushable/index.js.map +1 -0
- package/dist/traits/pushable/pushableTrait.d.ts +81 -0
- package/dist/traits/pushable/pushableTrait.d.ts.map +1 -0
- package/dist/traits/pushable/pushableTrait.js +44 -0
- package/dist/traits/pushable/pushableTrait.js.map +1 -0
- package/dist/traits/readable/index.d.ts +3 -0
- package/dist/traits/readable/index.d.ts.map +1 -0
- package/dist/traits/readable/index.js +9 -0
- package/dist/traits/readable/index.js.map +1 -0
- package/dist/traits/readable/readableBehavior.d.ts +42 -0
- package/dist/traits/readable/readableBehavior.d.ts.map +1 -0
- package/dist/traits/readable/readableBehavior.js +174 -0
- package/dist/traits/readable/readableBehavior.js.map +1 -0
- package/dist/traits/readable/readableTrait.d.ts +37 -0
- package/dist/traits/readable/readableTrait.d.ts.map +1 -0
- package/dist/traits/readable/readableTrait.js +51 -0
- package/dist/traits/readable/readableTrait.js.map +1 -0
- package/dist/traits/register-all.d.ts +10 -0
- package/dist/traits/register-all.d.ts.map +1 -0
- package/dist/traits/register-all.js +19 -0
- package/dist/traits/register-all.js.map +1 -0
- package/dist/traits/room/index.d.ts +9 -0
- package/dist/traits/room/index.d.ts.map +1 -0
- package/dist/traits/room/index.js +14 -0
- package/dist/traits/room/index.js.map +1 -0
- package/dist/traits/room/roomBehavior.d.ts +87 -0
- package/dist/traits/room/roomBehavior.d.ts.map +1 -0
- package/dist/traits/room/roomBehavior.js +232 -0
- package/dist/traits/room/roomBehavior.js.map +1 -0
- package/dist/traits/room/roomTrait.d.ts +87 -0
- package/dist/traits/room/roomTrait.d.ts.map +1 -0
- package/dist/traits/room/roomTrait.js +59 -0
- package/dist/traits/room/roomTrait.js.map +1 -0
- package/dist/traits/scenery/index.d.ts +3 -0
- package/dist/traits/scenery/index.d.ts.map +1 -0
- package/dist/traits/scenery/index.js +9 -0
- package/dist/traits/scenery/index.js.map +1 -0
- package/dist/traits/scenery/sceneryBehavior.d.ts +21 -0
- package/dist/traits/scenery/sceneryBehavior.d.ts.map +1 -0
- package/dist/traits/scenery/sceneryBehavior.js +42 -0
- package/dist/traits/scenery/sceneryBehavior.js.map +1 -0
- package/dist/traits/scenery/sceneryTrait.d.ts +30 -0
- package/dist/traits/scenery/sceneryTrait.d.ts.map +1 -0
- package/dist/traits/scenery/sceneryTrait.js +39 -0
- package/dist/traits/scenery/sceneryTrait.js.map +1 -0
- package/dist/traits/supporter/index.d.ts +3 -0
- package/dist/traits/supporter/index.d.ts.map +1 -0
- package/dist/traits/supporter/index.js +9 -0
- package/dist/traits/supporter/index.js.map +1 -0
- package/dist/traits/supporter/supporterBehavior.d.ts +83 -0
- package/dist/traits/supporter/supporterBehavior.d.ts.map +1 -0
- package/dist/traits/supporter/supporterBehavior.js +210 -0
- package/dist/traits/supporter/supporterBehavior.js.map +1 -0
- package/dist/traits/supporter/supporterTrait.d.ts +26 -0
- package/dist/traits/supporter/supporterTrait.d.ts.map +1 -0
- package/dist/traits/supporter/supporterTrait.js +30 -0
- package/dist/traits/supporter/supporterTrait.js.map +1 -0
- package/dist/traits/switchable/index.d.ts +3 -0
- package/dist/traits/switchable/index.d.ts.map +1 -0
- package/dist/traits/switchable/index.js +20 -0
- package/dist/traits/switchable/index.js.map +1 -0
- package/dist/traits/switchable/switchableBehavior.d.ts +73 -0
- package/dist/traits/switchable/switchableBehavior.d.ts.map +1 -0
- package/dist/traits/switchable/switchableBehavior.js +191 -0
- package/dist/traits/switchable/switchableBehavior.js.map +1 -0
- package/dist/traits/switchable/switchableTrait.d.ts +61 -0
- package/dist/traits/switchable/switchableTrait.d.ts.map +1 -0
- package/dist/traits/switchable/switchableTrait.js +52 -0
- package/dist/traits/switchable/switchableTrait.js.map +1 -0
- package/dist/traits/trait-types.d.ts +81 -0
- package/dist/traits/trait-types.d.ts.map +1 -0
- package/dist/traits/trait-types.js +146 -0
- package/dist/traits/trait-types.js.map +1 -0
- package/dist/traits/trait.d.ts +42 -0
- package/dist/traits/trait.d.ts.map +1 -0
- package/dist/traits/trait.js +42 -0
- package/dist/traits/trait.js.map +1 -0
- package/dist/traits/vehicle/index.d.ts +6 -0
- package/dist/traits/vehicle/index.d.ts.map +1 -0
- package/dist/traits/vehicle/index.js +22 -0
- package/dist/traits/vehicle/index.js.map +1 -0
- package/dist/traits/vehicle/vehicleBehavior.d.ts +62 -0
- package/dist/traits/vehicle/vehicleBehavior.d.ts.map +1 -0
- package/dist/traits/vehicle/vehicleBehavior.js +145 -0
- package/dist/traits/vehicle/vehicleBehavior.js.map +1 -0
- package/dist/traits/vehicle/vehicleTrait.d.ts +77 -0
- package/dist/traits/vehicle/vehicleTrait.d.ts.map +1 -0
- package/dist/traits/vehicle/vehicleTrait.js +92 -0
- package/dist/traits/vehicle/vehicleTrait.js.map +1 -0
- package/dist/traits/weapon/index.d.ts +3 -0
- package/dist/traits/weapon/index.d.ts.map +1 -0
- package/dist/traits/weapon/index.js +8 -0
- package/dist/traits/weapon/index.js.map +1 -0
- package/dist/traits/weapon/weaponBehavior.d.ts +47 -0
- package/dist/traits/weapon/weaponBehavior.d.ts.map +1 -0
- package/dist/traits/weapon/weaponBehavior.js +106 -0
- package/dist/traits/weapon/weaponBehavior.js.map +1 -0
- package/dist/traits/weapon/weaponTrait.d.ts +67 -0
- package/dist/traits/weapon/weaponTrait.d.ts.map +1 -0
- package/dist/traits/weapon/weaponTrait.js +60 -0
- package/dist/traits/weapon/weaponTrait.js.map +1 -0
- package/dist/traits/wearable/index.d.ts +3 -0
- package/dist/traits/wearable/index.d.ts.map +1 -0
- package/dist/traits/wearable/index.js +20 -0
- package/dist/traits/wearable/index.js.map +1 -0
- package/dist/traits/wearable/wearableBehavior.d.ts +64 -0
- package/dist/traits/wearable/wearableBehavior.d.ts.map +1 -0
- package/dist/traits/wearable/wearableBehavior.js +142 -0
- package/dist/traits/wearable/wearableBehavior.js.map +1 -0
- package/dist/traits/wearable/wearableTrait.d.ts +54 -0
- package/dist/traits/wearable/wearableTrait.d.ts.map +1 -0
- package/dist/traits/wearable/wearableTrait.js +53 -0
- package/dist/traits/wearable/wearableTrait.js.map +1 -0
- package/dist/utils/event-utils.d.ts +30 -0
- package/dist/utils/event-utils.d.ts.map +1 -0
- package/dist/utils/event-utils.js +33 -0
- package/dist/utils/event-utils.js.map +1 -0
- package/dist/world/AuthorModel.d.ts +151 -0
- package/dist/world/AuthorModel.d.ts.map +1 -0
- package/dist/world/AuthorModel.js +416 -0
- package/dist/world/AuthorModel.js.map +1 -0
- package/dist/world/SharedDataStore.d.ts +24 -0
- package/dist/world/SharedDataStore.d.ts.map +1 -0
- package/dist/world/SharedDataStore.js +50 -0
- package/dist/world/SharedDataStore.js.map +1 -0
- package/dist/world/SpatialIndex.d.ts +16 -0
- package/dist/world/SpatialIndex.d.ts.map +1 -0
- package/dist/world/SpatialIndex.js +117 -0
- package/dist/world/SpatialIndex.js.map +1 -0
- package/dist/world/VisibilityBehavior.d.ts +83 -0
- package/dist/world/VisibilityBehavior.d.ts.map +1 -0
- package/dist/world/VisibilityBehavior.js +484 -0
- package/dist/world/VisibilityBehavior.js.map +1 -0
- package/dist/world/WorldModel.d.ts +270 -0
- package/dist/world/WorldModel.d.ts.map +1 -0
- package/dist/world/WorldModel.js +1028 -0
- package/dist/world/WorldModel.js.map +1 -0
- package/dist/world/capabilities.d.ts +36 -0
- package/dist/world/capabilities.d.ts.map +1 -0
- package/dist/world/capabilities.js +18 -0
- package/dist/world/capabilities.js.map +1 -0
- package/dist/world/index.d.ts +7 -0
- package/dist/world/index.d.ts.map +1 -0
- package/dist/world/index.js +21 -0
- package/dist/world/index.js.map +1 -0
- package/package.json +67 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ITrait } from '../trait';
|
|
2
|
+
/**
|
|
3
|
+
* Container trait allows entities to hold other entities inside them.
|
|
4
|
+
*
|
|
5
|
+
* This is a pure data structure - all validation and logic
|
|
6
|
+
* should be handled by ContainerBehavior.
|
|
7
|
+
*/
|
|
8
|
+
export declare class ContainerTrait implements ITrait {
|
|
9
|
+
static readonly type: "container";
|
|
10
|
+
readonly type: "container";
|
|
11
|
+
/** Capacity constraints for the container */
|
|
12
|
+
capacity?: {
|
|
13
|
+
/** Maximum total weight the container can hold (in kg) */
|
|
14
|
+
maxWeight?: number;
|
|
15
|
+
/** Maximum total volume the container can hold (in liters) */
|
|
16
|
+
maxVolume?: number;
|
|
17
|
+
/** Maximum number of items the container can hold */
|
|
18
|
+
maxItems?: number;
|
|
19
|
+
};
|
|
20
|
+
/** Whether contents are visible when the container is closed */
|
|
21
|
+
isTransparent: boolean;
|
|
22
|
+
/** Whether actors can enter this container */
|
|
23
|
+
enterable: boolean;
|
|
24
|
+
/** Only these entity types can be placed in the container */
|
|
25
|
+
allowedTypes?: string[];
|
|
26
|
+
/** These entity types cannot be placed in the container */
|
|
27
|
+
excludedTypes?: string[];
|
|
28
|
+
constructor(data?: Partial<ContainerTrait>);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=containerTrait.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"containerTrait.d.ts","sourceRoot":"","sources":["../../../src/traits/container/containerTrait.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC;;;;;GAKG;AACH,qBAAa,cAAe,YAAW,MAAM;IAC3C,MAAM,CAAC,QAAQ,CAAC,IAAI,cAAuB;IAC3C,QAAQ,CAAC,IAAI,cAAuB;IAEpC,6CAA6C;IAC7C,QAAQ,CAAC,EAAE;QACT,0DAA0D;QAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;QAEnB,8DAA8D;QAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;QAEnB,qDAAqD;QACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IAEF,gEAAgE;IAChE,aAAa,EAAE,OAAO,CAAC;IAEvB,8CAA8C;IAC9C,SAAS,EAAE,OAAO,CAAC;IAEnB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;gBAEb,IAAI,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;CAc3C"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// packages/world-model/src/traits/container/containerTrait.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.ContainerTrait = void 0;
|
|
5
|
+
const trait_types_1 = require("../trait-types");
|
|
6
|
+
/**
|
|
7
|
+
* Container trait allows entities to hold other entities inside them.
|
|
8
|
+
*
|
|
9
|
+
* This is a pure data structure - all validation and logic
|
|
10
|
+
* should be handled by ContainerBehavior.
|
|
11
|
+
*/
|
|
12
|
+
class ContainerTrait {
|
|
13
|
+
static type = trait_types_1.TraitType.CONTAINER;
|
|
14
|
+
type = trait_types_1.TraitType.CONTAINER;
|
|
15
|
+
/** Capacity constraints for the container */
|
|
16
|
+
capacity;
|
|
17
|
+
/** Whether contents are visible when the container is closed */
|
|
18
|
+
isTransparent;
|
|
19
|
+
/** Whether actors can enter this container */
|
|
20
|
+
enterable;
|
|
21
|
+
/** Only these entity types can be placed in the container */
|
|
22
|
+
allowedTypes;
|
|
23
|
+
/** These entity types cannot be placed in the container */
|
|
24
|
+
excludedTypes;
|
|
25
|
+
constructor(data) {
|
|
26
|
+
// Set defaults
|
|
27
|
+
this.isTransparent = false;
|
|
28
|
+
this.enterable = false;
|
|
29
|
+
// Override with provided data
|
|
30
|
+
if (data) {
|
|
31
|
+
if (data.capacity !== undefined)
|
|
32
|
+
this.capacity = data.capacity;
|
|
33
|
+
if (data.isTransparent !== undefined)
|
|
34
|
+
this.isTransparent = data.isTransparent;
|
|
35
|
+
if (data.enterable !== undefined)
|
|
36
|
+
this.enterable = data.enterable;
|
|
37
|
+
if (data.allowedTypes !== undefined)
|
|
38
|
+
this.allowedTypes = data.allowedTypes;
|
|
39
|
+
if (data.excludedTypes !== undefined)
|
|
40
|
+
this.excludedTypes = data.excludedTypes;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.ContainerTrait = ContainerTrait;
|
|
45
|
+
//# sourceMappingURL=containerTrait.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"containerTrait.js","sourceRoot":"","sources":["../../../src/traits/container/containerTrait.ts"],"names":[],"mappings":";AAAA,8DAA8D;;;AAG9D,gDAA2C;AAE3C;;;;;GAKG;AACH,MAAa,cAAc;IACzB,MAAM,CAAU,IAAI,GAAG,uBAAS,CAAC,SAAS,CAAC;IAClC,IAAI,GAAG,uBAAS,CAAC,SAAS,CAAC;IAEpC,6CAA6C;IAC7C,QAAQ,CASN;IAEF,gEAAgE;IAChE,aAAa,CAAU;IAEvB,8CAA8C;IAC9C,SAAS,CAAU;IAEnB,6DAA6D;IAC7D,YAAY,CAAY;IAExB,2DAA2D;IAC3D,aAAa,CAAY;IAEzB,YAAY,IAA8B;QACxC,eAAe;QACf,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,8BAA8B;QAC9B,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;gBAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC/D,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;gBAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YAC9E,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;gBAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAClE,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;gBAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YAC3E,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;gBAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAChF,CAAC;IACH,CAAC;;AAzCH,wCA0CC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { ContainerTrait } from './containerTrait';
|
|
2
|
+
export { ContainerBehavior, type IWorldQuery, type IAddItemResult, type IRemoveItemResult } from './containerBehavior';
|
|
3
|
+
export { canContain, getContainerTrait, isContainerCapable, hasContainerProperties, type IContainerCapable } from './container-utils';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/traits/container/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACvH,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// packages/world-model/src/traits/container/index.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.hasContainerProperties = exports.isContainerCapable = exports.getContainerTrait = exports.canContain = exports.ContainerBehavior = exports.ContainerTrait = void 0;
|
|
5
|
+
var containerTrait_1 = require("./containerTrait");
|
|
6
|
+
Object.defineProperty(exports, "ContainerTrait", { enumerable: true, get: function () { return containerTrait_1.ContainerTrait; } });
|
|
7
|
+
var containerBehavior_1 = require("./containerBehavior");
|
|
8
|
+
Object.defineProperty(exports, "ContainerBehavior", { enumerable: true, get: function () { return containerBehavior_1.ContainerBehavior; } });
|
|
9
|
+
var container_utils_1 = require("./container-utils");
|
|
10
|
+
Object.defineProperty(exports, "canContain", { enumerable: true, get: function () { return container_utils_1.canContain; } });
|
|
11
|
+
Object.defineProperty(exports, "getContainerTrait", { enumerable: true, get: function () { return container_utils_1.getContainerTrait; } });
|
|
12
|
+
Object.defineProperty(exports, "isContainerCapable", { enumerable: true, get: function () { return container_utils_1.isContainerCapable; } });
|
|
13
|
+
Object.defineProperty(exports, "hasContainerProperties", { enumerable: true, get: function () { return container_utils_1.hasContainerProperties; } });
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/traits/container/index.ts"],"names":[],"mappings":";AAAA,qDAAqD;;;AAErD,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,yDAAuH;AAA9G,sHAAA,iBAAiB,OAAA;AAC1B,qDAM2B;AALzB,6GAAA,UAAU,OAAA;AACV,oHAAA,iBAAiB,OAAA;AACjB,qHAAA,kBAAkB,OAAA;AAClB,yHAAA,sBAAsB,OAAA"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Behavior for destructible entities
|
|
3
|
+
*/
|
|
4
|
+
import { Behavior } from '../../behaviors/behavior';
|
|
5
|
+
import { IFEntity } from '../../entities/if-entity';
|
|
6
|
+
import { WorldModel } from '../../world/WorldModel';
|
|
7
|
+
import { EntityId } from '@sharpee/core';
|
|
8
|
+
/**
|
|
9
|
+
* Result of damaging a destructible entity
|
|
10
|
+
*/
|
|
11
|
+
export interface IDamageResult {
|
|
12
|
+
success: boolean;
|
|
13
|
+
damage: number;
|
|
14
|
+
destroyed: boolean;
|
|
15
|
+
remainingHitPoints: number;
|
|
16
|
+
requiresWeapon?: boolean;
|
|
17
|
+
wrongWeaponType?: boolean;
|
|
18
|
+
invulnerable?: boolean;
|
|
19
|
+
transformedTo?: EntityId;
|
|
20
|
+
exitRevealed?: string;
|
|
21
|
+
message?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Behavior for destructible entities.
|
|
25
|
+
*
|
|
26
|
+
* Handles multi-hit destruction with hit points and armor.
|
|
27
|
+
* This is a world-aware behavior because it may transform entities or reveal exits.
|
|
28
|
+
*/
|
|
29
|
+
export declare class DestructibleBehavior extends Behavior {
|
|
30
|
+
static requiredTraits: "destructible"[];
|
|
31
|
+
/**
|
|
32
|
+
* Check if an entity can be damaged
|
|
33
|
+
*/
|
|
34
|
+
static canDamage(entity: IFEntity, weaponType?: string): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Damage the entity
|
|
37
|
+
* @param entity The entity to damage
|
|
38
|
+
* @param damage Base damage amount
|
|
39
|
+
* @param weaponType Type of weapon used (if any)
|
|
40
|
+
* @param world The world model (needed for transformations)
|
|
41
|
+
* @returns Result describing what happened
|
|
42
|
+
*/
|
|
43
|
+
static damage(entity: IFEntity, damage: number, weaponType: string | undefined, world: WorldModel): IDamageResult;
|
|
44
|
+
/**
|
|
45
|
+
* Check if entity is destroyed
|
|
46
|
+
*/
|
|
47
|
+
static isDestroyed(entity: IFEntity): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Get remaining hit points
|
|
50
|
+
*/
|
|
51
|
+
static getHitPoints(entity: IFEntity): number;
|
|
52
|
+
/**
|
|
53
|
+
* Repair entity (restore hit points)
|
|
54
|
+
*/
|
|
55
|
+
static repair(entity: IFEntity): boolean;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=destructibleBehavior.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"destructibleBehavior.d.ts","sourceRoot":"","sources":["../../../src/traits/destructible/destructibleBehavior.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,QAAQ,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,QAAQ;IAChD,MAAM,CAAC,cAAc,mBAA4B;IAEjD;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO;IAgBhE;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,UAAU,GAAG,aAAa;IAoFjH;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO;IAQ7C;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM;IAK7C;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO;CAQzC"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Behavior for destructible entities
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DestructibleBehavior = void 0;
|
|
7
|
+
const behavior_1 = require("../../behaviors/behavior");
|
|
8
|
+
const trait_types_1 = require("../trait-types");
|
|
9
|
+
/**
|
|
10
|
+
* Behavior for destructible entities.
|
|
11
|
+
*
|
|
12
|
+
* Handles multi-hit destruction with hit points and armor.
|
|
13
|
+
* This is a world-aware behavior because it may transform entities or reveal exits.
|
|
14
|
+
*/
|
|
15
|
+
class DestructibleBehavior extends behavior_1.Behavior {
|
|
16
|
+
static requiredTraits = [trait_types_1.TraitType.DESTRUCTIBLE];
|
|
17
|
+
/**
|
|
18
|
+
* Check if an entity can be damaged
|
|
19
|
+
*/
|
|
20
|
+
static canDamage(entity, weaponType) {
|
|
21
|
+
if (!entity.has(trait_types_1.TraitType.DESTRUCTIBLE)) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
const destructible = entity.get(trait_types_1.TraitType.DESTRUCTIBLE);
|
|
25
|
+
if (destructible.invulnerable)
|
|
26
|
+
return false;
|
|
27
|
+
if (destructible.hitPoints <= 0)
|
|
28
|
+
return false; // Already destroyed
|
|
29
|
+
// Check weapon requirements
|
|
30
|
+
if (destructible.requiresWeapon && !weaponType)
|
|
31
|
+
return false;
|
|
32
|
+
if (destructible.requiresType && weaponType !== destructible.requiresType)
|
|
33
|
+
return false;
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Damage the entity
|
|
38
|
+
* @param entity The entity to damage
|
|
39
|
+
* @param damage Base damage amount
|
|
40
|
+
* @param weaponType Type of weapon used (if any)
|
|
41
|
+
* @param world The world model (needed for transformations)
|
|
42
|
+
* @returns Result describing what happened
|
|
43
|
+
*/
|
|
44
|
+
static damage(entity, damage, weaponType, world) {
|
|
45
|
+
if (!entity.has(trait_types_1.TraitType.DESTRUCTIBLE)) {
|
|
46
|
+
return {
|
|
47
|
+
success: false,
|
|
48
|
+
damage: 0,
|
|
49
|
+
destroyed: false,
|
|
50
|
+
remainingHitPoints: 0,
|
|
51
|
+
message: 'Entity is not destructible'
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
const destructible = entity.get(trait_types_1.TraitType.DESTRUCTIBLE);
|
|
55
|
+
// Check if can be damaged
|
|
56
|
+
if (destructible.invulnerable) {
|
|
57
|
+
return {
|
|
58
|
+
success: false,
|
|
59
|
+
damage: 0,
|
|
60
|
+
destroyed: false,
|
|
61
|
+
remainingHitPoints: destructible.hitPoints,
|
|
62
|
+
invulnerable: true
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
if (destructible.requiresWeapon && !weaponType) {
|
|
66
|
+
return {
|
|
67
|
+
success: false,
|
|
68
|
+
damage: 0,
|
|
69
|
+
destroyed: false,
|
|
70
|
+
remainingHitPoints: destructible.hitPoints,
|
|
71
|
+
requiresWeapon: true
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
if (destructible.requiresType && weaponType !== destructible.requiresType) {
|
|
75
|
+
return {
|
|
76
|
+
success: false,
|
|
77
|
+
damage: 0,
|
|
78
|
+
destroyed: false,
|
|
79
|
+
remainingHitPoints: destructible.hitPoints,
|
|
80
|
+
wrongWeaponType: true
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
// Apply armor reduction
|
|
84
|
+
const actualDamage = Math.max(1, damage - destructible.armor);
|
|
85
|
+
// Apply damage
|
|
86
|
+
destructible.hitPoints = Math.max(0, destructible.hitPoints - actualDamage);
|
|
87
|
+
const result = {
|
|
88
|
+
success: true,
|
|
89
|
+
damage: actualDamage,
|
|
90
|
+
destroyed: destructible.hitPoints <= 0,
|
|
91
|
+
remainingHitPoints: destructible.hitPoints,
|
|
92
|
+
message: destructible.hitPoints > 0 ? destructible.damageMessage : destructible.destroyMessage
|
|
93
|
+
};
|
|
94
|
+
// Handle destruction
|
|
95
|
+
if (destructible.hitPoints <= 0) {
|
|
96
|
+
// Transform entity if specified
|
|
97
|
+
if (destructible.transformTo) {
|
|
98
|
+
const location = world.getLocation(entity.id);
|
|
99
|
+
const newName = `transformed ${entity.id}`;
|
|
100
|
+
const newEntity = world.createEntity(newName, destructible.transformTo);
|
|
101
|
+
if (location && newEntity) {
|
|
102
|
+
world.moveEntity(newEntity.id, location);
|
|
103
|
+
result.transformedTo = newEntity.id;
|
|
104
|
+
// Remove original entity
|
|
105
|
+
world.removeEntity(entity.id);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// Reveal exit if specified
|
|
109
|
+
if (destructible.revealExit) {
|
|
110
|
+
result.exitRevealed = destructible.revealExit;
|
|
111
|
+
// The action will handle actually revealing the exit in the room
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return result;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Check if entity is destroyed
|
|
118
|
+
*/
|
|
119
|
+
static isDestroyed(entity) {
|
|
120
|
+
if (!entity.has(trait_types_1.TraitType.DESTRUCTIBLE)) {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
const destructible = entity.get(trait_types_1.TraitType.DESTRUCTIBLE);
|
|
124
|
+
return destructible.hitPoints <= 0;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Get remaining hit points
|
|
128
|
+
*/
|
|
129
|
+
static getHitPoints(entity) {
|
|
130
|
+
const destructible = DestructibleBehavior.require(entity, trait_types_1.TraitType.DESTRUCTIBLE);
|
|
131
|
+
return destructible.hitPoints;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Repair entity (restore hit points)
|
|
135
|
+
*/
|
|
136
|
+
static repair(entity) {
|
|
137
|
+
const destructible = DestructibleBehavior.require(entity, trait_types_1.TraitType.DESTRUCTIBLE);
|
|
138
|
+
if (destructible.hitPoints >= destructible.maxHitPoints)
|
|
139
|
+
return false;
|
|
140
|
+
destructible.hitPoints = destructible.maxHitPoints;
|
|
141
|
+
return true;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
exports.DestructibleBehavior = DestructibleBehavior;
|
|
145
|
+
//# sourceMappingURL=destructibleBehavior.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"destructibleBehavior.js","sourceRoot":"","sources":["../../../src/traits/destructible/destructibleBehavior.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Destructible trait for entities that require multiple hits or specific tools to destroy
|
|
3
|
+
*/
|
|
4
|
+
import { ITrait } from '../trait';
|
|
5
|
+
export interface IDestructibleData {
|
|
6
|
+
/** Current hit points */
|
|
7
|
+
hitPoints?: number;
|
|
8
|
+
/** Maximum hit points */
|
|
9
|
+
maxHitPoints?: number;
|
|
10
|
+
/** Whether this requires a weapon to damage */
|
|
11
|
+
requiresWeapon?: boolean;
|
|
12
|
+
/** Specific weapon type required (e.g., 'blade', 'magic') */
|
|
13
|
+
requiresType?: string;
|
|
14
|
+
/** Entity type to transform into when destroyed */
|
|
15
|
+
transformTo?: string;
|
|
16
|
+
/** Exit direction to reveal when destroyed (for barriers) */
|
|
17
|
+
revealExit?: string;
|
|
18
|
+
/** Custom message when damaged but not destroyed - injected into events */
|
|
19
|
+
damageMessage?: string;
|
|
20
|
+
/** Custom message when destroyed - injected into events */
|
|
21
|
+
destroyMessage?: string;
|
|
22
|
+
/** Whether this is invulnerable to normal attacks */
|
|
23
|
+
invulnerable?: boolean;
|
|
24
|
+
/** Armor value that reduces damage */
|
|
25
|
+
armor?: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Destructible trait indicates an entity can be destroyed with multiple hits.
|
|
29
|
+
*
|
|
30
|
+
* This trait contains only data - all destruction logic
|
|
31
|
+
* is in DestructibleBehavior. Messages are stored here to be
|
|
32
|
+
* injected into events during the report phase.
|
|
33
|
+
*/
|
|
34
|
+
export declare class DestructibleTrait implements ITrait, IDestructibleData {
|
|
35
|
+
static readonly type: "destructible";
|
|
36
|
+
readonly type: "destructible";
|
|
37
|
+
hitPoints: number;
|
|
38
|
+
maxHitPoints: number;
|
|
39
|
+
requiresWeapon: boolean;
|
|
40
|
+
requiresType?: string;
|
|
41
|
+
transformTo?: string;
|
|
42
|
+
revealExit?: string;
|
|
43
|
+
damageMessage?: string;
|
|
44
|
+
destroyMessage?: string;
|
|
45
|
+
invulnerable: boolean;
|
|
46
|
+
armor: number;
|
|
47
|
+
constructor(data?: IDestructibleData);
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=destructibleTrait.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"destructibleTrait.d.ts","sourceRoot":"","sources":["../../../src/traits/destructible/destructibleTrait.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,MAAM,WAAW,iBAAiB;IAChC,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,yBAAyB;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,qDAAqD;IACrD,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,qBAAa,iBAAkB,YAAW,MAAM,EAAE,iBAAiB;IACjE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,cAAc,CAAU;IAC/C,QAAQ,CAAC,IAAI,EAAG,cAAc,CAAU;IAGxC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;gBAEF,IAAI,GAAE,iBAAsB;CAazC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Destructible trait for entities that require multiple hits or specific tools to destroy
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DestructibleTrait = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Destructible trait indicates an entity can be destroyed with multiple hits.
|
|
9
|
+
*
|
|
10
|
+
* This trait contains only data - all destruction logic
|
|
11
|
+
* is in DestructibleBehavior. Messages are stored here to be
|
|
12
|
+
* injected into events during the report phase.
|
|
13
|
+
*/
|
|
14
|
+
class DestructibleTrait {
|
|
15
|
+
static type = 'destructible';
|
|
16
|
+
type = 'destructible';
|
|
17
|
+
// DestructibleData properties
|
|
18
|
+
hitPoints;
|
|
19
|
+
maxHitPoints;
|
|
20
|
+
requiresWeapon;
|
|
21
|
+
requiresType;
|
|
22
|
+
transformTo;
|
|
23
|
+
revealExit;
|
|
24
|
+
damageMessage;
|
|
25
|
+
destroyMessage;
|
|
26
|
+
invulnerable;
|
|
27
|
+
armor;
|
|
28
|
+
constructor(data = {}) {
|
|
29
|
+
// Set defaults and merge with provided data
|
|
30
|
+
this.hitPoints = data.hitPoints ?? data.maxHitPoints ?? 3;
|
|
31
|
+
this.maxHitPoints = data.maxHitPoints ?? 3;
|
|
32
|
+
this.requiresWeapon = data.requiresWeapon ?? false;
|
|
33
|
+
this.requiresType = data.requiresType;
|
|
34
|
+
this.transformTo = data.transformTo;
|
|
35
|
+
this.revealExit = data.revealExit;
|
|
36
|
+
this.damageMessage = data.damageMessage;
|
|
37
|
+
this.destroyMessage = data.destroyMessage;
|
|
38
|
+
this.invulnerable = data.invulnerable ?? false;
|
|
39
|
+
this.armor = data.armor ?? 0;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.DestructibleTrait = DestructibleTrait;
|
|
43
|
+
//# sourceMappingURL=destructibleTrait.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"destructibleTrait.js","sourceRoot":"","sources":["../../../src/traits/destructible/destructibleTrait.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAqCH;;;;;;GAMG;AACH,MAAa,iBAAiB;IAC5B,MAAM,CAAU,IAAI,GAAG,cAAuB,CAAC;IACtC,IAAI,GAAG,cAAuB,CAAC;IAExC,8BAA8B;IAC9B,SAAS,CAAS;IAClB,YAAY,CAAS;IACrB,cAAc,CAAU;IACxB,YAAY,CAAU;IACtB,WAAW,CAAU;IACrB,UAAU,CAAU;IACpB,aAAa,CAAU;IACvB,cAAc,CAAU;IACxB,YAAY,CAAU;IACtB,KAAK,CAAS;IAEd,YAAY,OAA0B,EAAE;QACtC,4CAA4C;QAC5C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC;QACnD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC;QAC/C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IAC/B,CAAC;;AA5BH,8CA6BC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/traits/destructible/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DestructibleBehavior = exports.DestructibleTrait = void 0;
|
|
4
|
+
var destructibleTrait_1 = require("./destructibleTrait");
|
|
5
|
+
Object.defineProperty(exports, "DestructibleTrait", { enumerable: true, get: function () { return destructibleTrait_1.DestructibleTrait; } });
|
|
6
|
+
var destructibleBehavior_1 = require("./destructibleBehavior");
|
|
7
|
+
Object.defineProperty(exports, "DestructibleBehavior", { enumerable: true, get: function () { return destructibleBehavior_1.DestructibleBehavior; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/traits/destructible/index.ts"],"names":[],"mappings":";;;AAAA,yDAA2E;AAAlE,sHAAA,iBAAiB,OAAA;AAC1B,+DAA6E;AAApE,4HAAA,oBAAoB,OAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Behavior } from '../../behaviors/behavior';
|
|
2
|
+
import { IFEntity } from '../../entities/if-entity';
|
|
3
|
+
/**
|
|
4
|
+
* Behavior for door entities.
|
|
5
|
+
*
|
|
6
|
+
* Handles the logic for doors that connect two rooms.
|
|
7
|
+
*/
|
|
8
|
+
export declare class DoorBehavior extends Behavior {
|
|
9
|
+
static requiredTraits: "door"[];
|
|
10
|
+
/**
|
|
11
|
+
* Get the rooms this door connects
|
|
12
|
+
*/
|
|
13
|
+
static getRooms(door: IFEntity): [string, string];
|
|
14
|
+
/**
|
|
15
|
+
* Get the other room when coming from a specific room
|
|
16
|
+
* @returns The other room ID, or undefined if the door doesn't connect to the current room
|
|
17
|
+
*/
|
|
18
|
+
static getOtherRoom(door: IFEntity, currentRoom: string): string | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* Check if the door can be traversed in both directions
|
|
21
|
+
*/
|
|
22
|
+
static isBidirectional(door: IFEntity): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Check if the door connects two specific rooms (in any order)
|
|
25
|
+
*/
|
|
26
|
+
static connects(door: IFEntity, room1: string, room2: string): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Check if the door connects to a specific room
|
|
29
|
+
*/
|
|
30
|
+
static connectsTo(door: IFEntity, roomId: string): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Get the entry room (for one-way doors)
|
|
33
|
+
* This is the room you can enter from
|
|
34
|
+
*/
|
|
35
|
+
static getEntryRoom(door: IFEntity): string;
|
|
36
|
+
/**
|
|
37
|
+
* Get the exit room (for one-way doors)
|
|
38
|
+
* This is the room you exit to
|
|
39
|
+
*/
|
|
40
|
+
static getExitRoom(door: IFEntity): string;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=doorBehavior.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doorBehavior.d.ts","sourceRoot":"","sources":["../../../src/traits/door/doorBehavior.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAIpD;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,QAAQ;IACxC,MAAM,CAAC,cAAc,WAAoB;IAEzC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAKjD;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAa5E;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAK/C;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAMtE;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAK1D;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAK3C;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;CAI3C"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// packages/world-model/src/traits/door/doorBehavior.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.DoorBehavior = void 0;
|
|
5
|
+
const behavior_1 = require("../../behaviors/behavior");
|
|
6
|
+
const trait_types_1 = require("../trait-types");
|
|
7
|
+
/**
|
|
8
|
+
* Behavior for door entities.
|
|
9
|
+
*
|
|
10
|
+
* Handles the logic for doors that connect two rooms.
|
|
11
|
+
*/
|
|
12
|
+
class DoorBehavior extends behavior_1.Behavior {
|
|
13
|
+
static requiredTraits = [trait_types_1.TraitType.DOOR];
|
|
14
|
+
/**
|
|
15
|
+
* Get the rooms this door connects
|
|
16
|
+
*/
|
|
17
|
+
static getRooms(door) {
|
|
18
|
+
const trait = DoorBehavior.require(door, trait_types_1.TraitType.DOOR);
|
|
19
|
+
return [trait.room1, trait.room2];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Get the other room when coming from a specific room
|
|
23
|
+
* @returns The other room ID, or undefined if the door doesn't connect to the current room
|
|
24
|
+
*/
|
|
25
|
+
static getOtherRoom(door, currentRoom) {
|
|
26
|
+
const trait = DoorBehavior.require(door, trait_types_1.TraitType.DOOR);
|
|
27
|
+
if (trait.room1 === currentRoom) {
|
|
28
|
+
return trait.room2;
|
|
29
|
+
}
|
|
30
|
+
else if (trait.room2 === currentRoom) {
|
|
31
|
+
// Check if traversal is allowed in this direction
|
|
32
|
+
return trait.bidirectional ? trait.room1 : undefined;
|
|
33
|
+
}
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Check if the door can be traversed in both directions
|
|
38
|
+
*/
|
|
39
|
+
static isBidirectional(door) {
|
|
40
|
+
const trait = DoorBehavior.require(door, trait_types_1.TraitType.DOOR);
|
|
41
|
+
return trait.bidirectional;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Check if the door connects two specific rooms (in any order)
|
|
45
|
+
*/
|
|
46
|
+
static connects(door, room1, room2) {
|
|
47
|
+
const trait = DoorBehavior.require(door, trait_types_1.TraitType.DOOR);
|
|
48
|
+
return (trait.room1 === room1 && trait.room2 === room2) ||
|
|
49
|
+
(trait.room1 === room2 && trait.room2 === room1);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Check if the door connects to a specific room
|
|
53
|
+
*/
|
|
54
|
+
static connectsTo(door, roomId) {
|
|
55
|
+
const trait = DoorBehavior.require(door, trait_types_1.TraitType.DOOR);
|
|
56
|
+
return trait.room1 === roomId || trait.room2 === roomId;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get the entry room (for one-way doors)
|
|
60
|
+
* This is the room you can enter from
|
|
61
|
+
*/
|
|
62
|
+
static getEntryRoom(door) {
|
|
63
|
+
const trait = DoorBehavior.require(door, trait_types_1.TraitType.DOOR);
|
|
64
|
+
return trait.room1;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Get the exit room (for one-way doors)
|
|
68
|
+
* This is the room you exit to
|
|
69
|
+
*/
|
|
70
|
+
static getExitRoom(door) {
|
|
71
|
+
const trait = DoorBehavior.require(door, trait_types_1.TraitType.DOOR);
|
|
72
|
+
return trait.room2;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.DoorBehavior = DoorBehavior;
|
|
76
|
+
//# sourceMappingURL=doorBehavior.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doorBehavior.js","sourceRoot":"","sources":["../../../src/traits/door/doorBehavior.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;AAEvD,uDAAoD;AAEpD,gDAA2C;AAG3C;;;;GAIG;AACH,MAAa,YAAa,SAAQ,mBAAQ;IACxC,MAAM,CAAC,cAAc,GAAG,CAAC,uBAAS,CAAC,IAAI,CAAC,CAAC;IAEzC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAc;QAC5B,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAY,IAAI,EAAE,uBAAS,CAAC,IAAI,CAAC,CAAC;QACpE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,IAAc,EAAE,WAAmB;QACrD,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAY,IAAI,EAAE,uBAAS,CAAC,IAAI,CAAC,CAAC;QAEpE,IAAI,KAAK,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC,KAAK,CAAC;QACrB,CAAC;aAAM,IAAI,KAAK,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YACvC,kDAAkD;YAClD,OAAO,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QACvD,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,IAAc;QACnC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAY,IAAI,EAAE,uBAAS,CAAC,IAAI,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC,aAAa,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAc,EAAE,KAAa,EAAE,KAAa;QAC1D,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAY,IAAI,EAAE,uBAAS,CAAC,IAAI,CAAC,CAAC;QACpE,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC;YAChD,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,IAAc,EAAE,MAAc;QAC9C,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAY,IAAI,EAAE,uBAAS,CAAC,IAAI,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC;IAC1D,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,IAAc;QAChC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAY,IAAI,EAAE,uBAAS,CAAC,IAAI,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,IAAc;QAC/B,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAY,IAAI,EAAE,uBAAS,CAAC,IAAI,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;;AArEH,oCAsEC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ITrait } from '../trait';
|
|
2
|
+
/**
|
|
3
|
+
* Door trait marks an entity as a connection between two rooms.
|
|
4
|
+
*
|
|
5
|
+
* This is a pure data structure - all validation and logic
|
|
6
|
+
* should be handled by DoorBehavior.
|
|
7
|
+
*/
|
|
8
|
+
export declare class DoorTrait implements ITrait {
|
|
9
|
+
static readonly type: "door";
|
|
10
|
+
readonly type: "door";
|
|
11
|
+
/** First room this door connects (must be an entity ID, not a name) */
|
|
12
|
+
room1: string;
|
|
13
|
+
/** Second room this door connects (must be an entity ID, not a name) */
|
|
14
|
+
room2: string;
|
|
15
|
+
/** Whether the door can be traversed in both directions */
|
|
16
|
+
bidirectional: boolean;
|
|
17
|
+
constructor(data?: Partial<DoorTrait>);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=doorTrait.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doorTrait.d.ts","sourceRoot":"","sources":["../../../src/traits/door/doorTrait.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC;;;;;GAKG;AACH,qBAAa,SAAU,YAAW,MAAM;IACtC,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAkB;IACtC,QAAQ,CAAC,IAAI,SAAkB;IAE/B,uEAAuE;IACvE,KAAK,EAAG,MAAM,CAAC;IAEf,wEAAwE;IACxE,KAAK,EAAG,MAAM,CAAC;IAEf,2DAA2D;IAC3D,aAAa,UAAQ;gBAET,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC;CAWtC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// packages/world-model/src/traits/door/doorTrait.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.DoorTrait = void 0;
|
|
5
|
+
const trait_types_1 = require("../trait-types");
|
|
6
|
+
/**
|
|
7
|
+
* Door trait marks an entity as a connection between two rooms.
|
|
8
|
+
*
|
|
9
|
+
* This is a pure data structure - all validation and logic
|
|
10
|
+
* should be handled by DoorBehavior.
|
|
11
|
+
*/
|
|
12
|
+
class DoorTrait {
|
|
13
|
+
static type = trait_types_1.TraitType.DOOR;
|
|
14
|
+
type = trait_types_1.TraitType.DOOR;
|
|
15
|
+
/** First room this door connects (must be an entity ID, not a name) */
|
|
16
|
+
room1;
|
|
17
|
+
/** Second room this door connects (must be an entity ID, not a name) */
|
|
18
|
+
room2;
|
|
19
|
+
/** Whether the door can be traversed in both directions */
|
|
20
|
+
bidirectional = true;
|
|
21
|
+
constructor(data) {
|
|
22
|
+
// Set defaults first
|
|
23
|
+
if (data) {
|
|
24
|
+
Object.assign(this, data);
|
|
25
|
+
}
|
|
26
|
+
// Validate required fields
|
|
27
|
+
if (!this.room1 || !this.room2) {
|
|
28
|
+
throw new Error('Door must connect two rooms');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.DoorTrait = DoorTrait;
|
|
33
|
+
//# sourceMappingURL=doorTrait.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doorTrait.js","sourceRoot":"","sources":["../../../src/traits/door/doorTrait.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAGpD,gDAA2C;AAE3C;;;;;GAKG;AACH,MAAa,SAAS;IACpB,MAAM,CAAU,IAAI,GAAG,uBAAS,CAAC,IAAI,CAAC;IAC7B,IAAI,GAAG,uBAAS,CAAC,IAAI,CAAC;IAE/B,uEAAuE;IACvE,KAAK,CAAU;IAEf,wEAAwE;IACxE,KAAK,CAAU;IAEf,2DAA2D;IAC3D,aAAa,GAAG,IAAI,CAAC;IAErB,YAAY,IAAyB;QACnC,qBAAqB;QACrB,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;;AAvBH,8BAwBC"}
|