@sharpee/world-model 0.9.66-beta → 0.9.67-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (589) hide show
  1. package/annotations/index.d.ts +2 -0
  2. package/annotations/index.d.ts.map +1 -0
  3. package/annotations/index.js +18 -0
  4. package/annotations/index.js.map +1 -0
  5. package/annotations/types.d.ts +35 -0
  6. package/annotations/types.d.ts.map +1 -0
  7. package/annotations/types.js +9 -0
  8. package/annotations/types.js.map +1 -0
  9. package/behaviors/attack.d.ts +52 -0
  10. package/behaviors/attack.d.ts.map +1 -0
  11. package/behaviors/attack.js +161 -0
  12. package/behaviors/attack.js.map +1 -0
  13. package/behaviors/behavior.d.ts +67 -0
  14. package/behaviors/behavior.d.ts.map +1 -0
  15. package/behaviors/behavior.js +80 -0
  16. package/behaviors/behavior.js.map +1 -0
  17. package/behaviors/index.d.ts +21 -0
  18. package/behaviors/index.d.ts.map +1 -0
  19. package/behaviors/index.js +39 -0
  20. package/behaviors/index.js.map +1 -0
  21. package/capabilities/action-interceptor.d.ts +169 -0
  22. package/capabilities/action-interceptor.d.ts.map +1 -0
  23. package/capabilities/action-interceptor.js +15 -0
  24. package/capabilities/action-interceptor.js.map +1 -0
  25. package/capabilities/capability-behavior.d.ts +112 -0
  26. package/capabilities/capability-behavior.d.ts.map +1 -0
  27. package/capabilities/capability-behavior.js +9 -0
  28. package/capabilities/capability-behavior.js.map +1 -0
  29. package/capabilities/capability-defaults.d.ts +67 -0
  30. package/capabilities/capability-defaults.d.ts.map +1 -0
  31. package/capabilities/capability-defaults.js +81 -0
  32. package/capabilities/capability-defaults.js.map +1 -0
  33. package/capabilities/capability-helpers.d.ts +76 -0
  34. package/capabilities/capability-helpers.d.ts.map +1 -0
  35. package/capabilities/capability-helpers.js +112 -0
  36. package/capabilities/capability-helpers.js.map +1 -0
  37. package/capabilities/capability-registry.d.ts +115 -0
  38. package/capabilities/capability-registry.d.ts.map +1 -0
  39. package/capabilities/capability-registry.js +136 -0
  40. package/capabilities/capability-registry.js.map +1 -0
  41. package/capabilities/entity-builder.d.ts +79 -0
  42. package/capabilities/entity-builder.d.ts.map +1 -0
  43. package/capabilities/entity-builder.js +116 -0
  44. package/capabilities/entity-builder.js.map +1 -0
  45. package/capabilities/index.d.ts +16 -0
  46. package/capabilities/index.d.ts.map +1 -0
  47. package/capabilities/index.js +56 -0
  48. package/capabilities/index.js.map +1 -0
  49. package/capabilities/interceptor-helpers.d.ts +74 -0
  50. package/capabilities/interceptor-helpers.d.ts.map +1 -0
  51. package/capabilities/interceptor-helpers.js +111 -0
  52. package/capabilities/interceptor-helpers.js.map +1 -0
  53. package/capabilities/interceptor-registry.d.ts +125 -0
  54. package/capabilities/interceptor-registry.d.ts.map +1 -0
  55. package/capabilities/interceptor-registry.js +176 -0
  56. package/capabilities/interceptor-registry.js.map +1 -0
  57. package/capabilities/types.d.ts +35 -0
  58. package/capabilities/types.d.ts.map +1 -0
  59. package/capabilities/types.js +16 -0
  60. package/capabilities/types.js.map +1 -0
  61. package/commands/command-types.d.ts +30 -0
  62. package/commands/command-types.d.ts.map +1 -0
  63. package/commands/command-types.js +6 -0
  64. package/commands/command-types.js.map +1 -0
  65. package/commands/index.d.ts +7 -0
  66. package/commands/index.d.ts.map +1 -0
  67. package/commands/index.js +23 -0
  68. package/commands/index.js.map +1 -0
  69. package/commands/parsed-command.d.ts +204 -0
  70. package/commands/parsed-command.d.ts.map +1 -0
  71. package/commands/parsed-command.js +25 -0
  72. package/commands/parsed-command.js.map +1 -0
  73. package/commands/validated-command.d.ts +52 -0
  74. package/commands/validated-command.d.ts.map +1 -0
  75. package/commands/validated-command.js +8 -0
  76. package/commands/validated-command.js.map +1 -0
  77. package/constants/action-failures.d.ts +54 -0
  78. package/constants/action-failures.d.ts.map +1 -0
  79. package/constants/action-failures.js +68 -0
  80. package/constants/action-failures.js.map +1 -0
  81. package/constants/directions.d.ts +32 -0
  82. package/constants/directions.d.ts.map +1 -0
  83. package/constants/directions.js +53 -0
  84. package/constants/directions.js.map +1 -0
  85. package/constants/if-events.d.ts +5 -0
  86. package/constants/if-events.d.ts.map +1 -0
  87. package/constants/if-events.js +10 -0
  88. package/constants/if-events.js.map +1 -0
  89. package/constants/index.d.ts +9 -0
  90. package/constants/index.d.ts.map +1 -0
  91. package/constants/index.js +25 -0
  92. package/constants/index.js.map +1 -0
  93. package/entities/entity-store.d.ts +66 -0
  94. package/entities/entity-store.d.ts.map +1 -0
  95. package/entities/entity-store.js +116 -0
  96. package/entities/entity-store.js.map +1 -0
  97. package/entities/entity-types.d.ts +40 -0
  98. package/entities/entity-types.d.ts.map +1 -0
  99. package/entities/entity-types.js +56 -0
  100. package/entities/entity-types.js.map +1 -0
  101. package/entities/if-entity.d.ts +314 -0
  102. package/entities/if-entity.d.ts.map +1 -0
  103. package/entities/if-entity.js +621 -0
  104. package/entities/if-entity.js.map +1 -0
  105. package/entities/index.d.ts +5 -0
  106. package/entities/index.d.ts.map +1 -0
  107. package/entities/index.js +13 -0
  108. package/entities/index.js.map +1 -0
  109. package/events/types.d.ts +45 -0
  110. package/events/types.d.ts.map +1 -0
  111. package/events/types.js +9 -0
  112. package/events/types.js.map +1 -0
  113. package/examples/event-handler-registration.d.ts +14 -0
  114. package/examples/event-handler-registration.d.ts.map +1 -0
  115. package/examples/event-handler-registration.js +158 -0
  116. package/examples/event-handler-registration.js.map +1 -0
  117. package/extensions/base-extension.d.ts +69 -0
  118. package/extensions/base-extension.d.ts.map +1 -0
  119. package/extensions/base-extension.js +83 -0
  120. package/extensions/base-extension.js.map +1 -0
  121. package/extensions/index.d.ts +11 -0
  122. package/extensions/index.d.ts.map +1 -0
  123. package/extensions/index.js +39 -0
  124. package/extensions/index.js.map +1 -0
  125. package/extensions/loader.d.ts +52 -0
  126. package/extensions/loader.d.ts.map +1 -0
  127. package/extensions/loader.js +177 -0
  128. package/extensions/loader.js.map +1 -0
  129. package/extensions/manager.d.ts +68 -0
  130. package/extensions/manager.d.ts.map +1 -0
  131. package/extensions/manager.js +164 -0
  132. package/extensions/manager.js.map +1 -0
  133. package/extensions/registry.d.ts +100 -0
  134. package/extensions/registry.d.ts.map +1 -0
  135. package/extensions/registry.js +193 -0
  136. package/extensions/registry.js.map +1 -0
  137. package/extensions/types.d.ts +226 -0
  138. package/extensions/types.d.ts.map +1 -0
  139. package/extensions/types.js +28 -0
  140. package/extensions/types.js.map +1 -0
  141. package/index.d.ts +41 -0
  142. package/index.d.ts.map +1 -0
  143. package/index.js +71 -0
  144. package/index.js.map +1 -0
  145. package/interfaces/command-executor.d.ts +17 -0
  146. package/interfaces/command-executor.d.ts.map +1 -0
  147. package/interfaces/command-executor.js +6 -0
  148. package/interfaces/command-executor.js.map +1 -0
  149. package/interfaces/command-processor.d.ts +17 -0
  150. package/interfaces/command-processor.d.ts.map +1 -0
  151. package/interfaces/command-processor.js +6 -0
  152. package/interfaces/command-processor.js.map +1 -0
  153. package/interfaces/command-validator.d.ts +17 -0
  154. package/interfaces/command-validator.d.ts.map +1 -0
  155. package/interfaces/command-validator.js +6 -0
  156. package/interfaces/command-validator.js.map +1 -0
  157. package/interfaces/index.d.ts +8 -0
  158. package/interfaces/index.d.ts.map +1 -0
  159. package/interfaces/index.js +24 -0
  160. package/interfaces/index.js.map +1 -0
  161. package/interfaces/language-provider.d.ts +86 -0
  162. package/interfaces/language-provider.d.ts.map +1 -0
  163. package/interfaces/language-provider.js +14 -0
  164. package/interfaces/language-provider.js.map +1 -0
  165. package/interfaces/parser.d.ts +16 -0
  166. package/interfaces/parser.d.ts.map +1 -0
  167. package/interfaces/parser.js +6 -0
  168. package/interfaces/parser.js.map +1 -0
  169. package/package.json +1 -16
  170. package/scope/index.d.ts +8 -0
  171. package/scope/index.d.ts.map +1 -0
  172. package/scope/index.js +24 -0
  173. package/scope/index.js.map +1 -0
  174. package/scope/scope-evaluator.d.ts +58 -0
  175. package/scope/scope-evaluator.d.ts.map +1 -0
  176. package/scope/scope-evaluator.js +207 -0
  177. package/scope/scope-evaluator.js.map +1 -0
  178. package/scope/scope-registry.d.ts +59 -0
  179. package/scope/scope-registry.d.ts.map +1 -0
  180. package/scope/scope-registry.js +182 -0
  181. package/scope/scope-registry.js.map +1 -0
  182. package/scope/scope-rule.d.ts +86 -0
  183. package/scope/scope-rule.d.ts.map +1 -0
  184. package/scope/scope-rule.js +7 -0
  185. package/scope/scope-rule.js.map +1 -0
  186. package/services/ScopeService.d.ts +8 -0
  187. package/services/ScopeService.d.ts.map +1 -0
  188. package/services/ScopeService.js +19 -0
  189. package/services/ScopeService.js.map +1 -0
  190. package/services/index.d.ts +2 -0
  191. package/services/index.d.ts.map +1 -0
  192. package/services/index.js +6 -0
  193. package/services/index.js.map +1 -0
  194. package/test-structure.d.ts +3 -0
  195. package/test-structure.d.ts.map +1 -0
  196. package/test-structure.js +26 -0
  197. package/test-structure.js.map +1 -0
  198. package/traits/actor/actorBehavior.d.ts +121 -0
  199. package/traits/actor/actorBehavior.d.ts.map +1 -0
  200. package/traits/actor/actorBehavior.js +288 -0
  201. package/traits/actor/actorBehavior.js.map +1 -0
  202. package/traits/actor/actorTrait.d.ts +158 -0
  203. package/traits/actor/actorTrait.d.ts.map +1 -0
  204. package/traits/actor/actorTrait.js +152 -0
  205. package/traits/actor/actorTrait.js.map +1 -0
  206. package/traits/actor/index.d.ts +3 -0
  207. package/traits/actor/index.d.ts.map +1 -0
  208. package/traits/actor/index.js +11 -0
  209. package/traits/actor/index.js.map +1 -0
  210. package/traits/all-traits.d.ts +95 -0
  211. package/traits/all-traits.d.ts.map +1 -0
  212. package/traits/all-traits.js +178 -0
  213. package/traits/all-traits.js.map +1 -0
  214. package/traits/attached/attachedTrait.d.ts +61 -0
  215. package/traits/attached/attachedTrait.d.ts.map +1 -0
  216. package/traits/attached/attachedTrait.js +36 -0
  217. package/traits/attached/attachedTrait.js.map +1 -0
  218. package/traits/attached/index.d.ts +2 -0
  219. package/traits/attached/index.d.ts.map +1 -0
  220. package/traits/attached/index.js +18 -0
  221. package/traits/attached/index.js.map +1 -0
  222. package/traits/breakable/breakableBehavior.d.ts +43 -0
  223. package/traits/breakable/breakableBehavior.d.ts.map +1 -0
  224. package/traits/breakable/breakableBehavior.js +70 -0
  225. package/traits/breakable/breakableBehavior.js.map +1 -0
  226. package/traits/breakable/breakableTrait.d.ts +22 -0
  227. package/traits/breakable/breakableTrait.d.ts.map +1 -0
  228. package/traits/breakable/breakableTrait.js +25 -0
  229. package/traits/breakable/breakableTrait.js.map +1 -0
  230. package/traits/breakable/index.d.ts +3 -0
  231. package/traits/breakable/index.d.ts.map +1 -0
  232. package/traits/breakable/index.js +8 -0
  233. package/traits/breakable/index.js.map +1 -0
  234. package/traits/button/buttonTrait.d.ts +53 -0
  235. package/traits/button/buttonTrait.d.ts.map +1 -0
  236. package/traits/button/buttonTrait.js +36 -0
  237. package/traits/button/buttonTrait.js.map +1 -0
  238. package/traits/button/index.d.ts +2 -0
  239. package/traits/button/index.d.ts.map +1 -0
  240. package/traits/button/index.js +18 -0
  241. package/traits/button/index.js.map +1 -0
  242. package/traits/climbable/climbableBehavior.d.ts +37 -0
  243. package/traits/climbable/climbableBehavior.d.ts.map +1 -0
  244. package/traits/climbable/climbableBehavior.js +70 -0
  245. package/traits/climbable/climbableBehavior.js.map +1 -0
  246. package/traits/climbable/climbableTrait.d.ts +31 -0
  247. package/traits/climbable/climbableTrait.d.ts.map +1 -0
  248. package/traits/climbable/climbableTrait.js +47 -0
  249. package/traits/climbable/climbableTrait.js.map +1 -0
  250. package/traits/climbable/index.d.ts +6 -0
  251. package/traits/climbable/index.d.ts.map +1 -0
  252. package/traits/climbable/index.js +22 -0
  253. package/traits/climbable/index.js.map +1 -0
  254. package/traits/clothing/clothingTrait.d.ts +58 -0
  255. package/traits/clothing/clothingTrait.d.ts.map +1 -0
  256. package/traits/clothing/clothingTrait.js +78 -0
  257. package/traits/clothing/clothingTrait.js.map +1 -0
  258. package/traits/clothing/index.d.ts +2 -0
  259. package/traits/clothing/index.d.ts.map +1 -0
  260. package/traits/clothing/index.js +19 -0
  261. package/traits/clothing/index.js.map +1 -0
  262. package/traits/combatant/combatantBehavior.d.ts +70 -0
  263. package/traits/combatant/combatantBehavior.d.ts.map +1 -0
  264. package/traits/combatant/combatantBehavior.js +155 -0
  265. package/traits/combatant/combatantBehavior.js.map +1 -0
  266. package/traits/combatant/combatantTrait.d.ts +98 -0
  267. package/traits/combatant/combatantTrait.d.ts.map +1 -0
  268. package/traits/combatant/combatantTrait.js +122 -0
  269. package/traits/combatant/combatantTrait.js.map +1 -0
  270. package/traits/combatant/index.d.ts +3 -0
  271. package/traits/combatant/index.d.ts.map +1 -0
  272. package/traits/combatant/index.js +8 -0
  273. package/traits/combatant/index.js.map +1 -0
  274. package/traits/container/container-utils.d.ts +39 -0
  275. package/traits/container/container-utils.d.ts.map +1 -0
  276. package/traits/container/container-utils.js +72 -0
  277. package/traits/container/container-utils.js.map +1 -0
  278. package/traits/container/containerBehavior.d.ts +94 -0
  279. package/traits/container/containerBehavior.d.ts.map +1 -0
  280. package/traits/container/containerBehavior.js +256 -0
  281. package/traits/container/containerBehavior.js.map +1 -0
  282. package/traits/container/containerTrait.d.ts +30 -0
  283. package/traits/container/containerTrait.d.ts.map +1 -0
  284. package/traits/container/containerTrait.js +45 -0
  285. package/traits/container/containerTrait.js.map +1 -0
  286. package/traits/container/index.d.ts +4 -0
  287. package/traits/container/index.d.ts.map +1 -0
  288. package/traits/container/index.js +14 -0
  289. package/traits/container/index.js.map +1 -0
  290. package/traits/destructible/destructibleBehavior.d.ts +57 -0
  291. package/traits/destructible/destructibleBehavior.d.ts.map +1 -0
  292. package/traits/destructible/destructibleBehavior.js +145 -0
  293. package/traits/destructible/destructibleBehavior.js.map +1 -0
  294. package/traits/destructible/destructibleTrait.d.ts +49 -0
  295. package/traits/destructible/destructibleTrait.d.ts.map +1 -0
  296. package/traits/destructible/destructibleTrait.js +43 -0
  297. package/traits/destructible/destructibleTrait.js.map +1 -0
  298. package/traits/destructible/index.d.ts +3 -0
  299. package/traits/destructible/index.d.ts.map +1 -0
  300. package/traits/destructible/index.js +8 -0
  301. package/traits/destructible/index.js.map +1 -0
  302. package/traits/door/doorBehavior.d.ts +42 -0
  303. package/traits/door/doorBehavior.d.ts.map +1 -0
  304. package/traits/door/doorBehavior.js +76 -0
  305. package/traits/door/doorBehavior.js.map +1 -0
  306. package/traits/door/doorTrait.d.ts +19 -0
  307. package/traits/door/doorTrait.d.ts.map +1 -0
  308. package/traits/door/doorTrait.js +33 -0
  309. package/traits/door/doorTrait.js.map +1 -0
  310. package/traits/door/index.d.ts +3 -0
  311. package/traits/door/index.d.ts.map +1 -0
  312. package/traits/door/index.js +9 -0
  313. package/traits/door/index.js.map +1 -0
  314. package/traits/edible/edibleBehavior.d.ts +63 -0
  315. package/traits/edible/edibleBehavior.d.ts.map +1 -0
  316. package/traits/edible/edibleBehavior.js +157 -0
  317. package/traits/edible/edibleBehavior.js.map +1 -0
  318. package/traits/edible/edibleTrait.d.ts +57 -0
  319. package/traits/edible/edibleTrait.d.ts.map +1 -0
  320. package/traits/edible/edibleTrait.js +51 -0
  321. package/traits/edible/edibleTrait.js.map +1 -0
  322. package/traits/edible/index.d.ts +3 -0
  323. package/traits/edible/index.d.ts.map +1 -0
  324. package/traits/edible/index.js +20 -0
  325. package/traits/edible/index.js.map +1 -0
  326. package/traits/enterable/enterableTrait.d.ts +33 -0
  327. package/traits/enterable/enterableTrait.d.ts.map +1 -0
  328. package/traits/enterable/enterableTrait.js +38 -0
  329. package/traits/enterable/enterableTrait.js.map +1 -0
  330. package/traits/enterable/index.d.ts +5 -0
  331. package/traits/enterable/index.d.ts.map +1 -0
  332. package/traits/enterable/index.js +21 -0
  333. package/traits/enterable/index.js.map +1 -0
  334. package/traits/equipped/equippedTrait.d.ts +46 -0
  335. package/traits/equipped/equippedTrait.d.ts.map +1 -0
  336. package/traits/equipped/equippedTrait.js +34 -0
  337. package/traits/equipped/equippedTrait.js.map +1 -0
  338. package/traits/equipped/index.d.ts +2 -0
  339. package/traits/equipped/index.d.ts.map +1 -0
  340. package/traits/equipped/index.js +6 -0
  341. package/traits/equipped/index.js.map +1 -0
  342. package/traits/exit/exitBehavior.d.ts +51 -0
  343. package/traits/exit/exitBehavior.d.ts.map +1 -0
  344. package/traits/exit/exitBehavior.js +231 -0
  345. package/traits/exit/exitBehavior.js.map +1 -0
  346. package/traits/exit/exitTrait.d.ts +41 -0
  347. package/traits/exit/exitTrait.d.ts.map +1 -0
  348. package/traits/exit/exitTrait.js +75 -0
  349. package/traits/exit/exitTrait.js.map +1 -0
  350. package/traits/exit/index.d.ts +3 -0
  351. package/traits/exit/index.d.ts.map +1 -0
  352. package/traits/exit/index.js +9 -0
  353. package/traits/exit/index.js.map +1 -0
  354. package/traits/identity/identityBehavior.d.ts +64 -0
  355. package/traits/identity/identityBehavior.d.ts.map +1 -0
  356. package/traits/identity/identityBehavior.js +154 -0
  357. package/traits/identity/identityBehavior.js.map +1 -0
  358. package/traits/identity/identityTrait.d.ts +70 -0
  359. package/traits/identity/identityTrait.d.ts.map +1 -0
  360. package/traits/identity/identityTrait.js +79 -0
  361. package/traits/identity/identityTrait.js.map +1 -0
  362. package/traits/identity/index.d.ts +3 -0
  363. package/traits/identity/index.d.ts.map +1 -0
  364. package/traits/identity/index.js +20 -0
  365. package/traits/identity/index.js.map +1 -0
  366. package/traits/implementations.d.ts +52 -0
  367. package/traits/implementations.d.ts.map +1 -0
  368. package/traits/implementations.js +150 -0
  369. package/traits/implementations.js.map +1 -0
  370. package/traits/index.d.ts +37 -0
  371. package/traits/index.d.ts.map +1 -0
  372. package/traits/index.js +64 -0
  373. package/traits/index.js.map +1 -0
  374. package/traits/light-source/index.d.ts +3 -0
  375. package/traits/light-source/index.d.ts.map +1 -0
  376. package/traits/light-source/index.js +9 -0
  377. package/traits/light-source/index.js.map +1 -0
  378. package/traits/light-source/lightSourceBehavior.d.ts +57 -0
  379. package/traits/light-source/lightSourceBehavior.d.ts.map +1 -0
  380. package/traits/light-source/lightSourceBehavior.js +135 -0
  381. package/traits/light-source/lightSourceBehavior.js.map +1 -0
  382. package/traits/light-source/lightSourceTrait.d.ts +28 -0
  383. package/traits/light-source/lightSourceTrait.d.ts.map +1 -0
  384. package/traits/light-source/lightSourceTrait.js +37 -0
  385. package/traits/light-source/lightSourceTrait.js.map +1 -0
  386. package/traits/lockable/index.d.ts +3 -0
  387. package/traits/lockable/index.d.ts.map +1 -0
  388. package/traits/lockable/index.js +20 -0
  389. package/traits/lockable/index.js.map +1 -0
  390. package/traits/lockable/lockableBehavior.d.ts +88 -0
  391. package/traits/lockable/lockableBehavior.d.ts.map +1 -0
  392. package/traits/lockable/lockableBehavior.js +196 -0
  393. package/traits/lockable/lockableBehavior.js.map +1 -0
  394. package/traits/lockable/lockableTrait.d.ts +59 -0
  395. package/traits/lockable/lockableTrait.d.ts.map +1 -0
  396. package/traits/lockable/lockableTrait.js +50 -0
  397. package/traits/lockable/lockableTrait.js.map +1 -0
  398. package/traits/moveable-scenery/index.d.ts +2 -0
  399. package/traits/moveable-scenery/index.d.ts.map +1 -0
  400. package/traits/moveable-scenery/index.js +18 -0
  401. package/traits/moveable-scenery/index.js.map +1 -0
  402. package/traits/moveable-scenery/moveableSceneryTrait.d.ts +69 -0
  403. package/traits/moveable-scenery/moveableSceneryTrait.d.ts.map +1 -0
  404. package/traits/moveable-scenery/moveableSceneryTrait.js +43 -0
  405. package/traits/moveable-scenery/moveableSceneryTrait.js.map +1 -0
  406. package/traits/npc/index.d.ts +5 -0
  407. package/traits/npc/index.d.ts.map +1 -0
  408. package/traits/npc/index.js +9 -0
  409. package/traits/npc/index.js.map +1 -0
  410. package/traits/npc/npcTrait.d.ts +128 -0
  411. package/traits/npc/npcTrait.d.ts.map +1 -0
  412. package/traits/npc/npcTrait.js +180 -0
  413. package/traits/npc/npcTrait.js.map +1 -0
  414. package/traits/openable/index.d.ts +3 -0
  415. package/traits/openable/index.d.ts.map +1 -0
  416. package/traits/openable/index.js +20 -0
  417. package/traits/openable/index.js.map +1 -0
  418. package/traits/openable/openableBehavior.d.ts +64 -0
  419. package/traits/openable/openableBehavior.d.ts.map +1 -0
  420. package/traits/openable/openableBehavior.js +109 -0
  421. package/traits/openable/openableBehavior.js.map +1 -0
  422. package/traits/openable/openableTrait.d.ts +46 -0
  423. package/traits/openable/openableTrait.d.ts.map +1 -0
  424. package/traits/openable/openableTrait.js +42 -0
  425. package/traits/openable/openableTrait.js.map +1 -0
  426. package/traits/pullable/index.d.ts +2 -0
  427. package/traits/pullable/index.d.ts.map +1 -0
  428. package/traits/pullable/index.js +18 -0
  429. package/traits/pullable/index.js.map +1 -0
  430. package/traits/pullable/pullableTrait.d.ts +81 -0
  431. package/traits/pullable/pullableTrait.d.ts.map +1 -0
  432. package/traits/pullable/pullableTrait.js +44 -0
  433. package/traits/pullable/pullableTrait.js.map +1 -0
  434. package/traits/pushable/index.d.ts +2 -0
  435. package/traits/pushable/index.d.ts.map +1 -0
  436. package/traits/pushable/index.js +18 -0
  437. package/traits/pushable/index.js.map +1 -0
  438. package/traits/pushable/pushableTrait.d.ts +81 -0
  439. package/traits/pushable/pushableTrait.d.ts.map +1 -0
  440. package/traits/pushable/pushableTrait.js +44 -0
  441. package/traits/pushable/pushableTrait.js.map +1 -0
  442. package/traits/readable/index.d.ts +3 -0
  443. package/traits/readable/index.d.ts.map +1 -0
  444. package/traits/readable/index.js +9 -0
  445. package/traits/readable/index.js.map +1 -0
  446. package/traits/readable/readableBehavior.d.ts +42 -0
  447. package/traits/readable/readableBehavior.d.ts.map +1 -0
  448. package/traits/readable/readableBehavior.js +174 -0
  449. package/traits/readable/readableBehavior.js.map +1 -0
  450. package/traits/readable/readableTrait.d.ts +37 -0
  451. package/traits/readable/readableTrait.d.ts.map +1 -0
  452. package/traits/readable/readableTrait.js +51 -0
  453. package/traits/readable/readableTrait.js.map +1 -0
  454. package/traits/register-all.d.ts +10 -0
  455. package/traits/register-all.d.ts.map +1 -0
  456. package/traits/register-all.js +19 -0
  457. package/traits/register-all.js.map +1 -0
  458. package/traits/room/index.d.ts +9 -0
  459. package/traits/room/index.d.ts.map +1 -0
  460. package/traits/room/index.js +14 -0
  461. package/traits/room/index.js.map +1 -0
  462. package/traits/room/roomBehavior.d.ts +87 -0
  463. package/traits/room/roomBehavior.d.ts.map +1 -0
  464. package/traits/room/roomBehavior.js +232 -0
  465. package/traits/room/roomBehavior.js.map +1 -0
  466. package/traits/room/roomTrait.d.ts +101 -0
  467. package/traits/room/roomTrait.d.ts.map +1 -0
  468. package/traits/room/roomTrait.js +59 -0
  469. package/traits/room/roomTrait.js.map +1 -0
  470. package/traits/scenery/index.d.ts +3 -0
  471. package/traits/scenery/index.d.ts.map +1 -0
  472. package/traits/scenery/index.js +9 -0
  473. package/traits/scenery/index.js.map +1 -0
  474. package/traits/scenery/sceneryBehavior.d.ts +21 -0
  475. package/traits/scenery/sceneryBehavior.d.ts.map +1 -0
  476. package/traits/scenery/sceneryBehavior.js +42 -0
  477. package/traits/scenery/sceneryBehavior.js.map +1 -0
  478. package/traits/scenery/sceneryTrait.d.ts +30 -0
  479. package/traits/scenery/sceneryTrait.d.ts.map +1 -0
  480. package/traits/scenery/sceneryTrait.js +39 -0
  481. package/traits/scenery/sceneryTrait.js.map +1 -0
  482. package/traits/story-info/index.d.ts +2 -0
  483. package/traits/story-info/index.d.ts.map +1 -0
  484. package/traits/story-info/index.js +6 -0
  485. package/traits/story-info/index.js.map +1 -0
  486. package/traits/story-info/storyInfoTrait.d.ts +22 -0
  487. package/traits/story-info/storyInfoTrait.d.ts.map +1 -0
  488. package/traits/story-info/storyInfoTrait.js +30 -0
  489. package/traits/story-info/storyInfoTrait.js.map +1 -0
  490. package/traits/supporter/index.d.ts +3 -0
  491. package/traits/supporter/index.d.ts.map +1 -0
  492. package/traits/supporter/index.js +9 -0
  493. package/traits/supporter/index.js.map +1 -0
  494. package/traits/supporter/supporterBehavior.d.ts +83 -0
  495. package/traits/supporter/supporterBehavior.d.ts.map +1 -0
  496. package/traits/supporter/supporterBehavior.js +210 -0
  497. package/traits/supporter/supporterBehavior.js.map +1 -0
  498. package/traits/supporter/supporterTrait.d.ts +26 -0
  499. package/traits/supporter/supporterTrait.d.ts.map +1 -0
  500. package/traits/supporter/supporterTrait.js +30 -0
  501. package/traits/supporter/supporterTrait.js.map +1 -0
  502. package/traits/switchable/index.d.ts +3 -0
  503. package/traits/switchable/index.d.ts.map +1 -0
  504. package/traits/switchable/index.js +20 -0
  505. package/traits/switchable/index.js.map +1 -0
  506. package/traits/switchable/switchableBehavior.d.ts +73 -0
  507. package/traits/switchable/switchableBehavior.d.ts.map +1 -0
  508. package/traits/switchable/switchableBehavior.js +191 -0
  509. package/traits/switchable/switchableBehavior.js.map +1 -0
  510. package/traits/switchable/switchableTrait.d.ts +61 -0
  511. package/traits/switchable/switchableTrait.d.ts.map +1 -0
  512. package/traits/switchable/switchableTrait.js +52 -0
  513. package/traits/switchable/switchableTrait.js.map +1 -0
  514. package/traits/trait-types.d.ts +82 -0
  515. package/traits/trait-types.d.ts.map +1 -0
  516. package/traits/trait-types.js +150 -0
  517. package/traits/trait-types.js.map +1 -0
  518. package/traits/trait.d.ts +44 -0
  519. package/traits/trait.d.ts.map +1 -0
  520. package/traits/trait.js +42 -0
  521. package/traits/trait.js.map +1 -0
  522. package/traits/vehicle/index.d.ts +6 -0
  523. package/traits/vehicle/index.d.ts.map +1 -0
  524. package/traits/vehicle/index.js +22 -0
  525. package/traits/vehicle/index.js.map +1 -0
  526. package/traits/vehicle/vehicleBehavior.d.ts +62 -0
  527. package/traits/vehicle/vehicleBehavior.d.ts.map +1 -0
  528. package/traits/vehicle/vehicleBehavior.js +145 -0
  529. package/traits/vehicle/vehicleBehavior.js.map +1 -0
  530. package/traits/vehicle/vehicleTrait.d.ts +77 -0
  531. package/traits/vehicle/vehicleTrait.d.ts.map +1 -0
  532. package/traits/vehicle/vehicleTrait.js +92 -0
  533. package/traits/vehicle/vehicleTrait.js.map +1 -0
  534. package/traits/weapon/index.d.ts +3 -0
  535. package/traits/weapon/index.d.ts.map +1 -0
  536. package/traits/weapon/index.js +8 -0
  537. package/traits/weapon/index.js.map +1 -0
  538. package/traits/weapon/weaponBehavior.d.ts +47 -0
  539. package/traits/weapon/weaponBehavior.d.ts.map +1 -0
  540. package/traits/weapon/weaponBehavior.js +106 -0
  541. package/traits/weapon/weaponBehavior.js.map +1 -0
  542. package/traits/weapon/weaponTrait.d.ts +67 -0
  543. package/traits/weapon/weaponTrait.d.ts.map +1 -0
  544. package/traits/weapon/weaponTrait.js +60 -0
  545. package/traits/weapon/weaponTrait.js.map +1 -0
  546. package/traits/wearable/index.d.ts +3 -0
  547. package/traits/wearable/index.d.ts.map +1 -0
  548. package/traits/wearable/index.js +20 -0
  549. package/traits/wearable/index.js.map +1 -0
  550. package/traits/wearable/wearableBehavior.d.ts +64 -0
  551. package/traits/wearable/wearableBehavior.d.ts.map +1 -0
  552. package/traits/wearable/wearableBehavior.js +142 -0
  553. package/traits/wearable/wearableBehavior.js.map +1 -0
  554. package/traits/wearable/wearableTrait.d.ts +54 -0
  555. package/traits/wearable/wearableTrait.d.ts.map +1 -0
  556. package/traits/wearable/wearableTrait.js +53 -0
  557. package/traits/wearable/wearableTrait.js.map +1 -0
  558. package/utils/event-utils.d.ts +30 -0
  559. package/utils/event-utils.d.ts.map +1 -0
  560. package/utils/event-utils.js +33 -0
  561. package/utils/event-utils.js.map +1 -0
  562. package/world/AuthorModel.d.ts +151 -0
  563. package/world/AuthorModel.d.ts.map +1 -0
  564. package/world/AuthorModel.js +416 -0
  565. package/world/AuthorModel.js.map +1 -0
  566. package/world/SharedDataStore.d.ts +24 -0
  567. package/world/SharedDataStore.d.ts.map +1 -0
  568. package/world/SharedDataStore.js +50 -0
  569. package/world/SharedDataStore.js.map +1 -0
  570. package/world/SpatialIndex.d.ts +16 -0
  571. package/world/SpatialIndex.d.ts.map +1 -0
  572. package/world/SpatialIndex.js +117 -0
  573. package/world/SpatialIndex.js.map +1 -0
  574. package/world/VisibilityBehavior.d.ts +83 -0
  575. package/world/VisibilityBehavior.d.ts.map +1 -0
  576. package/world/VisibilityBehavior.js +484 -0
  577. package/world/VisibilityBehavior.js.map +1 -0
  578. package/world/WorldModel.d.ts +301 -0
  579. package/world/WorldModel.d.ts.map +1 -0
  580. package/world/WorldModel.js +1085 -0
  581. package/world/WorldModel.js.map +1 -0
  582. package/world/capabilities.d.ts +36 -0
  583. package/world/capabilities.d.ts.map +1 -0
  584. package/world/capabilities.js +18 -0
  585. package/world/capabilities.js.map +1 -0
  586. package/world/index.d.ts +7 -0
  587. package/world/index.d.ts.map +1 -0
  588. package/world/index.js +21 -0
  589. package/world/index.js.map +1 -0
