quake2forge/game/m_flash.c

488 lines
12 KiB
C

/*
Copyright (C) 1997-2001 Id Software, Inc.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
// m_flash.c
#include "q_shared.h"
// this file is included in both the game dll and quake2,
// the game needs it to source shot locations, the client
// needs it to position muzzle flashes
vec3_t monster_flash_offset [] =
{
// flash 0 is not used
{0.0, 0.0, 0.0},
// MZ2_TANK_BLASTER_1 1
{20.7, -18.5, 28.7},
// MZ2_TANK_BLASTER_2 2
{16.6, -21.5, 30.1},
// MZ2_TANK_BLASTER_3 3
{11.8, -23.9, 32.1},
// MZ2_TANK_MACHINEGUN_1 4
{22.9, -0.7, 25.3},
// MZ2_TANK_MACHINEGUN_2 5
{22.2, 6.2, 22.3},
// MZ2_TANK_MACHINEGUN_3 6
{19.4, 13.1, 18.6},
// MZ2_TANK_MACHINEGUN_4 7
{19.4, 18.8, 18.6},
// MZ2_TANK_MACHINEGUN_5 8
{17.9, 25.0, 18.6},
// MZ2_TANK_MACHINEGUN_6 9
{14.1, 30.5, 20.6},
// MZ2_TANK_MACHINEGUN_7 10
{9.3, 35.3, 22.1},
// MZ2_TANK_MACHINEGUN_8 11
{4.7, 38.4, 22.1},
// MZ2_TANK_MACHINEGUN_9 12
{-1.1, 40.4, 24.1},
// MZ2_TANK_MACHINEGUN_10 13
{-6.5, 41.2, 24.1},
// MZ2_TANK_MACHINEGUN_11 14
{3.2, 40.1, 24.7},
// MZ2_TANK_MACHINEGUN_12 15
{11.7, 36.7, 26.0},
// MZ2_TANK_MACHINEGUN_13 16
{18.9, 31.3, 26.0},
// MZ2_TANK_MACHINEGUN_14 17
{24.4, 24.4, 26.4},
// MZ2_TANK_MACHINEGUN_15 18
{27.1, 17.1, 27.2},
// MZ2_TANK_MACHINEGUN_16 19
{28.5, 9.1, 28.0},
// MZ2_TANK_MACHINEGUN_17 20
{27.1, 2.2, 28.0},
// MZ2_TANK_MACHINEGUN_18 21
{24.9, -2.8, 28.0},
// MZ2_TANK_MACHINEGUN_19 22
{21.6, -7.0, 26.4},
// MZ2_TANK_ROCKET_1 23
{6.2, 29.1, 49.1},
// MZ2_TANK_ROCKET_2 24
{6.9, 23.8, 49.1},
// MZ2_TANK_ROCKET_3 25
{8.3, 17.8, 49.5},
// MZ2_INFANTRY_MACHINEGUN_1 26
{26.6, 7.1, 13.1},
// MZ2_INFANTRY_MACHINEGUN_2 27
{18.2, 7.5, 15.4},
// MZ2_INFANTRY_MACHINEGUN_3 28
{17.2, 10.3, 17.9},
// MZ2_INFANTRY_MACHINEGUN_4 29
{17.0, 12.8, 20.1},
// MZ2_INFANTRY_MACHINEGUN_5 30
{15.1, 14.1, 21.8},
// MZ2_INFANTRY_MACHINEGUN_6 31
{11.8, 17.2, 23.1},
// MZ2_INFANTRY_MACHINEGUN_7 32
{11.4, 20.2, 21.0},
// MZ2_INFANTRY_MACHINEGUN_8 33
{9.0, 23.0, 18.9},
// MZ2_INFANTRY_MACHINEGUN_9 34
{13.9, 18.6, 17.7},
// MZ2_INFANTRY_MACHINEGUN_10 35
{15.4, 15.6, 15.8},
// MZ2_INFANTRY_MACHINEGUN_11 36
{10.2, 15.2, 25.1},
// MZ2_INFANTRY_MACHINEGUN_12 37
{-1.9, 15.1, 28.2},
// MZ2_INFANTRY_MACHINEGUN_13 38
{-12.4, 13.0, 20.2},
// MZ2_SOLDIER_BLASTER_1 39
{10.6 * 1.2, 7.7 * 1.2, 7.8 * 1.2},
// MZ2_SOLDIER_BLASTER_2 40
{21.1 * 1.2, 3.6 * 1.2, 19.0 * 1.2},
// MZ2_SOLDIER_SHOTGUN_1 41
{10.6 * 1.2, 7.7 * 1.2, 7.8 * 1.2},
// MZ2_SOLDIER_SHOTGUN_2 42
{21.1 * 1.2, 3.6 * 1.2, 19.0 * 1.2},
// MZ2_SOLDIER_MACHINEGUN_1 43
{10.6 * 1.2, 7.7 * 1.2, 7.8 * 1.2},
// MZ2_SOLDIER_MACHINEGUN_2 44
{21.1 * 1.2, 3.6 * 1.2, 19.0 * 1.2},
// MZ2_GUNNER_MACHINEGUN_1 45
{30.1 * 1.15, 3.9 * 1.15, 19.6 * 1.15},
// MZ2_GUNNER_MACHINEGUN_2 46
{29.1 * 1.15, 2.5 * 1.15, 20.7 * 1.15},
// MZ2_GUNNER_MACHINEGUN_3 47
{28.2 * 1.15, 2.5 * 1.15, 22.2 * 1.15},
// MZ2_GUNNER_MACHINEGUN_4 48
{28.2 * 1.15, 3.6 * 1.15, 22.0 * 1.15},
// MZ2_GUNNER_MACHINEGUN_5 49
{26.9 * 1.15, 2.0 * 1.15, 23.4 * 1.15},
// MZ2_GUNNER_MACHINEGUN_6 50
{26.5 * 1.15, 0.6 * 1.15, 20.8 * 1.15},
// MZ2_GUNNER_MACHINEGUN_7 51
{26.9 * 1.15, 0.5 * 1.15, 21.5 * 1.15},
// MZ2_GUNNER_MACHINEGUN_8 52
{29.0 * 1.15, 2.4 * 1.15, 19.5 * 1.15},
// MZ2_GUNNER_GRENADE_1 53
{4.6 * 1.15, -16.8 * 1.15, 7.3 * 1.15},
// MZ2_GUNNER_GRENADE_2 54
{4.6 * 1.15, -16.8 * 1.15, 7.3 * 1.15},
// MZ2_GUNNER_GRENADE_3 55
{4.6 * 1.15, -16.8 * 1.15, 7.3 * 1.15},
// MZ2_GUNNER_GRENADE_4 56
{4.6 * 1.15, -16.8 * 1.15, 7.3 * 1.15},
// MZ2_CHICK_ROCKET_1 57
// {-24.8, -9.0, 39.0},
{24.8, -9.0, 39.0}, // PGM - this was incorrect in Q2
// MZ2_FLYER_BLASTER_1 58
{12.1, 13.4, -14.5},
// MZ2_FLYER_BLASTER_2 59
{12.1, -7.4, -14.5},
// MZ2_MEDIC_BLASTER_1 60
{12.1, 5.4, 16.5},
// MZ2_GLADIATOR_RAILGUN_1 61
{30.0, 18.0, 28.0},
// MZ2_HOVER_BLASTER_1 62
{32.5, -0.8, 10.0},
// MZ2_ACTOR_MACHINEGUN_1 63
{18.4, 7.4, 9.6},
// MZ2_SUPERTANK_MACHINEGUN_1 64
{30.0, 30.0, 88.5},
// MZ2_SUPERTANK_MACHINEGUN_2 65
{30.0, 30.0, 88.5},
// MZ2_SUPERTANK_MACHINEGUN_3 66
{30.0, 30.0, 88.5},
// MZ2_SUPERTANK_MACHINEGUN_4 67
{30.0, 30.0, 88.5},
// MZ2_SUPERTANK_MACHINEGUN_5 68
{30.0, 30.0, 88.5},
// MZ2_SUPERTANK_MACHINEGUN_6 69
{30.0, 30.0, 88.5},
// MZ2_SUPERTANK_ROCKET_1 70
{16.0, -22.5, 91.2},
// MZ2_SUPERTANK_ROCKET_2 71
{16.0, -33.4, 86.7},
// MZ2_SUPERTANK_ROCKET_3 72
{16.0, -42.8, 83.3},
// --- Start Xian Stuff ---
// MZ2_BOSS2_MACHINEGUN_L1 73
{32, -40, 70},
// MZ2_BOSS2_MACHINEGUN_L2 74
{32, -40, 70},
// MZ2_BOSS2_MACHINEGUN_L3 75
{32, -40, 70},
// MZ2_BOSS2_MACHINEGUN_L4 76
{32, -40, 70},
// MZ2_BOSS2_MACHINEGUN_L5 77
{32, -40, 70},
// --- End Xian Stuff
// MZ2_BOSS2_ROCKET_1 78
{22.0, 16.0, 10.0},
// MZ2_BOSS2_ROCKET_2 79
{22.0, 8.0, 10.0},
// MZ2_BOSS2_ROCKET_3 80
{22.0, -8.0, 10.0},
// MZ2_BOSS2_ROCKET_4 81
{22.0, -16.0, 10.0},
// MZ2_FLOAT_BLASTER_1 82
{32.5, -0.8, 10},
// MZ2_SOLDIER_BLASTER_3 83
{20.8 * 1.2, 10.1 * 1.2, -2.7 * 1.2},
// MZ2_SOLDIER_SHOTGUN_3 84
{20.8 * 1.2, 10.1 * 1.2, -2.7 * 1.2},
// MZ2_SOLDIER_MACHINEGUN_3 85
{20.8 * 1.2, 10.1 * 1.2, -2.7 * 1.2},
// MZ2_SOLDIER_BLASTER_4 86
{7.6 * 1.2, 9.3 * 1.2, 0.8 * 1.2},
// MZ2_SOLDIER_SHOTGUN_4 87
{7.6 * 1.2, 9.3 * 1.2, 0.8 * 1.2},
// MZ2_SOLDIER_MACHINEGUN_4 88
{7.6 * 1.2, 9.3 * 1.2, 0.8 * 1.2},
// MZ2_SOLDIER_BLASTER_5 89
{30.5 * 1.2, 9.9 * 1.2, -18.7 * 1.2},
// MZ2_SOLDIER_SHOTGUN_5 90
{30.5 * 1.2, 9.9 * 1.2, -18.7 * 1.2},
// MZ2_SOLDIER_MACHINEGUN_5 91
{30.5 * 1.2, 9.9 * 1.2, -18.7 * 1.2},
// MZ2_SOLDIER_BLASTER_6 92
{27.6 * 1.2, 3.4 * 1.2, -10.4 * 1.2},
// MZ2_SOLDIER_SHOTGUN_6 93
{27.6 * 1.2, 3.4 * 1.2, -10.4 * 1.2},
// MZ2_SOLDIER_MACHINEGUN_6 94
{27.6 * 1.2, 3.4 * 1.2, -10.4 * 1.2},
// MZ2_SOLDIER_BLASTER_7 95
{28.9 * 1.2, 4.6 * 1.2, -8.1 * 1.2},
// MZ2_SOLDIER_SHOTGUN_7 96
{28.9 * 1.2, 4.6 * 1.2, -8.1 * 1.2},
// MZ2_SOLDIER_MACHINEGUN_7 97
{28.9 * 1.2, 4.6 * 1.2, -8.1 * 1.2},
// MZ2_SOLDIER_BLASTER_8 98
// {34.5 * 1.2, 9.6 * 1.2, 6.1 * 1.2},
{31.5 * 1.2, 9.6 * 1.2, 10.1 * 1.2},
// MZ2_SOLDIER_SHOTGUN_8 99
{34.5 * 1.2, 9.6 * 1.2, 6.1 * 1.2},
// MZ2_SOLDIER_MACHINEGUN_8 100
{34.5 * 1.2, 9.6 * 1.2, 6.1 * 1.2},
// --- Xian shit below ---
// MZ2_MAKRON_BFG 101
{17, -19.5, 62.9},
// MZ2_MAKRON_BLASTER_1 102
{-3.6, -24.1, 59.5},
// MZ2_MAKRON_BLASTER_2 103
{-1.6, -19.3, 59.5},
// MZ2_MAKRON_BLASTER_3 104
{-0.1, -14.4, 59.5},
// MZ2_MAKRON_BLASTER_4 105
{2.0, -7.6, 59.5},
// MZ2_MAKRON_BLASTER_5 106
{3.4, 1.3, 59.5},
// MZ2_MAKRON_BLASTER_6 107
{3.7, 11.1, 59.5},
// MZ2_MAKRON_BLASTER_7 108
{-0.3, 22.3, 59.5},
// MZ2_MAKRON_BLASTER_8 109
{-6, 33, 59.5},
// MZ2_MAKRON_BLASTER_9 110
{-9.3, 36.4, 59.5},
// MZ2_MAKRON_BLASTER_10 111
{-7, 35, 59.5},
// MZ2_MAKRON_BLASTER_11 112
{-2.1, 29, 59.5},
// MZ2_MAKRON_BLASTER_12 113
{3.9, 17.3, 59.5},
// MZ2_MAKRON_BLASTER_13 114
{6.1, 5.8, 59.5},
// MZ2_MAKRON_BLASTER_14 115
{5.9, -4.4, 59.5},
// MZ2_MAKRON_BLASTER_15 116
{4.2, -14.1, 59.5},
// MZ2_MAKRON_BLASTER_16 117
{2.4, -18.8, 59.5},
// MZ2_MAKRON_BLASTER_17 118
{-1.8, -25.5, 59.5},
// MZ2_MAKRON_RAILGUN_1 119
{-17.3, 7.8, 72.4},
// MZ2_JORG_MACHINEGUN_L1 120
{78.5, -47.1, 96},
// MZ2_JORG_MACHINEGUN_L2 121
{78.5, -47.1, 96},
// MZ2_JORG_MACHINEGUN_L3 122
{78.5, -47.1, 96},
// MZ2_JORG_MACHINEGUN_L4 123
{78.5, -47.1, 96},
// MZ2_JORG_MACHINEGUN_L5 124
{78.5, -47.1, 96},
// MZ2_JORG_MACHINEGUN_L6 125
{78.5, -47.1, 96},
// MZ2_JORG_MACHINEGUN_R1 126
{78.5, 46.7, 96},
// MZ2_JORG_MACHINEGUN_R2 127
{78.5, 46.7, 96},
// MZ2_JORG_MACHINEGUN_R3 128
{78.5, 46.7, 96},
// MZ2_JORG_MACHINEGUN_R4 129
{78.5, 46.7, 96},
// MZ2_JORG_MACHINEGUN_R5 130
{78.5, 46.7, 96},
// MZ2_JORG_MACHINEGUN_R6 131
{78.5, 46.7, 96},
// MZ2_JORG_BFG_1 132
{6.3, -9, 111.2},
// MZ2_BOSS2_MACHINEGUN_R1 73
{32, 40, 70},
// MZ2_BOSS2_MACHINEGUN_R2 74
{32, 40, 70},
// MZ2_BOSS2_MACHINEGUN_R3 75
{32, 40, 70},
// MZ2_BOSS2_MACHINEGUN_R4 76
{32, 40, 70},
// MZ2_BOSS2_MACHINEGUN_R5 77
{32, 40, 70},
// --- End Xian Shit ---
// ROGUE
// note that the above really ends at 137
// carrier machineguns
// MZ2_CARRIER_MACHINEGUN_L1
{56, -32, 32},
// MZ2_CARRIER_MACHINEGUN_R1
{56, 32, 32},
// MZ2_CARRIER_GRENADE
{42, 24, 50},
// MZ2_TURRET_MACHINEGUN 141
{16, 0, 0},
// MZ2_TURRET_ROCKET 142
{16, 0, 0},
// MZ2_TURRET_BLASTER 143
{16, 0, 0},
// MZ2_STALKER_BLASTER 144
{24, 0, 6},
// MZ2_DAEDALUS_BLASTER 145
{32.5, -0.8, 10.0},
// MZ2_MEDIC_BLASTER_2 146
{12.1, 5.4, 16.5},
// MZ2_CARRIER_RAILGUN 147
{32, 0, 6},
// MZ2_WIDOW_DISRUPTOR 148
{57.72, 14.50, 88.81},
// MZ2_WIDOW_BLASTER 149
{56, 32, 32},
// MZ2_WIDOW_RAIL 150
{62, -20, 84},
// MZ2_WIDOW_PLASMABEAM 151 // PMM - not used!
{32, 0, 6},
// MZ2_CARRIER_MACHINEGUN_L2 152
{61, -32, 12},
// MZ2_CARRIER_MACHINEGUN_R2 153
{61, 32, 12},
// MZ2_WIDOW_RAIL_LEFT 154
{17, -62, 91},
// MZ2_WIDOW_RAIL_RIGHT 155
{68, 12, 86},
// MZ2_WIDOW_BLASTER_SWEEP1 156 pmm - the sweeps need to be in sequential order
{47.5, 56, 89},
// MZ2_WIDOW_BLASTER_SWEEP2 157
{54, 52, 91},
// MZ2_WIDOW_BLASTER_SWEEP3 158
{58, 40, 91},
// MZ2_WIDOW_BLASTER_SWEEP4 159
{68, 30, 88},
// MZ2_WIDOW_BLASTER_SWEEP5 160
{74, 20, 88},
// MZ2_WIDOW_BLASTER_SWEEP6 161
{73, 11, 87},
// MZ2_WIDOW_BLASTER_SWEEP7 162
{73, 3, 87},
// MZ2_WIDOW_BLASTER_SWEEP8 163
{70, -12, 87},
// MZ2_WIDOW_BLASTER_SWEEP9 164
{67, -20, 90},
// MZ2_WIDOW_BLASTER_100 165
{-20, 76, 90},
// MZ2_WIDOW_BLASTER_90 166
{-8, 74, 90},
// MZ2_WIDOW_BLASTER_80 167
{0, 72, 90},
// MZ2_WIDOW_BLASTER_70 168 d06
{10, 71, 89},
// MZ2_WIDOW_BLASTER_60 169 d07
{23, 70, 87},
// MZ2_WIDOW_BLASTER_50 170 d08
{32, 64, 85},
// MZ2_WIDOW_BLASTER_40 171
{40, 58, 84},
// MZ2_WIDOW_BLASTER_30 172 d10
{48, 50, 83},
// MZ2_WIDOW_BLASTER_20 173
{54, 42, 82},
// MZ2_WIDOW_BLASTER_10 174 d12
{56, 34, 82},
// MZ2_WIDOW_BLASTER_0 175
{58, 26, 82},
// MZ2_WIDOW_BLASTER_10L 176 d14
{60, 16, 82},
// MZ2_WIDOW_BLASTER_20L 177
{59, 6, 81},
// MZ2_WIDOW_BLASTER_30L 178 d16
{58, -2, 80},
// MZ2_WIDOW_BLASTER_40L 179
{57, -10, 79},
// MZ2_WIDOW_BLASTER_50L 180 d18
{54, -18, 78},
// MZ2_WIDOW_BLASTER_60L 181
{42, -32, 80},
// MZ2_WIDOW_BLASTER_70L 182 d20
{36, -40, 78},
// MZ2_WIDOW_RUN_1 183
{68.4, 10.88, 82.08},
// MZ2_WIDOW_RUN_2 184
{68.51, 8.64, 85.14},
// MZ2_WIDOW_RUN_3 185
{68.66, 6.38, 88.78},
// MZ2_WIDOW_RUN_4 186
{68.73, 5.1, 84.47},
// MZ2_WIDOW_RUN_5 187
{68.82, 4.79, 80.52},
// MZ2_WIDOW_RUN_6 188
{68.77, 6.11, 85.37},
// MZ2_WIDOW_RUN_7 189
{68.67, 7.99, 90.24},
// MZ2_WIDOW_RUN_8 190
{68.55, 9.54, 87.36},
// MZ2_CARRIER_ROCKET_1 191
{0, 0, -5},
// MZ2_CARRIER_ROCKET_2 192
{0, 0, -5},
// MZ2_CARRIER_ROCKET_3 193
{0, 0, -5},
// MZ2_CARRIER_ROCKET_4 194
{0, 0, -5},
// MZ2_WIDOW2_BEAMER_1 195
// {72.13, -17.63, 93.77},
{69.00, -17.63, 93.77},
// MZ2_WIDOW2_BEAMER_2 196
// {71.46, -17.08, 89.82},
{69.00, -17.08, 89.82},
// MZ2_WIDOW2_BEAMER_3 197
// {71.47, -18.40, 90.70},
{69.00, -18.40, 90.70},
// MZ2_WIDOW2_BEAMER_4 198
// {71.96, -18.34, 94.32},
{69.00, -18.34, 94.32},
// MZ2_WIDOW2_BEAMER_5 199
// {72.25, -18.30, 97.98},
{69.00, -18.30, 97.98},
// MZ2_WIDOW2_BEAM_SWEEP_1 200
{45.04, -59.02, 92.24},
// MZ2_WIDOW2_BEAM_SWEEP_2 201
{50.68, -54.70, 91.96},
// MZ2_WIDOW2_BEAM_SWEEP_3 202
{56.57, -47.72, 91.65},
// MZ2_WIDOW2_BEAM_SWEEP_4 203
{61.75, -38.75, 91.38},
// MZ2_WIDOW2_BEAM_SWEEP_5 204
{65.55, -28.76, 91.24},
// MZ2_WIDOW2_BEAM_SWEEP_6 205
{67.79, -18.90, 91.22},
// MZ2_WIDOW2_BEAM_SWEEP_7 206
{68.60, -9.52, 91.23},
// MZ2_WIDOW2_BEAM_SWEEP_8 207
{68.08, 0.18, 91.32},
// MZ2_WIDOW2_BEAM_SWEEP_9 208
{66.14, 9.79, 91.44},
// MZ2_WIDOW2_BEAM_SWEEP_10 209
{62.77, 18.91, 91.65},
// MZ2_WIDOW2_BEAM_SWEEP_11 210
{58.29, 27.11, 92.00},
// end of table
{0.0, 0.0, 0.0}
};