Subversion Repositories eduke32

Rev

Rev 8697 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
5196 hendricks2 1
//-------------------------------------------------------------------------
2
/*
3
Copyright (C) 1997, 2005 - 3D Realms Entertainment
4
 
5
This file is part of Shadow Warrior version 1.2
6
 
7
Shadow Warrior is free software; you can redistribute it and/or
8
modify it under the terms of the GNU General Public License
9
as published by the Free Software Foundation; either version 2
10
of the License, or (at your option) any later version.
11
 
12
This program is distributed in the hope that it will be useful,
13
but WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15
 
16
See the GNU General Public License for more details.
17
 
18
You should have received a copy of the GNU General Public License
19
along with this program; if not, write to the Free Software
20
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
21
 
22
Original Source: 1997 - Frank Maddin and Jim Norwood
23
Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms
24
*/
25
//-------------------------------------------------------------------------
26
#include "build.h"
5199 hendricks2 27
#include "common.h"
5196 hendricks2 28
 
29
#include "keys.h"
30
#include "names2.h"
31
#include "panel.h"
32
#include "game.h"
33
#include "tags.h"
34
#include "common_game.h"
35
#include "break.h"
36
#include "quake.h"
7443 hendricks2 37
#include "network.h"
5196 hendricks2 38
#include "pal.h"
39
#include "vis.h"
40
 
41
#include "ai.h"
42
#include "weapon.h"
43
#include "anim.h"
44
#include "sector.h"
45
#include "sprite.h"
46
#include "actor.h"
47
#include "track.h"
48
#include "player.h"
49
 
50
//
51
// Damage Amounts defined in damage.h
52
//
53
#define DAMAGE_TABLE
54
DAMAGE_DATA DamageData[] =
55
{
56
#include "damage.h"
57
};
58
#undef  DAMAGE_TABLE
59
 
60
short ADJUST=120;
61
int ADJUSTV=1<<16;
62
 
63
FOOT_TYPE FootMode=WATER_FOOT;
5198 hendricks2 64
SWBOOL left_foot = FALSE;
5196 hendricks2 65
int FinishTimer = 0;
66
 
67
// This is how many bullet shells have been spawned since the beginning of the game.
68
int ShellCount = 0;
69
 
70
//short Zombies = 0;
71
short StarQueueHead=0;
72
short StarQueue[MAX_STAR_QUEUE];
73
short HoleQueueHead=0;
74
short HoleQueue[MAX_HOLE_QUEUE];
75
short WallBloodQueueHead=0;
76
short WallBloodQueue[MAX_WALLBLOOD_QUEUE];
77
short FloorBloodQueueHead=0;
78
short FloorBloodQueue[MAX_FLOORBLOOD_QUEUE];
79
short GenericQueueHead=0;
80
short GenericQueue[MAX_GENERIC_QUEUE];
81
short LoWangsQueueHead=0;
82
short LoWangsQueue[MAX_LOWANGS_QUEUE];
83
int SpawnBreakStaticFlames(short);
84
 
5198 hendricks2 85
SWBOOL GlobalSkipZrange = FALSE;
5196 hendricks2 86
 
87
int WeaponIsAmmo = BIT(WPN_STAR) | BIT(WPN_SWORD) | BIT(WPN_MINE) | BIT(WPN_FIST);
88
 
89
short target_ang;
90
 
91
ANIMATOR NullAnimator;
92
ANIMATOR DoStar;
93
ANIMATOR DoCrossBolt;
94
ANIMATOR DoSuicide, DoUziSmoke;
95
ANIMATOR DoShrapJumpFall;
96
ANIMATOR DoFastShrapJumpFall;
97
 
98
int SpawnSmokePuff(short SpriteNum);
5198 hendricks2 99
SWBOOL WarpToUnderwater(short *sectnum, int *x, int *y, int *z);
100
SWBOOL WarpToSurface(short *sectnum, int *x, int *y, int *z);
5196 hendricks2 101
short ElectroFindClosestEnemy(short SpriteNum);
102
int InitElectroJump(SPRITEp wp, SPRITEp sp);
5202 hendricks2 103
SWBOOL TestDontStickSector(short hit_sect);
5196 hendricks2 104
int SpawnShrapX(short SpriteNum);
5198 hendricks2 105
SWBOOL WeaponMoveHit(short SpriteNum);
106
int HelpMissileLateral(int16_t Weapon, int dist);
5196 hendricks2 107
void SpawnMidSplash(short SpriteNum);
108
 
109
int SopDamage(SECTOR_OBJECTp sop,short amt);
110
int SopCheckKill(SECTOR_OBJECTp sop);
111
int QueueStar(short SpriteNum);
5198 hendricks2 112
int DoBlurExtend(int16_t Weapon,int16_t interval,int16_t blur_num);
5196 hendricks2 113
int SpawnDemonFist(short Weapon);
5198 hendricks2 114
int SpawnTankShellExp(int16_t Weapon);
115
int SpawnMicroExp(int16_t Weapon);
5196 hendricks2 116
void SpawnExpZadjust(short Weapon, SPRITEp exp, int upper_zsize, int lower_zsize);
8694 ny00123 117
int BulletHitSprite(SPRITEp sp,short hit_sprite,int hit_x,int hit_y,int hit_z,short ID);
5202 hendricks2 118
int SpawnSplashXY(int hit_x,int hit_y,int hit_z,short);
119
int SpawnBoatSparks(PLAYERp pp,short hit_sect,short hit_wall,int hit_x,int hit_y,int hit_z,short hit_ang);
5196 hendricks2 120
 
121
short StatDamageList[STAT_DAMAGE_LIST_SIZE] =
122
{
123
    STAT_SO_SP_CHILD,
124
    STAT_ENEMY,
125
    STAT_ENEMY_SKIP4,
126
    STAT_PLAYER0,
127
    STAT_PLAYER1,
128
    STAT_PLAYER2,
129
    STAT_PLAYER3,
130
    STAT_PLAYER4,
131
    STAT_PLAYER5,
132
    STAT_PLAYER6,
133
    STAT_PLAYER7,
134
    STAT_PLAYER_UNDER0,
135
    STAT_PLAYER_UNDER1,
136
    STAT_PLAYER_UNDER2,
137
    STAT_PLAYER_UNDER3,
138
    STAT_PLAYER_UNDER4,
139
    STAT_PLAYER_UNDER5,
140
    STAT_PLAYER_UNDER6,
141
    STAT_PLAYER_UNDER7,
142
    // MINE MUST BE LAST
143
    STAT_MINE_STUCK
144
};
145
 
146
//////////////////////
147
//
148
// SPECIAL STATES
149
//
150
//////////////////////
151
 
152
// state for sprites that are not restored
153
STATE s_NotRestored[] =
154
{
155
    {2323, 100, NullAnimator, &s_NotRestored[0]}
156
};
157
 
158
STATE s_Suicide[] =
159
{
160
    {1, 100, DoSuicide, &s_Suicide[0]}
161
};
162
 
163
STATE s_DeadLoWang[] =
164
{
165
    {1160, 100, NullAnimator, &s_DeadLoWang[0]},
166
};
167
 
168
//////////////////////
169
//
170
// BREAKABLE STATES
171
//
172
//////////////////////
173
 
174
ANIMATOR DoDefaultStat;
175
 
176
#define BREAK_LIGHT_RATE 18
177
STATE s_BreakLight[] =
178
{
179
    {BREAK_LIGHT_ANIM + 0, BREAK_LIGHT_RATE, NullAnimator, &s_BreakLight[1]},
180
    {BREAK_LIGHT_ANIM + 1, BREAK_LIGHT_RATE, NullAnimator, &s_BreakLight[2]},
181
    {BREAK_LIGHT_ANIM + 2, BREAK_LIGHT_RATE, NullAnimator, &s_BreakLight[3]},
182
    {BREAK_LIGHT_ANIM + 3, BREAK_LIGHT_RATE, NullAnimator, &s_BreakLight[4]},
183
    {BREAK_LIGHT_ANIM + 4, BREAK_LIGHT_RATE, NullAnimator, &s_BreakLight[5]},
184
    {BREAK_LIGHT_ANIM + 5, BREAK_LIGHT_RATE, NullAnimator, &s_BreakLight[5]}
185
};
186
 
187
#define BREAK_BARREL_RATE 18
188
STATE s_BreakBarrel[] =
189
{
190
    {BREAK_BARREL + 4, BREAK_BARREL_RATE, NullAnimator, &s_BreakBarrel[1]},
191
    {BREAK_BARREL + 5, BREAK_BARREL_RATE, NullAnimator, &s_BreakBarrel[2]},
192
    {BREAK_BARREL + 6, BREAK_BARREL_RATE, NullAnimator, &s_BreakBarrel[3]},
193
    {BREAK_BARREL + 7, BREAK_BARREL_RATE, NullAnimator, &s_BreakBarrel[4]},
194
    {BREAK_BARREL + 8, BREAK_BARREL_RATE, NullAnimator, &s_BreakBarrel[5]},
195
    {BREAK_BARREL + 9, BREAK_BARREL_RATE, DoDefaultStat, &s_BreakBarrel[5]},
196
};
197
 
198
#define BREAK_PEDISTAL_RATE 28
199
STATE s_BreakPedistal[] =
200
{
201
    {BREAK_PEDISTAL + 1, BREAK_PEDISTAL_RATE, NullAnimator, &s_BreakPedistal[1]},
202
    {BREAK_PEDISTAL + 2, BREAK_PEDISTAL_RATE, NullAnimator, &s_BreakPedistal[2]},
203
    {BREAK_PEDISTAL + 3, BREAK_PEDISTAL_RATE, NullAnimator, &s_BreakPedistal[3]},
204
    {BREAK_PEDISTAL + 4, BREAK_PEDISTAL_RATE, NullAnimator, &s_BreakPedistal[3]},
205
};
206
 
207
#define BREAK_BOTTLE1_RATE 18
208
STATE s_BreakBottle1[] =
209
{
210
    {BREAK_BOTTLE1 + 1, BREAK_BOTTLE1_RATE, NullAnimator, &s_BreakBottle1[1]},
211
    {BREAK_BOTTLE1 + 2, BREAK_BOTTLE1_RATE, NullAnimator, &s_BreakBottle1[2]},
212
    {BREAK_BOTTLE1 + 3, BREAK_BOTTLE1_RATE, NullAnimator, &s_BreakBottle1[3]},
213
    {BREAK_BOTTLE1 + 4, BREAK_BOTTLE1_RATE, NullAnimator, &s_BreakBottle1[4]},
214
    {BREAK_BOTTLE1 + 5, BREAK_BOTTLE1_RATE, NullAnimator, &s_BreakBottle1[5]},
215
    {BREAK_BOTTLE1 + 6, BREAK_BOTTLE1_RATE, NullAnimator, &s_BreakBottle1[5]},
216
};
217
 
218
#define BREAK_BOTTLE2_RATE 18
219
STATE s_BreakBottle2[] =
220
{
221
    {BREAK_BOTTLE2 + 1, BREAK_BOTTLE2_RATE, NullAnimator, &s_BreakBottle2[1]},
222
    {BREAK_BOTTLE2 + 2, BREAK_BOTTLE2_RATE, NullAnimator, &s_BreakBottle2[2]},
223
    {BREAK_BOTTLE2 + 3, BREAK_BOTTLE2_RATE, NullAnimator, &s_BreakBottle2[3]},
224
    {BREAK_BOTTLE2 + 4, BREAK_BOTTLE2_RATE, NullAnimator, &s_BreakBottle2[4]},
225
    {BREAK_BOTTLE2 + 5, BREAK_BOTTLE2_RATE, NullAnimator, &s_BreakBottle2[5]},
226
    {BREAK_BOTTLE2 + 6, BREAK_BOTTLE2_RATE, NullAnimator, &s_BreakBottle2[5]},
227
};
228
 
229
#define PUFF_RATE 8
230
ANIMATOR DoPuff;
231
STATE s_Puff[] =
232
{
233
    {PUFF + 0, PUFF_RATE, DoPuff, &s_Puff[1]},
234
    {PUFF + 1, PUFF_RATE, DoPuff, &s_Puff[2]},
235
    {PUFF + 2, PUFF_RATE, DoPuff, &s_Puff[3]},
236
    {PUFF + 3, PUFF_RATE, DoPuff, &s_Puff[4]},
237
    {PUFF + 4, PUFF_RATE, DoPuff, &s_Puff[5]},
238
    {PUFF + 5, PUFF_RATE, DoPuff, &s_Puff[6]},
239
    {PUFF + 5, 100, DoSuicide, &s_Puff[0]}
240
};
241
 
242
#define RAIL_PUFF_R0 3969
243
#define RAIL_PUFF_R1 3985
244
#define RAIL_PUFF_R2 4001
245
#define RAIL_PUFF_RATE 6
246
 
247
ANIMATOR DoRailPuff;
248
 
249
STATE s_RailPuff[3][17] =
250
{
251
    {
252
        {RAIL_PUFF_R0 + 0, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[0][1]},
253
        {RAIL_PUFF_R0 + 1, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[0][2]},
254
        {RAIL_PUFF_R0 + 2, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[0][3]},
255
        {RAIL_PUFF_R0 + 3, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[0][4]},
256
        {RAIL_PUFF_R0 + 4, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[0][5]},
257
        {RAIL_PUFF_R0 + 5, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[0][6]},
258
        {RAIL_PUFF_R0 + 6, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[0][7]},
259
        {RAIL_PUFF_R0 + 7, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[0][8]},
260
        {RAIL_PUFF_R0 + 8, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[0][9]},
261
        {RAIL_PUFF_R0 + 9, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[0][10]},
262
        {RAIL_PUFF_R0 + 10, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[0][11]},
263
        {RAIL_PUFF_R0 + 11, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[0][12]},
264
        {RAIL_PUFF_R0 + 12, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[0][13]},
265
        {RAIL_PUFF_R0 + 13, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[0][14]},
266
        {RAIL_PUFF_R0 + 14, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[0][15]},
267
        {RAIL_PUFF_R0 + 15, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[0][16]},
268
        {RAIL_PUFF_R0 + 15, 100, DoSuicide, &s_RailPuff[0][0]},
269
    },
270
    {
271
        {RAIL_PUFF_R1 + 0, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[1][1]},
272
        {RAIL_PUFF_R1 + 1, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[1][2]},
273
        {RAIL_PUFF_R1 + 2, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[1][3]},
274
        {RAIL_PUFF_R1 + 3, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[1][4]},
275
        {RAIL_PUFF_R1 + 4, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[1][5]},
276
        {RAIL_PUFF_R1 + 5, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[1][6]},
277
        {RAIL_PUFF_R1 + 6, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[1][7]},
278
        {RAIL_PUFF_R1 + 7, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[1][8]},
279
        {RAIL_PUFF_R1 + 8, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[1][9]},
280
        {RAIL_PUFF_R1 + 9, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[1][10]},
281
        {RAIL_PUFF_R1 + 10, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[1][11]},
282
        {RAIL_PUFF_R1 + 11, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[1][12]},
283
        {RAIL_PUFF_R1 + 12, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[1][13]},
284
        {RAIL_PUFF_R1 + 13, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[1][14]},
285
        {RAIL_PUFF_R1 + 14, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[1][15]},
286
        {RAIL_PUFF_R1 + 15, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[1][16]},
287
        {RAIL_PUFF_R1 + 15, 100, DoSuicide, &s_RailPuff[1][0]},
288
    },
289
    {
290
        {RAIL_PUFF_R2 + 0, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[2][1]},
291
        {RAIL_PUFF_R2 + 1, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[2][2]},
292
        {RAIL_PUFF_R2 + 2, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[2][3]},
293
        {RAIL_PUFF_R2 + 3, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[2][4]},
294
        {RAIL_PUFF_R2 + 4, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[2][5]},
295
        {RAIL_PUFF_R2 + 5, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[2][6]},
296
        {RAIL_PUFF_R2 + 6, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[2][7]},
297
        {RAIL_PUFF_R2 + 7, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[2][8]},
298
        {RAIL_PUFF_R2 + 8, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[2][9]},
299
        {RAIL_PUFF_R2 + 9, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[2][10]},
300
        {RAIL_PUFF_R2 + 10, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[2][11]},
301
        {RAIL_PUFF_R2 + 11, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[2][12]},
302
        {RAIL_PUFF_R2 + 12, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[2][13]},
303
        {RAIL_PUFF_R2 + 13, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[2][14]},
304
        {RAIL_PUFF_R2 + 14, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[2][15]},
305
        {RAIL_PUFF_R2 + 15, RAIL_PUFF_RATE, DoRailPuff, &s_RailPuff[2][16]},
306
        {RAIL_PUFF_R2 + 15, 100, DoSuicide, &s_RailPuff[2][0]},
307
    }
308
};
309
 
310
 
311
STATEp sg_RailPuff[] =
312
{
313
    &s_RailPuff[0][0],
314
    &s_RailPuff[1][0],
315
    &s_RailPuff[2][0],
316
    &s_RailPuff[1][0],
317
    &s_RailPuff[0][0]
318
};
319
 
320
#define LASER_PUFF 3201
321
#define LASER_PUFF_RATE 8
322
STATE s_LaserPuff[] =
323
{
324
    {LASER_PUFF + 0, LASER_PUFF_RATE, NULL, &s_LaserPuff[1]},
325
    //{LASER_PUFF + 1, LASER_PUFF_RATE, NULL, &s_LaserPuff[2]},
326
    //{LASER_PUFF + 2, LASER_PUFF_RATE, NULL, &s_LaserPuff[3]},
327
    {LASER_PUFF + 0, 100, DoSuicide, &s_LaserPuff[0]}
328
};
329
 
330
#define TRACER 3201
331
#define TRACER_RATE 6
332
ANIMATOR DoTracer;
333
STATE s_Tracer[] =
334
{
335
    {TRACER + 0, TRACER_RATE, DoTracer, &s_Tracer[1]},
336
    {TRACER + 1, TRACER_RATE, DoTracer, &s_Tracer[2]},
337
    {TRACER + 2, TRACER_RATE, DoTracer, &s_Tracer[3]},
338
    {TRACER + 3, TRACER_RATE, DoTracer, &s_Tracer[4]},
339
    {TRACER + 4, TRACER_RATE, DoTracer, &s_Tracer[5]},
340
    {TRACER + 5, TRACER_RATE, DoTracer, &s_Tracer[0]}
341
};
342
 
343
#define EMP 2058
344
#define EMP_RATE 6
345
ANIMATOR DoEMP;
346
STATE s_EMP[] =
347
{
348
    {EMP + 0, EMP_RATE, DoEMP, &s_EMP[1]},
349
    {EMP + 1, EMP_RATE, DoEMP, &s_EMP[2]},
350
    {EMP + 2, EMP_RATE, DoEMP, &s_EMP[0]}
351
};
352
 
353
ANIMATOR DoEMPBurst;
354
STATE s_EMPBurst[] =
355
{
356
    {EMP + 0, EMP_RATE, DoEMPBurst, &s_EMPBurst[1]},
357
    {EMP + 1, EMP_RATE, DoEMPBurst, &s_EMPBurst[2]},
358
    {EMP + 2, EMP_RATE, DoEMPBurst, &s_EMPBurst[0]}
359
};
360
 
361
STATE s_EMPShrap[] =
362
{
363
    {EMP + 0, EMP_RATE, DoFastShrapJumpFall, &s_EMPShrap[1]},
364
    {EMP + 1, EMP_RATE, DoFastShrapJumpFall, &s_EMPShrap[2]},
365
    {EMP + 2, EMP_RATE, DoFastShrapJumpFall, &s_EMPShrap[0]},
366
};
367
 
368
 
369
#define TANK_SHELL 3201
370
#define TANK_SHELL_RATE 6
371
ANIMATOR DoTankShell;
372
STATE s_TankShell[] =
373
{
374
    {TRACER + 0, 200, DoTankShell, &s_TankShell[0]}
375
};
376
 
377
ANIMATOR DoVehicleSmoke, SpawnVehicleSmoke;
378
#define VEHICLE_SMOKE_RATE 18
379
STATE s_VehicleSmoke[] =
380
{
381
    {PUFF + 0, VEHICLE_SMOKE_RATE, DoVehicleSmoke, &s_VehicleSmoke[1]},
382
    {PUFF + 1, VEHICLE_SMOKE_RATE, DoVehicleSmoke, &s_VehicleSmoke[2]},
383
    {PUFF + 2, VEHICLE_SMOKE_RATE, DoVehicleSmoke, &s_VehicleSmoke[3]},
384
    {PUFF + 3, VEHICLE_SMOKE_RATE, DoVehicleSmoke, &s_VehicleSmoke[4]},
385
    {PUFF + 4, VEHICLE_SMOKE_RATE, DoVehicleSmoke, &s_VehicleSmoke[5]},
386
    {PUFF + 5, VEHICLE_SMOKE_RATE, DoVehicleSmoke, &s_VehicleSmoke[6]},
387
    {PUFF + 5, 100, DoSuicide, &s_VehicleSmoke[6]}
388
};
389
 
