@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,484 @@
1
+ "use strict";
2
+ // VisibilityBehavior.ts - Visibility system for IF
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.VisibilityBehavior = exports.VISIBILITY_CAPABILITY = void 0;
5
+ const behavior_1 = require("../behaviors/behavior");
6
+ const trait_types_1 = require("../traits/trait-types");
7
+ const switchableBehavior_1 = require("../traits/switchable/switchableBehavior");
8
+ const capabilities_1 = require("../capabilities");
9
+ /**
10
+ * Standard capability ID for visibility control.
11
+ * Entities can claim this capability to control their own visibility.
12
+ */
13
+ exports.VISIBILITY_CAPABILITY = 'if.scope.visible';
14
+ class VisibilityBehavior extends behavior_1.Behavior {
15
+ static requiredTraits = [];
16
+ /**
17
+ * Determines if a room is effectively dark (no usable light sources).
18
+ * This is the single source of truth for darkness checking.
19
+ *
20
+ * A room is dark if:
21
+ * 1. It has RoomTrait with isDark = true
22
+ * 2. There are no accessible, active light sources
23
+ *
24
+ * @param room - The room entity to check
25
+ * @param world - The world model
26
+ * @returns true if the room is dark and has no accessible light sources
27
+ */
28
+ static isDark(room, world) {
29
+ const roomTrait = room.getTrait(trait_types_1.TraitType.ROOM);
30
+ if (!roomTrait || !roomTrait.isDark) {
31
+ return false; // Room isn't marked as dark
32
+ }
33
+ return !this.hasLightSource(room, world);
34
+ }
35
+ /**
36
+ * Determines if a light source entity is currently providing light.
37
+ * Checks isLit property first, falls back to switchable state, defaults to lit.
38
+ *
39
+ * Priority order:
40
+ * 1. Explicit isLit property (e.g., lit torch, extinguished candle)
41
+ * 2. Switchable trait state (e.g., flashlight isOn: true)
42
+ * 3. Default to lit (e.g., glowing gems, phosphorescent moss)
43
+ */
44
+ static isLightActive(entity) {
45
+ const lightTrait = entity.getTrait(trait_types_1.TraitType.LIGHT_SOURCE);
46
+ // Explicit isLit property takes precedence
47
+ if (lightTrait?.isLit !== undefined) {
48
+ return lightTrait.isLit === true;
49
+ }
50
+ // Fall back to switchable state
51
+ if (entity.hasTrait(trait_types_1.TraitType.SWITCHABLE)) {
52
+ return switchableBehavior_1.SwitchableBehavior.isOn(entity);
53
+ }
54
+ // Default: light sources without explicit state are lit
55
+ return true;
56
+ }
57
+ /**
58
+ * Determines if an observer can see a target entity
59
+ */
60
+ static canSee(observer, target, world) {
61
+ // Can always see self
62
+ if (observer.id === target.id)
63
+ return true;
64
+ // Check if target is invisible via SceneryTrait
65
+ const targetScenery = target.getTrait(trait_types_1.TraitType.SCENERY);
66
+ if (targetScenery && targetScenery.visible === false) {
67
+ return false;
68
+ }
69
+ // Check if target has visibility capability that blocks being seen
70
+ const visibilityTrait = (0, capabilities_1.findTraitWithCapability)(target, exports.VISIBILITY_CAPABILITY);
71
+ if (visibilityTrait) {
72
+ const behavior = (0, capabilities_1.getBehaviorForCapability)(visibilityTrait, exports.VISIBILITY_CAPABILITY);
73
+ if (behavior) {
74
+ const result = behavior.validate(target, world, observer.id, {});
75
+ if (!result.valid) {
76
+ return false; // Entity blocks visibility via capability
77
+ }
78
+ }
79
+ }
80
+ // Get rooms
81
+ const observerRoom = world.getContainingRoom(observer.id);
82
+ const targetRoom = world.getContainingRoom(target.id);
83
+ // Must be in same room (or target is the room)
84
+ if (target.hasTrait(trait_types_1.TraitType.ROOM)) {
85
+ // Check if we're in the target room
86
+ if (observerRoom?.id === target.id) {
87
+ // Always know what room you're in, even in darkness
88
+ return true;
89
+ }
90
+ return false;
91
+ }
92
+ if (!observerRoom || observerRoom.id !== targetRoom?.id) {
93
+ return false;
94
+ }
95
+ // Check if room is dark
96
+ const roomTrait = observerRoom.getTrait(trait_types_1.TraitType.ROOM);
97
+ if (roomTrait && roomTrait.isDark) {
98
+ // In a dark room, need light to see
99
+ if (!this.hasLightSource(observerRoom, world)) {
100
+ // Special cases in darkness:
101
+ // 1. Can see lit light sources
102
+ if (target.hasTrait(trait_types_1.TraitType.LIGHT_SOURCE) &&
103
+ target.getTrait(trait_types_1.TraitType.LIGHT_SOURCE)?.isLit === true) {
104
+ return true;
105
+ }
106
+ // 2. Can see items you're carrying (by feel)
107
+ const targetLocation = world.getLocation(target.id);
108
+ if (targetLocation === observer.id) {
109
+ return true;
110
+ }
111
+ // Otherwise can't see in darkness
112
+ return false;
113
+ }
114
+ }
115
+ // Check line of sight through containers
116
+ const hasLineOfSight = this.hasLineOfSight(observer.id, target.id, world);
117
+ return hasLineOfSight;
118
+ }
119
+ /**
120
+ * Gets all entities visible to an observer
121
+ */
122
+ static getVisible(observer, world) {
123
+ const visible = [];
124
+ const seen = new Set(); // Track what we've already added
125
+ const observerRoom = world.getContainingRoom(observer.id);
126
+ if (!observerRoom)
127
+ return visible;
128
+ // Add the room itself if visible
129
+ if (this.canSee(observer, observerRoom, world)) {
130
+ visible.push(observerRoom);
131
+ seen.add(observerRoom.id);
132
+ }
133
+ // Check if room is dark
134
+ const roomTrait = observerRoom.getTrait(trait_types_1.TraitType.ROOM);
135
+ const isDark = roomTrait && roomTrait.isDark;
136
+ const hasLight = this.hasLightSource(observerRoom, world);
137
+ // If it's dark and no light, only see specific things
138
+ if (isDark && !hasLight) {
139
+ // Can always see what you're carrying (by feel)
140
+ const carried = world.getContents(observer.id);
141
+ for (const entity of carried) {
142
+ if (!seen.has(entity.id)) {
143
+ visible.push(entity);
144
+ seen.add(entity.id);
145
+ }
146
+ }
147
+ // Add any lit light sources in the room
148
+ const roomContents = world.getAllContents(observerRoom.id, { recursive: true });
149
+ for (const entity of roomContents) {
150
+ if (entity.hasTrait(trait_types_1.TraitType.LIGHT_SOURCE)) {
151
+ const light = entity.getTrait(trait_types_1.TraitType.LIGHT_SOURCE);
152
+ if (light && light.isLit === true && !seen.has(entity.id)) {
153
+ visible.push(entity);
154
+ seen.add(entity.id);
155
+ }
156
+ }
157
+ }
158
+ return visible;
159
+ }
160
+ // Get contents of the room
161
+ const roomContents = world.getContents(observerRoom.id);
162
+ // Add visible entities in the room
163
+ for (const entity of roomContents) {
164
+ if (entity.id !== observer.id && !seen.has(entity.id)) {
165
+ // Check if entity is visible via SceneryTrait
166
+ const scenery = entity.getTrait(trait_types_1.TraitType.SCENERY);
167
+ if (scenery && scenery.visible === false) {
168
+ continue;
169
+ }
170
+ // Check if entity has visibility capability that blocks being seen
171
+ const visibilityTrait = (0, capabilities_1.findTraitWithCapability)(entity, exports.VISIBILITY_CAPABILITY);
172
+ if (visibilityTrait) {
173
+ const behavior = (0, capabilities_1.getBehaviorForCapability)(visibilityTrait, exports.VISIBILITY_CAPABILITY);
174
+ if (behavior) {
175
+ const result = behavior.validate(entity, world, observer.id, {});
176
+ if (!result.valid) {
177
+ continue; // Entity blocks visibility via capability
178
+ }
179
+ }
180
+ }
181
+ visible.push(entity);
182
+ seen.add(entity.id);
183
+ // Check contents of this entity if it's a container/supporter/actor
184
+ if (entity.hasTrait(trait_types_1.TraitType.CONTAINER) ||
185
+ entity.hasTrait(trait_types_1.TraitType.SUPPORTER) ||
186
+ entity.hasTrait(trait_types_1.TraitType.ACTOR)) {
187
+ this.addVisibleContents(entity, visible, seen, world);
188
+ }
189
+ }
190
+ }
191
+ // Add carried items
192
+ const carried = world.getContents(observer.id);
193
+ for (const entity of carried) {
194
+ if (!seen.has(entity.id)) {
195
+ visible.push(entity);
196
+ seen.add(entity.id);
197
+ // Check contents of carried containers
198
+ if (entity.hasTrait(trait_types_1.TraitType.CONTAINER) || entity.hasTrait(trait_types_1.TraitType.SUPPORTER)) {
199
+ this.addVisibleContents(entity, visible, seen, world);
200
+ }
201
+ }
202
+ }
203
+ return visible;
204
+ }
205
+ /**
206
+ * Recursively adds visible contents of a container/supporter/actor
207
+ */
208
+ static addVisibleContents(container, visible, seen, world) {
209
+ // Check if we can see inside this container
210
+ if (container.hasTrait(trait_types_1.TraitType.CONTAINER)) {
211
+ const containerTrait = container.getTrait(trait_types_1.TraitType.CONTAINER);
212
+ const isTransparent = containerTrait?.isTransparent ?? false;
213
+ if (!isTransparent && container.hasTrait(trait_types_1.TraitType.OPENABLE)) {
214
+ const openable = container.getTrait(trait_types_1.TraitType.OPENABLE);
215
+ const isOpen = openable?.isOpen ?? false;
216
+ if (!isOpen) {
217
+ return; // Can't see inside closed opaque container
218
+ }
219
+ }
220
+ }
221
+ // Get contents (including worn items for actors)
222
+ const contents = world.getContents(container.id, { includeWorn: true });
223
+ for (const entity of contents) {
224
+ if (!seen.has(entity.id)) {
225
+ // Check if entity is visible via SceneryTrait
226
+ const scenery = entity.getTrait(trait_types_1.TraitType.SCENERY);
227
+ if (scenery && scenery.visible === false) {
228
+ continue;
229
+ }
230
+ // Check if entity has visibility capability that blocks being seen
231
+ const visibilityTrait = (0, capabilities_1.findTraitWithCapability)(entity, exports.VISIBILITY_CAPABILITY);
232
+ if (visibilityTrait) {
233
+ const behavior = (0, capabilities_1.getBehaviorForCapability)(visibilityTrait, exports.VISIBILITY_CAPABILITY);
234
+ if (behavior) {
235
+ // Note: We don't have a direct observer here, use container's id as proxy
236
+ const result = behavior.validate(entity, world, container.id, {});
237
+ if (!result.valid) {
238
+ continue; // Entity blocks visibility via capability
239
+ }
240
+ }
241
+ }
242
+ visible.push(entity);
243
+ seen.add(entity.id);
244
+ // Recurse into nested containers
245
+ if (entity.hasTrait(trait_types_1.TraitType.CONTAINER) ||
246
+ entity.hasTrait(trait_types_1.TraitType.SUPPORTER) ||
247
+ entity.hasTrait(trait_types_1.TraitType.ACTOR)) {
248
+ this.addVisibleContents(entity, visible, seen, world);
249
+ }
250
+ }
251
+ }
252
+ }
253
+ /**
254
+ * Checks if a room has any accessible, active light sources.
255
+ * Handles nested containers, worn items, and various light source types.
256
+ */
257
+ static hasLightSource(room, world) {
258
+ // Check all entities in the room, including worn items
259
+ const contents = world.getAllContents(room.id, { recursive: true, includeWorn: true });
260
+ for (const entity of contents) {
261
+ if (!entity.hasTrait(trait_types_1.TraitType.LIGHT_SOURCE))
262
+ continue;
263
+ // Check if light is active (isLit, switchable, or default)
264
+ if (!this.isLightActive(entity))
265
+ continue;
266
+ // Check if the light is accessible (not in a closed container)
267
+ if (!this.isAccessible(entity.id, room.id, world))
268
+ continue;
269
+ return true;
270
+ }
271
+ return false;
272
+ }
273
+ /**
274
+ * Checks if an entity is accessible from a room (not blocked by closed containers)
275
+ */
276
+ static isAccessible(entityId, roomId, world) {
277
+ let current = entityId;
278
+ while (current !== roomId) {
279
+ const parent = world.getLocation(current);
280
+ if (!parent)
281
+ return false;
282
+ const container = world.getEntity(parent);
283
+ if (!container)
284
+ return false;
285
+ // Actors don't block access to their contents
286
+ if (container.hasTrait(trait_types_1.TraitType.ACTOR)) {
287
+ // Items carried by actors are accessible
288
+ current = parent;
289
+ continue;
290
+ }
291
+ // If it's in an opaque, closed container, it's not accessible
292
+ if (container.hasTrait(trait_types_1.TraitType.CONTAINER)) {
293
+ const containerTrait = container.getTrait(trait_types_1.TraitType.CONTAINER);
294
+ const isTransparent = containerTrait?.isTransparent ?? false;
295
+ if (!isTransparent) {
296
+ if (container.hasTrait(trait_types_1.TraitType.OPENABLE)) {
297
+ const openable = container.getTrait(trait_types_1.TraitType.OPENABLE);
298
+ const isOpen = openable?.isOpen ?? false;
299
+ if (!isOpen) {
300
+ return false; // Closed opaque container blocks access
301
+ }
302
+ }
303
+ }
304
+ }
305
+ current = parent;
306
+ }
307
+ return true;
308
+ }
309
+ /**
310
+ * Checks if there's a line of sight between observer and target
311
+ */
312
+ static hasLineOfSight(observerId, targetId, world) {
313
+ // Get the containment path from target to room
314
+ const targetPath = this.getContainmentPath(targetId, world);
315
+ // Check each container in the path
316
+ for (let i = 0; i < targetPath.length - 1; i++) {
317
+ const contained = targetPath[i];
318
+ const container = targetPath[i + 1];
319
+ const containerEntity = world.getEntity(container);
320
+ if (!containerEntity)
321
+ return false;
322
+ // Actors are always visible-through (can see their inventory/worn items)
323
+ if (containerEntity.hasTrait(trait_types_1.TraitType.ACTOR)) {
324
+ // Can always see what actors are carrying/wearing
325
+ continue;
326
+ }
327
+ // If it's in a container, check if we can see inside
328
+ if (containerEntity.hasTrait(trait_types_1.TraitType.CONTAINER)) {
329
+ const containerTrait = containerEntity.getTrait(trait_types_1.TraitType.CONTAINER);
330
+ // Opaque containers block sight when closed
331
+ // Default isTransparent to false if not specified
332
+ const isTransparent = containerTrait?.isTransparent ?? false;
333
+ if (!isTransparent) {
334
+ // If it's opaque, check if it's openable and closed
335
+ if (containerEntity.hasTrait(trait_types_1.TraitType.OPENABLE)) {
336
+ const openable = containerEntity.getTrait(trait_types_1.TraitType.OPENABLE);
337
+ // Default isOpen to false if not specified
338
+ const isOpen = openable?.isOpen ?? false;
339
+ if (!isOpen) {
340
+ return false; // Closed opaque container blocks sight
341
+ }
342
+ }
343
+ // If opaque but not openable, we can see through (it can't be closed)
344
+ }
345
+ }
346
+ }
347
+ return true;
348
+ }
349
+ /**
350
+ * Gets the containment path from an entity to its room
351
+ */
352
+ static getContainmentPath(entityId, world) {
353
+ const path = [entityId];
354
+ let current = entityId;
355
+ let depth = 0;
356
+ const maxDepth = 10;
357
+ while (depth < maxDepth) {
358
+ const parent = world.getLocation(current);
359
+ if (!parent)
360
+ break;
361
+ path.push(parent);
362
+ const parentEntity = world.getEntity(parent);
363
+ if (parentEntity?.hasTrait(trait_types_1.TraitType.ROOM))
364
+ break;
365
+ current = parent;
366
+ depth++;
367
+ }
368
+ return path;
369
+ }
370
+ /**
371
+ * Checks if an entity is visible in its current context
372
+ * (used for filtering queries)
373
+ */
374
+ static isVisible(entity, world) {
375
+ // Check if explicitly invisible via SceneryTrait
376
+ const scenery = entity.getTrait(trait_types_1.TraitType.SCENERY);
377
+ if (scenery && scenery.visible === false) {
378
+ return false;
379
+ }
380
+ // Check if entity has visibility capability that blocks being seen
381
+ // Note: For isVisible we don't have an observer, so we pass empty string
382
+ const visibilityTrait = (0, capabilities_1.findTraitWithCapability)(entity, exports.VISIBILITY_CAPABILITY);
383
+ if (visibilityTrait) {
384
+ const behavior = (0, capabilities_1.getBehaviorForCapability)(visibilityTrait, exports.VISIBILITY_CAPABILITY);
385
+ if (behavior) {
386
+ const result = behavior.validate(entity, world, '', {});
387
+ if (!result.valid) {
388
+ return false; // Entity blocks visibility via capability
389
+ }
390
+ }
391
+ }
392
+ // Check containment path for closed opaque containers
393
+ let current = entity.id;
394
+ while (true) {
395
+ const location = world.getLocation(current);
396
+ if (!location)
397
+ break; // Reached top level
398
+ const container = world.getEntity(location);
399
+ if (!container)
400
+ break;
401
+ // Actors don't block visibility of their contents
402
+ if (container.hasTrait(trait_types_1.TraitType.ACTOR)) {
403
+ current = location;
404
+ continue;
405
+ }
406
+ // Check if this container blocks visibility
407
+ if (container.hasTrait(trait_types_1.TraitType.CONTAINER)) {
408
+ const containerTrait = container.getTrait(trait_types_1.TraitType.CONTAINER);
409
+ // If container is opaque and closed, entity is not visible
410
+ const isTransparent = containerTrait?.isTransparent ?? false;
411
+ if (!isTransparent) {
412
+ if (container.hasTrait(trait_types_1.TraitType.OPENABLE)) {
413
+ const openable = container.getTrait(trait_types_1.TraitType.OPENABLE);
414
+ const isOpen = openable?.isOpen ?? false;
415
+ if (!isOpen) {
416
+ return false; // In closed opaque container
417
+ }
418
+ }
419
+ // Opaque but not openable - can see through
420
+ }
421
+ }
422
+ current = location;
423
+ }
424
+ return true;
425
+ }
426
+ /**
427
+ * Gets the location that should be described when an observer looks around.
428
+ * Accounts for vehicle/container transparency:
429
+ * - In a transparent vehicle → describe the room
430
+ * - In an open container → describe the room
431
+ * - In a closed container → describe the container
432
+ * - In a room → describe the room
433
+ *
434
+ * @returns The entity to describe and optionally the immediate container
435
+ */
436
+ static getDescribableLocation(observer, world) {
437
+ const immediateLocationId = world.getLocation(observer.id);
438
+ if (!immediateLocationId) {
439
+ // Observer is not in anything - unusual but handle it
440
+ return { location: observer, immediateContainer: null };
441
+ }
442
+ const immediateLocation = world.getEntity(immediateLocationId);
443
+ if (!immediateLocation) {
444
+ return { location: observer, immediateContainer: null };
445
+ }
446
+ // If immediate location is a room, we're done
447
+ if (immediateLocation.hasTrait(trait_types_1.TraitType.ROOM)) {
448
+ return { location: immediateLocation, immediateContainer: null };
449
+ }
450
+ // Check if we're in a vehicle
451
+ if (immediateLocation.hasTrait(trait_types_1.TraitType.VEHICLE)) {
452
+ const vehicleTrait = immediateLocation.getTrait(trait_types_1.TraitType.VEHICLE);
453
+ if (vehicleTrait.transparent) {
454
+ // Transparent vehicle - describe the room
455
+ const room = world.getContainingRoom(observer.id);
456
+ if (room) {
457
+ return { location: room, immediateContainer: immediateLocation };
458
+ }
459
+ }
460
+ // Opaque vehicle - describe the vehicle interior
461
+ return { location: immediateLocation, immediateContainer: null };
462
+ }
463
+ // Check if we're in a container
464
+ if (immediateLocation.hasTrait(trait_types_1.TraitType.CONTAINER)) {
465
+ // Check if container is open (visibility passes through)
466
+ if (immediateLocation.hasTrait(trait_types_1.TraitType.OPENABLE)) {
467
+ const openable = immediateLocation.getTrait(trait_types_1.TraitType.OPENABLE);
468
+ if (openable?.isOpen) {
469
+ // Open container - describe the room
470
+ const room = world.getContainingRoom(observer.id);
471
+ if (room) {
472
+ return { location: room, immediateContainer: immediateLocation };
473
+ }
474
+ }
475
+ }
476
+ // Closed container - describe the container
477
+ return { location: immediateLocation, immediateContainer: null };
478
+ }
479
+ // Default: describe what we're in
480
+ return { location: immediateLocation, immediateContainer: null };
481
+ }
482
+ }
483
+ exports.VisibilityBehavior = VisibilityBehavior;
484
+ //# sourceMappingURL=VisibilityBehavior.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VisibilityBehavior.js","sourceRoot":"","sources":["../../src/world/VisibilityBehavior.ts"],"names":[],"mappings":"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"}