1 /* Catacomb Armageddon Source Code
\r
2 * Copyright (C) 1993-2014 Flat Rock Software
\r
4 * This program is free software; you can redistribute it and/or modify
\r
5 * it under the terms of the GNU General Public License as published by
\r
6 * the Free Software Foundation; either version 2 of the License, or
\r
7 * (at your option) any later version.
\r
9 * This program is distributed in the hope that it will be useful,
\r
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
12 * GNU General Public License for more details.
\r
14 * You should have received a copy of the GNU General Public License along
\r
15 * with this program; if not, write to the Free Software Foundation, Inc.,
\r
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
\r
19 #include "ID_HEADS.H"
\r
25 #define DEBUG_KEYS_AVAILABLE 0
\r
28 =============================================================================
\r
32 =============================================================================
\r
36 // SOFTLIB GFX FILENAME
\r
38 #define SLIB_GFX "ARM_SLIB."EXT
\r
41 #define USE_INERT_LIST false
\r
45 // MAX_BASE - represents 100 percent in 1st base
\r
46 // MAX_PERC - represents 100 percent in 2nd base
\r
47 // PERC - fractional portion of 2nd base
\r
48 // SCALE - arbitrary scaling value (bigger number means more accurate)
\r
50 // ex: PERCENTAGE(320,16,8,7) returns 160
\r
52 // Make sure values used won't overflow a WORD! In general, if largest number
\r
53 // to be used (320 in ex: above) * (1<<SCALE) is greater than 65535, use
\r
54 // LONG_PERCENTAGE or a lower SCALE. Using a SCALE of 8 in the example
\r
55 // above would overflow a WORD in some circumstances!
\r
57 // LONG_PERCENTAGE is to be used for larger SCALEs, thus, giving you
\r
58 // massive accuracy!
\r
60 #define PERCENTAGE(MAX_BASE,MAX_PERC,PERC,SCALE) ((unsigned)(MAX_BASE*((PERC<<SCALE)/MAX_PERC))>>SCALE)
\r
61 #define LONG_PERCENTAGE(MAX_BASE,MAX_PERC,PERC,SCALE) (((long)MAX_BASE*(((long)PERC<<SCALE)/MAX_PERC))>>SCALE)
\r
63 #define PI 3.141592657
\r
65 //#define SIZE_TEST 65000
\r
69 #define FL_QUICK 0x01
\r
70 #define FL_NOMEMCHECK 0x02
\r
71 #define FL_HELPTEST 0x04
\r
73 #define FL_CLEAR (FL_QUICK|FL_NOMEMCHECK|FL_HELPTEST)
\r
77 #define FL_RGEM 0x04
\r
78 #define FL_GGEM 0x08
\r
79 #define FL_BGEM 0x10
\r
80 #define FL_YGEM 0x20
\r
81 #define FL_PGEM 0x40
\r
84 #define FL_DEAD 0x80
\r
90 #define MAXPOTIONS 10
\r
92 #define NUKE_COST (1000)
\r
93 #define BOLT_COST (1200)
\r
94 #define POTION_COST (1300)
\r
96 #define NUKE_COST_TXT ("1000") // Allows for Q&D positioning..
\r
97 #define BOLT_COST_TXT ("1200")
\r
98 #define POTION_COST_TXT ("1300")
\r
100 #define RADARX 31 // bytes
\r
101 #define RADARY 11 // pixels
\r
102 #define RADAR_WIDTH 51 // "
\r
103 #define RADAR_HEIGHT 51 // "
\r
104 #define RADAR_XCENTER ((RADARX*8)+(RADAR_WIDTH/2)+3) // "
\r
105 #define RADAR_YCENTER ((RADARY-8)+(RADAR_HEIGHT/2)+5) // "
\r
106 #define MAX_RADAR_BLIPS 60
\r
109 #define RADAR_RADIUS 17
\r
110 #define RADAR_RADIUS_NSEW 15
\r
111 #define RADAR_X_IRADIUS (113/5)
\r
112 #define RADAR_Y_IRADIUS (113/7)
\r
113 #define RADAR_ICON_CENTER 4 // Center offset into icon.
\r
115 #define NAMESTART 180
\r
116 #define REMOVED_DOOR_TILE NAMESTART
\r
118 #define NEXT_LEVEL_CODE 0xff
\r
119 #define REMOVE_DOOR_CODE 0xfe
\r
120 #define CANT_OPEN_CODE 0xfd
\r
121 #define EXP_WALL_CODE 0xfc
\r
124 #define UNMARKGRCHUNK(chunk) (grneeded[chunk]&=~ca_levelbit)
\r
126 #define MOUSEINT 0x33
\r
128 #define EXPWALLSTART 8
\r
129 #define NUMEXPWALLS 7
\r
131 #define WATEREXP 62
\r
132 #define NUMFLOORS 80 //71
\r
134 #define NUMLATCHPICS (FIRSTWALLPIC-FIRSTLATCHPIC) //+5
\r
135 #define NUMSCALEPICS (FIRSTWALLPIC-FIRSTSCALEPIC) //+5
\r
136 #define NUMSCALEWALLS (LASTWALLPIC-FIRSTWALLPIC) //+5
\r
139 #define FLASHCOLOR 12
\r
140 #define FLASHTICS 4
\r
143 #define NUMLEVELS 32 //21
\r
145 #define VIEWX 0 // corner of view window
\r
147 #define VIEWWIDTH (40*8) // size of view window // 33
\r
148 #define VIEWHEIGHT (15*8) // 18
\r
149 #define VIEWXH (VIEWX+VIEWWIDTH-1)
\r
150 #define VIEWYH (VIEWY+VIEWHEIGHT-1)
\r
152 #define CENTERX (VIEWX+VIEWWIDTH/2-1) // middle of view window
\r
153 #define CENTERY (VIEWY+VIEWHEIGHT/2-1)
\r
155 #define GLOBAL1 (1l<<16)
\r
156 #define TILEGLOBAL GLOBAL1
\r
157 #define TILESHIFT 16l
\r
159 #define MINDIST (2*GLOBAL1/5)
\r
160 #define FOCALLENGTH (TILEGLOBAL) // in global coordinates
\r
162 #define ANGLES 360 // must be divisable by 4
\r
164 #define MAPSIZE 64 // maps are 64*64 max
\r
165 #define MAXACTORS 100 // max number of tanks, etc / map
\r
172 #define SIGN(x) ((x)>0?1:-1)
\r
173 #define ABS(x) ((int)(x)>0?(x):-(x))
\r
174 #define LABS(x) ((long)(x)>0?(x):-(x))
\r
176 #define MAXSCALE (VIEWWIDTH/2)
\r
179 #define MAXBODY 100
\r
180 #define MAXSHOTPOWER 56
\r
182 #define SCREEN1START 0
\r
183 #define SCREEN2START 8320
\r
185 #define STATUSLEN 0xc80
\r
186 #define PAGELEN 0x1700
\r
188 #define PAGE1START STATUSLEN
\r
189 #define PAGE2START (PAGE1START+PAGELEN)
\r
190 #define PAGE3START (PAGE2START+PAGELEN)
\r
191 #define FREESTART (PAGE3START+PAGELEN)
\r
193 #define PIXRADIUS 512
\r
195 #define STATUSLINES (200-VIEWHEIGHT)
\r
197 enum bonusnumbers {B_BOLT,B_NUKE,B_POTION,B_RKEY,B_YKEY,B_GKEY,B_BKEY,B_SCROLL1,
\r
198 B_SCROLL2,B_SCROLL3,B_SCROLL4,B_SCROLL5,B_SCROLL6,B_SCROLL7,B_SCROLL8,
\r
199 B_GOAL,B_CHEST,B_RGEM,B_GGEM,B_BGEM,B_YGEM,B_PGEM};
\r
202 #define MAX_DOOR_STORAGE 5
\r
204 #define GEM_DELAY_TIME (120*60)
\r
206 #define ROTATE_SPEED (6)
\r
208 #define WALL_SKELETON_CODE 6
\r
210 #define MAXREALTICS (2*60)
\r
212 #define MAXFREEZETIME (100*30) // 50 secs (100 half)
\r
214 #define INVISIBLEWALL 0x46
\r
216 #define USE_STRIPS FALSE
\r
219 =============================================================================
\r
223 =============================================================================
\r
226 enum {BLANKCHAR=9,BOLTCHAR,NUKECHAR,POTIONCHAR,KEYCHARS,SCROLLCHARS=17,
\r
229 typedef long fixed;
\r
231 typedef struct {int x,y;} tilept;
\r
232 typedef struct {fixed x,y;} globpt;
\r
236 int x1,x2,leftclip,rightclip;// first pixel of wall (may not be visable)
\r
237 unsigned height1,height2,color,walllength,side;
\r
242 {nothing,playerobj,bonusobj,succubusobj,batobj,skeletonobj,fatdemonobj,godessobj,
\r
243 mageobj,pshotobj,bigpshotobj,mshotobj,inertobj,bounceobj,grelmobj,sshotobj,
\r
244 gateobj,zombieobj,antobj,wetobj,expobj,eyeobj,wallskelobj,eshotobj,treeobj,
\r
245 gshotobj,reddemonobj,freezeobj,solidobj,cloudobj,dshotobj,hbunnyobj,bunnyobj,
\r
246 realsolidobj} classtype;
\r
248 typedef enum {north,east,south,west,northeast,southeast,southwest,
\r
249 northwest,nodir} dirtype; // a catacombs 2 carryover
\r
251 typedef struct statestruct
\r
256 struct statestruct far *next;
\r
259 #define statetype statetypestruct far
\r
261 #define of_shootable 0x01
\r
262 #define of_damagedone 0x02
\r
263 #define of_forcefield 0x40 // defines a solid object as a forcefield???????????
\r
264 #define of_tree 0x80 // used to identify between a tree and a statue --
\r
265 // last minute changes for Greg
\r
267 typedef struct objstruct
\r
271 statetype *state; // THESE MEMBERS MUST BE IN THE SAME
\r
272 fixed x,y; // ORDER AS THE MEMBERS DEFINED IN
\r
273 int viewx; // IOBJSTRUCT OR ALL HELL WILL BREAK
\r
274 unsigned tilex,tiley; // LOOSE!!
\r
275 unsigned viewheight; //
\r
277 struct objstruct *next; //
\r
280 struct objstruct *prev;
\r
281 enum {no,noalways,yes,always} active;
\r
284 unsigned char flags;
\r
293 fixed xl,xh,yl,yh; // hit rectangle
\r
300 #define MAXINERTOBJ 20
\r
302 typedef struct iobjstruct {
\r
307 unsigned tilex,tiley;
\r
308 unsigned viewheight;
\r
310 struct iobjstruct *next;
\r
316 typedef enum {ex_stillplaying,ex_died,ex_warped,ex_resetgame
\r
317 ,ex_loadedgame,ex_victorious,ex_turning,ex_abort} exittype;
\r
320 typedef enum {S_NONE, S_HELP, S_SND, S_SAVING, S_RESTORING,
\r
321 S_JOYSTICK, S_RETREAT, S_ADVANCE, S_SIDESTEP, S_QTURN,
\r
322 S_MISSLE, S_ZAPPER, S_XTER, S_CURING, S_READ,
\r
323 S_VIEWING, S_ITEMDES, S_DAMAGE, S_TURN, S_TIMESTOP} status_flags;
\r
327 unsigned ondoor,underdoor;
\r
333 doorinfo doors[MAX_DOOR_STORAGE];
\r
340 int bolts,nukes,potions,keys[4],scrolls[8];
\r
342 int gems[5]; // "int allgems[5]" is used for 1:1 comparison
\r
343 // in play loop for radar... CHANGE IT, TOO!
\r
346 int body,shotpower;
\r
347 short mapwidth,mapheight;
\r
348 // levelinfo levels[NUMLEVELS];
\r
352 =============================================================================
\r
354 C3_MAIN DEFINITIONS
\r
356 =============================================================================
\r
359 extern char inlevel[][2];
\r
360 extern char str[80],str2[20];
\r
361 extern unsigned tedlevelnum;
\r
362 extern boolean tedlevel;
\r
363 extern gametype gamestate;
\r
364 extern exittype playstate;
\r
365 extern char SlowMode;
\r
366 extern unsigned Flags;
\r
367 extern boolean LoadShapes;
\r
368 extern boolean EASYMODEON;
\r
371 void NewGame (void);
\r
372 boolean SaveTheGame(int file);
\r
373 boolean LoadTheGame(int file);
\r
374 void ResetGame(void);
\r
375 void ShutdownId (void);
\r
376 void InitGame (void);
\r
377 void Quit (char *error, ...);
\r
378 void TEDDeath(void);
\r
379 void DemoLoop (void);
\r
380 void SetupScalePic (unsigned picnum);
\r
381 void SetupScaleWall (unsigned picnum);
\r
382 void SetupScaling (void);
\r
384 void Display320(void);
\r
385 void Display640(void);
\r
386 void PrintHelp(void);
\r
389 =============================================================================
\r
391 C3_GAME DEFINITIONS
\r
393 =============================================================================
\r
396 extern unsigned latchpics[NUMLATCHPICS];
\r
397 extern unsigned tileoffsets[NUMTILE16];
\r
398 extern unsigned textstarts[27];
\r
403 #define L_SHOTBAR 2
\r
405 #define L_BODYBAR 4
\r
408 void ScanInfoPlane (void);
\r
409 void ScanText (void);
\r
410 void SetupGameLevel(void);
\r
411 void Victory (boolean playsounds);
\r
413 void NormalScreen (void);
\r
414 void DrawPlayScreen (void);
\r
415 void LoadLatchMem (void);
\r
416 void FizzleFade (unsigned source, unsigned dest,
\r
417 unsigned width,unsigned height, boolean abortable);
\r
418 void FizzleOut (int showlevel);
\r
419 void FreeUpMemory (void);
\r
420 void GameLoop (void);
\r
424 =============================================================================
\r
426 C3_PLAY DEFINITIONS
\r
428 =============================================================================
\r
431 #define BGF_NIGHT 0x01 // it is officially night
\r
432 #define BGF_NOT_LIGHTNING 0x02 // lightning flash has ended
\r
434 extern byte BGFLAGS,bcolor;
\r
436 extern unsigned *skycolor,*groundcolor;
\r
438 extern ControlInfo control;
\r
439 extern boolean running,slowturn;
\r
441 extern int bordertime;
\r
443 extern byte tilemap[MAPSIZE][MAPSIZE];
\r
444 extern objtype *actorat[MAPSIZE][MAPSIZE];
\r
445 extern byte spotvis[MAPSIZE][MAPSIZE];
\r
447 extern objtype objlist[MAXACTORS],*new,*obj,*player;
\r
449 extern unsigned farmapylookup[MAPSIZE];
\r
450 extern byte *nearmapylookup[MAPSIZE];
\r
451 extern byte update[];
\r
453 extern boolean godmode,singlestep;
\r
454 extern int extravbls;
\r
456 extern int mousexmove,mouseymove;
\r
457 extern int pointcount,pointsleft;
\r
458 extern status_flags status_flag;
\r
459 extern int status_delay;
\r
461 extern objtype dummyobj;
\r
462 extern short BeepTime;
\r
463 extern unsigned scolor,gcolor;
\r
465 void CenterWindow(word w,word h);
\r
466 void DebugMemory (void);
\r
467 void PicturePause (void);
\r
468 int DebugKeys (void);
\r
469 void CheckKeys (void);
\r
470 void InitObjList (void);
\r
471 void GetNewObj (boolean usedummy);
\r
472 void RemoveObj (objtype *gone);
\r
473 void PollControlls (void);
\r
474 void PlayLoop (void);
\r
475 void InitBgChange(short stimer, unsigned *scolors, short gtimer, unsigned *gcolors, byte flag);
\r
477 void DisplayStatus (status_flags *stat_flag);
\r
480 =============================================================================
\r
482 C3_STATE DEFINITIONS
\r
484 =============================================================================
\r
487 //void SpawnNewObj (unsigned x, unsigned y, statetype *state, unsigned size);
\r
488 //void SpawnNewObjFrac (long x, long y, statetype *state, unsigned size);
\r
490 void Internal_SpawnNewObj (unsigned x, unsigned y, statetype *state, unsigned size, boolean UseDummy, boolean PutInActorat);
\r
491 void Internal_SpawnNewObjFrac (long x, long y, statetype *state, unsigned size,boolean UseDummy);
\r
493 #define DSpawnNewObj(x, y, state, size) Internal_SpawnNewObj(x,y,state,size,true,true)
\r
494 #define SpawnNewObj(x, y, state, size) Internal_SpawnNewObj(x,y,state,size,false,true)
\r
495 #define ASpawnNewObj(x, y, state, size) Internal_SpawnNewObj(x,y,state,size,false,false)
\r
496 #define SpawnNewObjFrac(x, y, state, size,Dummy) Internal_SpawnNewObjFrac(x, y, state, size,false)
\r
497 #define DSpawnNewObjFrac(x, y, state, size) Internal_SpawnNewObjFrac(x, y, state, size,true)
\r
499 boolean CheckHandAttack (objtype *ob);
\r
500 void T_DoDamage (objtype *ob);
\r
501 boolean Walk (objtype *ob);
\r
502 void ChaseThink (objtype *obj, boolean diagonal);
\r
503 void MoveObj (objtype *ob, long move);
\r
504 boolean Chase (objtype *ob, boolean diagonal);
\r
506 extern dirtype opposite[9];
\r
509 =============================================================================
\r
511 C3_TRACE DEFINITIONS
\r
513 =============================================================================
\r
516 int FollowTrace (fixed tracex, fixed tracey, long deltax, long deltay, int max);
\r
517 int BackTrace (int finish);
\r
518 void ForwardTrace (void);
\r
519 int FinishWall (void);
\r
520 void InsideCorner (void);
\r
521 void OutsideCorner (void);
\r
522 void FollowWalls (void);
\r
524 extern boolean aborttrace;
\r
527 =============================================================================
\r
529 C3_DRAW DEFINITIONS
\r
531 =============================================================================
\r
534 #define MAXWALLS 50
\r
535 #define DANGERHIGH 45
\r
537 #define MIDWALL (MAXWALLS/2)
\r
539 //==========================================================================
\r
541 extern tilept tile,lasttile,focal,left,mid,right;
\r
543 extern globpt edge,view;
\r
545 extern unsigned screenloc[3];
\r
546 extern unsigned freelatch;
\r
548 extern int screenpage;
\r
550 extern boolean fizzlein;
\r
552 extern long lasttimecount;
\r
554 extern int firstangle,lastangle;
\r
556 extern fixed prestep;
\r
558 extern int traceclip,tracetop;
\r
560 extern fixed sintable[ANGLES+ANGLES/4],*costable;
\r
562 extern fixed viewx,viewy,viewsin,viewcos; // the focal point
\r
563 extern int viewangle;
\r
565 extern fixed scale,scaleglobal;
\r
566 extern unsigned slideofs;
\r
568 extern int zbuffer[VIEWXH+1];
\r
570 extern walltype walls[MAXWALLS],*leftwall,*rightwall;
\r
573 extern fixed tileglobal;
\r
574 extern fixed focallength;
\r
575 extern fixed mindist;
\r
576 extern int viewheight;
\r
577 extern fixed scale;
\r
579 extern int far walllight1[NUMFLOORS];
\r
580 extern int far walldark1[NUMFLOORS];
\r
582 extern unsigned topcolor,bottomcolor;
\r
584 extern char wall_anim_info[NUMFLOORS];
\r
585 extern char wall_anim_pos[NUMFLOORS];
\r
587 //==========================================================================
\r
589 void DrawLine (int xl, int xh, int y,int color);
\r
590 void DrawWall (walltype *wallptr);
\r
591 void TraceRay (unsigned angle);
\r
592 fixed FixedByFrac (fixed a, fixed b);
\r
593 void TransformPoint (fixed gx, fixed gy, int *screenx, unsigned *screenheight);
\r
594 fixed TransformX (fixed gx, fixed gy);
\r
595 int FollowTrace (fixed tracex, fixed tracey, long deltax, long deltay, int max);
\r
596 void ForwardTrace (void);
\r
597 int FinishWall (void);
\r
598 int TurnClockwise (void);
\r
599 int TurnCounterClockwise (void);
\r
600 void FollowWall (void);
\r
602 void NewScene (void);
\r
603 void BuildTables (void);
\r
607 =============================================================================
\r
609 C3_SCALE DEFINITIONS
\r
611 =============================================================================
\r
615 #define COMPSCALECODESTART (65*6) // offset to start of code in comp scaler
\r
619 unsigned codeofs[65];
\r
620 unsigned start[65];
\r
621 unsigned width[65];
\r
628 unsigned codeofs[64];
\r
632 extern unsigned scaleblockwidth,
\r
636 extern byte plotpix[8];
\r
637 extern byte bitmasks1[8][8];
\r
638 extern byte bitmasks2[8][8];
\r
641 extern t_compscale _seg *scaledirectory[NUMSCALEPICS];
\r
642 extern t_compshape _seg *shapedirectory[NUMSCALEPICS];
\r
643 extern memptr walldirectory[NUMSCALEWALLS];
\r
644 extern unsigned shapesize[NUMSCALEPICS];
\r
646 void DeplanePic (int picnum);
\r
647 void ScaleShape (int xcenter, t_compshape _seg *compshape, unsigned scale);
\r
648 unsigned BuildCompShape (t_compshape _seg **finalspot);
\r
652 =============================================================================
\r
656 =============================================================================
\r
659 extern unsigned wallheight [VIEWWIDTH];
\r
660 extern unsigned wallwidth [VIEWWIDTH];
\r
661 extern unsigned wallseg [VIEWWIDTH];
\r
662 extern unsigned wallofs [VIEWWIDTH];
\r
663 extern unsigned screenbyte [VIEWWIDTH];
\r
664 extern unsigned screenbit [VIEWWIDTH];
\r
665 extern unsigned bitmasks [64];
\r
667 extern long wallscalecall;
\r
669 void ScaleWalls (void);
\r
672 =============================================================================
\r
676 =============================================================================
\r
679 #define MAXHANDHEIGHT 72
\r
681 extern statetype s_pshot_exp1;
\r
682 extern statetype s_pshot_exp2;
\r
683 extern statetype s_pshot_exp3;
\r
685 extern long lastnuke;
\r
686 extern int lasttext;
\r
687 extern int handheight;
\r
688 extern int boltsleft,bolttimer;
\r
689 extern short RadarXY[][3];
\r
691 extern short RotateAngle;
\r
692 extern short FreezeTime;
\r
694 //void FaceDir(short x, short y, boolean StopTime);
\r
695 //short CalcAngle(short dx, short dy);
\r
697 void FaceAngle(short DestAngle);
\r
699 void InitRotate(short DestAngle);
\r
700 short FaceDoor(short x, short y);
\r
702 char DisplayMsg(char *text,char *choices);
\r
703 char DisplaySMsg(char *text,char *choices);
\r
705 extern statetype s_explode;
\r
707 void SpawnExplosion(fixed x, fixed y,short Delay);
\r
708 void T_ExpThink(objtype *obj);
\r
709 void SpawnBigExplosion(fixed x, fixed y, short Delay, fixed Range);
\r
713 =============================================================================
\r
715 C3_ACT1 DEFINITIONS
\r
717 =============================================================================
\r
720 int EasyHitPoints(int NrmHitPts);
\r
721 int EasyDoDamage(int Damage);
\r
723 #define zombie_mode ob->temp1
\r
724 #define zombie_delay ob->temp2
\r
726 enum zombie_modes {zm_wait_for_dark,zm_wait_to_rise,zm_active};
\r
728 enum eye_modes {em_other1,em_player1,em_other2,em_player2,em_other3,em_player3,em_other4,em_player4,em_dummy};
\r
730 #define MSHOTDAMAGE 2
\r
731 #define MSHOTSPEED 10000
\r
733 #define ESHOTDAMAGE 1
\r
734 #define ESHOTSPEED 5000
\r
736 #define SSHOTDAMAGE 3
\r
737 #define SSHOTSPEED 6500
\r
739 #define RANDOM_ATTACK 20
\r
741 extern dirtype dirtable[];
\r
742 extern short other_x[], other_y[];
\r
743 extern short zombie_base_delay;
\r
745 extern statetype s_fatdemon_ouch;
\r
746 extern statetype s_fatdemon_blowup1;
\r
748 extern statetype s_succubus_ouch;
\r
749 extern statetype s_succubus_death1;
\r
751 extern statetype s_godessouch;
\r
752 extern statetype s_godessdie1;
\r
754 extern statetype s_mageouch;
\r
755 extern statetype s_magedie1;
\r
757 extern statetype s_grelouch;
\r
758 extern statetype s_greldie1;
\r
760 extern statetype s_batdie1;
\r
762 extern statetype s_zombie_death1;
\r
763 extern statetype s_zombie_ouch;
\r
765 extern statetype s_zombie_rise1;
\r
766 extern statetype s_zombie_rise2;
\r
767 extern statetype s_zombie_rise3;
\r
768 extern statetype s_zombie_rise4;
\r
770 extern statetype s_ant_wait;
\r
771 extern statetype s_ant_egg;
\r
772 extern statetype s_ant_walk1;
\r
773 extern statetype s_ant_walk2;
\r
774 extern statetype s_ant_walk3;
\r
775 extern statetype s_ant_attack1;
\r
776 extern statetype s_ant_pause;
\r
777 extern statetype s_ant_ouch;
\r
778 extern statetype s_ant_die1;
\r
779 extern statetype s_ant_die2;
\r
780 extern statetype s_ant_die3;
\r
782 extern statetype s_skel_pause;
\r
783 extern statetype s_skel_1;
\r
784 extern statetype s_skel_2;
\r
785 extern statetype s_skel_3;
\r
786 extern statetype s_skel_4;
\r
787 extern statetype s_skel_attack1;
\r
788 extern statetype s_skel_attack2;
\r
789 extern statetype s_skel_attack3;
\r
790 extern statetype s_skel_ouch;
\r
791 extern statetype s_skel_die1;
\r
792 extern statetype s_skel_die2;
\r
793 extern statetype s_skel_die3;
\r
795 extern statetype s_wet_pause;
\r
797 extern statetype s_wet_bubbles1;
\r
798 extern statetype s_wet_bubbles2;
\r
799 extern statetype s_wet_bubbles3;
\r
800 extern statetype s_wet_bubbles4;
\r
802 extern statetype s_wet_peek;
\r
804 extern statetype s_wet_rise1;
\r
805 extern statetype s_wet_rise2;
\r
806 extern statetype s_wet_rise3;
\r
807 extern statetype s_wet_rise4;
\r
808 extern statetype s_wet_rise5;
\r
810 extern statetype s_wet_sink1;
\r
811 extern statetype s_wet_sink2;
\r
812 extern statetype s_wet_sink3;
\r
814 extern statetype s_wet_walk1;
\r
815 extern statetype s_wet_walk2;
\r
816 extern statetype s_wet_walk3;
\r
817 extern statetype s_wet_walk4;
\r
819 extern statetype s_wet_attack1;
\r
820 extern statetype s_wet_attack2;
\r
821 extern statetype s_wet_attack3;
\r
822 extern statetype s_wet_attack4;
\r
824 extern statetype s_wet_ouch;
\r
826 extern statetype s_wet_die1;
\r
827 extern statetype s_wet_die2;
\r
828 extern statetype s_wet_die3;
\r
829 extern statetype s_wet_die4;
\r
830 extern statetype s_wet_die5;
\r
832 extern statetype s_obj_gate1;
\r
833 extern statetype s_obj_gate2;
\r
834 extern statetype s_obj_gate3;
\r
835 extern statetype s_obj_gate4;
\r
837 extern statetype s_eye_pause;
\r
839 extern statetype s_eye_1;
\r
840 extern statetype s_eye_2;
\r
841 extern statetype s_eye_3;
\r
842 extern statetype s_eye_4;
\r
844 extern statetype s_eye_ouch;
\r
845 extern statetype s_eye_ouch2;
\r
847 extern statetype s_eye_die1;
\r
848 extern statetype s_eye_die2;
\r
849 extern statetype s_eye_die3;
\r
851 extern statetype s_mshot1;
\r
852 extern statetype s_mshot2;
\r
854 extern statetype s_bonus_die;
\r
856 extern statetype s_red_demonouch;
\r
857 extern statetype s_red_demondie1;
\r
859 extern statetype s_bunny_death1;
\r
860 extern statetype s_bunny_ouch;
\r
862 extern statetype s_tree_death1;
\r
863 extern statetype s_tree_ouch;
\r
865 extern statetype s_force_field_die;