@quake2ts/game 0.0.1

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 (382) hide show
  1. package/dist/browser/index.global.js +6 -0
  2. package/dist/browser/index.global.js.map +1 -0
  3. package/dist/cjs/index.cjs +28688 -0
  4. package/dist/cjs/index.cjs.map +1 -0
  5. package/dist/esm/index.js +28477 -0
  6. package/dist/esm/index.js.map +1 -0
  7. package/dist/tsconfig.tsbuildinfo +1 -0
  8. package/dist/types/ai/constants.d.ts +51 -0
  9. package/dist/types/ai/constants.d.ts.map +1 -0
  10. package/dist/types/ai/index.d.ts +7 -0
  11. package/dist/types/ai/index.d.ts.map +1 -0
  12. package/dist/types/ai/monster.d.ts +7 -0
  13. package/dist/types/ai/monster.d.ts.map +1 -0
  14. package/dist/types/ai/movement.d.ts +47 -0
  15. package/dist/types/ai/movement.d.ts.map +1 -0
  16. package/dist/types/ai/movement_rogue.d.ts +18 -0
  17. package/dist/types/ai/movement_rogue.d.ts.map +1 -0
  18. package/dist/types/ai/noise.d.ts +12 -0
  19. package/dist/types/ai/noise.d.ts.map +1 -0
  20. package/dist/types/ai/perception.d.ts +23 -0
  21. package/dist/types/ai/perception.d.ts.map +1 -0
  22. package/dist/types/ai/rogue.d.ts +36 -0
  23. package/dist/types/ai/rogue.d.ts.map +1 -0
  24. package/dist/types/ai/spawn_utils.d.ts +6 -0
  25. package/dist/types/ai/spawn_utils.d.ts.map +1 -0
  26. package/dist/types/ai/targeting.d.ts +29 -0
  27. package/dist/types/ai/targeting.d.ts.map +1 -0
  28. package/dist/types/buttons.d.ts +2 -0
  29. package/dist/types/buttons.d.ts.map +1 -0
  30. package/dist/types/checksum.d.ts +11 -0
  31. package/dist/types/checksum.d.ts.map +1 -0
  32. package/dist/types/combat/armor.d.ts +39 -0
  33. package/dist/types/combat/armor.d.ts.map +1 -0
  34. package/dist/types/combat/damage.d.ts +60 -0
  35. package/dist/types/combat/damage.d.ts.map +1 -0
  36. package/dist/types/combat/damageFlags.d.ts +22 -0
  37. package/dist/types/combat/damageFlags.d.ts.map +1 -0
  38. package/dist/types/combat/damageMods.d.ts +80 -0
  39. package/dist/types/combat/damageMods.d.ts.map +1 -0
  40. package/dist/types/combat/index.d.ts +8 -0
  41. package/dist/types/combat/index.d.ts.map +1 -0
  42. package/dist/types/combat/obituary.d.ts +10 -0
  43. package/dist/types/combat/obituary.d.ts.map +1 -0
  44. package/dist/types/combat/specialDamage.d.ts +88 -0
  45. package/dist/types/combat/specialDamage.d.ts.map +1 -0
  46. package/dist/types/combat/weapon.d.ts +23 -0
  47. package/dist/types/combat/weapon.d.ts.map +1 -0
  48. package/dist/types/combat/weapons/animation.d.ts +18 -0
  49. package/dist/types/combat/weapons/animation.d.ts.map +1 -0
  50. package/dist/types/combat/weapons/bfg.d.ts +4 -0
  51. package/dist/types/combat/weapons/bfg.d.ts.map +1 -0
  52. package/dist/types/combat/weapons/blaster.d.ts +4 -0
  53. package/dist/types/combat/weapons/blaster.d.ts.map +1 -0
  54. package/dist/types/combat/weapons/chainfist.d.ts +9 -0
  55. package/dist/types/combat/weapons/chainfist.d.ts.map +1 -0
  56. package/dist/types/combat/weapons/chaingun.d.ts +4 -0
  57. package/dist/types/combat/weapons/chaingun.d.ts.map +1 -0
  58. package/dist/types/combat/weapons/common.d.ts +10 -0
  59. package/dist/types/combat/weapons/common.d.ts.map +1 -0
  60. package/dist/types/combat/weapons/firing.d.ts +29 -0
  61. package/dist/types/combat/weapons/firing.d.ts.map +1 -0
  62. package/dist/types/combat/weapons/frames.d.ts +51 -0
  63. package/dist/types/combat/weapons/frames.d.ts.map +1 -0
  64. package/dist/types/combat/weapons/grenade.d.ts +4 -0
  65. package/dist/types/combat/weapons/grenade.d.ts.map +1 -0
  66. package/dist/types/combat/weapons/grenadelauncher.d.ts +4 -0
  67. package/dist/types/combat/weapons/grenadelauncher.d.ts.map +1 -0
  68. package/dist/types/combat/weapons/hyperblaster.d.ts +4 -0
  69. package/dist/types/combat/weapons/hyperblaster.d.ts.map +1 -0
  70. package/dist/types/combat/weapons/machinegun.d.ts +4 -0
  71. package/dist/types/combat/weapons/machinegun.d.ts.map +1 -0
  72. package/dist/types/combat/weapons/projectSource.d.ts +17 -0
  73. package/dist/types/combat/weapons/projectSource.d.ts.map +1 -0
  74. package/dist/types/combat/weapons/railgun.d.ts +4 -0
  75. package/dist/types/combat/weapons/railgun.d.ts.map +1 -0
  76. package/dist/types/combat/weapons/registry.d.ts +16 -0
  77. package/dist/types/combat/weapons/registry.d.ts.map +1 -0
  78. package/dist/types/combat/weapons/rocket.d.ts +4 -0
  79. package/dist/types/combat/weapons/rocket.d.ts.map +1 -0
  80. package/dist/types/combat/weapons/rogue.d.ts +10 -0
  81. package/dist/types/combat/weapons/rogue.d.ts.map +1 -0
  82. package/dist/types/combat/weapons/shotgun.d.ts +4 -0
  83. package/dist/types/combat/weapons/shotgun.d.ts.map +1 -0
  84. package/dist/types/combat/weapons/state.d.ts +19 -0
  85. package/dist/types/combat/weapons/state.d.ts.map +1 -0
  86. package/dist/types/combat/weapons/supershotgun.d.ts +4 -0
  87. package/dist/types/combat/weapons/supershotgun.d.ts.map +1 -0
  88. package/dist/types/combat/weapons/switching.d.ts +16 -0
  89. package/dist/types/combat/weapons/switching.d.ts.map +1 -0
  90. package/dist/types/combat/weapons/trap.d.ts +4 -0
  91. package/dist/types/combat/weapons/trap.d.ts.map +1 -0
  92. package/dist/types/demo/serializer.d.ts +10 -0
  93. package/dist/types/demo/serializer.d.ts.map +1 -0
  94. package/dist/types/dm/chat.d.ts +4 -0
  95. package/dist/types/dm/chat.d.ts.map +1 -0
  96. package/dist/types/dm/game.d.ts +7 -0
  97. package/dist/types/dm/game.d.ts.map +1 -0
  98. package/dist/types/dm/scoreboard.d.ts +15 -0
  99. package/dist/types/dm/scoreboard.d.ts.map +1 -0
  100. package/dist/types/dm/telefrag.d.ts +2 -0
  101. package/dist/types/dm/telefrag.d.ts.map +1 -0
  102. package/dist/types/editor/analysis.d.ts +20 -0
  103. package/dist/types/editor/analysis.d.ts.map +1 -0
  104. package/dist/types/editor/graph.d.ts +19 -0
  105. package/dist/types/editor/graph.d.ts.map +1 -0
  106. package/dist/types/editor/metadata.d.ts +31 -0
  107. package/dist/types/editor/metadata.d.ts.map +1 -0
  108. package/dist/types/editor/search.d.ts +9 -0
  109. package/dist/types/editor/search.d.ts.map +1 -0
  110. package/dist/types/editor/selection.d.ts +19 -0
  111. package/dist/types/editor/selection.d.ts.map +1 -0
  112. package/dist/types/entities/callbacks.d.ts +6 -0
  113. package/dist/types/entities/callbacks.d.ts.map +1 -0
  114. package/dist/types/entities/camera.d.ts +6 -0
  115. package/dist/types/entities/camera.d.ts.map +1 -0
  116. package/dist/types/entities/entity.d.ts +375 -0
  117. package/dist/types/entities/entity.d.ts.map +1 -0
  118. package/dist/types/entities/enums.d.ts +117 -0
  119. package/dist/types/entities/enums.d.ts.map +1 -0
  120. package/dist/types/entities/funcs.d.ts +13 -0
  121. package/dist/types/entities/funcs.d.ts.map +1 -0
  122. package/dist/types/entities/gibs.d.ts +20 -0
  123. package/dist/types/entities/gibs.d.ts.map +1 -0
  124. package/dist/types/entities/index.d.ts +9 -0
  125. package/dist/types/entities/index.d.ts.map +1 -0
  126. package/dist/types/entities/items/ammo.d.ts +5 -0
  127. package/dist/types/entities/items/ammo.d.ts.map +1 -0
  128. package/dist/types/entities/items/armor.d.ts +5 -0
  129. package/dist/types/entities/items/armor.d.ts.map +1 -0
  130. package/dist/types/entities/items/common.d.ts +5 -0
  131. package/dist/types/entities/items/common.d.ts.map +1 -0
  132. package/dist/types/entities/items/foodcube.d.ts +4 -0
  133. package/dist/types/entities/items/foodcube.d.ts.map +1 -0
  134. package/dist/types/entities/items/health.d.ts +5 -0
  135. package/dist/types/entities/items/health.d.ts.map +1 -0
  136. package/dist/types/entities/items/index.d.ts +8 -0
  137. package/dist/types/entities/items/index.d.ts.map +1 -0
  138. package/dist/types/entities/items/keys.d.ts +5 -0
  139. package/dist/types/entities/items/keys.d.ts.map +1 -0
  140. package/dist/types/entities/items/powerArmor.d.ts +5 -0
  141. package/dist/types/entities/items/powerArmor.d.ts.map +1 -0
  142. package/dist/types/entities/items/powerups.d.ts +5 -0
  143. package/dist/types/entities/items/powerups.d.ts.map +1 -0
  144. package/dist/types/entities/items/weapons.d.ts +5 -0
  145. package/dist/types/entities/items/weapons.d.ts.map +1 -0
  146. package/dist/types/entities/items.d.ts +5 -0
  147. package/dist/types/entities/items.d.ts.map +1 -0
  148. package/dist/types/entities/lights.d.ts +3 -0
  149. package/dist/types/entities/lights.d.ts.map +1 -0
  150. package/dist/types/entities/misc/decorative.d.ts +7 -0
  151. package/dist/types/entities/misc/decorative.d.ts.map +1 -0
  152. package/dist/types/entities/misc/flyers.d.ts +6 -0
  153. package/dist/types/entities/misc/flyers.d.ts.map +1 -0
  154. package/dist/types/entities/misc/more_misc.d.ts +12 -0
  155. package/dist/types/entities/misc/more_misc.d.ts.map +1 -0
  156. package/dist/types/entities/misc/viperMissile.d.ts +3 -0
  157. package/dist/types/entities/misc/viperMissile.d.ts.map +1 -0
  158. package/dist/types/entities/misc.d.ts +4 -0
  159. package/dist/types/entities/misc.d.ts.map +1 -0
  160. package/dist/types/entities/monsters/actor.d.ts +6 -0
  161. package/dist/types/entities/monsters/actor.d.ts.map +1 -0
  162. package/dist/types/entities/monsters/arachnid.d.ts +5 -0
  163. package/dist/types/entities/monsters/arachnid.d.ts.map +1 -0
  164. package/dist/types/entities/monsters/attack.d.ts +19 -0
  165. package/dist/types/entities/monsters/attack.d.ts.map +1 -0
  166. package/dist/types/entities/monsters/berserk.d.ts +5 -0
  167. package/dist/types/entities/monsters/berserk.d.ts.map +1 -0
  168. package/dist/types/entities/monsters/boss2.d.ts +5 -0
  169. package/dist/types/entities/monsters/boss2.d.ts.map +1 -0
  170. package/dist/types/entities/monsters/brain.d.ts +5 -0
  171. package/dist/types/entities/monsters/brain.d.ts.map +1 -0
  172. package/dist/types/entities/monsters/chick.d.ts +5 -0
  173. package/dist/types/entities/monsters/chick.d.ts.map +1 -0
  174. package/dist/types/entities/monsters/common.d.ts +33 -0
  175. package/dist/types/entities/monsters/common.d.ts.map +1 -0
  176. package/dist/types/entities/monsters/fixbot.d.ts +5 -0
  177. package/dist/types/entities/monsters/fixbot.d.ts.map +1 -0
  178. package/dist/types/entities/monsters/flipper.d.ts +5 -0
  179. package/dist/types/entities/monsters/flipper.d.ts.map +1 -0
  180. package/dist/types/entities/monsters/floater.d.ts +5 -0
  181. package/dist/types/entities/monsters/floater.d.ts.map +1 -0
  182. package/dist/types/entities/monsters/flyer.d.ts +7 -0
  183. package/dist/types/entities/monsters/flyer.d.ts.map +1 -0
  184. package/dist/types/entities/monsters/gekk.d.ts +5 -0
  185. package/dist/types/entities/monsters/gekk.d.ts.map +1 -0
  186. package/dist/types/entities/monsters/gladiator.d.ts +5 -0
  187. package/dist/types/entities/monsters/gladiator.d.ts.map +1 -0
  188. package/dist/types/entities/monsters/guardian.d.ts +5 -0
  189. package/dist/types/entities/monsters/guardian.d.ts.map +1 -0
  190. package/dist/types/entities/monsters/gunner.d.ts +5 -0
  191. package/dist/types/entities/monsters/gunner.d.ts.map +1 -0
  192. package/dist/types/entities/monsters/gunnerCommander.d.ts +5 -0
  193. package/dist/types/entities/monsters/gunnerCommander.d.ts.map +1 -0
  194. package/dist/types/entities/monsters/hover.d.ts +5 -0
  195. package/dist/types/entities/monsters/hover.d.ts.map +1 -0
  196. package/dist/types/entities/monsters/icarus.d.ts +5 -0
  197. package/dist/types/entities/monsters/icarus.d.ts.map +1 -0
  198. package/dist/types/entities/monsters/index.d.ts +3 -0
  199. package/dist/types/entities/monsters/index.d.ts.map +1 -0
  200. package/dist/types/entities/monsters/infantry.d.ts +5 -0
  201. package/dist/types/entities/monsters/infantry.d.ts.map +1 -0
  202. package/dist/types/entities/monsters/insane.d.ts +5 -0
  203. package/dist/types/entities/monsters/insane.d.ts.map +1 -0
  204. package/dist/types/entities/monsters/jorg.d.ts +5 -0
  205. package/dist/types/entities/monsters/jorg.d.ts.map +1 -0
  206. package/dist/types/entities/monsters/makron.d.ts +5 -0
  207. package/dist/types/entities/monsters/makron.d.ts.map +1 -0
  208. package/dist/types/entities/monsters/medic.d.ts +6 -0
  209. package/dist/types/entities/monsters/medic.d.ts.map +1 -0
  210. package/dist/types/entities/monsters/mutant.d.ts +5 -0
  211. package/dist/types/entities/monsters/mutant.d.ts.map +1 -0
  212. package/dist/types/entities/monsters/parasite.d.ts +5 -0
  213. package/dist/types/entities/monsters/parasite.d.ts.map +1 -0
  214. package/dist/types/entities/monsters/rogue/carrier.d.ts +5 -0
  215. package/dist/types/entities/monsters/rogue/carrier.d.ts.map +1 -0
  216. package/dist/types/entities/monsters/rogue/common.d.ts +11 -0
  217. package/dist/types/entities/monsters/rogue/common.d.ts.map +1 -0
  218. package/dist/types/entities/monsters/rogue/stalker.d.ts +5 -0
  219. package/dist/types/entities/monsters/rogue/stalker.d.ts.map +1 -0
  220. package/dist/types/entities/monsters/rogue/widow.d.ts +5 -0
  221. package/dist/types/entities/monsters/rogue/widow.d.ts.map +1 -0
  222. package/dist/types/entities/monsters/rogue/widow2.d.ts +3 -0
  223. package/dist/types/entities/monsters/rogue/widow2.d.ts.map +1 -0
  224. package/dist/types/entities/monsters/shambler.d.ts +5 -0
  225. package/dist/types/entities/monsters/shambler.d.ts.map +1 -0
  226. package/dist/types/entities/monsters/soldier.d.ts +11 -0
  227. package/dist/types/entities/monsters/soldier.d.ts.map +1 -0
  228. package/dist/types/entities/monsters/supertank.d.ts +5 -0
  229. package/dist/types/entities/monsters/supertank.d.ts.map +1 -0
  230. package/dist/types/entities/monsters/tank.d.ts +5 -0
  231. package/dist/types/entities/monsters/tank.d.ts.map +1 -0
  232. package/dist/types/entities/monsters/tankCommander.d.ts +5 -0
  233. package/dist/types/entities/monsters/tankCommander.d.ts.map +1 -0
  234. package/dist/types/entities/monsters/turret.d.ts +5 -0
  235. package/dist/types/entities/monsters/turret.d.ts.map +1 -0
  236. package/dist/types/entities/paths.d.ts +3 -0
  237. package/dist/types/entities/paths.d.ts.map +1 -0
  238. package/dist/types/entities/player.d.ts +8 -0
  239. package/dist/types/entities/player.d.ts.map +1 -0
  240. package/dist/types/entities/playerStats.d.ts +3 -0
  241. package/dist/types/entities/playerStats.d.ts.map +1 -0
  242. package/dist/types/entities/player_anim.d.ts +50 -0
  243. package/dist/types/entities/player_anim.d.ts.map +1 -0
  244. package/dist/types/entities/pool.d.ts +28 -0
  245. package/dist/types/entities/pool.d.ts.map +1 -0
  246. package/dist/types/entities/projectiles/prox.d.ts +5 -0
  247. package/dist/types/entities/projectiles/prox.d.ts.map +1 -0
  248. package/dist/types/entities/projectiles/trap.d.ts +7 -0
  249. package/dist/types/entities/projectiles/trap.d.ts.map +1 -0
  250. package/dist/types/entities/projectiles.d.ts +22 -0
  251. package/dist/types/entities/projectiles.d.ts.map +1 -0
  252. package/dist/types/entities/selection.d.ts +73 -0
  253. package/dist/types/entities/selection.d.ts.map +1 -0
  254. package/dist/types/entities/spatial.d.ts +15 -0
  255. package/dist/types/entities/spatial.d.ts.map +1 -0
  256. package/dist/types/entities/spawn.d.ts +33 -0
  257. package/dist/types/entities/spawn.d.ts.map +1 -0
  258. package/dist/types/entities/spawngro.d.ts +3 -0
  259. package/dist/types/entities/spawngro.d.ts.map +1 -0
  260. package/dist/types/entities/system.d.ts +130 -0
  261. package/dist/types/entities/system.d.ts.map +1 -0
  262. package/dist/types/entities/target/speaker.d.ts +3 -0
  263. package/dist/types/entities/target/speaker.d.ts.map +1 -0
  264. package/dist/types/entities/targets.d.ts +3 -0
  265. package/dist/types/entities/targets.d.ts.map +1 -0
  266. package/dist/types/entities/templates.d.ts +45 -0
  267. package/dist/types/entities/templates.d.ts.map +1 -0
  268. package/dist/types/entities/thinkScheduler.d.ts +14 -0
  269. package/dist/types/entities/thinkScheduler.d.ts.map +1 -0
  270. package/dist/types/entities/triggers/always.d.ts +3 -0
  271. package/dist/types/entities/triggers/always.d.ts.map +1 -0
  272. package/dist/types/entities/triggers/bad_area.d.ts +3 -0
  273. package/dist/types/entities/triggers/bad_area.d.ts.map +1 -0
  274. package/dist/types/entities/triggers/common.d.ts +14 -0
  275. package/dist/types/entities/triggers/common.d.ts.map +1 -0
  276. package/dist/types/entities/triggers/counter.d.ts +3 -0
  277. package/dist/types/entities/triggers/counter.d.ts.map +1 -0
  278. package/dist/types/entities/triggers/elevator.d.ts +3 -0
  279. package/dist/types/entities/triggers/elevator.d.ts.map +1 -0
  280. package/dist/types/entities/triggers/flashlight.d.ts +3 -0
  281. package/dist/types/entities/triggers/flashlight.d.ts.map +1 -0
  282. package/dist/types/entities/triggers/fog.d.ts +2 -0
  283. package/dist/types/entities/triggers/fog.d.ts.map +1 -0
  284. package/dist/types/entities/triggers/gravity.d.ts +3 -0
  285. package/dist/types/entities/triggers/gravity.d.ts.map +1 -0
  286. package/dist/types/entities/triggers/hurt.d.ts +3 -0
  287. package/dist/types/entities/triggers/hurt.d.ts.map +1 -0
  288. package/dist/types/entities/triggers/index.d.ts +3 -0
  289. package/dist/types/entities/triggers/index.d.ts.map +1 -0
  290. package/dist/types/entities/triggers/key.d.ts +3 -0
  291. package/dist/types/entities/triggers/key.d.ts.map +1 -0
  292. package/dist/types/entities/triggers/look.d.ts +3 -0
  293. package/dist/types/entities/triggers/look.d.ts.map +1 -0
  294. package/dist/types/entities/triggers/monsterjump.d.ts +3 -0
  295. package/dist/types/entities/triggers/monsterjump.d.ts.map +1 -0
  296. package/dist/types/entities/triggers/multiple.d.ts +6 -0
  297. package/dist/types/entities/triggers/multiple.d.ts.map +1 -0
  298. package/dist/types/entities/triggers/once.d.ts +3 -0
  299. package/dist/types/entities/triggers/once.d.ts.map +1 -0
  300. package/dist/types/entities/triggers/push.d.ts +3 -0
  301. package/dist/types/entities/triggers/push.d.ts.map +1 -0
  302. package/dist/types/entities/triggers/relay.d.ts +3 -0
  303. package/dist/types/entities/triggers/relay.d.ts.map +1 -0
  304. package/dist/types/entities/triggers/secret.d.ts +3 -0
  305. package/dist/types/entities/triggers/secret.d.ts.map +1 -0
  306. package/dist/types/entities/triggers/teleport.d.ts +3 -0
  307. package/dist/types/entities/triggers/teleport.d.ts.map +1 -0
  308. package/dist/types/entities/utils.d.ts +12 -0
  309. package/dist/types/entities/utils.d.ts.map +1 -0
  310. package/dist/types/entities/worldspawn.d.ts +5 -0
  311. package/dist/types/entities/worldspawn.d.ts.map +1 -0
  312. package/dist/types/imports.d.ts +53 -0
  313. package/dist/types/imports.d.ts.map +1 -0
  314. package/dist/types/index.d.ts +124 -0
  315. package/dist/types/index.d.ts.map +1 -0
  316. package/dist/types/inventory/ammo.d.ts +35 -0
  317. package/dist/types/inventory/ammo.d.ts.map +1 -0
  318. package/dist/types/inventory/give.d.ts +3 -0
  319. package/dist/types/inventory/give.d.ts.map +1 -0
  320. package/dist/types/inventory/index.d.ts +5 -0
  321. package/dist/types/inventory/index.d.ts.map +1 -0
  322. package/dist/types/inventory/items.d.ts +51 -0
  323. package/dist/types/inventory/items.d.ts.map +1 -0
  324. package/dist/types/inventory/playerInventory.d.ts +167 -0
  325. package/dist/types/inventory/playerInventory.d.ts.map +1 -0
  326. package/dist/types/level.d.ts +16 -0
  327. package/dist/types/level.d.ts.map +1 -0
  328. package/dist/types/loop.d.ts +29 -0
  329. package/dist/types/loop.d.ts.map +1 -0
  330. package/dist/types/mod.d.ts +34 -0
  331. package/dist/types/mod.d.ts.map +1 -0
  332. package/dist/types/modes/ctf/capture.d.ts +7 -0
  333. package/dist/types/modes/ctf/capture.d.ts.map +1 -0
  334. package/dist/types/modes/ctf/drop.d.ts +8 -0
  335. package/dist/types/modes/ctf/drop.d.ts.map +1 -0
  336. package/dist/types/modes/ctf/flag.d.ts +5 -0
  337. package/dist/types/modes/ctf/flag.d.ts.map +1 -0
  338. package/dist/types/modes/ctf/grapple.d.ts +13 -0
  339. package/dist/types/modes/ctf/grapple.d.ts.map +1 -0
  340. package/dist/types/modes/ctf/integration.d.ts +4 -0
  341. package/dist/types/modes/ctf/integration.d.ts.map +1 -0
  342. package/dist/types/modes/ctf/items.d.ts +2 -0
  343. package/dist/types/modes/ctf/items.d.ts.map +1 -0
  344. package/dist/types/modes/ctf/pickup.d.ts +6 -0
  345. package/dist/types/modes/ctf/pickup.d.ts.map +1 -0
  346. package/dist/types/modes/ctf/scoreboard.d.ts +34 -0
  347. package/dist/types/modes/ctf/scoreboard.d.ts.map +1 -0
  348. package/dist/types/modes/ctf/state.d.ts +15 -0
  349. package/dist/types/modes/ctf/state.d.ts.map +1 -0
  350. package/dist/types/modes/ctf/teams.d.ts +28 -0
  351. package/dist/types/modes/ctf/teams.d.ts.map +1 -0
  352. package/dist/types/physics/collision.d.ts +14 -0
  353. package/dist/types/physics/collision.d.ts.map +1 -0
  354. package/dist/types/physics/fluid.d.ts +10 -0
  355. package/dist/types/physics/fluid.d.ts.map +1 -0
  356. package/dist/types/physics/movement.d.ts +32 -0
  357. package/dist/types/physics/movement.d.ts.map +1 -0
  358. package/dist/types/replay/index.d.ts +3 -0
  359. package/dist/types/replay/index.d.ts.map +1 -0
  360. package/dist/types/replay/player.d.ts +15 -0
  361. package/dist/types/replay/player.d.ts.map +1 -0
  362. package/dist/types/replay/recorder.d.ts +16 -0
  363. package/dist/types/replay/recorder.d.ts.map +1 -0
  364. package/dist/types/save/adapter.d.ts +24 -0
  365. package/dist/types/save/adapter.d.ts.map +1 -0
  366. package/dist/types/save/index.d.ts +4 -0
  367. package/dist/types/save/index.d.ts.map +1 -0
  368. package/dist/types/save/rerelease.d.ts +50 -0
  369. package/dist/types/save/rerelease.d.ts.map +1 -0
  370. package/dist/types/save/save.d.ts +56 -0
  371. package/dist/types/save/save.d.ts.map +1 -0
  372. package/dist/types/save/storage.d.ts +37 -0
  373. package/dist/types/save/storage.d.ts.map +1 -0
  374. package/dist/types/save/tests/adapter.test.d.ts +2 -0
  375. package/dist/types/save/tests/adapter.test.d.ts.map +1 -0
  376. package/dist/types/save/tests/callbacks.test.d.ts +2 -0
  377. package/dist/types/save/tests/callbacks.test.d.ts.map +1 -0
  378. package/dist/types/save/tests/playerInventory.test.d.ts +2 -0
  379. package/dist/types/save/tests/playerInventory.test.d.ts.map +1 -0
  380. package/dist/types/scripting/hooks.d.ts +61 -0
  381. package/dist/types/scripting/hooks.d.ts.map +1 -0
  382. package/package.json +44 -0
