m_flash.h 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619
  1. // Copyright (c) ZeniMax Media Inc.
  2. // Licensed under the GNU General Public License 2.0.
  3. // m_flash.h
  4. // this file is included in both the game dll and quake2,
  5. // the game needs it to source shot locations, the client
  6. // needs it to position muzzle flashes
  7. constexpr vec3_t monster_flash_offset[] = {
  8. // flash 0 is not used
  9. { 0.0f, 0.0f, 0.0f },
  10. // MZ2_TANK_BLASTER_1 1
  11. { 28.7f, -18.5f, 28.7f },
  12. // MZ2_TANK_BLASTER_2 2
  13. { 24.6f, -21.5f, 30.1f },
  14. // MZ2_TANK_BLASTER_3 3
  15. { 19.8f, -23.9f, 32.1f },
  16. // MZ2_TANK_MACHINEGUN_1 4
  17. { 22.9f, -0.7f, 25.3f },
  18. // MZ2_TANK_MACHINEGUN_2 5
  19. { 22.2f, 6.2f, 22.3f },
  20. // MZ2_TANK_MACHINEGUN_3 6
  21. { 19.4f, 13.1f, 18.6f },
  22. // MZ2_TANK_MACHINEGUN_4 7
  23. { 19.4f, 18.8f, 18.6f },
  24. // MZ2_TANK_MACHINEGUN_5 8
  25. { 17.9f, 25.0f, 18.6f },
  26. // MZ2_TANK_MACHINEGUN_6 9
  27. { 14.1f, 30.5f, 20.6f },
  28. // MZ2_TANK_MACHINEGUN_7 10
  29. { 9.3f, 35.3f, 22.1f },
  30. // MZ2_TANK_MACHINEGUN_8 11
  31. { 4.7f, 38.4f, 22.1f },
  32. // MZ2_TANK_MACHINEGUN_9 12
  33. { -1.1f, 40.4f, 24.1f },
  34. // MZ2_TANK_MACHINEGUN_10 13
  35. { -6.5f, 41.2f, 24.1f },
  36. // MZ2_TANK_MACHINEGUN_11 14
  37. { 3.2f, 40.1f, 24.7f },
  38. // MZ2_TANK_MACHINEGUN_12 15
  39. { 11.7f, 36.7f, 26.0f },
  40. // MZ2_TANK_MACHINEGUN_13 16
  41. { 18.9f, 31.3f, 26.0f },
  42. // MZ2_TANK_MACHINEGUN_14 17
  43. { 24.4f, 24.4f, 26.4f },
  44. // MZ2_TANK_MACHINEGUN_15 18
  45. { 27.1f, 17.1f, 27.2f },
  46. // MZ2_TANK_MACHINEGUN_16 19
  47. { 28.5f, 9.1f, 28.0f },
  48. // MZ2_TANK_MACHINEGUN_17 20
  49. { 27.1f, 2.2f, 28.0f },
  50. // MZ2_TANK_MACHINEGUN_18 21
  51. { 24.9f, -2.8f, 28.0f },
  52. // MZ2_TANK_MACHINEGUN_19 22
  53. { 21.6f, -7.0f, 26.4f },
  54. // MZ2_TANK_ROCKET_1 23
  55. { 6.2f, 29.1f, 49.1f },
  56. // MZ2_TANK_ROCKET_2 24
  57. { 6.9f, 23.8f, 49.1f },
  58. // MZ2_TANK_ROCKET_3 25
  59. { 8.3f, 17.8f, 49.5f },
  60. // MZ2_INFANTRY_MACHINEGUN_1 26
  61. { 26.6f, 7.1f, 13.1f },
  62. // MZ2_INFANTRY_MACHINEGUN_2 27
  63. { 18.2f, 7.5f, 15.4f },
  64. // MZ2_INFANTRY_MACHINEGUN_3 28
  65. { 17.2f, 10.3f, 17.9f },
  66. // MZ2_INFANTRY_MACHINEGUN_4 29
  67. { 17.0f, 12.8f, 20.1f },
  68. // MZ2_INFANTRY_MACHINEGUN_5 30
  69. { 15.1f, 14.1f, 21.8f },
  70. // MZ2_INFANTRY_MACHINEGUN_6 31
  71. { 11.8f, 17.2f, 23.1f },
  72. // MZ2_INFANTRY_MACHINEGUN_7 32
  73. { 11.4f, 20.2f, 21.0f },
  74. // MZ2_INFANTRY_MACHINEGUN_8 33
  75. { 9.0f, 23.0f, 18.9f },
  76. // MZ2_INFANTRY_MACHINEGUN_9 34
  77. { 13.9f, 18.6f, 17.7f },
  78. // MZ2_INFANTRY_MACHINEGUN_10 35
  79. { 15.4f, 15.6f, 15.8f },
  80. // MZ2_INFANTRY_MACHINEGUN_11 36
  81. { 10.2f, 15.2f, 25.1f },
  82. // MZ2_INFANTRY_MACHINEGUN_12 37
  83. { -1.9f, 15.1f, 28.2f },
  84. // MZ2_INFANTRY_MACHINEGUN_13 38
  85. { -12.4f, 13.0f, 20.2f },
  86. // MZ2_SOLDIER_BLASTER_1 39
  87. { 10.6f * 1.2f, 7.7f * 1.2f, 7.8f * 1.2f },
  88. // MZ2_SOLDIER_BLASTER_2 40
  89. { 25.1f * 1.2f, 3.6f * 1.2f, 19.0f * 1.2f },
  90. // MZ2_SOLDIER_SHOTGUN_1 41
  91. { 10.6f * 1.2f, 7.7f * 1.2f, 7.8f * 1.2f },
  92. // MZ2_SOLDIER_SHOTGUN_2 42
  93. { 25.1f * 1.2f, 3.6f * 1.2f, 19.0f * 1.2f },
  94. // MZ2_SOLDIER_MACHINEGUN_1 43
  95. { 10.6f * 1.2f, 7.7f * 1.2f, 7.8f * 1.2f },
  96. // MZ2_SOLDIER_MACHINEGUN_2 44
  97. { 25.1f * 1.2f, 3.6f * 1.2f, 19.0f * 1.2f },
  98. // MZ2_GUNNER_MACHINEGUN_1 45
  99. { 30.1f * 1.15f, 3.9f * 1.15f, 19.6f * 1.15f },
  100. // MZ2_GUNNER_MACHINEGUN_2 46
  101. { 29.1f * 1.15f, 2.5f * 1.15f, 20.7f * 1.15f },
  102. // MZ2_GUNNER_MACHINEGUN_3 47
  103. { 28.2f * 1.15f, 2.5f * 1.15f, 22.2f * 1.15f },
  104. // MZ2_GUNNER_MACHINEGUN_4 48
  105. { 28.2f * 1.15f, 3.6f * 1.15f, 22.0f * 1.15f },
  106. // MZ2_GUNNER_MACHINEGUN_5 49
  107. { 26.9f * 1.15f, 2.0f * 1.15f, 23.4f * 1.15f },
  108. // MZ2_GUNNER_MACHINEGUN_6 50
  109. { 26.5f * 1.15f, 0.6f * 1.15f, 20.8f * 1.15f },
  110. // MZ2_GUNNER_MACHINEGUN_7 51
  111. { 26.9f * 1.15f, 0.5f * 1.15f, 21.5f * 1.15f },
  112. // MZ2_GUNNER_MACHINEGUN_8 52
  113. { 29.0f * 1.15f, 2.4f * 1.15f, 19.5f * 1.15f },
  114. // MZ2_GUNNER_GRENADE_1 53
  115. { 4.6f * 1.15f, -16.8f * 1.15f, 7.3f * 1.15f },
  116. // MZ2_GUNNER_GRENADE_2 54
  117. { 4.6f * 1.15f, -16.8f * 1.15f, 7.3f * 1.15f },
  118. // MZ2_GUNNER_GRENADE_3 55
  119. { 4.6f * 1.15f, -16.8f * 1.15f, 7.3f * 1.15f },
  120. // MZ2_GUNNER_GRENADE_4 56
  121. { 4.6f * 1.15f, -16.8f * 1.15f, 7.3f * 1.15f },
  122. // MZ2_CHICK_ROCKET_1 57
  123. // -24.8f, -9.0f, 39.0f,
  124. { 24.8f, -9.0f, 39.0f }, // PGM - this was incorrect in Q2
  125. // MZ2_FLYER_BLASTER_1 58
  126. { 14.1f, 13.4f, -7.0f },
  127. // MZ2_FLYER_BLASTER_2 59
  128. { 14.1f, -13.4f, -7.0f },
  129. // MZ2_MEDIC_BLASTER_1 60
  130. { 44.0f, 3.0f, 14.4f },
  131. // MZ2_GLADIATOR_RAILGUN_1 61
  132. { 30.0f, 18.0f, 28.0f },
  133. // MZ2_HOVER_BLASTER_1 62
  134. { 1.7f, 7.0f, 11.3f },
  135. // MZ2_ACTOR_MACHINEGUN_1 63
  136. { 18.4f, 7.4f, 9.6f },
  137. // MZ2_SUPERTANK_MACHINEGUN_1 64
  138. { 30.0f, 39.0f, 85.5f },
  139. // MZ2_SUPERTANK_MACHINEGUN_2 65
  140. { 30.0f, 39.0f, 85.5f },
  141. // MZ2_SUPERTANK_MACHINEGUN_3 66
  142. { 30.0f, 39.0f, 85.5f },
  143. // MZ2_SUPERTANK_MACHINEGUN_4 67
  144. { 30.0f, 39.0f, 85.5f },
  145. // MZ2_SUPERTANK_MACHINEGUN_5 68
  146. { 30.0f, 39.0f, 85.5f },
  147. // MZ2_SUPERTANK_MACHINEGUN_6 69
  148. { 30.0f, 39.0f, 85.5f },
  149. // MZ2_SUPERTANK_ROCKET_1 70
  150. { 16.0f, -22.5f, 108.7f },
  151. // MZ2_SUPERTANK_ROCKET_2 71
  152. { 16.0f, -33.4f, 106.7f },
  153. // MZ2_SUPERTANK_ROCKET_3 72
  154. { 16.0f, -42.8f, 104.7f },
  155. // --- Start Xian Stuff ---
  156. // MZ2_BOSS2_MACHINEGUN_L1 73
  157. { 32.f, -40.f, 70.f },
  158. // MZ2_BOSS2_MACHINEGUN_L2 74
  159. { 32.f, -40.f, 70.f },
  160. // MZ2_BOSS2_MACHINEGUN_L3 75
  161. { 32.f, -40.f, 70.f },
  162. // MZ2_BOSS2_MACHINEGUN_L4 76
  163. { 32.f, -40.f, 70.f },
  164. // MZ2_BOSS2_MACHINEGUN_L5 77
  165. { 32.f, -40.f, 70.f },
  166. // --- End Xian Stuff
  167. // MZ2_BOSS2_ROCKET_1 78
  168. { 22.0f, 16.0f, 10.0f },
  169. // MZ2_BOSS2_ROCKET_2 79
  170. { 22.0f, 8.0f, 10.0f },
  171. // MZ2_BOSS2_ROCKET_3 80
  172. { 22.0f, -8.0f, 10.0f },
  173. // MZ2_BOSS2_ROCKET_4 81
  174. { 22.0f, -16.0f, 10.0f },
  175. // MZ2_FLOAT_BLASTER_1 82
  176. { 32.5f, -0.8f, 10.f },
  177. // MZ2_SOLDIER_BLASTER_3 83
  178. { 20.8f * 1.2f, 10.1f * 1.2f, -2.7f * 1.2f },
  179. // MZ2_SOLDIER_SHOTGUN_3 84
  180. { 20.8f * 1.2f, 10.1f * 1.2f, -2.7f * 1.2f },
  181. // MZ2_SOLDIER_MACHINEGUN_3 85
  182. { 20.8f * 1.2f, 10.1f * 1.2f, -2.7f * 1.2f },
  183. // MZ2_SOLDIER_BLASTER_4 86
  184. { 7.6f * 1.2f, 9.3f * 1.2f, 0.8f * 1.2f },
  185. // MZ2_SOLDIER_SHOTGUN_4 87
  186. { 7.6f * 1.2f, 9.3f * 1.2f, 0.8f * 1.2f },
  187. // MZ2_SOLDIER_MACHINEGUN_4 88
  188. { 7.6f * 1.2f, 9.3f * 1.2f, 0.8f * 1.2f },
  189. // MZ2_SOLDIER_BLASTER_5 89
  190. { 30.5f * 1.2f, 9.9f * 1.2f, -18.7f * 1.2f },
  191. // MZ2_SOLDIER_SHOTGUN_5 90
  192. { 30.5f * 1.2f, 9.9f * 1.2f, -18.7f * 1.2f },
  193. // MZ2_SOLDIER_MACHINEGUN_5 91
  194. { 30.5f * 1.2f, 9.9f * 1.2f, -18.7f * 1.2f },
  195. // MZ2_SOLDIER_BLASTER_6 92
  196. { 27.6f * 1.2f, 3.4f * 1.2f, -10.4f * 1.2f },
  197. // MZ2_SOLDIER_SHOTGUN_6 93
  198. { 27.6f * 1.2f, 3.4f * 1.2f, -10.4f * 1.2f },
  199. // MZ2_SOLDIER_MACHINEGUN_6 94
  200. { 27.6f * 1.2f, 3.4f * 1.2f, -10.4f * 1.2f },
  201. // MZ2_SOLDIER_BLASTER_7 95
  202. { 28.9f * 1.2f, 4.6f * 1.2f, -8.1f * 1.2f },
  203. // MZ2_SOLDIER_SHOTGUN_7 96
  204. { 28.9f * 1.2f, 4.6f * 1.2f, -8.1f * 1.2f },
  205. // MZ2_SOLDIER_MACHINEGUN_7 97
  206. { 28.9f * 1.2f, 4.6f * 1.2f, -8.1f * 1.2f },
  207. // MZ2_SOLDIER_BLASTER_8 98
  208. { 31.5f * 1.2f, 9.6f * 1.2f, 10.1f * 1.2f },
  209. // MZ2_SOLDIER_SHOTGUN_8 99
  210. { 34.5f * 1.2f, 9.6f * 1.2f, 6.1f * 1.2f },
  211. // MZ2_SOLDIER_MACHINEGUN_8 100
  212. { 34.5f * 1.2f, 9.6f * 1.2f, 6.1f * 1.2f },
  213. // --- Xian shit below ---
  214. // MZ2_MAKRON_BFG 101
  215. { 17.f, -19.5f, 62.9f },
  216. // MZ2_MAKRON_BLASTER_1 102
  217. { -3.6f, -24.1f, 59.5f },
  218. // MZ2_MAKRON_BLASTER_2 103
  219. { -1.6f, -19.3f, 59.5f },
  220. // MZ2_MAKRON_BLASTER_3 104
  221. { -0.1f, -14.4f, 59.5f },
  222. // MZ2_MAKRON_BLASTER_4 105
  223. { 2.0f, -7.6f, 59.5f },
  224. // MZ2_MAKRON_BLASTER_5 106
  225. { 3.4f, 1.3f, 59.5f },
  226. // MZ2_MAKRON_BLASTER_6 107
  227. { 3.7f, 11.1f, 59.5f },
  228. // MZ2_MAKRON_BLASTER_7 108
  229. { -0.3f, 22.3f, 59.5f },
  230. // MZ2_MAKRON_BLASTER_8 109
  231. { -6.f, 33.f, 59.5f },
  232. // MZ2_MAKRON_BLASTER_9 110
  233. { -9.3f, 36.4f, 59.5f },
  234. // MZ2_MAKRON_BLASTER_10 111
  235. { -7.f, 35.f, 59.5f },
  236. // MZ2_MAKRON_BLASTER_11 112
  237. { -2.1f, 29.f, 59.5f },
  238. // MZ2_MAKRON_BLASTER_12 113
  239. { 3.9f, 17.3f, 59.5f },
  240. // MZ2_MAKRON_BLASTER_13 114
  241. { 6.1f, 5.8f, 59.5f },
  242. // MZ2_MAKRON_BLASTER_14 115
  243. { 5.9f, -4.4f, 59.5f },
  244. // MZ2_MAKRON_BLASTER_15 116
  245. { 4.2f, -14.1f, 59.5f },
  246. // MZ2_MAKRON_BLASTER_16 117
  247. { 2.4f, -18.8f, 59.5f },
  248. // MZ2_MAKRON_BLASTER_17 118
  249. { -1.8f, -25.5f, 59.5f },
  250. // MZ2_MAKRON_RAILGUN_1 119
  251. { 18.1f, 7.8f, 74.4f },
  252. // MZ2_JORG_MACHINEGUN_L1 120
  253. { 78.5f, -47.1f, 96.f },
  254. // MZ2_JORG_MACHINEGUN_L2 121
  255. { 78.5f, -47.1f, 96.f },
  256. // MZ2_JORG_MACHINEGUN_L3 122
  257. { 78.5f, -47.1f, 96.f },
  258. // MZ2_JORG_MACHINEGUN_L4 123
  259. { 78.5f, -47.1f, 96.f },
  260. // MZ2_JORG_MACHINEGUN_L5 124
  261. { 78.5f, -47.1f, 96.f },
  262. // MZ2_JORG_MACHINEGUN_L6 125
  263. { 78.5f, -47.1f, 96.f },
  264. // MZ2_JORG_MACHINEGUN_R1 126
  265. { 78.5f, 46.7f, 96.f },
  266. // MZ2_JORG_MACHINEGUN_R2 127
  267. { 78.5f, 46.7f, 96.f },
  268. // MZ2_JORG_MACHINEGUN_R3 128
  269. { 78.5f, 46.7f, 96.f },
  270. // MZ2_JORG_MACHINEGUN_R4 129
  271. { 78.5f, 46.7f, 96.f },
  272. // MZ2_JORG_MACHINEGUN_R5 130
  273. { 78.5f, 46.7f, 96.f },
  274. // MZ2_JORG_MACHINEGUN_R6 131
  275. { 78.5f, 46.7f, 96.f },
  276. // MZ2_JORG_BFG_1 132
  277. { 6.3f, -9.f, 111.2f },
  278. // MZ2_BOSS2_MACHINEGUN_R1 73
  279. { 32.f, 40.f, 70.f },
  280. // MZ2_BOSS2_MACHINEGUN_R2 74
  281. { 32.f, 40.f, 70.f },
  282. // MZ2_BOSS2_MACHINEGUN_R3 75
  283. { 32.f, 40.f, 70.f },
  284. // MZ2_BOSS2_MACHINEGUN_R4 76
  285. { 32.f, 40.f, 70.f },
  286. // MZ2_BOSS2_MACHINEGUN_R5 77
  287. { 32.f, 40.f, 70.f },
  288. // --- End Xian Shit ---
  289. // ROGUE
  290. // note that the above really ends at 137
  291. // carrier machineguns
  292. // MZ2_CARRIER_MACHINEGUN_L1
  293. { 56.f, -32.f, 32.f },
  294. // MZ2_CARRIER_MACHINEGUN_R1
  295. { 56.f, 32.f, 32.f },
  296. // MZ2_CARRIER_GRENADE
  297. { 42.f, 24.f, 50.f },
  298. // MZ2_TURRET_MACHINEGUN 141
  299. { 20.f, 0.f, 0.f },
  300. // MZ2_TURRET_ROCKET 142
  301. { 20.f, 0.f, 0.f },
  302. // MZ2_TURRET_BLASTER 143
  303. { 20.f, 0.f, 0.f },
  304. // MZ2_STALKER_BLASTER 144
  305. { 24.f, 0.f, 6.f },
  306. // MZ2_DAEDALUS_BLASTER 145
  307. { 1.7f, 7.0f, 11.3f },
  308. // MZ2_MEDIC_BLASTER_2 146
  309. { 44.0f, 3.0f, 14.4f },
  310. // MZ2_CARRIER_RAILGUN 147
  311. { 32.f, 0.f, 6.f },
  312. // MZ2_WIDOW_DISRUPTOR 148
  313. { 64.72f, 14.50f, 88.81f },
  314. // MZ2_WIDOW_BLASTER 149
  315. { 56.f, 32.f, 32.f },
  316. // MZ2_WIDOW_RAIL 150
  317. { 62.f, -20.f, 84.f },
  318. // MZ2_WIDOW_PLASMABEAM 151 // PMM - not used!
  319. { 32.f, 0.f, 6.f },
  320. // MZ2_CARRIER_MACHINEGUN_L2 152
  321. { 61.f, -32.f, 12.f },
  322. // MZ2_CARRIER_MACHINEGUN_R2 153
  323. { 61.f, 32.f, 12.f },
  324. // MZ2_WIDOW_RAIL_LEFT 154
  325. { 17.f, -62.f, 91.f },
  326. // MZ2_WIDOW_RAIL_RIGHT 155
  327. { 68.f, 12.f, 86.f },
  328. // MZ2_WIDOW_BLASTER_SWEEP1 156 pmm - the sweeps need to be in sequential order
  329. { 47.5f, 56.f, 89.f },
  330. // MZ2_WIDOW_BLASTER_SWEEP2 157
  331. { 54.f, 52.f, 91.f },
  332. // MZ2_WIDOW_BLASTER_SWEEP3 158
  333. { 58.f, 40.f, 91.f },
  334. // MZ2_WIDOW_BLASTER_SWEEP4 159
  335. { 68.f, 30.f, 88.f },
  336. // MZ2_WIDOW_BLASTER_SWEEP5 160
  337. { 74.f, 20.f, 88.f },
  338. // MZ2_WIDOW_BLASTER_SWEEP6 161
  339. { 73.f, 11.f, 87.f },
  340. // MZ2_WIDOW_BLASTER_SWEEP7 162
  341. { 73.f, 3.f, 87.f },
  342. // MZ2_WIDOW_BLASTER_SWEEP8 163
  343. { 70.f, -12.f, 87.f },
  344. // MZ2_WIDOW_BLASTER_SWEEP9 164
  345. { 67.f, -20.f, 90.f },
  346. // MZ2_WIDOW_BLASTER_100 165
  347. { -20.f, 76.f, 90.f },
  348. // MZ2_WIDOW_BLASTER_90 166
  349. { -8.f, 74.f, 90.f },
  350. // MZ2_WIDOW_BLASTER_80 167
  351. { 0.f, 72.f, 90.f },
  352. // MZ2_WIDOW_BLASTER_70 168 d06
  353. { 10.f, 71.f, 89.f },
  354. // MZ2_WIDOW_BLASTER_60 169 d07
  355. { 23.f, 70.f, 87.f },
  356. // MZ2_WIDOW_BLASTER_50 170 d08
  357. { 32.f, 64.f, 85.f },
  358. // MZ2_WIDOW_BLASTER_40 171
  359. { 40.f, 58.f, 84.f },
  360. // MZ2_WIDOW_BLASTER_30 172 d10
  361. { 48.f, 50.f, 83.f },
  362. // MZ2_WIDOW_BLASTER_20 173
  363. { 54.f, 42.f, 82.f },
  364. // MZ2_WIDOW_BLASTER_10 174 d12
  365. { 56.f, 34.f, 82.f },
  366. // MZ2_WIDOW_BLASTER_0 175
  367. { 58.f, 26.f, 82.f },
  368. // MZ2_WIDOW_BLASTER_10L 176 d14
  369. { 60.f, 16.f, 82.f },
  370. // MZ2_WIDOW_BLASTER_20L 177
  371. { 59.f, 6.f, 81.f },
  372. // MZ2_WIDOW_BLASTER_30L 178 d16
  373. { 58.f, -2.f, 80.f },
  374. // MZ2_WIDOW_BLASTER_40L 179
  375. { 57.f, -10.f, 79.f },
  376. // MZ2_WIDOW_BLASTER_50L 180 d18
  377. { 54.f, -18.f, 78.f },
  378. // MZ2_WIDOW_BLASTER_60L 181
  379. { 42.f, -32.f, 80.f },
  380. // MZ2_WIDOW_BLASTER_70L 182 d20
  381. { 36.f, -40.f, 78.f },
  382. // MZ2_WIDOW_RUN_1 183
  383. { 68.4f, 10.88f, 82.08f },
  384. // MZ2_WIDOW_RUN_2 184
  385. { 68.51f, 8.64f, 85.14f },
  386. // MZ2_WIDOW_RUN_3 185
  387. { 68.66f, 6.38f, 88.78f },
  388. // MZ2_WIDOW_RUN_4 186
  389. { 68.73f, 5.1f, 84.47f },
  390. // MZ2_WIDOW_RUN_5 187
  391. { 68.82f, 4.79f, 80.52f },
  392. // MZ2_WIDOW_RUN_6 188
  393. { 68.77f, 6.11f, 85.37f },
  394. // MZ2_WIDOW_RUN_7 189
  395. { 68.67f, 7.99f, 90.24f },
  396. // MZ2_WIDOW_RUN_8 190
  397. { 68.55f, 9.54f, 87.36f },
  398. // MZ2_CARRIER_ROCKET_1 191
  399. { 0.f, 0.f, -5.f },
  400. // MZ2_CARRIER_ROCKET_2 192
  401. { 0.f, 0.f, -5.f },
  402. // MZ2_CARRIER_ROCKET_3 193
  403. { 0.f, 0.f, -5.f },
  404. // MZ2_CARRIER_ROCKET_4 194
  405. { 0.f, 0.f, -5.f },
  406. // MZ2_WIDOW2_BEAMER_1 195
  407. // 72.13f, -17.63f, 93.77f,
  408. { 69.00f, -17.63f, 93.77f },
  409. // MZ2_WIDOW2_BEAMER_2 196
  410. // 71.46f, -17.08f, 89.82f,
  411. { 69.00f, -17.08f, 89.82f },
  412. // MZ2_WIDOW2_BEAMER_3 197
  413. // 71.47f, -18.40f, 90.70f,
  414. { 69.00f, -18.40f, 90.70f },
  415. // MZ2_WIDOW2_BEAMER_4 198
  416. // 71.96f, -18.34f, 94.32f,
  417. { 69.00f, -18.34f, 94.32f },
  418. // MZ2_WIDOW2_BEAMER_5 199
  419. // 72.25f, -18.30f, 97.98f,
  420. { 69.00f, -18.30f, 97.98f },
  421. // MZ2_WIDOW2_BEAM_SWEEP_1 200
  422. { 45.04f, -59.02f, 92.24f },
  423. // MZ2_WIDOW2_BEAM_SWEEP_2 201
  424. { 50.68f, -54.70f, 91.96f },
  425. // MZ2_WIDOW2_BEAM_SWEEP_3 202
  426. { 56.57f, -47.72f, 91.65f },
  427. // MZ2_WIDOW2_BEAM_SWEEP_4 203
  428. { 61.75f, -38.75f, 91.38f },
  429. // MZ2_WIDOW2_BEAM_SWEEP_5 204
  430. { 65.55f, -28.76f, 91.24f },
  431. // MZ2_WIDOW2_BEAM_SWEEP_6 205
  432. { 67.79f, -18.90f, 91.22f },
  433. // MZ2_WIDOW2_BEAM_SWEEP_7 206
  434. { 68.60f, -9.52f, 91.23f },
  435. // MZ2_WIDOW2_BEAM_SWEEP_8 207
  436. { 68.08f, 0.18f, 91.32f },
  437. // MZ2_WIDOW2_BEAM_SWEEP_9 208
  438. { 66.14f, 9.79f, 91.44f },
  439. // MZ2_WIDOW2_BEAM_SWEEP_10 209
  440. { 62.77f, 18.91f, 91.65f },
  441. // MZ2_WIDOW2_BEAM_SWEEP_11 210
  442. { 58.29f, 27.11f, 92.00f },
  443. // MZ2_SOLDIER_RIPPER_1 211
  444. { 10.6f * 1.2f, 7.7f * 1.2f, 7.8f * 1.2f },
  445. // MZ2_SOLDIER_RIPPER_2 212
  446. { 25.1f * 1.2f, 3.6f * 1.2f, 19.0f * 1.2f },
  447. // MZ2_SOLDIER_RIPPER_3 213
  448. { 20.8f * 1.2f, 10.1f * 1.2f, -2.7f * 1.2f },
  449. // MZ2_SOLDIER_RIPPER_4 214
  450. { 7.6f * 1.2f, 9.3f * 1.2f, 0.8f * 1.2f },
  451. // MZ2_SOLDIER_RIPPER_5 215
  452. { 30.5f * 1.2f, 9.9f * 1.2f, -18.7f * 1.2f },
  453. // MZ2_SOLDIER_RIPPER_6 216
  454. { 27.6f * 1.2f, 3.4f * 1.2f, -10.4f * 1.2f },
  455. // MZ2_SOLDIER_RIPPER_7 217
  456. { 28.9f * 1.2f, 4.6f * 1.2f, -8.1f * 1.2f },
  457. // MZ2_SOLDIER_RIPPER_8 218
  458. { 31.5f * 1.2f, 9.6f * 1.2f, 10.1f * 1.2f },
  459. // MZ2_SOLDIER_HYPERGUN_1 219
  460. { 10.6f * 1.2f, 7.7f * 1.2f, 7.8f * 1.2f },
  461. // MZ2_SOLDIER_HYPERGUN_2 220
  462. { 25.1f * 1.2f, 3.6f * 1.2f, 19.0f * 1.2f },
  463. // MZ2_SOLDIER_HYPERGUN_3 221
  464. { 20.8f * 1.2f, 10.1f * 1.2f, -2.7f * 1.2f },
  465. // MZ2_SOLDIER_HYPERGUN_4 222
  466. { 7.6f * 1.2f, 9.3f * 1.2f, 0.8f * 1.2f },
  467. // MZ2_SOLDIER_HYPERGUN_5 223
  468. { 30.5f * 1.2f, 9.9f * 1.2f, -18.7f * 1.2f },
  469. // MZ2_SOLDIER_HYPERGUN_6 224
  470. { 27.6f * 1.2f, 3.4f * 1.2f, -10.4f * 1.2f },
  471. // MZ2_SOLDIER_HYPERGUN_7 225
  472. { 28.9f * 1.2f, 4.6f * 1.2f, -8.1f * 1.2f },
  473. // MZ2_SOLDIER_HYPERGUN_8 226
  474. { 31.5f * 1.2f, 9.6f * 1.2f, 10.1f * 1.2f },
  475. // MZ2_GUARDIAN_BLASTER 227
  476. { 88.f, 50.f, 60.f },
  477. // MZ2_ARACHNID_RAIL1 228
  478. { 58.f, 20.f, 17.2f },
  479. // MZ2_ARACHNID_RAIL2 229
  480. { 64.f, -22.f, 24.f },
  481. // MZ2_ARACHNID_RAIL_UP1 230
  482. { 37.f, 13.f, 72.f },
  483. // MZ2_ARACHNID_RAIL_UP2 231
  484. { 58.f, -25.f, 72.f },
  485. // MZ2_INFANTRY_MACHINEGUN_14 232
  486. { 34.f, 11.f, 13.f },
  487. // MZ2_INFANTRY_MACHINEGUN_15 233
  488. { 28.f, 13.f, 10.5f },
  489. // MZ2_INFANTRY_MACHINEGUN_16 234
  490. { 29.f, 13.f, 8.5f },
  491. // MZ2_INFANTRY_MACHINEGUN_17 235
  492. { 30.f, 12.5f, 12.f },
  493. // MZ2_INFANTRY_MACHINEGUN_18 236
  494. { 29.f, 12.5f, 14.7f },
  495. // MZ2_INFANTRY_MACHINEGUN_19 237
  496. { 30.f, 6.5f, 12.f },
  497. // MZ2_INFANTRY_MACHINEGUN_20 238
  498. { 29.f, 1.5f, 8.5f },
  499. // MZ2_INFANTRY_MACHINEGUN_21 239
  500. { 29.f, 6.0f, 10.f },
  501. // MZ2_GUNCMDR_CHAINGUN_1 240
  502. { 25.0f, 11.f, 21.f },
  503. // MZ2_GUNCMDR_CHAINGUN_2 241
  504. { 26.5f, 5.f, 21.f },
  505. // MZ2_GUNCMDR_GRENADE_MORTAR_1 242
  506. { 27.f, 6.5f, 4.0f },
  507. // MZ2_GUNCMDR_GRENADE_MORTAR_2 243
  508. { 28.f, 4.f, 4.0f },
  509. // MZ2_GUNCMDR_GRENADE_MORTAR_3 244
  510. { 27.f, 1.7f, 4.0f },
  511. // MZ2_GUNCMDR_GRENADE_FRONT_1 245
  512. { 21.7f, -1.5f, 22.5f },
  513. // MZ2_GUNCMDR_GRENADE_FRONT_2 246
  514. { 22.f, 0.f, 20.5f },
  515. // MZ2_GUNCMDR_GRENADE_FRONT_3 247
  516. { 22.5f, 3.7f, 20.5f },
  517. // MZ2_GUNCMDR_GRENADE_CROUCH_1 248
  518. { 8.0f, 40.0f, 18.0f },
  519. // MZ2_GUNCMDR_GRENADE_CROUCH_2 249
  520. { 29.0f, 16.0f, 19.0f },
  521. // MZ2_GUNCMDR_GRENADE_CROUCH_3 250
  522. { 4.7f, -30.0f, 20.0f },
  523. // MZ2_SOLDIER_BLASTER_9 251
  524. { 36.33f, 12.24f, -17.39f },
  525. // MZ2_SOLDIER_SHOTGUN_9 252
  526. { 36.33f, 12.24f, -17.39f },
  527. // MZ2_SOLDIER_MACHINEGUN_9 253
  528. { 36.33f, 12.24f, -17.39f },
  529. // MZ2_SOLDIER_RIPPER_9 254
  530. { 36.33f, 12.24f, -17.39f },
  531. // MZ2_SOLDIER_HYPERGUN_9 255
  532. { 36.33f, 12.24f, -17.39f },
  533. // MZ2_GUNNER_GRENADE2_1
  534. { 36.f, -6.2f, 19.59f },
  535. // MZ2_GUNNER_GRENADE2_2
  536. { 36.f, -6.2f, 19.59f },
  537. // MZ2_GUNNER_GRENADE2_3
  538. { 36.f, -6.2f, 19.59f },
  539. // MZ2_GUNNER_GRENADE2_4
  540. { 36.f, -6.2f, 19.59f },
  541. // MZ2_INFANTRY_MACHINEGUN_22
  542. { 14.8f, 10.5f, 8.82f },
  543. // MZ2_SUPERTANK_GRENADE_1
  544. { 31.31f, -37.f, 54.32f },
  545. // MZ2_SUPERTANK_GRENADE_2
  546. { 31.31f, 37.f, 54.32f },
  547. // MZ2_HOVER_BLASTER_2
  548. { 1.7f, -7.0f, 11.3f },
  549. // MZ2_DAEDALUS_BLASTER_2
  550. { 1.7f, -7.0f, 11.3f },
  551. // MZ2_MEDIC_HYPERBLASTER1_1-12
  552. { 33.0f + 1.f, 12.5f, 15.0f },
  553. { 32.4f + 1.f, 11.2f, 15.0f },
  554. { 35.6f + 1.f, 7.4f, 15.0f },
  555. { 34.0f + 1.f, 4.1f, 15.0f },
  556. { 36.6f + 1.f, 1.0f, 15.0f },
  557. { 34.7f + 1.f, -1.9f, 15.0f },
  558. { 36.6f + 1.f, -0.5f, 15.0f },
  559. { 34.2f + 1.f, 2.8f, 15.0f },
  560. { 36.5f + 1.f, 3.8f, 15.0f },
  561. { 33.5f + 1.f, 6.9f, 15.0f },
  562. { 32.7f + 1.f, 9.9f, 15.0f },
  563. { 34.5f + 1.f, 11.0f, 15.0f },
  564. // MZ2_MEDIC_HYPERBLASTER2_1-12
  565. { 33.0f + 1.f, 12.5f, 15.0f },
  566. { 32.4f + 1.f, 11.2f, 15.0f },
  567. { 35.6f + 1.f, 7.4f, 15.0f },
  568. { 34.0f + 1.f, 4.1f, 15.0f },
  569. { 36.6f + 1.f, 1.0f, 15.0f },
  570. { 34.7f + 1.f, -1.9f, 15.0f },
  571. { 36.6f + 1.f, -0.5f, 15.0f },
  572. { 34.2f + 1.f, 2.8f, 15.0f },
  573. { 36.5f + 1.f, 3.8f, 15.0f },
  574. { 33.5f + 1.f, 6.9f, 15.0f },
  575. { 32.7f + 1.f, 9.9f, 15.0f },
  576. { 34.5f + 1.f, 11.0f, 15.0f },
  577. // end of table
  578. { 0.0f, 0.0f, 0.0f }
  579. };
  580. static_assert(q_countof(monster_flash_offset) - 1 == MZ2_LAST);