@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.
Files changed (566) hide show
  1. package/README.md +61 -0
  2. package/dist/behaviors/attack.d.ts +52 -0
  3. package/dist/behaviors/attack.d.ts.map +1 -0
  4. package/dist/behaviors/attack.js +161 -0
  5. package/dist/behaviors/attack.js.map +1 -0
  6. package/dist/behaviors/behavior.d.ts +67 -0
  7. package/dist/behaviors/behavior.d.ts.map +1 -0
  8. package/dist/behaviors/behavior.js +80 -0
  9. package/dist/behaviors/behavior.js.map +1 -0
  10. package/dist/behaviors/index.d.ts +21 -0
  11. package/dist/behaviors/index.d.ts.map +1 -0
  12. package/dist/behaviors/index.js +39 -0
  13. package/dist/behaviors/index.js.map +1 -0
  14. package/dist/capabilities/capability-behavior.d.ts +112 -0
  15. package/dist/capabilities/capability-behavior.d.ts.map +1 -0
  16. package/dist/capabilities/capability-behavior.js +9 -0
  17. package/dist/capabilities/capability-behavior.js.map +1 -0
  18. package/dist/capabilities/capability-defaults.d.ts +67 -0
  19. package/dist/capabilities/capability-defaults.d.ts.map +1 -0
  20. package/dist/capabilities/capability-defaults.js +81 -0
  21. package/dist/capabilities/capability-defaults.js.map +1 -0
  22. package/dist/capabilities/capability-helpers.d.ts +76 -0
  23. package/dist/capabilities/capability-helpers.d.ts.map +1 -0
  24. package/dist/capabilities/capability-helpers.js +112 -0
  25. package/dist/capabilities/capability-helpers.js.map +1 -0
  26. package/dist/capabilities/capability-registry.d.ts +115 -0
  27. package/dist/capabilities/capability-registry.d.ts.map +1 -0
  28. package/dist/capabilities/capability-registry.js +136 -0
  29. package/dist/capabilities/capability-registry.js.map +1 -0
  30. package/dist/capabilities/entity-builder.d.ts +79 -0
  31. package/dist/capabilities/entity-builder.d.ts.map +1 -0
  32. package/dist/capabilities/entity-builder.js +116 -0
  33. package/dist/capabilities/entity-builder.js.map +1 -0
  34. package/dist/capabilities/index.d.ts +13 -0
  35. package/dist/capabilities/index.d.ts.map +1 -0
  36. package/dist/capabilities/index.js +40 -0
  37. package/dist/capabilities/index.js.map +1 -0
  38. package/dist/capabilities/types.d.ts +35 -0
  39. package/dist/capabilities/types.d.ts.map +1 -0
  40. package/dist/capabilities/types.js +16 -0
  41. package/dist/capabilities/types.js.map +1 -0
  42. package/dist/commands/command-types.d.ts +30 -0
  43. package/dist/commands/command-types.d.ts.map +1 -0
  44. package/dist/commands/command-types.js +6 -0
  45. package/dist/commands/command-types.js.map +1 -0
  46. package/dist/commands/index.d.ts +7 -0
  47. package/dist/commands/index.d.ts.map +1 -0
  48. package/dist/commands/index.js +23 -0
  49. package/dist/commands/index.js.map +1 -0
  50. package/dist/commands/parsed-command.d.ts +204 -0
  51. package/dist/commands/parsed-command.d.ts.map +1 -0
  52. package/dist/commands/parsed-command.js +25 -0
  53. package/dist/commands/parsed-command.js.map +1 -0
  54. package/dist/commands/validated-command.d.ts +52 -0
  55. package/dist/commands/validated-command.d.ts.map +1 -0
  56. package/dist/commands/validated-command.js +8 -0
  57. package/dist/commands/validated-command.js.map +1 -0
  58. package/dist/constants/action-failures.d.ts +54 -0
  59. package/dist/constants/action-failures.d.ts.map +1 -0
  60. package/dist/constants/action-failures.js +68 -0
  61. package/dist/constants/action-failures.js.map +1 -0
  62. package/dist/constants/directions.d.ts +32 -0
  63. package/dist/constants/directions.d.ts.map +1 -0
  64. package/dist/constants/directions.js +53 -0
  65. package/dist/constants/directions.js.map +1 -0
  66. package/dist/constants/if-events.d.ts +5 -0
  67. package/dist/constants/if-events.d.ts.map +1 -0
  68. package/dist/constants/if-events.js +10 -0
  69. package/dist/constants/if-events.js.map +1 -0
  70. package/dist/constants/index.d.ts +9 -0
  71. package/dist/constants/index.d.ts.map +1 -0
  72. package/dist/constants/index.js +25 -0
  73. package/dist/constants/index.js.map +1 -0
  74. package/dist/entities/entity-store.d.ts +66 -0
  75. package/dist/entities/entity-store.d.ts.map +1 -0
  76. package/dist/entities/entity-store.js +116 -0
  77. package/dist/entities/entity-store.js.map +1 -0
  78. package/dist/entities/entity-types.d.ts +40 -0
  79. package/dist/entities/entity-types.d.ts.map +1 -0
  80. package/dist/entities/entity-types.js +56 -0
  81. package/dist/entities/entity-types.js.map +1 -0
  82. package/dist/entities/if-entity.d.ts +259 -0
  83. package/dist/entities/if-entity.d.ts.map +1 -0
  84. package/dist/entities/if-entity.js +498 -0
  85. package/dist/entities/if-entity.js.map +1 -0
  86. package/dist/entities/index.d.ts +5 -0
  87. package/dist/entities/index.d.ts.map +1 -0
  88. package/dist/entities/index.js +13 -0
  89. package/dist/entities/index.js.map +1 -0
  90. package/dist/events/types.d.ts +45 -0
  91. package/dist/events/types.d.ts.map +1 -0
  92. package/dist/events/types.js +9 -0
  93. package/dist/events/types.js.map +1 -0
  94. package/dist/examples/event-handler-registration.d.ts +14 -0
  95. package/dist/examples/event-handler-registration.d.ts.map +1 -0
  96. package/dist/examples/event-handler-registration.js +158 -0
  97. package/dist/examples/event-handler-registration.js.map +1 -0
  98. package/dist/extensions/base-extension.d.ts +69 -0
  99. package/dist/extensions/base-extension.d.ts.map +1 -0
  100. package/dist/extensions/base-extension.js +83 -0
  101. package/dist/extensions/base-extension.js.map +1 -0
  102. package/dist/extensions/index.d.ts +11 -0
  103. package/dist/extensions/index.d.ts.map +1 -0
  104. package/dist/extensions/index.js +39 -0
  105. package/dist/extensions/index.js.map +1 -0
  106. package/dist/extensions/loader.d.ts +52 -0
  107. package/dist/extensions/loader.d.ts.map +1 -0
  108. package/dist/extensions/loader.js +177 -0
  109. package/dist/extensions/loader.js.map +1 -0
  110. package/dist/extensions/manager.d.ts +68 -0
  111. package/dist/extensions/manager.d.ts.map +1 -0
  112. package/dist/extensions/manager.js +164 -0
  113. package/dist/extensions/manager.js.map +1 -0
  114. package/dist/extensions/registry.d.ts +100 -0
  115. package/dist/extensions/registry.d.ts.map +1 -0
  116. package/dist/extensions/registry.js +193 -0
  117. package/dist/extensions/registry.js.map +1 -0
  118. package/dist/extensions/types.d.ts +226 -0
  119. package/dist/extensions/types.d.ts.map +1 -0
  120. package/dist/extensions/types.js +28 -0
  121. package/dist/extensions/types.js.map +1 -0
  122. package/dist/index.d.ts +39 -0
  123. package/dist/index.d.ts.map +1 -0
  124. package/dist/index.js +68 -0
  125. package/dist/index.js.map +1 -0
  126. package/dist/interfaces/command-executor.d.ts +17 -0
  127. package/dist/interfaces/command-executor.d.ts.map +1 -0
  128. package/dist/interfaces/command-executor.js +6 -0
  129. package/dist/interfaces/command-executor.js.map +1 -0
  130. package/dist/interfaces/command-processor.d.ts +17 -0
  131. package/dist/interfaces/command-processor.d.ts.map +1 -0
  132. package/dist/interfaces/command-processor.js +6 -0
  133. package/dist/interfaces/command-processor.js.map +1 -0
  134. package/dist/interfaces/command-validator.d.ts +17 -0
  135. package/dist/interfaces/command-validator.d.ts.map +1 -0
  136. package/dist/interfaces/command-validator.js +6 -0
  137. package/dist/interfaces/command-validator.js.map +1 -0
  138. package/dist/interfaces/index.d.ts +8 -0
  139. package/dist/interfaces/index.d.ts.map +1 -0
  140. package/dist/interfaces/index.js +24 -0
  141. package/dist/interfaces/index.js.map +1 -0
  142. package/dist/interfaces/language-provider.d.ts +86 -0
  143. package/dist/interfaces/language-provider.d.ts.map +1 -0
  144. package/dist/interfaces/language-provider.js +14 -0
  145. package/dist/interfaces/language-provider.js.map +1 -0
  146. package/dist/interfaces/parser.d.ts +16 -0
  147. package/dist/interfaces/parser.d.ts.map +1 -0
  148. package/dist/interfaces/parser.js +6 -0
  149. package/dist/interfaces/parser.js.map +1 -0
  150. package/dist/scope/index.d.ts +8 -0
  151. package/dist/scope/index.d.ts.map +1 -0
  152. package/dist/scope/index.js +24 -0
  153. package/dist/scope/index.js.map +1 -0
  154. package/dist/scope/scope-evaluator.d.ts +58 -0
  155. package/dist/scope/scope-evaluator.d.ts.map +1 -0
  156. package/dist/scope/scope-evaluator.js +207 -0
  157. package/dist/scope/scope-evaluator.js.map +1 -0
  158. package/dist/scope/scope-registry.d.ts +59 -0
  159. package/dist/scope/scope-registry.d.ts.map +1 -0
  160. package/dist/scope/scope-registry.js +182 -0
  161. package/dist/scope/scope-registry.js.map +1 -0
  162. package/dist/scope/scope-rule.d.ts +86 -0
  163. package/dist/scope/scope-rule.d.ts.map +1 -0
  164. package/dist/scope/scope-rule.js +7 -0
  165. package/dist/scope/scope-rule.js.map +1 -0
  166. package/dist/services/ScopeService.d.ts +8 -0
  167. package/dist/services/ScopeService.d.ts.map +1 -0
  168. package/dist/services/ScopeService.js +19 -0
  169. package/dist/services/ScopeService.js.map +1 -0
  170. package/dist/services/index.d.ts +2 -0
  171. package/dist/services/index.d.ts.map +1 -0
  172. package/dist/services/index.js +6 -0
  173. package/dist/services/index.js.map +1 -0
  174. package/dist/test-structure.d.ts +3 -0
  175. package/dist/test-structure.d.ts.map +1 -0
  176. package/dist/test-structure.js +26 -0
  177. package/dist/test-structure.js.map +1 -0
  178. package/dist/traits/actor/actorBehavior.d.ts +121 -0
  179. package/dist/traits/actor/actorBehavior.d.ts.map +1 -0
  180. package/dist/traits/actor/actorBehavior.js +288 -0
  181. package/dist/traits/actor/actorBehavior.js.map +1 -0
  182. package/dist/traits/actor/actorTrait.d.ts +158 -0
  183. package/dist/traits/actor/actorTrait.d.ts.map +1 -0
  184. package/dist/traits/actor/actorTrait.js +152 -0
  185. package/dist/traits/actor/actorTrait.js.map +1 -0
  186. package/dist/traits/actor/index.d.ts +3 -0
  187. package/dist/traits/actor/index.d.ts.map +1 -0
  188. package/dist/traits/actor/index.js +11 -0
  189. package/dist/traits/actor/index.js.map +1 -0
  190. package/dist/traits/all-traits.d.ts +95 -0
  191. package/dist/traits/all-traits.d.ts.map +1 -0
  192. package/dist/traits/all-traits.js +178 -0
  193. package/dist/traits/all-traits.js.map +1 -0
  194. package/dist/traits/attached/attachedTrait.d.ts +61 -0
  195. package/dist/traits/attached/attachedTrait.d.ts.map +1 -0
  196. package/dist/traits/attached/attachedTrait.js +36 -0
  197. package/dist/traits/attached/attachedTrait.js.map +1 -0
  198. package/dist/traits/attached/index.d.ts +2 -0
  199. package/dist/traits/attached/index.d.ts.map +1 -0
  200. package/dist/traits/attached/index.js +18 -0
  201. package/dist/traits/attached/index.js.map +1 -0
  202. package/dist/traits/breakable/breakableBehavior.d.ts +43 -0
  203. package/dist/traits/breakable/breakableBehavior.d.ts.map +1 -0
  204. package/dist/traits/breakable/breakableBehavior.js +70 -0
  205. package/dist/traits/breakable/breakableBehavior.js.map +1 -0
  206. package/dist/traits/breakable/breakableTrait.d.ts +22 -0
  207. package/dist/traits/breakable/breakableTrait.d.ts.map +1 -0
  208. package/dist/traits/breakable/breakableTrait.js +25 -0
  209. package/dist/traits/breakable/breakableTrait.js.map +1 -0
  210. package/dist/traits/breakable/index.d.ts +3 -0
  211. package/dist/traits/breakable/index.d.ts.map +1 -0
  212. package/dist/traits/breakable/index.js +8 -0
  213. package/dist/traits/breakable/index.js.map +1 -0
  214. package/dist/traits/button/buttonTrait.d.ts +53 -0
  215. package/dist/traits/button/buttonTrait.d.ts.map +1 -0
  216. package/dist/traits/button/buttonTrait.js +36 -0
  217. package/dist/traits/button/buttonTrait.js.map +1 -0
  218. package/dist/traits/button/index.d.ts +2 -0
  219. package/dist/traits/button/index.d.ts.map +1 -0
  220. package/dist/traits/button/index.js +18 -0
  221. package/dist/traits/button/index.js.map +1 -0
  222. package/dist/traits/climbable/climbableBehavior.d.ts +37 -0
  223. package/dist/traits/climbable/climbableBehavior.d.ts.map +1 -0
  224. package/dist/traits/climbable/climbableBehavior.js +70 -0
  225. package/dist/traits/climbable/climbableBehavior.js.map +1 -0
  226. package/dist/traits/climbable/climbableTrait.d.ts +31 -0
  227. package/dist/traits/climbable/climbableTrait.d.ts.map +1 -0
  228. package/dist/traits/climbable/climbableTrait.js +47 -0
  229. package/dist/traits/climbable/climbableTrait.js.map +1 -0
  230. package/dist/traits/climbable/index.d.ts +6 -0
  231. package/dist/traits/climbable/index.d.ts.map +1 -0
  232. package/dist/traits/climbable/index.js +22 -0
  233. package/dist/traits/climbable/index.js.map +1 -0
  234. package/dist/traits/clothing/clothingTrait.d.ts +58 -0
  235. package/dist/traits/clothing/clothingTrait.d.ts.map +1 -0
  236. package/dist/traits/clothing/clothingTrait.js +78 -0
  237. package/dist/traits/clothing/clothingTrait.js.map +1 -0
  238. package/dist/traits/clothing/index.d.ts +2 -0
  239. package/dist/traits/clothing/index.d.ts.map +1 -0
  240. package/dist/traits/clothing/index.js +19 -0
  241. package/dist/traits/clothing/index.js.map +1 -0
  242. package/dist/traits/combatant/combatantBehavior.d.ts +70 -0
  243. package/dist/traits/combatant/combatantBehavior.d.ts.map +1 -0
  244. package/dist/traits/combatant/combatantBehavior.js +155 -0
  245. package/dist/traits/combatant/combatantBehavior.js.map +1 -0
  246. package/dist/traits/combatant/combatantTrait.d.ts +98 -0
  247. package/dist/traits/combatant/combatantTrait.d.ts.map +1 -0
  248. package/dist/traits/combatant/combatantTrait.js +122 -0
  249. package/dist/traits/combatant/combatantTrait.js.map +1 -0
  250. package/dist/traits/combatant/index.d.ts +3 -0
  251. package/dist/traits/combatant/index.d.ts.map +1 -0
  252. package/dist/traits/combatant/index.js +8 -0
  253. package/dist/traits/combatant/index.js.map +1 -0
  254. package/dist/traits/container/container-utils.d.ts +39 -0
  255. package/dist/traits/container/container-utils.d.ts.map +1 -0
  256. package/dist/traits/container/container-utils.js +72 -0
  257. package/dist/traits/container/container-utils.js.map +1 -0
  258. package/dist/traits/container/containerBehavior.d.ts +94 -0
  259. package/dist/traits/container/containerBehavior.d.ts.map +1 -0
  260. package/dist/traits/container/containerBehavior.js +256 -0
  261. package/dist/traits/container/containerBehavior.js.map +1 -0
  262. package/dist/traits/container/containerTrait.d.ts +30 -0
  263. package/dist/traits/container/containerTrait.d.ts.map +1 -0
  264. package/dist/traits/container/containerTrait.js +45 -0
  265. package/dist/traits/container/containerTrait.js.map +1 -0
  266. package/dist/traits/container/index.d.ts +4 -0
  267. package/dist/traits/container/index.d.ts.map +1 -0
  268. package/dist/traits/container/index.js +14 -0
  269. package/dist/traits/container/index.js.map +1 -0
  270. package/dist/traits/destructible/destructibleBehavior.d.ts +57 -0
  271. package/dist/traits/destructible/destructibleBehavior.d.ts.map +1 -0
  272. package/dist/traits/destructible/destructibleBehavior.js +145 -0
  273. package/dist/traits/destructible/destructibleBehavior.js.map +1 -0
  274. package/dist/traits/destructible/destructibleTrait.d.ts +49 -0
  275. package/dist/traits/destructible/destructibleTrait.d.ts.map +1 -0
  276. package/dist/traits/destructible/destructibleTrait.js +43 -0
  277. package/dist/traits/destructible/destructibleTrait.js.map +1 -0
  278. package/dist/traits/destructible/index.d.ts +3 -0
  279. package/dist/traits/destructible/index.d.ts.map +1 -0
  280. package/dist/traits/destructible/index.js +8 -0
  281. package/dist/traits/destructible/index.js.map +1 -0
  282. package/dist/traits/door/doorBehavior.d.ts +42 -0
  283. package/dist/traits/door/doorBehavior.d.ts.map +1 -0
  284. package/dist/traits/door/doorBehavior.js +76 -0
  285. package/dist/traits/door/doorBehavior.js.map +1 -0
  286. package/dist/traits/door/doorTrait.d.ts +19 -0
  287. package/dist/traits/door/doorTrait.d.ts.map +1 -0
  288. package/dist/traits/door/doorTrait.js +33 -0
  289. package/dist/traits/door/doorTrait.js.map +1 -0
  290. package/dist/traits/door/index.d.ts +3 -0
  291. package/dist/traits/door/index.d.ts.map +1 -0
  292. package/dist/traits/door/index.js +9 -0
  293. package/dist/traits/door/index.js.map +1 -0
  294. package/dist/traits/edible/edibleBehavior.d.ts +63 -0
  295. package/dist/traits/edible/edibleBehavior.d.ts.map +1 -0
  296. package/dist/traits/edible/edibleBehavior.js +157 -0
  297. package/dist/traits/edible/edibleBehavior.js.map +1 -0
  298. package/dist/traits/edible/edibleTrait.d.ts +57 -0
  299. package/dist/traits/edible/edibleTrait.d.ts.map +1 -0
  300. package/dist/traits/edible/edibleTrait.js +51 -0
  301. package/dist/traits/edible/edibleTrait.js.map +1 -0
  302. package/dist/traits/edible/index.d.ts +3 -0
  303. package/dist/traits/edible/index.d.ts.map +1 -0
  304. package/dist/traits/edible/index.js +20 -0
  305. package/dist/traits/edible/index.js.map +1 -0
  306. package/dist/traits/enterable/enterableTrait.d.ts +33 -0
  307. package/dist/traits/enterable/enterableTrait.d.ts.map +1 -0
  308. package/dist/traits/enterable/enterableTrait.js +38 -0
  309. package/dist/traits/enterable/enterableTrait.js.map +1 -0
  310. package/dist/traits/enterable/index.d.ts +5 -0
  311. package/dist/traits/enterable/index.d.ts.map +1 -0
  312. package/dist/traits/enterable/index.js +21 -0
  313. package/dist/traits/enterable/index.js.map +1 -0
  314. package/dist/traits/equipped/equippedTrait.d.ts +46 -0
  315. package/dist/traits/equipped/equippedTrait.d.ts.map +1 -0
  316. package/dist/traits/equipped/equippedTrait.js +34 -0
  317. package/dist/traits/equipped/equippedTrait.js.map +1 -0
  318. package/dist/traits/equipped/index.d.ts +2 -0
  319. package/dist/traits/equipped/index.d.ts.map +1 -0
  320. package/dist/traits/equipped/index.js +6 -0
  321. package/dist/traits/equipped/index.js.map +1 -0
  322. package/dist/traits/exit/exitBehavior.d.ts +51 -0
  323. package/dist/traits/exit/exitBehavior.d.ts.map +1 -0
  324. package/dist/traits/exit/exitBehavior.js +231 -0
  325. package/dist/traits/exit/exitBehavior.js.map +1 -0
  326. package/dist/traits/exit/exitTrait.d.ts +41 -0
  327. package/dist/traits/exit/exitTrait.d.ts.map +1 -0
  328. package/dist/traits/exit/exitTrait.js +75 -0
  329. package/dist/traits/exit/exitTrait.js.map +1 -0
  330. package/dist/traits/exit/index.d.ts +3 -0
  331. package/dist/traits/exit/index.d.ts.map +1 -0
  332. package/dist/traits/exit/index.js +9 -0
  333. package/dist/traits/exit/index.js.map +1 -0
  334. package/dist/traits/identity/identityBehavior.d.ts +64 -0
  335. package/dist/traits/identity/identityBehavior.d.ts.map +1 -0
  336. package/dist/traits/identity/identityBehavior.js +154 -0
  337. package/dist/traits/identity/identityBehavior.js.map +1 -0
  338. package/dist/traits/identity/identityTrait.d.ts +70 -0
  339. package/dist/traits/identity/identityTrait.d.ts.map +1 -0
  340. package/dist/traits/identity/identityTrait.js +79 -0
  341. package/dist/traits/identity/identityTrait.js.map +1 -0
  342. package/dist/traits/identity/index.d.ts +3 -0
  343. package/dist/traits/identity/index.d.ts.map +1 -0
  344. package/dist/traits/identity/index.js +20 -0
  345. package/dist/traits/identity/index.js.map +1 -0
  346. package/dist/traits/implementations.d.ts +51 -0
  347. package/dist/traits/implementations.d.ts.map +1 -0
  348. package/dist/traits/implementations.js +145 -0
  349. package/dist/traits/implementations.js.map +1 -0
  350. package/dist/traits/index.d.ts +36 -0
  351. package/dist/traits/index.d.ts.map +1 -0
  352. package/dist/traits/index.js +62 -0
  353. package/dist/traits/index.js.map +1 -0
  354. package/dist/traits/light-source/index.d.ts +3 -0
  355. package/dist/traits/light-source/index.d.ts.map +1 -0
  356. package/dist/traits/light-source/index.js +9 -0
  357. package/dist/traits/light-source/index.js.map +1 -0
  358. package/dist/traits/light-source/lightSourceBehavior.d.ts +57 -0
  359. package/dist/traits/light-source/lightSourceBehavior.d.ts.map +1 -0
  360. package/dist/traits/light-source/lightSourceBehavior.js +135 -0
  361. package/dist/traits/light-source/lightSourceBehavior.js.map +1 -0
  362. package/dist/traits/light-source/lightSourceTrait.d.ts +28 -0
  363. package/dist/traits/light-source/lightSourceTrait.d.ts.map +1 -0
  364. package/dist/traits/light-source/lightSourceTrait.js +37 -0
  365. package/dist/traits/light-source/lightSourceTrait.js.map +1 -0
  366. package/dist/traits/lockable/index.d.ts +3 -0
  367. package/dist/traits/lockable/index.d.ts.map +1 -0
  368. package/dist/traits/lockable/index.js +20 -0
  369. package/dist/traits/lockable/index.js.map +1 -0
  370. package/dist/traits/lockable/lockableBehavior.d.ts +88 -0
  371. package/dist/traits/lockable/lockableBehavior.d.ts.map +1 -0
  372. package/dist/traits/lockable/lockableBehavior.js +196 -0
  373. package/dist/traits/lockable/lockableBehavior.js.map +1 -0
  374. package/dist/traits/lockable/lockableTrait.d.ts +59 -0
  375. package/dist/traits/lockable/lockableTrait.d.ts.map +1 -0
  376. package/dist/traits/lockable/lockableTrait.js +50 -0
  377. package/dist/traits/lockable/lockableTrait.js.map +1 -0
  378. package/dist/traits/moveable-scenery/index.d.ts +2 -0
  379. package/dist/traits/moveable-scenery/index.d.ts.map +1 -0
  380. package/dist/traits/moveable-scenery/index.js +18 -0
  381. package/dist/traits/moveable-scenery/index.js.map +1 -0
  382. package/dist/traits/moveable-scenery/moveableSceneryTrait.d.ts +69 -0
  383. package/dist/traits/moveable-scenery/moveableSceneryTrait.d.ts.map +1 -0
  384. package/dist/traits/moveable-scenery/moveableSceneryTrait.js +43 -0
  385. package/dist/traits/moveable-scenery/moveableSceneryTrait.js.map +1 -0
  386. package/dist/traits/npc/index.d.ts +5 -0
  387. package/dist/traits/npc/index.d.ts.map +1 -0
  388. package/dist/traits/npc/index.js +9 -0
  389. package/dist/traits/npc/index.js.map +1 -0
  390. package/dist/traits/npc/npcTrait.d.ts +128 -0
  391. package/dist/traits/npc/npcTrait.d.ts.map +1 -0
  392. package/dist/traits/npc/npcTrait.js +180 -0
  393. package/dist/traits/npc/npcTrait.js.map +1 -0
  394. package/dist/traits/openable/index.d.ts +3 -0
  395. package/dist/traits/openable/index.d.ts.map +1 -0
  396. package/dist/traits/openable/index.js +20 -0
  397. package/dist/traits/openable/index.js.map +1 -0
  398. package/dist/traits/openable/openableBehavior.d.ts +64 -0
  399. package/dist/traits/openable/openableBehavior.d.ts.map +1 -0
  400. package/dist/traits/openable/openableBehavior.js +109 -0
  401. package/dist/traits/openable/openableBehavior.js.map +1 -0
  402. package/dist/traits/openable/openableTrait.d.ts +46 -0
  403. package/dist/traits/openable/openableTrait.d.ts.map +1 -0
  404. package/dist/traits/openable/openableTrait.js +42 -0
  405. package/dist/traits/openable/openableTrait.js.map +1 -0
  406. package/dist/traits/portable/portableTrait.d.ts +26 -0
  407. package/dist/traits/portable/portableTrait.d.ts.map +1 -0
  408. package/dist/traits/portable/portableTrait.js +35 -0
  409. package/dist/traits/portable/portableTrait.js.map +1 -0
  410. package/dist/traits/pullable/index.d.ts +2 -0
  411. package/dist/traits/pullable/index.d.ts.map +1 -0
  412. package/dist/traits/pullable/index.js +18 -0
  413. package/dist/traits/pullable/index.js.map +1 -0
  414. package/dist/traits/pullable/pullableTrait.d.ts +81 -0
  415. package/dist/traits/pullable/pullableTrait.d.ts.map +1 -0
  416. package/dist/traits/pullable/pullableTrait.js +44 -0
  417. package/dist/traits/pullable/pullableTrait.js.map +1 -0
  418. package/dist/traits/pushable/index.d.ts +2 -0
  419. package/dist/traits/pushable/index.d.ts.map +1 -0
  420. package/dist/traits/pushable/index.js +18 -0
  421. package/dist/traits/pushable/index.js.map +1 -0
  422. package/dist/traits/pushable/pushableTrait.d.ts +81 -0
  423. package/dist/traits/pushable/pushableTrait.d.ts.map +1 -0
  424. package/dist/traits/pushable/pushableTrait.js +44 -0
  425. package/dist/traits/pushable/pushableTrait.js.map +1 -0
  426. package/dist/traits/readable/index.d.ts +3 -0
  427. package/dist/traits/readable/index.d.ts.map +1 -0
  428. package/dist/traits/readable/index.js +9 -0
  429. package/dist/traits/readable/index.js.map +1 -0
  430. package/dist/traits/readable/readableBehavior.d.ts +42 -0
  431. package/dist/traits/readable/readableBehavior.d.ts.map +1 -0
  432. package/dist/traits/readable/readableBehavior.js +174 -0
  433. package/dist/traits/readable/readableBehavior.js.map +1 -0
  434. package/dist/traits/readable/readableTrait.d.ts +37 -0
  435. package/dist/traits/readable/readableTrait.d.ts.map +1 -0
  436. package/dist/traits/readable/readableTrait.js +51 -0
  437. package/dist/traits/readable/readableTrait.js.map +1 -0
  438. package/dist/traits/register-all.d.ts +10 -0
  439. package/dist/traits/register-all.d.ts.map +1 -0
  440. package/dist/traits/register-all.js +19 -0
  441. package/dist/traits/register-all.js.map +1 -0
  442. package/dist/traits/room/index.d.ts +9 -0
  443. package/dist/traits/room/index.d.ts.map +1 -0
  444. package/dist/traits/room/index.js +14 -0
  445. package/dist/traits/room/index.js.map +1 -0
  446. package/dist/traits/room/roomBehavior.d.ts +87 -0
  447. package/dist/traits/room/roomBehavior.d.ts.map +1 -0
  448. package/dist/traits/room/roomBehavior.js +232 -0
  449. package/dist/traits/room/roomBehavior.js.map +1 -0
  450. package/dist/traits/room/roomTrait.d.ts +87 -0
  451. package/dist/traits/room/roomTrait.d.ts.map +1 -0
  452. package/dist/traits/room/roomTrait.js +59 -0
  453. package/dist/traits/room/roomTrait.js.map +1 -0
  454. package/dist/traits/scenery/index.d.ts +3 -0
  455. package/dist/traits/scenery/index.d.ts.map +1 -0
  456. package/dist/traits/scenery/index.js +9 -0
  457. package/dist/traits/scenery/index.js.map +1 -0
  458. package/dist/traits/scenery/sceneryBehavior.d.ts +21 -0
  459. package/dist/traits/scenery/sceneryBehavior.d.ts.map +1 -0
  460. package/dist/traits/scenery/sceneryBehavior.js +42 -0
  461. package/dist/traits/scenery/sceneryBehavior.js.map +1 -0
  462. package/dist/traits/scenery/sceneryTrait.d.ts +30 -0
  463. package/dist/traits/scenery/sceneryTrait.d.ts.map +1 -0
  464. package/dist/traits/scenery/sceneryTrait.js +39 -0
  465. package/dist/traits/scenery/sceneryTrait.js.map +1 -0
  466. package/dist/traits/supporter/index.d.ts +3 -0
  467. package/dist/traits/supporter/index.d.ts.map +1 -0
  468. package/dist/traits/supporter/index.js +9 -0
  469. package/dist/traits/supporter/index.js.map +1 -0
  470. package/dist/traits/supporter/supporterBehavior.d.ts +83 -0
  471. package/dist/traits/supporter/supporterBehavior.d.ts.map +1 -0
  472. package/dist/traits/supporter/supporterBehavior.js +210 -0
  473. package/dist/traits/supporter/supporterBehavior.js.map +1 -0
  474. package/dist/traits/supporter/supporterTrait.d.ts +26 -0
  475. package/dist/traits/supporter/supporterTrait.d.ts.map +1 -0
  476. package/dist/traits/supporter/supporterTrait.js +30 -0
  477. package/dist/traits/supporter/supporterTrait.js.map +1 -0
  478. package/dist/traits/switchable/index.d.ts +3 -0
  479. package/dist/traits/switchable/index.d.ts.map +1 -0
  480. package/dist/traits/switchable/index.js +20 -0
  481. package/dist/traits/switchable/index.js.map +1 -0
  482. package/dist/traits/switchable/switchableBehavior.d.ts +73 -0
  483. package/dist/traits/switchable/switchableBehavior.d.ts.map +1 -0
  484. package/dist/traits/switchable/switchableBehavior.js +191 -0
  485. package/dist/traits/switchable/switchableBehavior.js.map +1 -0
  486. package/dist/traits/switchable/switchableTrait.d.ts +61 -0
  487. package/dist/traits/switchable/switchableTrait.d.ts.map +1 -0
  488. package/dist/traits/switchable/switchableTrait.js +52 -0
  489. package/dist/traits/switchable/switchableTrait.js.map +1 -0
  490. package/dist/traits/trait-types.d.ts +81 -0
  491. package/dist/traits/trait-types.d.ts.map +1 -0
  492. package/dist/traits/trait-types.js +146 -0
  493. package/dist/traits/trait-types.js.map +1 -0
  494. package/dist/traits/trait.d.ts +42 -0
  495. package/dist/traits/trait.d.ts.map +1 -0
  496. package/dist/traits/trait.js +42 -0
  497. package/dist/traits/trait.js.map +1 -0
  498. package/dist/traits/vehicle/index.d.ts +6 -0
  499. package/dist/traits/vehicle/index.d.ts.map +1 -0
  500. package/dist/traits/vehicle/index.js +22 -0
  501. package/dist/traits/vehicle/index.js.map +1 -0
  502. package/dist/traits/vehicle/vehicleBehavior.d.ts +62 -0
  503. package/dist/traits/vehicle/vehicleBehavior.d.ts.map +1 -0
  504. package/dist/traits/vehicle/vehicleBehavior.js +145 -0
  505. package/dist/traits/vehicle/vehicleBehavior.js.map +1 -0
  506. package/dist/traits/vehicle/vehicleTrait.d.ts +77 -0
  507. package/dist/traits/vehicle/vehicleTrait.d.ts.map +1 -0
  508. package/dist/traits/vehicle/vehicleTrait.js +92 -0
  509. package/dist/traits/vehicle/vehicleTrait.js.map +1 -0
  510. package/dist/traits/weapon/index.d.ts +3 -0
  511. package/dist/traits/weapon/index.d.ts.map +1 -0
  512. package/dist/traits/weapon/index.js +8 -0
  513. package/dist/traits/weapon/index.js.map +1 -0
  514. package/dist/traits/weapon/weaponBehavior.d.ts +47 -0
  515. package/dist/traits/weapon/weaponBehavior.d.ts.map +1 -0
  516. package/dist/traits/weapon/weaponBehavior.js +106 -0
  517. package/dist/traits/weapon/weaponBehavior.js.map +1 -0
  518. package/dist/traits/weapon/weaponTrait.d.ts +67 -0
  519. package/dist/traits/weapon/weaponTrait.d.ts.map +1 -0
  520. package/dist/traits/weapon/weaponTrait.js +60 -0
  521. package/dist/traits/weapon/weaponTrait.js.map +1 -0
  522. package/dist/traits/wearable/index.d.ts +3 -0
  523. package/dist/traits/wearable/index.d.ts.map +1 -0
  524. package/dist/traits/wearable/index.js +20 -0
  525. package/dist/traits/wearable/index.js.map +1 -0
  526. package/dist/traits/wearable/wearableBehavior.d.ts +64 -0
  527. package/dist/traits/wearable/wearableBehavior.d.ts.map +1 -0
  528. package/dist/traits/wearable/wearableBehavior.js +142 -0
  529. package/dist/traits/wearable/wearableBehavior.js.map +1 -0
  530. package/dist/traits/wearable/wearableTrait.d.ts +54 -0
  531. package/dist/traits/wearable/wearableTrait.d.ts.map +1 -0
  532. package/dist/traits/wearable/wearableTrait.js +53 -0
  533. package/dist/traits/wearable/wearableTrait.js.map +1 -0
  534. package/dist/utils/event-utils.d.ts +30 -0
  535. package/dist/utils/event-utils.d.ts.map +1 -0
  536. package/dist/utils/event-utils.js +33 -0
  537. package/dist/utils/event-utils.js.map +1 -0
  538. package/dist/world/AuthorModel.d.ts +151 -0
  539. package/dist/world/AuthorModel.d.ts.map +1 -0
  540. package/dist/world/AuthorModel.js +416 -0
  541. package/dist/world/AuthorModel.js.map +1 -0
  542. package/dist/world/SharedDataStore.d.ts +24 -0
  543. package/dist/world/SharedDataStore.d.ts.map +1 -0
  544. package/dist/world/SharedDataStore.js +50 -0
  545. package/dist/world/SharedDataStore.js.map +1 -0
  546. package/dist/world/SpatialIndex.d.ts +16 -0
  547. package/dist/world/SpatialIndex.d.ts.map +1 -0
  548. package/dist/world/SpatialIndex.js +117 -0
  549. package/dist/world/SpatialIndex.js.map +1 -0
  550. package/dist/world/VisibilityBehavior.d.ts +83 -0
  551. package/dist/world/VisibilityBehavior.d.ts.map +1 -0
  552. package/dist/world/VisibilityBehavior.js +484 -0
  553. package/dist/world/VisibilityBehavior.js.map +1 -0
  554. package/dist/world/WorldModel.d.ts +270 -0
  555. package/dist/world/WorldModel.d.ts.map +1 -0
  556. package/dist/world/WorldModel.js +1028 -0
  557. package/dist/world/WorldModel.js.map +1 -0
  558. package/dist/world/capabilities.d.ts +36 -0
  559. package/dist/world/capabilities.d.ts.map +1 -0
  560. package/dist/world/capabilities.js +18 -0
  561. package/dist/world/capabilities.js.map +1 -0
  562. package/dist/world/index.d.ts +7 -0
  563. package/dist/world/index.d.ts.map +1 -0
  564. package/dist/world/index.js +21 -0
  565. package/dist/world/index.js.map +1 -0
  566. 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,3 @@
1
+ export { CombatantTrait, ICombatantData } from './combatantTrait';
2
+ export { CombatBehavior, ICombatResult } from './combatantBehavior';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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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"}