390
ANIMATOR DoWaterSmoke, SpawnWaterSmoke;
391
#define WATER_SMOKE_RATE 18
392
STATE s_WaterSmoke[] =
393
{
394
    {PUFF + 0, WATER_SMOKE_RATE, DoWaterSmoke, &s_WaterSmoke[1]},
395
    {PUFF + 1, WATER_SMOKE_RATE, DoWaterSmoke, &s_WaterSmoke[2]},
396
    {PUFF + 2, WATER_SMOKE_RATE, DoWaterSmoke, &s_WaterSmoke[3]},
397
    {PUFF + 3, WATER_SMOKE_RATE, DoWaterSmoke, &s_WaterSmoke[4]},
398
    {PUFF + 4, WATER_SMOKE_RATE, DoWaterSmoke, &s_WaterSmoke[5]},
399
    {PUFF + 5, WATER_SMOKE_RATE, DoWaterSmoke, &s_WaterSmoke[6]},
400
    {PUFF + 5, 100, DoSuicide, &s_WaterSmoke[6]}
401
};
402
 
403
#define UZI_SPARK_REPEAT 24
404
#define UZI_SMOKE_REPEAT 24 // Was 32
405
#define UZI_SMOKE_RATE 16 // Was 9
406
STATE s_UziSmoke[] =
407
{
408
    {UZI_SMOKE + 0, UZI_SMOKE_RATE, DoUziSmoke, &s_UziSmoke[1]},
409
    {UZI_SMOKE + 1, UZI_SMOKE_RATE, DoUziSmoke, &s_UziSmoke[2]},
410
    {UZI_SMOKE + 2, UZI_SMOKE_RATE, DoUziSmoke, &s_UziSmoke[3]},
411
    {UZI_SMOKE + 3, UZI_SMOKE_RATE, DoUziSmoke, &s_UziSmoke[4]},
412
    {UZI_SMOKE + 3, 100, DoSuicide, &s_UziSmoke[0]},
413
};
414
 
415
#define SHOTGUN_SMOKE_RATE 16
416
#define SHOTGUN_SMOKE_REPEAT 18 // Was 32
417
#define SHOTGUN_SMOKE UZI_SMOKE+1
418
ANIMATOR DoShotgunSmoke;
419
STATE s_ShotgunSmoke[] =
420
{
421
    {UZI_SMOKE + 0, SHOTGUN_SMOKE_RATE, DoShotgunSmoke, &s_ShotgunSmoke[1]},
422
    {UZI_SMOKE + 1, SHOTGUN_SMOKE_RATE, DoShotgunSmoke, &s_ShotgunSmoke[2]},
423
    {UZI_SMOKE + 2, SHOTGUN_SMOKE_RATE, DoShotgunSmoke, &s_ShotgunSmoke[3]},
424
    {UZI_SMOKE + 3, SHOTGUN_SMOKE_RATE, DoShotgunSmoke, &s_ShotgunSmoke[4]},
425
    {UZI_SMOKE + 3, 100, DoSuicide, &s_ShotgunSmoke[0]},
426
};
427
 
428
#define UZI_BULLET_RATE 100
429
#define UZI_BULLET 717 // actually a bubble
430
ANIMATOR DoUziBullet;
431
 
432
STATE s_UziBullet[] =
433
{
434
    {UZI_BULLET + 0, UZI_BULLET_RATE, DoUziBullet, &s_UziBullet[0]},
435
};
436
 
437
#define UZI_SPARK_RATE 8
438
 
439
STATE s_UziSpark[] =
440
{
441
    {UZI_SPARK + 0, UZI_SPARK_RATE, NullAnimator, &s_UziSpark[1]},
442
    {UZI_SPARK + 1, UZI_SPARK_RATE, NullAnimator, &s_UziSpark[2]},
443
    {UZI_SPARK + 2, UZI_SPARK_RATE, NullAnimator, &s_UziSpark[3]},
444
    {UZI_SPARK + 3, UZI_SPARK_RATE, NullAnimator, &s_UziSpark[4]},
445
    {UZI_SPARK + 4, UZI_SPARK_RATE, NullAnimator, &s_UziSpark[5]},
446
    {UZI_SPARK + 4, 100, DoSuicide, &s_UziSpark[0]},
447
};
448
 
449
STATE s_UziPowerSpark[] =
450
{
451
    {UZI_SPARK + 0, UZI_SPARK_RATE, DoUziSmoke, &s_UziSpark[1]},
452
    {UZI_SPARK + 1, UZI_SPARK_RATE, DoUziSmoke, &s_UziSpark[2]},
453
    {UZI_SPARK + 2, UZI_SPARK_RATE, DoUziSmoke, &s_UziSpark[3]},
454
    {UZI_SPARK + 3, UZI_SPARK_RATE, DoUziSmoke, &s_UziSpark[4]},
455
    {UZI_SPARK + 4, UZI_SPARK_RATE, DoUziSmoke, &s_UziSpark[5]},
456
    {UZI_SPARK + 4, 100, DoSuicide, &s_UziSpark[0]},
457
};
458
 
459
#define BUBBLE 716
460
#define BUBBLE_RATE 100
461
ANIMATOR DoBubble;
462
 
463
STATE s_Bubble[] =
464
{
465
    {BUBBLE + 0, BUBBLE_RATE, DoBubble, &s_Bubble[0]}
466
};
467
 
468
 
469
//#define SPLASH 2190
470
#define SPLASH 772
471
#define SPLASH_RATE 10
472
 
473
STATE s_Splash[] =
474
{
475
    {SPLASH + 0, SPLASH_RATE, NullAnimator, &s_Splash[1]},
476
    {SPLASH + 1, SPLASH_RATE, NullAnimator, &s_Splash[2]},
477
    {SPLASH + 2, SPLASH_RATE, NullAnimator, &s_Splash[3]},
478
    {SPLASH + 3, SPLASH_RATE, NullAnimator, &s_Splash[4]},
479
    {SPLASH + 4, SPLASH_RATE, NullAnimator, &s_Splash[5]},
480
    {SPLASH + 4, 100, DoSuicide, &s_Splash[0]}
481
};
482
 
483
#define CROSSBOLT 2230
484
#define CROSSBOLT_RATE 100
485
STATE s_CrossBolt[5][1] =
486
{
487
    {
488
        {CROSSBOLT + 0, CROSSBOLT_RATE, DoCrossBolt, &s_CrossBolt[0][0]},
489
    },
490
    {
491
        {CROSSBOLT + 2, CROSSBOLT_RATE, DoCrossBolt, &s_CrossBolt[1][0]},
492
    },
493
    {
494
        {CROSSBOLT + 3, CROSSBOLT_RATE, DoCrossBolt, &s_CrossBolt[2][0]},
495
    },
496
    {
497
        {CROSSBOLT + 4, CROSSBOLT_RATE, DoCrossBolt, &s_CrossBolt[3][0]},
498
    },
499
    {
500
        {CROSSBOLT + 1, CROSSBOLT_RATE, DoCrossBolt, &s_CrossBolt[4][0]},
501
    }
502
};
503
 
504
STATEp sg_CrossBolt[] =
505
{
506
    &s_CrossBolt[0][0],
507
    &s_CrossBolt[1][0],
508
    &s_CrossBolt[2][0],
509
    &s_CrossBolt[3][0],
510
    &s_CrossBolt[4][0]
511
};
512
 
513
#undef STAR
514
#define STAR 2102
515
#define STAR_RATE 6
516
STATE s_Star[] =
517
{
518
    {STAR + 0, STAR_RATE, DoStar, &s_Star[1]},
519
    {STAR + 1, STAR_RATE, DoStar, &s_Star[2]},
520
    {STAR + 2, STAR_RATE, DoStar, &s_Star[3]},
521
    {STAR + 3, STAR_RATE, DoStar, &s_Star[0]}
522
};
523
 
524
STATE s_StarStuck[] =
525
{
526
    {STAR + 0, STAR_RATE, NullAnimator, &s_StarStuck[0]},
527
};
528
 
529
#define STAR_DOWN 2066
530
STATE s_StarDown[] =
531
{
532
    {STAR_DOWN + 0, STAR_RATE, DoStar, &s_StarDown[1]},
533
    {STAR_DOWN + 1, STAR_RATE, DoStar, &s_StarDown[2]},
534
    {STAR_DOWN + 2, STAR_RATE, DoStar, &s_StarDown[3]},
535
    {STAR_DOWN + 3, STAR_RATE, DoStar, &s_StarDown[0]}
536
};
537
 
538
STATE s_StarDownStuck[] =
539
{
540
    {STAR + 0, STAR_RATE, NullAnimator, &s_StarDownStuck[0]},
541
};
542
 
543
//////////////////////
544
//
545
// LAVA BOSS
546
//
547
//////////////////////
548
 
549
#define LAVA_BOULDER_RATE 6
550
ANIMATOR DoLavaBoulder,DoShrapDamage,DoVulcanBoulder;
551
 
552
STATE s_LavaBoulder[] =
553
{
554
    {LAVA_BOULDER + 1, LAVA_BOULDER_RATE, DoLavaBoulder, &s_LavaBoulder[1]},
555
    {LAVA_BOULDER + 2, LAVA_BOULDER_RATE, DoLavaBoulder, &s_LavaBoulder[2]},
556
    {LAVA_BOULDER + 3, LAVA_BOULDER_RATE, DoLavaBoulder, &s_LavaBoulder[3]},
557
    {LAVA_BOULDER + 4, LAVA_BOULDER_RATE, DoLavaBoulder, &s_LavaBoulder[4]},
558
    {LAVA_BOULDER + 5, LAVA_BOULDER_RATE, DoLavaBoulder, &s_LavaBoulder[5]},
559
    {LAVA_BOULDER + 6, LAVA_BOULDER_RATE, DoLavaBoulder, &s_LavaBoulder[6]},
560
    {LAVA_BOULDER + 7, LAVA_BOULDER_RATE, DoLavaBoulder, &s_LavaBoulder[7]},
561
    {LAVA_BOULDER + 8, LAVA_BOULDER_RATE, DoLavaBoulder, &s_LavaBoulder[0]},
562
};
563
 
564
#define LAVA_SHARD (LAVA_BOULDER+1)
565
 
566
STATE s_LavaShard[] =
567
{
568
    {LAVA_BOULDER + 1, LAVA_BOULDER_RATE, DoShrapDamage, &s_LavaShard[1]},
569
    {LAVA_BOULDER + 2, LAVA_BOULDER_RATE, DoShrapDamage, &s_LavaShard[2]},
570
    {LAVA_BOULDER + 3, LAVA_BOULDER_RATE, DoShrapDamage, &s_LavaShard[3]},
571
    {LAVA_BOULDER + 4, LAVA_BOULDER_RATE, DoShrapDamage, &s_LavaShard[4]},
572
    {LAVA_BOULDER + 5, LAVA_BOULDER_RATE, DoShrapDamage, &s_LavaShard[5]},
573
    {LAVA_BOULDER + 6, LAVA_BOULDER_RATE, DoShrapDamage, &s_LavaShard[6]},
574
    {LAVA_BOULDER + 7, LAVA_BOULDER_RATE, DoShrapDamage, &s_LavaShard[7]},
575
    {LAVA_BOULDER + 8, LAVA_BOULDER_RATE, DoShrapDamage, &s_LavaShard[0]},
576
};
577
 
578
STATE s_VulcanBoulder[] =
579
{
580
    {LAVA_BOULDER + 1, LAVA_BOULDER_RATE, DoVulcanBoulder, &s_VulcanBoulder[1]},
581
    {LAVA_BOULDER + 2, LAVA_BOULDER_RATE, DoVulcanBoulder, &s_VulcanBoulder[2]},
582
    {LAVA_BOULDER + 3, LAVA_BOULDER_RATE, DoVulcanBoulder, &s_VulcanBoulder[3]},
583
    {LAVA_BOULDER + 4, LAVA_BOULDER_RATE, DoVulcanBoulder, &s_VulcanBoulder[4]},
584
    {LAVA_BOULDER + 5, LAVA_BOULDER_RATE, DoVulcanBoulder, &s_VulcanBoulder[5]},
585
    {LAVA_BOULDER + 6, LAVA_BOULDER_RATE, DoVulcanBoulder, &s_VulcanBoulder[6]},
586
    {LAVA_BOULDER + 7, LAVA_BOULDER_RATE, DoVulcanBoulder, &s_VulcanBoulder[7]},
587
    {LAVA_BOULDER + 8, LAVA_BOULDER_RATE, DoVulcanBoulder, &s_VulcanBoulder[0]},
588
};
589
 
590
//////////////////////
591
//
592
// GRENADE
593
//
594
//////////////////////
595
 
596
#if 0
597
ANIMATOR DoGrenade;
598
#undef GRENADE
599
#define GRENADE 5000
600
#define GRENADE_RATE 8
601
 
602
STATE s_Grenade[] =
603
{
604
    {FIREBALL + 0, GRENADE_RATE, DoGrenade, &s_Grenade[1]},
605
    {FIREBALL + 1, GRENADE_RATE, DoGrenade, &s_Grenade[2]},
606
    {FIREBALL + 2, GRENADE_RATE, DoGrenade, &s_Grenade[3]},
607
    {FIREBALL + 3, GRENADE_RATE, DoGrenade, &s_Grenade[0]}
608
};
609
#else
610
#define GRENADE_FRAMES 1
611
#define GRENADE_R0 2110
612
#define GRENADE_R1 GRENADE_R0 + (GRENADE_FRAMES * 1)
613
#define GRENADE_R2 GRENADE_R0 + (GRENADE_FRAMES * 2)
614
#define GRENADE_R3 GRENADE_R0 + (GRENADE_FRAMES * 3)
615
#define GRENADE_R4 GRENADE_R0 + (GRENADE_FRAMES * 4)
616
 
617
#undef GRENADE
618
#define GRENADE GRENADE_R0
619
#define GRENADE_RATE 8
620
ANIMATOR DoGrenade;
621
 
622
STATE s_Grenade[5][1] =
623
{
624
    {
625
        {GRENADE_R0 + 0, GRENADE_RATE, DoGrenade, &s_Grenade[0][0]},
626
    },
627
    {
628
        {GRENADE_R1 + 0, GRENADE_RATE, DoGrenade, &s_Grenade[1][0]},
629
    },
630
    {
631
        {GRENADE_R2 + 0, GRENADE_RATE, DoGrenade, &s_Grenade[2][0]},
632
    },
633
    {
634
        {GRENADE_R3 + 0, GRENADE_RATE, DoGrenade, &s_Grenade[3][0]},
635
    },
636
    {
637
        {GRENADE_R4 + 0, GRENADE_RATE, DoGrenade, &s_Grenade[4][0]},
638
    }
639
};
640
 
641
 
642
STATEp sg_Grenade[] =
643
{
644
    &s_Grenade[0][0],
645
    &s_Grenade[1][0],
646
    &s_Grenade[2][0],
647
    &s_Grenade[3][0],
648
    &s_Grenade[4][0]
649
};
650
#endif
651
 
652
//////////////////////
653
//
654
// MINE
655
//
656
//////////////////////
657
 
658
ANIMATOR DoMine,DoMineStuck;
659
#undef MINE
660
#define MINE 2223
661
#define MINE_SHRAP 5011
662
#define MINE_RATE 16
663
 
664
STATE s_MineStuck[] =
665
{
666
    {MINE + 0, MINE_RATE, DoMineStuck, &s_MineStuck[0]},
667
};
668
 
669
STATE s_Mine[] =
670
{
671
    {MINE + 0, MINE_RATE, DoMine, &s_Mine[1]},
672
    {MINE + 1, MINE_RATE, DoMine, &s_Mine[0]},
673
};
674
 
675
ANIMATOR DoMineSpark;
676
STATE s_MineSpark[] =
677
{
678
    {UZI_SPARK + 0, UZI_SPARK_RATE, DoMineSpark, &s_MineSpark[1]},
679
    {UZI_SPARK + 1, UZI_SPARK_RATE, DoMineSpark, &s_MineSpark[2]},
680
    {UZI_SPARK + 2, UZI_SPARK_RATE, DoMineSpark, &s_MineSpark[3]},
681
    {UZI_SPARK + 3, UZI_SPARK_RATE, DoMineSpark, &s_MineSpark[4]},
682
    {UZI_SPARK + 4, UZI_SPARK_RATE, DoMineSpark, &s_MineSpark[5]},
683
    {UZI_SPARK + 4, 100, DoSuicide, &s_MineSpark[0]},
684
};
685
 
686
//////////////////////
687
//
688
// METEOR
689
//
690
//////////////////////
691
 
692
#define METEOR_R0 2098
693
#define METEOR_R1 2090
694
#define METEOR_R2 2094
695
#define METEOR_R3 2090
696
#define METEOR_R4 2098
697
 
698
 
699
#define METEOR STAR
700
#define METEOR_RATE 8
701
ANIMATOR DoMeteor;
702
 
703
STATE s_Meteor[5][4] =
704
{
705
    {
706
        {METEOR_R0 + 0, METEOR_RATE, DoMeteor, &s_Meteor[0][1]},
707
        {METEOR_R0 + 1, METEOR_RATE, DoMeteor, &s_Meteor[0][2]},
708
        {METEOR_R0 + 2, METEOR_RATE, DoMeteor, &s_Meteor[0][3]},
709
        {METEOR_R0 + 3, METEOR_RATE, DoMeteor, &s_Meteor[0][0]},
710
    },
711
    {
712
        {METEOR_R1 + 0, METEOR_RATE, DoMeteor, &s_Meteor[1][1]},
713
        {METEOR_R1 + 1, METEOR_RATE, DoMeteor, &s_Meteor[1][2]},
714
        {METEOR_R1 + 2, METEOR_RATE, DoMeteor, &s_Meteor[1][3]},
715
        {METEOR_R1 + 3, METEOR_RATE, DoMeteor, &s_Meteor[1][0]},
716
    },
717
    {
718
        {METEOR_R2 + 0, METEOR_RATE, DoMeteor, &s_Meteor[2][1]},
719
        {METEOR_R2 + 1, METEOR_RATE, DoMeteor, &s_Meteor[2][2]},
720
        {METEOR_R2 + 2, METEOR_RATE, DoMeteor, &s_Meteor[2][3]},
721
        {METEOR_R2 + 3, METEOR_RATE, DoMeteor, &s_Meteor[2][0]},
722
    },
723
    {
724
        {METEOR_R3 + 0, METEOR_RATE, DoMeteor, &s_Meteor[3][1]},
725
        {METEOR_R3 + 1, METEOR_RATE, DoMeteor, &s_Meteor[3][2]},
726
        {METEOR_R3 + 2, METEOR_RATE, DoMeteor, &s_Meteor[3][3]},
727
        {METEOR_R3 + 3, METEOR_RATE, DoMeteor, &s_Meteor[3][0]},
728
    },
729
    {
730
        {METEOR_R4 + 0, METEOR_RATE, DoMeteor, &s_Meteor[4][1]},
731
        {METEOR_R4 + 1, METEOR_RATE, DoMeteor, &s_Meteor[4][2]},
732
        {METEOR_R4 + 2, METEOR_RATE, DoMeteor, &s_Meteor[4][3]},
733
        {METEOR_R4 + 3, METEOR_RATE, DoMeteor, &s_Meteor[4][0]},
734
    }
735
};
736
 
737
 
738
STATEp sg_Meteor[] =
739
{
740
    &s_Meteor[0][0],
741
    &s_Meteor[1][0],
742
    &s_Meteor[2][0],
743
    &s_Meteor[3][0],
744
    &s_Meteor[4][0]
745
};
746
 
747
#define METEOR_EXP 2115
748
#define METEOR_EXP_RATE 7
749
 
750
STATE s_MeteorExp[] =
751
{
752
    {METEOR_EXP + 0, METEOR_EXP_RATE, NullAnimator, &s_MeteorExp[1]},
753
    {METEOR_EXP + 1, METEOR_EXP_RATE, NullAnimator, &s_MeteorExp[2]},
754
    {METEOR_EXP + 2, METEOR_EXP_RATE, NullAnimator, &s_MeteorExp[3]},
755
    {METEOR_EXP + 3, METEOR_EXP_RATE, NullAnimator, &s_MeteorExp[4]},
756
    {METEOR_EXP + 4, METEOR_EXP_RATE, NullAnimator, &s_MeteorExp[5]},
757
    {METEOR_EXP + 5, METEOR_EXP_RATE, NullAnimator, &s_MeteorExp[6]},
758
    {METEOR_EXP + 5, METEOR_EXP_RATE, DoSuicide, &s_MeteorExp[6]}
759
};
760
 
