@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,30 @@
1
+ import { ITrait } from '../trait';
2
+ /**
3
+ * Container trait allows entities to hold other entities inside them.
4
+ *
5
+ * This is a pure data structure - all validation and logic
6
+ * should be handled by ContainerBehavior.
7
+ */
8
+ export declare class ContainerTrait implements ITrait {
9
+ static readonly type: "container";
10
+ readonly type: "container";
11
+ /** Capacity constraints for the container */
12
+ capacity?: {
13
+ /** Maximum total weight the container can hold (in kg) */
14
+ maxWeight?: number;
15
+ /** Maximum total volume the container can hold (in liters) */
16
+ maxVolume?: number;
17
+ /** Maximum number of items the container can hold */
18
+ maxItems?: number;
19
+ };
20
+ /** Whether contents are visible when the container is closed */
21
+ isTransparent: boolean;
22
+ /** Whether actors can enter this container */
23
+ enterable: boolean;
24
+ /** Only these entity types can be placed in the container */
25
+ allowedTypes?: string[];
26
+ /** These entity types cannot be placed in the container */
27
+ excludedTypes?: string[];
28
+ constructor(data?: Partial<ContainerTrait>);
29
+ }
30
+ //# sourceMappingURL=containerTrait.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containerTrait.d.ts","sourceRoot":"","sources":["../../../src/traits/container/containerTrait.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC;;;;;GAKG;AACH,qBAAa,cAAe,YAAW,MAAM;IAC3C,MAAM,CAAC,QAAQ,CAAC,IAAI,cAAuB;IAC3C,QAAQ,CAAC,IAAI,cAAuB;IAEpC,6CAA6C;IAC7C,QAAQ,CAAC,EAAE;QACT,0DAA0D;QAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;QAEnB,8DAA8D;QAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;QAEnB,qDAAqD;QACrD,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;gBAEb,IAAI,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;CAc3C"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ // packages/world-model/src/traits/container/containerTrait.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ContainerTrait = void 0;
5
+ const trait_types_1 = require("../trait-types");
6
+ /**
7
+ * Container trait allows entities to hold other entities inside them.
8
+ *
9
+ * This is a pure data structure - all validation and logic
10
+ * should be handled by ContainerBehavior.
11
+ */
12
+ class ContainerTrait {
13
+ static type = trait_types_1.TraitType.CONTAINER;
14
+ type = trait_types_1.TraitType.CONTAINER;
15
+ /** Capacity constraints for the container */
16
+ capacity;
17
+ /** Whether contents are visible when the container is closed */
18
+ isTransparent;
19
+ /** Whether actors can enter this container */
20
+ enterable;
21
+ /** Only these entity types can be placed in the container */
22
+ allowedTypes;
23
+ /** These entity types cannot be placed in the container */
24
+ excludedTypes;
25
+ constructor(data) {
26
+ // Set defaults
27
+ this.isTransparent = false;
28
+ this.enterable = false;
29
+ // Override with provided data
30
+ if (data) {
31
+ if (data.capacity !== undefined)
32
+ this.capacity = data.capacity;
33
+ if (data.isTransparent !== undefined)
34
+ this.isTransparent = data.isTransparent;
35
+ if (data.enterable !== undefined)
36
+ this.enterable = data.enterable;
37
+ if (data.allowedTypes !== undefined)
38
+ this.allowedTypes = data.allowedTypes;
39
+ if (data.excludedTypes !== undefined)
40
+ this.excludedTypes = data.excludedTypes;
41
+ }
42
+ }
43
+ }
44
+ exports.ContainerTrait = ContainerTrait;
45
+ //# sourceMappingURL=containerTrait.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containerTrait.js","sourceRoot":"","sources":["../../../src/traits/container/containerTrait.ts"],"names":[],"mappings":";AAAA,8DAA8D;;;AAG9D,gDAA2C;AAE3C;;;;;GAKG;AACH,MAAa,cAAc;IACzB,MAAM,CAAU,IAAI,GAAG,uBAAS,CAAC,SAAS,CAAC;IAClC,IAAI,GAAG,uBAAS,CAAC,SAAS,CAAC;IAEpC,6CAA6C;IAC7C,QAAQ,CASN;IAEF,gEAAgE;IAChE,aAAa,CAAU;IAEvB,8CAA8C;IAC9C,SAAS,CAAU;IAEnB,6DAA6D;IAC7D,YAAY,CAAY;IAExB,2DAA2D;IAC3D,aAAa,CAAY;IAEzB,YAAY,IAA8B;QACxC,eAAe;QACf,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,8BAA8B;QAC9B,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;gBAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC/D,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;gBAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YAC9E,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;gBAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAClE,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;gBAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YAC3E,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;gBAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAChF,CAAC;IACH,CAAC;;AAzCH,wCA0CC"}
@@ -0,0 +1,4 @@
1
+ export { ContainerTrait } from './containerTrait';
2
+ export { ContainerBehavior, type IWorldQuery, type IAddItemResult, type IRemoveItemResult } from './containerBehavior';
3
+ export { canContain, getContainerTrait, isContainerCapable, hasContainerProperties, type IContainerCapable } from './container-utils';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/traits/container/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACvH,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ // packages/world-model/src/traits/container/index.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.hasContainerProperties = exports.isContainerCapable = exports.getContainerTrait = exports.canContain = exports.ContainerBehavior = exports.ContainerTrait = void 0;
5
+ var containerTrait_1 = require("./containerTrait");
6
+ Object.defineProperty(exports, "ContainerTrait", { enumerable: true, get: function () { return containerTrait_1.ContainerTrait; } });
7
+ var containerBehavior_1 = require("./containerBehavior");
8
+ Object.defineProperty(exports, "ContainerBehavior", { enumerable: true, get: function () { return containerBehavior_1.ContainerBehavior; } });
9
+ var container_utils_1 = require("./container-utils");
10
+ Object.defineProperty(exports, "canContain", { enumerable: true, get: function () { return container_utils_1.canContain; } });
11
+ Object.defineProperty(exports, "getContainerTrait", { enumerable: true, get: function () { return container_utils_1.getContainerTrait; } });
12
+ Object.defineProperty(exports, "isContainerCapable", { enumerable: true, get: function () { return container_utils_1.isContainerCapable; } });
13
+ Object.defineProperty(exports, "hasContainerProperties", { enumerable: true, get: function () { return container_utils_1.hasContainerProperties; } });
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/traits/container/index.ts"],"names":[],"mappings":";AAAA,qDAAqD;;;AAErD,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,yDAAuH;AAA9G,sHAAA,iBAAiB,OAAA;AAC1B,qDAM2B;AALzB,6GAAA,UAAU,OAAA;AACV,oHAAA,iBAAiB,OAAA;AACjB,qHAAA,kBAAkB,OAAA;AAClB,yHAAA,sBAAsB,OAAA"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Behavior for destructible entities
3
+ */
4
+ import { Behavior } from '../../behaviors/behavior';
5
+ import { IFEntity } from '../../entities/if-entity';
6
+ import { WorldModel } from '../../world/WorldModel';
7
+ import { EntityId } from '@sharpee/core';
8
+ /**
9
+ * Result of damaging a destructible entity
10
+ */
11
+ export interface IDamageResult {
12
+ success: boolean;
13
+ damage: number;
14
+ destroyed: boolean;
15
+ remainingHitPoints: number;
16
+ requiresWeapon?: boolean;
17
+ wrongWeaponType?: boolean;
18
+ invulnerable?: boolean;
19
+ transformedTo?: EntityId;
20
+ exitRevealed?: string;
21
+ message?: string;
22
+ }
23
+ /**
24
+ * Behavior for destructible entities.
25
+ *
26
+ * Handles multi-hit destruction with hit points and armor.
27
+ * This is a world-aware behavior because it may transform entities or reveal exits.
28
+ */
29
+ export declare class DestructibleBehavior extends Behavior {
30
+ static requiredTraits: "destructible"[];
31
+ /**
32
+ * Check if an entity can be damaged
33
+ */
34
+ static canDamage(entity: IFEntity, weaponType?: string): boolean;
35
+ /**
36
+ * Damage the entity
37
+ * @param entity The entity to damage
38
+ * @param damage Base damage amount
39
+ * @param weaponType Type of weapon used (if any)
40
+ * @param world The world model (needed for transformations)
41
+ * @returns Result describing what happened
42
+ */
43
+ static damage(entity: IFEntity, damage: number, weaponType: string | undefined, world: WorldModel): IDamageResult;
44
+ /**
45
+ * Check if entity is destroyed
46
+ */
47
+ static isDestroyed(entity: IFEntity): boolean;
48
+ /**
49
+ * Get remaining hit points
50
+ */
51
+ static getHitPoints(entity: IFEntity): number;
52
+ /**
53
+ * Repair entity (restore hit points)
54
+ */
55
+ static repair(entity: IFEntity): boolean;
56
+ }
57
+ //# sourceMappingURL=destructibleBehavior.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destructibleBehavior.d.ts","sourceRoot":"","sources":["../../../src/traits/destructible/destructibleBehavior.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,QAAQ,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,QAAQ;IAChD,MAAM,CAAC,cAAc,mBAA4B;IAEjD;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO;IAgBhE;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,UAAU,GAAG,aAAa;IAoFjH;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO;IAQ7C;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM;IAK7C;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO;CAQzC"}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ /**
3
+ * Behavior for destructible entities
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DestructibleBehavior = void 0;
7
+ const behavior_1 = require("../../behaviors/behavior");
8
+ const trait_types_1 = require("../trait-types");
9
+ /**
10
+ * Behavior for destructible entities.
11
+ *
12
+ * Handles multi-hit destruction with hit points and armor.
13
+ * This is a world-aware behavior because it may transform entities or reveal exits.
14
+ */
15
+ class DestructibleBehavior extends behavior_1.Behavior {
16
+ static requiredTraits = [trait_types_1.TraitType.DESTRUCTIBLE];
17
+ /**
18
+ * Check if an entity can be damaged
19
+ */
20
+ static canDamage(entity, weaponType) {
21
+ if (!entity.has(trait_types_1.TraitType.DESTRUCTIBLE)) {
22
+ return false;
23
+ }
24
+ const destructible = entity.get(trait_types_1.TraitType.DESTRUCTIBLE);
25
+ if (destructible.invulnerable)
26
+ return false;
27
+ if (destructible.hitPoints <= 0)
28
+ return false; // Already destroyed
29
+ // Check weapon requirements
30
+ if (destructible.requiresWeapon && !weaponType)
31
+ return false;
32
+ if (destructible.requiresType && weaponType !== destructible.requiresType)
33
+ return false;
34
+ return true;
35
+ }
36
+ /**
37
+ * Damage the entity
38
+ * @param entity The entity to damage
39
+ * @param damage Base damage amount
40
+ * @param weaponType Type of weapon used (if any)
41
+ * @param world The world model (needed for transformations)
42
+ * @returns Result describing what happened
43
+ */
44
+ static damage(entity, damage, weaponType, world) {
45
+ if (!entity.has(trait_types_1.TraitType.DESTRUCTIBLE)) {
46
+ return {
47
+ success: false,
48
+ damage: 0,
49
+ destroyed: false,
50
+ remainingHitPoints: 0,
51
+ message: 'Entity is not destructible'
52
+ };
53
+ }
54
+ const destructible = entity.get(trait_types_1.TraitType.DESTRUCTIBLE);
55
+ // Check if can be damaged
56
+ if (destructible.invulnerable) {
57
+ return {
58
+ success: false,
59
+ damage: 0,
60
+ destroyed: false,
61
+ remainingHitPoints: destructible.hitPoints,
62
+ invulnerable: true
63
+ };
64
+ }
65
+ if (destructible.requiresWeapon && !weaponType) {
66
+ return {
67
+ success: false,
68
+ damage: 0,
69
+ destroyed: false,
70
+ remainingHitPoints: destructible.hitPoints,
71
+ requiresWeapon: true
72
+ };
73
+ }
74
+ if (destructible.requiresType && weaponType !== destructible.requiresType) {
75
+ return {
76
+ success: false,
77
+ damage: 0,
78
+ destroyed: false,
79
+ remainingHitPoints: destructible.hitPoints,
80
+ wrongWeaponType: true
81
+ };
82
+ }
83
+ // Apply armor reduction
84
+ const actualDamage = Math.max(1, damage - destructible.armor);
85
+ // Apply damage
86
+ destructible.hitPoints = Math.max(0, destructible.hitPoints - actualDamage);
87
+ const result = {
88
+ success: true,
89
+ damage: actualDamage,
90
+ destroyed: destructible.hitPoints <= 0,
91
+ remainingHitPoints: destructible.hitPoints,
92
+ message: destructible.hitPoints > 0 ? destructible.damageMessage : destructible.destroyMessage
93
+ };
94
+ // Handle destruction
95
+ if (destructible.hitPoints <= 0) {
96
+ // Transform entity if specified
97
+ if (destructible.transformTo) {
98
+ const location = world.getLocation(entity.id);
99
+ const newName = `transformed ${entity.id}`;
100
+ const newEntity = world.createEntity(newName, destructible.transformTo);
101
+ if (location && newEntity) {
102
+ world.moveEntity(newEntity.id, location);
103
+ result.transformedTo = newEntity.id;
104
+ // Remove original entity
105
+ world.removeEntity(entity.id);
106
+ }
107
+ }
108
+ // Reveal exit if specified
109
+ if (destructible.revealExit) {
110
+ result.exitRevealed = destructible.revealExit;
111
+ // The action will handle actually revealing the exit in the room
112
+ }
113
+ }
114
+ return result;
115
+ }
116
+ /**
117
+ * Check if entity is destroyed
118
+ */
119
+ static isDestroyed(entity) {
120
+ if (!entity.has(trait_types_1.TraitType.DESTRUCTIBLE)) {
121
+ return false;
122
+ }
123
+ const destructible = entity.get(trait_types_1.TraitType.DESTRUCTIBLE);
124
+ return destructible.hitPoints <= 0;
125
+ }
126
+ /**
127
+ * Get remaining hit points
128
+ */
129
+ static getHitPoints(entity) {
130
+ const destructible = DestructibleBehavior.require(entity, trait_types_1.TraitType.DESTRUCTIBLE);
131
+ return destructible.hitPoints;
132
+ }
133
+ /**
134
+ * Repair entity (restore hit points)
135
+ */
136
+ static repair(entity) {
137
+ const destructible = DestructibleBehavior.require(entity, trait_types_1.TraitType.DESTRUCTIBLE);
138
+ if (destructible.hitPoints >= destructible.maxHitPoints)
139
+ return false;
140
+ destructible.hitPoints = destructible.maxHitPoints;
141
+ return true;
142
+ }
143
+ }
144
+ exports.DestructibleBehavior = DestructibleBehavior;
145
+ //# sourceMappingURL=destructibleBehavior.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destructibleBehavior.js","sourceRoot":"","sources":["../../../src/traits/destructible/destructibleBehavior.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Destructible trait for entities that require multiple hits or specific tools to destroy
3
+ */
4
+ import { ITrait } from '../trait';
5
+ export interface IDestructibleData {
6
+ /** Current hit points */
7
+ hitPoints?: number;
8
+ /** Maximum hit points */
9
+ maxHitPoints?: number;
10
+ /** Whether this requires a weapon to damage */
11
+ requiresWeapon?: boolean;
12
+ /** Specific weapon type required (e.g., 'blade', 'magic') */
13
+ requiresType?: string;
14
+ /** Entity type to transform into when destroyed */
15
+ transformTo?: string;
16
+ /** Exit direction to reveal when destroyed (for barriers) */
17
+ revealExit?: string;
18
+ /** Custom message when damaged but not destroyed - injected into events */
19
+ damageMessage?: string;
20
+ /** Custom message when destroyed - injected into events */
21
+ destroyMessage?: string;
22
+ /** Whether this is invulnerable to normal attacks */
23
+ invulnerable?: boolean;
24
+ /** Armor value that reduces damage */
25
+ armor?: number;
26
+ }
27
+ /**
28
+ * Destructible trait indicates an entity can be destroyed with multiple hits.
29
+ *
30
+ * This trait contains only data - all destruction logic
31
+ * is in DestructibleBehavior. Messages are stored here to be
32
+ * injected into events during the report phase.
33
+ */
34
+ export declare class DestructibleTrait implements ITrait, IDestructibleData {
35
+ static readonly type: "destructible";
36
+ readonly type: "destructible";
37
+ hitPoints: number;
38
+ maxHitPoints: number;
39
+ requiresWeapon: boolean;
40
+ requiresType?: string;
41
+ transformTo?: string;
42
+ revealExit?: string;
43
+ damageMessage?: string;
44
+ destroyMessage?: string;
45
+ invulnerable: boolean;
46
+ armor: number;
47
+ constructor(data?: IDestructibleData);
48
+ }
49
+ //# sourceMappingURL=destructibleTrait.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destructibleTrait.d.ts","sourceRoot":"","sources":["../../../src/traits/destructible/destructibleTrait.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,MAAM,WAAW,iBAAiB;IAChC,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,yBAAyB;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,qDAAqD;IACrD,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,qBAAa,iBAAkB,YAAW,MAAM,EAAE,iBAAiB;IACjE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,cAAc,CAAU;IAC/C,QAAQ,CAAC,IAAI,EAAG,cAAc,CAAU;IAGxC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;gBAEF,IAAI,GAAE,iBAAsB;CAazC"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ /**
3
+ * Destructible trait for entities that require multiple hits or specific tools to destroy
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DestructibleTrait = void 0;
7
+ /**
8
+ * Destructible trait indicates an entity can be destroyed with multiple hits.
9
+ *
10
+ * This trait contains only data - all destruction logic
11
+ * is in DestructibleBehavior. Messages are stored here to be
12
+ * injected into events during the report phase.
13
+ */
14
+ class DestructibleTrait {
15
+ static type = 'destructible';
16
+ type = 'destructible';
17
+ // DestructibleData properties
18
+ hitPoints;
19
+ maxHitPoints;
20
+ requiresWeapon;
21
+ requiresType;
22
+ transformTo;
23
+ revealExit;
24
+ damageMessage;
25
+ destroyMessage;
26
+ invulnerable;
27
+ armor;
28
+ constructor(data = {}) {
29
+ // Set defaults and merge with provided data
30
+ this.hitPoints = data.hitPoints ?? data.maxHitPoints ?? 3;
31
+ this.maxHitPoints = data.maxHitPoints ?? 3;
32
+ this.requiresWeapon = data.requiresWeapon ?? false;
33
+ this.requiresType = data.requiresType;
34
+ this.transformTo = data.transformTo;
35
+ this.revealExit = data.revealExit;
36
+ this.damageMessage = data.damageMessage;
37
+ this.destroyMessage = data.destroyMessage;
38
+ this.invulnerable = data.invulnerable ?? false;
39
+ this.armor = data.armor ?? 0;
40
+ }
41
+ }
42
+ exports.DestructibleTrait = DestructibleTrait;
43
+ //# sourceMappingURL=destructibleTrait.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destructibleTrait.js","sourceRoot":"","sources":["../../../src/traits/destructible/destructibleTrait.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAqCH;;;;;;GAMG;AACH,MAAa,iBAAiB;IAC5B,MAAM,CAAU,IAAI,GAAG,cAAuB,CAAC;IACtC,IAAI,GAAG,cAAuB,CAAC;IAExC,8BAA8B;IAC9B,SAAS,CAAS;IAClB,YAAY,CAAS;IACrB,cAAc,CAAU;IACxB,YAAY,CAAU;IACtB,WAAW,CAAU;IACrB,UAAU,CAAU;IACpB,aAAa,CAAU;IACvB,cAAc,CAAU;IACxB,YAAY,CAAU;IACtB,KAAK,CAAS;IAEd,YAAY,OAA0B,EAAE;QACtC,4CAA4C;QAC5C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC;QACnD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC;QAC/C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IAC/B,CAAC;;AA5BH,8CA6BC"}
@@ -0,0 +1,3 @@
1
+ export { DestructibleTrait, IDestructibleData } from './destructibleTrait';
2
+ export { DestructibleBehavior, IDamageResult } from './destructibleBehavior';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/traits/destructible/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DestructibleBehavior = exports.DestructibleTrait = void 0;
4
+ var destructibleTrait_1 = require("./destructibleTrait");
5
+ Object.defineProperty(exports, "DestructibleTrait", { enumerable: true, get: function () { return destructibleTrait_1.DestructibleTrait; } });
6
+ var destructibleBehavior_1 = require("./destructibleBehavior");
7
+ Object.defineProperty(exports, "DestructibleBehavior", { enumerable: true, get: function () { return destructibleBehavior_1.DestructibleBehavior; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/traits/destructible/index.ts"],"names":[],"mappings":";;;AAAA,yDAA2E;AAAlE,sHAAA,iBAAiB,OAAA;AAC1B,+DAA6E;AAApE,4HAAA,oBAAoB,OAAA"}
@@ -0,0 +1,42 @@
1
+ import { Behavior } from '../../behaviors/behavior';
2
+ import { IFEntity } from '../../entities/if-entity';
3
+ /**
4
+ * Behavior for door entities.
5
+ *
6
+ * Handles the logic for doors that connect two rooms.
7
+ */
8
+ export declare class DoorBehavior extends Behavior {
9
+ static requiredTraits: "door"[];
10
+ /**
11
+ * Get the rooms this door connects
12
+ */
13
+ static getRooms(door: IFEntity): [string, string];
14
+ /**
15
+ * Get the other room when coming from a specific room
16
+ * @returns The other room ID, or undefined if the door doesn't connect to the current room
17
+ */
18
+ static getOtherRoom(door: IFEntity, currentRoom: string): string | undefined;
19
+ /**
20
+ * Check if the door can be traversed in both directions
21
+ */
22
+ static isBidirectional(door: IFEntity): boolean;
23
+ /**
24
+ * Check if the door connects two specific rooms (in any order)
25
+ */
26
+ static connects(door: IFEntity, room1: string, room2: string): boolean;
27
+ /**
28
+ * Check if the door connects to a specific room
29
+ */
30
+ static connectsTo(door: IFEntity, roomId: string): boolean;
31
+ /**
32
+ * Get the entry room (for one-way doors)
33
+ * This is the room you can enter from
34
+ */
35
+ static getEntryRoom(door: IFEntity): string;
36
+ /**
37
+ * Get the exit room (for one-way doors)
38
+ * This is the room you exit to
39
+ */
40
+ static getExitRoom(door: IFEntity): string;
41
+ }
42
+ //# sourceMappingURL=doorBehavior.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doorBehavior.d.ts","sourceRoot":"","sources":["../../../src/traits/door/doorBehavior.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAIpD;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,QAAQ;IACxC,MAAM,CAAC,cAAc,WAAoB;IAEzC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAKjD;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAa5E;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAK/C;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAMtE;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAK1D;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAK3C;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;CAI3C"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ // packages/world-model/src/traits/door/doorBehavior.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.DoorBehavior = void 0;
5
+ const behavior_1 = require("../../behaviors/behavior");
6
+ const trait_types_1 = require("../trait-types");
7
+ /**
8
+ * Behavior for door entities.
9
+ *
10
+ * Handles the logic for doors that connect two rooms.
11
+ */
12
+ class DoorBehavior extends behavior_1.Behavior {
13
+ static requiredTraits = [trait_types_1.TraitType.DOOR];
14
+ /**
15
+ * Get the rooms this door connects
16
+ */
17
+ static getRooms(door) {
18
+ const trait = DoorBehavior.require(door, trait_types_1.TraitType.DOOR);
19
+ return [trait.room1, trait.room2];
20
+ }
21
+ /**
22
+ * Get the other room when coming from a specific room
23
+ * @returns The other room ID, or undefined if the door doesn't connect to the current room
24
+ */
25
+ static getOtherRoom(door, currentRoom) {
26
+ const trait = DoorBehavior.require(door, trait_types_1.TraitType.DOOR);
27
+ if (trait.room1 === currentRoom) {
28
+ return trait.room2;
29
+ }
30
+ else if (trait.room2 === currentRoom) {
31
+ // Check if traversal is allowed in this direction
32
+ return trait.bidirectional ? trait.room1 : undefined;
33
+ }
34
+ return undefined;
35
+ }
36
+ /**
37
+ * Check if the door can be traversed in both directions
38
+ */
39
+ static isBidirectional(door) {
40
+ const trait = DoorBehavior.require(door, trait_types_1.TraitType.DOOR);
41
+ return trait.bidirectional;
42
+ }
43
+ /**
44
+ * Check if the door connects two specific rooms (in any order)
45
+ */
46
+ static connects(door, room1, room2) {
47
+ const trait = DoorBehavior.require(door, trait_types_1.TraitType.DOOR);
48
+ return (trait.room1 === room1 && trait.room2 === room2) ||
49
+ (trait.room1 === room2 && trait.room2 === room1);
50
+ }
51
+ /**
52
+ * Check if the door connects to a specific room
53
+ */
54
+ static connectsTo(door, roomId) {
55
+ const trait = DoorBehavior.require(door, trait_types_1.TraitType.DOOR);
56
+ return trait.room1 === roomId || trait.room2 === roomId;
57
+ }
58
+ /**
59
+ * Get the entry room (for one-way doors)
60
+ * This is the room you can enter from
61
+ */
62
+ static getEntryRoom(door) {
63
+ const trait = DoorBehavior.require(door, trait_types_1.TraitType.DOOR);
64
+ return trait.room1;
65
+ }
66
+ /**
67
+ * Get the exit room (for one-way doors)
68
+ * This is the room you exit to
69
+ */
70
+ static getExitRoom(door) {
71
+ const trait = DoorBehavior.require(door, trait_types_1.TraitType.DOOR);
72
+ return trait.room2;
73
+ }
74
+ }
75
+ exports.DoorBehavior = DoorBehavior;
76
+ //# sourceMappingURL=doorBehavior.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doorBehavior.js","sourceRoot":"","sources":["../../../src/traits/door/doorBehavior.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;AAEvD,uDAAoD;AAEpD,gDAA2C;AAG3C;;;;GAIG;AACH,MAAa,YAAa,SAAQ,mBAAQ;IACxC,MAAM,CAAC,cAAc,GAAG,CAAC,uBAAS,CAAC,IAAI,CAAC,CAAC;IAEzC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAc;QAC5B,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAY,IAAI,EAAE,uBAAS,CAAC,IAAI,CAAC,CAAC;QACpE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,IAAc,EAAE,WAAmB;QACrD,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAY,IAAI,EAAE,uBAAS,CAAC,IAAI,CAAC,CAAC;QAEpE,IAAI,KAAK,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC,KAAK,CAAC;QACrB,CAAC;aAAM,IAAI,KAAK,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YACvC,kDAAkD;YAClD,OAAO,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QACvD,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,IAAc;QACnC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAY,IAAI,EAAE,uBAAS,CAAC,IAAI,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC,aAAa,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAc,EAAE,KAAa,EAAE,KAAa;QAC1D,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAY,IAAI,EAAE,uBAAS,CAAC,IAAI,CAAC,CAAC;QACpE,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC;YAChD,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,IAAc,EAAE,MAAc;QAC9C,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAY,IAAI,EAAE,uBAAS,CAAC,IAAI,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC;IAC1D,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,IAAc;QAChC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAY,IAAI,EAAE,uBAAS,CAAC,IAAI,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,IAAc;QAC/B,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAY,IAAI,EAAE,uBAAS,CAAC,IAAI,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;;AArEH,oCAsEC"}
@@ -0,0 +1,19 @@
1
+ import { ITrait } from '../trait';
2
+ /**
3
+ * Door trait marks an entity as a connection between two rooms.
4
+ *
5
+ * This is a pure data structure - all validation and logic
6
+ * should be handled by DoorBehavior.
7
+ */
8
+ export declare class DoorTrait implements ITrait {
9
+ static readonly type: "door";
10
+ readonly type: "door";
11
+ /** First room this door connects (must be an entity ID, not a name) */
12
+ room1: string;
13
+ /** Second room this door connects (must be an entity ID, not a name) */
14
+ room2: string;
15
+ /** Whether the door can be traversed in both directions */
16
+ bidirectional: boolean;
17
+ constructor(data?: Partial<DoorTrait>);
18
+ }
19
+ //# sourceMappingURL=doorTrait.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doorTrait.d.ts","sourceRoot":"","sources":["../../../src/traits/door/doorTrait.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC;;;;;GAKG;AACH,qBAAa,SAAU,YAAW,MAAM;IACtC,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAkB;IACtC,QAAQ,CAAC,IAAI,SAAkB;IAE/B,uEAAuE;IACvE,KAAK,EAAG,MAAM,CAAC;IAEf,wEAAwE;IACxE,KAAK,EAAG,MAAM,CAAC;IAEf,2DAA2D;IAC3D,aAAa,UAAQ;gBAET,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC;CAWtC"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ // packages/world-model/src/traits/door/doorTrait.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.DoorTrait = void 0;
5
+ const trait_types_1 = require("../trait-types");
6
+ /**
7
+ * Door trait marks an entity as a connection between two rooms.
8
+ *
9
+ * This is a pure data structure - all validation and logic
10
+ * should be handled by DoorBehavior.
11
+ */
12
+ class DoorTrait {
13
+ static type = trait_types_1.TraitType.DOOR;
14
+ type = trait_types_1.TraitType.DOOR;
15
+ /** First room this door connects (must be an entity ID, not a name) */
16
+ room1;
17
+ /** Second room this door connects (must be an entity ID, not a name) */
18
+ room2;
19
+ /** Whether the door can be traversed in both directions */
20
+ bidirectional = true;
21
+ constructor(data) {
22
+ // Set defaults first
23
+ if (data) {
24
+ Object.assign(this, data);
25
+ }
26
+ // Validate required fields
27
+ if (!this.room1 || !this.room2) {
28
+ throw new Error('Door must connect two rooms');
29
+ }
30
+ }
31
+ }
32
+ exports.DoorTrait = DoorTrait;
33
+ //# sourceMappingURL=doorTrait.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doorTrait.js","sourceRoot":"","sources":["../../../src/traits/door/doorTrait.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAGpD,gDAA2C;AAE3C;;;;;GAKG;AACH,MAAa,SAAS;IACpB,MAAM,CAAU,IAAI,GAAG,uBAAS,CAAC,IAAI,CAAC;IAC7B,IAAI,GAAG,uBAAS,CAAC,IAAI,CAAC;IAE/B,uEAAuE;IACvE,KAAK,CAAU;IAEf,wEAAwE;IACxE,KAAK,CAAU;IAEf,2DAA2D;IAC3D,aAAa,GAAG,IAAI,CAAC;IAErB,YAAY,IAAyB;QACnC,qBAAqB;QACrB,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;;AAvBH,8BAwBC"}