@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,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Combatant trait for entities that can engage in combat
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.CombatantTrait = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Combatant trait indicates an entity can engage in combat.
|
|
9
|
+
*
|
|
10
|
+
* This trait contains only data - all combat logic
|
|
11
|
+
* is in CombatBehavior.
|
|
12
|
+
*/
|
|
13
|
+
class CombatantTrait {
|
|
14
|
+
static type = 'combatant';
|
|
15
|
+
type = 'combatant';
|
|
16
|
+
// CombatantData properties
|
|
17
|
+
health;
|
|
18
|
+
maxHealth;
|
|
19
|
+
skill;
|
|
20
|
+
baseDamage;
|
|
21
|
+
isConscious;
|
|
22
|
+
recoveryTurns;
|
|
23
|
+
armor;
|
|
24
|
+
attackPower;
|
|
25
|
+
defense;
|
|
26
|
+
isAlive;
|
|
27
|
+
hitMessage;
|
|
28
|
+
deathMessage;
|
|
29
|
+
attackMessage;
|
|
30
|
+
hostile;
|
|
31
|
+
canRetaliate;
|
|
32
|
+
dropsInventory;
|
|
33
|
+
experienceValue;
|
|
34
|
+
constructor(data = {}) {
|
|
35
|
+
// Set defaults and merge with provided data
|
|
36
|
+
this.health = data.health ?? data.maxHealth ?? 10;
|
|
37
|
+
this.maxHealth = data.maxHealth ?? 10;
|
|
38
|
+
this.skill = data.skill ?? 30; // Default skill level (ADR-072)
|
|
39
|
+
this.baseDamage = data.baseDamage ?? data.attackPower ?? 1; // ADR-072
|
|
40
|
+
this.isConscious = data.isConscious ?? true; // ADR-072
|
|
41
|
+
this.recoveryTurns = data.recoveryTurns; // ADR-072
|
|
42
|
+
this.armor = data.armor ?? 0;
|
|
43
|
+
this.attackPower = data.attackPower ?? 1;
|
|
44
|
+
this.defense = data.defense ?? 0;
|
|
45
|
+
this.isAlive = data.isAlive ?? true;
|
|
46
|
+
this.hitMessage = data.hitMessage;
|
|
47
|
+
this.deathMessage = data.deathMessage;
|
|
48
|
+
this.attackMessage = data.attackMessage;
|
|
49
|
+
this.hostile = data.hostile ?? false;
|
|
50
|
+
this.canRetaliate = data.canRetaliate ?? true;
|
|
51
|
+
this.dropsInventory = data.dropsInventory ?? true;
|
|
52
|
+
this.experienceValue = data.experienceValue ?? 0;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Computed property to check if combatant is alive based on health
|
|
56
|
+
*/
|
|
57
|
+
get alive() {
|
|
58
|
+
return this.health > 0;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Check if combatant can act (alive and conscious)
|
|
62
|
+
*/
|
|
63
|
+
get canAct() {
|
|
64
|
+
return this.isAlive && this.isConscious;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Knock out this combatant (unconscious but alive)
|
|
68
|
+
*/
|
|
69
|
+
knockOut(recoveryTurns) {
|
|
70
|
+
this.isConscious = false;
|
|
71
|
+
if (recoveryTurns !== undefined) {
|
|
72
|
+
this.recoveryTurns = recoveryTurns;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Wake up this combatant
|
|
77
|
+
*/
|
|
78
|
+
wakeUp() {
|
|
79
|
+
if (this.isAlive) {
|
|
80
|
+
this.isConscious = true;
|
|
81
|
+
this.recoveryTurns = undefined;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Kill this combatant
|
|
86
|
+
*/
|
|
87
|
+
kill() {
|
|
88
|
+
this.health = 0;
|
|
89
|
+
this.isAlive = false;
|
|
90
|
+
this.isConscious = false;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Take damage
|
|
94
|
+
* @returns true if combatant was killed
|
|
95
|
+
*/
|
|
96
|
+
takeDamage(amount) {
|
|
97
|
+
const effectiveDamage = Math.max(0, amount - this.armor);
|
|
98
|
+
this.health = Math.max(0, this.health - effectiveDamage);
|
|
99
|
+
if (this.health <= 0) {
|
|
100
|
+
this.kill();
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
// Check for knockout (20% health threshold per ADR-072)
|
|
104
|
+
if (this.health <= this.maxHealth * 0.2) {
|
|
105
|
+
this.knockOut();
|
|
106
|
+
}
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Heal this combatant
|
|
111
|
+
*/
|
|
112
|
+
heal(amount) {
|
|
113
|
+
if (this.isAlive) {
|
|
114
|
+
this.health = Math.min(this.maxHealth, this.health + amount);
|
|
115
|
+
if (this.health > this.maxHealth * 0.2) {
|
|
116
|
+
this.wakeUp();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
exports.CombatantTrait = CombatantTrait;
|
|
122
|
+
//# sourceMappingURL=combatantTrait.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combatantTrait.js","sourceRoot":"","sources":["../../../src/traits/combatant/combatantTrait.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/traits/combatant/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CombatBehavior = exports.CombatantTrait = void 0;
|
|
4
|
+
var combatantTrait_1 = require("./combatantTrait");
|
|
5
|
+
Object.defineProperty(exports, "CombatantTrait", { enumerable: true, get: function () { return combatantTrait_1.CombatantTrait; } });
|
|
6
|
+
var combatantBehavior_1 = require("./combatantBehavior");
|
|
7
|
+
Object.defineProperty(exports, "CombatBehavior", { enumerable: true, get: function () { return combatantBehavior_1.CombatBehavior; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/traits/combatant/index.ts"],"names":[],"mappings":";;;AAAA,mDAAkE;AAAzD,gHAAA,cAAc,OAAA;AACvB,yDAAoE;AAA3D,mHAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { ITrait } from '../trait';
|
|
2
|
+
import { IFEntity } from '../../entities/if-entity';
|
|
3
|
+
/**
|
|
4
|
+
* Interface for traits that provide container functionality.
|
|
5
|
+
* This includes ContainerTrait, RoomTrait, and ActorTrait.
|
|
6
|
+
*/
|
|
7
|
+
export interface IContainerCapable extends ITrait {
|
|
8
|
+
/** Capacity constraints */
|
|
9
|
+
capacity?: {
|
|
10
|
+
maxWeight?: number;
|
|
11
|
+
maxVolume?: number;
|
|
12
|
+
maxItems?: number;
|
|
13
|
+
};
|
|
14
|
+
/** Whether contents are visible when the container is closed */
|
|
15
|
+
isTransparent: boolean;
|
|
16
|
+
/** Whether actors can enter this container */
|
|
17
|
+
enterable: boolean;
|
|
18
|
+
/** Only these entity types can be placed in the container */
|
|
19
|
+
allowedTypes?: string[];
|
|
20
|
+
/** These entity types cannot be placed in the container */
|
|
21
|
+
excludedTypes?: string[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Check if a trait provides container functionality
|
|
25
|
+
*/
|
|
26
|
+
export declare function isContainerCapable(trait: ITrait): trait is IContainerCapable;
|
|
27
|
+
/**
|
|
28
|
+
* Check if an entity can contain other entities
|
|
29
|
+
*/
|
|
30
|
+
export declare function canContain(entity: IFEntity): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Get the container trait from an entity, regardless of which trait provides it
|
|
33
|
+
*/
|
|
34
|
+
export declare function getContainerTrait(entity: IFEntity): IContainerCapable | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* Type guard to check if a trait has container properties
|
|
37
|
+
*/
|
|
38
|
+
export declare function hasContainerProperties(trait: any): trait is IContainerCapable;
|
|
39
|
+
//# sourceMappingURL=container-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container-utils.d.ts","sourceRoot":"","sources":["../../../src/traits/container/container-utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD;;;GAGG;AACH,MAAM,WAAW,iBAAkB,SAAQ,MAAM;IAC/C,2BAA2B;IAC3B,QAAQ,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IAEF,gEAAgE;IAChE,aAAa,EAAE,OAAO,CAAC;IAEvB,8CAA8C;IAC9C,SAAS,EAAE,OAAO,CAAC;IAEnB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,iBAAiB,CAM5E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAapD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,GAAG,iBAAiB,GAAG,SAAS,CA+BjF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,iBAAiB,CAO7E"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// packages/world-model/src/traits/container/container-utils.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.isContainerCapable = isContainerCapable;
|
|
5
|
+
exports.canContain = canContain;
|
|
6
|
+
exports.getContainerTrait = getContainerTrait;
|
|
7
|
+
exports.hasContainerProperties = hasContainerProperties;
|
|
8
|
+
const trait_types_1 = require("../trait-types");
|
|
9
|
+
/**
|
|
10
|
+
* Check if a trait provides container functionality
|
|
11
|
+
*/
|
|
12
|
+
function isContainerCapable(trait) {
|
|
13
|
+
return (trait.type === trait_types_1.TraitType.CONTAINER ||
|
|
14
|
+
trait.type === trait_types_1.TraitType.ROOM ||
|
|
15
|
+
trait.type === trait_types_1.TraitType.ACTOR);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Check if an entity can contain other entities
|
|
19
|
+
*/
|
|
20
|
+
function canContain(entity) {
|
|
21
|
+
// Check by entity type first (rooms and actors are containers by default)
|
|
22
|
+
if (entity.type === 'room' || entity.type === 'actor') {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
// Then check for explicit container traits
|
|
26
|
+
return (entity.hasTrait(trait_types_1.TraitType.CONTAINER) ||
|
|
27
|
+
entity.hasTrait(trait_types_1.TraitType.ROOM) ||
|
|
28
|
+
entity.hasTrait(trait_types_1.TraitType.ACTOR) ||
|
|
29
|
+
entity.hasTrait(trait_types_1.TraitType.SUPPORTER) // Supporters can also hold things
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get the container trait from an entity, regardless of which trait provides it
|
|
34
|
+
*/
|
|
35
|
+
function getContainerTrait(entity) {
|
|
36
|
+
// Check for explicit container trait first
|
|
37
|
+
const container = entity.getTrait(trait_types_1.TraitType.CONTAINER);
|
|
38
|
+
if (container && isContainerCapable(container)) {
|
|
39
|
+
return container;
|
|
40
|
+
}
|
|
41
|
+
// Check for room trait
|
|
42
|
+
const room = entity.getTrait(trait_types_1.TraitType.ROOM);
|
|
43
|
+
if (room && isContainerCapable(room)) {
|
|
44
|
+
return room;
|
|
45
|
+
}
|
|
46
|
+
// Check for actor trait
|
|
47
|
+
const actor = entity.getTrait(trait_types_1.TraitType.ACTOR);
|
|
48
|
+
if (actor && isContainerCapable(actor)) {
|
|
49
|
+
return actor;
|
|
50
|
+
}
|
|
51
|
+
// For entities without traits, provide default container capabilities based on type
|
|
52
|
+
if (entity.type === 'room' || entity.type === 'actor') {
|
|
53
|
+
// Return a default container capability
|
|
54
|
+
return {
|
|
55
|
+
type: entity.type === 'room' ? trait_types_1.TraitType.ROOM : trait_types_1.TraitType.ACTOR,
|
|
56
|
+
isTransparent: entity.type === 'room', // Rooms are transparent by default
|
|
57
|
+
enterable: entity.type === 'room', // Only rooms are enterable
|
|
58
|
+
capacity: undefined // No capacity limits by default
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Type guard to check if a trait has container properties
|
|
65
|
+
*/
|
|
66
|
+
function hasContainerProperties(trait) {
|
|
67
|
+
return (typeof trait === 'object' &&
|
|
68
|
+
trait !== null &&
|
|
69
|
+
typeof trait.isTransparent === 'boolean' &&
|
|
70
|
+
typeof trait.enterable === 'boolean');
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=container-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container-utils.js","sourceRoot":"","sources":["../../../src/traits/container/container-utils.ts"],"names":[],"mappings":";AAAA,+DAA+D;;AAkC/D,gDAMC;AAKD,gCAaC;AAKD,8CA+BC;AAKD,wDAOC;AAvGD,gDAA2C;AA4B3C;;GAEG;AACH,SAAgB,kBAAkB,CAAC,KAAa;IAC9C,OAAO,CACL,KAAK,CAAC,IAAI,KAAK,uBAAS,CAAC,SAAS;QAClC,KAAK,CAAC,IAAI,KAAK,uBAAS,CAAC,IAAI;QAC7B,KAAK,CAAC,IAAI,KAAK,uBAAS,CAAC,KAAK,CAC/B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,MAAgB;IACzC,0EAA0E;IAC1E,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2CAA2C;IAC3C,OAAO,CACL,MAAM,CAAC,QAAQ,CAAC,uBAAS,CAAC,SAAS,CAAC;QACpC,MAAM,CAAC,QAAQ,CAAC,uBAAS,CAAC,IAAI,CAAC;QAC/B,MAAM,CAAC,QAAQ,CAAC,uBAAS,CAAC,KAAK,CAAC;QAChC,MAAM,CAAC,QAAQ,CAAC,uBAAS,CAAC,SAAS,CAAC,CAAC,kCAAkC;KACxE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,MAAgB;IAChD,2CAA2C;IAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,uBAAS,CAAC,SAAS,CAAC,CAAC;IACvD,IAAI,SAAS,IAAI,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,uBAAuB;IACvB,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,uBAAS,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,IAAI,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wBAAwB;IACxB,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,uBAAS,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,KAAK,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,oFAAoF;IACpF,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACtD,wCAAwC;QACxC,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,uBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAS,CAAC,KAAK;YAC/D,aAAa,EAAE,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,mCAAmC;YAC1E,SAAS,EAAE,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,2BAA2B;YAC9D,QAAQ,EAAE,SAAS,CAAC,gCAAgC;SAChC,CAAC;IACzB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAgB,sBAAsB,CAAC,KAAU;IAC/C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,CAAC,aAAa,KAAK,SAAS;QACxC,OAAO,KAAK,CAAC,SAAS,KAAK,SAAS,CACrC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { Behavior } from '../../behaviors/behavior';
|
|
2
|
+
import { IFEntity } from '../../entities/if-entity';
|
|
3
|
+
/**
|
|
4
|
+
* Result of an add item operation
|
|
5
|
+
*/
|
|
6
|
+
export interface IAddItemResult {
|
|
7
|
+
success: boolean;
|
|
8
|
+
alreadyContains?: boolean;
|
|
9
|
+
containerFull?: boolean;
|
|
10
|
+
wrongType?: boolean;
|
|
11
|
+
containerClosed?: boolean;
|
|
12
|
+
itemTooLarge?: boolean;
|
|
13
|
+
itemTooHeavy?: boolean;
|
|
14
|
+
stateChanged?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Result of a remove item operation
|
|
18
|
+
*/
|
|
19
|
+
export interface IRemoveItemResult {
|
|
20
|
+
success: boolean;
|
|
21
|
+
notContained?: boolean;
|
|
22
|
+
containerClosed?: boolean;
|
|
23
|
+
stateChanged?: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface IWorldQuery {
|
|
26
|
+
getContents(containerId: string): IFEntity[];
|
|
27
|
+
getLocation(entityId: string): string | undefined;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Behavior for entities that can contain other entities.
|
|
31
|
+
*
|
|
32
|
+
* Handles capacity checks, type restrictions, and container state.
|
|
33
|
+
*/
|
|
34
|
+
export declare class ContainerBehavior extends Behavior {
|
|
35
|
+
static requiredTraits: "container"[];
|
|
36
|
+
/**
|
|
37
|
+
* Check if a container can accept an item
|
|
38
|
+
* @returns true if the item can be accepted
|
|
39
|
+
*/
|
|
40
|
+
static canAccept(container: IFEntity, item: IFEntity, world: IWorldQuery): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Check capacity constraints
|
|
43
|
+
*/
|
|
44
|
+
static checkCapacity(container: IFEntity, item: IFEntity, world: IWorldQuery): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Get total weight of contents (not recursive - container bears the weight)
|
|
47
|
+
*/
|
|
48
|
+
static getTotalWeight(container: IFEntity, world: IWorldQuery): number;
|
|
49
|
+
/**
|
|
50
|
+
* Get total volume of contents
|
|
51
|
+
*/
|
|
52
|
+
static getTotalVolume(container: IFEntity, world: IWorldQuery): number;
|
|
53
|
+
/**
|
|
54
|
+
* Get remaining capacity
|
|
55
|
+
*/
|
|
56
|
+
static getRemainingCapacity(container: IFEntity, world: IWorldQuery): {
|
|
57
|
+
items?: number;
|
|
58
|
+
weight?: number;
|
|
59
|
+
volume?: number;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Check if the container is transparent (can see contents when closed)
|
|
63
|
+
*/
|
|
64
|
+
static isTransparent(container: IFEntity): boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Check if the container is enterable by actors
|
|
67
|
+
*/
|
|
68
|
+
static isEnterable(container: IFEntity): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Get allowed types for this container
|
|
71
|
+
*/
|
|
72
|
+
static getAllowedTypes(container: IFEntity): string[] | undefined;
|
|
73
|
+
/**
|
|
74
|
+
* Get excluded types for this container
|
|
75
|
+
*/
|
|
76
|
+
static getExcludedTypes(container: IFEntity): string[] | undefined;
|
|
77
|
+
/**
|
|
78
|
+
* Add an item to a container
|
|
79
|
+
* @param container The container to add to
|
|
80
|
+
* @param item The item to add
|
|
81
|
+
* @param world World query interface for getting current state
|
|
82
|
+
* @returns Result describing what happened
|
|
83
|
+
*/
|
|
84
|
+
static addItem(container: IFEntity, item: IFEntity, world: IWorldQuery): IAddItemResult;
|
|
85
|
+
/**
|
|
86
|
+
* Remove an item from a container
|
|
87
|
+
* @param container The container to remove from
|
|
88
|
+
* @param item The item to remove
|
|
89
|
+
* @param world World query interface for getting current state
|
|
90
|
+
* @returns Result describing what happened
|
|
91
|
+
*/
|
|
92
|
+
static removeItem(container: IFEntity, item: IFEntity, world: IWorldQuery): IRemoveItemResult;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=containerBehavior.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"containerBehavior.d.ts","sourceRoot":"","sources":["../../../src/traits/container/containerBehavior.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AASpD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAGD,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAC;IAC7C,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnD;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,QAAQ;IAC7C,MAAM,CAAC,cAAc,gBAAyB;IAE9C;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO;IAwClF;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO;IAuCtF;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM;IAOtE;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM;IAOtE;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,GAAG;QACpE,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;IAoBD;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO;IAKlD;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO;IAKhD;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,QAAQ,GAAG,MAAM,EAAE,GAAG,SAAS;IAKjE;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,GAAG,MAAM,EAAE,GAAG,SAAS;IAKlE;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,GAAG,cAAc;IAkEvF;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,GAAG,iBAAiB;CA6B9F"}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// packages/world-model/src/traits/container/containerBehavior.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.ContainerBehavior = void 0;
|
|
5
|
+
const behavior_1 = require("../../behaviors/behavior");
|
|
6
|
+
const trait_types_1 = require("../trait-types");
|
|
7
|
+
const identityBehavior_1 = require("../identity/identityBehavior");
|
|
8
|
+
const wearableBehavior_1 = require("../wearable/wearableBehavior");
|
|
9
|
+
/**
|
|
10
|
+
* Behavior for entities that can contain other entities.
|
|
11
|
+
*
|
|
12
|
+
* Handles capacity checks, type restrictions, and container state.
|
|
13
|
+
*/
|
|
14
|
+
class ContainerBehavior extends behavior_1.Behavior {
|
|
15
|
+
static requiredTraits = [trait_types_1.TraitType.CONTAINER];
|
|
16
|
+
/**
|
|
17
|
+
* Check if a container can accept an item
|
|
18
|
+
* @returns true if the item can be accepted
|
|
19
|
+
*/
|
|
20
|
+
static canAccept(container, item, world) {
|
|
21
|
+
const trait = ContainerBehavior.require(container, trait_types_1.TraitType.CONTAINER);
|
|
22
|
+
// Check if container is accessible (must be open if openable)
|
|
23
|
+
if (container.has(trait_types_1.TraitType.OPENABLE)) {
|
|
24
|
+
const openable = container.get(trait_types_1.TraitType.OPENABLE);
|
|
25
|
+
if (openable && !openable.isOpen) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// Check type restrictions
|
|
30
|
+
if (trait.allowedTypes && trait.allowedTypes.length > 0) {
|
|
31
|
+
const itemType = item.type || 'object';
|
|
32
|
+
if (!trait.allowedTypes.includes(itemType)) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (trait.excludedTypes && trait.excludedTypes.length > 0) {
|
|
37
|
+
const itemType = item.type || 'object';
|
|
38
|
+
if (trait.excludedTypes.includes(itemType)) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// Check enterable restrictions for actors
|
|
43
|
+
if (item.has(trait_types_1.TraitType.ACTOR) && !trait.enterable) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
// Check capacity constraints
|
|
47
|
+
if (trait.capacity) {
|
|
48
|
+
const result = this.checkCapacity(container, item, world);
|
|
49
|
+
if (!result)
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Check capacity constraints
|
|
56
|
+
*/
|
|
57
|
+
static checkCapacity(container, item, world) {
|
|
58
|
+
const trait = ContainerBehavior.require(container, trait_types_1.TraitType.CONTAINER);
|
|
59
|
+
const capacity = trait.capacity;
|
|
60
|
+
// If no capacity defined, allow any items
|
|
61
|
+
if (!capacity) {
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
// Check item count limit (excluding worn items for actors)
|
|
65
|
+
if (capacity.maxItems !== undefined) {
|
|
66
|
+
const contents = world.getContents(container.id);
|
|
67
|
+
const currentCount = contents.filter(item => !wearableBehavior_1.WearableBehavior.isWorn(item)).length;
|
|
68
|
+
if (currentCount >= capacity.maxItems) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Check weight limit
|
|
73
|
+
if (capacity.maxWeight !== undefined) {
|
|
74
|
+
const currentWeight = this.getTotalWeight(container, world);
|
|
75
|
+
const itemWeight = identityBehavior_1.IdentityBehavior.getWeight(item);
|
|
76
|
+
if (currentWeight + itemWeight > capacity.maxWeight) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Check volume limit
|
|
81
|
+
if (capacity.maxVolume !== undefined) {
|
|
82
|
+
const currentVolume = this.getTotalVolume(container, world);
|
|
83
|
+
const itemVolume = identityBehavior_1.IdentityBehavior.getVolume(item);
|
|
84
|
+
if (currentVolume + itemVolume > capacity.maxVolume) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Get total weight of contents (not recursive - container bears the weight)
|
|
92
|
+
*/
|
|
93
|
+
static getTotalWeight(container, world) {
|
|
94
|
+
const contents = world.getContents(container.id);
|
|
95
|
+
return contents.reduce((sum, item) => {
|
|
96
|
+
return sum + identityBehavior_1.IdentityBehavior.getWeight(item);
|
|
97
|
+
}, 0);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Get total volume of contents
|
|
101
|
+
*/
|
|
102
|
+
static getTotalVolume(container, world) {
|
|
103
|
+
const contents = world.getContents(container.id);
|
|
104
|
+
return contents.reduce((sum, item) => {
|
|
105
|
+
return sum + identityBehavior_1.IdentityBehavior.getVolume(item);
|
|
106
|
+
}, 0);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get remaining capacity
|
|
110
|
+
*/
|
|
111
|
+
static getRemainingCapacity(container, world) {
|
|
112
|
+
const trait = ContainerBehavior.require(container, trait_types_1.TraitType.CONTAINER);
|
|
113
|
+
const result = {};
|
|
114
|
+
if (trait.capacity?.maxItems !== undefined) {
|
|
115
|
+
const current = world.getContents(container.id).length;
|
|
116
|
+
result.items = trait.capacity.maxItems - current;
|
|
117
|
+
}
|
|
118
|
+
if (trait.capacity?.maxWeight !== undefined) {
|
|
119
|
+
result.weight = trait.capacity.maxWeight - this.getTotalWeight(container, world);
|
|
120
|
+
}
|
|
121
|
+
if (trait.capacity?.maxVolume !== undefined) {
|
|
122
|
+
result.volume = trait.capacity.maxVolume - this.getTotalVolume(container, world);
|
|
123
|
+
}
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Check if the container is transparent (can see contents when closed)
|
|
128
|
+
*/
|
|
129
|
+
static isTransparent(container) {
|
|
130
|
+
const trait = ContainerBehavior.require(container, trait_types_1.TraitType.CONTAINER);
|
|
131
|
+
return trait.isTransparent || false;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Check if the container is enterable by actors
|
|
135
|
+
*/
|
|
136
|
+
static isEnterable(container) {
|
|
137
|
+
const trait = ContainerBehavior.require(container, trait_types_1.TraitType.CONTAINER);
|
|
138
|
+
return trait.enterable || false;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Get allowed types for this container
|
|
142
|
+
*/
|
|
143
|
+
static getAllowedTypes(container) {
|
|
144
|
+
const trait = ContainerBehavior.require(container, trait_types_1.TraitType.CONTAINER);
|
|
145
|
+
return trait.allowedTypes;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Get excluded types for this container
|
|
149
|
+
*/
|
|
150
|
+
static getExcludedTypes(container) {
|
|
151
|
+
const trait = ContainerBehavior.require(container, trait_types_1.TraitType.CONTAINER);
|
|
152
|
+
return trait.excludedTypes;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Add an item to a container
|
|
156
|
+
* @param container The container to add to
|
|
157
|
+
* @param item The item to add
|
|
158
|
+
* @param world World query interface for getting current state
|
|
159
|
+
* @returns Result describing what happened
|
|
160
|
+
*/
|
|
161
|
+
static addItem(container, item, world) {
|
|
162
|
+
const trait = ContainerBehavior.require(container, trait_types_1.TraitType.CONTAINER);
|
|
163
|
+
// Check if container is accessible (must be open if openable)
|
|
164
|
+
if (container.has(trait_types_1.TraitType.OPENABLE)) {
|
|
165
|
+
const openable = container.get(trait_types_1.TraitType.OPENABLE);
|
|
166
|
+
if (openable && !openable.isOpen) {
|
|
167
|
+
return {
|
|
168
|
+
success: false,
|
|
169
|
+
containerClosed: true,
|
|
170
|
+
stateChanged: false
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// Check if item is already in this container
|
|
175
|
+
const currentLocation = world.getLocation(item.id);
|
|
176
|
+
if (currentLocation === container.id) {
|
|
177
|
+
return {
|
|
178
|
+
success: false,
|
|
179
|
+
alreadyContains: true,
|
|
180
|
+
stateChanged: false
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
// Check type restrictions
|
|
184
|
+
if (trait.allowedTypes && trait.allowedTypes.length > 0) {
|
|
185
|
+
const itemType = item.type || 'object';
|
|
186
|
+
if (!trait.allowedTypes.includes(itemType)) {
|
|
187
|
+
return {
|
|
188
|
+
success: false,
|
|
189
|
+
wrongType: true,
|
|
190
|
+
stateChanged: false
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
if (trait.excludedTypes && trait.excludedTypes.length > 0) {
|
|
195
|
+
const itemType = item.type || 'object';
|
|
196
|
+
if (trait.excludedTypes.includes(itemType)) {
|
|
197
|
+
return {
|
|
198
|
+
success: false,
|
|
199
|
+
wrongType: true,
|
|
200
|
+
stateChanged: false
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// Check capacity constraints
|
|
205
|
+
if (!ContainerBehavior.checkCapacity(container, item, world)) {
|
|
206
|
+
return {
|
|
207
|
+
success: false,
|
|
208
|
+
containerFull: true,
|
|
209
|
+
stateChanged: false
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
// All checks passed - this would be where state mutation happens
|
|
213
|
+
// In our event-driven system, the actual mutation happens via events
|
|
214
|
+
// The behavior just validates and returns success
|
|
215
|
+
return {
|
|
216
|
+
success: true,
|
|
217
|
+
stateChanged: true
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Remove an item from a container
|
|
222
|
+
* @param container The container to remove from
|
|
223
|
+
* @param item The item to remove
|
|
224
|
+
* @param world World query interface for getting current state
|
|
225
|
+
* @returns Result describing what happened
|
|
226
|
+
*/
|
|
227
|
+
static removeItem(container, item, world) {
|
|
228
|
+
// Check if container is accessible (must be open if openable)
|
|
229
|
+
if (container.has(trait_types_1.TraitType.OPENABLE)) {
|
|
230
|
+
const openable = container.get(trait_types_1.TraitType.OPENABLE);
|
|
231
|
+
if (openable && !openable.isOpen) {
|
|
232
|
+
return {
|
|
233
|
+
success: false,
|
|
234
|
+
containerClosed: true,
|
|
235
|
+
stateChanged: false
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
// Check if item is actually in this container
|
|
240
|
+
const currentLocation = world.getLocation(item.id);
|
|
241
|
+
if (currentLocation !== container.id) {
|
|
242
|
+
return {
|
|
243
|
+
success: false,
|
|
244
|
+
notContained: true,
|
|
245
|
+
stateChanged: false
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
// All checks passed - removal is valid
|
|
249
|
+
return {
|
|
250
|
+
success: true,
|
|
251
|
+
stateChanged: true
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
exports.ContainerBehavior = ContainerBehavior;
|
|
256
|
+
//# sourceMappingURL=containerBehavior.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"containerBehavior.js","sourceRoot":"","sources":["../../../src/traits/container/containerBehavior.ts"],"names":[],"mappings":"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"}
|