761
#define MIRV_METEOR METEOR_R0
762
ANIMATOR DoMirvMissile;
763
STATE s_MirvMeteor[5][4] =
764
{
765
    {
766
        {METEOR_R0 + 0, METEOR_RATE, DoMirvMissile, &s_MirvMeteor[0][1]},
767
        {METEOR_R0 + 1, METEOR_RATE, DoMirvMissile, &s_MirvMeteor[0][2]},
768
        {METEOR_R0 + 2, METEOR_RATE, DoMirvMissile, &s_MirvMeteor[0][3]},
769
        {METEOR_R0 + 3, METEOR_RATE, DoMirvMissile, &s_MirvMeteor[0][0]},
770
    },
771
    {
772
        {METEOR_R1 + 0, METEOR_RATE, DoMirvMissile, &s_MirvMeteor[1][1]},
773
        {METEOR_R1 + 1, METEOR_RATE, DoMirvMissile, &s_MirvMeteor[1][2]},
774
        {METEOR_R1 + 2, METEOR_RATE, DoMirvMissile, &s_MirvMeteor[1][3]},
775
        {METEOR_R1 + 3, METEOR_RATE, DoMirvMissile, &s_MirvMeteor[1][0]},
776
    },
777
    {
778
        {METEOR_R2 + 0, METEOR_RATE, DoMirvMissile, &s_MirvMeteor[2][1]},
779
        {METEOR_R2 + 1, METEOR_RATE, DoMirvMissile, &s_MirvMeteor[2][2]},
780
        {METEOR_R2 + 2, METEOR_RATE, DoMirvMissile, &s_MirvMeteor[2][3]},
781
        {METEOR_R2 + 3, METEOR_RATE, DoMirvMissile, &s_MirvMeteor[2][0]},
782
    },
783
    {
784
        {METEOR_R3 + 0, METEOR_RATE, DoMirvMissile, &s_MirvMeteor[3][1]},
785
        {METEOR_R3 + 1, METEOR_RATE, DoMirvMissile, &s_MirvMeteor[3][2]},
786
        {METEOR_R3 + 2, METEOR_RATE, DoMirvMissile, &s_MirvMeteor[3][3]},
787
        {METEOR_R3 + 3, METEOR_RATE, DoMirvMissile, &s_MirvMeteor[3][0]},
788
    },
789
    {
790
        {METEOR_R4 + 0, METEOR_RATE, DoMirvMissile, &s_MirvMeteor[4][1]},
791
        {METEOR_R4 + 1, METEOR_RATE, DoMirvMissile, &s_MirvMeteor[4][2]},
792
        {METEOR_R4 + 2, METEOR_RATE, DoMirvMissile, &s_MirvMeteor[4][3]},
793
        {METEOR_R4 + 3, METEOR_RATE, DoMirvMissile, &s_MirvMeteor[4][0]},
794
    }
795
};
796
 
797
 
798
STATEp sg_MirvMeteor[] =
799
{
800
    &s_MirvMeteor[0][0],
801
    &s_MirvMeteor[1][0],
802
    &s_MirvMeteor[2][0],
803
    &s_MirvMeteor[3][0],
804
    &s_MirvMeteor[4][0]
805
};
806
 
807
STATE s_MirvMeteorExp[] =
808
{
809
    {METEOR_EXP + 0, METEOR_EXP_RATE, NullAnimator, &s_MirvMeteorExp[1]},
810
    {METEOR_EXP + 1, METEOR_EXP_RATE, NullAnimator, &s_MirvMeteorExp[2]},
811
    {METEOR_EXP + 2, METEOR_EXP_RATE, NullAnimator, &s_MirvMeteorExp[3]},
812
    {METEOR_EXP + 3, METEOR_EXP_RATE, NullAnimator, &s_MirvMeteorExp[4]},
813
    {METEOR_EXP + 4, METEOR_EXP_RATE, NullAnimator, &s_MirvMeteorExp[5]},
814
    {METEOR_EXP + 5, METEOR_EXP_RATE, NullAnimator, &s_MirvMeteorExp[6]},
815
    {METEOR_EXP + 5, METEOR_EXP_RATE, DoSuicide, &s_MirvMeteorExp[6]}
816
};
817
 
818
#define SERP_METEOR METEOR_R0+1
819
ANIMATOR DoSerpMeteor;
820
STATE s_SerpMeteor[5][4] =
821
{
822
    {
823
        {2031 + 0, METEOR_RATE, DoSerpMeteor, &s_SerpMeteor[0][1]},
824
        {2031 + 1, METEOR_RATE, DoSerpMeteor, &s_SerpMeteor[0][2]},
825
        {2031 + 2, METEOR_RATE, DoSerpMeteor, &s_SerpMeteor[0][3]},
826
        {2031 + 3, METEOR_RATE, DoSerpMeteor, &s_SerpMeteor[0][0]},
827
    },
828
    {
829
        {2031 + 0, METEOR_RATE, DoSerpMeteor, &s_SerpMeteor[1][1]},
830
        {2031 + 1, METEOR_RATE, DoSerpMeteor, &s_SerpMeteor[1][2]},
831
        {2031 + 2, METEOR_RATE, DoSerpMeteor, &s_SerpMeteor[1][3]},
832
        {2031 + 3, METEOR_RATE, DoSerpMeteor, &s_SerpMeteor[1][0]},
833
    },
834
    {
835
        {2031 + 0, METEOR_RATE, DoSerpMeteor, &s_SerpMeteor[2][1]},
836
        {2031 + 1, METEOR_RATE, DoSerpMeteor, &s_SerpMeteor[2][2]},
837
        {2031 + 2, METEOR_RATE, DoSerpMeteor, &s_SerpMeteor[2][3]},
838
        {2031 + 3, METEOR_RATE, DoSerpMeteor, &s_SerpMeteor[2][0]},
839
    },
840
    {
841
        {2031 + 0, METEOR_RATE, DoSerpMeteor, &s_SerpMeteor[3][1]},
842
        {2031 + 1, METEOR_RATE, DoSerpMeteor, &s_SerpMeteor[3][2]},
843
        {2031 + 2, METEOR_RATE, DoSerpMeteor, &s_SerpMeteor[3][3]},
844
        {2031 + 3, METEOR_RATE, DoSerpMeteor, &s_SerpMeteor[3][0]},
845
    },
846
    {
847
        {2031 + 0, METEOR_RATE, DoSerpMeteor, &s_SerpMeteor[4][1]},
848
        {2031 + 1, METEOR_RATE, DoSerpMeteor, &s_SerpMeteor[4][2]},
849
        {2031 + 2, METEOR_RATE, DoSerpMeteor, &s_SerpMeteor[4][3]},
850
        {2031 + 3, METEOR_RATE, DoSerpMeteor, &s_SerpMeteor[4][0]},
851
    }
852
};
853
 
854
 
855
STATEp sg_SerpMeteor[] =
856
{
857
    &s_SerpMeteor[0][0],
858
    &s_SerpMeteor[1][0],
859
    &s_SerpMeteor[2][0],
860
    &s_SerpMeteor[3][0],
861
    &s_SerpMeteor[4][0]
862
};
863
 
864
 
865
STATE s_SerpMeteorExp[] =
866
{
867
    {METEOR_EXP + 0, METEOR_EXP_RATE, NullAnimator, &s_SerpMeteorExp[1]},
868
    {METEOR_EXP + 1, METEOR_EXP_RATE, NullAnimator, &s_SerpMeteorExp[2]},
869
    {METEOR_EXP + 2, METEOR_EXP_RATE, NullAnimator, &s_SerpMeteorExp[3]},
870
    {METEOR_EXP + 3, METEOR_EXP_RATE, NullAnimator, &s_SerpMeteorExp[4]},
871
    {METEOR_EXP + 4, METEOR_EXP_RATE, NullAnimator, &s_SerpMeteorExp[5]},
872
    {METEOR_EXP + 5, METEOR_EXP_RATE, NullAnimator, &s_SerpMeteorExp[6]},
873
    {METEOR_EXP + 5, METEOR_EXP_RATE, DoSuicide, &s_SerpMeteorExp[6]}
874
};
875
 
876
//////////////////////
877
//
878
// SPEAR
879
//
880
//////////////////////
881
 
882
#define SPEAR_RATE 8
883
ANIMATOR DoSpear;
884
 
885
STATE s_Spear[5][1] =
886
{
887
    {
888
        {SPEAR_R0 + 0, SPEAR_RATE, DoSpear, s_Spear[0]},
889
    },
890
    {
891
        {SPEAR_R1 + 0, SPEAR_RATE, DoSpear, s_Spear[1]},
892
    },
893
    {
894
        {SPEAR_R2 + 0, SPEAR_RATE, DoSpear, s_Spear[2]},
895
    },
896
    {
897
        {SPEAR_R3 + 0, SPEAR_RATE, DoSpear, s_Spear[3]},
898
    },
899
    {
900
        {SPEAR_R4 + 0, SPEAR_RATE, DoSpear, s_Spear[4]},
901
    }
902
};
903
 
904
STATEp sg_Spear[] =
905
{
906
    s_Spear[0],
907
    s_Spear[1],
908
    s_Spear[2],
909
    s_Spear[3],
910
    s_Spear[4]
911
};
912
 
913
//////////////////////
914
//
915
// ROCKET
916
//
917
//////////////////////
918
 
919
#define ROCKET_FRAMES 1
920
#define ROCKET_R0 2206
921
#define ROCKET_R1 ROCKET_R0 + (ROCKET_FRAMES * 2)
922
#define ROCKET_R2 ROCKET_R0 + (ROCKET_FRAMES * 3)
923
#define ROCKET_R3 ROCKET_R0 + (ROCKET_FRAMES * 4)
924
#define ROCKET_R4 ROCKET_R0 + (ROCKET_FRAMES * 1)
925
 
926
ANIMATOR DoRocket;
927
#define ROCKET_RATE 8
928
 
929
STATE s_Rocket[5][1] =
930
{
931
    {
932
        {ROCKET_R0 + 0, ROCKET_RATE, DoRocket, &s_Rocket[0][0]},
933
    },
934
    {
935
        {ROCKET_R1 + 0, ROCKET_RATE, DoRocket, &s_Rocket[1][0]},
936
    },
937
    {
938
        {ROCKET_R2 + 0, ROCKET_RATE, DoRocket, &s_Rocket[2][0]},
939
    },
940
    {
941
        {ROCKET_R3 + 0, ROCKET_RATE, DoRocket, &s_Rocket[3][0]},
942
    },
943
    {
944
        {ROCKET_R4 + 0, ROCKET_RATE, DoRocket, &s_Rocket[4][0]},
945
    }
946
};
947
 
948
STATEp sg_Rocket[] =
949
{
950
    &s_Rocket[0][0],
951
    &s_Rocket[1][0],
952
    &s_Rocket[2][0],
953
    &s_Rocket[3][0],
954
    &s_Rocket[4][0]
955
};
956
 
957
//////////////////////
958
//
959
// BUNNY ROCKET
960
//
961
//////////////////////
962
 
963
#define BUNNYROCKET_FRAMES 5
964
#define BUNNYROCKET_R0 4550
965
#define BUNNYROCKET_R1 BUNNYROCKET_R0 + (BUNNYROCKET_FRAMES * 1)
966
#define BUNNYROCKET_R2 BUNNYROCKET_R0 + (BUNNYROCKET_FRAMES * 2)
967
#define BUNNYROCKET_R3 BUNNYROCKET_R0 + (BUNNYROCKET_FRAMES * 3)
968
#define BUNNYROCKET_R4 BUNNYROCKET_R0 + (BUNNYROCKET_FRAMES * 4)
969
 
970
ANIMATOR DoRocket;
971
#define BUNNYROCKET_RATE 8
972
 
973
STATE s_BunnyRocket[5][1] =
974
{
975
    {
976
        {BUNNYROCKET_R0 + 2, BUNNYROCKET_RATE, DoRocket, &s_BunnyRocket[0][0]},
977
    },
978
    {
979
        {BUNNYROCKET_R1 + 2, BUNNYROCKET_RATE, DoRocket, &s_BunnyRocket[1][0]},
980
    },
981
    {
982
        {BUNNYROCKET_R2 + 2, BUNNYROCKET_RATE, DoRocket, &s_BunnyRocket[2][0]},
983
    },
984
    {
985
        {BUNNYROCKET_R3 + 2, BUNNYROCKET_RATE, DoRocket, &s_BunnyRocket[3][0]},
986
    },
987
    {
988
        {BUNNYROCKET_R4 + 2, BUNNYROCKET_RATE, DoRocket, &s_BunnyRocket[4][0]},
989
    }
990
};
991
 
992
STATEp sg_BunnyRocket[] =
993
{
994
    &s_BunnyRocket[0][0],
995
    &s_BunnyRocket[1][0],
996
    &s_BunnyRocket[2][0],
997
    &s_BunnyRocket[3][0],
998
    &s_BunnyRocket[4][0]
999
};
1000
 
1001
ANIMATOR DoRail;
1002
#define RAIL_RATE 8
1003
 
1004
STATE s_Rail[5][1] =
1005
{
1006
    {
1007
        {ROCKET_R0 + 0, RAIL_RATE, DoRail, &s_Rail[0][0]},
1008
    },
1009
    {
1010
        {ROCKET_R1 + 0, RAIL_RATE, DoRail, &s_Rail[1][0]},
1011
    },
1012
    {
1013
        {ROCKET_R2 + 0, RAIL_RATE, DoRail, &s_Rail[2][0]},
1014
    },
1015
    {
1016
        {ROCKET_R3 + 0, RAIL_RATE, DoRail, &s_Rail[3][0]},
1017
    },
1018
    {
1019
        {ROCKET_R4 + 0, RAIL_RATE, DoRail, &s_Rail[4][0]},
1020
    }
1021
};
1022
 
1023
STATEp sg_Rail[] =
1024
{
1025
    &s_Rail[0][0],
1026
    &s_Rail[1][0],
1027
    &s_Rail[2][0],
1028
    &s_Rail[3][0],
1029
    &s_Rail[4][0]
1030
};
1031
 
1032
ANIMATOR DoLaser;
1033
#define LASER_RATE 8
1034
 
1035
STATE s_Laser[] =
1036
{
1037
    {ROCKET_R0 + 0, LASER_RATE, DoLaser, &s_Laser[0]}
1038
};
1039
 
1040
//////////////////////
1041
//
1042
// MICRO
1043
//
1044
//////////////////////
1045
 
1046
#define MICRO_FRAMES 1
1047
#define MICRO_R0 2206
1048
#define MICRO_R1 MICRO_R0 + (MICRO_FRAMES * 2)
1049
#define MICRO_R2 MICRO_R0 + (MICRO_FRAMES * 3)
1050
#define MICRO_R3 MICRO_R0 + (MICRO_FRAMES * 4)
1051
#define MICRO_R4 MICRO_R0 + (MICRO_FRAMES * 1)
1052
 
1053
ANIMATOR DoMicro;
1054
#define MICRO_RATE 8
1055
 
1056
#if 0
1057
#define PUFF 1748
1058
#define PUFF_RATE 8
1059
ANIMATOR DoMicroPuffSuicide;
1060
STATE s_MicroPuff[] =
1061
{
1062
    {PUFF + 0, PUFF_RATE, DoPuff, &s_MicroPuff[1]},
1063
    {PUFF + 1, PUFF_RATE, DoPuff, &s_MicroPuff[2]},
1064
    {PUFF + 2, PUFF_RATE, DoPuff, &s_MicroPuff[3]},
1065
    {PUFF + 3, PUFF_RATE, DoPuff, &s_MicroPuff[4]},
1066
    {PUFF + 4, PUFF_RATE, DoPuff, &s_MicroPuff[5]},
1067
    {PUFF + 5, PUFF_RATE, DoPuff, &s_MicroPuff[6]},
1068
    {PUFF + 5, 100, DoMicroPuffSuicide, &s_MicroPuff[6]}
1069
};
1070
#endif
1071
 
1072
STATE s_Micro[5][1] =
1073
{
1074
    {
1075
        {MICRO_R0 + 0, MICRO_RATE, DoMicro, &s_Micro[0][0]},
1076
    },
1077
    {
1078
        {MICRO_R1 + 0, MICRO_RATE, DoMicro, &s_Micro[1][0]},
1079
    },
1080
    {
1081
        {MICRO_R2 + 0, MICRO_RATE, DoMicro, &s_Micro[2][0]},
1082
    },
1083
    {
1084
        {MICRO_R3 + 0, MICRO_RATE, DoMicro, &s_Micro[3][0]},
1085
    },
1086
    {
1087
        {MICRO_R4 + 0, MICRO_RATE, DoMicro, &s_Micro[4][0]},
1088
    }
1089
};
1090
 
1091
STATEp sg_Micro[] =
1092
{
1093
    &s_Micro[0][0],
1094
    &s_Micro[1][0],
1095
    &s_Micro[2][0],
1096
    &s_Micro[3][0],
1097
    &s_Micro[4][0]
1098
};
1099
 
1100
ANIMATOR DoMicroMini;
1101
STATE s_MicroMini[5][1] =
1102
{
1103
    {
1104
        {MICRO_R0 + 0, MICRO_RATE, DoMicroMini, &s_MicroMini[0][0]},
1105
    },
1106
    {
1107
        {MICRO_R1 + 0, MICRO_RATE, DoMicroMini, &s_MicroMini[1][0]},
1108
    },
1109
    {
1110
        {MICRO_R2 + 0, MICRO_RATE, DoMicroMini, &s_MicroMini[2][0]},
1111
    },
1112
    {
1113
        {MICRO_R3 + 0, MICRO_RATE, DoMicroMini, &s_MicroMini[3][0]},
1114
    },
1115
    {
1116
        {MICRO_R4 + 0, MICRO_RATE, DoMicroMini, &s_MicroMini[4][0]},
1117
    }
1118
};
1119
 
1120
STATEp sg_MicroMini[] =
1121
{
1122
    &s_MicroMini[0][0],
1123
    &s_MicroMini[1][0],
1124
    &s_MicroMini[2][0],
1125
    &s_MicroMini[3][0],
1126
    &s_MicroMini[4][0]
1127
};
1128
 
1129
//////////////////////
1130
//
1131
// BOLT THINMAN
1132
//
1133
//////////////////////
1134
 
1135
#define BOLT_THINMAN_RATE 8
1136
ANIMATOR DoBoltThinMan;
1137
 
1138
STATE s_BoltThinMan[5][1] =
1139
{
1140
    {
1141
        {BOLT_THINMAN_R0 + 0, BOLT_THINMAN_RATE, DoBoltThinMan, &s_BoltThinMan[0][0]},
1142
    },
1143
    {
1144
        {BOLT_THINMAN_R1 + 0, BOLT_THINMAN_RATE, DoBoltThinMan, &s_BoltThinMan[1][0]},
1145
    },
1146
    {
1147
        {BOLT_THINMAN_R2 + 0, BOLT_THINMAN_RATE, DoBoltThinMan, &s_BoltThinMan[2][0]},
1148
    },
1149
    {
1150
        {BOLT_THINMAN_R3 + 0, BOLT_THINMAN_RATE, DoBoltThinMan, &s_BoltThinMan[3][0]},
1151
    },
1152
    {
1153
        {BOLT_THINMAN_R4 + 0, BOLT_THINMAN_RATE, DoBoltThinMan, &s_BoltThinMan[4][0]},
1154
    }
1155
};
1156
 
1157
STATEp sg_BoltThinMan[] =
1158
{
1159
    &s_BoltThinMan[0][0],
1160
    &s_BoltThinMan[1][0],
1161
    &s_BoltThinMan[2][0],
1162
    &s_BoltThinMan[3][0],
1163
    &s_BoltThinMan[4][0]
1164
};
1165
 
1166
#define BOLT_SEEKER_RATE 8
1167
ANIMATOR DoBoltSeeker;
1168
 
1169
STATE s_BoltSeeker[5][1] =
1170
{
1171
    {
1172
        {BOLT_THINMAN_R0 + 0, BOLT_SEEKER_RATE, DoBoltSeeker, &s_BoltSeeker[0][0]},
1173
    },
1174
    {
1175
        {BOLT_THINMAN_R1 + 0, BOLT_SEEKER_RATE, DoBoltSeeker, &s_BoltSeeker[1][0]},
1176
    },
1177
    {
1178
        {BOLT_THINMAN_R2 + 0, BOLT_SEEKER_RATE, DoBoltSeeker, &s_BoltSeeker[2][0]},
1179
    },
1180
    {
1181
        {BOLT_THINMAN_R3 + 0, BOLT_SEEKER_RATE, DoBoltSeeker, &s_BoltSeeker[3][0]},
1182
    },
1183
    {
1184
        {BOLT_THINMAN_R4 + 0, BOLT_SEEKER_RATE, DoBoltSeeker, &s_BoltSeeker[4][0]},
1185
    }
1186
};
1187
 
1188
STATEp sg_BoltSeeker[] =
1189
{
1190
    &s_BoltSeeker[0][0],
1191
    &s_BoltSeeker[1][0],
1192
    &s_BoltSeeker[2][0],
1193
    &s_BoltSeeker[3][0],
1194
    &s_BoltSeeker[4][0]
1195
};
1196
 
1197
 
1198
#define BOLT_FATMAN STAR
1199
#define BOLT_FATMAN_RATE 8
1200
ANIMATOR DoBoltFatMan;
1201
 
