@sharpee/world-model 0.9.66-beta → 0.9.69-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/annotations/index.d.ts +2 -0
- package/annotations/index.d.ts.map +1 -0
- package/annotations/index.js +18 -0
- package/annotations/index.js.map +1 -0
- package/annotations/types.d.ts +35 -0
- package/annotations/types.d.ts.map +1 -0
- package/annotations/types.js +9 -0
- package/annotations/types.js.map +1 -0
- package/behaviors/attack.d.ts +52 -0
- package/behaviors/attack.d.ts.map +1 -0
- package/behaviors/attack.js +161 -0
- package/behaviors/attack.js.map +1 -0
- package/behaviors/behavior.d.ts +67 -0
- package/behaviors/behavior.d.ts.map +1 -0
- package/behaviors/behavior.js +80 -0
- package/behaviors/behavior.js.map +1 -0
- package/behaviors/index.d.ts +21 -0
- package/behaviors/index.d.ts.map +1 -0
- package/behaviors/index.js +39 -0
- package/behaviors/index.js.map +1 -0
- package/capabilities/action-interceptor.d.ts +169 -0
- package/capabilities/action-interceptor.d.ts.map +1 -0
- package/capabilities/action-interceptor.js +15 -0
- package/capabilities/action-interceptor.js.map +1 -0
- package/capabilities/capability-behavior.d.ts +112 -0
- package/capabilities/capability-behavior.d.ts.map +1 -0
- package/capabilities/capability-behavior.js +9 -0
- package/capabilities/capability-behavior.js.map +1 -0
- package/capabilities/capability-defaults.d.ts +67 -0
- package/capabilities/capability-defaults.d.ts.map +1 -0
- package/capabilities/capability-defaults.js +81 -0
- package/capabilities/capability-defaults.js.map +1 -0
- package/capabilities/capability-helpers.d.ts +76 -0
- package/capabilities/capability-helpers.d.ts.map +1 -0
- package/capabilities/capability-helpers.js +112 -0
- package/capabilities/capability-helpers.js.map +1 -0
- package/capabilities/capability-registry.d.ts +115 -0
- package/capabilities/capability-registry.d.ts.map +1 -0
- package/capabilities/capability-registry.js +136 -0
- package/capabilities/capability-registry.js.map +1 -0
- package/capabilities/entity-builder.d.ts +79 -0
- package/capabilities/entity-builder.d.ts.map +1 -0
- package/capabilities/entity-builder.js +116 -0
- package/capabilities/entity-builder.js.map +1 -0
- package/capabilities/index.d.ts +16 -0
- package/capabilities/index.d.ts.map +1 -0
- package/capabilities/index.js +56 -0
- package/capabilities/index.js.map +1 -0
- package/capabilities/interceptor-helpers.d.ts +74 -0
- package/capabilities/interceptor-helpers.d.ts.map +1 -0
- package/capabilities/interceptor-helpers.js +111 -0
- package/capabilities/interceptor-helpers.js.map +1 -0
- package/capabilities/interceptor-registry.d.ts +125 -0
- package/capabilities/interceptor-registry.d.ts.map +1 -0
- package/capabilities/interceptor-registry.js +176 -0
- package/capabilities/interceptor-registry.js.map +1 -0
- package/capabilities/types.d.ts +35 -0
- package/capabilities/types.d.ts.map +1 -0
- package/capabilities/types.js +16 -0
- package/capabilities/types.js.map +1 -0
- package/commands/command-types.d.ts +30 -0
- package/commands/command-types.d.ts.map +1 -0
- package/commands/command-types.js +6 -0
- package/commands/command-types.js.map +1 -0
- package/commands/index.d.ts +7 -0
- package/commands/index.d.ts.map +1 -0
- package/commands/index.js +23 -0
- package/commands/index.js.map +1 -0
- package/commands/parsed-command.d.ts +204 -0
- package/commands/parsed-command.d.ts.map +1 -0
- package/commands/parsed-command.js +25 -0
- package/commands/parsed-command.js.map +1 -0
- package/commands/validated-command.d.ts +52 -0
- package/commands/validated-command.d.ts.map +1 -0
- package/commands/validated-command.js +8 -0
- package/commands/validated-command.js.map +1 -0
- package/constants/action-failures.d.ts +54 -0
- package/constants/action-failures.d.ts.map +1 -0
- package/constants/action-failures.js +68 -0
- package/constants/action-failures.js.map +1 -0
- package/constants/directions.d.ts +32 -0
- package/constants/directions.d.ts.map +1 -0
- package/constants/directions.js +53 -0
- package/constants/directions.js.map +1 -0
- package/constants/if-events.d.ts +5 -0
- package/constants/if-events.d.ts.map +1 -0
- package/constants/if-events.js +10 -0
- package/constants/if-events.js.map +1 -0
- package/constants/index.d.ts +9 -0
- package/constants/index.d.ts.map +1 -0
- package/constants/index.js +25 -0
- package/constants/index.js.map +1 -0
- package/entities/entity-store.d.ts +66 -0
- package/entities/entity-store.d.ts.map +1 -0
- package/entities/entity-store.js +116 -0
- package/entities/entity-store.js.map +1 -0
- package/entities/entity-types.d.ts +40 -0
- package/entities/entity-types.d.ts.map +1 -0
- package/entities/entity-types.js +56 -0
- package/entities/entity-types.js.map +1 -0
- package/entities/if-entity.d.ts +314 -0
- package/entities/if-entity.d.ts.map +1 -0
- package/entities/if-entity.js +621 -0
- package/entities/if-entity.js.map +1 -0
- package/entities/index.d.ts +5 -0
- package/entities/index.d.ts.map +1 -0
- package/entities/index.js +13 -0
- package/entities/index.js.map +1 -0
- package/events/types.d.ts +45 -0
- package/events/types.d.ts.map +1 -0
- package/events/types.js +9 -0
- package/events/types.js.map +1 -0
- package/examples/event-handler-registration.d.ts +14 -0
- package/examples/event-handler-registration.d.ts.map +1 -0
- package/examples/event-handler-registration.js +158 -0
- package/examples/event-handler-registration.js.map +1 -0
- package/extensions/base-extension.d.ts +69 -0
- package/extensions/base-extension.d.ts.map +1 -0
- package/extensions/base-extension.js +83 -0
- package/extensions/base-extension.js.map +1 -0
- package/extensions/index.d.ts +11 -0
- package/extensions/index.d.ts.map +1 -0
- package/extensions/index.js +39 -0
- package/extensions/index.js.map +1 -0
- package/extensions/loader.d.ts +52 -0
- package/extensions/loader.d.ts.map +1 -0
- package/extensions/loader.js +177 -0
- package/extensions/loader.js.map +1 -0
- package/extensions/manager.d.ts +68 -0
- package/extensions/manager.d.ts.map +1 -0
- package/extensions/manager.js +164 -0
- package/extensions/manager.js.map +1 -0
- package/extensions/registry.d.ts +100 -0
- package/extensions/registry.d.ts.map +1 -0
- package/extensions/registry.js +193 -0
- package/extensions/registry.js.map +1 -0
- package/extensions/types.d.ts +226 -0
- package/extensions/types.d.ts.map +1 -0
- package/extensions/types.js +28 -0
- package/extensions/types.js.map +1 -0
- package/index.d.ts +41 -0
- package/index.d.ts.map +1 -0
- package/index.js +71 -0
- package/index.js.map +1 -0
- package/interfaces/command-executor.d.ts +17 -0
- package/interfaces/command-executor.d.ts.map +1 -0
- package/interfaces/command-executor.js +6 -0
- package/interfaces/command-executor.js.map +1 -0
- package/interfaces/command-processor.d.ts +17 -0
- package/interfaces/command-processor.d.ts.map +1 -0
- package/interfaces/command-processor.js +6 -0
- package/interfaces/command-processor.js.map +1 -0
- package/interfaces/command-validator.d.ts +17 -0
- package/interfaces/command-validator.d.ts.map +1 -0
- package/interfaces/command-validator.js +6 -0
- package/interfaces/command-validator.js.map +1 -0
- package/interfaces/index.d.ts +8 -0
- package/interfaces/index.d.ts.map +1 -0
- package/interfaces/index.js +24 -0
- package/interfaces/index.js.map +1 -0
- package/interfaces/language-provider.d.ts +86 -0
- package/interfaces/language-provider.d.ts.map +1 -0
- package/interfaces/language-provider.js +14 -0
- package/interfaces/language-provider.js.map +1 -0
- package/interfaces/parser.d.ts +16 -0
- package/interfaces/parser.d.ts.map +1 -0
- package/interfaces/parser.js +6 -0
- package/interfaces/parser.js.map +1 -0
- package/package.json +1 -16
- package/scope/index.d.ts +8 -0
- package/scope/index.d.ts.map +1 -0
- package/scope/index.js +24 -0
- package/scope/index.js.map +1 -0
- package/scope/scope-evaluator.d.ts +58 -0
- package/scope/scope-evaluator.d.ts.map +1 -0
- package/scope/scope-evaluator.js +207 -0
- package/scope/scope-evaluator.js.map +1 -0
- package/scope/scope-registry.d.ts +59 -0
- package/scope/scope-registry.d.ts.map +1 -0
- package/scope/scope-registry.js +182 -0
- package/scope/scope-registry.js.map +1 -0
- package/scope/scope-rule.d.ts +86 -0
- package/scope/scope-rule.d.ts.map +1 -0
- package/scope/scope-rule.js +7 -0
- package/scope/scope-rule.js.map +1 -0
- package/services/ScopeService.d.ts +8 -0
- package/services/ScopeService.d.ts.map +1 -0
- package/services/ScopeService.js +19 -0
- package/services/ScopeService.js.map +1 -0
- package/services/index.d.ts +2 -0
- package/services/index.d.ts.map +1 -0
- package/services/index.js +6 -0
- package/services/index.js.map +1 -0
- package/test-structure.d.ts +3 -0
- package/test-structure.d.ts.map +1 -0
- package/test-structure.js +26 -0
- package/test-structure.js.map +1 -0
- package/traits/actor/actorBehavior.d.ts +121 -0
- package/traits/actor/actorBehavior.d.ts.map +1 -0
- package/traits/actor/actorBehavior.js +288 -0
- package/traits/actor/actorBehavior.js.map +1 -0
- package/traits/actor/actorTrait.d.ts +158 -0
- package/traits/actor/actorTrait.d.ts.map +1 -0
- package/traits/actor/actorTrait.js +152 -0
- package/traits/actor/actorTrait.js.map +1 -0
- package/traits/actor/index.d.ts +3 -0
- package/traits/actor/index.d.ts.map +1 -0
- package/traits/actor/index.js +11 -0
- package/traits/actor/index.js.map +1 -0
- package/traits/all-traits.d.ts +95 -0
- package/traits/all-traits.d.ts.map +1 -0
- package/traits/all-traits.js +178 -0
- package/traits/all-traits.js.map +1 -0
- package/traits/attached/attachedTrait.d.ts +61 -0
- package/traits/attached/attachedTrait.d.ts.map +1 -0
- package/traits/attached/attachedTrait.js +36 -0
- package/traits/attached/attachedTrait.js.map +1 -0
- package/traits/attached/index.d.ts +2 -0
- package/traits/attached/index.d.ts.map +1 -0
- package/traits/attached/index.js +18 -0
- package/traits/attached/index.js.map +1 -0
- package/traits/breakable/breakableBehavior.d.ts +43 -0
- package/traits/breakable/breakableBehavior.d.ts.map +1 -0
- package/traits/breakable/breakableBehavior.js +70 -0
- package/traits/breakable/breakableBehavior.js.map +1 -0
- package/traits/breakable/breakableTrait.d.ts +22 -0
- package/traits/breakable/breakableTrait.d.ts.map +1 -0
- package/traits/breakable/breakableTrait.js +25 -0
- package/traits/breakable/breakableTrait.js.map +1 -0
- package/traits/breakable/index.d.ts +3 -0
- package/traits/breakable/index.d.ts.map +1 -0
- package/traits/breakable/index.js +8 -0
- package/traits/breakable/index.js.map +1 -0
- package/traits/button/buttonTrait.d.ts +53 -0
- package/traits/button/buttonTrait.d.ts.map +1 -0
- package/traits/button/buttonTrait.js +36 -0
- package/traits/button/buttonTrait.js.map +1 -0
- package/traits/button/index.d.ts +2 -0
- package/traits/button/index.d.ts.map +1 -0
- package/traits/button/index.js +18 -0
- package/traits/button/index.js.map +1 -0
- package/traits/climbable/climbableBehavior.d.ts +37 -0
- package/traits/climbable/climbableBehavior.d.ts.map +1 -0
- package/traits/climbable/climbableBehavior.js +70 -0
- package/traits/climbable/climbableBehavior.js.map +1 -0
- package/traits/climbable/climbableTrait.d.ts +31 -0
- package/traits/climbable/climbableTrait.d.ts.map +1 -0
- package/traits/climbable/climbableTrait.js +47 -0
- package/traits/climbable/climbableTrait.js.map +1 -0
- package/traits/climbable/index.d.ts +6 -0
- package/traits/climbable/index.d.ts.map +1 -0
- package/traits/climbable/index.js +22 -0
- package/traits/climbable/index.js.map +1 -0
- package/traits/clothing/clothingTrait.d.ts +58 -0
- package/traits/clothing/clothingTrait.d.ts.map +1 -0
- package/traits/clothing/clothingTrait.js +78 -0
- package/traits/clothing/clothingTrait.js.map +1 -0
- package/traits/clothing/index.d.ts +2 -0
- package/traits/clothing/index.d.ts.map +1 -0
- package/traits/clothing/index.js +19 -0
- package/traits/clothing/index.js.map +1 -0
- package/traits/combatant/combatantBehavior.d.ts +70 -0
- package/traits/combatant/combatantBehavior.d.ts.map +1 -0
- package/traits/combatant/combatantBehavior.js +155 -0
- package/traits/combatant/combatantBehavior.js.map +1 -0
- package/traits/combatant/combatantTrait.d.ts +98 -0
- package/traits/combatant/combatantTrait.d.ts.map +1 -0
- package/traits/combatant/combatantTrait.js +122 -0
- package/traits/combatant/combatantTrait.js.map +1 -0
- package/traits/combatant/index.d.ts +3 -0
- package/traits/combatant/index.d.ts.map +1 -0
- package/traits/combatant/index.js +8 -0
- package/traits/combatant/index.js.map +1 -0
- package/traits/container/container-utils.d.ts +39 -0
- package/traits/container/container-utils.d.ts.map +1 -0
- package/traits/container/container-utils.js +72 -0
- package/traits/container/container-utils.js.map +1 -0
- package/traits/container/containerBehavior.d.ts +94 -0
- package/traits/container/containerBehavior.d.ts.map +1 -0
- package/traits/container/containerBehavior.js +256 -0
- package/traits/container/containerBehavior.js.map +1 -0
- package/traits/container/containerTrait.d.ts +30 -0
- package/traits/container/containerTrait.d.ts.map +1 -0
- package/traits/container/containerTrait.js +45 -0
- package/traits/container/containerTrait.js.map +1 -0
- package/traits/container/index.d.ts +4 -0
- package/traits/container/index.d.ts.map +1 -0
- package/traits/container/index.js +14 -0
- package/traits/container/index.js.map +1 -0
- package/traits/destructible/destructibleBehavior.d.ts +57 -0
- package/traits/destructible/destructibleBehavior.d.ts.map +1 -0
- package/traits/destructible/destructibleBehavior.js +145 -0
- package/traits/destructible/destructibleBehavior.js.map +1 -0
- package/traits/destructible/destructibleTrait.d.ts +49 -0
- package/traits/destructible/destructibleTrait.d.ts.map +1 -0
- package/traits/destructible/destructibleTrait.js +43 -0
- package/traits/destructible/destructibleTrait.js.map +1 -0
- package/traits/destructible/index.d.ts +3 -0
- package/traits/destructible/index.d.ts.map +1 -0
- package/traits/destructible/index.js +8 -0
- package/traits/destructible/index.js.map +1 -0
- package/traits/door/doorBehavior.d.ts +42 -0
- package/traits/door/doorBehavior.d.ts.map +1 -0
- package/traits/door/doorBehavior.js +76 -0
- package/traits/door/doorBehavior.js.map +1 -0
- package/traits/door/doorTrait.d.ts +19 -0
- package/traits/door/doorTrait.d.ts.map +1 -0
- package/traits/door/doorTrait.js +33 -0
- package/traits/door/doorTrait.js.map +1 -0
- package/traits/door/index.d.ts +3 -0
- package/traits/door/index.d.ts.map +1 -0
- package/traits/door/index.js +9 -0
- package/traits/door/index.js.map +1 -0
- package/traits/edible/edibleBehavior.d.ts +63 -0
- package/traits/edible/edibleBehavior.d.ts.map +1 -0
- package/traits/edible/edibleBehavior.js +157 -0
- package/traits/edible/edibleBehavior.js.map +1 -0
- package/traits/edible/edibleTrait.d.ts +57 -0
- package/traits/edible/edibleTrait.d.ts.map +1 -0
- package/traits/edible/edibleTrait.js +51 -0
- package/traits/edible/edibleTrait.js.map +1 -0
- package/traits/edible/index.d.ts +3 -0
- package/traits/edible/index.d.ts.map +1 -0
- package/traits/edible/index.js +20 -0
- package/traits/edible/index.js.map +1 -0
- package/traits/enterable/enterableTrait.d.ts +33 -0
- package/traits/enterable/enterableTrait.d.ts.map +1 -0
- package/traits/enterable/enterableTrait.js +38 -0
- package/traits/enterable/enterableTrait.js.map +1 -0
- package/traits/enterable/index.d.ts +5 -0
- package/traits/enterable/index.d.ts.map +1 -0
- package/traits/enterable/index.js +21 -0
- package/traits/enterable/index.js.map +1 -0
- package/traits/equipped/equippedTrait.d.ts +46 -0
- package/traits/equipped/equippedTrait.d.ts.map +1 -0
- package/traits/equipped/equippedTrait.js +34 -0
- package/traits/equipped/equippedTrait.js.map +1 -0
- package/traits/equipped/index.d.ts +2 -0
- package/traits/equipped/index.d.ts.map +1 -0
- package/traits/equipped/index.js +6 -0
- package/traits/equipped/index.js.map +1 -0
- package/traits/exit/exitBehavior.d.ts +51 -0
- package/traits/exit/exitBehavior.d.ts.map +1 -0
- package/traits/exit/exitBehavior.js +231 -0
- package/traits/exit/exitBehavior.js.map +1 -0
- package/traits/exit/exitTrait.d.ts +41 -0
- package/traits/exit/exitTrait.d.ts.map +1 -0
- package/traits/exit/exitTrait.js +75 -0
- package/traits/exit/exitTrait.js.map +1 -0
- package/traits/exit/index.d.ts +3 -0
- package/traits/exit/index.d.ts.map +1 -0
- package/traits/exit/index.js +9 -0
- package/traits/exit/index.js.map +1 -0
- package/traits/identity/identityBehavior.d.ts +64 -0
- package/traits/identity/identityBehavior.d.ts.map +1 -0
- package/traits/identity/identityBehavior.js +154 -0
- package/traits/identity/identityBehavior.js.map +1 -0
- package/traits/identity/identityTrait.d.ts +70 -0
- package/traits/identity/identityTrait.d.ts.map +1 -0
- package/traits/identity/identityTrait.js +79 -0
- package/traits/identity/identityTrait.js.map +1 -0
- package/traits/identity/index.d.ts +3 -0
- package/traits/identity/index.d.ts.map +1 -0
- package/traits/identity/index.js +20 -0
- package/traits/identity/index.js.map +1 -0
- package/traits/implementations.d.ts +52 -0
- package/traits/implementations.d.ts.map +1 -0
- package/traits/implementations.js +150 -0
- package/traits/implementations.js.map +1 -0
- package/traits/index.d.ts +37 -0
- package/traits/index.d.ts.map +1 -0
- package/traits/index.js +64 -0
- package/traits/index.js.map +1 -0
- package/traits/light-source/index.d.ts +3 -0
- package/traits/light-source/index.d.ts.map +1 -0
- package/traits/light-source/index.js +9 -0
- package/traits/light-source/index.js.map +1 -0
- package/traits/light-source/lightSourceBehavior.d.ts +57 -0
- package/traits/light-source/lightSourceBehavior.d.ts.map +1 -0
- package/traits/light-source/lightSourceBehavior.js +135 -0
- package/traits/light-source/lightSourceBehavior.js.map +1 -0
- package/traits/light-source/lightSourceTrait.d.ts +28 -0
- package/traits/light-source/lightSourceTrait.d.ts.map +1 -0
- package/traits/light-source/lightSourceTrait.js +37 -0
- package/traits/light-source/lightSourceTrait.js.map +1 -0
- package/traits/lockable/index.d.ts +3 -0
- package/traits/lockable/index.d.ts.map +1 -0
- package/traits/lockable/index.js +20 -0
- package/traits/lockable/index.js.map +1 -0
- package/traits/lockable/lockableBehavior.d.ts +88 -0
- package/traits/lockable/lockableBehavior.d.ts.map +1 -0
- package/traits/lockable/lockableBehavior.js +196 -0
- package/traits/lockable/lockableBehavior.js.map +1 -0
- package/traits/lockable/lockableTrait.d.ts +59 -0
- package/traits/lockable/lockableTrait.d.ts.map +1 -0
- package/traits/lockable/lockableTrait.js +50 -0
- package/traits/lockable/lockableTrait.js.map +1 -0
- package/traits/moveable-scenery/index.d.ts +2 -0
- package/traits/moveable-scenery/index.d.ts.map +1 -0
- package/traits/moveable-scenery/index.js +18 -0
- package/traits/moveable-scenery/index.js.map +1 -0
- package/traits/moveable-scenery/moveableSceneryTrait.d.ts +69 -0
- package/traits/moveable-scenery/moveableSceneryTrait.d.ts.map +1 -0
- package/traits/moveable-scenery/moveableSceneryTrait.js +43 -0
- package/traits/moveable-scenery/moveableSceneryTrait.js.map +1 -0
- package/traits/npc/index.d.ts +5 -0
- package/traits/npc/index.d.ts.map +1 -0
- package/traits/npc/index.js +9 -0
- package/traits/npc/index.js.map +1 -0
- package/traits/npc/npcTrait.d.ts +128 -0
- package/traits/npc/npcTrait.d.ts.map +1 -0
- package/traits/npc/npcTrait.js +180 -0
- package/traits/npc/npcTrait.js.map +1 -0
- package/traits/openable/index.d.ts +3 -0
- package/traits/openable/index.d.ts.map +1 -0
- package/traits/openable/index.js +20 -0
- package/traits/openable/index.js.map +1 -0
- package/traits/openable/openableBehavior.d.ts +64 -0
- package/traits/openable/openableBehavior.d.ts.map +1 -0
- package/traits/openable/openableBehavior.js +109 -0
- package/traits/openable/openableBehavior.js.map +1 -0
- package/traits/openable/openableTrait.d.ts +46 -0
- package/traits/openable/openableTrait.d.ts.map +1 -0
- package/traits/openable/openableTrait.js +42 -0
- package/traits/openable/openableTrait.js.map +1 -0
- package/traits/pullable/index.d.ts +2 -0
- package/traits/pullable/index.d.ts.map +1 -0
- package/traits/pullable/index.js +18 -0
- package/traits/pullable/index.js.map +1 -0
- package/traits/pullable/pullableTrait.d.ts +81 -0
- package/traits/pullable/pullableTrait.d.ts.map +1 -0
- package/traits/pullable/pullableTrait.js +44 -0
- package/traits/pullable/pullableTrait.js.map +1 -0
- package/traits/pushable/index.d.ts +2 -0
- package/traits/pushable/index.d.ts.map +1 -0
- package/traits/pushable/index.js +18 -0
- package/traits/pushable/index.js.map +1 -0
- package/traits/pushable/pushableTrait.d.ts +81 -0
- package/traits/pushable/pushableTrait.d.ts.map +1 -0
- package/traits/pushable/pushableTrait.js +44 -0
- package/traits/pushable/pushableTrait.js.map +1 -0
- package/traits/readable/index.d.ts +3 -0
- package/traits/readable/index.d.ts.map +1 -0
- package/traits/readable/index.js +9 -0
- package/traits/readable/index.js.map +1 -0
- package/traits/readable/readableBehavior.d.ts +42 -0
- package/traits/readable/readableBehavior.d.ts.map +1 -0
- package/traits/readable/readableBehavior.js +174 -0
- package/traits/readable/readableBehavior.js.map +1 -0
- package/traits/readable/readableTrait.d.ts +37 -0
- package/traits/readable/readableTrait.d.ts.map +1 -0
- package/traits/readable/readableTrait.js +51 -0
- package/traits/readable/readableTrait.js.map +1 -0
- package/traits/register-all.d.ts +10 -0
- package/traits/register-all.d.ts.map +1 -0
- package/traits/register-all.js +19 -0
- package/traits/register-all.js.map +1 -0
- package/traits/room/index.d.ts +9 -0
- package/traits/room/index.d.ts.map +1 -0
- package/traits/room/index.js +14 -0
- package/traits/room/index.js.map +1 -0
- package/traits/room/roomBehavior.d.ts +87 -0
- package/traits/room/roomBehavior.d.ts.map +1 -0
- package/traits/room/roomBehavior.js +232 -0
- package/traits/room/roomBehavior.js.map +1 -0
- package/traits/room/roomTrait.d.ts +101 -0
- package/traits/room/roomTrait.d.ts.map +1 -0
- package/traits/room/roomTrait.js +59 -0
- package/traits/room/roomTrait.js.map +1 -0
- package/traits/scenery/index.d.ts +3 -0
- package/traits/scenery/index.d.ts.map +1 -0
- package/traits/scenery/index.js +9 -0
- package/traits/scenery/index.js.map +1 -0
- package/traits/scenery/sceneryBehavior.d.ts +21 -0
- package/traits/scenery/sceneryBehavior.d.ts.map +1 -0
- package/traits/scenery/sceneryBehavior.js +42 -0
- package/traits/scenery/sceneryBehavior.js.map +1 -0
- package/traits/scenery/sceneryTrait.d.ts +30 -0
- package/traits/scenery/sceneryTrait.d.ts.map +1 -0
- package/traits/scenery/sceneryTrait.js +39 -0
- package/traits/scenery/sceneryTrait.js.map +1 -0
- package/traits/story-info/index.d.ts +2 -0
- package/traits/story-info/index.d.ts.map +1 -0
- package/traits/story-info/index.js +6 -0
- package/traits/story-info/index.js.map +1 -0
- package/traits/story-info/storyInfoTrait.d.ts +22 -0
- package/traits/story-info/storyInfoTrait.d.ts.map +1 -0
- package/traits/story-info/storyInfoTrait.js +30 -0
- package/traits/story-info/storyInfoTrait.js.map +1 -0
- package/traits/supporter/index.d.ts +3 -0
- package/traits/supporter/index.d.ts.map +1 -0
- package/traits/supporter/index.js +9 -0
- package/traits/supporter/index.js.map +1 -0
- package/traits/supporter/supporterBehavior.d.ts +83 -0
- package/traits/supporter/supporterBehavior.d.ts.map +1 -0
- package/traits/supporter/supporterBehavior.js +210 -0
- package/traits/supporter/supporterBehavior.js.map +1 -0
- package/traits/supporter/supporterTrait.d.ts +26 -0
- package/traits/supporter/supporterTrait.d.ts.map +1 -0
- package/traits/supporter/supporterTrait.js +30 -0
- package/traits/supporter/supporterTrait.js.map +1 -0
- package/traits/switchable/index.d.ts +3 -0
- package/traits/switchable/index.d.ts.map +1 -0
- package/traits/switchable/index.js +20 -0
- package/traits/switchable/index.js.map +1 -0
- package/traits/switchable/switchableBehavior.d.ts +73 -0
- package/traits/switchable/switchableBehavior.d.ts.map +1 -0
- package/traits/switchable/switchableBehavior.js +191 -0
- package/traits/switchable/switchableBehavior.js.map +1 -0
- package/traits/switchable/switchableTrait.d.ts +61 -0
- package/traits/switchable/switchableTrait.d.ts.map +1 -0
- package/traits/switchable/switchableTrait.js +52 -0
- package/traits/switchable/switchableTrait.js.map +1 -0
- package/traits/trait-types.d.ts +82 -0
- package/traits/trait-types.d.ts.map +1 -0
- package/traits/trait-types.js +150 -0
- package/traits/trait-types.js.map +1 -0
- package/traits/trait.d.ts +44 -0
- package/traits/trait.d.ts.map +1 -0
- package/traits/trait.js +42 -0
- package/traits/trait.js.map +1 -0
- package/traits/vehicle/index.d.ts +6 -0
- package/traits/vehicle/index.d.ts.map +1 -0
- package/traits/vehicle/index.js +22 -0
- package/traits/vehicle/index.js.map +1 -0
- package/traits/vehicle/vehicleBehavior.d.ts +62 -0
- package/traits/vehicle/vehicleBehavior.d.ts.map +1 -0
- package/traits/vehicle/vehicleBehavior.js +145 -0
- package/traits/vehicle/vehicleBehavior.js.map +1 -0
- package/traits/vehicle/vehicleTrait.d.ts +77 -0
- package/traits/vehicle/vehicleTrait.d.ts.map +1 -0
- package/traits/vehicle/vehicleTrait.js +92 -0
- package/traits/vehicle/vehicleTrait.js.map +1 -0
- package/traits/weapon/index.d.ts +3 -0
- package/traits/weapon/index.d.ts.map +1 -0
- package/traits/weapon/index.js +8 -0
- package/traits/weapon/index.js.map +1 -0
- package/traits/weapon/weaponBehavior.d.ts +47 -0
- package/traits/weapon/weaponBehavior.d.ts.map +1 -0
- package/traits/weapon/weaponBehavior.js +106 -0
- package/traits/weapon/weaponBehavior.js.map +1 -0
- package/traits/weapon/weaponTrait.d.ts +67 -0
- package/traits/weapon/weaponTrait.d.ts.map +1 -0
- package/traits/weapon/weaponTrait.js +60 -0
- package/traits/weapon/weaponTrait.js.map +1 -0
- package/traits/wearable/index.d.ts +3 -0
- package/traits/wearable/index.d.ts.map +1 -0
- package/traits/wearable/index.js +20 -0
- package/traits/wearable/index.js.map +1 -0
- package/traits/wearable/wearableBehavior.d.ts +64 -0
- package/traits/wearable/wearableBehavior.d.ts.map +1 -0
- package/traits/wearable/wearableBehavior.js +142 -0
- package/traits/wearable/wearableBehavior.js.map +1 -0
- package/traits/wearable/wearableTrait.d.ts +54 -0
- package/traits/wearable/wearableTrait.d.ts.map +1 -0
- package/traits/wearable/wearableTrait.js +53 -0
- package/traits/wearable/wearableTrait.js.map +1 -0
- package/utils/event-utils.d.ts +30 -0
- package/utils/event-utils.d.ts.map +1 -0
- package/utils/event-utils.js +33 -0
- package/utils/event-utils.js.map +1 -0
- package/world/AuthorModel.d.ts +151 -0
- package/world/AuthorModel.d.ts.map +1 -0
- package/world/AuthorModel.js +416 -0
- package/world/AuthorModel.js.map +1 -0
- package/world/SharedDataStore.d.ts +24 -0
- package/world/SharedDataStore.d.ts.map +1 -0
- package/world/SharedDataStore.js +50 -0
- package/world/SharedDataStore.js.map +1 -0
- package/world/SpatialIndex.d.ts +16 -0
- package/world/SpatialIndex.d.ts.map +1 -0
- package/world/SpatialIndex.js +117 -0
- package/world/SpatialIndex.js.map +1 -0
- package/world/VisibilityBehavior.d.ts +83 -0
- package/world/VisibilityBehavior.d.ts.map +1 -0
- package/world/VisibilityBehavior.js +484 -0
- package/world/VisibilityBehavior.js.map +1 -0
- package/world/WorldModel.d.ts +301 -0
- package/world/WorldModel.d.ts.map +1 -0
- package/world/WorldModel.js +1085 -0
- package/world/WorldModel.js.map +1 -0
- package/world/capabilities.d.ts +36 -0
- package/world/capabilities.d.ts.map +1 -0
- package/world/capabilities.js +18 -0
- package/world/capabilities.js.map +1 -0
- package/world/index.d.ts +7 -0
- package/world/index.d.ts.map +1 -0
- package/world/index.js +21 -0
- package/world/index.js.map +1 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base trait types and utilities
|
|
3
|
+
*
|
|
4
|
+
* Traits are pure data structures with no behavior.
|
|
5
|
+
* All logic belongs in behaviors.
|
|
6
|
+
*/
|
|
7
|
+
import { TraitType } from './trait-types';
|
|
8
|
+
/**
|
|
9
|
+
* Base trait interface - just type identification
|
|
10
|
+
*/
|
|
11
|
+
export interface ITrait {
|
|
12
|
+
readonly type: TraitType | string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Trait constructor type for registry
|
|
16
|
+
*/
|
|
17
|
+
export interface ITraitConstructor<T extends ITrait = ITrait> {
|
|
18
|
+
new (data?: any): T;
|
|
19
|
+
readonly type: TraitType | string;
|
|
20
|
+
/** Action IDs this trait handles via capability dispatch (ADR-090) */
|
|
21
|
+
readonly capabilities?: readonly string[];
|
|
22
|
+
/** Action IDs this trait intercepts via interceptor hooks (ADR-118) */
|
|
23
|
+
readonly interceptors?: readonly string[];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Type guard to check if an object is a trait
|
|
27
|
+
*/
|
|
28
|
+
export declare function isTrait(obj: any): obj is ITrait;
|
|
29
|
+
/**
|
|
30
|
+
* Helper type to extract trait data type from a trait class
|
|
31
|
+
*/
|
|
32
|
+
export type TraitData<T extends ITrait> = Omit<T, keyof ITrait>;
|
|
33
|
+
/**
|
|
34
|
+
* Registry for trait constructors (optional use)
|
|
35
|
+
*/
|
|
36
|
+
export declare class TraitRegistry {
|
|
37
|
+
private static traits;
|
|
38
|
+
static register(trait: ITraitConstructor): void;
|
|
39
|
+
static get(type: string): ITraitConstructor | undefined;
|
|
40
|
+
static has(type: string): boolean;
|
|
41
|
+
static clear(): void;
|
|
42
|
+
static getAll(): Map<string, ITraitConstructor>;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=trait.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trait.d.ts","sourceRoot":"","sources":["../../../../../../mnt/c/repotemp/sharpee/packages/world-model/src/traits/trait.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAC1D,KAAK,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;IAClC,sEAAsE;IACtE,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,uEAAuE;IACvE,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,CAE/C;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,MAAM,CAAC,CAAC;AAEhE;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAwC;IAE7D,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAO/C,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIvD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC,MAAM,CAAC,KAAK,IAAI,IAAI;IAIpB,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC;CAGhD"}
|
package/traits/trait.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Base trait types and utilities
|
|
4
|
+
*
|
|
5
|
+
* Traits are pure data structures with no behavior.
|
|
6
|
+
* All logic belongs in behaviors.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.TraitRegistry = void 0;
|
|
10
|
+
exports.isTrait = isTrait;
|
|
11
|
+
/**
|
|
12
|
+
* Type guard to check if an object is a trait
|
|
13
|
+
*/
|
|
14
|
+
function isTrait(obj) {
|
|
15
|
+
return obj && typeof obj === 'object' && 'type' in obj && typeof obj.type === 'string';
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Registry for trait constructors (optional use)
|
|
19
|
+
*/
|
|
20
|
+
class TraitRegistry {
|
|
21
|
+
static traits = new Map();
|
|
22
|
+
static register(trait) {
|
|
23
|
+
if (this.traits.has(trait.type)) {
|
|
24
|
+
throw new Error(`Trait type '${trait.type}' is already registered`);
|
|
25
|
+
}
|
|
26
|
+
this.traits.set(trait.type, trait);
|
|
27
|
+
}
|
|
28
|
+
static get(type) {
|
|
29
|
+
return this.traits.get(type);
|
|
30
|
+
}
|
|
31
|
+
static has(type) {
|
|
32
|
+
return this.traits.has(type);
|
|
33
|
+
}
|
|
34
|
+
static clear() {
|
|
35
|
+
this.traits.clear();
|
|
36
|
+
}
|
|
37
|
+
static getAll() {
|
|
38
|
+
return new Map(this.traits);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.TraitRegistry = TraitRegistry;
|
|
42
|
+
//# sourceMappingURL=trait.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trait.js","sourceRoot":"","sources":["../../../../../../../../../mnt/c/repotemp/sharpee/packages/world-model/src/traits/trait.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AA0BH,0BAEC;AALD;;GAEG;AACH,SAAgB,OAAO,CAAC,GAAQ;IAC9B,OAAO,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC;AACzF,CAAC;AAOD;;GAEG;AACH,MAAa,aAAa;IAChB,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG,EAA6B,CAAC;IAE7D,MAAM,CAAC,QAAQ,CAAC,KAAwB;QACtC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,eAAe,KAAK,CAAC,IAAI,yBAAyB,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,KAAK;QACV,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;;AAxBH,sCAyBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../mnt/c/repotemp/sharpee/packages/world-model/src/traits/vehicle/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Vehicle trait module
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
17
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
__exportStar(require("./vehicleTrait"), exports);
|
|
21
|
+
__exportStar(require("./vehicleBehavior"), exports);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../../mnt/c/repotemp/sharpee/packages/world-model/src/traits/vehicle/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,iDAA+B;AAC/B,oDAAkC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vehicle Behavior - Handles vehicle movement and actor transport
|
|
3
|
+
*
|
|
4
|
+
* Provides utilities for:
|
|
5
|
+
* - Moving a vehicle (and its contents) between rooms
|
|
6
|
+
* - Checking if an actor is in a vehicle
|
|
7
|
+
* - Getting the vehicle an actor is in
|
|
8
|
+
*/
|
|
9
|
+
import { WorldModel } from '../../world/WorldModel';
|
|
10
|
+
import { IFEntity } from '../../entities/if-entity';
|
|
11
|
+
/**
|
|
12
|
+
* Check if an entity is a vehicle
|
|
13
|
+
*/
|
|
14
|
+
export declare function isVehicle(entity: IFEntity): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Check if an actor is currently inside a vehicle
|
|
17
|
+
*/
|
|
18
|
+
export declare function isActorInVehicle(world: WorldModel, actorId: string): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Get the vehicle an actor is in, or undefined if not in a vehicle
|
|
21
|
+
*/
|
|
22
|
+
export declare function getActorVehicle(world: WorldModel, actorId: string): IFEntity | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* Get all actors currently inside a vehicle
|
|
25
|
+
*/
|
|
26
|
+
export declare function getVehicleOccupants(world: WorldModel, vehicleId: string): IFEntity[];
|
|
27
|
+
/**
|
|
28
|
+
* Move a vehicle to a new room, transporting all contents with it.
|
|
29
|
+
* Returns true if movement succeeded.
|
|
30
|
+
*
|
|
31
|
+
* This is the core vehicle transport function - when a vehicle moves,
|
|
32
|
+
* everything inside it (including actors) moves with it.
|
|
33
|
+
*/
|
|
34
|
+
export declare function moveVehicle(world: WorldModel, vehicleId: string, destinationRoomId: string): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Check if a vehicle can move (is operational)
|
|
37
|
+
*/
|
|
38
|
+
export declare function canVehicleMove(vehicle: IFEntity): {
|
|
39
|
+
canMove: boolean;
|
|
40
|
+
reason?: string;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Check if an actor can exit their current location.
|
|
44
|
+
* If in a vehicle that requires exit, they cannot simply walk out.
|
|
45
|
+
*/
|
|
46
|
+
export declare function canActorLeaveLocation(world: WorldModel, actorId: string): {
|
|
47
|
+
canLeave: boolean;
|
|
48
|
+
mustExitVehicle?: IFEntity;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Check if an actor in a vehicle can use GO/walk commands.
|
|
52
|
+
* Some vehicles block walking movement entirely.
|
|
53
|
+
*
|
|
54
|
+
* Returns:
|
|
55
|
+
* - canWalk: true if actor can use GO commands (not in vehicle, or in walkable vehicle)
|
|
56
|
+
* - vehicle: the vehicle entity if actor is in one (undefined if not in a vehicle)
|
|
57
|
+
*/
|
|
58
|
+
export declare function canActorWalkInVehicle(world: WorldModel, actorId: string): {
|
|
59
|
+
canWalk: boolean;
|
|
60
|
+
vehicle?: IFEntity;
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=vehicleBehavior.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vehicleBehavior.d.ts","sourceRoot":"","sources":["../../../../../../../mnt/c/repotemp/sharpee/packages/world-model/src/traits/vehicle/vehicleBehavior.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAIpD;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAEnD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAQ5E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAYxF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,QAAQ,EAAE,CAGpF;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,UAAU,EACjB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAsBT;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,QAAQ,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAcvF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,MAAM,GACd;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,QAAQ,CAAA;CAAE,CAiBnD;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,MAAM,GACd;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,QAAQ,CAAA;CAAE,CAmB1C"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Vehicle Behavior - Handles vehicle movement and actor transport
|
|
4
|
+
*
|
|
5
|
+
* Provides utilities for:
|
|
6
|
+
* - Moving a vehicle (and its contents) between rooms
|
|
7
|
+
* - Checking if an actor is in a vehicle
|
|
8
|
+
* - Getting the vehicle an actor is in
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.isVehicle = isVehicle;
|
|
12
|
+
exports.isActorInVehicle = isActorInVehicle;
|
|
13
|
+
exports.getActorVehicle = getActorVehicle;
|
|
14
|
+
exports.getVehicleOccupants = getVehicleOccupants;
|
|
15
|
+
exports.moveVehicle = moveVehicle;
|
|
16
|
+
exports.canVehicleMove = canVehicleMove;
|
|
17
|
+
exports.canActorLeaveLocation = canActorLeaveLocation;
|
|
18
|
+
exports.canActorWalkInVehicle = canActorWalkInVehicle;
|
|
19
|
+
const trait_types_1 = require("../trait-types");
|
|
20
|
+
/**
|
|
21
|
+
* Check if an entity is a vehicle
|
|
22
|
+
*/
|
|
23
|
+
function isVehicle(entity) {
|
|
24
|
+
return entity.has(trait_types_1.TraitType.VEHICLE);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Check if an actor is currently inside a vehicle
|
|
28
|
+
*/
|
|
29
|
+
function isActorInVehicle(world, actorId) {
|
|
30
|
+
const location = world.getLocation(actorId);
|
|
31
|
+
if (!location)
|
|
32
|
+
return false;
|
|
33
|
+
const locationEntity = world.getEntity(location);
|
|
34
|
+
if (!locationEntity)
|
|
35
|
+
return false;
|
|
36
|
+
return isVehicle(locationEntity);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get the vehicle an actor is in, or undefined if not in a vehicle
|
|
40
|
+
*/
|
|
41
|
+
function getActorVehicle(world, actorId) {
|
|
42
|
+
const location = world.getLocation(actorId);
|
|
43
|
+
if (!location)
|
|
44
|
+
return undefined;
|
|
45
|
+
const locationEntity = world.getEntity(location);
|
|
46
|
+
if (!locationEntity)
|
|
47
|
+
return undefined;
|
|
48
|
+
if (isVehicle(locationEntity)) {
|
|
49
|
+
return locationEntity;
|
|
50
|
+
}
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get all actors currently inside a vehicle
|
|
55
|
+
*/
|
|
56
|
+
function getVehicleOccupants(world, vehicleId) {
|
|
57
|
+
const contents = world.getContents(vehicleId);
|
|
58
|
+
return contents.filter((entity) => entity.has(trait_types_1.TraitType.ACTOR));
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Move a vehicle to a new room, transporting all contents with it.
|
|
62
|
+
* Returns true if movement succeeded.
|
|
63
|
+
*
|
|
64
|
+
* This is the core vehicle transport function - when a vehicle moves,
|
|
65
|
+
* everything inside it (including actors) moves with it.
|
|
66
|
+
*/
|
|
67
|
+
function moveVehicle(world, vehicleId, destinationRoomId) {
|
|
68
|
+
const vehicle = world.getEntity(vehicleId);
|
|
69
|
+
if (!vehicle)
|
|
70
|
+
return false;
|
|
71
|
+
const vehicleTrait = vehicle.get(trait_types_1.TraitType.VEHICLE);
|
|
72
|
+
if (!vehicleTrait)
|
|
73
|
+
return false;
|
|
74
|
+
// Move the vehicle to the new room
|
|
75
|
+
world.moveEntity(vehicleId, destinationRoomId);
|
|
76
|
+
// Update vehicle position if using position tracking
|
|
77
|
+
if (vehicleTrait.positionRooms) {
|
|
78
|
+
// Find position name for this room
|
|
79
|
+
const positionEntry = Object.entries(vehicleTrait.positionRooms)
|
|
80
|
+
.find(([_, roomId]) => roomId === destinationRoomId);
|
|
81
|
+
if (positionEntry) {
|
|
82
|
+
vehicleTrait.currentPosition = positionEntry[0];
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Check if a vehicle can move (is operational)
|
|
89
|
+
*/
|
|
90
|
+
function canVehicleMove(vehicle) {
|
|
91
|
+
const vehicleTrait = vehicle.get(trait_types_1.TraitType.VEHICLE);
|
|
92
|
+
if (!vehicleTrait) {
|
|
93
|
+
return { canMove: false, reason: 'Not a vehicle' };
|
|
94
|
+
}
|
|
95
|
+
if (!vehicleTrait.isOperational) {
|
|
96
|
+
return {
|
|
97
|
+
canMove: false,
|
|
98
|
+
reason: vehicleTrait.notOperationalReason ?? 'The vehicle is not operational'
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
return { canMove: true };
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Check if an actor can exit their current location.
|
|
105
|
+
* If in a vehicle that requires exit, they cannot simply walk out.
|
|
106
|
+
*/
|
|
107
|
+
function canActorLeaveLocation(world, actorId) {
|
|
108
|
+
const vehicle = getActorVehicle(world, actorId);
|
|
109
|
+
if (!vehicle) {
|
|
110
|
+
return { canLeave: true };
|
|
111
|
+
}
|
|
112
|
+
const vehicleTrait = vehicle.get(trait_types_1.TraitType.VEHICLE);
|
|
113
|
+
if (!vehicleTrait) {
|
|
114
|
+
return { canLeave: true };
|
|
115
|
+
}
|
|
116
|
+
if (vehicleTrait.requiresExitBeforeLeaving) {
|
|
117
|
+
return { canLeave: false, mustExitVehicle: vehicle };
|
|
118
|
+
}
|
|
119
|
+
return { canLeave: true };
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Check if an actor in a vehicle can use GO/walk commands.
|
|
123
|
+
* Some vehicles block walking movement entirely.
|
|
124
|
+
*
|
|
125
|
+
* Returns:
|
|
126
|
+
* - canWalk: true if actor can use GO commands (not in vehicle, or in walkable vehicle)
|
|
127
|
+
* - vehicle: the vehicle entity if actor is in one (undefined if not in a vehicle)
|
|
128
|
+
*/
|
|
129
|
+
function canActorWalkInVehicle(world, actorId) {
|
|
130
|
+
const vehicle = getActorVehicle(world, actorId);
|
|
131
|
+
if (!vehicle) {
|
|
132
|
+
return { canWalk: true };
|
|
133
|
+
}
|
|
134
|
+
const vehicleTrait = vehicle.get(trait_types_1.TraitType.VEHICLE);
|
|
135
|
+
if (!vehicleTrait) {
|
|
136
|
+
// In something with no VehicleTrait - treat as blocking container
|
|
137
|
+
return { canWalk: false, vehicle };
|
|
138
|
+
}
|
|
139
|
+
if (vehicleTrait.blocksWalkingMovement) {
|
|
140
|
+
return { canWalk: false, vehicle };
|
|
141
|
+
}
|
|
142
|
+
// In a walkable vehicle - return the vehicle so caller knows player is in one
|
|
143
|
+
return { canWalk: true, vehicle };
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=vehicleBehavior.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vehicleBehavior.js","sourceRoot":"","sources":["../../../../../../../../../../mnt/c/repotemp/sharpee/packages/world-model/src/traits/vehicle/vehicleBehavior.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAUH,8BAEC;AAKD,4CAQC;AAKD,0CAYC;AAKD,kDAGC;AASD,kCA0BC;AAKD,wCAcC;AAMD,sDAoBC;AAUD,sDAsBC;AA9JD,gDAA2C;AAG3C;;GAEG;AACH,SAAgB,SAAS,CAAC,MAAgB;IACxC,OAAO,MAAM,CAAC,GAAG,CAAC,uBAAS,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,KAAiB,EAAE,OAAe;IACjE,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5B,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,cAAc;QAAE,OAAO,KAAK,CAAC;IAElC,OAAO,SAAS,CAAC,cAAc,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,KAAiB,EAAE,OAAe;IAChE,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEhC,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,cAAc;QAAE,OAAO,SAAS,CAAC;IAEtC,IAAI,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;QAC9B,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,KAAiB,EAAE,SAAiB;IACtE,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC9C,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAgB,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,WAAW,CACzB,KAAiB,EACjB,SAAiB,EACjB,iBAAyB;IAEzB,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE3B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAS,CAAC,OAAO,CAA6B,CAAC;IAChF,IAAI,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IAEhC,mCAAmC;IACnC,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAE/C,qDAAqD;IACrD,IAAI,YAAY,CAAC,aAAa,EAAE,CAAC;QAC/B,mCAAmC;QACnC,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC;aAC7D,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,KAAK,iBAAiB,CAAC,CAAC;QAEvD,IAAI,aAAa,EAAE,CAAC;YAClB,YAAY,CAAC,eAAe,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,OAAiB;IAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAS,CAAC,OAAO,CAA6B,CAAC;IAChF,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;QAChC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,YAAY,CAAC,oBAAoB,IAAI,gCAAgC;SAC9E,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,SAAgB,qBAAqB,CACnC,KAAiB,EACjB,OAAe;IAEf,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAEhD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAS,CAAC,OAAO,CAA6B,CAAC;IAChF,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,IAAI,YAAY,CAAC,yBAAyB,EAAE,CAAC;QAC3C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;IACvD,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,qBAAqB,CACnC,KAAiB,EACjB,OAAe;IAEf,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAEhD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAS,CAAC,OAAO,CAA6B,CAAC;IAChF,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,kEAAkE;QAClE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACrC,CAAC;IAED,IAAI,YAAY,CAAC,qBAAqB,EAAE,CAAC;QACvC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACrC,CAAC;IAED,8EAA8E;IAC9E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vehicle Trait - For enterable containers that transport actors
|
|
3
|
+
*
|
|
4
|
+
* Vehicles are enterable containers (bucket, boat, basket, balloon) where:
|
|
5
|
+
* - Actor enters the vehicle (ENTER BUCKET)
|
|
6
|
+
* - Vehicle moves, taking its contents with it
|
|
7
|
+
* - Actor exits the vehicle (EXIT BUCKET)
|
|
8
|
+
*
|
|
9
|
+
* Based on Infocom's vehicle concept from Zork.
|
|
10
|
+
*/
|
|
11
|
+
import { ITrait } from '../trait';
|
|
12
|
+
/**
|
|
13
|
+
* Vehicle type determines movement behavior
|
|
14
|
+
*/
|
|
15
|
+
export type VehicleType = 'counterweight' | 'watercraft' | 'aircraft' | 'cable' | 'generic';
|
|
16
|
+
/**
|
|
17
|
+
* Trait for vehicles - enterable containers that transport actors
|
|
18
|
+
*/
|
|
19
|
+
export declare class VehicleTrait implements ITrait {
|
|
20
|
+
static readonly type: "vehicle";
|
|
21
|
+
readonly type: "vehicle";
|
|
22
|
+
/** Type of vehicle determines default behavior */
|
|
23
|
+
vehicleType: VehicleType;
|
|
24
|
+
/**
|
|
25
|
+
* When vehicle moves, all contents (including actors) move with it.
|
|
26
|
+
* This is always true for vehicles.
|
|
27
|
+
*/
|
|
28
|
+
readonly movesWithContents: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* If true, actor cannot use GO/walk commands while in vehicle.
|
|
31
|
+
* Movement must be through vehicle-specific actions.
|
|
32
|
+
* - Bucket: POUR/FILL moves it
|
|
33
|
+
* - Boat: row, current moves it
|
|
34
|
+
* - Balloon: burn/release moves it
|
|
35
|
+
*/
|
|
36
|
+
blocksWalkingMovement: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* If true, actor must EXIT vehicle before leaving the room on foot.
|
|
39
|
+
* Prevents "GO EAST" while sitting in a bucket.
|
|
40
|
+
*/
|
|
41
|
+
requiresExitBeforeLeaving: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Current location/state of the vehicle (e.g., 'top', 'bottom', 'river-1')
|
|
44
|
+
* Used by vehicle-specific logic to track position.
|
|
45
|
+
*/
|
|
46
|
+
currentPosition?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Map of position names to room IDs.
|
|
49
|
+
* e.g., { 'top': 'top-of-well', 'bottom': 'well-bottom' }
|
|
50
|
+
*/
|
|
51
|
+
positionRooms?: Record<string, string>;
|
|
52
|
+
/**
|
|
53
|
+
* Whether the vehicle is currently operational/usable.
|
|
54
|
+
* Boat might need to be inflated, balloon might need fuel.
|
|
55
|
+
*/
|
|
56
|
+
isOperational: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Reason the vehicle is not operational (for error messages).
|
|
59
|
+
*/
|
|
60
|
+
notOperationalReason?: string;
|
|
61
|
+
/**
|
|
62
|
+
* If true, visibility passes through to the containing room.
|
|
63
|
+
* - Bucket, raft, boat: transparent (can see the room you're in)
|
|
64
|
+
* - Airplane, submarine: not transparent (see vehicle interior only)
|
|
65
|
+
*/
|
|
66
|
+
transparent: boolean;
|
|
67
|
+
constructor(options?: Partial<Omit<VehicleTrait, 'type' | 'movesWithContents'>>);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Type guard for VehicleTrait
|
|
71
|
+
*/
|
|
72
|
+
export declare function isVehicleTrait(trait: ITrait): trait is VehicleTrait;
|
|
73
|
+
/**
|
|
74
|
+
* Factory function for creating VehicleTrait
|
|
75
|
+
*/
|
|
76
|
+
export declare function createVehicleTrait(options?: Partial<Omit<VehicleTrait, 'type' | 'movesWithContents'>>): VehicleTrait;
|
|
77
|
+
//# sourceMappingURL=vehicleTrait.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vehicleTrait.d.ts","sourceRoot":"","sources":["../../../../../../../mnt/c/repotemp/sharpee/packages/world-model/src/traits/vehicle/vehicleTrait.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,eAAe,GACf,YAAY,GACZ,UAAU,GACV,OAAO,GACP,SAAS,CAAC;AAEd;;GAEG;AACH,qBAAa,YAAa,YAAW,MAAM;IACzC,MAAM,CAAC,QAAQ,CAAC,IAAI,YAAqB;IACzC,QAAQ,CAAC,IAAI,YAAqB;IAElC,kDAAkD;IAClD,WAAW,EAAE,WAAW,CAAC;IAEzB;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAQ;IAE3C;;;;;;OAMG;IACH,qBAAqB,EAAE,OAAO,CAAC;IAE/B;;;OAGG;IACH,yBAAyB,EAAE,OAAO,CAAC;IAEnC;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEvC;;;OAGG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;;;OAIG;IACH,WAAW,EAAE,OAAO,CAAC;gBAET,OAAO,GAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,mBAAmB,CAAC,CAAM;CAUpF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,YAAY,CAEnE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,mBAAmB,CAAC,CAAM,GACtE,YAAY,CAEd"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Vehicle Trait - For enterable containers that transport actors
|
|
4
|
+
*
|
|
5
|
+
* Vehicles are enterable containers (bucket, boat, basket, balloon) where:
|
|
6
|
+
* - Actor enters the vehicle (ENTER BUCKET)
|
|
7
|
+
* - Vehicle moves, taking its contents with it
|
|
8
|
+
* - Actor exits the vehicle (EXIT BUCKET)
|
|
9
|
+
*
|
|
10
|
+
* Based on Infocom's vehicle concept from Zork.
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.VehicleTrait = void 0;
|
|
14
|
+
exports.isVehicleTrait = isVehicleTrait;
|
|
15
|
+
exports.createVehicleTrait = createVehicleTrait;
|
|
16
|
+
const trait_types_1 = require("../trait-types");
|
|
17
|
+
/**
|
|
18
|
+
* Trait for vehicles - enterable containers that transport actors
|
|
19
|
+
*/
|
|
20
|
+
class VehicleTrait {
|
|
21
|
+
static type = trait_types_1.TraitType.VEHICLE;
|
|
22
|
+
type = trait_types_1.TraitType.VEHICLE;
|
|
23
|
+
/** Type of vehicle determines default behavior */
|
|
24
|
+
vehicleType;
|
|
25
|
+
/**
|
|
26
|
+
* When vehicle moves, all contents (including actors) move with it.
|
|
27
|
+
* This is always true for vehicles.
|
|
28
|
+
*/
|
|
29
|
+
movesWithContents = true;
|
|
30
|
+
/**
|
|
31
|
+
* If true, actor cannot use GO/walk commands while in vehicle.
|
|
32
|
+
* Movement must be through vehicle-specific actions.
|
|
33
|
+
* - Bucket: POUR/FILL moves it
|
|
34
|
+
* - Boat: row, current moves it
|
|
35
|
+
* - Balloon: burn/release moves it
|
|
36
|
+
*/
|
|
37
|
+
blocksWalkingMovement;
|
|
38
|
+
/**
|
|
39
|
+
* If true, actor must EXIT vehicle before leaving the room on foot.
|
|
40
|
+
* Prevents "GO EAST" while sitting in a bucket.
|
|
41
|
+
*/
|
|
42
|
+
requiresExitBeforeLeaving;
|
|
43
|
+
/**
|
|
44
|
+
* Current location/state of the vehicle (e.g., 'top', 'bottom', 'river-1')
|
|
45
|
+
* Used by vehicle-specific logic to track position.
|
|
46
|
+
*/
|
|
47
|
+
currentPosition;
|
|
48
|
+
/**
|
|
49
|
+
* Map of position names to room IDs.
|
|
50
|
+
* e.g., { 'top': 'top-of-well', 'bottom': 'well-bottom' }
|
|
51
|
+
*/
|
|
52
|
+
positionRooms;
|
|
53
|
+
/**
|
|
54
|
+
* Whether the vehicle is currently operational/usable.
|
|
55
|
+
* Boat might need to be inflated, balloon might need fuel.
|
|
56
|
+
*/
|
|
57
|
+
isOperational;
|
|
58
|
+
/**
|
|
59
|
+
* Reason the vehicle is not operational (for error messages).
|
|
60
|
+
*/
|
|
61
|
+
notOperationalReason;
|
|
62
|
+
/**
|
|
63
|
+
* If true, visibility passes through to the containing room.
|
|
64
|
+
* - Bucket, raft, boat: transparent (can see the room you're in)
|
|
65
|
+
* - Airplane, submarine: not transparent (see vehicle interior only)
|
|
66
|
+
*/
|
|
67
|
+
transparent;
|
|
68
|
+
constructor(options = {}) {
|
|
69
|
+
this.vehicleType = options.vehicleType ?? 'generic';
|
|
70
|
+
this.blocksWalkingMovement = options.blocksWalkingMovement ?? true;
|
|
71
|
+
this.requiresExitBeforeLeaving = options.requiresExitBeforeLeaving ?? true;
|
|
72
|
+
this.currentPosition = options.currentPosition;
|
|
73
|
+
this.positionRooms = options.positionRooms;
|
|
74
|
+
this.isOperational = options.isOperational ?? true;
|
|
75
|
+
this.notOperationalReason = options.notOperationalReason;
|
|
76
|
+
this.transparent = options.transparent ?? true; // Default to transparent for most IF vehicles
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.VehicleTrait = VehicleTrait;
|
|
80
|
+
/**
|
|
81
|
+
* Type guard for VehicleTrait
|
|
82
|
+
*/
|
|
83
|
+
function isVehicleTrait(trait) {
|
|
84
|
+
return trait.type === trait_types_1.TraitType.VEHICLE;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Factory function for creating VehicleTrait
|
|
88
|
+
*/
|
|
89
|
+
function createVehicleTrait(options = {}) {
|
|
90
|
+
return new VehicleTrait(options);
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=vehicleTrait.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vehicleTrait.js","sourceRoot":"","sources":["../../../../../../../../../../mnt/c/repotemp/sharpee/packages/world-model/src/traits/vehicle/vehicleTrait.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AA2FH,wCAEC;AAKD,gDAIC;AApGD,gDAA2C;AAa3C;;GAEG;AACH,MAAa,YAAY;IACvB,MAAM,CAAU,IAAI,GAAG,uBAAS,CAAC,OAAO,CAAC;IAChC,IAAI,GAAG,uBAAS,CAAC,OAAO,CAAC;IAElC,kDAAkD;IAClD,WAAW,CAAc;IAEzB;;;OAGG;IACM,iBAAiB,GAAY,IAAI,CAAC;IAE3C;;;;;;OAMG;IACH,qBAAqB,CAAU;IAE/B;;;OAGG;IACH,yBAAyB,CAAU;IAEnC;;;OAGG;IACH,eAAe,CAAU;IAEzB;;;OAGG;IACH,aAAa,CAA0B;IAEvC;;;OAGG;IACH,aAAa,CAAU;IAEvB;;OAEG;IACH,oBAAoB,CAAU;IAE9B;;;;OAIG;IACH,WAAW,CAAU;IAErB,YAAY,UAAqE,EAAE;QACjF,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,SAAS,CAAC;QACpD,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,IAAI,IAAI,CAAC;QACnE,IAAI,CAAC,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,IAAI,IAAI,CAAC;QAC3E,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC;QACnD,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;QACzD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,8CAA8C;IAChG,CAAC;;AAnEH,oCAoEC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,KAAa;IAC1C,OAAO,KAAK,CAAC,IAAI,KAAK,uBAAS,CAAC,OAAO,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAChC,UAAqE,EAAE;IAEvE,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../mnt/c/repotemp/sharpee/packages/world-model/src/traits/weapon/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WeaponBehavior = exports.WeaponTrait = void 0;
|
|
4
|
+
var weaponTrait_1 = require("./weaponTrait");
|
|
5
|
+
Object.defineProperty(exports, "WeaponTrait", { enumerable: true, get: function () { return weaponTrait_1.WeaponTrait; } });
|
|
6
|
+
var weaponBehavior_1 = require("./weaponBehavior");
|
|
7
|
+
Object.defineProperty(exports, "WeaponBehavior", { enumerable: true, get: function () { return weaponBehavior_1.WeaponBehavior; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../../mnt/c/repotemp/sharpee/packages/world-model/src/traits/weapon/index.ts"],"names":[],"mappings":";;;AAAA,6CAAyD;AAAhD,0GAAA,WAAW,OAAA;AACpB,mDAAuE;AAA9D,gHAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Behavior for weapon entities
|
|
3
|
+
*/
|
|
4
|
+
import { Behavior } from '../../behaviors/behavior';
|
|
5
|
+
import { IFEntity } from '../../entities/if-entity';
|
|
6
|
+
/**
|
|
7
|
+
* Result of a weapon damage calculation
|
|
8
|
+
*/
|
|
9
|
+
export interface IWeaponDamageResult {
|
|
10
|
+
damage: number;
|
|
11
|
+
weaponType: string;
|
|
12
|
+
criticalHit?: boolean;
|
|
13
|
+
weaponBroke?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Behavior for weapon entities.
|
|
17
|
+
*
|
|
18
|
+
* Handles damage calculation and weapon durability.
|
|
19
|
+
*/
|
|
20
|
+
export declare class WeaponBehavior extends Behavior {
|
|
21
|
+
static requiredTraits: "weapon"[];
|
|
22
|
+
/**
|
|
23
|
+
* Calculate damage for a weapon
|
|
24
|
+
*/
|
|
25
|
+
static calculateDamage(weapon: IFEntity): IWeaponDamageResult;
|
|
26
|
+
/**
|
|
27
|
+
* Check if a weapon can damage a specific target type
|
|
28
|
+
*/
|
|
29
|
+
static canDamage(weapon: IFEntity, targetType?: string): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Get weapon type
|
|
32
|
+
*/
|
|
33
|
+
static getWeaponType(weapon: IFEntity): string;
|
|
34
|
+
/**
|
|
35
|
+
* Check if weapon requires two hands
|
|
36
|
+
*/
|
|
37
|
+
static isTwoHanded(weapon: IFEntity): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Repair weapon (restore durability)
|
|
40
|
+
*/
|
|
41
|
+
static repair(weapon: IFEntity): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Check if weapon is broken
|
|
44
|
+
*/
|
|
45
|
+
static isBroken(weapon: IFEntity): boolean;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=weaponBehavior.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"weaponBehavior.d.ts","sourceRoot":"","sources":["../../../../../../../mnt/c/repotemp/sharpee/packages/world-model/src/traits/weapon/weaponBehavior.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAIpD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,MAAM,CAAC,cAAc,aAAsB;IAE3C;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,GAAG,mBAAmB;IA+B7D;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO;IAsBhE;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM;IAK9C;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO;IAK7C;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO;IASxC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO;CAS3C"}
|