@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,484 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// VisibilityBehavior.ts - Visibility system for IF
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.VisibilityBehavior = exports.VISIBILITY_CAPABILITY = void 0;
|
|
5
|
+
const behavior_1 = require("../behaviors/behavior");
|
|
6
|
+
const trait_types_1 = require("../traits/trait-types");
|
|
7
|
+
const switchableBehavior_1 = require("../traits/switchable/switchableBehavior");
|
|
8
|
+
const capabilities_1 = require("../capabilities");
|
|
9
|
+
/**
|
|
10
|
+
* Standard capability ID for visibility control.
|
|
11
|
+
* Entities can claim this capability to control their own visibility.
|
|
12
|
+
*/
|
|
13
|
+
exports.VISIBILITY_CAPABILITY = 'if.scope.visible';
|
|
14
|
+
class VisibilityBehavior extends behavior_1.Behavior {
|
|
15
|
+
static requiredTraits = [];
|
|
16
|
+
/**
|
|
17
|
+
* Determines if a room is effectively dark (no usable light sources).
|
|
18
|
+
* This is the single source of truth for darkness checking.
|
|
19
|
+
*
|
|
20
|
+
* A room is dark if:
|
|
21
|
+
* 1. It has RoomTrait with isDark = true
|
|
22
|
+
* 2. There are no accessible, active light sources
|
|
23
|
+
*
|
|
24
|
+
* @param room - The room entity to check
|
|
25
|
+
* @param world - The world model
|
|
26
|
+
* @returns true if the room is dark and has no accessible light sources
|
|
27
|
+
*/
|
|
28
|
+
static isDark(room, world) {
|
|
29
|
+
const roomTrait = room.getTrait(trait_types_1.TraitType.ROOM);
|
|
30
|
+
if (!roomTrait || !roomTrait.isDark) {
|
|
31
|
+
return false; // Room isn't marked as dark
|
|
32
|
+
}
|
|
33
|
+
return !this.hasLightSource(room, world);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Determines if a light source entity is currently providing light.
|
|
37
|
+
* Checks isLit property first, falls back to switchable state, defaults to lit.
|
|
38
|
+
*
|
|
39
|
+
* Priority order:
|
|
40
|
+
* 1. Explicit isLit property (e.g., lit torch, extinguished candle)
|
|
41
|
+
* 2. Switchable trait state (e.g., flashlight isOn: true)
|
|
42
|
+
* 3. Default to lit (e.g., glowing gems, phosphorescent moss)
|
|
43
|
+
*/
|
|
44
|
+
static isLightActive(entity) {
|
|
45
|
+
const lightTrait = entity.getTrait(trait_types_1.TraitType.LIGHT_SOURCE);
|
|
46
|
+
// Explicit isLit property takes precedence
|
|
47
|
+
if (lightTrait?.isLit !== undefined) {
|
|
48
|
+
return lightTrait.isLit === true;
|
|
49
|
+
}
|
|
50
|
+
// Fall back to switchable state
|
|
51
|
+
if (entity.hasTrait(trait_types_1.TraitType.SWITCHABLE)) {
|
|
52
|
+
return switchableBehavior_1.SwitchableBehavior.isOn(entity);
|
|
53
|
+
}
|
|
54
|
+
// Default: light sources without explicit state are lit
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Determines if an observer can see a target entity
|
|
59
|
+
*/
|
|
60
|
+
static canSee(observer, target, world) {
|
|
61
|
+
// Can always see self
|
|
62
|
+
if (observer.id === target.id)
|
|
63
|
+
return true;
|
|
64
|
+
// Check if target is invisible via SceneryTrait
|
|
65
|
+
const targetScenery = target.getTrait(trait_types_1.TraitType.SCENERY);
|
|
66
|
+
if (targetScenery && targetScenery.visible === false) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
// Check if target has visibility capability that blocks being seen
|
|
70
|
+
const visibilityTrait = (0, capabilities_1.findTraitWithCapability)(target, exports.VISIBILITY_CAPABILITY);
|
|
71
|
+
if (visibilityTrait) {
|
|
72
|
+
const behavior = (0, capabilities_1.getBehaviorForCapability)(visibilityTrait, exports.VISIBILITY_CAPABILITY);
|
|
73
|
+
if (behavior) {
|
|
74
|
+
const result = behavior.validate(target, world, observer.id, {});
|
|
75
|
+
if (!result.valid) {
|
|
76
|
+
return false; // Entity blocks visibility via capability
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Get rooms
|
|
81
|
+
const observerRoom = world.getContainingRoom(observer.id);
|
|
82
|
+
const targetRoom = world.getContainingRoom(target.id);
|
|
83
|
+
// Must be in same room (or target is the room)
|
|
84
|
+
if (target.hasTrait(trait_types_1.TraitType.ROOM)) {
|
|
85
|
+
// Check if we're in the target room
|
|
86
|
+
if (observerRoom?.id === target.id) {
|
|
87
|
+
// Always know what room you're in, even in darkness
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
if (!observerRoom || observerRoom.id !== targetRoom?.id) {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
// Check if room is dark
|
|
96
|
+
const roomTrait = observerRoom.getTrait(trait_types_1.TraitType.ROOM);
|
|
97
|
+
if (roomTrait && roomTrait.isDark) {
|
|
98
|
+
// In a dark room, need light to see
|
|
99
|
+
if (!this.hasLightSource(observerRoom, world)) {
|
|
100
|
+
// Special cases in darkness:
|
|
101
|
+
// 1. Can see lit light sources
|
|
102
|
+
if (target.hasTrait(trait_types_1.TraitType.LIGHT_SOURCE) &&
|
|
103
|
+
target.getTrait(trait_types_1.TraitType.LIGHT_SOURCE)?.isLit === true) {
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
// 2. Can see items you're carrying (by feel)
|
|
107
|
+
const targetLocation = world.getLocation(target.id);
|
|
108
|
+
if (targetLocation === observer.id) {
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
// Otherwise can't see in darkness
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// Check line of sight through containers
|
|
116
|
+
const hasLineOfSight = this.hasLineOfSight(observer.id, target.id, world);
|
|
117
|
+
return hasLineOfSight;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Gets all entities visible to an observer
|
|
121
|
+
*/
|
|
122
|
+
static getVisible(observer, world) {
|
|
123
|
+
const visible = [];
|
|
124
|
+
const seen = new Set(); // Track what we've already added
|
|
125
|
+
const observerRoom = world.getContainingRoom(observer.id);
|
|
126
|
+
if (!observerRoom)
|
|
127
|
+
return visible;
|
|
128
|
+
// Add the room itself if visible
|
|
129
|
+
if (this.canSee(observer, observerRoom, world)) {
|
|
130
|
+
visible.push(observerRoom);
|
|
131
|
+
seen.add(observerRoom.id);
|
|
132
|
+
}
|
|
133
|
+
// Check if room is dark
|
|
134
|
+
const roomTrait = observerRoom.getTrait(trait_types_1.TraitType.ROOM);
|
|
135
|
+
const isDark = roomTrait && roomTrait.isDark;
|
|
136
|
+
const hasLight = this.hasLightSource(observerRoom, world);
|
|
137
|
+
// If it's dark and no light, only see specific things
|
|
138
|
+
if (isDark && !hasLight) {
|
|
139
|
+
// Can always see what you're carrying (by feel)
|
|
140
|
+
const carried = world.getContents(observer.id);
|
|
141
|
+
for (const entity of carried) {
|
|
142
|
+
if (!seen.has(entity.id)) {
|
|
143
|
+
visible.push(entity);
|
|
144
|
+
seen.add(entity.id);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
// Add any lit light sources in the room
|
|
148
|
+
const roomContents = world.getAllContents(observerRoom.id, { recursive: true });
|
|
149
|
+
for (const entity of roomContents) {
|
|
150
|
+
if (entity.hasTrait(trait_types_1.TraitType.LIGHT_SOURCE)) {
|
|
151
|
+
const light = entity.getTrait(trait_types_1.TraitType.LIGHT_SOURCE);
|
|
152
|
+
if (light && light.isLit === true && !seen.has(entity.id)) {
|
|
153
|
+
visible.push(entity);
|
|
154
|
+
seen.add(entity.id);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return visible;
|
|
159
|
+
}
|
|
160
|
+
// Get contents of the room
|
|
161
|
+
const roomContents = world.getContents(observerRoom.id);
|
|
162
|
+
// Add visible entities in the room
|
|
163
|
+
for (const entity of roomContents) {
|
|
164
|
+
if (entity.id !== observer.id && !seen.has(entity.id)) {
|
|
165
|
+
// Check if entity is visible via SceneryTrait
|
|
166
|
+
const scenery = entity.getTrait(trait_types_1.TraitType.SCENERY);
|
|
167
|
+
if (scenery && scenery.visible === false) {
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
// Check if entity has visibility capability that blocks being seen
|
|
171
|
+
const visibilityTrait = (0, capabilities_1.findTraitWithCapability)(entity, exports.VISIBILITY_CAPABILITY);
|
|
172
|
+
if (visibilityTrait) {
|
|
173
|
+
const behavior = (0, capabilities_1.getBehaviorForCapability)(visibilityTrait, exports.VISIBILITY_CAPABILITY);
|
|
174
|
+
if (behavior) {
|
|
175
|
+
const result = behavior.validate(entity, world, observer.id, {});
|
|
176
|
+
if (!result.valid) {
|
|
177
|
+
continue; // Entity blocks visibility via capability
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
visible.push(entity);
|
|
182
|
+
seen.add(entity.id);
|
|
183
|
+
// Check contents of this entity if it's a container/supporter/actor
|
|
184
|
+
if (entity.hasTrait(trait_types_1.TraitType.CONTAINER) ||
|
|
185
|
+
entity.hasTrait(trait_types_1.TraitType.SUPPORTER) ||
|
|
186
|
+
entity.hasTrait(trait_types_1.TraitType.ACTOR)) {
|
|
187
|
+
this.addVisibleContents(entity, visible, seen, world);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
// Add carried items
|
|
192
|
+
const carried = world.getContents(observer.id);
|
|
193
|
+
for (const entity of carried) {
|
|
194
|
+
if (!seen.has(entity.id)) {
|
|
195
|
+
visible.push(entity);
|
|
196
|
+
seen.add(entity.id);
|
|
197
|
+
// Check contents of carried containers
|
|
198
|
+
if (entity.hasTrait(trait_types_1.TraitType.CONTAINER) || entity.hasTrait(trait_types_1.TraitType.SUPPORTER)) {
|
|
199
|
+
this.addVisibleContents(entity, visible, seen, world);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return visible;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Recursively adds visible contents of a container/supporter/actor
|
|
207
|
+
*/
|
|
208
|
+
static addVisibleContents(container, visible, seen, world) {
|
|
209
|
+
// Check if we can see inside this container
|
|
210
|
+
if (container.hasTrait(trait_types_1.TraitType.CONTAINER)) {
|
|
211
|
+
const containerTrait = container.getTrait(trait_types_1.TraitType.CONTAINER);
|
|
212
|
+
const isTransparent = containerTrait?.isTransparent ?? false;
|
|
213
|
+
if (!isTransparent && container.hasTrait(trait_types_1.TraitType.OPENABLE)) {
|
|
214
|
+
const openable = container.getTrait(trait_types_1.TraitType.OPENABLE);
|
|
215
|
+
const isOpen = openable?.isOpen ?? false;
|
|
216
|
+
if (!isOpen) {
|
|
217
|
+
return; // Can't see inside closed opaque container
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
// Get contents (including worn items for actors)
|
|
222
|
+
const contents = world.getContents(container.id, { includeWorn: true });
|
|
223
|
+
for (const entity of contents) {
|
|
224
|
+
if (!seen.has(entity.id)) {
|
|
225
|
+
// Check if entity is visible via SceneryTrait
|
|
226
|
+
const scenery = entity.getTrait(trait_types_1.TraitType.SCENERY);
|
|
227
|
+
if (scenery && scenery.visible === false) {
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
230
|
+
// Check if entity has visibility capability that blocks being seen
|
|
231
|
+
const visibilityTrait = (0, capabilities_1.findTraitWithCapability)(entity, exports.VISIBILITY_CAPABILITY);
|
|
232
|
+
if (visibilityTrait) {
|
|
233
|
+
const behavior = (0, capabilities_1.getBehaviorForCapability)(visibilityTrait, exports.VISIBILITY_CAPABILITY);
|
|
234
|
+
if (behavior) {
|
|
235
|
+
// Note: We don't have a direct observer here, use container's id as proxy
|
|
236
|
+
const result = behavior.validate(entity, world, container.id, {});
|
|
237
|
+
if (!result.valid) {
|
|
238
|
+
continue; // Entity blocks visibility via capability
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
visible.push(entity);
|
|
243
|
+
seen.add(entity.id);
|
|
244
|
+
// Recurse into nested containers
|
|
245
|
+
if (entity.hasTrait(trait_types_1.TraitType.CONTAINER) ||
|
|
246
|
+
entity.hasTrait(trait_types_1.TraitType.SUPPORTER) ||
|
|
247
|
+
entity.hasTrait(trait_types_1.TraitType.ACTOR)) {
|
|
248
|
+
this.addVisibleContents(entity, visible, seen, world);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Checks if a room has any accessible, active light sources.
|
|
255
|
+
* Handles nested containers, worn items, and various light source types.
|
|
256
|
+
*/
|
|
257
|
+
static hasLightSource(room, world) {
|
|
258
|
+
// Check all entities in the room, including worn items
|
|
259
|
+
const contents = world.getAllContents(room.id, { recursive: true, includeWorn: true });
|
|
260
|
+
for (const entity of contents) {
|
|
261
|
+
if (!entity.hasTrait(trait_types_1.TraitType.LIGHT_SOURCE))
|
|
262
|
+
continue;
|
|
263
|
+
// Check if light is active (isLit, switchable, or default)
|
|
264
|
+
if (!this.isLightActive(entity))
|
|
265
|
+
continue;
|
|
266
|
+
// Check if the light is accessible (not in a closed container)
|
|
267
|
+
if (!this.isAccessible(entity.id, room.id, world))
|
|
268
|
+
continue;
|
|
269
|
+
return true;
|
|
270
|
+
}
|
|
271
|
+
return false;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Checks if an entity is accessible from a room (not blocked by closed containers)
|
|
275
|
+
*/
|
|
276
|
+
static isAccessible(entityId, roomId, world) {
|
|
277
|
+
let current = entityId;
|
|
278
|
+
while (current !== roomId) {
|
|
279
|
+
const parent = world.getLocation(current);
|
|
280
|
+
if (!parent)
|
|
281
|
+
return false;
|
|
282
|
+
const container = world.getEntity(parent);
|
|
283
|
+
if (!container)
|
|
284
|
+
return false;
|
|
285
|
+
// Actors don't block access to their contents
|
|
286
|
+
if (container.hasTrait(trait_types_1.TraitType.ACTOR)) {
|
|
287
|
+
// Items carried by actors are accessible
|
|
288
|
+
current = parent;
|
|
289
|
+
continue;
|
|
290
|
+
}
|
|
291
|
+
// If it's in an opaque, closed container, it's not accessible
|
|
292
|
+
if (container.hasTrait(trait_types_1.TraitType.CONTAINER)) {
|
|
293
|
+
const containerTrait = container.getTrait(trait_types_1.TraitType.CONTAINER);
|
|
294
|
+
const isTransparent = containerTrait?.isTransparent ?? false;
|
|
295
|
+
if (!isTransparent) {
|
|
296
|
+
if (container.hasTrait(trait_types_1.TraitType.OPENABLE)) {
|
|
297
|
+
const openable = container.getTrait(trait_types_1.TraitType.OPENABLE);
|
|
298
|
+
const isOpen = openable?.isOpen ?? false;
|
|
299
|
+
if (!isOpen) {
|
|
300
|
+
return false; // Closed opaque container blocks access
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
current = parent;
|
|
306
|
+
}
|
|
307
|
+
return true;
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Checks if there's a line of sight between observer and target
|
|
311
|
+
*/
|
|
312
|
+
static hasLineOfSight(observerId, targetId, world) {
|
|
313
|
+
// Get the containment path from target to room
|
|
314
|
+
const targetPath = this.getContainmentPath(targetId, world);
|
|
315
|
+
// Check each container in the path
|
|
316
|
+
for (let i = 0; i < targetPath.length - 1; i++) {
|
|
317
|
+
const contained = targetPath[i];
|
|
318
|
+
const container = targetPath[i + 1];
|
|
319
|
+
const containerEntity = world.getEntity(container);
|
|
320
|
+
if (!containerEntity)
|
|
321
|
+
return false;
|
|
322
|
+
// Actors are always visible-through (can see their inventory/worn items)
|
|
323
|
+
if (containerEntity.hasTrait(trait_types_1.TraitType.ACTOR)) {
|
|
324
|
+
// Can always see what actors are carrying/wearing
|
|
325
|
+
continue;
|
|
326
|
+
}
|
|
327
|
+
// If it's in a container, check if we can see inside
|
|
328
|
+
if (containerEntity.hasTrait(trait_types_1.TraitType.CONTAINER)) {
|
|
329
|
+
const containerTrait = containerEntity.getTrait(trait_types_1.TraitType.CONTAINER);
|
|
330
|
+
// Opaque containers block sight when closed
|
|
331
|
+
// Default isTransparent to false if not specified
|
|
332
|
+
const isTransparent = containerTrait?.isTransparent ?? false;
|
|
333
|
+
if (!isTransparent) {
|
|
334
|
+
// If it's opaque, check if it's openable and closed
|
|
335
|
+
if (containerEntity.hasTrait(trait_types_1.TraitType.OPENABLE)) {
|
|
336
|
+
const openable = containerEntity.getTrait(trait_types_1.TraitType.OPENABLE);
|
|
337
|
+
// Default isOpen to false if not specified
|
|
338
|
+
const isOpen = openable?.isOpen ?? false;
|
|
339
|
+
if (!isOpen) {
|
|
340
|
+
return false; // Closed opaque container blocks sight
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
// If opaque but not openable, we can see through (it can't be closed)
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
return true;
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Gets the containment path from an entity to its room
|
|
351
|
+
*/
|
|
352
|
+
static getContainmentPath(entityId, world) {
|
|
353
|
+
const path = [entityId];
|
|
354
|
+
let current = entityId;
|
|
355
|
+
let depth = 0;
|
|
356
|
+
const maxDepth = 10;
|
|
357
|
+
while (depth < maxDepth) {
|
|
358
|
+
const parent = world.getLocation(current);
|
|
359
|
+
if (!parent)
|
|
360
|
+
break;
|
|
361
|
+
path.push(parent);
|
|
362
|
+
const parentEntity = world.getEntity(parent);
|
|
363
|
+
if (parentEntity?.hasTrait(trait_types_1.TraitType.ROOM))
|
|
364
|
+
break;
|
|
365
|
+
current = parent;
|
|
366
|
+
depth++;
|
|
367
|
+
}
|
|
368
|
+
return path;
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Checks if an entity is visible in its current context
|
|
372
|
+
* (used for filtering queries)
|
|
373
|
+
*/
|
|
374
|
+
static isVisible(entity, world) {
|
|
375
|
+
// Check if explicitly invisible via SceneryTrait
|
|
376
|
+
const scenery = entity.getTrait(trait_types_1.TraitType.SCENERY);
|
|
377
|
+
if (scenery && scenery.visible === false) {
|
|
378
|
+
return false;
|
|
379
|
+
}
|
|
380
|
+
// Check if entity has visibility capability that blocks being seen
|
|
381
|
+
// Note: For isVisible we don't have an observer, so we pass empty string
|
|
382
|
+
const visibilityTrait = (0, capabilities_1.findTraitWithCapability)(entity, exports.VISIBILITY_CAPABILITY);
|
|
383
|
+
if (visibilityTrait) {
|
|
384
|
+
const behavior = (0, capabilities_1.getBehaviorForCapability)(visibilityTrait, exports.VISIBILITY_CAPABILITY);
|
|
385
|
+
if (behavior) {
|
|
386
|
+
const result = behavior.validate(entity, world, '', {});
|
|
387
|
+
if (!result.valid) {
|
|
388
|
+
return false; // Entity blocks visibility via capability
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
// Check containment path for closed opaque containers
|
|
393
|
+
let current = entity.id;
|
|
394
|
+
while (true) {
|
|
395
|
+
const location = world.getLocation(current);
|
|
396
|
+
if (!location)
|
|
397
|
+
break; // Reached top level
|
|
398
|
+
const container = world.getEntity(location);
|
|
399
|
+
if (!container)
|
|
400
|
+
break;
|
|
401
|
+
// Actors don't block visibility of their contents
|
|
402
|
+
if (container.hasTrait(trait_types_1.TraitType.ACTOR)) {
|
|
403
|
+
current = location;
|
|
404
|
+
continue;
|
|
405
|
+
}
|
|
406
|
+
// Check if this container blocks visibility
|
|
407
|
+
if (container.hasTrait(trait_types_1.TraitType.CONTAINER)) {
|
|
408
|
+
const containerTrait = container.getTrait(trait_types_1.TraitType.CONTAINER);
|
|
409
|
+
// If container is opaque and closed, entity is not visible
|
|
410
|
+
const isTransparent = containerTrait?.isTransparent ?? false;
|
|
411
|
+
if (!isTransparent) {
|
|
412
|
+
if (container.hasTrait(trait_types_1.TraitType.OPENABLE)) {
|
|
413
|
+
const openable = container.getTrait(trait_types_1.TraitType.OPENABLE);
|
|
414
|
+
const isOpen = openable?.isOpen ?? false;
|
|
415
|
+
if (!isOpen) {
|
|
416
|
+
return false; // In closed opaque container
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
// Opaque but not openable - can see through
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
current = location;
|
|
423
|
+
}
|
|
424
|
+
return true;
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Gets the location that should be described when an observer looks around.
|
|
428
|
+
* Accounts for vehicle/container transparency:
|
|
429
|
+
* - In a transparent vehicle → describe the room
|
|
430
|
+
* - In an open container → describe the room
|
|
431
|
+
* - In a closed container → describe the container
|
|
432
|
+
* - In a room → describe the room
|
|
433
|
+
*
|
|
434
|
+
* @returns The entity to describe and optionally the immediate container
|
|
435
|
+
*/
|
|
436
|
+
static getDescribableLocation(observer, world) {
|
|
437
|
+
const immediateLocationId = world.getLocation(observer.id);
|
|
438
|
+
if (!immediateLocationId) {
|
|
439
|
+
// Observer is not in anything - unusual but handle it
|
|
440
|
+
return { location: observer, immediateContainer: null };
|
|
441
|
+
}
|
|
442
|
+
const immediateLocation = world.getEntity(immediateLocationId);
|
|
443
|
+
if (!immediateLocation) {
|
|
444
|
+
return { location: observer, immediateContainer: null };
|
|
445
|
+
}
|
|
446
|
+
// If immediate location is a room, we're done
|
|
447
|
+
if (immediateLocation.hasTrait(trait_types_1.TraitType.ROOM)) {
|
|
448
|
+
return { location: immediateLocation, immediateContainer: null };
|
|
449
|
+
}
|
|
450
|
+
// Check if we're in a vehicle
|
|
451
|
+
if (immediateLocation.hasTrait(trait_types_1.TraitType.VEHICLE)) {
|
|
452
|
+
const vehicleTrait = immediateLocation.getTrait(trait_types_1.TraitType.VEHICLE);
|
|
453
|
+
if (vehicleTrait.transparent) {
|
|
454
|
+
// Transparent vehicle - describe the room
|
|
455
|
+
const room = world.getContainingRoom(observer.id);
|
|
456
|
+
if (room) {
|
|
457
|
+
return { location: room, immediateContainer: immediateLocation };
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
// Opaque vehicle - describe the vehicle interior
|
|
461
|
+
return { location: immediateLocation, immediateContainer: null };
|
|
462
|
+
}
|
|
463
|
+
// Check if we're in a container
|
|
464
|
+
if (immediateLocation.hasTrait(trait_types_1.TraitType.CONTAINER)) {
|
|
465
|
+
// Check if container is open (visibility passes through)
|
|
466
|
+
if (immediateLocation.hasTrait(trait_types_1.TraitType.OPENABLE)) {
|
|
467
|
+
const openable = immediateLocation.getTrait(trait_types_1.TraitType.OPENABLE);
|
|
468
|
+
if (openable?.isOpen) {
|
|
469
|
+
// Open container - describe the room
|
|
470
|
+
const room = world.getContainingRoom(observer.id);
|
|
471
|
+
if (room) {
|
|
472
|
+
return { location: room, immediateContainer: immediateLocation };
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
// Closed container - describe the container
|
|
477
|
+
return { location: immediateLocation, immediateContainer: null };
|
|
478
|
+
}
|
|
479
|
+
// Default: describe what we're in
|
|
480
|
+
return { location: immediateLocation, immediateContainer: null };
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
exports.VisibilityBehavior = VisibilityBehavior;
|
|
484
|
+
//# sourceMappingURL=VisibilityBehavior.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VisibilityBehavior.js","sourceRoot":"","sources":["../../src/world/VisibilityBehavior.ts"],"names":[],"mappings":"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"}
|