1202
STATE s_BoltFatMan[] =
1203
{
1204
    {BOLT_FATMAN + 0, BOLT_FATMAN_RATE, DoBoltFatMan, &s_BoltFatMan[1]},
1205
    {BOLT_FATMAN + 1, BOLT_FATMAN_RATE, DoBoltFatMan, &s_BoltFatMan[2]},
1206
    {BOLT_FATMAN + 2, BOLT_FATMAN_RATE, DoBoltFatMan, &s_BoltFatMan[3]},
1207
    {BOLT_FATMAN + 3, BOLT_FATMAN_RATE, DoBoltFatMan, &s_BoltFatMan[0]}
1208
};
1209
 
1210
 
1211
#define BOLT_SHRAPNEL STAR
1212
#define BOLT_SHRAPNEL_RATE 8
1213
ANIMATOR DoBoltShrapnel;
1214
 
1215
STATE s_BoltShrapnel[] =
1216
{
1217
    {BOLT_SHRAPNEL + 0, BOLT_SHRAPNEL_RATE, DoBoltShrapnel, &s_BoltShrapnel[1]},
1218
    {BOLT_SHRAPNEL + 1, BOLT_SHRAPNEL_RATE, DoBoltShrapnel, &s_BoltShrapnel[2]},
1219
    {BOLT_SHRAPNEL + 2, BOLT_SHRAPNEL_RATE, DoBoltShrapnel, &s_BoltShrapnel[3]},
1220
    {BOLT_SHRAPNEL + 3, BOLT_SHRAPNEL_RATE, DoBoltShrapnel, &s_BoltShrapnel[0]}
1221
};
1222
 
1223
#define COOLG_FIRE 2430
1224
//#define COOLG_FIRE 1465
1225
#define COOLG_FIRE_RATE 8
1226
ANIMATOR DoCoolgFire;
1227
 
1228
STATE s_CoolgFire[] =
1229
{
1230
    {2031 + 0, COOLG_FIRE_RATE, DoCoolgFire, &s_CoolgFire[1]},
1231
    {2031 + 1, COOLG_FIRE_RATE, DoCoolgFire, &s_CoolgFire[2]},
1232
    {2031 + 2, COOLG_FIRE_RATE, DoCoolgFire, &s_CoolgFire[3]},
1233
    {2031 + 3, COOLG_FIRE_RATE, DoCoolgFire, &s_CoolgFire[0]}
1234
};
1235
 
1236
#define COOLG_FIRE_DONE 2410
1237
//#define COOLG_FIRE_DONE 1466
1238
//#define COOLG_FIRE_DONE_RATE 8
1239
#define COOLG_FIRE_DONE_RATE 3
1240
 
1241
STATE s_CoolgFireDone[] =
1242
{
1243
    {COOLG_FIRE_DONE + 0, COOLG_FIRE_DONE_RATE, NullAnimator, &s_CoolgFireDone[1]},
1244
    {COOLG_FIRE_DONE + 1, COOLG_FIRE_DONE_RATE, NullAnimator, &s_CoolgFireDone[2]},
1245
    {COOLG_FIRE_DONE + 2, COOLG_FIRE_DONE_RATE, NullAnimator, &s_CoolgFireDone[3]},
1246
    {COOLG_FIRE_DONE + 3, COOLG_FIRE_DONE_RATE, NullAnimator, &s_CoolgFireDone[4]},
1247
    {COOLG_FIRE_DONE + 4, COOLG_FIRE_DONE_RATE, NullAnimator, &s_CoolgFireDone[5]},
1248
    {COOLG_FIRE_DONE + 4, COOLG_FIRE_DONE_RATE, DoSuicide, &s_CoolgFireDone[5]}
1249
};
1250
 
1251
ANIMATOR DoCoolgDrip;
1252
#define COOLG_DRIP 1720
1253
STATE s_CoolgDrip[] =
1254
{
1255
    {COOLG_DRIP + 0, 100, DoCoolgDrip, &s_CoolgDrip[0]}
1256
};
1257
 
1258
#define GORE_FLOOR_SPLASH_RATE 8
1259
#define GORE_FLOOR_SPLASH 1710
1260
STATE s_GoreFloorSplash[] =
1261
{
1262
    {GORE_FLOOR_SPLASH + 0, GORE_FLOOR_SPLASH_RATE, NullAnimator, &s_GoreFloorSplash[1]},
1263
    {GORE_FLOOR_SPLASH + 1, GORE_FLOOR_SPLASH_RATE, NullAnimator, &s_GoreFloorSplash[2]},
1264
    {GORE_FLOOR_SPLASH + 2, GORE_FLOOR_SPLASH_RATE, NullAnimator, &s_GoreFloorSplash[3]},
1265
    {GORE_FLOOR_SPLASH + 3, GORE_FLOOR_SPLASH_RATE, NullAnimator, &s_GoreFloorSplash[4]},
1266
    {GORE_FLOOR_SPLASH + 4, GORE_FLOOR_SPLASH_RATE, NullAnimator, &s_GoreFloorSplash[5]},
1267
    {GORE_FLOOR_SPLASH + 5, GORE_FLOOR_SPLASH_RATE, NullAnimator, &s_GoreFloorSplash[6]},
1268
    {GORE_FLOOR_SPLASH + 5, GORE_FLOOR_SPLASH_RATE, DoSuicide, &s_GoreFloorSplash[6]}
1269
};
1270
 
1271
#define GORE_SPLASH_RATE 8
1272
#define GORE_SPLASH 2410
1273
STATE s_GoreSplash[] =
1274
{
1275
    {GORE_SPLASH + 0, GORE_SPLASH_RATE, NullAnimator, &s_GoreSplash[1]},
1276
    {GORE_SPLASH + 1, GORE_SPLASH_RATE, NullAnimator, &s_GoreSplash[2]},
1277
    {GORE_SPLASH + 2, GORE_SPLASH_RATE, NullAnimator, &s_GoreSplash[3]},
1278
    {GORE_SPLASH + 3, GORE_SPLASH_RATE, NullAnimator, &s_GoreSplash[4]},
1279
    {GORE_SPLASH + 4, GORE_SPLASH_RATE, NullAnimator, &s_GoreSplash[5]},
1280
    {GORE_SPLASH + 5, GORE_SPLASH_RATE, NullAnimator, &s_GoreSplash[6]},
1281
    {GORE_SPLASH + 5, GORE_SPLASH_RATE, DoSuicide, &s_GoreSplash[6]}
1282
};
1283
 
1284
//////////////////////////////////////////////
1285
//
1286
//  HEART ATTACK & PLASMA
1287
//
1288
//////////////////////////////////////////////
1289
 
1290
#define PLASMA 1562 //2058
1291
#define PLASMA_FOUNTAIN 2058+1
1292
#define PLASMA_RATE 8
1293
#define PLASMA_FOUNTAIN_TIME (3*120);
1294
 
1295
ANIMATOR DoPlasma;
1296
 
1297
// regular bolt from heart
1298
STATE s_Plasma[] =
1299
{
1300
    {PLASMA + 0, PLASMA_RATE, DoPlasma, &s_Plasma[1]},
1301
    {PLASMA + 1, PLASMA_RATE, DoPlasma, &s_Plasma[2]},
1302
    {PLASMA + 2, PLASMA_RATE, DoPlasma, &s_Plasma[0]}
1303
};
1304
 
1305
ANIMATOR DoPlasmaFountain;
1306
 
1307
// follows actor spewing blood
1308
#define PLASMA_Drip 1562 //2420
1309
STATE s_PlasmaFountain[] =
1310
{
1311
    {PLASMA_Drip + 0, PLASMA_RATE, DoPlasmaFountain, &s_PlasmaFountain[1]},
1312
    {PLASMA_Drip + 1, PLASMA_RATE, DoPlasmaFountain, &s_PlasmaFountain[2]},
1313
    {PLASMA_Drip + 2, PLASMA_RATE, DoPlasmaFountain, &s_PlasmaFountain[3]},
1314
    {PLASMA_Drip + 3, PLASMA_RATE, DoPlasmaFountain, &s_PlasmaFountain[0]},
1315
};
1316
 
1317
#define PLASMA_Drip_RATE 12
1318
STATE s_PlasmaDrip[] =
1319
{
1320
    {PLASMA_Drip + 0, PLASMA_Drip_RATE, DoShrapJumpFall, &s_PlasmaDrip[1]},
1321
    {PLASMA_Drip + 1, PLASMA_Drip_RATE, DoShrapJumpFall, &s_PlasmaDrip[2]},
1322
    {PLASMA_Drip + 2, PLASMA_Drip_RATE, DoShrapJumpFall, &s_PlasmaDrip[3]},
1323
    {PLASMA_Drip + 3, PLASMA_Drip_RATE, DoShrapJumpFall, &s_PlasmaDrip[4]},
1324
    {PLASMA_Drip + 4, PLASMA_Drip_RATE, DoShrapJumpFall, &s_PlasmaDrip[5]},
1325
    {PLASMA_Drip + 5, PLASMA_Drip_RATE, DoShrapJumpFall, &s_PlasmaDrip[6]},
1326
    {PLASMA_Drip + 7, PLASMA_Drip_RATE, DoSuicide, &s_PlasmaDrip[6]}
1327
};
1328
 
1329
#define PLASMA_DONE 2061
1330
#define PLASMA_DONE_RATE 15
1331
 
1332
ANIMATOR DoPlasmaDone;
1333
 
1334
STATE s_PlasmaDone[] =
1335
{
1336
    {PLASMA + 0, PLASMA_DONE_RATE, DoPlasmaDone, &s_PlasmaDone[1]},
1337
    {PLASMA + 2, PLASMA_DONE_RATE, DoPlasmaDone, &s_PlasmaDone[2]},
1338
    {PLASMA + 1, PLASMA_DONE_RATE, DoPlasmaDone, &s_PlasmaDone[0]}
1339
};
1340
 
1341
#define TELEPORT_EFFECT 3240
1342
#define TELEPORT_EFFECT_RATE 6
1343
ANIMATOR DoTeleportEffect;
1344
STATE s_TeleportEffect[] =
1345
{
1346
    {TELEPORT_EFFECT + 0, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect[1]},
1347
    {TELEPORT_EFFECT + 1, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect[2]},
1348
    {TELEPORT_EFFECT + 2, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect[3]},
1349
    {TELEPORT_EFFECT + 3, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect[4]},
1350
    {TELEPORT_EFFECT + 4, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect[5]},
1351
    {TELEPORT_EFFECT + 5, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect[6]},
1352
    {TELEPORT_EFFECT + 6, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect[7]},
1353
    {TELEPORT_EFFECT + 7, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect[8]},
1354
    {TELEPORT_EFFECT + 8, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect[9]},
1355
    {TELEPORT_EFFECT + 9, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect[10]},
1356
    {TELEPORT_EFFECT + 10, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect[11]},
1357
    {TELEPORT_EFFECT + 11, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect[12]},
1358
    {TELEPORT_EFFECT + 12, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect[13]},
1359
    {TELEPORT_EFFECT + 13, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect[14]},
1360
    {TELEPORT_EFFECT + 14, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect[15]},
1361
    {TELEPORT_EFFECT + 15, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect[16]},
1362
    {TELEPORT_EFFECT + 16, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect[17]},
1363
    {TELEPORT_EFFECT + 17, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect[18]},
1364
    {TELEPORT_EFFECT + 17, TELEPORT_EFFECT_RATE, DoSuicide, &s_TeleportEffect[18]},
1365
};
1366
 
1367
// Spawn a RIPPER teleport effect
1368
ANIMATOR DoTeleRipper;
1369
STATE s_TeleportEffect2[] =
1370
{
1371
    {TELEPORT_EFFECT + 0, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect2[1]},
1372
    {TELEPORT_EFFECT + 1, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect2[2]},
1373
    {TELEPORT_EFFECT + 2, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect2[3]},
1374
    {TELEPORT_EFFECT + 3, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect2[4]},
1375
    {TELEPORT_EFFECT + 4, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect2[5]},
1376
    {TELEPORT_EFFECT + 5, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect2[6]},
1377
    {TELEPORT_EFFECT + 6, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect2[7]},
1378
    {TELEPORT_EFFECT + 7, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect2[8]},
1379
    {TELEPORT_EFFECT + 8, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect2[9]},
1380
    {TELEPORT_EFFECT + 9, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect2[10]},
1381
    {TELEPORT_EFFECT + 10, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect2[11]},
1382
    {TELEPORT_EFFECT + 11, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect2[12]},
1383
    {TELEPORT_EFFECT + 12, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect2[13]},
1384
    {TELEPORT_EFFECT + 13, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect2[14]},
1385
    {TELEPORT_EFFECT + 14, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect2[15]},
1386
    {TELEPORT_EFFECT + 15, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect2[16]},
1387
    {TELEPORT_EFFECT + 16, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect2[17]},
1388
    {TELEPORT_EFFECT + 17, TELEPORT_EFFECT_RATE, NullAnimator, &s_TeleportEffect2[18]},
1389
    {TELEPORT_EFFECT + 17, SF_QUICK_CALL, DoTeleRipper, &s_TeleportEffect2[19]},
1390
    {TELEPORT_EFFECT + 17, TELEPORT_EFFECT_RATE, DoSuicide, &s_TeleportEffect2[19]},
1391
};
1392
 
1393
 
1394
ANIMATOR DoElectro;
1395
#define ELECTRO_SNAKE 2073
1396
#define ELECTRO_PLAYER (ELECTRO)
1397
#define ELECTRO_ENEMY (ELECTRO + 1)
1398
#define ELECTRO_SHARD (ELECTRO + 2)
1399
 
1400
STATE s_Electro[] =
1401
{
1402
    {ELECTRO + 0, 12, DoElectro, &s_Electro[1]},
1403
    {ELECTRO + 1, 12, DoElectro, &s_Electro[2]},
1404
    {ELECTRO + 2, 12, DoElectro, &s_Electro[3]},
1405
    {ELECTRO + 3, 12, DoElectro, &s_Electro[0]}
1406
};
1407
 
1408
STATE s_ElectroShrap[] =
1409
{
1410
    {ELECTRO + 0, 12, DoShrapDamage, &s_ElectroShrap[1]},
1411
    {ELECTRO + 1, 12, DoShrapDamage, &s_ElectroShrap[2]},
1412
    {ELECTRO + 2, 12, DoShrapDamage, &s_ElectroShrap[3]},
1413
    {ELECTRO + 3, 12, DoShrapDamage, &s_ElectroShrap[0]}
1414
};
1415
 
1416
//////////////////////
1417
//
1418
// EXPS
1419
//
1420
//////////////////////
1421
#define GRENADE_EXP 3121
1422
#define MINE_EXP GRENADE_EXP+1
1423
#define GRENADE_EXP_RATE 6
1424
 
1425
#if 0
1426
STATE s_GrenadeExp[] =
1427
{
1428
    {GRENADE_EXP + 0, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[1]},
1429
    {GRENADE_EXP + 1, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[2]},
1430
    {GRENADE_EXP + 2, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[3]},
1431
    {GRENADE_EXP + 3, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[4]},
1432
    {GRENADE_EXP + 4, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[5]},
1433
    {GRENADE_EXP + 5, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[6]},
1434
    {GRENADE_EXP + 6, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[7]},
1435
    {GRENADE_EXP + 7, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[8]},
1436
    {GRENADE_EXP + 8, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[9]},
1437
    {GRENADE_EXP + 9, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[10]},
1438
    {GRENADE_EXP + 10, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[11]},
1439
    {GRENADE_EXP + 11, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[12]},
1440
    {GRENADE_EXP + 12, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[13]},
1441
    {GRENADE_EXP + 13, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[14]},
1442
    {GRENADE_EXP + 14, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[15]},
1443
    {GRENADE_EXP + 15, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[16]},
1444
    {GRENADE_EXP + 16, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[17]},
1445
    {GRENADE_EXP + 17, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[18]},
1446
    {GRENADE_EXP + 18, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[19]},
1447
    {GRENADE_EXP + 19, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[20]},
1448
    {GRENADE_EXP + 20, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[21]},
1449
    {GRENADE_EXP + 21, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[22]},
1450
    {GRENADE_EXP + 21, 100, DoSuicide, &s_GrenadeExp[22]}
1451
};
1452
#else
1453
STATE s_GrenadeSmallExp[] =
1454
{
1455
    {GRENADE_EXP + 0, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeSmallExp[1]},
1456
    {GRENADE_EXP + 1, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeSmallExp[2]},
1457
    {GRENADE_EXP + 2, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeSmallExp[3]},
1458
    {GRENADE_EXP + 3, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeSmallExp[4]},
1459
    {GRENADE_EXP + 4, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeSmallExp[5]},
1460
    {GRENADE_EXP + 5, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeSmallExp[6]},
1461
    {GRENADE_EXP + 6, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeSmallExp[7]},
1462
    {GRENADE_EXP + 7, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeSmallExp[8]},
1463
    {GRENADE_EXP + 8, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeSmallExp[9]},
1464
    {GRENADE_EXP + 9, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeSmallExp[10]},
1465
    {GRENADE_EXP + 10, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeSmallExp[11]},
1466
    {GRENADE_EXP + 11, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeSmallExp[12]},
1467
    {GRENADE_EXP + 12, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeSmallExp[13]},
1468
    {GRENADE_EXP + 13, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeSmallExp[14]},
1469
    {GRENADE_EXP + 14, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeSmallExp[15]},
1470
    {GRENADE_EXP + 15, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeSmallExp[16]},
1471
    {GRENADE_EXP + 16, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeSmallExp[17]},
1472
    {GRENADE_EXP + 17, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeSmallExp[18]},
1473
    {GRENADE_EXP + 18, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeSmallExp[19]},
1474
    {GRENADE_EXP + 19, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeSmallExp[20]},
1475
    {GRENADE_EXP + 20, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeSmallExp[21]},
1476
    {GRENADE_EXP + 21, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeSmallExp[22]},
1477
    {GRENADE_EXP + 21, 100, DoSuicide, &s_GrenadeSmallExp[22]}
1478
};
1479
 
1480
ANIMATOR SpawnGrenadeSmallExp;
1481
STATE s_GrenadeExp[] =
1482
{
1483
    {GRENADE_EXP + 0, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[1]},
1484
    {GRENADE_EXP + 1, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[2]},
1485
    {GRENADE_EXP + 2, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[3]},
1486
    {GRENADE_EXP + 3, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[4]},
1487
    {GRENADE_EXP + 4, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[5]},
1488
    {GRENADE_EXP + 5, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[6]},
1489
    {GRENADE_EXP + 6, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[7]},
1490
    {GRENADE_EXP + 6, SF_QUICK_CALL,     SpawnGrenadeSmallExp, &s_GrenadeExp[8]},
1491
    {GRENADE_EXP + 7, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[9]},
1492
    {GRENADE_EXP + 8, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[10]},
1493
    {GRENADE_EXP + 9, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[11]},
1494
    {GRENADE_EXP + 10, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[12]},
1495
    {GRENADE_EXP + 11, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[13]},
1496
    {GRENADE_EXP + 12, SF_QUICK_CALL,     SpawnGrenadeSmallExp, &s_GrenadeExp[14]},
1497
    {GRENADE_EXP + 12, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[15]},
1498
    {GRENADE_EXP + 13, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[16]},
1499
    {GRENADE_EXP + 14, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[17]},
1500
    {GRENADE_EXP + 15, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[18]},
1501
    {GRENADE_EXP + 16, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[19]},
1502
    {GRENADE_EXP + 17, SF_QUICK_CALL,     SpawnGrenadeSmallExp, &s_GrenadeExp[20]},
1503
    {GRENADE_EXP + 17, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[21]},
1504
    {GRENADE_EXP + 18, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[22]},
1505
    {GRENADE_EXP + 19, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[23]},
1506
    {GRENADE_EXP + 20, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[24]},
1507
    {GRENADE_EXP + 21, GRENADE_EXP_RATE, NullAnimator, &s_GrenadeExp[25]},
1508
    {GRENADE_EXP + 21, 100, DoSuicide, &s_GrenadeExp[25]}
1509
};
1510
#endif
1511
 