@@ -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":["../../../../../../../../../../mnt/c/repotemp/sharpee/packages/world-model/src/traits/container/containerBehavior.ts"],"names":[],"mappings":";AAAA,iEAAiE;;;AAEjE,uDAAoD;AAEpD,gDAA2C;AAG3C,mEAAgE;AAGhE,mEAAgE;AAgChE;;;;GAIG;AACH,MAAa,iBAAkB,SAAQ,mBAAQ;IAC7C,MAAM,CAAC,cAAc,GAAG,CAAC,uBAAS,CAAC,SAAS,CAAC,CAAC;IAE9C;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,SAAmB,EAAE,IAAc,EAAE,KAAkB;QACtE,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAiB,SAAS,EAAE,uBAAS,CAAC,SAAS,CAAC,CAAC;QAExF,8DAA8D;QAC9D,IAAI,SAAS,CAAC,GAAG,CAAC,uBAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAgB,uBAAS,CAAC,QAAQ,CAAC,CAAC;YAClE,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACjC,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3C,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC;YACvC,IAAI,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3C,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,IAAI,IAAI,CAAC,GAAG,CAAC,uBAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YAClD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,6BAA6B;QAC7B,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAC1D,IAAI,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;QAC5B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,SAAmB,EAAE,IAAc,EAAE,KAAkB;QAC1E,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAiB,SAAS,EAAE,uBAAS,CAAC,SAAS,CAAC,CAAC;QACxF,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAEhC,0CAA0C;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,2DAA2D;QAC3D,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACjD,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,mCAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;YACpF,IAAI,YAAY,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACtC,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC5D,MAAM,UAAU,GAAG,mCAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,aAAa,GAAG,UAAU,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACpD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC5D,MAAM,UAAU,GAAG,mCAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,aAAa,GAAG,UAAU,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACpD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,SAAmB,EAAE,KAAkB;QAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACjD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACnC,OAAO,GAAG,GAAG,mCAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC,EAAE,CAAC,CAAC,CAAC;IACR,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,SAAmB,EAAE,KAAkB;QAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACjD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACnC,OAAO,GAAG,GAAG,mCAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC,EAAE,CAAC,CAAC,CAAC;IACR,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,SAAmB,EAAE,KAAkB;QAKjE,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAiB,SAAS,EAAE,uBAAS,CAAC,SAAS,CAAC,CAAC;QACxF,MAAM,MAAM,GAAyD,EAAE,CAAC;QAExE,IAAI,KAAK,CAAC,QAAQ,EAAE,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;YACvD,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAC;QACnD,CAAC;QAED,IAAI,KAAK,CAAC,QAAQ,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5C,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACnF,CAAC;QAED,IAAI,KAAK,CAAC,QAAQ,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5C,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACnF,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,SAAmB;QACtC,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAiB,SAAS,EAAE,uBAAS,CAAC,SAAS,CAAC,CAAC;QACxF,OAAO,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,SAAmB;QACpC,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAiB,SAAS,EAAE,uBAAS,CAAC,SAAS,CAAC,CAAC;QACxF,OAAO,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,SAAmB;QACxC,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAiB,SAAS,EAAE,uBAAS,CAAC,SAAS,CAAC,CAAC;QACxF,OAAO,KAAK,CAAC,YAAY,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,SAAmB;QACzC,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAiB,SAAS,EAAE,uBAAS,CAAC,SAAS,CAAC,CAAC;QACxF,OAAO,KAAK,CAAC,aAAa,CAAC;IAC7B,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,CAAC,SAAmB,EAAE,IAAc,EAAE,KAAkB;QACpE,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAiB,SAAS,EAAE,uBAAS,CAAC,SAAS,CAAC,CAAC;QAExF,8DAA8D;QAC9D,IAAI,SAAS,CAAC,GAAG,CAAC,uBAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAgB,uBAAS,CAAC,QAAQ,CAAC,CAAC;YAClE,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACjC,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,eAAe,EAAE,IAAI;oBACrB,YAAY,EAAE,KAAK;iBACpB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnD,IAAI,eAAe,KAAK,SAAS,CAAC,EAAE,EAAE,CAAC;YACrC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,eAAe,EAAE,IAAI;gBACrB,YAAY,EAAE,KAAK;aACpB,CAAC;QACJ,CAAC;QAED,0BAA0B;QAC1B,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3C,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,SAAS,EAAE,IAAI;oBACf,YAAY,EAAE,KAAK;iBACpB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC;YACvC,IAAI,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3C,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,SAAS,EAAE,IAAI;oBACf,YAAY,EAAE,KAAK;iBACpB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YAC7D,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,aAAa,EAAE,IAAI;gBACnB,YAAY,EAAE,KAAK;aACpB,CAAC;QACJ,CAAC;QAED,iEAAiE;QACjE,qEAAqE;QACrE,kDAAkD;QAClD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,IAAI;SACnB,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,SAAmB,EAAE,IAAc,EAAE,KAAkB;QACvE,8DAA8D;QAC9D,IAAI,SAAS,CAAC,GAAG,CAAC,uBAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAgB,uBAAS,CAAC,QAAQ,CAAC,CAAC;YAClE,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACjC,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,eAAe,EAAE,IAAI;oBACrB,YAAY,EAAE,KAAK;iBACpB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,8CAA8C;QAC9C,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnD,IAAI,eAAe,KAAK,SAAS,CAAC,EAAE,EAAE,CAAC;YACrC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,KAAK;aACpB,CAAC;QACJ,CAAC;QAED,uCAAuC;QACvC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,IAAI;SACnB,CAAC;IACJ,CAAC;;AApRH,8CAqRC"}
@@ -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":["../../../../../../../mnt/c/repotemp/sharpee/packages/world-model/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":["../../../../../../../../../../mnt/c/repotemp/sharpee/packages/world-model/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":["../../../../../../../mnt/c/repotemp/sharpee/packages/world-model/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":["../../../../../../../../../../mnt/c/repotemp/sharpee/packages/world-model/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 "../../src/index";
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":["../../../../../../../mnt/c/repotemp/sharpee/packages/world-model/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":["../../../../../../../../../../mnt/c/repotemp/sharpee/packages/world-model/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":["../../../../../../../mnt/c/repotemp/sharpee/packages/world-model/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"}