@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,22 @@
1
+ "use strict";
2
+ /**
3
+ * Vehicle trait module
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ __exportStar(require("./vehicleTrait"), exports);
21
+ __exportStar(require("./vehicleBehavior"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/traits/vehicle/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,iDAA+B;AAC/B,oDAAkC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Vehicle Behavior - Handles vehicle movement and actor transport
3
+ *
4
+ * Provides utilities for:
5
+ * - Moving a vehicle (and its contents) between rooms
6
+ * - Checking if an actor is in a vehicle
7
+ * - Getting the vehicle an actor is in
8
+ */
9
+ import { WorldModel } from '../../world/WorldModel';
10
+ import { IFEntity } from '../../entities/if-entity';
11
+ /**
12
+ * Check if an entity is a vehicle
13
+ */
14
+ export declare function isVehicle(entity: IFEntity): boolean;
15
+ /**
16
+ * Check if an actor is currently inside a vehicle
17
+ */
18
+ export declare function isActorInVehicle(world: WorldModel, actorId: string): boolean;
19
+ /**
20
+ * Get the vehicle an actor is in, or undefined if not in a vehicle
21
+ */
22
+ export declare function getActorVehicle(world: WorldModel, actorId: string): IFEntity | undefined;
23
+ /**
24
+ * Get all actors currently inside a vehicle
25
+ */
26
+ export declare function getVehicleOccupants(world: WorldModel, vehicleId: string): IFEntity[];
27
+ /**
28
+ * Move a vehicle to a new room, transporting all contents with it.
29
+ * Returns true if movement succeeded.
30
+ *
31
+ * This is the core vehicle transport function - when a vehicle moves,
32
+ * everything inside it (including actors) moves with it.
33
+ */
34
+ export declare function moveVehicle(world: WorldModel, vehicleId: string, destinationRoomId: string): boolean;
35
+ /**
36
+ * Check if a vehicle can move (is operational)
37
+ */
38
+ export declare function canVehicleMove(vehicle: IFEntity): {
39
+ canMove: boolean;
40
+ reason?: string;
41
+ };
42
+ /**
43
+ * Check if an actor can exit their current location.
44
+ * If in a vehicle that requires exit, they cannot simply walk out.
45
+ */
46
+ export declare function canActorLeaveLocation(world: WorldModel, actorId: string): {
47
+ canLeave: boolean;
48
+ mustExitVehicle?: IFEntity;
49
+ };
50
+ /**
51
+ * Check if an actor in a vehicle can use GO/walk commands.
52
+ * Some vehicles block walking movement entirely.
53
+ *
54
+ * Returns:
55
+ * - canWalk: true if actor can use GO commands (not in vehicle, or in walkable vehicle)
56
+ * - vehicle: the vehicle entity if actor is in one (undefined if not in a vehicle)
57
+ */
58
+ export declare function canActorWalkInVehicle(world: WorldModel, actorId: string): {
59
+ canWalk: boolean;
60
+ vehicle?: IFEntity;
61
+ };
62
+ //# sourceMappingURL=vehicleBehavior.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vehicleBehavior.d.ts","sourceRoot":"","sources":["../../../src/traits/vehicle/vehicleBehavior.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAIpD;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAEnD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAQ5E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAYxF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,QAAQ,EAAE,CAGpF;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,UAAU,EACjB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAsBT;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,QAAQ,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAcvF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,MAAM,GACd;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,QAAQ,CAAA;CAAE,CAiBnD;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,MAAM,GACd;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,QAAQ,CAAA;CAAE,CAmB1C"}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ /**
3
+ * Vehicle Behavior - Handles vehicle movement and actor transport
4
+ *
5
+ * Provides utilities for:
6
+ * - Moving a vehicle (and its contents) between rooms
7
+ * - Checking if an actor is in a vehicle
8
+ * - Getting the vehicle an actor is in
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.isVehicle = isVehicle;
12
+ exports.isActorInVehicle = isActorInVehicle;
13
+ exports.getActorVehicle = getActorVehicle;
14
+ exports.getVehicleOccupants = getVehicleOccupants;
15
+ exports.moveVehicle = moveVehicle;
16
+ exports.canVehicleMove = canVehicleMove;
17
+ exports.canActorLeaveLocation = canActorLeaveLocation;
18
+ exports.canActorWalkInVehicle = canActorWalkInVehicle;
19
+ const trait_types_1 = require("../trait-types");
20
+ /**
21
+ * Check if an entity is a vehicle
22
+ */
23
+ function isVehicle(entity) {
24
+ return entity.has(trait_types_1.TraitType.VEHICLE);
25
+ }
26
+ /**
27
+ * Check if an actor is currently inside a vehicle
28
+ */
29
+ function isActorInVehicle(world, actorId) {
30
+ const location = world.getLocation(actorId);
31
+ if (!location)
32
+ return false;
33
+ const locationEntity = world.getEntity(location);
34
+ if (!locationEntity)
35
+ return false;
36
+ return isVehicle(locationEntity);
37
+ }
38
+ /**
39
+ * Get the vehicle an actor is in, or undefined if not in a vehicle
40
+ */
41
+ function getActorVehicle(world, actorId) {
42
+ const location = world.getLocation(actorId);
43
+ if (!location)
44
+ return undefined;
45
+ const locationEntity = world.getEntity(location);
46
+ if (!locationEntity)
47
+ return undefined;
48
+ if (isVehicle(locationEntity)) {
49
+ return locationEntity;
50
+ }
51
+ return undefined;
52
+ }
53
+ /**
54
+ * Get all actors currently inside a vehicle
55
+ */
56
+ function getVehicleOccupants(world, vehicleId) {
57
+ const contents = world.getContents(vehicleId);
58
+ return contents.filter((entity) => entity.has(trait_types_1.TraitType.ACTOR));
59
+ }
60
+ /**
61
+ * Move a vehicle to a new room, transporting all contents with it.
62
+ * Returns true if movement succeeded.
63
+ *
64
+ * This is the core vehicle transport function - when a vehicle moves,
65
+ * everything inside it (including actors) moves with it.
66
+ */
67
+ function moveVehicle(world, vehicleId, destinationRoomId) {
68
+ const vehicle = world.getEntity(vehicleId);
69
+ if (!vehicle)
70
+ return false;
71
+ const vehicleTrait = vehicle.get(trait_types_1.TraitType.VEHICLE);
72
+ if (!vehicleTrait)
73
+ return false;
74
+ // Move the vehicle to the new room
75
+ world.moveEntity(vehicleId, destinationRoomId);
76
+ // Update vehicle position if using position tracking
77
+ if (vehicleTrait.positionRooms) {
78
+ // Find position name for this room
79
+ const positionEntry = Object.entries(vehicleTrait.positionRooms)
80
+ .find(([_, roomId]) => roomId === destinationRoomId);
81
+ if (positionEntry) {
82
+ vehicleTrait.currentPosition = positionEntry[0];
83
+ }
84
+ }
85
+ return true;
86
+ }
87
+ /**
88
+ * Check if a vehicle can move (is operational)
89
+ */
90
+ function canVehicleMove(vehicle) {
91
+ const vehicleTrait = vehicle.get(trait_types_1.TraitType.VEHICLE);
92
+ if (!vehicleTrait) {
93
+ return { canMove: false, reason: 'Not a vehicle' };
94
+ }
95
+ if (!vehicleTrait.isOperational) {
96
+ return {
97
+ canMove: false,
98
+ reason: vehicleTrait.notOperationalReason ?? 'The vehicle is not operational'
99
+ };
100
+ }
101
+ return { canMove: true };
102
+ }
103
+ /**
104
+ * Check if an actor can exit their current location.
105
+ * If in a vehicle that requires exit, they cannot simply walk out.
106
+ */
107
+ function canActorLeaveLocation(world, actorId) {
108
+ const vehicle = getActorVehicle(world, actorId);
109
+ if (!vehicle) {
110
+ return { canLeave: true };
111
+ }
112
+ const vehicleTrait = vehicle.get(trait_types_1.TraitType.VEHICLE);
113
+ if (!vehicleTrait) {
114
+ return { canLeave: true };
115
+ }
116
+ if (vehicleTrait.requiresExitBeforeLeaving) {
117
+ return { canLeave: false, mustExitVehicle: vehicle };
118
+ }
119
+ return { canLeave: true };
120
+ }
121
+ /**
122
+ * Check if an actor in a vehicle can use GO/walk commands.
123
+ * Some vehicles block walking movement entirely.
124
+ *
125
+ * Returns:
126
+ * - canWalk: true if actor can use GO commands (not in vehicle, or in walkable vehicle)
127
+ * - vehicle: the vehicle entity if actor is in one (undefined if not in a vehicle)
128
+ */
129
+ function canActorWalkInVehicle(world, actorId) {
130
+ const vehicle = getActorVehicle(world, actorId);
131
+ if (!vehicle) {
132
+ return { canWalk: true };
133
+ }
134
+ const vehicleTrait = vehicle.get(trait_types_1.TraitType.VEHICLE);
135
+ if (!vehicleTrait) {
136
+ // In something with no VehicleTrait - treat as blocking container
137
+ return { canWalk: false, vehicle };
138
+ }
139
+ if (vehicleTrait.blocksWalkingMovement) {
140
+ return { canWalk: false, vehicle };
141
+ }
142
+ // In a walkable vehicle - return the vehicle so caller knows player is in one
143
+ return { canWalk: true, vehicle };
144
+ }
145
+ //# sourceMappingURL=vehicleBehavior.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vehicleBehavior.js","sourceRoot":"","sources":["../../../src/traits/vehicle/vehicleBehavior.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAUH,8BAEC;AAKD,4CAQC;AAKD,0CAYC;AAKD,kDAGC;AASD,kCA0BC;AAKD,wCAcC;AAMD,sDAoBC;AAUD,sDAsBC;AA9JD,gDAA2C;AAG3C;;GAEG;AACH,SAAgB,SAAS,CAAC,MAAgB;IACxC,OAAO,MAAM,CAAC,GAAG,CAAC,uBAAS,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,KAAiB,EAAE,OAAe;IACjE,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5B,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,cAAc;QAAE,OAAO,KAAK,CAAC;IAElC,OAAO,SAAS,CAAC,cAAc,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,KAAiB,EAAE,OAAe;IAChE,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEhC,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,cAAc;QAAE,OAAO,SAAS,CAAC;IAEtC,IAAI,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;QAC9B,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,KAAiB,EAAE,SAAiB;IACtE,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC9C,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAgB,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,WAAW,CACzB,KAAiB,EACjB,SAAiB,EACjB,iBAAyB;IAEzB,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE3B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAS,CAAC,OAAO,CAA6B,CAAC;IAChF,IAAI,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IAEhC,mCAAmC;IACnC,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAE/C,qDAAqD;IACrD,IAAI,YAAY,CAAC,aAAa,EAAE,CAAC;QAC/B,mCAAmC;QACnC,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC;aAC7D,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,KAAK,iBAAiB,CAAC,CAAC;QAEvD,IAAI,aAAa,EAAE,CAAC;YAClB,YAAY,CAAC,eAAe,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,OAAiB;IAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAS,CAAC,OAAO,CAA6B,CAAC;IAChF,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;QAChC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,YAAY,CAAC,oBAAoB,IAAI,gCAAgC;SAC9E,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,SAAgB,qBAAqB,CACnC,KAAiB,EACjB,OAAe;IAEf,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAEhD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAS,CAAC,OAAO,CAA6B,CAAC;IAChF,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,IAAI,YAAY,CAAC,yBAAyB,EAAE,CAAC;QAC3C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;IACvD,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,qBAAqB,CACnC,KAAiB,EACjB,OAAe;IAEf,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAEhD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAS,CAAC,OAAO,CAA6B,CAAC;IAChF,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,kEAAkE;QAClE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACrC,CAAC;IAED,IAAI,YAAY,CAAC,qBAAqB,EAAE,CAAC;QACvC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACrC,CAAC;IAED,8EAA8E;IAC9E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACpC,CAAC"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Vehicle Trait - For enterable containers that transport actors
3
+ *
4
+ * Vehicles are enterable containers (bucket, boat, basket, balloon) where:
5
+ * - Actor enters the vehicle (ENTER BUCKET)
6
+ * - Vehicle moves, taking its contents with it
7
+ * - Actor exits the vehicle (EXIT BUCKET)
8
+ *
9
+ * Based on Infocom's vehicle concept from Zork.
10
+ */
11
+ import { ITrait } from '../trait';
12
+ /**
13
+ * Vehicle type determines movement behavior
14
+ */
15
+ export type VehicleType = 'counterweight' | 'watercraft' | 'aircraft' | 'cable' | 'generic';
16
+ /**
17
+ * Trait for vehicles - enterable containers that transport actors
18
+ */
19
+ export declare class VehicleTrait implements ITrait {
20
+ static readonly type: "vehicle";
21
+ readonly type: "vehicle";
22
+ /** Type of vehicle determines default behavior */
23
+ vehicleType: VehicleType;
24
+ /**
25
+ * When vehicle moves, all contents (including actors) move with it.
26
+ * This is always true for vehicles.
27
+ */
28
+ readonly movesWithContents: boolean;
29
+ /**
30
+ * If true, actor cannot use GO/walk commands while in vehicle.
31
+ * Movement must be through vehicle-specific actions.
32
+ * - Bucket: POUR/FILL moves it
33
+ * - Boat: row, current moves it
34
+ * - Balloon: burn/release moves it
35
+ */
36
+ blocksWalkingMovement: boolean;
37
+ /**
38
+ * If true, actor must EXIT vehicle before leaving the room on foot.
39
+ * Prevents "GO EAST" while sitting in a bucket.
40
+ */
41
+ requiresExitBeforeLeaving: boolean;
42
+ /**
43
+ * Current location/state of the vehicle (e.g., 'top', 'bottom', 'river-1')
44
+ * Used by vehicle-specific logic to track position.
45
+ */
46
+ currentPosition?: string;
47
+ /**
48
+ * Map of position names to room IDs.
49
+ * e.g., { 'top': 'top-of-well', 'bottom': 'well-bottom' }
50
+ */
51
+ positionRooms?: Record<string, string>;
52
+ /**
53
+ * Whether the vehicle is currently operational/usable.
54
+ * Boat might need to be inflated, balloon might need fuel.
55
+ */
56
+ isOperational: boolean;
57
+ /**
58
+ * Reason the vehicle is not operational (for error messages).
59
+ */
60
+ notOperationalReason?: string;
61
+ /**
62
+ * If true, visibility passes through to the containing room.
63
+ * - Bucket, raft, boat: transparent (can see the room you're in)
64
+ * - Airplane, submarine: not transparent (see vehicle interior only)
65
+ */
66
+ transparent: boolean;
67
+ constructor(options?: Partial<Omit<VehicleTrait, 'type' | 'movesWithContents'>>);
68
+ }
69
+ /**
70
+ * Type guard for VehicleTrait
71
+ */
72
+ export declare function isVehicleTrait(trait: ITrait): trait is VehicleTrait;
73
+ /**
74
+ * Factory function for creating VehicleTrait
75
+ */
76
+ export declare function createVehicleTrait(options?: Partial<Omit<VehicleTrait, 'type' | 'movesWithContents'>>): VehicleTrait;
77
+ //# sourceMappingURL=vehicleTrait.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vehicleTrait.d.ts","sourceRoot":"","sources":["../../../src/traits/vehicle/vehicleTrait.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,eAAe,GACf,YAAY,GACZ,UAAU,GACV,OAAO,GACP,SAAS,CAAC;AAEd;;GAEG;AACH,qBAAa,YAAa,YAAW,MAAM;IACzC,MAAM,CAAC,QAAQ,CAAC,IAAI,YAAqB;IACzC,QAAQ,CAAC,IAAI,YAAqB;IAElC,kDAAkD;IAClD,WAAW,EAAE,WAAW,CAAC;IAEzB;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAQ;IAE3C;;;;;;OAMG;IACH,qBAAqB,EAAE,OAAO,CAAC;IAE/B;;;OAGG;IACH,yBAAyB,EAAE,OAAO,CAAC;IAEnC;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEvC;;;OAGG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;;;OAIG;IACH,WAAW,EAAE,OAAO,CAAC;gBAET,OAAO,GAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,mBAAmB,CAAC,CAAM;CAUpF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,YAAY,CAEnE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,mBAAmB,CAAC,CAAM,GACtE,YAAY,CAEd"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ /**
3
+ * Vehicle Trait - For enterable containers that transport actors
4
+ *
5
+ * Vehicles are enterable containers (bucket, boat, basket, balloon) where:
6
+ * - Actor enters the vehicle (ENTER BUCKET)
7
+ * - Vehicle moves, taking its contents with it
8
+ * - Actor exits the vehicle (EXIT BUCKET)
9
+ *
10
+ * Based on Infocom's vehicle concept from Zork.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.VehicleTrait = void 0;
14
+ exports.isVehicleTrait = isVehicleTrait;
15
+ exports.createVehicleTrait = createVehicleTrait;
16
+ const trait_types_1 = require("../trait-types");
17
+ /**
18
+ * Trait for vehicles - enterable containers that transport actors
19
+ */
20
+ class VehicleTrait {
21
+ static type = trait_types_1.TraitType.VEHICLE;
22
+ type = trait_types_1.TraitType.VEHICLE;
23
+ /** Type of vehicle determines default behavior */
24
+ vehicleType;
25
+ /**
26
+ * When vehicle moves, all contents (including actors) move with it.
27
+ * This is always true for vehicles.
28
+ */
29
+ movesWithContents = true;
30
+ /**
31
+ * If true, actor cannot use GO/walk commands while in vehicle.
32
+ * Movement must be through vehicle-specific actions.
33
+ * - Bucket: POUR/FILL moves it
34
+ * - Boat: row, current moves it
35
+ * - Balloon: burn/release moves it
36
+ */
37
+ blocksWalkingMovement;
38
+ /**
39
+ * If true, actor must EXIT vehicle before leaving the room on foot.
40
+ * Prevents "GO EAST" while sitting in a bucket.
41
+ */
42
+ requiresExitBeforeLeaving;
43
+ /**
44
+ * Current location/state of the vehicle (e.g., 'top', 'bottom', 'river-1')
45
+ * Used by vehicle-specific logic to track position.
46
+ */
47
+ currentPosition;
48
+ /**
49
+ * Map of position names to room IDs.
50
+ * e.g., { 'top': 'top-of-well', 'bottom': 'well-bottom' }
51
+ */
52
+ positionRooms;
53
+ /**
54
+ * Whether the vehicle is currently operational/usable.
55
+ * Boat might need to be inflated, balloon might need fuel.
56
+ */
57
+ isOperational;
58
+ /**
59
+ * Reason the vehicle is not operational (for error messages).
60
+ */
61
+ notOperationalReason;
62
+ /**
63
+ * If true, visibility passes through to the containing room.
64
+ * - Bucket, raft, boat: transparent (can see the room you're in)
65
+ * - Airplane, submarine: not transparent (see vehicle interior only)
66
+ */
67
+ transparent;
68
+ constructor(options = {}) {
69
+ this.vehicleType = options.vehicleType ?? 'generic';
70
+ this.blocksWalkingMovement = options.blocksWalkingMovement ?? true;
71
+ this.requiresExitBeforeLeaving = options.requiresExitBeforeLeaving ?? true;
72
+ this.currentPosition = options.currentPosition;
73
+ this.positionRooms = options.positionRooms;
74
+ this.isOperational = options.isOperational ?? true;
75
+ this.notOperationalReason = options.notOperationalReason;
76
+ this.transparent = options.transparent ?? true; // Default to transparent for most IF vehicles
77
+ }
78
+ }
79
+ exports.VehicleTrait = VehicleTrait;
80
+ /**
81
+ * Type guard for VehicleTrait
82
+ */
83
+ function isVehicleTrait(trait) {
84
+ return trait.type === trait_types_1.TraitType.VEHICLE;
85
+ }
86
+ /**
87
+ * Factory function for creating VehicleTrait
88
+ */
89
+ function createVehicleTrait(options = {}) {
90
+ return new VehicleTrait(options);
91
+ }
92
+ //# sourceMappingURL=vehicleTrait.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vehicleTrait.js","sourceRoot":"","sources":["../../../src/traits/vehicle/vehicleTrait.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AA2FH,wCAEC;AAKD,gDAIC;AApGD,gDAA2C;AAa3C;;GAEG;AACH,MAAa,YAAY;IACvB,MAAM,CAAU,IAAI,GAAG,uBAAS,CAAC,OAAO,CAAC;IAChC,IAAI,GAAG,uBAAS,CAAC,OAAO,CAAC;IAElC,kDAAkD;IAClD,WAAW,CAAc;IAEzB;;;OAGG;IACM,iBAAiB,GAAY,IAAI,CAAC;IAE3C;;;;;;OAMG;IACH,qBAAqB,CAAU;IAE/B;;;OAGG;IACH,yBAAyB,CAAU;IAEnC;;;OAGG;IACH,eAAe,CAAU;IAEzB;;;OAGG;IACH,aAAa,CAA0B;IAEvC;;;OAGG;IACH,aAAa,CAAU;IAEvB;;OAEG;IACH,oBAAoB,CAAU;IAE9B;;;;OAIG;IACH,WAAW,CAAU;IAErB,YAAY,UAAqE,EAAE;QACjF,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,SAAS,CAAC;QACpD,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,IAAI,IAAI,CAAC;QACnE,IAAI,CAAC,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,IAAI,IAAI,CAAC;QAC3E,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC;QACnD,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;QACzD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,8CAA8C;IAChG,CAAC;;AAnEH,oCAoEC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,KAAa;IAC1C,OAAO,KAAK,CAAC,IAAI,KAAK,uBAAS,CAAC,OAAO,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAChC,UAAqE,EAAE;IAEvE,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { WeaponTrait, IWeaponData } from './weaponTrait';
2
+ export { WeaponBehavior, IWeaponDamageResult } from './weaponBehavior';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/traits/weapon/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WeaponBehavior = exports.WeaponTrait = void 0;
4
+ var weaponTrait_1 = require("./weaponTrait");
5
+ Object.defineProperty(exports, "WeaponTrait", { enumerable: true, get: function () { return weaponTrait_1.WeaponTrait; } });
6
+ var weaponBehavior_1 = require("./weaponBehavior");
7
+ Object.defineProperty(exports, "WeaponBehavior", { enumerable: true, get: function () { return weaponBehavior_1.WeaponBehavior; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/traits/weapon/index.ts"],"names":[],"mappings":";;;AAAA,6CAAyD;AAAhD,0GAAA,WAAW,OAAA;AACpB,mDAAuE;AAA9D,gHAAA,cAAc,OAAA"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Behavior for weapon entities
3
+ */
4
+ import { Behavior } from '../../behaviors/behavior';
5
+ import { IFEntity } from '../../entities/if-entity';
6
+ /**
7
+ * Result of a weapon damage calculation
8
+ */
9
+ export interface IWeaponDamageResult {
10
+ damage: number;
11
+ weaponType: string;
12
+ criticalHit?: boolean;
13
+ weaponBroke?: boolean;
14
+ }
15
+ /**
16
+ * Behavior for weapon entities.
17
+ *
18
+ * Handles damage calculation and weapon durability.
19
+ */
20
+ export declare class WeaponBehavior extends Behavior {
21
+ static requiredTraits: "weapon"[];
22
+ /**
23
+ * Calculate damage for a weapon
24
+ */
25
+ static calculateDamage(weapon: IFEntity): IWeaponDamageResult;
26
+ /**
27
+ * Check if a weapon can damage a specific target type
28
+ */
29
+ static canDamage(weapon: IFEntity, targetType?: string): boolean;
30
+ /**
31
+ * Get weapon type
32
+ */
33
+ static getWeaponType(weapon: IFEntity): string;
34
+ /**
35
+ * Check if weapon requires two hands
36
+ */
37
+ static isTwoHanded(weapon: IFEntity): boolean;
38
+ /**
39
+ * Repair weapon (restore durability)
40
+ */
41
+ static repair(weapon: IFEntity): boolean;
42
+ /**
43
+ * Check if weapon is broken
44
+ */
45
+ static isBroken(weapon: IFEntity): boolean;
46
+ }
47
+ //# sourceMappingURL=weaponBehavior.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weaponBehavior.d.ts","sourceRoot":"","sources":["../../../src/traits/weapon/weaponBehavior.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAIpD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,MAAM,CAAC,cAAc,aAAsB;IAE3C;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,GAAG,mBAAmB;IA+B7D;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO;IAsBhE;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM;IAK9C;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO;IAK7C;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO;IASxC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO;CAS3C"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ /**
3
+ * Behavior for weapon entities
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.WeaponBehavior = void 0;
7
+ const behavior_1 = require("../../behaviors/behavior");
8
+ const trait_types_1 = require("../trait-types");
9
+ /**
10
+ * Behavior for weapon entities.
11
+ *
12
+ * Handles damage calculation and weapon durability.
13
+ */
14
+ class WeaponBehavior extends behavior_1.Behavior {
15
+ static requiredTraits = [trait_types_1.TraitType.WEAPON];
16
+ /**
17
+ * Calculate damage for a weapon
18
+ */
19
+ static calculateDamage(weapon) {
20
+ if (!weapon.has(trait_types_1.TraitType.WEAPON)) {
21
+ throw new Error(`Entity "${weapon.id}" is not a weapon`);
22
+ }
23
+ const weaponTrait = weapon.get(trait_types_1.TraitType.WEAPON);
24
+ // Calculate base damage (random between min and max)
25
+ const range = weaponTrait.maxDamage - weaponTrait.minDamage;
26
+ const damage = weaponTrait.minDamage + Math.floor(Math.random() * (range + 1));
27
+ // Check for critical hit (10% chance)
28
+ const criticalHit = Math.random() < 0.1;
29
+ const finalDamage = criticalHit ? damage * 2 : damage;
30
+ // Handle durability if weapon is breakable
31
+ let weaponBroke = false;
32
+ if (weaponTrait.breakable && weaponTrait.durability !== undefined) {
33
+ weaponTrait.durability--;
34
+ if (weaponTrait.durability <= 0) {
35
+ weaponBroke = true;
36
+ }
37
+ }
38
+ return {
39
+ damage: finalDamage,
40
+ weaponType: weaponTrait.weaponType,
41
+ criticalHit,
42
+ weaponBroke
43
+ };
44
+ }
45
+ /**
46
+ * Check if a weapon can damage a specific target type
47
+ */
48
+ static canDamage(weapon, targetType) {
49
+ if (!weapon.has(trait_types_1.TraitType.WEAPON)) {
50
+ return false;
51
+ }
52
+ if (!targetType)
53
+ return true;
54
+ const weaponTrait = weapon.get(trait_types_1.TraitType.WEAPON);
55
+ // Special logic for weapon types vs target types
56
+ // This can be expanded based on game needs
57
+ switch (targetType) {
58
+ case 'ghost':
59
+ case 'spirit':
60
+ return weaponTrait.weaponType === 'magic' || weaponTrait.weaponType === 'blessed';
61
+ case 'armor':
62
+ case 'metal':
63
+ return weaponTrait.weaponType === 'piercing' || weaponTrait.weaponType === 'magic';
64
+ default:
65
+ return true;
66
+ }
67
+ }
68
+ /**
69
+ * Get weapon type
70
+ */
71
+ static getWeaponType(weapon) {
72
+ const weaponTrait = WeaponBehavior.require(weapon, trait_types_1.TraitType.WEAPON);
73
+ return weaponTrait.weaponType;
74
+ }
75
+ /**
76
+ * Check if weapon requires two hands
77
+ */
78
+ static isTwoHanded(weapon) {
79
+ const weaponTrait = WeaponBehavior.require(weapon, trait_types_1.TraitType.WEAPON);
80
+ return weaponTrait.twoHanded;
81
+ }
82
+ /**
83
+ * Repair weapon (restore durability)
84
+ */
85
+ static repair(weapon) {
86
+ const weaponTrait = WeaponBehavior.require(weapon, trait_types_1.TraitType.WEAPON);
87
+ if (!weaponTrait.breakable)
88
+ return false;
89
+ weaponTrait.durability = weaponTrait.maxDurability;
90
+ return true;
91
+ }
92
+ /**
93
+ * Check if weapon is broken
94
+ */
95
+ static isBroken(weapon) {
96
+ if (!weapon.has(trait_types_1.TraitType.WEAPON)) {
97
+ return false;
98
+ }
99
+ const weaponTrait = weapon.get(trait_types_1.TraitType.WEAPON);
100
+ if (!weaponTrait.breakable)
101
+ return false;
102
+ return weaponTrait.durability !== undefined && weaponTrait.durability <= 0;
103
+ }
104
+ }
105
+ exports.WeaponBehavior = WeaponBehavior;
106
+ //# sourceMappingURL=weaponBehavior.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weaponBehavior.js","sourceRoot":"","sources":["../../../src/traits/weapon/weaponBehavior.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,uDAAoD;AAEpD,gDAA2C;AAa3C;;;;GAIG;AACH,MAAa,cAAe,SAAQ,mBAAQ;IAC1C,MAAM,CAAC,cAAc,GAAG,CAAC,uBAAS,CAAC,MAAM,CAAC,CAAC;IAE3C;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,MAAgB;QACrC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,WAAW,MAAM,CAAC,EAAE,mBAAmB,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAc,uBAAS,CAAC,MAAM,CAAE,CAAC;QAE/D,qDAAqD;QACrD,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;QAC5D,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QAE/E,sCAAsC;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;QACxC,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAEtD,2CAA2C;QAC3C,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAClE,WAAW,CAAC,UAAU,EAAE,CAAC;YACzB,IAAI,WAAW,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC;gBAChC,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;QACH,CAAC;QAED,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,UAAU,EAAE,WAAW,CAAC,UAAU;YAClC,WAAW;YACX,WAAW;SACZ,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,MAAgB,EAAE,UAAmB;QACpD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAE7B,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAc,uBAAS,CAAC,MAAM,CAAE,CAAC;QAE/D,iDAAiD;QACjD,2CAA2C;QAC3C,QAAQ,UAAU,EAAE,CAAC;YACnB,KAAK,OAAO,CAAC;YACb,KAAK,QAAQ;gBACX,OAAO,WAAW,CAAC,UAAU,KAAK,OAAO,IAAI,WAAW,CAAC,UAAU,KAAK,SAAS,CAAC;YACpF,KAAK,OAAO,CAAC;YACb,KAAK,OAAO;gBACV,OAAO,WAAW,CAAC,UAAU,KAAK,UAAU,IAAI,WAAW,CAAC,UAAU,KAAK,OAAO,CAAC;YACrF;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,MAAgB;QACnC,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAc,MAAM,EAAE,uBAAS,CAAC,MAAM,CAAC,CAAC;QAClF,OAAO,WAAW,CAAC,UAAU,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,MAAgB;QACjC,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAc,MAAM,EAAE,uBAAS,CAAC,MAAM,CAAC,CAAC;QAClF,OAAO,WAAW,CAAC,SAAS,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,MAAgB;QAC5B,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAc,MAAM,EAAE,uBAAS,CAAC,MAAM,CAAC,CAAC;QAElF,IAAI,CAAC,WAAW,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QAEzC,WAAW,CAAC,UAAU,GAAG,WAAW,CAAC,aAAa,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAgB;QAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAc,uBAAS,CAAC,MAAM,CAAE,CAAC;QAE/D,IAAI,CAAC,WAAW,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QACzC,OAAO,WAAW,CAAC,UAAU,KAAK,SAAS,IAAI,WAAW,CAAC,UAAU,IAAI,CAAC,CAAC;IAC7E,CAAC;;AArGH,wCAsGC"}