1512
#define MINE_EXP GRENADE_EXP+1
1513
ANIMATOR DoMineExp, DoMineExpMine;
1514
STATE s_MineExp[] =
1515
{
1516
    {GRENADE_EXP + 0, GRENADE_EXP_RATE, NullAnimator, &s_MineExp[1]},
1517
    {GRENADE_EXP + 1, GRENADE_EXP_RATE, NullAnimator, &s_MineExp[2]},
1518
    {GRENADE_EXP + 2, GRENADE_EXP_RATE, NullAnimator, &s_MineExp[3]},
1519
    {GRENADE_EXP + 3, 0|SF_QUICK_CALL, DoMineExp, &s_MineExp[4]},
1520
    {GRENADE_EXP + 3, GRENADE_EXP_RATE, NullAnimator, &s_MineExp[5]},
1521
    {GRENADE_EXP + 4, GRENADE_EXP_RATE, NullAnimator, &s_MineExp[6]},
1522
    {GRENADE_EXP + 5, GRENADE_EXP_RATE, NullAnimator, &s_MineExp[7]},
1523
    {GRENADE_EXP + 6, GRENADE_EXP_RATE, NullAnimator, &s_MineExp[8]},
1524
    {GRENADE_EXP + 7, GRENADE_EXP_RATE, NullAnimator, &s_MineExp[9]},
1525
    {GRENADE_EXP + 8, GRENADE_EXP_RATE, NullAnimator, &s_MineExp[10]},
1526
    {GRENADE_EXP + 9, GRENADE_EXP_RATE, NullAnimator, &s_MineExp[11]},
1527
    {GRENADE_EXP + 10, GRENADE_EXP_RATE, NullAnimator, &s_MineExp[12]},
1528
    {GRENADE_EXP + 11, GRENADE_EXP_RATE, NullAnimator, &s_MineExp[13]},
1529
    {GRENADE_EXP + 12, GRENADE_EXP_RATE, NullAnimator, &s_MineExp[14]},
1530
    {GRENADE_EXP + 13, GRENADE_EXP_RATE, NullAnimator, &s_MineExp[15]},
1531
    {GRENADE_EXP + 14, GRENADE_EXP_RATE, NullAnimator, &s_MineExp[16]},
1532
    {GRENADE_EXP + 15, GRENADE_EXP_RATE, NullAnimator, &s_MineExp[17]},
1533
    {GRENADE_EXP + 16, GRENADE_EXP_RATE, NullAnimator, &s_MineExp[18]},
1534
    {GRENADE_EXP + 17, GRENADE_EXP_RATE, NullAnimator, &s_MineExp[19]},
1535
    {GRENADE_EXP + 17, 0|SF_QUICK_CALL, DoMineExpMine, &s_MineExp[20]},
1536
    {GRENADE_EXP + 18, GRENADE_EXP_RATE, NullAnimator, &s_MineExp[21]},
1537
    {GRENADE_EXP + 19, GRENADE_EXP_RATE, NullAnimator, &s_MineExp[22]},
1538
    {GRENADE_EXP + 20, GRENADE_EXP_RATE, NullAnimator, &s_MineExp[23]},
1539
    {GRENADE_EXP + 21, GRENADE_EXP_RATE, NullAnimator, &s_MineExp[24]},
1540
    {GRENADE_EXP + 21, 100, DoSuicide, &s_MineExp[24]}
1541
};
1542
 
1543
#define EXP_RATE 7
1544
#define BOLT_EXP EXP
1545
#define FIREBALL_EXP EXP+1
1546
#define BASIC_EXP EXP+2
1547
#define SECTOR_EXP EXP+3
1548
#define MICRO_EXP EXP+5
1549
#define TRACER_EXP EXP+6
1550
#define TANK_SHELL_EXP EXP+7
1551
 
1552
STATE s_BasicExp[] =
1553
{
1554
    {EXP + 0, EXP_RATE, NullAnimator, &s_BasicExp[1]},
1555
    {EXP + 1, EXP_RATE, NullAnimator, &s_BasicExp[2]},
1556
    {EXP + 2, EXP_RATE, NullAnimator, &s_BasicExp[3]},
1557
    {EXP + 3, EXP_RATE, NullAnimator, &s_BasicExp[4]},
1558
    {EXP + 4, EXP_RATE, NullAnimator, &s_BasicExp[5]},
1559
    {EXP + 5, EXP_RATE, NullAnimator, &s_BasicExp[6]},
1560
    {EXP + 6, EXP_RATE, NullAnimator, &s_BasicExp[7]},
1561
    {EXP + 7, EXP_RATE, NullAnimator, &s_BasicExp[8]},
1562
    {EXP + 8, EXP_RATE, NullAnimator, &s_BasicExp[9]},
1563
    {EXP + 9, EXP_RATE, NullAnimator, &s_BasicExp[10]},
1564
    {EXP + 10, EXP_RATE, NullAnimator, &s_BasicExp[11]},
1565
    {EXP + 11, EXP_RATE, NullAnimator, &s_BasicExp[12]},
1566
    {EXP + 12, EXP_RATE, NullAnimator, &s_BasicExp[13]},
1567
    {EXP + 13, EXP_RATE, NullAnimator, &s_BasicExp[14]},
1568
    {EXP + 14, EXP_RATE, NullAnimator, &s_BasicExp[15]},
1569
    {EXP + 15, EXP_RATE, NullAnimator, &s_BasicExp[16]},
1570
    {EXP + 16, EXP_RATE, NullAnimator, &s_BasicExp[17]},
1571
    {EXP + 17, EXP_RATE, NullAnimator, &s_BasicExp[18]},
1572
    {EXP + 18, EXP_RATE, NullAnimator, &s_BasicExp[19]},
1573
    {EXP + 19, EXP_RATE, NullAnimator, &s_BasicExp[20]},
1574
    {EXP + 20, 100, DoSuicide, &s_BasicExp[0]}
1575
};
1576
 
1577
#define MICRO_EXP_RATE 3
1578
ANIMATOR DoExpDamageTest;
1579
 
1580
STATE s_MicroExp[] =
1581
{
1582
    {EXP + 0, MICRO_EXP_RATE, NullAnimator, &s_MicroExp[1]},
1583
    {EXP + 0, SF_QUICK_CALL,  DoExpDamageTest,   &s_MicroExp[2]},
1584
    {EXP + 1, MICRO_EXP_RATE, NullAnimator, &s_MicroExp[3]},
1585
    {EXP + 2, MICRO_EXP_RATE, NullAnimator, &s_MicroExp[4]},
1586
    {EXP + 3, MICRO_EXP_RATE, NullAnimator, &s_MicroExp[5]},
1587
    {EXP + 4, MICRO_EXP_RATE, NullAnimator, &s_MicroExp[6]},
1588
    {EXP + 5, MICRO_EXP_RATE, NullAnimator, &s_MicroExp[7]},
1589
    {EXP + 6, MICRO_EXP_RATE, NullAnimator, &s_MicroExp[8]},
1590
    {EXP + 7, MICRO_EXP_RATE, NullAnimator, &s_MicroExp[9]},
1591
    {EXP + 8, MICRO_EXP_RATE, NullAnimator, &s_MicroExp[10]},
1592
    {EXP + 9, MICRO_EXP_RATE, NullAnimator, &s_MicroExp[11]},
1593
    {EXP + 10, MICRO_EXP_RATE, NullAnimator, &s_MicroExp[12]},
1594
    {EXP + 11, MICRO_EXP_RATE, NullAnimator, &s_MicroExp[13]},
1595
    {EXP + 12, MICRO_EXP_RATE, NullAnimator, &s_MicroExp[14]},
1596
    {EXP + 13, MICRO_EXP_RATE, NullAnimator, &s_MicroExp[15]},
1597
    {EXP + 14, MICRO_EXP_RATE, NullAnimator, &s_MicroExp[16]},
1598
    {EXP + 15, MICRO_EXP_RATE, NullAnimator, &s_MicroExp[17]},
1599
    {EXP + 16, MICRO_EXP_RATE, NullAnimator, &s_MicroExp[18]},
1600
    {EXP + 17, MICRO_EXP_RATE, NullAnimator, &s_MicroExp[19]},
1601
    {EXP + 18, MICRO_EXP_RATE, NullAnimator, &s_MicroExp[20]},
1602
    {EXP + 19, MICRO_EXP_RATE, NullAnimator, &s_MicroExp[21]},
1603
    {EXP + 20, MICRO_EXP_RATE, NullAnimator, &s_MicroExp[22]},
1604
    {EXP + 20, 100, DoSuicide, &s_MicroExp[22]}
1605
};
1606
 
1607
 
1608
#define BIG_GUN_FLAME_RATE 15
1609
STATE s_BigGunFlame[] =
1610
{
1611
    // first 3 frames
1612
    {EXP + 0, BIG_GUN_FLAME_RATE, NullAnimator, &s_BigGunFlame[1]},
1613
    {EXP + 1, BIG_GUN_FLAME_RATE, NullAnimator, &s_BigGunFlame[2]},
1614
    {EXP + 2, BIG_GUN_FLAME_RATE, NullAnimator, &s_BigGunFlame[3]},
1615
    // last 4 frames frames
1616
    {EXP + 17, BIG_GUN_FLAME_RATE, NullAnimator, &s_BigGunFlame[4]},
1617
    {EXP + 18, BIG_GUN_FLAME_RATE, NullAnimator, &s_BigGunFlame[5]},
1618
    {EXP + 19, BIG_GUN_FLAME_RATE, NullAnimator, &s_BigGunFlame[6]},
1619
    {EXP + 20, BIG_GUN_FLAME_RATE, NullAnimator, &s_BigGunFlame[7]},
1620
    {EXP + 20, 100, DoSuicide, &s_BigGunFlame[0]}
1621
};
1622
 
1623
STATE s_BoltExp[] =
1624
{
1625
    {EXP + 0, EXP_RATE, NullAnimator, &s_BoltExp[1]},
1626
    {EXP + 0, SF_QUICK_CALL,  NullAnimator,  &s_BoltExp[2]},
1627
    {EXP + 0, SF_QUICK_CALL,  SpawnShrapX,   &s_BoltExp[3]},
1628
    {EXP + 1, EXP_RATE, NullAnimator, &s_BoltExp[4]},
1629
    {EXP + 2, EXP_RATE, NullAnimator, &s_BoltExp[5]},
1630
    {EXP + 3, EXP_RATE, NullAnimator, &s_BoltExp[6]},
1631
    {EXP + 4, EXP_RATE, NullAnimator, &s_BoltExp[7]},
1632
    {EXP + 5, EXP_RATE, NullAnimator, &s_BoltExp[8]},
1633
    {EXP + 6, EXP_RATE, NullAnimator, &s_BoltExp[9]},
1634
    {EXP + 7, EXP_RATE, NullAnimator, &s_BoltExp[10]},
1635
    {EXP + 7, SF_QUICK_CALL,  SpawnShrapX,   &s_BoltExp[11]},
1636
    {EXP + 8, EXP_RATE, NullAnimator, &s_BoltExp[12]},
1637
    {EXP + 9, EXP_RATE, NullAnimator, &s_BoltExp[13]},
1638
    {EXP + 10, EXP_RATE, NullAnimator, &s_BoltExp[14]},
1639
    {EXP + 11, EXP_RATE, NullAnimator, &s_BoltExp[15]},
1640
    {EXP + 12, EXP_RATE, NullAnimator, &s_BoltExp[16]},
1641
    {EXP + 13, EXP_RATE, NullAnimator, &s_BoltExp[17]},
1642
    {EXP + 14, EXP_RATE, NullAnimator, &s_BoltExp[18]},
1643
    {EXP + 15, EXP_RATE, NullAnimator, &s_BoltExp[19]},
1644
    {EXP + 16, EXP_RATE, NullAnimator, &s_BoltExp[20]},
1645
    {EXP + 17, EXP_RATE, NullAnimator, &s_BoltExp[21]},
1646
    {EXP + 18, EXP_RATE, NullAnimator, &s_BoltExp[22]},
1647
    {EXP + 19, EXP_RATE, NullAnimator, &s_BoltExp[23]},
1648
    {EXP + 20, EXP_RATE, NullAnimator, &s_BoltExp[24]},
1649
    {EXP + 20, 100, DoSuicide, &s_BoltExp[0]}
1650
};
1651
 
1652
STATE s_TankShellExp[] =
1653
{
1654
    {EXP + 0, EXP_RATE, NullAnimator, &s_TankShellExp[1]},
1655
    {EXP + 0, SF_QUICK_CALL,  NullAnimator,  &s_TankShellExp[2]},
1656
    {EXP + 0, SF_QUICK_CALL,  SpawnShrapX,   &s_TankShellExp[3]},
1657
    {EXP + 1, EXP_RATE, NullAnimator, &s_TankShellExp[4]},
1658
    {EXP + 2, EXP_RATE, NullAnimator, &s_TankShellExp[5]},
1659
    {EXP + 3, EXP_RATE, NullAnimator, &s_TankShellExp[6]},
1660
    {EXP + 4, EXP_RATE, NullAnimator, &s_TankShellExp[7]},
1661
    {EXP + 5, EXP_RATE, NullAnimator, &s_TankShellExp[8]},
1662
    {EXP + 6, EXP_RATE, NullAnimator, &s_TankShellExp[9]},
1663
    {EXP + 7, EXP_RATE, NullAnimator, &s_TankShellExp[10]},
1664
    {EXP + 7, SF_QUICK_CALL,  SpawnShrapX,   &s_TankShellExp[11]},
1665
    {EXP + 8, EXP_RATE, NullAnimator, &s_TankShellExp[12]},
1666
    {EXP + 9, EXP_RATE, NullAnimator, &s_TankShellExp[13]},
1667
    {EXP + 10, EXP_RATE, NullAnimator, &s_TankShellExp[14]},
1668
    {EXP + 11, EXP_RATE, NullAnimator, &s_TankShellExp[15]},
1669
    {EXP + 12, EXP_RATE, NullAnimator, &s_TankShellExp[16]},
1670
    {EXP + 13, EXP_RATE, NullAnimator, &s_TankShellExp[17]},
1671
    {EXP + 14, EXP_RATE, NullAnimator, &s_TankShellExp[18]},
1672
    {EXP + 15, EXP_RATE, NullAnimator, &s_TankShellExp[19]},
1673
    {EXP + 16, EXP_RATE, NullAnimator, &s_TankShellExp[20]},
1674
    {EXP + 17, EXP_RATE, NullAnimator, &s_TankShellExp[21]},
1675
    {EXP + 18, EXP_RATE, NullAnimator, &s_TankShellExp[22]},
1676
    {EXP + 19, EXP_RATE, NullAnimator, &s_TankShellExp[23]},
1677
    {EXP + 20, EXP_RATE, NullAnimator, &s_TankShellExp[24]},
1678
    {EXP + 20, 100, DoSuicide, &s_TankShellExp[0]}
1679
};
1680
 
1681
#define TRACER_EXP_RATE 4
1682
STATE s_TracerExp[] =
1683
{
1684
    {EXP + 0, TRACER_EXP_RATE, NullAnimator, &s_TracerExp[1]},
1685
    {EXP + 0, SF_QUICK_CALL,  NullAnimator,  &s_TracerExp[2]},
1686
    {EXP + 0, SF_QUICK_CALL,  NullAnimator,   &s_TracerExp[3]},
1687
    {EXP + 1, TRACER_EXP_RATE, NullAnimator, &s_TracerExp[4]},
1688
    {EXP + 2, TRACER_EXP_RATE, NullAnimator, &s_TracerExp[5]},
1689
    {EXP + 3, TRACER_EXP_RATE, NullAnimator, &s_TracerExp[6]},
1690
    {EXP + 4, TRACER_EXP_RATE, NullAnimator, &s_TracerExp[7]},
1691
    {EXP + 5, TRACER_EXP_RATE, NullAnimator, &s_TracerExp[8]},
1692
    {EXP + 6, TRACER_EXP_RATE, NullAnimator, &s_TracerExp[9]},
1693
    {EXP + 7, TRACER_EXP_RATE, NullAnimator, &s_TracerExp[10]},
1694
    {EXP + 7, SF_QUICK_CALL,  NullAnimator,   &s_TracerExp[11]},
1695
    {EXP + 8, TRACER_EXP_RATE, NullAnimator, &s_TracerExp[12]},
1696
    {EXP + 9, TRACER_EXP_RATE, NullAnimator, &s_TracerExp[13]},
1697
    {EXP + 10, TRACER_EXP_RATE, NullAnimator, &s_TracerExp[14]},
1698
    {EXP + 11, TRACER_EXP_RATE, NullAnimator, &s_TracerExp[15]},
1699
    {EXP + 12, TRACER_EXP_RATE, NullAnimator, &s_TracerExp[16]},
1700
    {EXP + 13, TRACER_EXP_RATE, NullAnimator, &s_TracerExp[17]},
1701
    {EXP + 14, TRACER_EXP_RATE, NullAnimator, &s_TracerExp[18]},
1702
    {EXP + 15, TRACER_EXP_RATE, NullAnimator, &s_TracerExp[19]},
1703
    {EXP + 16, TRACER_EXP_RATE, NullAnimator, &s_TracerExp[20]},
1704
    {EXP + 17, TRACER_EXP_RATE, NullAnimator, &s_TracerExp[21]},
1705
    {EXP + 18, TRACER_EXP_RATE, NullAnimator, &s_TracerExp[22]},
1706
    {EXP + 19, TRACER_EXP_RATE, NullAnimator, &s_TracerExp[23]},
1707
    {EXP + 20, TRACER_EXP_RATE, NullAnimator, &s_TracerExp[24]},
1708
    {EXP + 20, 100, DoSuicide, &s_TracerExp[0]}
1709
};
1710
 
1711
#define EXP_RATE 7
1712
ANIMATOR SpawnShrapX;
1713
ANIMATOR DoSectorExp;
1714
 
1715
STATE s_SectorExp[] =
1716
{
1717
    {EXP + 0, EXP_RATE, DoSectorExp, &s_SectorExp[1]},
1718
    {EXP + 0, SF_QUICK_CALL,  SpawnShrapX,  &s_SectorExp[2]},
1719
    {EXP + 0, SF_QUICK_CALL,  DoSectorExp,   &s_SectorExp[3]},
1720
    {EXP + 1, EXP_RATE, DoSectorExp, &s_SectorExp[4]},
1721
    {EXP + 2, EXP_RATE, DoSectorExp, &s_SectorExp[5]},
1722
    {EXP + 3, EXP_RATE, DoSectorExp, &s_SectorExp[6]},
1723
    {EXP + 4, EXP_RATE, DoSectorExp, &s_SectorExp[7]},
1724
    {EXP + 5, EXP_RATE, DoSectorExp, &s_SectorExp[8]},
1725
    {EXP + 6, EXP_RATE, DoSectorExp, &s_SectorExp[9]},
1726
    {EXP + 7, EXP_RATE, DoSectorExp, &s_SectorExp[10]},
1727
    {EXP + 7, SF_QUICK_CALL,  DoSectorExp,  &s_SectorExp[11]},
1728
    {EXP + 8, EXP_RATE, DoSectorExp, &s_SectorExp[12]},
1729
    {EXP + 9, EXP_RATE, DoSectorExp, &s_SectorExp[13]},
1730
    {EXP + 10, EXP_RATE, DoSectorExp, &s_SectorExp[14]},
1731
    {EXP + 11, EXP_RATE, DoSectorExp, &s_SectorExp[15]},
1732
    {EXP + 12, EXP_RATE, DoSectorExp, &s_SectorExp[16]},
1733
    {EXP + 13, EXP_RATE, DoSectorExp, &s_SectorExp[17]},
1734
    {EXP + 14, EXP_RATE, DoSectorExp, &s_SectorExp[18]},
1735
    {EXP + 15, EXP_RATE, DoSectorExp, &s_SectorExp[19]},
1736
    {EXP + 16, EXP_RATE, DoSectorExp, &s_SectorExp[20]},
1737
    {EXP + 17, EXP_RATE, DoSectorExp, &s_SectorExp[21]},
1738
    {EXP + 18, EXP_RATE, DoSectorExp, &s_SectorExp[22]},
1739
    {EXP + 19, EXP_RATE, DoSectorExp, &s_SectorExp[23]},
1740
    {EXP + 20, EXP_RATE, DoSectorExp, &s_SectorExp[24]},
1741
    {EXP + 20, 100, DoSuicide, &s_SectorExp[0]}
1742
};
1743
 
1744
 
1745
#define FIREBALL_DISS 3196
1746
#define FIREBALL_DISS_RATE 8
1747
STATE s_FireballExp[] =
1748
{
1749
    {FIREBALL_DISS + 0, FIREBALL_DISS_RATE, NullAnimator, &s_FireballExp[1]},
1750
    {FIREBALL_DISS + 1, FIREBALL_DISS_RATE, NullAnimator, &s_FireballExp[2]},
1751
    {FIREBALL_DISS + 2, FIREBALL_DISS_RATE, NullAnimator, &s_FireballExp[3]},
1752
    {FIREBALL_DISS + 3, FIREBALL_DISS_RATE, NullAnimator, &s_FireballExp[4]},
1753
    {FIREBALL_DISS + 4, FIREBALL_DISS_RATE, NullAnimator, &s_FireballExp[5]},
1754
    {FIREBALL_DISS + 4, 100, DoSuicide, &s_FireballExp[0]}
1755
};
1756
 
1757
#define NAP_EXP (3072)
1758
#define NAP_EXP_RATE 6
1759
 
