@sharpee/world-model 0.9.66-beta → 0.9.67-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/annotations/index.d.ts +2 -0
- package/annotations/index.d.ts.map +1 -0
- package/annotations/index.js +18 -0
- package/annotations/index.js.map +1 -0
- package/annotations/types.d.ts +35 -0
- package/annotations/types.d.ts.map +1 -0
- package/annotations/types.js +9 -0
- package/annotations/types.js.map +1 -0
- package/behaviors/attack.d.ts +52 -0
- package/behaviors/attack.d.ts.map +1 -0
- package/behaviors/attack.js +161 -0
- package/behaviors/attack.js.map +1 -0
- package/behaviors/behavior.d.ts +67 -0
- package/behaviors/behavior.d.ts.map +1 -0
- package/behaviors/behavior.js +80 -0
- package/behaviors/behavior.js.map +1 -0
- package/behaviors/index.d.ts +21 -0
- package/behaviors/index.d.ts.map +1 -0
- package/behaviors/index.js +39 -0
- package/behaviors/index.js.map +1 -0
- package/capabilities/action-interceptor.d.ts +169 -0
- package/capabilities/action-interceptor.d.ts.map +1 -0
- package/capabilities/action-interceptor.js +15 -0
- package/capabilities/action-interceptor.js.map +1 -0
- package/capabilities/capability-behavior.d.ts +112 -0
- package/capabilities/capability-behavior.d.ts.map +1 -0
- package/capabilities/capability-behavior.js +9 -0
- package/capabilities/capability-behavior.js.map +1 -0
- package/capabilities/capability-defaults.d.ts +67 -0
- package/capabilities/capability-defaults.d.ts.map +1 -0
- package/capabilities/capability-defaults.js +81 -0
- package/capabilities/capability-defaults.js.map +1 -0
- package/capabilities/capability-helpers.d.ts +76 -0
- package/capabilities/capability-helpers.d.ts.map +1 -0
- package/capabilities/capability-helpers.js +112 -0
- package/capabilities/capability-helpers.js.map +1 -0
- package/capabilities/capability-registry.d.ts +115 -0
- package/capabilities/capability-registry.d.ts.map +1 -0
- package/capabilities/capability-registry.js +136 -0
- package/capabilities/capability-registry.js.map +1 -0
- package/capabilities/entity-builder.d.ts +79 -0
- package/capabilities/entity-builder.d.ts.map +1 -0
- package/capabilities/entity-builder.js +116 -0
- package/capabilities/entity-builder.js.map +1 -0
- package/capabilities/index.d.ts +16 -0
- package/capabilities/index.d.ts.map +1 -0
- package/capabilities/index.js +56 -0
- package/capabilities/index.js.map +1 -0
- package/capabilities/interceptor-helpers.d.ts +74 -0
- package/capabilities/interceptor-helpers.d.ts.map +1 -0
- package/capabilities/interceptor-helpers.js +111 -0
- package/capabilities/interceptor-helpers.js.map +1 -0
- package/capabilities/interceptor-registry.d.ts +125 -0
- package/capabilities/interceptor-registry.d.ts.map +1 -0
- package/capabilities/interceptor-registry.js +176 -0
- package/capabilities/interceptor-registry.js.map +1 -0
- package/capabilities/types.d.ts +35 -0
- package/capabilities/types.d.ts.map +1 -0
- package/capabilities/types.js +16 -0
- package/capabilities/types.js.map +1 -0
- package/commands/command-types.d.ts +30 -0
- package/commands/command-types.d.ts.map +1 -0
- package/commands/command-types.js +6 -0
- package/commands/command-types.js.map +1 -0
- package/commands/index.d.ts +7 -0
- package/commands/index.d.ts.map +1 -0
- package/commands/index.js +23 -0
- package/commands/index.js.map +1 -0
- package/commands/parsed-command.d.ts +204 -0
- package/commands/parsed-command.d.ts.map +1 -0
- package/commands/parsed-command.js +25 -0
- package/commands/parsed-command.js.map +1 -0
- package/commands/validated-command.d.ts +52 -0
- package/commands/validated-command.d.ts.map +1 -0
- package/commands/validated-command.js +8 -0
- package/commands/validated-command.js.map +1 -0
- package/constants/action-failures.d.ts +54 -0
- package/constants/action-failures.d.ts.map +1 -0
- package/constants/action-failures.js +68 -0
- package/constants/action-failures.js.map +1 -0
- package/constants/directions.d.ts +32 -0
- package/constants/directions.d.ts.map +1 -0
- package/constants/directions.js +53 -0
- package/constants/directions.js.map +1 -0
- package/constants/if-events.d.ts +5 -0
- package/constants/if-events.d.ts.map +1 -0
- package/constants/if-events.js +10 -0
- package/constants/if-events.js.map +1 -0
- package/constants/index.d.ts +9 -0
- package/constants/index.d.ts.map +1 -0
- package/constants/index.js +25 -0
- package/constants/index.js.map +1 -0
- package/entities/entity-store.d.ts +66 -0
- package/entities/entity-store.d.ts.map +1 -0
- package/entities/entity-store.js +116 -0
- package/entities/entity-store.js.map +1 -0
- package/entities/entity-types.d.ts +40 -0
- package/entities/entity-types.d.ts.map +1 -0
- package/entities/entity-types.js +56 -0
- package/entities/entity-types.js.map +1 -0
- package/entities/if-entity.d.ts +314 -0
- package/entities/if-entity.d.ts.map +1 -0
- package/entities/if-entity.js +621 -0
- package/entities/if-entity.js.map +1 -0
- package/entities/index.d.ts +5 -0
- package/entities/index.d.ts.map +1 -0
- package/entities/index.js +13 -0
- package/entities/index.js.map +1 -0
- package/events/types.d.ts +45 -0
- package/events/types.d.ts.map +1 -0
- package/events/types.js +9 -0
- package/events/types.js.map +1 -0
- package/examples/event-handler-registration.d.ts +14 -0
- package/examples/event-handler-registration.d.ts.map +1 -0
- package/examples/event-handler-registration.js +158 -0
- package/examples/event-handler-registration.js.map +1 -0
- package/extensions/base-extension.d.ts +69 -0
- package/extensions/base-extension.d.ts.map +1 -0
- package/extensions/base-extension.js +83 -0
- package/extensions/base-extension.js.map +1 -0
- package/extensions/index.d.ts +11 -0
- package/extensions/index.d.ts.map +1 -0
- package/extensions/index.js +39 -0
- package/extensions/index.js.map +1 -0
- package/extensions/loader.d.ts +52 -0
- package/extensions/loader.d.ts.map +1 -0
- package/extensions/loader.js +177 -0
- package/extensions/loader.js.map +1 -0
- package/extensions/manager.d.ts +68 -0
- package/extensions/manager.d.ts.map +1 -0
- package/extensions/manager.js +164 -0
- package/extensions/manager.js.map +1 -0
- package/extensions/registry.d.ts +100 -0
- package/extensions/registry.d.ts.map +1 -0
- package/extensions/registry.js +193 -0
- package/extensions/registry.js.map +1 -0
- package/extensions/types.d.ts +226 -0
- package/extensions/types.d.ts.map +1 -0
- package/extensions/types.js +28 -0
- package/extensions/types.js.map +1 -0
- package/index.d.ts +41 -0
- package/index.d.ts.map +1 -0
- package/index.js +71 -0
- package/index.js.map +1 -0
- package/interfaces/command-executor.d.ts +17 -0
- package/interfaces/command-executor.d.ts.map +1 -0
- package/interfaces/command-executor.js +6 -0
- package/interfaces/command-executor.js.map +1 -0
- package/interfaces/command-processor.d.ts +17 -0
- package/interfaces/command-processor.d.ts.map +1 -0
- package/interfaces/command-processor.js +6 -0
- package/interfaces/command-processor.js.map +1 -0
- package/interfaces/command-validator.d.ts +17 -0
- package/interfaces/command-validator.d.ts.map +1 -0
- package/interfaces/command-validator.js +6 -0
- package/interfaces/command-validator.js.map +1 -0
- package/interfaces/index.d.ts +8 -0
- package/interfaces/index.d.ts.map +1 -0
- package/interfaces/index.js +24 -0
- package/interfaces/index.js.map +1 -0
- package/interfaces/language-provider.d.ts +86 -0
- package/interfaces/language-provider.d.ts.map +1 -0
- package/interfaces/language-provider.js +14 -0
- package/interfaces/language-provider.js.map +1 -0
- package/interfaces/parser.d.ts +16 -0
- package/interfaces/parser.d.ts.map +1 -0
- package/interfaces/parser.js +6 -0
- package/interfaces/parser.js.map +1 -0
- package/package.json +1 -16
- package/scope/index.d.ts +8 -0
- package/scope/index.d.ts.map +1 -0
- package/scope/index.js +24 -0
- package/scope/index.js.map +1 -0
- package/scope/scope-evaluator.d.ts +58 -0
- package/scope/scope-evaluator.d.ts.map +1 -0
- package/scope/scope-evaluator.js +207 -0
- package/scope/scope-evaluator.js.map +1 -0
- package/scope/scope-registry.d.ts +59 -0
- package/scope/scope-registry.d.ts.map +1 -0
- package/scope/scope-registry.js +182 -0
- package/scope/scope-registry.js.map +1 -0
- package/scope/scope-rule.d.ts +86 -0
- package/scope/scope-rule.d.ts.map +1 -0
- package/scope/scope-rule.js +7 -0
- package/scope/scope-rule.js.map +1 -0
- package/services/ScopeService.d.ts +8 -0
- package/services/ScopeService.d.ts.map +1 -0
- package/services/ScopeService.js +19 -0
- package/services/ScopeService.js.map +1 -0
- package/services/index.d.ts +2 -0
- package/services/index.d.ts.map +1 -0
- package/services/index.js +6 -0
- package/services/index.js.map +1 -0
- package/test-structure.d.ts +3 -0
- package/test-structure.d.ts.map +1 -0
- package/test-structure.js +26 -0
- package/test-structure.js.map +1 -0
- package/traits/actor/actorBehavior.d.ts +121 -0
- package/traits/actor/actorBehavior.d.ts.map +1 -0
- package/traits/actor/actorBehavior.js +288 -0
- package/traits/actor/actorBehavior.js.map +1 -0
- package/traits/actor/actorTrait.d.ts +158 -0
- package/traits/actor/actorTrait.d.ts.map +1 -0
- package/traits/actor/actorTrait.js +152 -0
- package/traits/actor/actorTrait.js.map +1 -0
- package/traits/actor/index.d.ts +3 -0
- package/traits/actor/index.d.ts.map +1 -0
- package/traits/actor/index.js +11 -0
- package/traits/actor/index.js.map +1 -0
- package/traits/all-traits.d.ts +95 -0
- package/traits/all-traits.d.ts.map +1 -0
- package/traits/all-traits.js +178 -0
- package/traits/all-traits.js.map +1 -0
- package/traits/attached/attachedTrait.d.ts +61 -0
- package/traits/attached/attachedTrait.d.ts.map +1 -0
- package/traits/attached/attachedTrait.js +36 -0
- package/traits/attached/attachedTrait.js.map +1 -0
- package/traits/attached/index.d.ts +2 -0
- package/traits/attached/index.d.ts.map +1 -0
- package/traits/attached/index.js +18 -0
- package/traits/attached/index.js.map +1 -0
- package/traits/breakable/breakableBehavior.d.ts +43 -0
- package/traits/breakable/breakableBehavior.d.ts.map +1 -0
- package/traits/breakable/breakableBehavior.js +70 -0
- package/traits/breakable/breakableBehavior.js.map +1 -0
- package/traits/breakable/breakableTrait.d.ts +22 -0
- package/traits/breakable/breakableTrait.d.ts.map +1 -0
- package/traits/breakable/breakableTrait.js +25 -0
- package/traits/breakable/breakableTrait.js.map +1 -0
- package/traits/breakable/index.d.ts +3 -0
- package/traits/breakable/index.d.ts.map +1 -0
- package/traits/breakable/index.js +8 -0
- package/traits/breakable/index.js.map +1 -0
- package/traits/button/buttonTrait.d.ts +53 -0
- package/traits/button/buttonTrait.d.ts.map +1 -0
- package/traits/button/buttonTrait.js +36 -0
- package/traits/button/buttonTrait.js.map +1 -0
- package/traits/button/index.d.ts +2 -0
- package/traits/button/index.d.ts.map +1 -0
- package/traits/button/index.js +18 -0
- package/traits/button/index.js.map +1 -0
- package/traits/climbable/climbableBehavior.d.ts +37 -0
- package/traits/climbable/climbableBehavior.d.ts.map +1 -0
- package/traits/climbable/climbableBehavior.js +70 -0
- package/traits/climbable/climbableBehavior.js.map +1 -0
- package/traits/climbable/climbableTrait.d.ts +31 -0
- package/traits/climbable/climbableTrait.d.ts.map +1 -0
- package/traits/climbable/climbableTrait.js +47 -0
- package/traits/climbable/climbableTrait.js.map +1 -0
- package/traits/climbable/index.d.ts +6 -0
- package/traits/climbable/index.d.ts.map +1 -0
- package/traits/climbable/index.js +22 -0
- package/traits/climbable/index.js.map +1 -0
- package/traits/clothing/clothingTrait.d.ts +58 -0
- package/traits/clothing/clothingTrait.d.ts.map +1 -0
- package/traits/clothing/clothingTrait.js +78 -0
- package/traits/clothing/clothingTrait.js.map +1 -0
- package/traits/clothing/index.d.ts +2 -0
- package/traits/clothing/index.d.ts.map +1 -0
- package/traits/clothing/index.js +19 -0
- package/traits/clothing/index.js.map +1 -0
- package/traits/combatant/combatantBehavior.d.ts +70 -0
- package/traits/combatant/combatantBehavior.d.ts.map +1 -0
- package/traits/combatant/combatantBehavior.js +155 -0
- package/traits/combatant/combatantBehavior.js.map +1 -0
- package/traits/combatant/combatantTrait.d.ts +98 -0
- package/traits/combatant/combatantTrait.d.ts.map +1 -0
- package/traits/combatant/combatantTrait.js +122 -0
- package/traits/combatant/combatantTrait.js.map +1 -0
- package/traits/combatant/index.d.ts +3 -0
- package/traits/combatant/index.d.ts.map +1 -0
- package/traits/combatant/index.js +8 -0
- package/traits/combatant/index.js.map +1 -0
- package/traits/container/container-utils.d.ts +39 -0
- package/traits/container/container-utils.d.ts.map +1 -0
- package/traits/container/container-utils.js +72 -0
- package/traits/container/container-utils.js.map +1 -0
- package/traits/container/containerBehavior.d.ts +94 -0
- package/traits/container/containerBehavior.d.ts.map +1 -0
- package/traits/container/containerBehavior.js +256 -0
- package/traits/container/containerBehavior.js.map +1 -0
- package/traits/container/containerTrait.d.ts +30 -0
- package/traits/container/containerTrait.d.ts.map +1 -0
- package/traits/container/containerTrait.js +45 -0
- package/traits/container/containerTrait.js.map +1 -0
- package/traits/container/index.d.ts +4 -0
- package/traits/container/index.d.ts.map +1 -0
- package/traits/container/index.js +14 -0
- package/traits/container/index.js.map +1 -0
- package/traits/destructible/destructibleBehavior.d.ts +57 -0
- package/traits/destructible/destructibleBehavior.d.ts.map +1 -0
- package/traits/destructible/destructibleBehavior.js +145 -0
- package/traits/destructible/destructibleBehavior.js.map +1 -0
- package/traits/destructible/destructibleTrait.d.ts +49 -0
- package/traits/destructible/destructibleTrait.d.ts.map +1 -0
- package/traits/destructible/destructibleTrait.js +43 -0
- package/traits/destructible/destructibleTrait.js.map +1 -0
- package/traits/destructible/index.d.ts +3 -0
- package/traits/destructible/index.d.ts.map +1 -0
- package/traits/destructible/index.js +8 -0
- package/traits/destructible/index.js.map +1 -0
- package/traits/door/doorBehavior.d.ts +42 -0
- package/traits/door/doorBehavior.d.ts.map +1 -0
- package/traits/door/doorBehavior.js +76 -0
- package/traits/door/doorBehavior.js.map +1 -0
- package/traits/door/doorTrait.d.ts +19 -0
- package/traits/door/doorTrait.d.ts.map +1 -0
- package/traits/door/doorTrait.js +33 -0
- package/traits/door/doorTrait.js.map +1 -0
- package/traits/door/index.d.ts +3 -0
- package/traits/door/index.d.ts.map +1 -0
- package/traits/door/index.js +9 -0
- package/traits/door/index.js.map +1 -0
- package/traits/edible/edibleBehavior.d.ts +63 -0
- package/traits/edible/edibleBehavior.d.ts.map +1 -0
- package/traits/edible/edibleBehavior.js +157 -0
- package/traits/edible/edibleBehavior.js.map +1 -0
- package/traits/edible/edibleTrait.d.ts +57 -0
- package/traits/edible/edibleTrait.d.ts.map +1 -0
- package/traits/edible/edibleTrait.js +51 -0
- package/traits/edible/edibleTrait.js.map +1 -0
- package/traits/edible/index.d.ts +3 -0
- package/traits/edible/index.d.ts.map +1 -0
- package/traits/edible/index.js +20 -0
- package/traits/edible/index.js.map +1 -0
- package/traits/enterable/enterableTrait.d.ts +33 -0
- package/traits/enterable/enterableTrait.d.ts.map +1 -0
- package/traits/enterable/enterableTrait.js +38 -0
- package/traits/enterable/enterableTrait.js.map +1 -0
- package/traits/enterable/index.d.ts +5 -0
- package/traits/enterable/index.d.ts.map +1 -0
- package/traits/enterable/index.js +21 -0
- package/traits/enterable/index.js.map +1 -0
- package/traits/equipped/equippedTrait.d.ts +46 -0
- package/traits/equipped/equippedTrait.d.ts.map +1 -0
- package/traits/equipped/equippedTrait.js +34 -0
- package/traits/equipped/equippedTrait.js.map +1 -0
- package/traits/equipped/index.d.ts +2 -0
- package/traits/equipped/index.d.ts.map +1 -0
- package/traits/equipped/index.js +6 -0
- package/traits/equipped/index.js.map +1 -0
- package/traits/exit/exitBehavior.d.ts +51 -0
- package/traits/exit/exitBehavior.d.ts.map +1 -0
- package/traits/exit/exitBehavior.js +231 -0
- package/traits/exit/exitBehavior.js.map +1 -0
- package/traits/exit/exitTrait.d.ts +41 -0
- package/traits/exit/exitTrait.d.ts.map +1 -0
- package/traits/exit/exitTrait.js +75 -0
- package/traits/exit/exitTrait.js.map +1 -0
- package/traits/exit/index.d.ts +3 -0
- package/traits/exit/index.d.ts.map +1 -0
- package/traits/exit/index.js +9 -0
- package/traits/exit/index.js.map +1 -0
- package/traits/identity/identityBehavior.d.ts +64 -0
- package/traits/identity/identityBehavior.d.ts.map +1 -0
- package/traits/identity/identityBehavior.js +154 -0
- package/traits/identity/identityBehavior.js.map +1 -0
- package/traits/identity/identityTrait.d.ts +70 -0
- package/traits/identity/identityTrait.d.ts.map +1 -0
- package/traits/identity/identityTrait.js +79 -0
- package/traits/identity/identityTrait.js.map +1 -0
- package/traits/identity/index.d.ts +3 -0
- package/traits/identity/index.d.ts.map +1 -0
- package/traits/identity/index.js +20 -0
- package/traits/identity/index.js.map +1 -0
- package/traits/implementations.d.ts +52 -0
- package/traits/implementations.d.ts.map +1 -0
- package/traits/implementations.js +150 -0
- package/traits/implementations.js.map +1 -0
- package/traits/index.d.ts +37 -0
- package/traits/index.d.ts.map +1 -0
- package/traits/index.js +64 -0
- package/traits/index.js.map +1 -0
- package/traits/light-source/index.d.ts +3 -0
- package/traits/light-source/index.d.ts.map +1 -0
- package/traits/light-source/index.js +9 -0
- package/traits/light-source/index.js.map +1 -0
- package/traits/light-source/lightSourceBehavior.d.ts +57 -0
- package/traits/light-source/lightSourceBehavior.d.ts.map +1 -0
- package/traits/light-source/lightSourceBehavior.js +135 -0
- package/traits/light-source/lightSourceBehavior.js.map +1 -0
- package/traits/light-source/lightSourceTrait.d.ts +28 -0
- package/traits/light-source/lightSourceTrait.d.ts.map +1 -0
- package/traits/light-source/lightSourceTrait.js +37 -0
- package/traits/light-source/lightSourceTrait.js.map +1 -0
- package/traits/lockable/index.d.ts +3 -0
- package/traits/lockable/index.d.ts.map +1 -0
- package/traits/lockable/index.js +20 -0
- package/traits/lockable/index.js.map +1 -0
- package/traits/lockable/lockableBehavior.d.ts +88 -0
- package/traits/lockable/lockableBehavior.d.ts.map +1 -0
- package/traits/lockable/lockableBehavior.js +196 -0
- package/traits/lockable/lockableBehavior.js.map +1 -0
- package/traits/lockable/lockableTrait.d.ts +59 -0
- package/traits/lockable/lockableTrait.d.ts.map +1 -0
- package/traits/lockable/lockableTrait.js +50 -0
- package/traits/lockable/lockableTrait.js.map +1 -0
- package/traits/moveable-scenery/index.d.ts +2 -0
- package/traits/moveable-scenery/index.d.ts.map +1 -0
- package/traits/moveable-scenery/index.js +18 -0
- package/traits/moveable-scenery/index.js.map +1 -0
- package/traits/moveable-scenery/moveableSceneryTrait.d.ts +69 -0
- package/traits/moveable-scenery/moveableSceneryTrait.d.ts.map +1 -0
- package/traits/moveable-scenery/moveableSceneryTrait.js +43 -0
- package/traits/moveable-scenery/moveableSceneryTrait.js.map +1 -0
- package/traits/npc/index.d.ts +5 -0
- package/traits/npc/index.d.ts.map +1 -0
- package/traits/npc/index.js +9 -0
- package/traits/npc/index.js.map +1 -0
- package/traits/npc/npcTrait.d.ts +128 -0
- package/traits/npc/npcTrait.d.ts.map +1 -0
- package/traits/npc/npcTrait.js +180 -0
- package/traits/npc/npcTrait.js.map +1 -0
- package/traits/openable/index.d.ts +3 -0
- package/traits/openable/index.d.ts.map +1 -0
- package/traits/openable/index.js +20 -0
- package/traits/openable/index.js.map +1 -0
- package/traits/openable/openableBehavior.d.ts +64 -0
- package/traits/openable/openableBehavior.d.ts.map +1 -0
- package/traits/openable/openableBehavior.js +109 -0
- package/traits/openable/openableBehavior.js.map +1 -0
- package/traits/openable/openableTrait.d.ts +46 -0
- package/traits/openable/openableTrait.d.ts.map +1 -0
- package/traits/openable/openableTrait.js +42 -0
- package/traits/openable/openableTrait.js.map +1 -0
- package/traits/pullable/index.d.ts +2 -0
- package/traits/pullable/index.d.ts.map +1 -0
- package/traits/pullable/index.js +18 -0
- package/traits/pullable/index.js.map +1 -0
- package/traits/pullable/pullableTrait.d.ts +81 -0
- package/traits/pullable/pullableTrait.d.ts.map +1 -0
- package/traits/pullable/pullableTrait.js +44 -0
- package/traits/pullable/pullableTrait.js.map +1 -0
- package/traits/pushable/index.d.ts +2 -0
- package/traits/pushable/index.d.ts.map +1 -0
- package/traits/pushable/index.js +18 -0
- package/traits/pushable/index.js.map +1 -0
- package/traits/pushable/pushableTrait.d.ts +81 -0
- package/traits/pushable/pushableTrait.d.ts.map +1 -0
- package/traits/pushable/pushableTrait.js +44 -0
- package/traits/pushable/pushableTrait.js.map +1 -0
- package/traits/readable/index.d.ts +3 -0
- package/traits/readable/index.d.ts.map +1 -0
- package/traits/readable/index.js +9 -0
- package/traits/readable/index.js.map +1 -0
- package/traits/readable/readableBehavior.d.ts +42 -0
- package/traits/readable/readableBehavior.d.ts.map +1 -0
- package/traits/readable/readableBehavior.js +174 -0
- package/traits/readable/readableBehavior.js.map +1 -0
- package/traits/readable/readableTrait.d.ts +37 -0
- package/traits/readable/readableTrait.d.ts.map +1 -0
- package/traits/readable/readableTrait.js +51 -0
- package/traits/readable/readableTrait.js.map +1 -0
- package/traits/register-all.d.ts +10 -0
- package/traits/register-all.d.ts.map +1 -0
- package/traits/register-all.js +19 -0
- package/traits/register-all.js.map +1 -0
- package/traits/room/index.d.ts +9 -0
- package/traits/room/index.d.ts.map +1 -0
- package/traits/room/index.js +14 -0
- package/traits/room/index.js.map +1 -0
- package/traits/room/roomBehavior.d.ts +87 -0
- package/traits/room/roomBehavior.d.ts.map +1 -0
- package/traits/room/roomBehavior.js +232 -0
- package/traits/room/roomBehavior.js.map +1 -0
- package/traits/room/roomTrait.d.ts +101 -0
- package/traits/room/roomTrait.d.ts.map +1 -0
- package/traits/room/roomTrait.js +59 -0
- package/traits/room/roomTrait.js.map +1 -0
- package/traits/scenery/index.d.ts +3 -0
- package/traits/scenery/index.d.ts.map +1 -0
- package/traits/scenery/index.js +9 -0
- package/traits/scenery/index.js.map +1 -0
- package/traits/scenery/sceneryBehavior.d.ts +21 -0
- package/traits/scenery/sceneryBehavior.d.ts.map +1 -0
- package/traits/scenery/sceneryBehavior.js +42 -0
- package/traits/scenery/sceneryBehavior.js.map +1 -0
- package/traits/scenery/sceneryTrait.d.ts +30 -0
- package/traits/scenery/sceneryTrait.d.ts.map +1 -0
- package/traits/scenery/sceneryTrait.js +39 -0
- package/traits/scenery/sceneryTrait.js.map +1 -0
- package/traits/story-info/index.d.ts +2 -0
- package/traits/story-info/index.d.ts.map +1 -0
- package/traits/story-info/index.js +6 -0
- package/traits/story-info/index.js.map +1 -0
- package/traits/story-info/storyInfoTrait.d.ts +22 -0
- package/traits/story-info/storyInfoTrait.d.ts.map +1 -0
- package/traits/story-info/storyInfoTrait.js +30 -0
- package/traits/story-info/storyInfoTrait.js.map +1 -0
- package/traits/supporter/index.d.ts +3 -0
- package/traits/supporter/index.d.ts.map +1 -0
- package/traits/supporter/index.js +9 -0
- package/traits/supporter/index.js.map +1 -0
- package/traits/supporter/supporterBehavior.d.ts +83 -0
- package/traits/supporter/supporterBehavior.d.ts.map +1 -0
- package/traits/supporter/supporterBehavior.js +210 -0
- package/traits/supporter/supporterBehavior.js.map +1 -0
- package/traits/supporter/supporterTrait.d.ts +26 -0
- package/traits/supporter/supporterTrait.d.ts.map +1 -0
- package/traits/supporter/supporterTrait.js +30 -0
- package/traits/supporter/supporterTrait.js.map +1 -0
- package/traits/switchable/index.d.ts +3 -0
- package/traits/switchable/index.d.ts.map +1 -0
- package/traits/switchable/index.js +20 -0
- package/traits/switchable/index.js.map +1 -0
- package/traits/switchable/switchableBehavior.d.ts +73 -0
- package/traits/switchable/switchableBehavior.d.ts.map +1 -0
- package/traits/switchable/switchableBehavior.js +191 -0
- package/traits/switchable/switchableBehavior.js.map +1 -0
- package/traits/switchable/switchableTrait.d.ts +61 -0
- package/traits/switchable/switchableTrait.d.ts.map +1 -0
- package/traits/switchable/switchableTrait.js +52 -0
- package/traits/switchable/switchableTrait.js.map +1 -0
- package/traits/trait-types.d.ts +82 -0
- package/traits/trait-types.d.ts.map +1 -0
- package/traits/trait-types.js +150 -0
- package/traits/trait-types.js.map +1 -0
- package/traits/trait.d.ts +44 -0
- package/traits/trait.d.ts.map +1 -0
- package/traits/trait.js +42 -0
- package/traits/trait.js.map +1 -0
- package/traits/vehicle/index.d.ts +6 -0
- package/traits/vehicle/index.d.ts.map +1 -0
- package/traits/vehicle/index.js +22 -0
- package/traits/vehicle/index.js.map +1 -0
- package/traits/vehicle/vehicleBehavior.d.ts +62 -0
- package/traits/vehicle/vehicleBehavior.d.ts.map +1 -0
- package/traits/vehicle/vehicleBehavior.js +145 -0
- package/traits/vehicle/vehicleBehavior.js.map +1 -0
- package/traits/vehicle/vehicleTrait.d.ts +77 -0
- package/traits/vehicle/vehicleTrait.d.ts.map +1 -0
- package/traits/vehicle/vehicleTrait.js +92 -0
- package/traits/vehicle/vehicleTrait.js.map +1 -0
- package/traits/weapon/index.d.ts +3 -0
- package/traits/weapon/index.d.ts.map +1 -0
- package/traits/weapon/index.js +8 -0
- package/traits/weapon/index.js.map +1 -0
- package/traits/weapon/weaponBehavior.d.ts +47 -0
- package/traits/weapon/weaponBehavior.d.ts.map +1 -0
- package/traits/weapon/weaponBehavior.js +106 -0
- package/traits/weapon/weaponBehavior.js.map +1 -0
- package/traits/weapon/weaponTrait.d.ts +67 -0
- package/traits/weapon/weaponTrait.d.ts.map +1 -0
- package/traits/weapon/weaponTrait.js +60 -0
- package/traits/weapon/weaponTrait.js.map +1 -0
- package/traits/wearable/index.d.ts +3 -0
- package/traits/wearable/index.d.ts.map +1 -0
- package/traits/wearable/index.js +20 -0
- package/traits/wearable/index.js.map +1 -0
- package/traits/wearable/wearableBehavior.d.ts +64 -0
- package/traits/wearable/wearableBehavior.d.ts.map +1 -0
- package/traits/wearable/wearableBehavior.js +142 -0
- package/traits/wearable/wearableBehavior.js.map +1 -0
- package/traits/wearable/wearableTrait.d.ts +54 -0
- package/traits/wearable/wearableTrait.d.ts.map +1 -0
- package/traits/wearable/wearableTrait.js +53 -0
- package/traits/wearable/wearableTrait.js.map +1 -0
- package/utils/event-utils.d.ts +30 -0
- package/utils/event-utils.d.ts.map +1 -0
- package/utils/event-utils.js +33 -0
- package/utils/event-utils.js.map +1 -0
- package/world/AuthorModel.d.ts +151 -0
- package/world/AuthorModel.d.ts.map +1 -0
- package/world/AuthorModel.js +416 -0
- package/world/AuthorModel.js.map +1 -0
- package/world/SharedDataStore.d.ts +24 -0
- package/world/SharedDataStore.d.ts.map +1 -0
- package/world/SharedDataStore.js +50 -0
- package/world/SharedDataStore.js.map +1 -0
- package/world/SpatialIndex.d.ts +16 -0
- package/world/SpatialIndex.d.ts.map +1 -0
- package/world/SpatialIndex.js +117 -0
- package/world/SpatialIndex.js.map +1 -0
- package/world/VisibilityBehavior.d.ts +83 -0
- package/world/VisibilityBehavior.d.ts.map +1 -0
- package/world/VisibilityBehavior.js +484 -0
- package/world/VisibilityBehavior.js.map +1 -0
- package/world/WorldModel.d.ts +301 -0
- package/world/WorldModel.d.ts.map +1 -0
- package/world/WorldModel.js +1085 -0
- package/world/WorldModel.js.map +1 -0
- package/world/capabilities.d.ts +36 -0
- package/world/capabilities.d.ts.map +1 -0
- package/world/capabilities.js +18 -0
- package/world/capabilities.js.map +1 -0
- package/world/index.d.ts +7 -0
- package/world/index.d.ts.map +1 -0
- package/world/index.js +21 -0
- package/world/index.js.map +1 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Behavior for combatant entities
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.CombatBehavior = void 0;
|
|
7
|
+
const behavior_1 = require("../../behaviors/behavior");
|
|
8
|
+
const trait_types_1 = require("../trait-types");
|
|
9
|
+
/**
|
|
10
|
+
* Behavior for combatant entities.
|
|
11
|
+
*
|
|
12
|
+
* Handles combat with health, armor, and death.
|
|
13
|
+
* This is a world-aware behavior because it handles inventory dropping on death.
|
|
14
|
+
*/
|
|
15
|
+
class CombatBehavior extends behavior_1.Behavior {
|
|
16
|
+
static requiredTraits = [trait_types_1.TraitType.COMBATANT];
|
|
17
|
+
/**
|
|
18
|
+
* Check if a combatant can be attacked
|
|
19
|
+
*/
|
|
20
|
+
static canAttack(entity) {
|
|
21
|
+
if (!entity.has(trait_types_1.TraitType.COMBATANT)) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
const combatant = entity.get(trait_types_1.TraitType.COMBATANT);
|
|
25
|
+
return combatant.isAlive && combatant.health > 0;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Attack a combatant
|
|
29
|
+
* @param entity The combatant to attack
|
|
30
|
+
* @param damage Base damage amount
|
|
31
|
+
* @param world The world model (needed for dropping inventory)
|
|
32
|
+
* @returns Result describing what happened
|
|
33
|
+
*/
|
|
34
|
+
static attack(entity, damage, world) {
|
|
35
|
+
if (!entity.has(trait_types_1.TraitType.COMBATANT)) {
|
|
36
|
+
return {
|
|
37
|
+
success: false,
|
|
38
|
+
damage: 0,
|
|
39
|
+
killed: false,
|
|
40
|
+
remainingHealth: 0,
|
|
41
|
+
message: 'Entity is not a combatant'
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
const combatant = entity.get(trait_types_1.TraitType.COMBATANT);
|
|
45
|
+
if (!combatant.isAlive || combatant.health <= 0) {
|
|
46
|
+
return {
|
|
47
|
+
success: false,
|
|
48
|
+
damage: 0,
|
|
49
|
+
killed: false,
|
|
50
|
+
remainingHealth: 0
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
// Apply armor reduction
|
|
54
|
+
const actualDamage = Math.max(1, damage - combatant.armor);
|
|
55
|
+
// Apply damage
|
|
56
|
+
combatant.health = Math.max(0, combatant.health - actualDamage);
|
|
57
|
+
const result = {
|
|
58
|
+
success: true,
|
|
59
|
+
damage: actualDamage,
|
|
60
|
+
killed: combatant.health <= 0,
|
|
61
|
+
remainingHealth: combatant.health,
|
|
62
|
+
message: combatant.hitMessage,
|
|
63
|
+
retaliated: combatant.canRetaliate && combatant.health > 0
|
|
64
|
+
};
|
|
65
|
+
// Handle death
|
|
66
|
+
if (combatant.health <= 0) {
|
|
67
|
+
combatant.isAlive = false;
|
|
68
|
+
result.deathMessage = combatant.deathMessage;
|
|
69
|
+
// Drop inventory if specified
|
|
70
|
+
if (combatant.dropsInventory) {
|
|
71
|
+
const location = world.getLocation(entity.id);
|
|
72
|
+
const inventory = world.getContents(entity.id);
|
|
73
|
+
const droppedItems = [];
|
|
74
|
+
if (location) {
|
|
75
|
+
for (const item of inventory) {
|
|
76
|
+
world.moveEntity(item.id, location);
|
|
77
|
+
droppedItems.push(item.id);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (droppedItems.length > 0) {
|
|
81
|
+
result.droppedItems = droppedItems;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Heal a combatant
|
|
89
|
+
*/
|
|
90
|
+
static heal(entity, amount) {
|
|
91
|
+
if (!entity.has(trait_types_1.TraitType.COMBATANT)) {
|
|
92
|
+
return 0;
|
|
93
|
+
}
|
|
94
|
+
const combatant = entity.get(trait_types_1.TraitType.COMBATANT);
|
|
95
|
+
if (!combatant.isAlive)
|
|
96
|
+
return 0;
|
|
97
|
+
const oldHealth = combatant.health;
|
|
98
|
+
combatant.health = Math.min(combatant.maxHealth, combatant.health + amount);
|
|
99
|
+
return combatant.health - oldHealth;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Resurrect a dead combatant
|
|
103
|
+
*/
|
|
104
|
+
static resurrect(entity) {
|
|
105
|
+
if (!entity.has(trait_types_1.TraitType.COMBATANT)) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
const combatant = entity.get(trait_types_1.TraitType.COMBATANT);
|
|
109
|
+
if (combatant.isAlive)
|
|
110
|
+
return false;
|
|
111
|
+
combatant.isAlive = true;
|
|
112
|
+
combatant.health = combatant.maxHealth;
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Check if combatant is alive
|
|
117
|
+
*/
|
|
118
|
+
static isAlive(entity) {
|
|
119
|
+
if (!entity.has(trait_types_1.TraitType.COMBATANT)) {
|
|
120
|
+
return true; // Non-combatants are considered 'alive' by default
|
|
121
|
+
}
|
|
122
|
+
const combatant = entity.get(trait_types_1.TraitType.COMBATANT);
|
|
123
|
+
return combatant.isAlive && combatant.health > 0;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Get current health
|
|
127
|
+
*/
|
|
128
|
+
static getHealth(entity) {
|
|
129
|
+
const combatant = CombatBehavior.require(entity, trait_types_1.TraitType.COMBATANT);
|
|
130
|
+
return combatant.health;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get health percentage
|
|
134
|
+
*/
|
|
135
|
+
static getHealthPercentage(entity) {
|
|
136
|
+
const combatant = CombatBehavior.require(entity, trait_types_1.TraitType.COMBATANT);
|
|
137
|
+
return (combatant.health / combatant.maxHealth) * 100;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Check if combatant is hostile
|
|
141
|
+
*/
|
|
142
|
+
static isHostile(entity) {
|
|
143
|
+
const combatant = CombatBehavior.require(entity, trait_types_1.TraitType.COMBATANT);
|
|
144
|
+
return combatant.hostile;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Set hostility
|
|
148
|
+
*/
|
|
149
|
+
static setHostile(entity, hostile) {
|
|
150
|
+
const combatant = CombatBehavior.require(entity, trait_types_1.TraitType.COMBATANT);
|
|
151
|
+
combatant.hostile = hostile;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
exports.CombatBehavior = CombatBehavior;
|
|
155
|
+
//# sourceMappingURL=combatantBehavior.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combatantBehavior.js","sourceRoot":"","sources":["../../../../../../../../../../mnt/c/repotemp/sharpee/packages/world-model/src/traits/combatant/combatantBehavior.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Combatant trait for entities that can engage in combat
|
|
3
|
+
*/
|
|
4
|
+
import { ITrait } from '../trait';
|
|
5
|
+
export interface ICombatantData {
|
|
6
|
+
/** Current health points */
|
|
7
|
+
health?: number;
|
|
8
|
+
/** Maximum health points */
|
|
9
|
+
maxHealth?: number;
|
|
10
|
+
/** Combat skill (0-100, affects hit/dodge chance) - ADR-072 */
|
|
11
|
+
skill?: number;
|
|
12
|
+
/** Natural damage (if no weapon) - ADR-072 */
|
|
13
|
+
baseDamage?: number;
|
|
14
|
+
/** Whether this combatant is conscious (false = knocked out) - ADR-072 */
|
|
15
|
+
isConscious?: boolean;
|
|
16
|
+
/** Turns until consciousness recovery - ADR-072 */
|
|
17
|
+
recoveryTurns?: number;
|
|
18
|
+
/** Armor value that reduces damage */
|
|
19
|
+
armor?: number;
|
|
20
|
+
/** Attack power modifier (legacy, use baseDamage) */
|
|
21
|
+
attackPower?: number;
|
|
22
|
+
/** Defense modifier */
|
|
23
|
+
defense?: number;
|
|
24
|
+
/** Whether this combatant is alive */
|
|
25
|
+
isAlive?: boolean;
|
|
26
|
+
/** Custom message when hit */
|
|
27
|
+
hitMessage?: string;
|
|
28
|
+
/** Custom message when killed */
|
|
29
|
+
deathMessage?: string;
|
|
30
|
+
/** Custom message when attacking */
|
|
31
|
+
attackMessage?: string;
|
|
32
|
+
/** Whether this combatant is hostile by default */
|
|
33
|
+
hostile?: boolean;
|
|
34
|
+
/** Whether this combatant can retaliate */
|
|
35
|
+
canRetaliate?: boolean;
|
|
36
|
+
/** Whether inventory drops when killed */
|
|
37
|
+
dropsInventory?: boolean;
|
|
38
|
+
/** Experience points awarded when defeated */
|
|
39
|
+
experienceValue?: number;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Combatant trait indicates an entity can engage in combat.
|
|
43
|
+
*
|
|
44
|
+
* This trait contains only data - all combat logic
|
|
45
|
+
* is in CombatBehavior.
|
|
46
|
+
*/
|
|
47
|
+
export declare class CombatantTrait implements ITrait, ICombatantData {
|
|
48
|
+
static readonly type: "combatant";
|
|
49
|
+
readonly type: "combatant";
|
|
50
|
+
health: number;
|
|
51
|
+
maxHealth: number;
|
|
52
|
+
skill: number;
|
|
53
|
+
baseDamage: number;
|
|
54
|
+
isConscious: boolean;
|
|
55
|
+
recoveryTurns?: number;
|
|
56
|
+
armor: number;
|
|
57
|
+
attackPower: number;
|
|
58
|
+
defense: number;
|
|
59
|
+
isAlive: boolean;
|
|
60
|
+
hitMessage?: string;
|
|
61
|
+
deathMessage?: string;
|
|
62
|
+
attackMessage?: string;
|
|
63
|
+
hostile: boolean;
|
|
64
|
+
canRetaliate: boolean;
|
|
65
|
+
dropsInventory: boolean;
|
|
66
|
+
experienceValue: number;
|
|
67
|
+
constructor(data?: ICombatantData);
|
|
68
|
+
/**
|
|
69
|
+
* Computed property to check if combatant is alive based on health
|
|
70
|
+
*/
|
|
71
|
+
get alive(): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Check if combatant can act (alive and conscious)
|
|
74
|
+
*/
|
|
75
|
+
get canAct(): boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Knock out this combatant (unconscious but alive)
|
|
78
|
+
*/
|
|
79
|
+
knockOut(recoveryTurns?: number): void;
|
|
80
|
+
/**
|
|
81
|
+
* Wake up this combatant
|
|
82
|
+
*/
|
|
83
|
+
wakeUp(): void;
|
|
84
|
+
/**
|
|
85
|
+
* Kill this combatant
|
|
86
|
+
*/
|
|
87
|
+
kill(): void;
|
|
88
|
+
/**
|
|
89
|
+
* Take damage
|
|
90
|
+
* @returns true if combatant was killed
|
|
91
|
+
*/
|
|
92
|
+
takeDamage(amount: number): boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Heal this combatant
|
|
95
|
+
*/
|
|
96
|
+
heal(amount: number): void;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=combatantTrait.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combatantTrait.d.ts","sourceRoot":"","sources":["../../../../../../../mnt/c/repotemp/sharpee/packages/world-model/src/traits/combatant/combatantTrait.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,mDAAmD;IACnD,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,sCAAsC;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,8BAA8B;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,mDAAmD;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,0CAA0C;IAC1C,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,8CAA8C;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,qBAAa,cAAe,YAAW,MAAM,EAAE,cAAc;IAC3D,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAU;IAC5C,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAU;IAGrC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;gBAEZ,IAAI,GAAE,cAAmB;IAqBrC;;OAEG;IACH,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED;;OAEG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAOtC;;OAEG;IACH,MAAM,IAAI,IAAI;IAOd;;OAEG;IACH,IAAI,IAAI,IAAI;IAMZ;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAiBnC;;OAEG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAQ3B"}
|
|
@@ -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":["../../../../../../../../../../mnt/c/repotemp/sharpee/packages/world-model/src/traits/combatant/combatantTrait.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../mnt/c/repotemp/sharpee/packages/world-model/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":["../../../../../../../../../../mnt/c/repotemp/sharpee/packages/world-model/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":["../../../../../../../mnt/c/repotemp/sharpee/packages/world-model/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":["../../../../../../../../../../mnt/c/repotemp/sharpee/packages/world-model/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":["../../../../../../../mnt/c/repotemp/sharpee/packages/world-model/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"}
|