@@ -0,0 +1,36 @@
1
+ import { Entity } from '../entities/entity.js';
2
+ import { Vec3 } from '@quake2ts/shared';
3
+ import { EntitySystem } from '../entities/system.js';
4
+ /**
5
+ * Predictive calculator
6
+ * target is who you want to shoot
7
+ * start is where the shot comes from
8
+ * bolt_speed is how fast the shot is (or 0 for hitscan)
9
+ * eye_height is a boolean to say whether or not to adjust to targets eye_height
10
+ * offset is how much time to miss by
11
+ * aimdir is the resulting aim direction
12
+ * aimpoint is the resulting aimpoint
13
+ */
14
+ export declare function PredictAim(context: EntitySystem, self: Entity, target: Entity, start: Vec3, bolt_speed: number, eye_height: boolean, offset: number): {
15
+ aimdir: Vec3;
16
+ aimpoint: Vec3;
17
+ };
18
+ /**
19
+ * [Paril-KEX] find a pitch that will at some point land on or near the player.
20
+ * very approximate. aim will be adjusted to the correct aim vector.
21
+ * Returns true if a valid pitch was found and updates `aim` vector in place (by returning it).
22
+ */
23
+ export declare function M_CalculatePitchToFire(context: EntitySystem, self: Entity, target: Vec3, start: Vec3, speed: number, time_remaining: number, mortar: boolean, destroy_on_touch?: boolean, gravity?: number): {
24
+ aimDir: Vec3;
25
+ } | null;
26
+ export declare enum BlockedJumpResult {
27
+ NO_JUMP = 0,
28
+ JUMP_TURN = 1,
29
+ JUMP_JUMP_UP = 2,
30
+ JUMP_JUMP_DOWN = 3
31
+ }
32
+ export declare function blocked_checkplat(context: EntitySystem, self: Entity, dist: number): boolean;
33
+ export declare function monster_jump_start(context: EntitySystem, self: Entity): void;
34
+ export declare function monster_jump_finished(context: EntitySystem, self: Entity): boolean;
35
+ export declare function blocked_checkjump(context: EntitySystem, self: Entity, dist: number, dropHeightInput?: number, jumpHeightInput?: number): BlockedJumpResult;
36
+ //# sourceMappingURL=rogue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rogue.d.ts","sourceRoot":"","sources":["../../../src/ai/rogue.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EAOP,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,IAAI,EAsBL,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAarD;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,IAAI,EACX,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,OAAO,EACnB,MAAM,EAAE,MAAM,GACb;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,IAAI,CAAA;CAAE,CA4DlC;AAeD;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,IAAI,EACX,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,OAAO,EACf,gBAAgB,GAAE,OAAe,EACjC,OAAO,GAAE,MAAY,GACpB;IAAE,MAAM,EAAE,IAAI,CAAA;CAAE,GAAG,IAAI,CAsFzB;AAMD,oBAAY,iBAAiB;IAC3B,OAAO,IAAI;IACX,SAAS,IAAI;IACb,YAAY,IAAI;IAChB,cAAc,IAAI;CACnB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CA4D5F;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAG5E;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAalF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAoE1J"}
@@ -0,0 +1,6 @@
1
+ import { EntitySystem } from '../entities/system.js';
2
+ import { Vec3 } from '@quake2ts/shared';
3
+ export declare function checkSpawnPoint(origin: Vec3, mins: Vec3, maxs: Vec3, context: EntitySystem): boolean;
4
+ export declare function findSpawnPoint(startpoint: Vec3, mins: Vec3, maxs: Vec3, context: EntitySystem): Vec3 | null;
5
+ export declare function checkGroundSpawnPoint(origin: Vec3, mins: Vec3, maxs: Vec3, height: number, gravity: number, context: EntitySystem): boolean;
6
+ //# sourceMappingURL=spawn_utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn_utils.d.ts","sourceRoot":"","sources":["../../../src/ai/spawn_utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAqB,MAAM,kBAAkB,CAAC;AAG3D,wBAAgB,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CASpG;AAKD,wBAAgB,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI,CAyB3G;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAY3I"}
@@ -0,0 +1,29 @@
1
+ import { type TraceFunction } from './perception.js';
2
+ import type { Entity } from '../entities/entity.js';
3
+ import type { EntitySystem } from '../entities/system.js';
4
+ export { rangeTo as range, RangeCategory as Range } from './perception.js';
5
+ export interface TargetAwarenessState {
6
+ timeSeconds: number;
7
+ frameNumber: number;
8
+ sightEntity: Entity | null;
9
+ sightEntityFrame: number;
10
+ soundEntity: Entity | null;
11
+ soundEntityFrame: number;
12
+ sound2Entity: Entity | null;
13
+ sound2EntityFrame: number;
14
+ sightClient: Entity | null;
15
+ }
16
+ export interface HearabilityHooks {
17
+ canHear?: (self: Entity, other: Entity) => boolean;
18
+ areasConnected?: (self: Entity, other: Entity) => boolean;
19
+ }
20
+ export declare function huntTarget(self: Entity, level: TargetAwarenessState, context: EntitySystem): void;
21
+ export interface FoundTargetOptions {
22
+ pickTarget?: (name: string) => Entity | null;
23
+ }
24
+ export declare function foundTarget(self: Entity, level: TargetAwarenessState, context: EntitySystem, options?: FoundTargetOptions): void;
25
+ export declare function AI_GetSightClient(self: Entity, context: EntitySystem, trace: TraceFunction): Entity | null;
26
+ export declare function findTarget(self: Entity, level: TargetAwarenessState, context: EntitySystem, trace: TraceFunction, hearability?: HearabilityHooks): boolean;
27
+ export declare function ai_checkattack(self: Entity, dist: number, context: EntitySystem): boolean;
28
+ export declare function findCover(self: Entity, context: EntitySystem): boolean;
29
+ //# sourceMappingURL=targeting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"targeting.d.ts","sourceRoot":"","sources":["../../../src/ai/targeting.ts"],"names":[],"mappings":"AAcA,OAAO,EAA2D,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC9G,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAI1D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,aAAa,IAAI,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE3E,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACnD,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CAC3D;AAeD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAWjG;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAC9C;AAED,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,oBAAoB,EAC3B,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,IAAI,CAqDN;AA+BD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,aAAa,GACnB,MAAM,GAAG,IAAI,CA4Bf;AAqED,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,oBAAoB,EAC3B,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,aAAa,EACpB,WAAW,GAAE,gBAAqB,GACjC,OAAO,CAuCT;AAID,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAazF;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAyBtE"}
@@ -0,0 +1,2 @@
1
+ export declare const BUTTON_ATTACK = 1;
2
+ //# sourceMappingURL=buttons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buttons.d.ts","sourceRoot":"","sources":["../../src/buttons.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,IAAI,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { GameStateSnapshot } from './index.js';
2
+ import type { EntitySystemSnapshot } from './entities/system.js';
3
+ export declare const FNV_OFFSET_BASIS = 2166136261;
4
+ export declare function hashBytes(hash: number, bytes: ArrayLike<number>): number;
5
+ export declare function hashNumber(hash: number, value: number): number;
6
+ export declare function hashString(hash: number, value: string): number;
7
+ export declare function hashGameState(state: GameStateSnapshot): number;
8
+ export declare function hashEntitySystem(snapshot: EntitySystemSnapshot): number;
9
+ import { EntitySystem } from './entities/system.js';
10
+ export declare function hashEntitySystemInstance(system: EntitySystem): number;
11
+ //# sourceMappingURL=checksum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checksum.d.ts","sourceRoot":"","sources":["../../src/checksum.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAyB,MAAM,sBAAsB,CAAC;AAGxF,eAAO,MAAM,gBAAgB,aAAa,CAAC;AAG3C,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAOxE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAM9D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAM9D;AAuBD,wBAAgB,aAAa,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAkC9D;AA8CD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,CAgBvE;AAMD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAErE"}
@@ -0,0 +1,39 @@
1
+ import { type Vec3 } from '@quake2ts/shared';
2
+ export declare enum ArmorType {
3
+ BODY = "body",
4
+ COMBAT = "combat",
5
+ JACKET = "jacket"
6
+ }
7
+ export interface ArmorInfo {
8
+ readonly baseCount: number;
9
+ readonly maxCount: number;
10
+ readonly normalProtection: number;
11
+ readonly energyProtection: number;
12
+ }
13
+ export declare const ARMOR_INFO: Record<ArmorType, ArmorInfo>;
14
+ export interface RegularArmorState {
15
+ readonly armorType: ArmorType | null;
16
+ armorCount: number;
17
+ }
18
+ export interface RegularArmorResult {
19
+ readonly saved: number;
20
+ readonly remainingArmor: number;
21
+ }
22
+ export declare function applyRegularArmor(damage: number, flags: number, state: RegularArmorState): RegularArmorResult;
23
+ export type PowerArmorType = 'screen' | 'shield';
24
+ export interface PowerArmorState {
25
+ readonly type: PowerArmorType | null;
26
+ cellCount: number;
27
+ readonly angles: Vec3;
28
+ readonly origin: Vec3;
29
+ readonly health: number;
30
+ }
31
+ export interface PowerArmorOptions {
32
+ readonly ctfMode?: boolean;
33
+ }
34
+ export interface PowerArmorResult {
35
+ readonly saved: number;
36
+ readonly remainingCells: number;
37
+ }
38
+ export declare function applyPowerArmor(damage: number, flags: number, hitPoint: Vec3, _hitNormal: Vec3, state: PowerArmorState, options?: PowerArmorOptions): PowerArmorResult;
39
+ //# sourceMappingURL=armor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"armor.d.ts","sourceRoot":"","sources":["../../../src/combat/armor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAG3D,oBAAY,SAAS;IACnB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,CAmBnD,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,iBAAiB,GACvB,kBAAkB,CAyBpB;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEjD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAGD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,IAAI,EACd,UAAU,EAAE,IAAI,EAChB,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE,iBAAsB,GAC9B,gBAAgB,CA8DlB"}
@@ -0,0 +1,60 @@
1
+ import { type Vec3 } from '@quake2ts/shared';
2
+ import { type PowerArmorState, type RegularArmorState } from './armor.js';
3
+ import { EntityDamageFlags } from './damageFlags.js';
4
+ import { DamageMod } from './damageMods.js';
5
+ import type { EntitySystem } from '../entities/system.js';
6
+ import { ServerCommand } from '@quake2ts/shared';
7
+ import { MulticastType } from '../imports.js';
8
+ import type { ScriptHookRegistry } from '../scripting/hooks.js';
9
+ export interface DamageOptions {
10
+ /** If true, check if attacker and target are on same team and apply rules. */
11
+ checkFriendlyFire?: boolean;
12
+ /** If true (and checkFriendlyFire is on), damage is 0 for teammates. */
13
+ noFriendlyFire?: boolean;
14
+ /** Hooks registry to trigger onDamage event */
15
+ hooks?: ScriptHookRegistry;
16
+ }
17
+ export interface DamageableCallbacks {
18
+ pain?: (self: Damageable, attacker: Damageable | null, knockback: number, take: number, mod: DamageMod) => void;
19
+ die?: (self: Damageable, inflictor: Damageable | null, attacker: Damageable | null, take: number, point: Vec3, mod: DamageMod) => void;
20
+ }
21
+ export interface Damageable extends DamageableCallbacks {
22
+ readonly id?: string;
23
+ takedamage: boolean;
24
+ health: number;
25
+ readonly maxHealth?: number;
26
+ readonly mass?: number;
27
+ velocity: Vec3;
28
+ readonly origin: Vec3;
29
+ readonly mins?: Vec3;
30
+ readonly maxs?: Vec3;
31
+ readonly flags?: EntityDamageFlags;
32
+ readonly regularArmor?: RegularArmorState;
33
+ readonly powerArmor?: PowerArmorState;
34
+ }
35
+ export { EntityDamageFlags };
36
+ export interface DamageApplicationResult {
37
+ readonly take: number;
38
+ readonly psave: number;
39
+ readonly asave: number;
40
+ readonly knocked: Vec3;
41
+ readonly killed: boolean;
42
+ readonly remainingArmor?: number;
43
+ readonly remainingCells?: number;
44
+ }
45
+ export interface DamageSource {
46
+ readonly origin: Vec3;
47
+ readonly mins?: Vec3;
48
+ readonly maxs?: Vec3;
49
+ }
50
+ export interface RadiusDamageHit {
51
+ readonly target: Damageable;
52
+ readonly result: DamageApplicationResult | null;
53
+ readonly appliedDamage: number;
54
+ }
55
+ export interface RadiusDamageOptions extends DamageOptions {
56
+ readonly canDamage?: (ent: Damageable, inflictor: DamageSource) => boolean;
57
+ }
58
+ export declare function T_Damage(targ: Damageable, inflictor: Damageable | null, attacker: Damageable | null, dir: Vec3, point: Vec3, normal: Vec3, damage: number, knockback: number, dflags: number, mod: DamageMod, time: number, multicast?: (origin: Vec3, type: MulticastType, event: ServerCommand, ...args: any[]) => void, options?: DamageOptions, sys?: EntitySystem): DamageApplicationResult | null;
59
+ export declare function T_RadiusDamage(entities: readonly Damageable[], inflictor: DamageSource, attacker: Damageable | null, damage: number, ignore: Damageable | null, radius: number, dflags: number, mod: DamageMod, time: number, options?: RadiusDamageOptions, multicast?: (origin: Vec3, type: MulticastType, event: ServerCommand, ...args: any[]) => void): RadiusDamageHit[];
60
+ //# sourceMappingURL=damage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"damage.d.ts","sourceRoot":"","sources":["../../../src/combat/damage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export declare enum DamageFlags {
2
+ NONE = 0,
3
+ RADIUS = 1,
4
+ NO_ARMOR = 2,
5
+ ENERGY = 4,
6
+ NO_KNOCKBACK = 8,
7
+ BULLET = 16,
8
+ NO_PROTECTION = 32,
9
+ DESTROY_ARMOR = 64,
10
+ NO_REG_ARMOR = 128,
11
+ NO_POWER_ARMOR = 256,
12
+ NO_INDICATOR = 512,
13
+ NO_DAMAGE_EFFECTS = 1024
14
+ }
15
+ export declare enum EntityDamageFlags {
16
+ GODMODE = 1,
17
+ IMMORTAL = 2,
18
+ NO_KNOCKBACK = 4,
19
+ NO_DAMAGE_EFFECTS = 8
20
+ }
21
+ export declare function hasAnyDamageFlag(flags: number, mask: DamageFlags): boolean;
22
+ //# sourceMappingURL=damageFlags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"damageFlags.d.ts","sourceRoot":"","sources":["../../../src/combat/damageFlags.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW;IACrB,IAAI,IAAI;IACR,MAAM,IAAa;IACnB,QAAQ,IAAa;IACrB,MAAM,IAAa;IACnB,YAAY,IAAa;IACzB,MAAM,KAAa;IACnB,aAAa,KAAa;IAC1B,aAAa,KAAa;IAC1B,YAAY,MAAa;IACzB,cAAc,MAAa;IAC3B,YAAY,MAAa;IACzB,iBAAiB,OAAa;CAC/B;AAED,oBAAY,iBAAiB;IAC3B,OAAO,IAAS;IAChB,QAAQ,IAAS;IACjB,YAAY,IAAS;IACrB,iBAAiB,IAAS;CAC3B;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAE1E"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Means-of-death identifiers mirrored from the Quake II rerelease `mod_id_t`
3
+ * enumeration in `g_local.h`. The numeric ordering is significant for
4
+ * obituary strings and damage filtering, so we retain the exact sequence from
5
+ * the C++ sources.
6
+ */
7
+ export declare enum DamageMod {
8
+ UNKNOWN = 0,
9
+ BLASTER = 1,
10
+ SHOTGUN = 2,
11
+ SSHOTGUN = 3,
12
+ MACHINEGUN = 4,
13
+ CHAINGUN = 5,
14
+ GRENADE = 6,
15
+ G_SPLASH = 7,
16
+ ROCKET = 8,
17
+ R_SPLASH = 9,
18
+ HYPERBLASTER = 10,
19
+ RAILGUN = 11,
20
+ BFG_LASER = 12,
21
+ BFG_BLAST = 13,
22
+ BFG_EFFECT = 14,
23
+ HANDGRENADE = 15,
24
+ HG_SPLASH = 16,
25
+ WATER = 17,
26
+ SLIME = 18,
27
+ LAVA = 19,
28
+ CRUSH = 20,
29
+ TELEFRAG = 21,
30
+ TELEFRAG_SPAWN = 22,
31
+ FALLING = 23,
32
+ SUICIDE = 24,
33
+ HELD_GRENADE = 25,
34
+ EXPLOSIVE = 26,
35
+ BARREL = 27,
36
+ BOMB = 28,
37
+ EXIT = 29,
38
+ SPLASH = 30,
39
+ TARGET_LASER = 31,
40
+ TRIGGER_HURT = 32,
41
+ HIT = 33,
42
+ TARGET_BLASTER = 34,
43
+ RIPPER = 35,
44
+ PHALANX = 36,
45
+ BRAINTENTACLE = 37,
46
+ BLASTOFF = 38,
47
+ GEKK = 39,
48
+ TRAP = 40,
49
+ CHAINFIST = 41,
50
+ DISINTEGRATOR = 42,
51
+ ETF_RIFLE = 43,
52
+ BLASTER2 = 44,
53
+ HEATBEAM = 45,
54
+ TESLA = 46,
55
+ PROX = 47,
56
+ NUKE = 48,
57
+ VENGEANCE_SPHERE = 49,
58
+ HUNTER_SPHERE = 50,
59
+ DEFENDER_SPHERE = 51,
60
+ TRACKER = 52,
61
+ DBALL_CRUSH = 53,
62
+ DOPPLE_EXPLODE = 54,
63
+ DOPPLE_VENGEANCE = 55,
64
+ DOPPLE_HUNTER = 56,
65
+ GRAPPLE = 57,
66
+ BLUEBLASTER = 58,
67
+ FRIENDLY_FIRE = 59
68
+ }
69
+ /**
70
+ * Ordered list of the MOD_* identifiers. Tests use this to verify we stay in
71
+ * lockstep with the rerelease values and to drive lookup helpers that need a
72
+ * stable iteration order.
73
+ */
74
+ export declare const ORDERED_DAMAGE_MODS: readonly DamageMod[];
75
+ /**
76
+ * Returns the stable string name (e.g. `MOD_RAILGUN`) used by the rerelease
77
+ * for obituary strings and logging.
78
+ */
79
+ export declare function damageModName(mod: DamageMod): string;
80
+ //# sourceMappingURL=damageMods.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"damageMods.d.ts","sourceRoot":"","sources":["../../../src/combat/damageMods.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,oBAAY,SAAS;IACnB,OAAO,IAAI;IACX,OAAO,IAAI;IACX,OAAO,IAAI;IACX,QAAQ,IAAI;IACZ,UAAU,IAAI;IACd,QAAQ,IAAI;IACZ,OAAO,IAAI;IACX,QAAQ,IAAI;IACZ,MAAM,IAAI;IACV,QAAQ,IAAI;IACZ,YAAY,KAAK;IACjB,OAAO,KAAK;IACZ,SAAS,KAAK;IACd,SAAS,KAAK;IACd,UAAU,KAAK;IACf,WAAW,KAAK;IAChB,SAAS,KAAK;IACd,KAAK,KAAK;IACV,KAAK,KAAK;IACV,IAAI,KAAK;IACT,KAAK,KAAK;IACV,QAAQ,KAAK;IACb,cAAc,KAAK;IACnB,OAAO,KAAK;IACZ,OAAO,KAAK;IACZ,YAAY,KAAK;IACjB,SAAS,KAAK;IACd,MAAM,KAAK;IACX,IAAI,KAAK;IACT,IAAI,KAAK;IACT,MAAM,KAAK;IACX,YAAY,KAAK;IACjB,YAAY,KAAK;IACjB,GAAG,KAAK;IACR,cAAc,KAAK;IACnB,MAAM,KAAK;IACX,OAAO,KAAK;IACZ,aAAa,KAAK;IAClB,QAAQ,KAAK;IACb,IAAI,KAAK;IACT,IAAI,KAAK;IACT,SAAS,KAAK;IACd,aAAa,KAAK;IAClB,SAAS,KAAK;IACd,QAAQ,KAAK;IACb,QAAQ,KAAK;IACb,KAAK,KAAK;IACV,IAAI,KAAK;IACT,IAAI,KAAK;IACT,gBAAgB,KAAK;IACrB,aAAa,KAAK;IAClB,eAAe,KAAK;IACpB,OAAO,KAAK;IACZ,WAAW,KAAK;IAChB,cAAc,KAAK;IACnB,gBAAgB,KAAK;IACrB,aAAa,KAAK;IAClB,OAAO,KAAK;IACZ,WAAW,KAAK;IAChB,aAAa,KAAK;CACnB;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,SAAS,EA6DnD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAEpD"}
@@ -0,0 +1,8 @@
1
+ export * from './armor.js';
2
+ export * from './damageFlags.js';
3
+ export * from './damage.js';
4
+ export * from './damageMods.js';
5
+ export * from './specialDamage.js';
6
+ export * from './weapon.js';
7
+ export * from './weapons/state.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/combat/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Entity } from '../entities/entity.js';
2
+ import { EntitySystem } from '../entities/system.js';
3
+ import { DamageMod } from './damageMods.js';
4
+ export declare const PRINT_LOW = 0;
5
+ export declare const PRINT_MEDIUM = 1;
6
+ export declare const PRINT_HIGH = 2;
7
+ export declare const PRINT_CHAT = 3;
8
+ export declare function getGender(ent: Entity): string;
9
+ export declare function ClientObituary(self: Entity, inflictor: Entity | null, attacker: Entity | null, mod: DamageMod, sys: EntitySystem): void;
10
+ //# sourceMappingURL=obituary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"obituary.d.ts","sourceRoot":"","sources":["../../../src/combat/obituary.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAY,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAQ5C,eAAO,MAAM,SAAS,IAAI,CAAC;AAC3B,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,UAAU,IAAI,CAAC;AAE5B,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO7C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,QAuKhI"}
@@ -0,0 +1,88 @@
1
+ import { WaterLevel, type Vec3 } from '@quake2ts/shared';
2
+ import { DamageMod } from './damageMods.js';
3
+ import { type Damageable, type DamageApplicationResult } from './damage.js';
4
+ import { MoveType, Solid } from '../entities/entity.js';
5
+ export declare enum EnvironmentalFlags {
6
+ IN_WATER = 1,
7
+ IMMUNE_LAVA = 2,
8
+ IMMUNE_SLIME = 4
9
+ }
10
+ export interface EnvironmentalDamageTarget extends Damageable {
11
+ waterlevel: WaterLevel;
12
+ watertype: number;
13
+ airFinished: number;
14
+ painDebounceTime: number;
15
+ damageDebounceTime: number;
16
+ environmentFlags?: EnvironmentalFlags;
17
+ }
18
+ export interface EnvironmentalDamageEvent {
19
+ readonly mod: DamageMod;
20
+ readonly amount: number;
21
+ readonly result: DamageApplicationResult | null;
22
+ }
23
+ export interface EnvironmentalDamageResult {
24
+ readonly events: EnvironmentalDamageEvent[];
25
+ readonly enteredWater: boolean;
26
+ readonly leftWater: boolean;
27
+ }
28
+ export declare function applyEnvironmentalDamage(target: EnvironmentalDamageTarget, nowMs: number): EnvironmentalDamageResult;
29
+ export type FallingEvent = 'footstep' | 'fallshort' | 'fall' | 'fallfar' | null;
30
+ export interface FallingDamageContext {
31
+ readonly impactDelta: number;
32
+ readonly waterLevel: WaterLevel;
33
+ readonly onLadder?: boolean;
34
+ readonly isDead?: boolean;
35
+ readonly isPlayerModel?: boolean;
36
+ readonly isNoClip?: boolean;
37
+ readonly grappleBlockingFallDamage?: boolean;
38
+ readonly clampFreeFall?: boolean;
39
+ readonly skipDamage?: boolean;
40
+ }
41
+ export interface FallingDamageResult {
42
+ readonly damage: number;
43
+ readonly event: FallingEvent;
44
+ readonly fallValue: number;
45
+ readonly adjustedDelta: number;
46
+ }
47
+ export declare function calculateFallingDamage(context: FallingDamageContext): FallingDamageResult;
48
+ export declare function applyFallingDamage(target: Damageable, context: FallingDamageContext): FallingDamageResult;
49
+ export interface CrushableTarget extends Damageable {
50
+ readonly isMonster?: boolean;
51
+ readonly isClient?: boolean;
52
+ }
53
+ export interface CrushDamageOptions {
54
+ readonly baseDamage?: number;
55
+ readonly nonLivingDamage?: number;
56
+ readonly gibDamage?: number;
57
+ }
58
+ export interface CrushDamageResult {
59
+ readonly amount: number;
60
+ readonly result: DamageApplicationResult | null;
61
+ }
62
+ export declare function applyCrushDamage(crusher: Damageable, target: CrushableTarget, options?: CrushDamageOptions): CrushDamageResult;
63
+ export interface TelefragEntity extends Damageable {
64
+ readonly movetype?: MoveType;
65
+ readonly solid?: Solid;
66
+ readonly mins?: Vec3;
67
+ readonly maxs?: Vec3;
68
+ }
69
+ export interface TelefragTarget extends Damageable {
70
+ readonly inUse?: boolean;
71
+ readonly movetype?: MoveType;
72
+ readonly solid?: Solid;
73
+ readonly mins?: Vec3;
74
+ readonly maxs?: Vec3;
75
+ }
76
+ export interface TelefragEvent {
77
+ readonly target: TelefragTarget;
78
+ readonly result: DamageApplicationResult | null;
79
+ }
80
+ export interface TelefragResult {
81
+ readonly events: TelefragEvent[];
82
+ readonly cleared: boolean;
83
+ }
84
+ export interface TelefragOptions {
85
+ readonly mod?: DamageMod;
86
+ }
87
+ export declare function killBox(teleporter: TelefragEntity, targets: readonly TelefragTarget[], options?: TelefragOptions): TelefragResult;
88
+ //# sourceMappingURL=specialDamage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specialDamage.d.ts","sourceRoot":"","sources":["../../../src/combat/specialDamage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export declare enum WeaponType {
2
+ BLASTER = 0,
3
+ SHOTGUN = 1,
4
+ SUPER_SHOTGUN = 2,
5
+ MACHINEGUN = 3,
6
+ CHAINGUN = 4,
7
+ GRENADE_LAUNCHER = 5,
8
+ ROCKET_LAUNCHER = 6,
9
+ HYPERBLASTER = 7,
10
+ RAILGUN = 8,
11
+ BFG10K = 9
12
+ }
13
+ export interface Weapon {
14
+ type: WeaponType;
15
+ name: string;
16
+ ammo: string | null;
17
+ damage: number;
18
+ fireRate: number;
19
+ spread: number;
20
+ projectileSpeed: number | null;
21
+ }
22
+ export declare const WEAPONS: Record<WeaponType, Weapon>;
23
+ //# sourceMappingURL=weapon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weapon.d.ts","sourceRoot":"","sources":["../../../src/combat/weapon.ts"],"names":[],"mappings":"AAOA,oBAAY,UAAU;IACpB,OAAO,IAAA;IACP,OAAO,IAAA;IACP,aAAa,IAAA;IACb,UAAU,IAAA;IACV,QAAQ,IAAA;IACR,gBAAgB,IAAA;IAChB,eAAe,IAAA;IACf,YAAY,IAAA;IACZ,OAAO,IAAA;IACP,MAAM,IAAA;CACP;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CA2F9C,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { Entity } from '../../entities/entity.js';
2
+ import { EntitySystem } from '../../entities/system.js';
3
+ /**
4
+ * Generic Weapon Animation Handler
5
+ * Source: p_weapon.cpp:878-950
6
+ */
7
+ export declare function Weapon_Generic(ent: Entity, FRAME_ACTIVATE_LAST: number, FRAME_FIRE_LAST: number, FRAME_IDLE_LAST: number, FRAME_DEACTIVATE_LAST: number, pause_frames: number[] | null, fire_frames: number[] | null, fire: (ent: Entity) => void, sys: EntitySystem): void;
8
+ /**
9
+ * Weapon_Repeating - For automatic weapons (Chaingun, Hyperblaster)
10
+ * Source: p_weapon.cpp:952-978
11
+ */
12
+ export declare function Weapon_Repeating(ent: Entity, FRAME_ACTIVATE_LAST: number, FRAME_FIRE_LAST: number, FRAME_IDLE_LAST: number, FRAME_DEACTIVATE_LAST: number, pause_frames: number[] | null, fire: (ent: Entity) => void, sys: EntitySystem): void;
13
+ /**
14
+ * Throw_Generic - For throwable weapons like Grenades
15
+ * Source: p_weapon.cpp:1013-1213
16
+ */
17
+ export declare function Throw_Generic(ent: Entity, FRAME_FIRE_LAST: number, FRAME_IDLE_LAST: number, FRAME_THROW_FIRST: number, FRAME_THROW_LAST: number, FRAME_PRIME_SOUND: number, FRAME_THROW_HOLD: number, FRAME_THROW_FIRE: number, fire: (ent: Entity, held: boolean) => void, sys: EntitySystem): void;
18
+ //# sourceMappingURL=animation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animation.d.ts","sourceRoot":"","sources":["../../../../src/combat/weapons/animation.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAOxD;;;GAGG;AACH,wBAAgB,cAAc,CAC1B,GAAG,EAAE,MAAM,EACX,mBAAmB,EAAE,MAAM,EAC3B,eAAe,EAAE,MAAM,EACvB,eAAe,EAAE,MAAM,EACvB,qBAAqB,EAAE,MAAM,EAC7B,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,EAC7B,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI,EAC5B,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EAC3B,GAAG,EAAE,YAAY,QA6GpB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC5B,GAAG,EAAE,MAAM,EACX,mBAAmB,EAAE,MAAM,EAC3B,eAAe,EAAE,MAAM,EACvB,eAAe,EAAE,MAAM,EACvB,qBAAqB,EAAE,MAAM,EAC7B,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,EAC7B,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EAC3B,GAAG,EAAE,YAAY,QAuDpB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CACzB,GAAG,EAAE,MAAM,EACX,eAAe,EAAE,MAAM,EACvB,eAAe,EAAE,MAAM,EACvB,iBAAiB,EAAE,MAAM,EACzB,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,EAAE,MAAM,EACzB,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,EAC1C,GAAG,EAAE,YAAY,QA4GpB"}
@@ -0,0 +1,4 @@
1
+ import { Entity } from '../../entities/entity.js';
2
+ import { EntitySystem } from '../../entities/system.js';
3
+ export declare function bfgThink(player: Entity, sys: EntitySystem): void;
4
+ //# sourceMappingURL=bfg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bfg.d.ts","sourceRoot":"","sources":["../../../../src/combat/weapons/bfg.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAaxD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,QAYzD"}
@@ -0,0 +1,4 @@
1
+ import { Entity } from '../../entities/entity.js';
2
+ import { EntitySystem } from '../../entities/system.js';
3
+ export declare function blasterThink(player: Entity, sys: EntitySystem): void;
4
+ //# sourceMappingURL=blaster.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blaster.d.ts","sourceRoot":"","sources":["../../../../src/combat/weapons/blaster.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAaxD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,QAY7D"}
@@ -0,0 +1,9 @@
1
+ import { Entity } from '../../entities/entity.js';
2
+ import { EntitySystem } from '../../entities/system.js';
3
+ import { GameExports } from '../../index.js';
4
+ import { WeaponState } from './state.js';
5
+ import { PlayerInventory } from '../../inventory/playerInventory.js';
6
+ import { Vec3 } from '@quake2ts/shared';
7
+ export declare function fireChainfist(game: GameExports, player: Entity, inventory: PlayerInventory, weaponState: WeaponState, start: Vec3, forward: Vec3): void;
8
+ export declare function Weapon_ChainFist(player: Entity, sys: EntitySystem): void;
9
+ //# sourceMappingURL=chainfist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chainfist.d.ts","sourceRoot":"","sources":["../../../../src/combat/weapons/chainfist.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EACqE,IAAI,EAE/E,MAAM,kBAAkB,CAAC;AAyJ1B,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,QAehJ;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,QA+DjE"}
@@ -0,0 +1,4 @@
1
+ import { Entity } from '../../entities/entity.js';
2
+ import { EntitySystem } from '../../entities/system.js';
3
+ export declare function chaingunThink(player: Entity, sys: EntitySystem): void;
4
+ //# sourceMappingURL=chaingun.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chaingun.d.ts","sourceRoot":"","sources":["../../../../src/combat/weapons/chaingun.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAkBxD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,QAsD9D"}
@@ -0,0 +1,10 @@
1
+ import { Entity } from '../../entities/entity.js';
2
+ export declare function applyKick(player: Entity, pitch: number, yaw?: number, kickOrigin?: number): void;
3
+ /**
4
+ * Calculates the animation time frame for weapons.
5
+ * Handles powerups like Haste (doubles speed) and Quad Fire.
6
+ *
7
+ * Source: p_weapon.cpp (implicit in logic)
8
+ */
9
+ export declare function Weapon_AnimationTime(ent: Entity): number;
10
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/combat/weapons/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAIlD,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,MAAU,EAAE,UAAU,GAAE,MAAU,QAK/F;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAiBxD"}
@@ -0,0 +1,29 @@
1
+ import { Entity } from '../../entities/entity.js';
2
+ import { GameExports } from '../../index.js';
3
+ import { WeaponState } from './state.js';
4
+ import { PlayerInventory, WeaponId } from '../../inventory/playerInventory.js';
5
+ declare const random: import("@quake2ts/shared").RandomGenerator;
6
+ export { random as firingRandom };
7
+ export declare const DEFAULT_BULLET_HSPREAD = 300;
8
+ export declare const DEFAULT_BULLET_VSPREAD = 500;
9
+ export declare const DEFAULT_SHOTGUN_HSPREAD = 500;
10
+ export declare const DEFAULT_SHOTGUN_VSPREAD = 500;
11
+ export declare const DEFAULT_SSHOTGUN_HSPREAD = 1000;
12
+ export declare const DEFAULT_SSHOTGUN_VSPREAD = 500;
13
+ export declare const DEFAULT_DEATHMATCH_SHOTGUN_COUNT = 12;
14
+ export declare const DEFAULT_SHOTGUN_COUNT = 12;
15
+ export declare const DEFAULT_SSHOTGUN_COUNT = 20;
16
+ export declare function fireHandGrenade(game: GameExports, player: Entity, inventory: PlayerInventory, weaponState: WeaponState): void;
17
+ export declare function fireShotgun(game: GameExports, player: Entity): void;
18
+ export declare function fireSuperShotgun(game: GameExports, player: Entity): void;
19
+ export declare function fireMachinegun(game: GameExports, player: Entity): void;
20
+ export declare function fireChaingun(game: GameExports, player: Entity): void;
21
+ export declare function fireRailgunShot(game: GameExports, player: Entity): void;
22
+ export declare function fireHyperBlaster(game: GameExports, player: Entity): void;
23
+ export declare function fireBlaster(game: GameExports, player: Entity): void;
24
+ export declare function fireRocket(game: GameExports, player: Entity): void;
25
+ export declare function fireGrenadeLauncher(game: GameExports, player: Entity, timer?: number): void;
26
+ export declare function fireHyperBlasterBeam(game: GameExports, player: Entity, weaponState: WeaponState): void;
27
+ export declare function fireBFG(game: GameExports, player: Entity): void;
28
+ export declare function fire(game: GameExports, player: Entity, weaponId: WeaponId): void;
29
+ //# sourceMappingURL=firing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firing.d.ts","sourceRoot":"","sources":["../../../../src/combat/weapons/firing.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAkB,WAAW,EAAmB,MAAM,YAAY,CAAC;AAE1E,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AA8B/E,QAAA,MAAM,MAAM,4CAA0B,CAAC;AACvC,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,CAAC;AAGlC,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAC7C,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAC5C,eAAO,MAAM,gCAAgC,KAAK,CAAC;AACnD,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAgNzC,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,QAoEtH;AAID,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,QAgB5D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,QAiCjE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,QAe/D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,QAkE7D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,QAiBhE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,QAgBjE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,QA2D5D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,QAwB3D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,QAepF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,QAsD/F;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,QA4CxD;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,QA+EzE"}