1760
STATE s_NapExp[] =
1761
{
1762
    {NAP_EXP + 0,     NAP_EXP_RATE,      NullAnimator,  &s_NapExp[1]},
1763
    {NAP_EXP + 0,     0 | SF_QUICK_CALL,       DoDamageTest,  &s_NapExp[2]},
1764
    {NAP_EXP + 1,     NAP_EXP_RATE,      NullAnimator,  &s_NapExp[3]},
1765
    {NAP_EXP + 2,     NAP_EXP_RATE,      NullAnimator,  &s_NapExp[4]},
1766
    {NAP_EXP + 3,     NAP_EXP_RATE,      NullAnimator,  &s_NapExp[5]},
1767
    {NAP_EXP + 4,     NAP_EXP_RATE,      NullAnimator,  &s_NapExp[6]},
1768
    {NAP_EXP + 5,     NAP_EXP_RATE,      NullAnimator,  &s_NapExp[7]},
1769
    {NAP_EXP + 6,     NAP_EXP_RATE,      NullAnimator,  &s_NapExp[8]},
1770
    {NAP_EXP + 7,     NAP_EXP_RATE,      NullAnimator,  &s_NapExp[9]},
1771
    {NAP_EXP + 8,     NAP_EXP_RATE,      NullAnimator,  &s_NapExp[10]},
1772
    {NAP_EXP + 9,     NAP_EXP_RATE,      NullAnimator,  &s_NapExp[11]},
1773
    {NAP_EXP + 10,    NAP_EXP_RATE,      NullAnimator,  &s_NapExp[12]},
1774
    {NAP_EXP + 11,    NAP_EXP_RATE,      NullAnimator,  &s_NapExp[13]},
1775
    {NAP_EXP + 12,    NAP_EXP_RATE,      NullAnimator,  &s_NapExp[14]},
1776
    {NAP_EXP + 13,    NAP_EXP_RATE,      NullAnimator,  &s_NapExp[15]},
1777
    {NAP_EXP + 14,    NAP_EXP_RATE,      NullAnimator,  &s_NapExp[16]},
1778
    {NAP_EXP + 15,    NAP_EXP_RATE-2,    NullAnimator,  &s_NapExp[17]},
1779
    {NAP_EXP + 16,    NAP_EXP_RATE-2,    NullAnimator,  &s_NapExp[18]},
1780
    {NAP_EXP + 17,    NAP_EXP_RATE-2,    NullAnimator,  &s_NapExp[19]},
1781
    {NAP_EXP + 18,    NAP_EXP_RATE-2,    NullAnimator,  &s_NapExp[20]},
1782
    {NAP_EXP + 19,    NAP_EXP_RATE-2,    NullAnimator,  &s_NapExp[21]},
1783
    {NAP_EXP + 20,    NAP_EXP_RATE-2,    NullAnimator,  &s_NapExp[22]},
1784
    {NAP_EXP + 21,    NAP_EXP_RATE-2,    NullAnimator,  &s_NapExp[23]},
1785
    {NAP_EXP + 21,    NAP_EXP_RATE-2,    DoSuicide,     &s_NapExp[23]}
1786
};
1787
 
1788
ANIMATOR DoFireballFlames;
1789
#define FLAME_RATE 6
1790
 
1791
STATE s_FireballFlames[] =
1792
{
1793
    {FIREBALL_FLAMES + 0, FLAME_RATE, DoFireballFlames, &s_FireballFlames[1]},
1794
    {FIREBALL_FLAMES + 1, FLAME_RATE, DoFireballFlames, &s_FireballFlames[2]},
1795
    {FIREBALL_FLAMES + 2, FLAME_RATE, DoFireballFlames, &s_FireballFlames[3]},
1796
    {FIREBALL_FLAMES + 3, FLAME_RATE, DoFireballFlames, &s_FireballFlames[4]},
1797
    {FIREBALL_FLAMES + 4, FLAME_RATE, DoFireballFlames, &s_FireballFlames[5]},
1798
    {FIREBALL_FLAMES + 5, FLAME_RATE, DoFireballFlames, &s_FireballFlames[6]},
1799
    {FIREBALL_FLAMES + 6, FLAME_RATE, DoFireballFlames, &s_FireballFlames[7]},
1800
    {FIREBALL_FLAMES + 7, FLAME_RATE, DoFireballFlames, &s_FireballFlames[8]},
1801
    {FIREBALL_FLAMES + 8, FLAME_RATE, DoFireballFlames, &s_FireballFlames[9]},
1802
    {FIREBALL_FLAMES + 9, FLAME_RATE, DoFireballFlames, &s_FireballFlames[10]},
1803
    {FIREBALL_FLAMES +10, FLAME_RATE, DoFireballFlames, &s_FireballFlames[11]},
1804
    {FIREBALL_FLAMES +11, FLAME_RATE, DoFireballFlames, &s_FireballFlames[12]},
1805
    {FIREBALL_FLAMES +12, FLAME_RATE, DoFireballFlames, &s_FireballFlames[13]},
1806
    {FIREBALL_FLAMES +13, FLAME_RATE, DoFireballFlames, &s_FireballFlames[0]},
1807
};
1808
 
1809
ANIMATOR DoBreakFlames;
1810
#define FLAME_RATE 6
1811
 
1812
STATE s_BreakFlames[] =
1813
{
1814
    {FIREBALL_FLAMES + 0, FLAME_RATE, DoBreakFlames, &s_BreakFlames[1]},
1815
    {FIREBALL_FLAMES + 1, FLAME_RATE, DoBreakFlames, &s_BreakFlames[2]},
1816
    {FIREBALL_FLAMES + 2, FLAME_RATE, DoBreakFlames, &s_BreakFlames[3]},
1817
    {FIREBALL_FLAMES + 3, FLAME_RATE, DoBreakFlames, &s_BreakFlames[4]},
1818
    {FIREBALL_FLAMES + 4, FLAME_RATE, DoBreakFlames, &s_BreakFlames[5]},
1819
    {FIREBALL_FLAMES + 5, FLAME_RATE, DoBreakFlames, &s_BreakFlames[6]},
1820
    {FIREBALL_FLAMES + 6, FLAME_RATE, DoBreakFlames, &s_BreakFlames[7]},
1821
    {FIREBALL_FLAMES + 7, FLAME_RATE, DoBreakFlames, &s_BreakFlames[8]},
1822
    {FIREBALL_FLAMES + 8, FLAME_RATE, DoBreakFlames, &s_BreakFlames[9]},
1823
    {FIREBALL_FLAMES + 9, FLAME_RATE, DoBreakFlames, &s_BreakFlames[10]},
1824
    {FIREBALL_FLAMES +10, FLAME_RATE, DoBreakFlames, &s_BreakFlames[11]},
1825
    {FIREBALL_FLAMES +11, FLAME_RATE, DoBreakFlames, &s_BreakFlames[12]},
1826
    {FIREBALL_FLAMES +12, FLAME_RATE, DoBreakFlames, &s_BreakFlames[13]},
1827
    {FIREBALL_FLAMES +13, FLAME_RATE, DoBreakFlames, &s_BreakFlames[0]},
1828
};
1829
 
1830
//////////////////////
1831
//
1832
// FIREBALL
1833
//
1834
//////////////////////
1835
 
1836
#if 1
1837
ANIMATOR DoFireball;
1838
#define FIREBALL_RATE 8
1839
#define GORO_FIREBALL FIREBALL+1
1840
 
1841
STATE s_Fireball[] =
1842
{
1843
    {FIREBALL + 0, 12, DoFireball, &s_Fireball[1]},
1844
    {FIREBALL + 1, 12, DoFireball, &s_Fireball[2]},
1845
    {FIREBALL + 2, 12, DoFireball, &s_Fireball[3]},
1846
    {FIREBALL + 3, 12, DoFireball, &s_Fireball[0]}
1847
};
1848
 
1849
#else
1850
#define GORO_FIREBALL FIREBALL_R0
1851
#define FIREBALL_RATE 6
1852
ANIMATOR DoFireball;
1853
 
1854
STATE s_Fireball[5][4] =
1855
{
1856
    {
1857
        {FIREBALL_R0 + 0, FIREBALL_RATE, DoFireball, &s_Fireball[0][1]},
1858
        {FIREBALL_R0 + 1, FIREBALL_RATE, DoFireball, &s_Fireball[0][2]},
1859
        {FIREBALL_R0 + 2, FIREBALL_RATE, DoFireball, &s_Fireball[0][3]},
1860
        {FIREBALL_R0 + 3, FIREBALL_RATE, DoFireball, &s_Fireball[0][0]},
1861
    },
1862
    {
1863
        {FIREBALL_R1 + 0, FIREBALL_RATE, DoFireball, &s_Fireball[1][1]},
1864
        {FIREBALL_R1 + 1, FIREBALL_RATE, DoFireball, &s_Fireball[1][2]},
1865
        {FIREBALL_R1 + 2, FIREBALL_RATE, DoFireball, &s_Fireball[1][3]},
1866
        {FIREBALL_R1 + 3, FIREBALL_RATE, DoFireball, &s_Fireball[1][0]},
1867
    },
1868
    {
1869
        {FIREBALL_R2 + 0, FIREBALL_RATE, DoFireball, &s_Fireball[2][1]},
1870
        {FIREBALL_R2 + 1, FIREBALL_RATE, DoFireball, &s_Fireball[2][2]},
1871
        {FIREBALL_R2 + 2, FIREBALL_RATE, DoFireball, &s_Fireball[2][3]},
1872
        {FIREBALL_R2 + 3, FIREBALL_RATE, DoFireball, &s_Fireball[2][0]},
1873
    },
1874
    {
1875
        {FIREBALL_R3 + 0, FIREBALL_RATE, DoFireball, &s_Fireball[3][1]},
1876
        {FIREBALL_R3 + 1, FIREBALL_RATE, DoFireball, &s_Fireball[3][2]},
1877
        {FIREBALL_R3 + 2, FIREBALL_RATE, DoFireball, &s_Fireball[3][3]},
1878
        {FIREBALL_R3 + 3, FIREBALL_RATE, DoFireball, &s_Fireball[3][0]},
1879
    },
1880
    {
1881
        {FIREBALL_R4 + 0, FIREBALL_RATE, DoFireball, &s_Fireball[4][1]},
1882
        {FIREBALL_R4 + 1, FIREBALL_RATE, DoFireball, &s_Fireball[4][2]},
1883
        {FIREBALL_R4 + 2, FIREBALL_RATE, DoFireball, &s_Fireball[4][3]},
1884
        {FIREBALL_R4 + 3, FIREBALL_RATE, DoFireball, &s_Fireball[4][0]},
1885
    }
1886
};
1887
 
1888
STATEp sg_Fireball[] =
1889
{
1890
    s_Fireball[0],
1891
    s_Fireball[1],
1892
    s_Fireball[2],
1893
    s_Fireball[3],
1894
    s_Fireball[4]
1895
};
1896
#endif
1897
 
1898
#if 0
1899
ANIMATOR DoRing;
1900
 
1901
STATE s_Ring[5][4] =
1902
{
1903
    {
1904
        {FIREBALL_R0 + 0, FIREBALL_RATE, DoRing, &s_Ring[0][1]},
1905
        {FIREBALL_R0 + 1, FIREBALL_RATE, DoRing, &s_Ring[0][2]},
1906
        {FIREBALL_R0 + 2, FIREBALL_RATE, DoRing, &s_Ring[0][3]},
1907
        {FIREBALL_R0 + 3, FIREBALL_RATE, DoRing, &s_Ring[0][0]},
1908
    },
1909
    {
1910
        {FIREBALL_R1 + 0, FIREBALL_RATE, DoRing, &s_Ring[1][1]},
1911
        {FIREBALL_R1 + 1, FIREBALL_RATE, DoRing, &s_Ring[1][2]},
1912
        {FIREBALL_R1 + 2, FIREBALL_RATE, DoRing, &s_Ring[1][3]},
1913
        {FIREBALL_R1 + 3, FIREBALL_RATE, DoRing, &s_Ring[1][0]},
1914
    },
1915
    {
1916
        {FIREBALL_R2 + 0, FIREBALL_RATE, DoRing, &s_Ring[2][1]},
1917
        {FIREBALL_R2 + 1, FIREBALL_RATE, DoRing, &s_Ring[2][2]},
1918
        {FIREBALL_R2 + 2, FIREBALL_RATE, DoRing, &s_Ring[2][3]},
1919
        {FIREBALL_R2 + 3, FIREBALL_RATE, DoRing, &s_Ring[2][0]},
1920
    },
1921
    {
1922
        {FIREBALL_R3 + 0, FIREBALL_RATE, DoRing, &s_Ring[3][1]},
1923
        {FIREBALL_R3 + 1, FIREBALL_RATE, DoRing, &s_Ring[3][2]},
1924
        {FIREBALL_R3 + 2, FIREBALL_RATE, DoRing, &s_Ring[3][3]},
1925
        {FIREBALL_R3 + 3, FIREBALL_RATE, DoRing, &s_Ring[3][0]},
1926
    },
1927
    {
1928
        {FIREBALL_R4 + 0, FIREBALL_RATE, DoRing, &s_Ring[4][1]},
1929
        {FIREBALL_R4 + 1, FIREBALL_RATE, DoRing, &s_Ring[4][2]},
1930
        {FIREBALL_R4 + 2, FIREBALL_RATE, DoRing, &s_Ring[4][3]},
1931
        {FIREBALL_R4 + 3, FIREBALL_RATE, DoRing, &s_Ring[4][0]},
1932
    }
1933
};
1934
 
1935
STATEp sg_Ring[] =
1936
{
1937
    s_Ring[0],
1938
    s_Ring[1],
1939
    s_Ring[2],
1940
    s_Ring[3],
1941
    s_Ring[4]
1942
};
1943
#else
1944
ANIMATOR DoRing;
1945
 
1946
STATE s_Ring[] =
1947
{
1948
    {FIREBALL + 0, 12, DoRing, &s_Ring[1]},
1949
    {FIREBALL + 1, 12, DoRing, &s_Ring[2]},
1950
    {FIREBALL + 2, 12, DoRing, &s_Ring[3]},
1951
    {FIREBALL + 3, 12, DoRing, &s_Ring[0]}
1952
};
1953
#endif
1954
 
1955
STATE s_Ring2[] =
1956
{
1957
    {2031 + 0, 12, DoRing, &s_Ring2[1]},
1958
    {2031 + 1, 12, DoRing, &s_Ring2[2]},
1959
    {2031 + 2, 12, DoRing, &s_Ring2[3]},
1960
    {2031 + 3, 12, DoRing, &s_Ring2[0]}
1961
};
1962
 
1963
ANIMATOR DoNapalm;
1964
 
1965
STATE s_Napalm[] =
1966
{
1967
    {FIREBALL + 0, 12, DoNapalm, &s_Napalm[1]},
1968
    {FIREBALL + 1, 12, DoNapalm, &s_Napalm[2]},
1969
    {FIREBALL + 2, 12, DoNapalm, &s_Napalm[3]},
1970
    {FIREBALL + 3, 12, DoNapalm, &s_Napalm[0]}
1971
};
1972
 
1973
 
1974
ANIMATOR DoBloodWorm;
1975
 
1976
#if 1
1977
#define BLOOD_WORM 2106
1978
STATE s_BloodWorm[] =
1979
{
1980
    {BLOOD_WORM + 0, 12, DoBloodWorm, &s_BloodWorm[1]},
1981
    {BLOOD_WORM + 1, 12, DoBloodWorm, &s_BloodWorm[2]},
1982
    {BLOOD_WORM + 2, 12, DoBloodWorm, &s_BloodWorm[3]},
1983
    {BLOOD_WORM + 3, 12, DoBloodWorm, &s_BloodWorm[4]},
1984
    {BLOOD_WORM + 2, 12, DoBloodWorm, &s_BloodWorm[5]},
1985
    {BLOOD_WORM + 1, 12, DoBloodWorm, &s_BloodWorm[0]}
1986
};
1987
#else
1988
#define BLOOD_WORM FIREBALL+5
1989
STATE s_BloodWorm[] =
1990
{
1991
    {FIREBALL + 0, 12, DoBloodWorm, &s_BloodWorm[1]},
1992
    {FIREBALL + 1, 12, DoBloodWorm, &s_BloodWorm[2]},
1993
    {FIREBALL + 2, 12, DoBloodWorm, &s_BloodWorm[3]},
1994
    {FIREBALL + 3, 12, DoBloodWorm, &s_BloodWorm[0]}
1995
};
1996
#endif
1997
 
1998
#if 1
1999
#define PLASMA_EXP BLOOD_WORM+1
2000
#define PLASMA_EXP_RATE 8
2001
 
2002
STATE s_PlasmaExp[] =
2003
{
2004
    {BLOOD_WORM + 0, PLASMA_EXP_RATE, NullAnimator, &s_PlasmaExp[1]},
2005
    {BLOOD_WORM + 1, PLASMA_EXP_RATE, NullAnimator, &s_PlasmaExp[2]},
2006
    {BLOOD_WORM + 2, PLASMA_EXP_RATE, NullAnimator, &s_PlasmaExp[3]},
2007
    {BLOOD_WORM + 3, PLASMA_EXP_RATE, NullAnimator, &s_PlasmaExp[4]},
2008
    {BLOOD_WORM + 2, PLASMA_EXP_RATE, NullAnimator, &s_PlasmaExp[5]},
2009
    {BLOOD_WORM + 1, PLASMA_EXP_RATE, NullAnimator, &s_PlasmaExp[6]},
2010
    {BLOOD_WORM + 0, PLASMA_EXP_RATE, NullAnimator, &s_PlasmaExp[7]},
2011
    {BLOOD_WORM + 1, PLASMA_EXP_RATE, NullAnimator, &s_PlasmaExp[8]},
2012
    {BLOOD_WORM + 2, PLASMA_EXP_RATE, NullAnimator, &s_PlasmaExp[9]},
2013
    {BLOOD_WORM + 3, PLASMA_EXP_RATE, NullAnimator, &s_PlasmaExp[10]},
2014
    {BLOOD_WORM + 2, PLASMA_EXP_RATE, NullAnimator, &s_PlasmaExp[11]},
2015
    {BLOOD_WORM + 1, PLASMA_EXP_RATE, NullAnimator, &s_PlasmaExp[12]},
2016
    {BLOOD_WORM + 0, PLASMA_EXP_RATE, DoSuicide, &s_PlasmaExp[12]},
2017
};
2018
 
2019
#else
2020
#define PLASMA_EXP (NAP_EXP+1)
2021
#define PLASMA_EXP_RATE 4
2022
 
2023
STATE s_PlasmaExp[] =
2024
{
2025
    {PLASMA_EXP + 0,     PLASMA_EXP_RATE,      NullAnimator,  &s_PlasmaExp[1]},
2026
    {PLASMA_EXP + 0,     0 | SF_QUICK_CALL,    DoDamageTest,  &s_PlasmaExp[2]},
2027
    {PLASMA_EXP + 1,     PLASMA_EXP_RATE,      NullAnimator,  &s_PlasmaExp[3]},
2028
    {PLASMA_EXP + 2,     PLASMA_EXP_RATE,      NullAnimator,  &s_PlasmaExp[4]},
2029
    {PLASMA_EXP + 3,     PLASMA_EXP_RATE,      NullAnimator,  &s_PlasmaExp[5]},
2030
    {PLASMA_EXP + 4,     PLASMA_EXP_RATE,      NullAnimator,  &s_PlasmaExp[6]},
2031
    {PLASMA_EXP + 5,     PLASMA_EXP_RATE,      NullAnimator,  &s_PlasmaExp[7]},
2032
    {PLASMA_EXP + 6,     PLASMA_EXP_RATE,      NullAnimator,  &s_PlasmaExp[8]},
2033
    {PLASMA_EXP + 7,     PLASMA_EXP_RATE,      NullAnimator,  &s_PlasmaExp[9]},
2034
    {PLASMA_EXP + 8,     PLASMA_EXP_RATE,      NullAnimator,  &s_PlasmaExp[10]},
2035
    {PLASMA_EXP + 9,     PLASMA_EXP_RATE,      NullAnimator,  &s_PlasmaExp[11]},
2036
    {PLASMA_EXP + 10,    PLASMA_EXP_RATE,      NullAnimator,  &s_PlasmaExp[12]},
2037
    {PLASMA_EXP + 11,    PLASMA_EXP_RATE,      NullAnimator,  &s_PlasmaExp[13]},
2038
    {PLASMA_EXP + 9,     PLASMA_EXP_RATE,      NullAnimator,  &s_PlasmaExp[14]},
2039
    {PLASMA_EXP + 8,     PLASMA_EXP_RATE,      NullAnimator,  &s_PlasmaExp[15]},
2040
    {PLASMA_EXP + 7,     PLASMA_EXP_RATE,      NullAnimator,  &s_PlasmaExp[16]},
2041
    {PLASMA_EXP + 6,     PLASMA_EXP_RATE-2,    NullAnimator,  &s_PlasmaExp[17]},
2042
    {PLASMA_EXP + 5,     PLASMA_EXP_RATE-2,    NullAnimator,  &s_PlasmaExp[18]},
2043
    {PLASMA_EXP + 4,     PLASMA_EXP_RATE-2,    NullAnimator,  &s_PlasmaExp[19]},
2044
    {PLASMA_EXP + 3,     PLASMA_EXP_RATE-2,    NullAnimator,  &s_PlasmaExp[20]},
2045
    {PLASMA_EXP + 2,     PLASMA_EXP_RATE-2,    NullAnimator,  &s_PlasmaExp[21]},
2046
    {PLASMA_EXP + 1,     PLASMA_EXP_RATE-2,    NullAnimator,  &s_PlasmaExp[22]},
2047
    {PLASMA_EXP + 1,     PLASMA_EXP_RATE-2,    NullAnimator,  &s_PlasmaExp[23]},
2048
    {PLASMA_EXP + 1,     PLASMA_EXP_RATE-2,    DoSuicide,     &s_PlasmaExp[23]}
2049
};
2050
#endif
2051
 
2052
 
2053
ANIMATOR DoMirv;
2054
 
2055
STATE s_Mirv[] =
2056
{
2057
    {FIREBALL + 0, 12, DoMirv, &s_Mirv[1]},
2058
    {FIREBALL + 1, 12, DoMirv, &s_Mirv[2]},
2059
    {FIREBALL + 2, 12, DoMirv, &s_Mirv[3]},
2060
    {FIREBALL + 3, 12, DoMirv, &s_Mirv[0]}
2061
};
2062
 
2063
ANIMATOR DoMirvMissile;
2064
 
2065
STATE s_MirvMissile[] =
2066
{
2067
    {FIREBALL + 0, 12, DoMirvMissile, &s_MirvMissile[1]},
2068
    {FIREBALL + 1, 12, DoMirvMissile, &s_MirvMissile[2]},
2069
    {FIREBALL + 2, 12, DoMirvMissile, &s_MirvMissile[3]},
2070
    {FIREBALL + 3, 12, DoMirvMissile, &s_MirvMissile[0]}
2071
};
2072
 
2073
//#define Vomit1 1740
2074
//#define Vomit2 1741
2075
#define Vomit1 1719
2076
#define Vomit2 1721
2077
//#define VomitSplash 1742
2078
#define VomitSplash 1711
2079
#define Vomit_RATE 16
2080
ANIMATOR DoVomit,DoVomitSplash;
2081
 
2082
STATE s_Vomit1[] =
2083
{
2084
    {Vomit1 + 0, Vomit_RATE, DoVomit, &s_Vomit1[0]}
2085
};
2086
 
2087
STATE s_Vomit2[] =
2088
{
2089
    {Vomit2 + 0, Vomit_RATE, DoVomit, &s_Vomit2[0]}
2090
};
2091
 
2092
STATE s_VomitSplash[] =
2093
{
2094
    {VomitSplash + 0, Vomit_RATE, DoVomitSplash, &s_VomitSplash[0]}
2095
};
2096
 
2097
#define GORE_Head 1670
2098
#define GORE_Head_RATE 16
2099
 
2100
STATE s_GoreHead[] =
2101
{
2102
    {GORE_Head + 0, GORE_Head_RATE, DoShrapJumpFall, &s_GoreHead[1]},
2103
    {GORE_Head + 1, GORE_Head_RATE, DoShrapJumpFall, &s_GoreHead[2]},
2104
    {GORE_Head + 2, GORE_Head_RATE, DoShrapJumpFall, &s_GoreHead[3]},
2105
    {GORE_Head + 3, GORE_Head_RATE, DoShrapJumpFall, &s_GoreHead[4]},
2106
    {GORE_Head + 4, GORE_Head_RATE, DoShrapJumpFall, &s_GoreHead[5]},
2107
    {GORE_Head + 5, GORE_Head_RATE, DoShrapJumpFall, &s_GoreHead[6]},
2108
    {GORE_Head + 6, GORE_Head_RATE, DoShrapJumpFall, &s_GoreHead[7]},
2109
    {GORE_Head + 7, GORE_Head_RATE, DoShrapJumpFall, &s_GoreHead[8]},
2110
    {GORE_Head + 8, GORE_Head_RATE, DoShrapJumpFall, &s_GoreHead[9]},
2111
    {GORE_Head + 9, GORE_Head_RATE, DoShrapJumpFall, &s_GoreHead[10]},
2112
    {GORE_Head + 10, GORE_Head_RATE, DoShrapJumpFall, &s_GoreHead[11]},
2113
    {GORE_Head + 11, GORE_Head_RATE, DoShrapJumpFall, &s_GoreHead[0]},
2114
};
2115
 
2116
#define GORE_Leg 1689
2117
#define GORE_Leg_RATE 16
2118
 
2119
STATE s_GoreLeg[] =
2120
{
2121
    {GORE_Leg + 0, GORE_Leg_RATE, DoShrapJumpFall, &s_GoreLeg[1]},
2122
    {GORE_Leg + 1, GORE_Leg_RATE, DoShrapJumpFall, &s_GoreLeg[2]},
2123
    {GORE_Leg + 2, GORE_Leg_RATE, DoShrapJumpFall, &s_GoreLeg[0]},
2124
};
2125
 
2126
#define GORE_Eye 1692
2127
#define GORE_Eye_RATE 16
2128
 
2129
STATE s_GoreEye[] =
2130
{
2131
    {GORE_Eye + 0, GORE_Eye_RATE, DoShrapJumpFall, &s_GoreEye[1]},
2132
    {GORE_Eye + 1, GORE_Eye_RATE, DoShrapJumpFall, &s_GoreEye[2]},
2133
    {GORE_Eye + 2, GORE_Eye_RATE, DoShrapJumpFall, &s_GoreEye[3]},
2134
    {GORE_Eye + 3, GORE_Eye_RATE, DoShrapJumpFall, &s_GoreEye[0]},
2135
};
2136
 
2137
#define GORE_Torso 1696
2138
#define GORE_Torso_RATE 16
2139
 
2140
STATE s_GoreTorso[] =
2141
{
2142
    {GORE_Torso + 0, GORE_Torso_RATE, DoShrapJumpFall, &s_GoreTorso[1]},
2143
    {GORE_Torso + 1, GORE_Torso_RATE, DoShrapJumpFall, &s_GoreTorso[2]},
2144
    {GORE_Torso + 2, GORE_Torso_RATE, DoShrapJumpFall, &s_GoreTorso[3]},
2145
    {GORE_Torso + 3, GORE_Torso_RATE, DoShrapJumpFall, &s_GoreTorso[4]},
2146
    {GORE_Torso + 4, GORE_Torso_RATE, DoShrapJumpFall, &s_GoreTorso[5]},
2147
    {GORE_Torso + 5, GORE_Torso_RATE, DoShrapJumpFall, &s_GoreTorso[6]},
2148
    {GORE_Torso + 6, GORE_Torso_RATE, DoShrapJumpFall, &s_GoreTorso[7]},
2149
    {GORE_Torso + 7, GORE_Torso_RATE, DoShrapJumpFall, &s_GoreTorso[0]},
2150
};
2151
 
2152
 
2153
#define GORE_Arm 1550
2154
#define GORE_Arm_RATE 16
2155
 
2156
STATE s_GoreArm[] =
2157
{
2158
    {GORE_Arm + 0, GORE_Arm_RATE, DoShrapJumpFall, &s_GoreArm[1]},
2159
    {GORE_Arm + 1, GORE_Arm_RATE, DoShrapJumpFall, &s_GoreArm[2]},
2160
    {GORE_Arm + 2, GORE_Arm_RATE, DoShrapJumpFall, &s_GoreArm[3]},
2161
    {GORE_Arm + 3, GORE_Arm_RATE, DoShrapJumpFall, &s_GoreArm[4]},
2162
    {GORE_Arm + 4, GORE_Arm_RATE, DoShrapJumpFall, &s_GoreArm[5]},
2163
    {GORE_Arm + 5, GORE_Arm_RATE, DoShrapJumpFall, &s_GoreArm[6]},
2164
    {GORE_Arm + 6, GORE_Arm_RATE, DoShrapJumpFall, &s_GoreArm[7]},
2165
    {GORE_Arm + 7, GORE_Arm_RATE, DoShrapJumpFall, &s_GoreArm[8]},
2166
    {GORE_Arm + 8, GORE_Arm_RATE, DoShrapJumpFall, &s_GoreArm[9]},
2167
    {GORE_Arm + 9, GORE_Arm_RATE, DoShrapJumpFall, &s_GoreArm[10]},
2168
    {GORE_Arm + 10, GORE_Arm_RATE, DoShrapJumpFall, &s_GoreArm[11]},
2169
    {GORE_Arm + 11, GORE_Arm_RATE, DoShrapJumpFall, &s_GoreArm[0]},
2170
};
2171
 
2172
#define GORE_Lung 903
2173
#define GORE_Lung_RATE 16
2174
 
2175
STATE s_GoreLung[] =
2176
{
2177
    {GORE_Lung + 0, GORE_Lung_RATE, DoShrapJumpFall, &s_GoreLung[1]},
2178
    {GORE_Lung + 1, GORE_Lung_RATE, DoShrapJumpFall, &s_GoreLung[2]},
2179
    {GORE_Lung + 2, GORE_Lung_RATE, DoShrapJumpFall, &s_GoreLung[3]},
2180
    {GORE_Lung + 3, GORE_Lung_RATE, DoShrapJumpFall, &s_GoreLung[4]},
2181
    {GORE_Lung + 4, GORE_Lung_RATE, DoShrapJumpFall, &s_GoreLung[5]},
2182
    {GORE_Lung + 5, GORE_Lung_RATE, DoShrapJumpFall, &s_GoreLung[6]},
2183
    {GORE_Lung + 6, GORE_Lung_RATE, DoShrapJumpFall, &s_GoreLung[7]},
2184
    {GORE_Lung + 7, GORE_Lung_RATE, DoShrapJumpFall, &s_GoreLung[8]},
2185
    {GORE_Lung + 8, GORE_Lung_RATE, DoShrapJumpFall, &s_GoreLung[9]},
2186
    {GORE_Lung + 9, GORE_Lung_RATE, DoShrapJumpFall, &s_GoreLung[10]},
2187
    {GORE_Lung + 10, GORE_Lung_RATE, DoShrapJumpFall, &s_GoreLung[11]},
2188
    {GORE_Lung + 11, GORE_Lung_RATE, DoShrapJumpFall, &s_GoreLung[0]},
2189
};
2190
 
2191
#define GORE_Liver 918
2192
#define GORE_Liver_RATE 16
2193
 
2194
STATE s_GoreLiver[] =
2195
{
2196
    {GORE_Liver + 0, GORE_Liver_RATE, DoShrapJumpFall, &s_GoreLiver[1]},
2197
    {GORE_Liver + 1, GORE_Liver_RATE, DoShrapJumpFall, &s_GoreLiver[2]},
2198
    {GORE_Liver + 2, GORE_Liver_RATE, DoShrapJumpFall, &s_GoreLiver[3]},
2199
    {GORE_Liver + 3, GORE_Liver_RATE, DoShrapJumpFall, &s_GoreLiver[4]},
2200
    {GORE_Liver + 4, GORE_Liver_RATE, DoShrapJumpFall, &s_GoreLiver[5]},
2201
    {GORE_Liver + 5, GORE_Liver_RATE, DoShrapJumpFall, &s_GoreLiver[6]},
2202
    {GORE_Liver + 6, GORE_Liver_RATE, DoShrapJumpFall, &s_GoreLiver[7]},
2203
    {GORE_Liver + 7, GORE_Liver_RATE, DoShrapJumpFall, &s_GoreLiver[8]},
2204
    {GORE_Liver + 8, GORE_Liver_RATE, DoShrapJumpFall, &s_GoreLiver[9]},
2205
    {GORE_Liver + 9, GORE_Liver_RATE, DoShrapJumpFall, &s_GoreLiver[10]},
2206
    {GORE_Liver + 10, GORE_Liver_RATE, DoShrapJumpFall, &s_GoreLiver[11]},
2207
    {GORE_Liver + 11, GORE_Liver_RATE, DoShrapJumpFall, &s_GoreLiver[0]},
2208
};
2209
 
2210
#define GORE_SkullCap 933
2211
#define GORE_SkullCap_RATE 16
2212
 
2213
STATE s_GoreSkullCap[] =
2214
{
2215
    {GORE_SkullCap + 0, GORE_SkullCap_RATE, DoShrapJumpFall, &s_GoreSkullCap[1]},
2216
    {GORE_SkullCap + 1, GORE_SkullCap_RATE, DoShrapJumpFall, &s_GoreSkullCap[2]},
2217
    {GORE_SkullCap + 2, GORE_SkullCap_RATE, DoShrapJumpFall, &s_GoreSkullCap[3]},
2218
    {GORE_SkullCap + 3, GORE_SkullCap_RATE, DoShrapJumpFall, &s_GoreSkullCap[4]},
2219
    {GORE_SkullCap + 4, GORE_SkullCap_RATE, DoShrapJumpFall, &s_GoreSkullCap[5]},
2220
    {GORE_SkullCap + 5, GORE_SkullCap_RATE, DoShrapJumpFall, &s_GoreSkullCap[6]},
2221
    {GORE_SkullCap + 6, GORE_SkullCap_RATE, DoShrapJumpFall, &s_GoreSkullCap[7]},
2222
    {GORE_SkullCap + 7, GORE_SkullCap_RATE, DoShrapJumpFall, &s_GoreSkullCap[8]},
2223
    {GORE_SkullCap + 8, GORE_SkullCap_RATE, DoShrapJumpFall, &s_GoreSkullCap[9]},
2224
    {GORE_SkullCap + 9, GORE_SkullCap_RATE, DoShrapJumpFall, &s_GoreSkullCap[10]},
2225
    {GORE_SkullCap + 10, GORE_SkullCap_RATE, DoShrapJumpFall, &s_GoreSkullCap[11]},
2226
    {GORE_SkullCap + 11, GORE_SkullCap_RATE, DoShrapJumpFall, &s_GoreSkullCap[0]},
2227
};
2228
 
2229
 
2230
#define GORE_ChunkS 2430
2231
#define GORE_ChunkS_RATE 16
2232
 
2233
STATE s_GoreChunkS[] =
2234
{
2235
    {GORE_ChunkS + 0, GORE_ChunkS_RATE, DoShrapJumpFall, &s_GoreChunkS[1]},
2236
    {GORE_ChunkS + 1, GORE_ChunkS_RATE, DoShrapJumpFall, &s_GoreChunkS[2]},
2237
    {GORE_ChunkS + 2, GORE_ChunkS_RATE, DoShrapJumpFall, &s_GoreChunkS[3]},
2238
    {GORE_ChunkS + 3, GORE_ChunkS_RATE, DoShrapJumpFall, &s_GoreChunkS[0]},
2239
};
2240
 
2241
#define GORE_Drip 1562 //2430
2242
#define GORE_Drip_RATE 16
2243
 
2244
STATE s_GoreDrip[] =
2245
{
2246
    {GORE_Drip + 0, GORE_Drip_RATE, DoShrapJumpFall, &s_GoreDrip[1]},
2247
    {GORE_Drip + 1, GORE_Drip_RATE, DoShrapJumpFall, &s_GoreDrip[2]},
2248
    {GORE_Drip + 2, GORE_Drip_RATE, DoShrapJumpFall, &s_GoreDrip[3]},
2249
    {GORE_Drip + 3, GORE_Drip_RATE, DoShrapJumpFall, &s_GoreDrip[0]},
2250
};
2251
 
2252
STATE s_FastGoreDrip[] =
2253
{
2254
    {GORE_Drip + 0, GORE_Drip_RATE, DoFastShrapJumpFall, &s_FastGoreDrip[1]},
2255
    {GORE_Drip + 1, GORE_Drip_RATE, DoFastShrapJumpFall, &s_FastGoreDrip[2]},
2256
    {GORE_Drip + 2, GORE_Drip_RATE, DoFastShrapJumpFall, &s_FastGoreDrip[3]},
2257
    {GORE_Drip + 3, GORE_Drip_RATE, DoFastShrapJumpFall, &s_FastGoreDrip[0]},
2258
};
2259
 
2260
///////////////////////////////////////////////
2261
//
2262
// This GORE mostly for the Accursed Heads
2263
//
2264
///////////////////////////////////////////////
2265
 
2266
#define GORE_Flame 847
2267
#define GORE_Flame_RATE 8
2268
 
2269
STATE s_GoreFlame[] =
2270
{
2271
    {GORE_Flame + 0, GORE_Flame_RATE, DoFastShrapJumpFall, &s_GoreFlame[1]},
2272
    {GORE_Flame + 1, GORE_Flame_RATE, DoFastShrapJumpFall, &s_GoreFlame[2]},
2273
    {GORE_Flame + 2, GORE_Flame_RATE, DoFastShrapJumpFall, &s_GoreFlame[3]},
2274
    {GORE_Flame + 3, GORE_Flame_RATE, DoFastShrapJumpFall, &s_GoreFlame[4]},
2275
    {GORE_Flame + 4, GORE_Flame_RATE, DoFastShrapJumpFall, &s_GoreFlame[5]},
2276
    {GORE_Flame + 5, GORE_Flame_RATE, DoFastShrapJumpFall, &s_GoreFlame[6]},
2277
    {GORE_Flame + 6, GORE_Flame_RATE, DoFastShrapJumpFall, &s_GoreFlame[7]},
2278
    {GORE_Flame + 7, GORE_Flame_RATE, DoFastShrapJumpFall, &s_GoreFlame[0]},
2279
};
2280
 
2281
ANIMATOR DoTracerShrap;
2282
STATE s_TracerShrap[] =
2283
{
2284
    {GORE_Flame + 0, GORE_Flame_RATE, DoTracerShrap, &s_TracerShrap[1]},
2285
    {GORE_Flame + 1, GORE_Flame_RATE, DoTracerShrap, &s_TracerShrap[2]},
2286
    {GORE_Flame + 2, GORE_Flame_RATE, DoTracerShrap, &s_TracerShrap[3]},
2287
    {GORE_Flame + 3, GORE_Flame_RATE, DoTracerShrap, &s_TracerShrap[4]},
2288
    {GORE_Flame + 4, GORE_Flame_RATE, DoTracerShrap, &s_TracerShrap[5]},
2289
    {GORE_Flame + 5, GORE_Flame_RATE, DoTracerShrap, &s_TracerShrap[6]},
2290
    {GORE_Flame + 6, GORE_Flame_RATE, DoTracerShrap, &s_TracerShrap[7]},
2291
    {GORE_Flame + 7, GORE_Flame_RATE, DoTracerShrap, &s_TracerShrap[0]},
2292
};
2293
 
2294
#define UZI_SHELL 2152
2295
#define UZISHELL_RATE 8
2296
//ANIMATOR DoShellShrap;
2297
STATE s_UziShellShrap[] =
2298
{
2299
    {UZI_SHELL + 0, UZISHELL_RATE, DoShrapJumpFall, &s_UziShellShrap[1]},
2300
    {UZI_SHELL + 1, UZISHELL_RATE, DoShrapJumpFall, &s_UziShellShrap[2]},
2301
    {UZI_SHELL + 2, UZISHELL_RATE, DoShrapJumpFall, &s_UziShellShrap[3]},
2302
    {UZI_SHELL + 3, UZISHELL_RATE, DoShrapJumpFall, &s_UziShellShrap[4]},
2303
    {UZI_SHELL + 4, UZISHELL_RATE, DoShrapJumpFall, &s_UziShellShrap[5]},
2304
    {UZI_SHELL + 5, UZISHELL_RATE, DoShrapJumpFall, &s_UziShellShrap[0]},
2305
};
2306
 
2307
STATE s_UziShellShrapStill1[] =
2308
{
2309
    {UZI_SHELL + 0, UZISHELL_RATE, NullAnimator, &s_UziShellShrapStill1[0]}
2310
};
2311
STATE s_UziShellShrapStill2[] =
2312
{
2313
    {UZI_SHELL + 1, UZISHELL_RATE, NullAnimator, &s_UziShellShrapStill2[0]}
2314
};
2315
STATE s_UziShellShrapStill3[] =
2316
{
2317
    {UZI_SHELL + 2, UZISHELL_RATE, NullAnimator, &s_UziShellShrapStill3[0]}
2318
};
2319
STATE s_UziShellShrapStill4[] =
2320
{
2321
    {UZI_SHELL + 3, UZISHELL_RATE, NullAnimator, &s_UziShellShrapStill4[0]}
2322
};
2323
STATE s_UziShellShrapStill5[] =
2324
{
2325
    {UZI_SHELL + 4, UZISHELL_RATE, NullAnimator, &s_UziShellShrapStill5[0]}
2326
};
2327
STATE s_UziShellShrapStill6[] =
2328
{
2329
    {UZI_SHELL + 5, UZISHELL_RATE, NullAnimator, &s_UziShellShrapStill6[0]}
2330
};
2331
 
2332
#define SHOT_SHELL 2180
2333
#define SHOTSHELL_RATE 8
2334
STATE s_ShotgunShellShrap[] =
2335
{
2336
    {SHOT_SHELL + 0, SHOTSHELL_RATE, DoShrapJumpFall, &s_ShotgunShellShrap[1]},
2337
    {SHOT_SHELL + 1, SHOTSHELL_RATE, DoShrapJumpFall, &s_ShotgunShellShrap[2]},
2338
    {SHOT_SHELL + 2, SHOTSHELL_RATE, DoShrapJumpFall, &s_ShotgunShellShrap[3]},
2339
    {SHOT_SHELL + 3, SHOTSHELL_RATE, DoShrapJumpFall, &s_ShotgunShellShrap[4]},
2340
    {SHOT_SHELL + 4, SHOTSHELL_RATE, DoShrapJumpFall, &s_ShotgunShellShrap[5]},
2341
    {SHOT_SHELL + 5, SHOTSHELL_RATE, DoShrapJumpFall, &s_ShotgunShellShrap[6]},
2342
    {SHOT_SHELL + 6, SHOTSHELL_RATE, DoShrapJumpFall, &s_ShotgunShellShrap[7]},
2343
    {SHOT_SHELL + 7, SHOTSHELL_RATE, DoShrapJumpFall, &s_ShotgunShellShrap[0]},
2344
};
2345
 
2346
STATE s_ShotgunShellShrapStill1[] =
2347
{
2348
    {SHOT_SHELL + 1, SHOTSHELL_RATE, NullAnimator, &s_ShotgunShellShrapStill1[0]}
2349
};
2350
STATE s_ShotgunShellShrapStill2[] =
2351
{
2352
    {SHOT_SHELL + 3, SHOTSHELL_RATE, NullAnimator, &s_ShotgunShellShrapStill2[0]}
2353
};
2354
STATE s_ShotgunShellShrapStill3[] =
2355
{
2356
    {SHOT_SHELL + 7, SHOTSHELL_RATE, NullAnimator, &s_ShotgunShellShrapStill3[0]}
2357
};
2358
 
2359
#define GORE_FlameChunkA 839
2360
#define GORE_FlameChunkA_RATE 8
2361
 
2362
STATE s_GoreFlameChunkA[] =
2363
{
2364
    {GORE_FlameChunkA + 0, GORE_FlameChunkA_RATE, DoShrapJumpFall, &s_GoreFlameChunkA[1]},
2365
    {GORE_FlameChunkA + 1, GORE_FlameChunkA_RATE, DoShrapJumpFall, &s_GoreFlameChunkA[2]},
2366
    {GORE_FlameChunkA + 2, GORE_FlameChunkA_RATE, DoShrapJumpFall, &s_GoreFlameChunkA[3]},
2367
    {GORE_FlameChunkA + 3, GORE_FlameChunkA_RATE, DoShrapJumpFall, &s_GoreFlameChunkA[0]},
2368
};
2369
 
2370
#define GORE_FlameChunkB 843
2371
#define GORE_FlameChunkB_RATE 8
2372
 
2373
STATE s_GoreFlameChunkB[] =
2374
{
2375
    {GORE_FlameChunkB + 0, GORE_FlameChunkB_RATE, DoShrapJumpFall, &s_GoreFlameChunkB[1]},
2376
    {GORE_FlameChunkB + 1, GORE_FlameChunkB_RATE, DoShrapJumpFall, &s_GoreFlameChunkB[2]},
2377
    {GORE_FlameChunkB + 2, GORE_FlameChunkB_RATE, DoShrapJumpFall, &s_GoreFlameChunkB[3]},
2378
    {GORE_FlameChunkB + 3, GORE_FlameChunkB_RATE, DoShrapJumpFall, &s_GoreFlameChunkB[0]},
2379
};
2380
 
2381
/////////////////////////////////////////////////////////////////////
2382
//
2383
// General Breaking Shrapnel
2384
//
2385
/////////////////////////////////////////////////////////////////////
2386
 
2387
#define COIN_SHRAP 2530
2388
#define CoinShrap_RATE 12
2389
 
2390
STATE s_CoinShrap[] =
2391
{
2392
    {COIN_SHRAP + 0, CoinShrap_RATE, DoShrapJumpFall, &s_CoinShrap[1]},
2393
    {COIN_SHRAP + 1, CoinShrap_RATE, DoShrapJumpFall, &s_CoinShrap[2]},
2394
    {COIN_SHRAP + 2, CoinShrap_RATE, DoShrapJumpFall, &s_CoinShrap[3]},
2395
    {COIN_SHRAP + 3, CoinShrap_RATE, DoShrapJumpFall, &s_CoinShrap[0]},
2396
};
2397
 
2398
#define MARBEL 5096
2399
#define Marbel_RATE 12
2400
 
2401
STATE s_Marbel[] =
2402
{
2403
    {MARBEL, Marbel_RATE, DoShrapJumpFall, &s_Marbel[0]},
2404
};
2405
 
2406
//
2407
// Glass
2408
//
2409
 
2410
#define GLASS_SHRAP_A 3864
2411
#define GlassShrapA_RATE 12
2412
 
2413
STATE s_GlassShrapA[] =
2414
{
2415
    {GLASS_SHRAP_A + 0, GlassShrapA_RATE, DoShrapJumpFall, &s_GlassShrapA[1]},
2416
    {GLASS_SHRAP_A + 1, GlassShrapA_RATE, DoShrapJumpFall, &s_GlassShrapA[2]},
2417
    {GLASS_SHRAP_A + 2, GlassShrapA_RATE, DoShrapJumpFall, &s_GlassShrapA[3]},
2418
    {GLASS_SHRAP_A + 3, GlassShrapA_RATE, DoShrapJumpFall, &s_GlassShrapA[4]},
2419
    {GLASS_SHRAP_A + 4, GlassShrapA_RATE, DoShrapJumpFall, &s_GlassShrapA[5]},
2420
    {GLASS_SHRAP_A + 5, GlassShrapA_RATE, DoShrapJumpFall, &s_GlassShrapA[6]},
2421
    {GLASS_SHRAP_A + 6, GlassShrapA_RATE, DoShrapJumpFall, &s_GlassShrapA[7]},
2422
    {GLASS_SHRAP_A + 7, GlassShrapA_RATE, DoShrapJumpFall, &s_GlassShrapA[0]},
2423
};
2424
 
2425
#define GLASS_SHRAP_B 3872
2426
#define GlassShrapB_RATE 12
2427
 
2428
STATE s_GlassShrapB[] =
2429
{
2430
    {GLASS_SHRAP_B + 0, GlassShrapB_RATE, DoShrapJumpFall, &s_GlassShrapB[1]},
2431
    {GLASS_SHRAP_B + 1, GlassShrapB_RATE, DoShrapJumpFall, &s_GlassShrapB[2]},
2432
    {GLASS_SHRAP_B + 2, GlassShrapB_RATE, DoShrapJumpFall, &s_GlassShrapB[3]},
2433
    {GLASS_SHRAP_B + 3, GlassShrapB_RATE, DoShrapJumpFall, &s_GlassShrapB[4]},
2434
    {GLASS_SHRAP_B + 4, GlassShrapB_RATE, DoShrapJumpFall, &s_GlassShrapB[5]},
2435
    {GLASS_SHRAP_B + 5, GlassShrapB_RATE, DoShrapJumpFall, &s_GlassShrapB[6]},
2436
    {GLASS_SHRAP_B + 6, GlassShrapB_RATE, DoShrapJumpFall, &s_GlassShrapB[7]},
2437
    {GLASS_SHRAP_B + 7, GlassShrapB_RATE, DoShrapJumpFall, &s_GlassShrapB[0]},
2438
};
2439
 
2440
#define GLASS_SHRAP_C 3880
2441
#define GlassShrapC_RATE 12
2442
 
2443
STATE s_GlassShrapC[] =
2444
{
2445
    {GLASS_SHRAP_C + 0, GlassShrapC_RATE, DoShrapJumpFall, &s_GlassShrapC[1]},
2446
    {GLASS_SHRAP_C + 1, GlassShrapC_RATE, DoShrapJumpFall, &s_GlassShrapC[2]},
2447
    {GLASS_SHRAP_C + 2, GlassShrapC_RATE, DoShrapJumpFall, &s_GlassShrapC[3]},
2448
    {GLASS_SHRAP_C + 3, GlassShrapC_RATE, DoShrapJumpFall, &s_GlassShrapC[4]},
2449
    {GLASS_SHRAP_C + 4, GlassShrapC_RATE, DoShrapJumpFall, &s_GlassShrapC[5]},
2450
    {GLASS_SHRAP_C + 5, GlassShrapC_RATE, DoShrapJumpFall, &s_GlassShrapC[6]},
2451
    {GLASS_SHRAP_C + 6, GlassShrapC_RATE, DoShrapJumpFall, &s_GlassShrapC[7]},
2452
    {GLASS_SHRAP_C + 7, GlassShrapC_RATE, DoShrapJumpFall, &s_GlassShrapC[0]},
2453
};
2454
 
2455
//
2456
// Wood
2457
//
2458
 
2459
#define WOOD_SHRAP_A 3924
2460
#define WoodShrapA_RATE 12
2461
 
2462
STATE s_WoodShrapA[] =
2463
{
2464
    {WOOD_SHRAP_A + 0, WoodShrapA_RATE, DoShrapJumpFall, &s_WoodShrapA[1]},
2465
    {WOOD_SHRAP_A + 1, WoodShrapA_RATE, DoShrapJumpFall, &s_WoodShrapA[2]},
2466
    {WOOD_SHRAP_A + 2, WoodShrapA_RATE, DoShrapJumpFall, &s_WoodShrapA[3]},
2467
    {WOOD_SHRAP_A + 3, WoodShrapA_RATE, DoShrapJumpFall, &s_WoodShrapA[4]},
2468
    {WOOD_SHRAP_A + 4, WoodShrapA_RATE, DoShrapJumpFall, &s_WoodShrapA[5]},
2469
    {WOOD_SHRAP_A + 5, WoodShrapA_RATE, DoShrapJumpFall, &s_WoodShrapA[6]},
2470
    {WOOD_SHRAP_A + 6, WoodShrapA_RATE, DoShrapJumpFall, &s_WoodShrapA[7]},
2471
    {WOOD_SHRAP_A + 7, WoodShrapA_RATE, DoShrapJumpFall, &s_WoodShrapA[0]},
2472
};
2473
 
2474
#define WOOD_SHRAP_B 3932
2475
#define WoodShrapB_RATE 12
2476
 
2477
STATE s_WoodShrapB[] =
2478
{
2479
    {WOOD_SHRAP_B + 0, WoodShrapB_RATE, DoShrapJumpFall, &s_WoodShrapB[1]},
2480
    {WOOD_SHRAP_B + 1, WoodShrapB_RATE, DoShrapJumpFall, &s_WoodShrapB[2]},
2481
    {WOOD_SHRAP_B + 2, WoodShrapB_RATE, DoShrapJumpFall, &s_WoodShrapB[3]},
2482
    {WOOD_SHRAP_B + 3, WoodShrapB_RATE, DoShrapJumpFall, &s_WoodShrapB[4]},
2483
    {WOOD_SHRAP_B + 4, WoodShrapB_RATE, DoShrapJumpFall, &s_WoodShrapB[5]},
2484
    {WOOD_SHRAP_B + 5, WoodShrapB_RATE, DoShrapJumpFall, &s_WoodShrapB[6]},
2485
    {WOOD_SHRAP_B + 6, WoodShrapB_RATE, DoShrapJumpFall, &s_WoodShrapB[7]},
2486
    {WOOD_SHRAP_B + 7, WoodShrapB_RATE, DoShrapJumpFall, &s_WoodShrapB[0]},
2487
};
2488
 
2489
#define WOOD_SHRAP_C 3941
2490
#define WoodShrapC_RATE 12
2491
 
2492
STATE s_WoodShrapC[] =
2493
{
2494
    {WOOD_SHRAP_C + 0, WoodShrapC_RATE, DoShrapJumpFall, &s_WoodShrapC[1]},
2495
    {WOOD_SHRAP_C + 1, WoodShrapC_RATE, DoShrapJumpFall, &s_WoodShrapC[2]},
2496
    {WOOD_SHRAP_C + 2, WoodShrapC_RATE, DoShrapJumpFall, &s_WoodShrapC[3]},
2497
    {WOOD_SHRAP_C + 3, WoodShrapC_RATE, DoShrapJumpFall, &s_WoodShrapC[4]},
2498
    {WOOD_SHRAP_C + 4, WoodShrapC_RATE, DoShrapJumpFall, &s_WoodShrapC[5]},
2499
    {WOOD_SHRAP_C + 5, WoodShrapC_RATE, DoShrapJumpFall, &s_WoodShrapC[6]},
2500
    {WOOD_SHRAP_C + 6, WoodShrapC_RATE, DoShrapJumpFall, &s_WoodShrapC[7]},
2501
    {WOOD_SHRAP_C + 7, WoodShrapC_RATE, DoShrapJumpFall, &s_WoodShrapC[0]},
2502
};
2503
 
2504
//
2505
// Stone
2506
//
2507
 
2508
#define STONE_SHRAP_A 3840
2509
#define StoneShrapA_RATE 12
2510
 
2511
STATE s_StoneShrapA[] =
2512
{
2513
    {STONE_SHRAP_A + 0, StoneShrapA_RATE, DoShrapJumpFall, &s_StoneShrapA[1]},
2514
    {STONE_SHRAP_A + 1, StoneShrapA_RATE, DoShrapJumpFall, &s_StoneShrapA[2]},
2515
    {STONE_SHRAP_A + 2, StoneShrapA_RATE, DoShrapJumpFall, &s_StoneShrapA[3]},
2516
    {STONE_SHRAP_A + 3, StoneShrapA_RATE, DoShrapJumpFall, &s_StoneShrapA[4]},
2517
    {STONE_SHRAP_A + 4, StoneShrapA_RATE, DoShrapJumpFall, &s_StoneShrapA[5]},
2518
    {STONE_SHRAP_A + 5, StoneShrapA_RATE, DoShrapJumpFall, &s_StoneShrapA[6]},
2519
    {STONE_SHRAP_A + 6, StoneShrapA_RATE, DoShrapJumpFall, &s_StoneShrapA[7]},
2520
    {STONE_SHRAP_A + 7, StoneShrapA_RATE, DoShrapJumpFall, &s_StoneShrapA[0]},
2521
};
2522
 
2523
#define STONE_SHRAP_B 3848
2524
#define StoneShrapB_RATE 12
2525
 
2526
STATE s_StoneShrapB[] =
2527
{
2528
    {STONE_SHRAP_B + 0, StoneShrapB_RATE, DoShrapJumpFall, &s_StoneShrapB[1]},
2529
    {STONE_SHRAP_B + 1, StoneShrapB_RATE, DoShrapJumpFall, &s_StoneShrapB[2]},
2530
    {STONE_SHRAP_B + 2, StoneShrapB_RATE, DoShrapJumpFall, &s_StoneShrapB[3]},
2531
    {STONE_SHRAP_B + 3, StoneShrapB_RATE, DoShrapJumpFall, &s_StoneShrapB[4]},
2532
    {STONE_SHRAP_B + 4, StoneShrapB_RATE, DoShrapJumpFall, &s_StoneShrapB[5]},
2533
    {STONE_SHRAP_B + 5, StoneShrapB_RATE, DoShrapJumpFall, &s_StoneShrapB[6]},
2534
    {STONE_SHRAP_B + 6, StoneShrapB_RATE, DoShrapJumpFall, &s_StoneShrapB[7]},
2535
    {STONE_SHRAP_B + 7, StoneShrapB_RATE, DoShrapJumpFall, &s_StoneShrapB[0]},
2536
};
2537
 
2538
#define STONE_SHRAP_C 3856
2539
#define StoneShrapC_RATE 12
2540
 
2541
STATE s_StoneShrapC[] =
2542
{
2543
    {STONE_SHRAP_C + 0, StoneShrapC_RATE, DoShrapJumpFall, &s_StoneShrapC[1]},
2544
    {STONE_SHRAP_C + 1, StoneShrapC_RATE, DoShrapJumpFall, &s_StoneShrapC[2]},
2545
    {STONE_SHRAP_C + 2, StoneShrapC_RATE, DoShrapJumpFall, &s_StoneShrapC[3]},
2546
    {STONE_SHRAP_C + 3, StoneShrapC_RATE, DoShrapJumpFall, &s_StoneShrapC[4]},
2547
    {STONE_SHRAP_C + 4, StoneShrapC_RATE, DoShrapJumpFall, &s_StoneShrapC[5]},
2548
    {STONE_SHRAP_C + 5, StoneShrapC_RATE, DoShrapJumpFall, &s_StoneShrapC[6]},
2549
    {STONE_SHRAP_C + 6, StoneShrapC_RATE, DoShrapJumpFall, &s_StoneShrapC[7]},
2550
    {STONE_SHRAP_C + 7, StoneShrapC_RATE, DoShrapJumpFall, &s_StoneShrapC[0]},
2551
};
2552
 
2553
//
2554
// Metal
2555
//
2556
 
2557
#define METAL_SHRAP_A 3888
2558
#define MetalShrapA_RATE 12
2559
 
2560
STATE s_MetalShrapA[] =
2561
{
2562
    {METAL_SHRAP_A + 0, MetalShrapA_RATE, DoShrapJumpFall, &s_MetalShrapA[1]},
2563
    {METAL_SHRAP_A + 1, MetalShrapA_RATE, DoShrapJumpFall, &s_MetalShrapA[2]},
2564
    {METAL_SHRAP_A + 2, MetalShrapA_RATE, DoShrapJumpFall, &s_MetalShrapA[3]},
2565
    {METAL_SHRAP_A + 3, MetalShrapA_RATE, DoShrapJumpFall, &s_MetalShrapA[4]},
2566
    {METAL_SHRAP_A + 4, MetalShrapA_RATE, DoShrapJumpFall, &s_MetalShrapA[5]},
2567
    {METAL_SHRAP_A + 5, MetalShrapA_RATE, DoShrapJumpFall, &s_MetalShrapA[6]},
2568
    {METAL_SHRAP_A + 6, MetalShrapA_RATE, DoShrapJumpFall, &s_MetalShrapA[7]},
2569
    {METAL_SHRAP_A + 7, MetalShrapA_RATE, DoShrapJumpFall, &s_MetalShrapA[0]},
2570
};
2571
 
2572
#define METAL_SHRAP_B 3896
2573
#define MetalShrapB_RATE 12
2574
 
2575
STATE s_MetalShrapB[] =
2576
{
2577
    {METAL_SHRAP_B + 0, MetalShrapB_RATE, DoShrapJumpFall, &s_MetalShrapB[1]},
2578
    {METAL_SHRAP_B + 1, MetalShrapB_RATE, DoShrapJumpFall, &s_MetalShrapB[2]},
2579
    {METAL_SHRAP_B + 2, MetalShrapB_RATE, DoShrapJumpFall, &s_MetalShrapB[3]},
2580
    {METAL_SHRAP_B + 3, MetalShrapB_RATE, DoShrapJumpFall, &s_MetalShrapB[4]},
2581
    {METAL_SHRAP_B + 4, MetalShrapB_RATE, DoShrapJumpFall, &s_MetalShrapB[5]},
2582
    {METAL_SHRAP_B + 5, MetalShrapB_RATE, DoShrapJumpFall, &s_MetalShrapB[6]},
2583
    {METAL_SHRAP_B + 6, MetalShrapB_RATE, DoShrapJumpFall, &s_MetalShrapB[7]},
2584
    {METAL_SHRAP_B + 7, MetalShrapB_RATE, DoShrapJumpFall, &s_MetalShrapB[0]},
2585
};
2586
 
2587
#define METAL_SHRAP_C 3904
2588
#define MetalShrapC_RATE 12
2589
 
2590
STATE s_MetalShrapC[] =
2591
{
2592
    {METAL_SHRAP_C + 0, MetalShrapC_RATE, DoShrapJumpFall, &s_MetalShrapC[1]},
2593
    {METAL_SHRAP_C + 1, MetalShrapC_RATE, DoShrapJumpFall, &s_MetalShrapC[2]},
2594
    {METAL_SHRAP_C + 2, MetalShrapC_RATE, DoShrapJumpFall, &s_MetalShrapC[3]},
2595
    {METAL_SHRAP_C + 3, MetalShrapC_RATE, DoShrapJumpFall, &s_MetalShrapC[4]},
2596
    {METAL_SHRAP_C + 4, MetalShrapC_RATE, DoShrapJumpFall, &s_MetalShrapC[5]},
2597
    {METAL_SHRAP_C + 5, MetalShrapC_RATE, DoShrapJumpFall, &s_MetalShrapC[6]},
2598
    {METAL_SHRAP_C + 6, MetalShrapC_RATE, DoShrapJumpFall, &s_MetalShrapC[7]},
2599
    {METAL_SHRAP_C + 7, MetalShrapC_RATE, DoShrapJumpFall, &s_MetalShrapC[0]},
2600
};
2601
 
2602
//
2603
// Paper
2604
//
2605
 
2606
#define PAPER_SHRAP_A 3924
2607
#define PaperShrapA_RATE 12
2608
 
2609
STATE s_PaperShrapA[] =
2610
{
2611
    {PAPER_SHRAP_A + 0, PaperShrapA_RATE, DoShrapJumpFall, &s_PaperShrapA[1]},
2612
    {PAPER_SHRAP_A + 1, PaperShrapA_RATE, DoShrapJumpFall, &s_PaperShrapA[2]},
2613
    {PAPER_SHRAP_A + 2, PaperShrapA_RATE, DoShrapJumpFall, &s_PaperShrapA[3]},
2614
    {PAPER_SHRAP_A + 3, PaperShrapA_RATE, DoShrapJumpFall, &s_PaperShrapA[0]},
2615
};
2616
 
2617
#define PA