3331 lines
84 KiB
C
3331 lines
84 KiB
C
#include "ID_HEADS.H"
|
|
#include "jm_io.h"
|
|
#include <stdarg.h>
|
|
#include <MATH.H>
|
|
#include <VALUES.H>
|
|
#include "jm_cio.h"
|
|
|
|
//#define DEMOS_EXTERN
|
|
//#define MYPROFILE
|
|
//#define TRACK_ENEMY_COUNT
|
|
#define OBJ_RESERV
|
|
|
|
#define __VERSION__ "V1.01"
|
|
|
|
#define GOLD_MORPH_LEVEL (19) // Level which Dr. GoldFire Morphs.
|
|
|
|
#define VERSION_TEXT_COLOR (0x82)
|
|
#define VERSION_TEXT_BKCOLOR (0x80)
|
|
|
|
#define NO_SHADING ((char)0x80)
|
|
#define LAMP_ON_SHADING ((char)-12)
|
|
#define EXPLOSION_SHADING ((char)-52)
|
|
|
|
#define PAGEFLIP
|
|
|
|
#define BETA_TEST (false)
|
|
#define LOOK_FOR_DEAD_GUYS (false)
|
|
|
|
#define BETA_CODE "NEWGAME"
|
|
|
|
#define MIN_MEM_NEEDED (231568l) // 560K
|
|
#define LIMITED_AMMO
|
|
|
|
#define SHADE_MAX 51
|
|
#define SHADE_DIV 6
|
|
|
|
#define BETA_MONTH 8
|
|
#define BETA_DAY 1
|
|
#define BETA_YEAR 1994
|
|
|
|
#define PLAYTEMP_FILE "PLAYTEMP"
|
|
#define OLD_PLAYTEMP_FILE "OLDPTEMP"
|
|
|
|
#define DISK_SPACE_NEEDED (1024l*1024l)
|
|
|
|
#define BORDER_HI_COLOR 0x85
|
|
#define BORDER_MED_COLOR 0x82
|
|
#define BORDER_LO_COLOR 0x80
|
|
#define BORDER_TEXT_COLOR 0xaf
|
|
|
|
|
|
// FONT DEFINES
|
|
//
|
|
#define ID_FONT (STARTFONT)
|
|
#define BIG_FONT (STARTFONT+1)
|
|
#define SIXPOINT_FONT (STARTFONT+2)
|
|
#define TALL_FONT (STARTFONT+3)
|
|
#define COAL_FONT (STARTFONT+4)
|
|
#define RADAR_FONT (STARTFONT+5)
|
|
|
|
//#define LOCKED_FLOORS
|
|
|
|
#define ID_CACHE_BRIEFS
|
|
#define ID_CACHE_HELP
|
|
#define ID_CACHE_LOSE
|
|
#define ID_CACHE_CREDITS
|
|
|
|
|
|
//#define DEBUG_STATICS
|
|
//#define DEBUG_ACTORS
|
|
|
|
//==========================================================================
|
|
//
|
|
// GAME VERSION DEPENDANT DEFINATIONS
|
|
//
|
|
//==========================================================================
|
|
|
|
void jsprintf(char *msg, ...);
|
|
|
|
/*
|
|
=============================================================================
|
|
|
|
MACROS
|
|
|
|
=============================================================================
|
|
*/
|
|
|
|
|
|
#define BASE_GRAY 0x8
|
|
#define HIGH_GRAY 0xb
|
|
#define LOW_GRAY 0x5
|
|
#define BASE_GRN 0x76
|
|
#define HIGH_GRN 0x78
|
|
#define LOW_GRN 0x74
|
|
|
|
|
|
#define MAX_GUN_DELAY 12
|
|
|
|
#define MAX_RADAR_ENERGY 14400
|
|
#define RADAR_PAK_VALUE 60*15
|
|
|
|
#define MAXKEYS 1
|
|
|
|
#define COLORBORDER(color) asm{mov dx,STATUS_REGISTER_1;in al,dx;\
|
|
mov dx,ATR_INDEX;mov al,ATR_OVERSCAN;out dx,al;mov al,color;out dx,al;\
|
|
mov al,32;out dx,al};
|
|
|
|
#define MAPSPOT(x,y,plane) (*(mapsegs[plane]+farmapylookup[y]+x))
|
|
|
|
#define SIGN(x) ((x)>0?1:-1)
|
|
#define ABS(x) ((int)(x)>0?(x):-(x))
|
|
#define LABS(x) ((long)(x)>0?(x):-(x))
|
|
|
|
//#define STATUSDRAWPIC(x, y, picnum) JLatchDrawPic((x),(y+(200-STATUSLINES)),(picnum))
|
|
|
|
#define FMAPWIDTH ((fixed)mapwidth<<TILESHIFT)
|
|
#define FMAPHEIGHT ((fixed)mapheight<<TILESHIFT)
|
|
#define ObjVisable(from_obj,to_obj) PosVisable(from_obj->x,from_obj->y,to_obj->x,to_obj->y,from_obj->angle)
|
|
|
|
// SmartAnim macro
|
|
#define ANIM_INFO(o) ((ofs_anim_t *)&(o)->temp3)
|
|
|
|
|
|
#define DISPLAY_MSG_STD_TIME (5*60) // Tics display len
|
|
#define DISPLAY_TIMED_MSG(msg,pri,type) DisplayInfoMsg((msg),(pri),DISPLAY_MSG_STD_TIME,(type))
|
|
#define DISPLAY_MSG(msg,pri,type) DisplayInfoMsg((msg),(pri),0,(type))
|
|
|
|
|
|
// SMART_ACTORS is the "case" used for certain switch statements.
|
|
//
|
|
|
|
#define SMART_ACTORS proguardobj: \
|
|
case rentacopobj: \
|
|
case gen_scientistobj
|
|
|
|
|
|
#define SECURITY_LAMPS_ALERTED (madenoise)
|
|
|
|
// Barrier Code Stuff
|
|
|
|
#define MAX_BARRIER_SWITCHES 40 // max number level wall switches
|
|
|
|
|
|
#define SLIDE_TEMP(obj) ((unsigned)obj->hitpoints)
|
|
|
|
//
|
|
// M_BASE1 - represents 100 percent in 1st base
|
|
// M_BASE2 - represents 100 percent in 2nd base
|
|
// F_BASE2 - fractional portion of 2nd base
|
|
// SCALE - arbitrary scaling value (bigger number means more accurate)
|
|
//
|
|
// RETURNS: F_BASE1 - represents fractional portion of 1st base
|
|
//
|
|
// ex: RATIO(320,16,8,7) returns 160
|
|
//
|
|
// Make sure values used won't overflow a WORD! In general, if largest number
|
|
// to be used (320 in ex: above) * (1<<SCALE) is greater than 65535, use
|
|
// LRATIO or a lower SCALE. Using a SCALE of 8 in the example above would
|
|
// overflow a WORD in some circumstances!
|
|
//
|
|
// LRATIO is to be used for larger SCALEs, thus, giving you massive accuracy!
|
|
//
|
|
#define RATIO(M_BASE1,M_BASE2,F_BASE2,SCALE) ((unsigned)(M_BASE1*((F_BASE2<<SCALE)/M_BASE2))>>SCALE)
|
|
#define LRATIO(M_BASE1,M_BASE2,F_BASE2,SCALE) (((long)M_BASE1*(((long)F_BASE2<<SCALE)/M_BASE2))>>SCALE)
|
|
|
|
|
|
#define MAX_INF_AREA_MSGS 6
|
|
#define MAX_LOCATION_DESC_LEN 45
|
|
|
|
#define DOOR_RUBBLE_STATNUM 112 // Door Rubble sprite
|
|
|
|
#define SpawnExplosion(a,b) SpawnCusExplosion((a),(b),SPR_EXPLOSION_1,4,5,explosionobj)
|
|
#define SpawnFlash(a,b) SpawnCusExplosion((a),(b),SPR_EXPLOSION_1,4,5,deadobj)
|
|
#define InitSmartSpeedAnim(a, b, c, d, e, f, g) InitAnim((a),(b),(c),(d),(e),(f),(g),(g))
|
|
|
|
/*
|
|
=============================================================================
|
|
|
|
GLOBAL CONSTANTS
|
|
|
|
=============================================================================
|
|
*/
|
|
|
|
#define OV_ACTORS 0x0001
|
|
#define OV_SHOWALL 0x0002
|
|
#define OV_KEYS 0x0004
|
|
#define OV_PUSHWALLS 0x0008
|
|
|
|
#define TT_TRAVELED 0x01
|
|
#define TT_KEYS 0x02
|
|
|
|
// Max number of concession reply messages
|
|
|
|
//#define CON_HINTS // Un/Comment to support concession hints
|
|
|
|
#define MAXACTORS 150 // max number of nazis, etc / map
|
|
#define MAXSTATS 400 // max number of lamps, bonus, etc
|
|
#define MAXDOORS 64 // max number of sliding doors
|
|
#define MAXCONCESSIONS 15 // max number of concession machines
|
|
#define MAXWALLTILES 64 // max number of wall tiles
|
|
#define MAXEAWALLS 12 // max electro-alien wall sockets
|
|
|
|
|
|
|
|
|
|
#define GS_NEEDCOORD 0
|
|
#define GS_FIRSTTIME 1
|
|
#define GS_COORDFOUND 2
|
|
#define GS_NO_MORE 3
|
|
|
|
#define GOLDIE_MAX_SPAWNS 10 // Max Number of spawn points for Goldstern
|
|
#define MIN_GOLDIE_FIRST_WAIT (5*60) // Min wait time for FIRST goldstern (5 Secs)
|
|
#define MAX_GOLDIE_FIRST_WAIT (15*60) // Max wait time for FIRST goldstern (15 Secs)
|
|
#define MIN_GOLDIE_WAIT (30*60) // Min wait time for next goldstern (30 Secs)
|
|
#define MAX_GOLDIE_WAIT (4*60*60) // Max wait time for next goldstern (4 Mins)
|
|
|
|
|
|
|
|
|
|
//
|
|
// tile constants
|
|
//
|
|
|
|
#define ICONARROWS 90
|
|
#define PUSHABLETILE 98
|
|
#define EXITTILE 99 // at end of castle
|
|
#define AREATILE 108 // first of NUMAREAS floor tiles
|
|
#define HIDDENAREATILE 162 // first of hidden floor tiles
|
|
#define NUMAREAS 45
|
|
#define DOORTRIGGERTILE 158
|
|
#define SMART_OFF_TRIGGER 159
|
|
#define SMART_ON_TRIGGER 160
|
|
#define ELEVATORTILE2 27 // Space Will Switch
|
|
#define TRANSPORTERTILE 21
|
|
#define DIRECTTRANSPORTTILE 32 // Wall to use on direct level transporters
|
|
#define SODATILE 15
|
|
#define TERMINALTILE 17
|
|
#define FOODTILE 18
|
|
#define AMBUSHTILE 106
|
|
#define RKEY_TILE 72
|
|
#define YKEY_TILE 73
|
|
#define BKEY_TILE 74
|
|
#define BFG_TILE 75
|
|
#define ION_TILE 76
|
|
#define DETONATOR_TILE 77
|
|
#define CLOAK_TILE 78
|
|
#define LINC_TILE 79
|
|
#define CLOAK_AMBUSH_TILE 80
|
|
#define EATILE 24
|
|
#define ON_SWITCH 45 // ON Wall Switch -
|
|
#define OFF_SWITCH 57 // OFF Wall Switch -
|
|
#define WINTIGGERTILE 157 // Win Tile
|
|
#define NUMBERCHARS 9
|
|
|
|
#define START_TEXTURES 125 // Start of Textures - (Also LAST_WALL_TILE NUM)
|
|
#define NUM_TILES (PMSpriteStart)
|
|
|
|
|
|
//----------------
|
|
|
|
#define EXTRAPOINTS 400000
|
|
|
|
#define MAX_EXTRA_LIVES 4
|
|
|
|
#define PLAYERSPEED 3000
|
|
#define RUNSPEED 6000
|
|
|
|
#define SCREENSEG 0xa000
|
|
|
|
#define SCREENBWIDE 80
|
|
|
|
#define HEIGHTRATIO 0.41
|
|
#define TOP_STRIP_HEIGHT 16 // Pix height of top strip.
|
|
|
|
//#define BORDERCOLOR 116
|
|
#define FLASHCOLOR 5
|
|
#define FLASHTICS 4
|
|
|
|
|
|
#define PLAYERSIZE MINDIST // player radius
|
|
#define MINACTORDIST 0x10000l // minimum dist from player center
|
|
// to any actor center
|
|
|
|
#define NUMLATCHPICS 100
|
|
|
|
|
|
#define PI 3.141592657
|
|
|
|
#define GLOBAL1 (1l<<16)
|
|
#define TILEGLOBAL GLOBAL1
|
|
#define PIXGLOBAL (GLOBAL1/64)
|
|
#define TILESHIFT 16l
|
|
#define UNSIGNEDSHIFT 8
|
|
|
|
#define ANGLES 360 // must be divisable by 4
|
|
#define ANGLEQUAD (ANGLES/4)
|
|
#define FINEANGLES 3600
|
|
#define ANG90 (FINEANGLES/4)
|
|
#define ANG180 (ANG90*2)
|
|
#define ANG270 (ANG90*3)
|
|
#define ANG360 (ANG90*4)
|
|
#define VANG90 (ANGLES/4)
|
|
#define VANG180 (VANG90*2)
|
|
#define VANG270 (VANG90*3)
|
|
#define VANG360 (VANG90*4)
|
|
|
|
#define MINDIST (0x5800l)
|
|
|
|
#define MAX_WVIEW_DIST (44) // Max wrap_view dist in TILES
|
|
|
|
|
|
|
|
#define MAXSCALEHEIGHT 256 // largest scale on largest view
|
|
#define MAXVIEWWIDTH 320
|
|
|
|
#define MAPSIZE 64 // maps are 64*64 max
|
|
#define NORTH 0
|
|
#define EAST 1
|
|
#define SOUTH 2
|
|
#define WEST 3
|
|
|
|
|
|
#define STATUSLINES 48
|
|
|
|
#define SCREENSIZE (SCREENBWIDE*208)
|
|
#define PAGE1START 0
|
|
#define PAGE2START (SCREENSIZE)
|
|
#define PAGE3START (SCREENSIZE*2u)
|
|
#define FREESTART (SCREENSIZE*3u)
|
|
|
|
|
|
#define PIXRADIUS 512
|
|
|
|
#define STARTAMMO 8
|
|
|
|
// Token Definations
|
|
|
|
#define MAX_TOKENS 25
|
|
|
|
|
|
|
|
// Ammo/Weapon Definations
|
|
|
|
//#define NUM_AMMO_SEGS 42 // 42 Color segments (OR 21 2-Color segs)
|
|
#define MAX_AMMO 100 // Max ammount of ammo for any weapon
|
|
#define AUTOCHARGE_WAIT 50 // Tics wait time for a full charge
|
|
#define MAX_PLASMA_DETONATORS 100 // Max number of Plasma Detonators
|
|
#define PLASMA_DETONATORS_DELAY 60*4 // Number of tics before plasma detonator explodes
|
|
|
|
|
|
|
|
|
|
// gamestate.flags flag values
|
|
|
|
#define GS_HEARTB_SOUND 0x0001
|
|
|
|
#ifdef CEILING_FLOOR_COLORS
|
|
#define GS_DRAW_CEILING 0x0002
|
|
#endif
|
|
|
|
#define GS_CLIP_WALLS 0x0004
|
|
|
|
#ifdef CEILING_FLOOR_COLORS
|
|
#define GS_DRAW_FLOOR 0x0008
|
|
#endif
|
|
|
|
#define GS_VIRGIN_LEVEL 0x0010
|
|
#define GS_CHECK_STATS_BONUS 0x0020
|
|
#define GS_ATTACK_INFOAREA 0x0040
|
|
#define GS_KILL_INF_WARN 0x0080
|
|
#define GS_SHOW_OVERHEAD 0x0100
|
|
#define GS_BAD_DIZ_FILE 0x0200
|
|
#define GS_MUSIC_TEST 0x0400
|
|
#define GS_LIGHTING 0x0800
|
|
#define GS_TICS_FOR_SCORE 0x1000
|
|
#define GS_NOWAIT 0x2000
|
|
#define GS_STARTLEVEL 0x4000
|
|
#define GS_QUICKRUN 0x8000
|
|
|
|
// object flag values - Oh Shit Longs!
|
|
|
|
#define FL_SHOOTABLE 0x00000001
|
|
#define FL_BONUS 0x00000002
|
|
#define FL_NEVERMARK 0x00000004
|
|
#define FL_VISABLE 0x00000008
|
|
#define FL_ATTACKMODE 0x00000010
|
|
#define FL_FIRSTATTACK 0x00000020
|
|
#define FL_AMBUSH 0x00000040
|
|
#define FL_NONMARK 0x00000080
|
|
#define FL_SOLID 0x00000100
|
|
#define FL_STATIONARY 0x00000200
|
|
#define FL_FRIENDLY 0x00000400
|
|
#define FL_DEADGUY 0x00000800
|
|
#define FL_RUNAWAY 0x00001000
|
|
#define FL_RUNTOSTATIC 0x00002000
|
|
#define FL_OFFSET_STATES 0x00004000
|
|
#define FL_INFORMANT 0x00008000
|
|
#define FL_INTERROGATED 0x00010000
|
|
#define FL_RANDOM_TURN 0x00020000
|
|
#define FL_NO_SLIDE 0x00040000
|
|
#define FL_MUST_ATTACK 0x00080000
|
|
#define FL_ALERTED 0x00100000
|
|
#define FL_FREEZE 0x00200000
|
|
#define FL_HAS_AMMO 0x00400000
|
|
#define FL_PROJ_TRANSPARENT 0x00800000
|
|
#define FL_PROJ_CHECK_TRANSPARENT 0x01000000
|
|
#define FL_HAS_TOKENS 0x02000000
|
|
#define FL_LOCKED_STATE 0x04000000
|
|
#define FL_BARRIER 0x08000000
|
|
#define FL_SHOOTMODE 0x10000000
|
|
#define FL_SLIDE_INIT 0x20000000
|
|
#define FL_STORED_OBJPTR 0x40000000
|
|
#define FL_FAKE_STATIC 0x80000000
|
|
|
|
#define FL_BARRIER_DAMAGE FL_HAS_TOKENS
|
|
|
|
|
|
// object flags2 values
|
|
|
|
#define FL2_BFGSHOT_SOLID 0x0001
|
|
#define FL2_BFG_SHOOTABLE 0x0002
|
|
#define FL2_NOTGUNSHOOTABLE 0x0004
|
|
#define FL2_SCARED 0x0008
|
|
#define FL2_DROP_RKEY 0x0010
|
|
#define FL2_DROP_YKEY 0x0020
|
|
#define FL2_DROP_BKEY 0x0040
|
|
#define FL2_DROP_BFG 0x0080
|
|
#define FL2_DROP_ION 0x0100
|
|
#define FL2_DROP_DETONATOR 0x0200
|
|
#define FL2_CLOAKED 0x0400
|
|
#define FL2_LINC 0x0800
|
|
#define FL2_DAMAGE_CLOAK 0x1000
|
|
|
|
|
|
// Run Reason Flags -- Why am I running..Duh..
|
|
|
|
#define RR_AMMO 0x0001
|
|
#define RR_HEALTH 0x0002
|
|
#define RR_INTERROGATED 0x0004
|
|
#define RR_CASUAL_PICKUP 0x0008
|
|
#define RR_SCARED 0x0010
|
|
|
|
// 0xFFxx Special Tile Flags (Flags in MASKED plane of Ted Maps)
|
|
|
|
#define TF_STARFIELD 0x01
|
|
#define TF_WRAP_VIEW 0x02
|
|
|
|
//
|
|
// Concession Machine Types
|
|
|
|
#define CT_HINT 0x0
|
|
#define CT_FOOD 0x1
|
|
#define CT_BEVS 0x2
|
|
|
|
|
|
//
|
|
// Radar switches for terminal Floor Cheat
|
|
|
|
#define RS_GOLDSTERN_TRACKER 0x0001
|
|
#define RS_PERSONNEL_TRACKER 0x0002
|
|
#define RS_SECURITY_STATUS 0x0004
|
|
|
|
//
|
|
// Door Flags
|
|
//
|
|
#define DR_BLASTABLE 0x01
|
|
|
|
//
|
|
// Smart Trigger Possiblities
|
|
//
|
|
#define ST_TURN_OFF 0x00
|
|
#define ST_TURN_ON 0x01
|
|
#define ST_TOGGLE 0x02
|
|
|
|
|
|
//
|
|
//
|
|
//
|
|
|
|
#define LT_GUN_DELAY gamestate.lastammo_leds
|
|
#define RT_GUN_DELAY gamestate.ammo_leds
|
|
#define GUN_TOGGLE gamestate.ammo
|
|
|
|
|
|
#define CANT_SAVE_GAME_TXT " Can't save this game! \n" \
|
|
" Hard Disk FULL!"
|
|
|
|
typedef enum ss_type {
|
|
ss_normal,
|
|
ss_quick,
|
|
ss_justcalc,
|
|
} ss_type;
|
|
|
|
typedef enum cds_io_type {
|
|
cds_dos_print,
|
|
cds_id_print,
|
|
cds_menu_print,
|
|
} cds_io_type;
|
|
|
|
|
|
typedef enum sp_type {
|
|
sp_normal,
|
|
sp_loading,
|
|
sp_saving,
|
|
sp_changeview,
|
|
sp_teleporting,
|
|
} sp_type;
|
|
|
|
//
|
|
// sprite constants
|
|
//
|
|
|
|
typedef enum {
|
|
SPR_DEMO,
|
|
|
|
//
|
|
// static sprites
|
|
//
|
|
SPR_STAT_0, // SPR1V
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_STAT_1,
|
|
#endif
|
|
SPR_STAT_2,
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_STAT_3,SPR_STAT_4,
|
|
SPR_STAT_5,SPR_STAT_6,SPR_STAT_7,
|
|
#endif
|
|
|
|
SPR_STAT_8,SPR_STAT_9,SPR_STAT_10,SPR_STAT_11, // SPR2V
|
|
SPR_STAT_12,SPR_STAT_13,SPR_STAT_14,SPR_STAT_15,
|
|
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_STAT_16,SPR_STAT_17, // SPR3V
|
|
#endif
|
|
SPR_STAT_18,
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_STAT_19,
|
|
SPR_STAT_20,SPR_STAT_21,SPR_STAT_22,SPR_STAT_23,
|
|
#endif
|
|
|
|
SPR_STAT_24, // SPR4V
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_STAT_25,
|
|
#endif
|
|
SPR_STAT_26,SPR_STAT_27,
|
|
SPR_STAT_28,SPR_STAT_29,
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_STAT_30,
|
|
#endif
|
|
SPR_STAT_31,
|
|
|
|
SPR_STAT_32,SPR_STAT_33,SPR_STAT_34,SPR_STAT_35, // SPR5V
|
|
SPR_STAT_36,
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_STAT_37,
|
|
#endif
|
|
SPR_STAT_38,
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_STAT_39,
|
|
#endif
|
|
|
|
SPR_STAT_40,SPR_STAT_41,SPR_STAT_42,SPR_STAT_43, // SPR7V
|
|
SPR_STAT_44,SPR_STAT_45,SPR_STAT_46,SPR_STAT_47,
|
|
|
|
SPR_STAT_48,SPR_STAT_49, // SPR8V
|
|
SPR_STAT_50,SPR_STAT_51,
|
|
|
|
SPR_STAT_52,SPR_STAT_53,SPR_STAT_54,SPR_STAT_55, // SPR9V
|
|
SPR_STAT_56,SPR_CRATE_1,
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_CRATE_2,SPR_CRATE_3,
|
|
#endif
|
|
|
|
SPR_STAT_57, // SPR10V
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_STAT_58,SPR_STAT_59,
|
|
#endif
|
|
SPR_STAT_60,
|
|
SPR_STAT_61,SPR_STAT_62,SPR_STAT_63,
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_STAT_64,
|
|
#endif
|
|
|
|
SPR_STAT_65,SPR_STAT_66,SPR_STAT_67,SPR_STAT_68, // SPR11V
|
|
SPR_STAT_69,
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_STAT_70,SPR_STAT_71,SPR_STAT_72,
|
|
#endif
|
|
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_STAT_73,SPR_STAT_74,SPR_STAT_75,SPR_STAT_76, // SPR12V
|
|
#endif
|
|
SPR_STAT_77,SPR_STAT_78,SPR_STAT_79,
|
|
|
|
SPR_DOORBOMB,SPR_ALT_DOORBOMB,SPR_RUBBLE,SPR_BONZI_TREE, // OBJECTS1V
|
|
SPR_AUTOMAPPER,SPR_POT_PLANT,SPR_TUBE_PLANT,SPR_HITECH_CHAIR,
|
|
|
|
|
|
//
|
|
// aesthetics
|
|
//
|
|
SPR_AIR_VENT,
|
|
SPR_BLOOD_DRIP1,SPR_BLOOD_DRIP2,SPR_BLOOD_DRIP3,SPR_BLOOD_DRIP4,
|
|
SPR_WATER_DRIP1,SPR_WATER_DRIP2,SPR_WATER_DRIP3,SPR_WATER_DRIP4,
|
|
|
|
SPR_DECO_ARC_1,SPR_DECO_ARC_2,SPR_DECO_ARC_3,
|
|
|
|
SPR_GRATE,
|
|
SPR_STEAM_1,SPR_STEAM_2,SPR_STEAM_3,SPR_STEAM_4,
|
|
|
|
SPR_STEAM_PIPE,
|
|
SPR_PIPE_STEAM_1,SPR_PIPE_STEAM_2,SPR_PIPE_STEAM_3,SPR_PIPE_STEAM_4,
|
|
|
|
//
|
|
// Dead Actors (from Blake Stone: AOG)
|
|
//
|
|
SPR_DEAD_RENT, SPR_DEAD_PRO, SPR_DEAD_SWAT,
|
|
|
|
//
|
|
// Rent-A-Cop
|
|
//
|
|
SPR_RENT_S_1,SPR_RENT_S_2,SPR_RENT_S_3,SPR_RENT_S_4,
|
|
SPR_RENT_S_5,SPR_RENT_S_6,SPR_RENT_S_7,SPR_RENT_S_8,
|
|
|
|
SPR_RENT_W1_1,SPR_RENT_W1_2,SPR_RENT_W1_3,SPR_RENT_W1_4,
|
|
SPR_RENT_W1_5,SPR_RENT_W1_6,SPR_RENT_W1_7,SPR_RENT_W1_8,
|
|
|
|
SPR_RENT_W2_1,SPR_RENT_W2_2,SPR_RENT_W2_3,SPR_RENT_W2_4,
|
|
SPR_RENT_W2_5,SPR_RENT_W2_6,SPR_RENT_W2_7,SPR_RENT_W2_8,
|
|
|
|
SPR_RENT_W3_1,SPR_RENT_W3_2,SPR_RENT_W3_3,SPR_RENT_W3_4,
|
|
SPR_RENT_W3_5,SPR_RENT_W3_6,SPR_RENT_W3_7,SPR_RENT_W3_8,
|
|
|
|
SPR_RENT_W4_1,SPR_RENT_W4_2,SPR_RENT_W4_3,SPR_RENT_W4_4,
|
|
SPR_RENT_W4_5,SPR_RENT_W4_6,SPR_RENT_W4_7,SPR_RENT_W4_8,
|
|
|
|
SPR_RENT_DIE_1,SPR_RENT_DIE_2,SPR_RENT_DIE_3,SPR_RENT_DIE_4,
|
|
SPR_RENT_PAIN_1,SPR_RENT_DEAD,
|
|
|
|
SPR_RENT_SHOOT1,SPR_RENT_SHOOT2,SPR_RENT_SHOOT3,
|
|
|
|
//
|
|
// PRO-GUARD
|
|
//
|
|
SPR_PRO_S_1,SPR_PRO_S_2,SPR_PRO_S_3,SPR_PRO_S_4,
|
|
SPR_PRO_S_5,SPR_PRO_S_6,SPR_PRO_S_7,SPR_PRO_S_8,
|
|
|
|
SPR_PRO_W1_1,SPR_PRO_W1_2,SPR_PRO_W1_3,SPR_PRO_W1_4,
|
|
SPR_PRO_W1_5,SPR_PRO_W1_6,SPR_PRO_W1_7,SPR_PRO_W1_8,
|
|
|
|
SPR_PRO_W2_1,SPR_PRO_W2_2,SPR_PRO_W2_3,SPR_PRO_W2_4,
|
|
SPR_PRO_W2_5,SPR_PRO_W2_6,SPR_PRO_W2_7,SPR_PRO_W2_8,
|
|
|
|
SPR_PRO_W3_1,SPR_PRO_W3_2,SPR_PRO_W3_3,SPR_PRO_W3_4,
|
|
SPR_PRO_W3_5,SPR_PRO_W3_6,SPR_PRO_W3_7,SPR_PRO_W3_8,
|
|
|
|
SPR_PRO_W4_1,SPR_PRO_W4_2,SPR_PRO_W4_3,SPR_PRO_W4_4,
|
|
SPR_PRO_W4_5,SPR_PRO_W4_6,SPR_PRO_W4_7,SPR_PRO_W4_8,
|
|
|
|
SPR_PRO_PAIN_1,SPR_PRO_DIE_1,SPR_PRO_DIE_2,SPR_PRO_DIE_3,
|
|
SPR_PRO_PAIN_2,SPR_PRO_DIE_4,SPR_PRO_DEAD,
|
|
|
|
SPR_PRO_SHOOT1,SPR_PRO_SHOOT2,SPR_PRO_SHOOT3,
|
|
|
|
//
|
|
// swat
|
|
//
|
|
SPR_SWAT_S_1,SPR_SWAT_S_2,SPR_SWAT_S_3,SPR_SWAT_S_4,
|
|
SPR_SWAT_S_5,SPR_SWAT_S_6,SPR_SWAT_S_7,SPR_SWAT_S_8,
|
|
|
|
SPR_SWAT_W1_1,SPR_SWAT_W1_2,SPR_SWAT_W1_3,SPR_SWAT_W1_4,
|
|
SPR_SWAT_W1_5,SPR_SWAT_W1_6,SPR_SWAT_W1_7,SPR_SWAT_W1_8,
|
|
|
|
SPR_SWAT_W2_1,SPR_SWAT_W2_2,SPR_SWAT_W2_3,SPR_SWAT_W2_4,
|
|
SPR_SWAT_W2_5,SPR_SWAT_W2_6,SPR_SWAT_W2_7,SPR_SWAT_W2_8,
|
|
|
|
SPR_SWAT_W3_1,SPR_SWAT_W3_2,SPR_SWAT_W3_3,SPR_SWAT_W3_4,
|
|
SPR_SWAT_W3_5,SPR_SWAT_W3_6,SPR_SWAT_W3_7,SPR_SWAT_W3_8,
|
|
|
|
SPR_SWAT_W4_1,SPR_SWAT_W4_2,SPR_SWAT_W4_3,SPR_SWAT_W4_4,
|
|
SPR_SWAT_W4_5,SPR_SWAT_W4_6,SPR_SWAT_W4_7,SPR_SWAT_W4_8,
|
|
|
|
SPR_SWAT_PAIN_1,SPR_SWAT_DIE_1,SPR_SWAT_DIE_2,SPR_SWAT_DIE_3,
|
|
SPR_SWAT_PAIN_2,SPR_SWAT_DIE_4,SPR_SWAT_DEAD,
|
|
|
|
SPR_SWAT_SHOOT1,SPR_SWAT_SHOOT2,SPR_SWAT_SHOOT3,
|
|
|
|
SPR_SWAT_WOUNDED1,SPR_SWAT_WOUNDED2,SPR_SWAT_WOUNDED3,SPR_SWAT_WOUNDED4,
|
|
|
|
//
|
|
// GENERAL SCIENTIST
|
|
//
|
|
SPR_OFC_S_1,SPR_OFC_S_2,SPR_OFC_S_3,SPR_OFC_S_4,
|
|
SPR_OFC_S_5,SPR_OFC_S_6,SPR_OFC_S_7,SPR_OFC_S_8,
|
|
|
|
SPR_OFC_W1_1,SPR_OFC_W1_2,SPR_OFC_W1_3,SPR_OFC_W1_4,
|
|
SPR_OFC_W1_5,SPR_OFC_W1_6,SPR_OFC_W1_7,SPR_OFC_W1_8,
|
|
|
|
SPR_OFC_W2_1,SPR_OFC_W2_2,SPR_OFC_W2_3,SPR_OFC_W2_4,
|
|
SPR_OFC_W2_5,SPR_OFC_W2_6,SPR_OFC_W2_7,SPR_OFC_W2_8,
|
|
|
|
SPR_OFC_W3_1,SPR_OFC_W3_2,SPR_OFC_W3_3,SPR_OFC_W3_4,
|
|
SPR_OFC_W3_5,SPR_OFC_W3_6,SPR_OFC_W3_7,SPR_OFC_W3_8,
|
|
|
|
SPR_OFC_W4_1,SPR_OFC_W4_2,SPR_OFC_W4_3,SPR_OFC_W4_4,
|
|
SPR_OFC_W4_5,SPR_OFC_W4_6,SPR_OFC_W4_7,SPR_OFC_W4_8,
|
|
|
|
SPR_OFC_PAIN_1,SPR_OFC_DIE_1,SPR_OFC_DIE_2,SPR_OFC_DIE_3,
|
|
SPR_OFC_PAIN_2,SPR_OFC_DIE_4,SPR_OFC_DEAD,
|
|
|
|
SPR_OFC_SHOOT1,SPR_OFC_SHOOT2,SPR_OFC_SHOOT3,
|
|
|
|
//
|
|
// Bad Boy Dr. Goldstern
|
|
//
|
|
SPR_GOLD_S_1,SPR_GOLD_S_2,SPR_GOLD_S_3,SPR_GOLD_S_4,
|
|
SPR_GOLD_S_5,SPR_GOLD_S_6,SPR_GOLD_S_7,SPR_GOLD_S_8,
|
|
|
|
SPR_GOLD_W1_1,SPR_GOLD_W1_2,SPR_GOLD_W1_3,SPR_GOLD_W1_4,
|
|
SPR_GOLD_W1_5,SPR_GOLD_W1_6,SPR_GOLD_W1_7,SPR_GOLD_W1_8,
|
|
|
|
SPR_GOLD_W2_1,SPR_GOLD_W2_2,SPR_GOLD_W2_3,SPR_GOLD_W2_4,
|
|
SPR_GOLD_W2_5,SPR_GOLD_W2_6,SPR_GOLD_W2_7,SPR_GOLD_W2_8,
|
|
|
|
SPR_GOLD_W3_1,SPR_GOLD_W3_2,SPR_GOLD_W3_3,SPR_GOLD_W3_4,
|
|
SPR_GOLD_W3_5,SPR_GOLD_W3_6,SPR_GOLD_W3_7,SPR_GOLD_W3_8,
|
|
|
|
SPR_GOLD_W4_1,SPR_GOLD_W4_2,SPR_GOLD_W4_3,SPR_GOLD_W4_4,
|
|
SPR_GOLD_W4_5,SPR_GOLD_W4_6,SPR_GOLD_W4_7,SPR_GOLD_W4_8,
|
|
|
|
SPR_GOLD_PAIN_1,
|
|
|
|
SPR_GOLD_WRIST_1,SPR_GOLD_WRIST_2,
|
|
|
|
SPR_GOLD_SHOOT1,SPR_GOLD_SHOOT2,SPR_GOLD_SHOOT3,
|
|
|
|
SPR_GOLD_WARP1,SPR_GOLD_WARP2,SPR_GOLD_WARP3,SPR_GOLD_WARP4,
|
|
SPR_GOLD_WARP5,
|
|
|
|
SPR_GOLD_DEATH1,SPR_GOLD_DEATH2,SPR_GOLD_DEATH3,SPR_GOLD_DEATH4,
|
|
SPR_GOLD_DEATH5,SPR_MGOLD_OUCH,
|
|
|
|
SPR_GOLD_MORPH1,SPR_GOLD_MORPH2,SPR_GOLD_MORPH3,SPR_GOLD_MORPH4,
|
|
SPR_GOLD_MORPH5,SPR_GOLD_MORPH6,SPR_GOLD_MORPH7,SPR_GOLD_MORPH8,
|
|
|
|
SPR_MGOLD_WALK1,SPR_MGOLD_WALK2,SPR_MGOLD_WALK3,SPR_MGOLD_WALK4,
|
|
SPR_MGOLD_ATTACK1,SPR_MGOLD_ATTACK2,SPR_MGOLD_ATTACK3,SPR_MGOLD_ATTACK4,
|
|
|
|
SPR_MGOLD_SHOT1,SPR_MGOLD_SHOT2,SPR_MGOLD_SHOT3,
|
|
SPR_MGOLD_SHOT_EXP1,SPR_MGOLD_SHOT_EXP2,SPR_MGOLD_SHOT_EXP3,
|
|
|
|
//
|
|
// GROUND SCOUT
|
|
//
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_GSCOUT_W1_1,SPR_GSCOUT_W1_2,SPR_GSCOUT_W1_3,SPR_GSCOUT_W1_4,
|
|
SPR_GSCOUT_W1_5,SPR_GSCOUT_W1_6,SPR_GSCOUT_W1_7,SPR_GSCOUT_W1_8,
|
|
|
|
SPR_GSCOUT_W2_1,SPR_GSCOUT_W2_2,SPR_GSCOUT_W2_3,SPR_GSCOUT_W2_4,
|
|
SPR_GSCOUT_W2_5,SPR_GSCOUT_W2_6,SPR_GSCOUT_W2_7,SPR_GSCOUT_W2_8,
|
|
|
|
SPR_GSCOUT_W3_1,SPR_GSCOUT_W3_2,SPR_GSCOUT_W3_3,SPR_GSCOUT_W3_4,
|
|
SPR_GSCOUT_W3_5,SPR_GSCOUT_W3_6,SPR_GSCOUT_W3_7,SPR_GSCOUT_W3_8,
|
|
|
|
SPR_GSCOUT_W4_1,SPR_GSCOUT_W4_2,SPR_GSCOUT_W4_3,SPR_GSCOUT_W4_4,
|
|
SPR_GSCOUT_W4_5,SPR_GSCOUT_W4_6,SPR_GSCOUT_W4_7,SPR_GSCOUT_W4_8,
|
|
|
|
SPR_GSCOUT_DIE1,SPR_GSCOUT_DIE2,SPR_GSCOUT_DIE3,SPR_GSCOUT_DIE4,
|
|
SPR_GSCOUT_DIE5,SPR_GSCOUT_DIE6,SPR_GSCOUT_DIE7,SPR_GSCOUT_DIE8,
|
|
|
|
SPR_GSCOUT_DEAD,
|
|
#endif
|
|
|
|
//
|
|
// FLOATING SCOUT
|
|
//
|
|
SPR_FSCOUT_W1_1,SPR_FSCOUT_W1_2,SPR_FSCOUT_W1_3,SPR_FSCOUT_W1_4,
|
|
SPR_FSCOUT_W1_5,SPR_FSCOUT_W1_6,SPR_FSCOUT_W1_7,SPR_FSCOUT_W1_8,
|
|
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_FSCOUT_W2_1,SPR_FSCOUT_W2_2,SPR_FSCOUT_W2_3,SPR_FSCOUT_W2_4,
|
|
SPR_FSCOUT_W2_5,SPR_FSCOUT_W2_6,SPR_FSCOUT_W2_7,SPR_FSCOUT_W2_8,
|
|
|
|
SPR_FSCOUT_W3_1,SPR_FSCOUT_W3_2,SPR_FSCOUT_W3_3,SPR_FSCOUT_W3_4,
|
|
SPR_FSCOUT_W3_5,SPR_FSCOUT_W3_6,SPR_FSCOUT_W3_7,SPR_FSCOUT_W3_8,
|
|
|
|
SPR_FSCOUT_W4_1,SPR_FSCOUT_W4_2,SPR_FSCOUT_W4_3,SPR_FSCOUT_W4_4,
|
|
SPR_FSCOUT_W4_5,SPR_FSCOUT_W4_6,SPR_FSCOUT_W4_7,SPR_FSCOUT_W4_8,
|
|
#endif
|
|
|
|
SPR_FSCOUT_DIE1,SPR_FSCOUT_DIE2,SPR_FSCOUT_DIE3,SPR_FSCOUT_DIE4,
|
|
SPR_FSCOUT_DIE5,SPR_FSCOUT_DIE6,SPR_FSCOUT_DIE7,SPR_FSCOUT_DEAD,
|
|
|
|
//
|
|
// GENERAL EXPLOSION ANIM
|
|
//
|
|
SPR_EXPLOSION_1,SPR_EXPLOSION_2,SPR_EXPLOSION_3,SPR_EXPLOSION_4,
|
|
SPR_EXPLOSION_5,
|
|
|
|
//
|
|
// VITAL DEFENCE OBJECT
|
|
//
|
|
//#if GAME_VERSION != SHAREWARE_VERSION
|
|
// SPR_VITAL_STAND,
|
|
// SPR_VITAL_DIE_1, SPR_VITAL_DIE_2, SPR_VITAL_DIE_3,SPR_VITAL_DIE_4,
|
|
// SPR_VITAL_DIE_5, SPR_VITAL_DIE_6, SPR_VITAL_DIE_7, SPR_VITAL_DIE_8,
|
|
// SPR_VITAL_DEAD_1,SPR_VITAL_DEAD_2,SPR_VITAL_DEAD_3,
|
|
// SPR_VITAL_OUCH,
|
|
//#endif
|
|
|
|
//
|
|
// ROTATING CUBE
|
|
//
|
|
SPR_CUBE1,SPR_CUBE2,SPR_CUBE3,SPR_CUBE4,
|
|
SPR_CUBE5,SPR_CUBE6,SPR_CUBE7,SPR_CUBE8,
|
|
SPR_CUBE9,SPR_CUBE10,
|
|
SPR_CUBE_EXP1,SPR_CUBE_EXP2,SPR_CUBE_EXP3,SPR_CUBE_EXP4,
|
|
SPR_CUBE_EXP5,SPR_CUBE_EXP6,SPR_CUBE_EXP7,SPR_CUBE_EXP8,
|
|
SPR_DEAD_CUBE,
|
|
|
|
|
|
//
|
|
// RED SECURITY LIGHTS
|
|
//
|
|
SPR_SECURITY_NORMAL,SPR_SECURITY_ALERT,
|
|
|
|
//
|
|
// P.O.D. Alien
|
|
//
|
|
SPR_POD_EGG,SPR_POD_HATCH1,SPR_POD_HATCH2,SPR_POD_HATCH3,
|
|
SPR_POD_WALK1,SPR_POD_WALK2,SPR_POD_WALK3,SPR_POD_WALK4,
|
|
SPR_POD_ATTACK1,SPR_POD_ATTACK2,SPR_POD_ATTACK3,
|
|
SPR_POD_OUCH,
|
|
SPR_POD_DIE1,SPR_POD_DIE2,SPR_POD_DIE3,
|
|
SPR_POD_SPIT1,SPR_POD_SPIT2,SPR_POD_SPIT3,
|
|
|
|
//
|
|
// Electro-Alien
|
|
//
|
|
SPR_ELEC_APPEAR1,SPR_ELEC_APPEAR2,SPR_ELEC_APPEAR3,
|
|
SPR_ELEC_WALK1,SPR_ELEC_WALK2,SPR_ELEC_WALK3,SPR_ELEC_WALK4,
|
|
SPR_ELEC_OUCH,
|
|
SPR_ELEC_SHOOT1,SPR_ELEC_SHOOT2,SPR_ELEC_SHOOT3,
|
|
SPR_ELEC_DIE1,SPR_ELEC_DIE2,SPR_ELEC_DIE3,
|
|
SPR_ELEC_SHOT1,SPR_ELEC_SHOT2,
|
|
SPR_ELEC_SHOT_EXP1,SPR_ELEC_SHOT_EXP2,
|
|
|
|
//
|
|
// ElectroSphere
|
|
//
|
|
SPR_ELECTRO_SPHERE_ROAM1,SPR_ELECTRO_SPHERE_ROAM2,SPR_ELECTRO_SPHERE_ROAM3,
|
|
SPR_ELECTRO_SPHERE_OUCH,
|
|
SPR_ELECTRO_SPHERE_DIE1,SPR_ELECTRO_SPHERE_DIE2,SPR_ELECTRO_SPHERE_DIE3,
|
|
SPR_ELECTRO_SPHERE_DIE4,
|
|
|
|
//
|
|
// Genetic Guard
|
|
//
|
|
SPR_GENETIC_W1,SPR_GENETIC_W2,SPR_GENETIC_W3,SPR_GENETIC_W4,
|
|
SPR_GENETIC_SWING1,SPR_GENETIC_SWING2,SPR_GENETIC_SWING3,
|
|
SPR_GENETIC_DEAD,
|
|
SPR_GENETIC_DIE1,SPR_GENETIC_DIE2,SPR_GENETIC_DIE3,SPR_GENETIC_DIE4,
|
|
SPR_GENETIC_OUCH,
|
|
SPR_GENETIC_SHOOT1,SPR_GENETIC_SHOOT2,SPR_GENETIC_SHOOT3,
|
|
|
|
//
|
|
// Muntant human type 1
|
|
//
|
|
SPR_MUTHUM1_W1,SPR_MUTHUM1_W2,SPR_MUTHUM1_W3,SPR_MUTHUM1_W4,
|
|
SPR_MUTHUM1_SWING1,SPR_MUTHUM1_SWING2,SPR_MUTHUM1_SWING3,
|
|
SPR_MUTHUM1_DEAD,
|
|
SPR_MUTHUM1_DIE1,SPR_MUTHUM1_DIE2,SPR_MUTHUM1_DIE3,SPR_MUTHUM1_DIE4,
|
|
SPR_MUTHUM1_OUCH,
|
|
SPR_MUTHUM1_SPIT1,SPR_MUTHUM1_SPIT2,SPR_MUTHUM1_SPIT3,
|
|
|
|
//
|
|
// Muntant human type 2
|
|
//
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_MUTHUM2_W1,SPR_MUTHUM2_W2,SPR_MUTHUM2_W3,SPR_MUTHUM2_W4,
|
|
SPR_MUTHUM2_SWING1,SPR_MUTHUM2_SWING2,SPR_MUTHUM2_SWING3,
|
|
SPR_MUTHUM2_DEAD,
|
|
SPR_MUTHUM2_DIE1,SPR_MUTHUM2_DIE2,SPR_MUTHUM2_DIE3,SPR_MUTHUM2_DIE4,
|
|
SPR_MUTHUM2_OUCH,
|
|
SPR_MUTHUM2_SPIT1,SPR_MUTHUM2_SPIT2,SPR_MUTHUM2_SPIT3,
|
|
|
|
SPR_MUTHUM2_MORPH1,SPR_MUTHUM2_MORPH2,SPR_MUTHUM2_MORPH3,SPR_MUTHUM2_MORPH4,
|
|
SPR_MUTHUM2_MORPH5,SPR_MUTHUM2_MORPH6,SPR_MUTHUM2_MORPH7,SPR_MUTHUM2_MORPH8,
|
|
SPR_MUTHUM2_MORPH9,
|
|
#endif
|
|
|
|
//
|
|
// Large Cantained Alien
|
|
//
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_LCAN_ALIEN_READY,SPR_LCAN_ALIEN_B1,SPR_LCAN_ALIEN_B2,
|
|
SPR_LCAN_ALIEN_B3,SPR_LCAN_ALIEN_EMPTY,
|
|
|
|
SPR_LCAN_ALIEN_W1,SPR_LCAN_ALIEN_W2,SPR_LCAN_ALIEN_W3,SPR_LCAN_ALIEN_W4,
|
|
SPR_LCAN_ALIEN_SWING1,SPR_LCAN_ALIEN_SWING2,SPR_LCAN_ALIEN_SWING3,
|
|
SPR_LCAN_ALIEN_DEAD,
|
|
SPR_LCAN_ALIEN_DIE1,SPR_LCAN_ALIEN_DIE2,SPR_LCAN_ALIEN_DIE3,
|
|
SPR_LCAN_ALIEN_DIE4,SPR_LCAN_ALIEN_OUCH,
|
|
SPR_LCAN_ALIEN_SPIT1,SPR_LCAN_ALIEN_SPIT2,SPR_LCAN_ALIEN_SPIT3,
|
|
#endif
|
|
|
|
//
|
|
// Small Canister Alien
|
|
//
|
|
SPR_SCAN_ALIEN_READY,SPR_SCAN_ALIEN_B1,SPR_SCAN_ALIEN_B2,
|
|
SPR_SCAN_ALIEN_B3,SPR_SCAN_ALIEN_EMPTY,
|
|
|
|
SPR_SCAN_ALIEN_W1,SPR_SCAN_ALIEN_W2,SPR_SCAN_ALIEN_W3,SPR_SCAN_ALIEN_W4,
|
|
SPR_SCAN_ALIEN_SWING1,SPR_SCAN_ALIEN_SWING2,SPR_SCAN_ALIEN_SWING3,
|
|
SPR_SCAN_ALIEN_DEAD,
|
|
SPR_SCAN_ALIEN_DIE1,SPR_SCAN_ALIEN_DIE2,SPR_SCAN_ALIEN_DIE3,
|
|
SPR_SCAN_ALIEN_DIE4,SPR_SCAN_ALIEN_OUCH,
|
|
|
|
SPR_SCAN_ALIEN_SPIT1,SPR_SCAN_ALIEN_SPIT2,SPR_SCAN_ALIEN_SPIT3,
|
|
|
|
//
|
|
// Gurney Mutant
|
|
//
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_GURNEY_MUT_READY,SPR_GURNEY_MUT_B1,SPR_GURNEY_MUT_B2,
|
|
SPR_GURNEY_MUT_B3,SPR_GURNEY_MUT_EMPTY,
|
|
|
|
SPR_GURNEY_MUT_W1,SPR_GURNEY_MUT_W2,SPR_GURNEY_MUT_W3,SPR_GURNEY_MUT_W4,
|
|
SPR_GURNEY_MUT_SWING1,SPR_GURNEY_MUT_SWING2,SPR_GURNEY_MUT_SWING3,
|
|
SPR_GURNEY_MUT_DEAD,
|
|
SPR_GURNEY_MUT_DIE1,SPR_GURNEY_MUT_DIE2,SPR_GURNEY_MUT_DIE3,
|
|
SPR_GURNEY_MUT_DIE4,SPR_GURNEY_MUT_OUCH,
|
|
#endif
|
|
|
|
//
|
|
// Liquid Alien
|
|
//
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_LIQUID_M1,SPR_LIQUID_M2,SPR_LIQUID_M3,
|
|
SPR_LIQUID_R1,SPR_LIQUID_R2,SPR_LIQUID_R3,SPR_LIQUID_R4,
|
|
SPR_LIQUID_S1,SPR_LIQUID_S2,SPR_LIQUID_S3,
|
|
SPR_LIQUID_OUCH,
|
|
SPR_LIQUID_DIE_1,SPR_LIQUID_DIE_2,SPR_LIQUID_DIE_3,SPR_LIQUID_DIE_4,
|
|
SPR_LIQUID_DEAD,
|
|
SPR_LIQUID_SHOT_FLY_1,SPR_LIQUID_SHOT_FLY_2,SPR_LIQUID_SHOT_FLY_3,
|
|
SPR_LIQUID_SHOT_BURST_1,SPR_LIQUID_SHOT_BURST_2,SPR_LIQUID_SHOT_BURST_3,
|
|
#endif
|
|
|
|
//
|
|
// SPIT SHOTS
|
|
//
|
|
SPR_SPIT1_1,SPR_SPIT1_2,SPR_SPIT1_3,
|
|
SPR_SPIT_EXP1_1,SPR_SPIT_EXP1_2,SPR_SPIT_EXP1_3,
|
|
|
|
SPR_SPIT2_1,SPR_SPIT2_2,SPR_SPIT2_3,
|
|
SPR_SPIT_EXP2_1,SPR_SPIT_EXP2_2,SPR_SPIT_EXP2_3,
|
|
|
|
SPR_SPIT3_1,SPR_SPIT3_2,SPR_SPIT3_3,
|
|
SPR_SPIT_EXP3_1,SPR_SPIT_EXP3_2,SPR_SPIT_EXP3_3,
|
|
|
|
//
|
|
// Hanging Terrot
|
|
//
|
|
|
|
SPR_TERROT_1,SPR_TERROT_2,SPR_TERROT_3,SPR_TERROT_4,
|
|
SPR_TERROT_5,SPR_TERROT_6,SPR_TERROT_7,SPR_TERROT_8,
|
|
|
|
SPR_TERROT_FIRE_1,SPR_TERROT_FIRE_2,SPR_TERROT_DIE_1,SPR_TERROT_DIE_2,
|
|
SPR_TERROT_DIE_3,SPR_TERROT_DIE_4,SPR_TERROT_DEAD,
|
|
|
|
//
|
|
// player attack frames
|
|
//
|
|
SPR_KNIFEREADY,SPR_KNIFEATK1,SPR_KNIFEATK2,SPR_KNIFEATK3,
|
|
SPR_KNIFEATK4,
|
|
|
|
SPR_PISTOLREADY,SPR_PISTOLATK1,SPR_PISTOLATK2,SPR_PISTOLATK3,
|
|
SPR_PISTOLATK4,
|
|
|
|
SPR_MACHINEGUNREADY,SPR_MACHINEGUNATK1,SPR_MACHINEGUNATK2,MACHINEGUNATK3,
|
|
SPR_MACHINEGUNATK4,
|
|
|
|
SPR_CHAINREADY,SPR_CHAINATK1,SPR_CHAINATK2,SPR_CHAINATK3,
|
|
SPR_CHAINATK4,
|
|
|
|
SPR_GRENADEREADY,SPR_GRENADEATK1,SPR_GRENADEATK2,SPR_GRENADEATK3,
|
|
SPR_GRENADEATK4,
|
|
|
|
SPR_GRENADE_FLY1,SPR_GRENADE_FLY2,SPR_GRENADE_FLY3,SPR_GRENADE_FLY4,
|
|
SPR_GRENADE_EXPLODE1,SPR_GRENADE_EXPLODE2,SPR_GRENADE_EXPLODE3,SPR_GRENADE_EXPLODE4,
|
|
SPR_GRENADE_EXPLODE5,
|
|
|
|
SPR_ELEC_ARC1,SPR_ELEC_ARC2,SPR_ELEC_ARC3,SPR_ELEC_ARC4,
|
|
SPR_ELEC_POST1,SPR_ELEC_POST2,SPR_ELEC_POST3,SPR_ELEC_POST4,
|
|
|
|
SPR_VPOST1,SPR_VPOST2,SPR_VPOST3,SPR_VPOST4,
|
|
SPR_VPOST5,SPR_VPOST6,SPR_VPOST7,SPR_VPOST8,
|
|
|
|
SPR_VSPIKE1,SPR_VSPIKE2,SPR_VSPIKE3,SPR_VSPIKE4,
|
|
SPR_VSPIKE5,SPR_VSPIKE6,SPR_VSPIKE7,SPR_VSPIKE8,
|
|
|
|
SPR_GREEN_OOZE1,SPR_GREEN_OOZE2,SPR_GREEN_OOZE3,
|
|
SPR_BLACK_OOZE1,SPR_BLACK_OOZE2,SPR_BLACK_OOZE3,
|
|
|
|
SPR_GREEN2_OOZE1,SPR_GREEN2_OOZE2,SPR_GREEN2_OOZE3,
|
|
SPR_BLACK2_OOZE1,SPR_BLACK2_OOZE2,SPR_BLACK2_OOZE3,
|
|
|
|
SPR_CANDY_BAR,SPR_CANDY_WRAPER,
|
|
SPR_SANDWICH,SPR_SANDWICH_WRAPER,
|
|
|
|
SPR_BLAKE_W1,SPR_BLAKE_W2,SPR_BLAKE_W3,SPR_BLAKE_W4,
|
|
|
|
//
|
|
// BOSS 1
|
|
//
|
|
SPR_BOSS1_W1,SPR_BOSS1_W2,SPR_BOSS1_W3,SPR_BOSS1_W4,
|
|
SPR_BOSS1_SWING1,SPR_BOSS1_SWING2,SPR_BOSS1_SWING3,
|
|
SPR_BOSS1_DEAD,
|
|
SPR_BOSS1_DIE1,SPR_BOSS1_DIE2,SPR_BOSS1_DIE3,SPR_BOSS1_DIE4,
|
|
SPR_BOSS1_OUCH,
|
|
SPR_BOSS1_PROJ1,SPR_BOSS1_PROJ2,SPR_BOSS1_PROJ3,
|
|
SPR_BOSS1_EXP1,SPR_BOSS1_EXP2,SPR_BOSS1_EXP3,
|
|
SPR_BOSS1_MORPH1,SPR_BOSS1_MORPH2,SPR_BOSS1_MORPH3,SPR_BOSS1_MORPH4,
|
|
SPR_BOSS1_MORPH5,SPR_BOSS1_MORPH6,SPR_BOSS1_MORPH7,SPR_BOSS1_MORPH8,
|
|
SPR_BOSS1_MORPH9,
|
|
|
|
//
|
|
// BOSS 2
|
|
//
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_BOSS2_W1,SPR_BOSS2_W2,SPR_BOSS2_W3,SPR_BOSS2_W4,
|
|
SPR_BOSS2_SWING1,SPR_BOSS2_SWING2,SPR_BOSS2_SWING3,
|
|
SPR_BOSS2_DEAD,
|
|
SPR_BOSS2_DIE1,SPR_BOSS2_DIE2,SPR_BOSS2_DIE3,SPR_BOSS2_DIE4,
|
|
SPR_BOSS2_OUCH,
|
|
#endif
|
|
|
|
//
|
|
// BOSS 3
|
|
//
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_BOSS3_W1,SPR_BOSS3_W2,SPR_BOSS3_W3,SPR_BOSS3_W4,
|
|
SPR_BOSS3_SWING1,SPR_BOSS3_SWING2,SPR_BOSS3_SWING3,
|
|
SPR_BOSS3_DEAD,
|
|
SPR_BOSS3_DIE1,SPR_BOSS3_DIE2,SPR_BOSS3_DIE3,SPR_BOSS3_DIE4,
|
|
SPR_BOSS3_OUCH,
|
|
#endif
|
|
|
|
//
|
|
// BOSS 4
|
|
//
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_BOSS4_W1,SPR_BOSS4_W2,SPR_BOSS4_W3,SPR_BOSS4_W4,
|
|
SPR_BOSS4_SWING1,SPR_BOSS4_SWING2,SPR_BOSS4_SWING3,
|
|
SPR_BOSS4_DEAD,
|
|
SPR_BOSS4_DIE1,SPR_BOSS4_DIE2,SPR_BOSS4_DIE3,SPR_BOSS4_DIE4,
|
|
SPR_BOSS4_OUCH,
|
|
SPR_BOSS4_MORPH1,SPR_BOSS4_MORPH2,SPR_BOSS4_MORPH3,SPR_BOSS4_MORPH4,
|
|
SPR_BOSS4_MORPH5,SPR_BOSS4_MORPH6,SPR_BOSS4_MORPH7,SPR_BOSS4_MORPH8,
|
|
SPR_BOSS4_MORPH9,
|
|
#endif
|
|
|
|
//
|
|
// BOSS 5
|
|
//
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_BOSS5_W1,SPR_BOSS5_W2,SPR_BOSS5_W3,SPR_BOSS5_W4,
|
|
SPR_BOSS5_SWING1,SPR_BOSS5_SWING2,SPR_BOSS5_SWING3,
|
|
SPR_BOSS5_DEAD,
|
|
SPR_BOSS5_DIE1,SPR_BOSS5_DIE2,SPR_BOSS5_DIE3,SPR_BOSS5_DIE4,
|
|
SPR_BOSS5_OUCH,
|
|
SPR_BOSS5_PROJ1,SPR_BOSS5_PROJ2,SPR_BOSS5_PROJ3,
|
|
SPR_BOSS5_EXP1,SPR_BOSS5_EXP2,SPR_BOSS5_EXP3,
|
|
#endif
|
|
|
|
//
|
|
// BOSS 6
|
|
//
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_BOSS6_W1,SPR_BOSS6_W2,SPR_BOSS6_W3,SPR_BOSS6_W4,
|
|
SPR_BOSS6_SWING1,SPR_BOSS6_SWING2,SPR_BOSS6_SWING3,
|
|
SPR_BOSS6_DEAD,
|
|
SPR_BOSS6_DIE1,SPR_BOSS6_DIE2,SPR_BOSS6_DIE3,SPR_BOSS6_DIE4,
|
|
SPR_BOSS6_OUCH,
|
|
#endif
|
|
|
|
|
|
//
|
|
// BOSS 7
|
|
//
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_BOSS7_W1,SPR_BOSS7_W2,SPR_BOSS7_W3,SPR_BOSS7_W4,
|
|
SPR_BOSS7_SHOOT1,SPR_BOSS7_SHOOT2,SPR_BOSS7_SHOOT3,
|
|
SPR_BOSS7_DEAD,
|
|
SPR_BOSS7_DIE1,SPR_BOSS7_DIE2,SPR_BOSS7_DIE3,SPR_BOSS7_DIE4,
|
|
SPR_BOSS7_OUCH,
|
|
#endif
|
|
|
|
|
|
//
|
|
// BOSS 8
|
|
//
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_BOSS8_W1,SPR_BOSS8_W2,SPR_BOSS8_W3,SPR_BOSS8_W4,
|
|
SPR_BOSS8_SHOOT1,SPR_BOSS8_SHOOT2,SPR_BOSS8_SHOOT3,
|
|
SPR_BOSS8_DIE1,SPR_BOSS8_DIE2,SPR_BOSS8_DIE3,SPR_BOSS8_DIE4,
|
|
SPR_BOSS8_DEAD,SPR_BOSS8_OUCH,
|
|
#endif
|
|
|
|
|
|
//
|
|
// BOSS 9
|
|
//
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_BOSS9_W1,SPR_BOSS9_W2,SPR_BOSS9_W3,SPR_BOSS9_W4,
|
|
SPR_BOSS9_SHOOT1,SPR_BOSS9_SHOOT2,SPR_BOSS9_SHOOT3,
|
|
SPR_BOSS9_DIE1,SPR_BOSS9_DIE2,SPR_BOSS9_DIE3,SPR_BOSS9_DIE4,
|
|
SPR_BOSS9_DEAD,
|
|
SPR_BOSS9_OUCH,
|
|
#endif
|
|
|
|
|
|
//
|
|
// BOSS 10
|
|
//
|
|
#if GAME_VERSION != SHAREWARE_VERSION
|
|
SPR_BOSS10_W1,SPR_BOSS10_W2,SPR_BOSS10_W3,SPR_BOSS10_W4,
|
|
SPR_BOSS10_SHOOT1,SPR_BOSS10_SHOOT2,SPR_BOSS10_SHOOT3,
|
|
SPR_BOSS10_DEAD,
|
|
SPR_BOSS10_DIE1,SPR_BOSS10_DIE2,SPR_BOSS10_DIE3,SPR_BOSS10_DIE4,
|
|
SPR_BOSS10_OUCH,
|
|
|
|
SPR_BOSS10_SPIT1,SPR_BOSS10_SPIT2,SPR_BOSS10_SPIT3,
|
|
SPR_BOSS10_SPIT_EXP1,SPR_BOSS10_SPIT_EXP2,SPR_BOSS10_SPIT_EXP3,
|
|
#endif
|
|
|
|
|
|
//
|
|
// PLASMA DETONATOR EXPLOSION
|
|
//
|
|
SPR_DETONATOR_EXP1, SPR_DETONATOR_EXP2, SPR_DETONATOR_EXP3, SPR_DETONATOR_EXP4,
|
|
SPR_DETONATOR_EXP5, SPR_DETONATOR_EXP6, SPR_DETONATOR_EXP7, SPR_DETONATOR_EXP8,
|
|
|
|
//
|
|
// CLIP EXPLOSION
|
|
//
|
|
SPR_CLIP_EXP1, SPR_CLIP_EXP2, SPR_CLIP_EXP3, SPR_CLIP_EXP4,
|
|
SPR_CLIP_EXP5, SPR_CLIP_EXP6, SPR_CLIP_EXP7, SPR_CLIP_EXP8,
|
|
|
|
|
|
//
|
|
// BFG CANNON WEAPON
|
|
//
|
|
SPR_BFG_WEAPON1,SPR_BFG_WEAPON2,SPR_BFG_WEAPON3,SPR_BFG_WEAPON4,SPR_BFG_WEAPON5,
|
|
|
|
//
|
|
// BFG CANNON WEAPON SHOTS
|
|
//
|
|
SPR_BFG_WEAPON_SHOT1,SPR_BFG_WEAPON_SHOT2,SPR_BFG_WEAPON_SHOT3,
|
|
|
|
//
|
|
// BFG SHOT EXPLOSION
|
|
//
|
|
SPR_BFG_EXP1, SPR_BFG_EXP2, SPR_BFG_EXP3, SPR_BFG_EXP4,
|
|
SPR_BFG_EXP5, SPR_BFG_EXP6, SPR_BFG_EXP7, SPR_BFG_EXP8,
|
|
|
|
|
|
|
|
} sprite_t;
|
|
|
|
#if GAME_VERSION == SHAREWARE_VERSION
|
|
typedef enum {
|
|
|
|
SPR_STAT_1=0,
|
|
SPR_STAT_3=0,
|
|
SPR_STAT_4=0,
|
|
SPR_STAT_5=0,
|
|
SPR_STAT_6=0,
|
|
SPR_STAT_7=0,
|
|
SPR_STAT_16=0,
|
|
SPR_STAT_17=0,
|
|
SPR_STAT_19=0,
|
|
SPR_STAT_20=0,
|
|
SPR_STAT_21=0,
|
|
SPR_STAT_22=0,
|
|
SPR_STAT_23=0,
|
|
SPR_STAT_25=0,
|
|
SPR_STAT_30=0,
|
|
SPR_STAT_37=0,
|
|
SPR_STAT_39=0,
|
|
SPR_CRATE_2=0,
|
|
SPR_CRATE_3=0,
|
|
SPR_STAT_58=0,
|
|
SPR_STAT_59=0,
|
|
SPR_STAT_64=0,
|
|
SPR_STAT_70=0,
|
|
SPR_STAT_71=0,
|
|
SPR_STAT_72=0,
|
|
SPR_STAT_73=0,
|
|
SPR_STAT_74=0,
|
|
SPR_STAT_75=0,
|
|
SPR_STAT_76=0,
|
|
|
|
SPR_GSCOUT_W1_1,SPR_GSCOUT_W1_2,SPR_GSCOUT_W1_3,SPR_GSCOUT_W1_4,
|
|
SPR_GSCOUT_W1_5,SPR_GSCOUT_W1_6,SPR_GSCOUT_W1_7,SPR_GSCOUT_W1_8,
|
|
|
|
SPR_GSCOUT_W2_1,SPR_GSCOUT_W2_2,SPR_GSCOUT_W2_3,SPR_GSCOUT_W2_4,
|
|
SPR_GSCOUT_W2_5,SPR_GSCOUT_W2_6,SPR_GSCOUT_W2_7,SPR_GSCOUT_W2_8,
|
|
|
|
SPR_GSCOUT_W3_1,SPR_GSCOUT_W3_2,SPR_GSCOUT_W3_3,SPR_GSCOUT_W3_4,
|
|
SPR_GSCOUT_W3_5,SPR_GSCOUT_W3_6,SPR_GSCOUT_W3_7,SPR_GSCOUT_W3_8,
|
|
|
|
SPR_GSCOUT_W4_1,SPR_GSCOUT_W4_2,SPR_GSCOUT_W4_3,SPR_GSCOUT_W4_4,
|
|
SPR_GSCOUT_W4_5,SPR_GSCOUT_W4_6,SPR_GSCOUT_W4_7,SPR_GSCOUT_W4_8,
|
|
|
|
SPR_GSCOUT_DIE1,SPR_GSCOUT_DIE2,SPR_GSCOUT_DIE3,SPR_GSCOUT_DIE4,
|
|
SPR_GSCOUT_DIE5,SPR_GSCOUT_DIE6,SPR_GSCOUT_DIE7,SPR_GSCOUT_DIE8,
|
|
|
|
SPR_GSCOUT_DEAD,
|
|
|
|
SPR_FSCOUT_W2_1,SPR_FSCOUT_W2_2,SPR_FSCOUT_W2_3,SPR_FSCOUT_W2_4,
|
|
SPR_FSCOUT_W2_5,SPR_FSCOUT_W2_6,SPR_FSCOUT_W2_7,SPR_FSCOUT_W2_8,
|
|
|
|
SPR_FSCOUT_W3_1,SPR_FSCOUT_W3_2,SPR_FSCOUT_W3_3,SPR_FSCOUT_W3_4,
|
|
SPR_FSCOUT_W3_5,SPR_FSCOUT_W3_6,SPR_FSCOUT_W3_7,SPR_FSCOUT_W3_8,
|
|
|
|
SPR_FSCOUT_W4_1,SPR_FSCOUT_W4_2,SPR_FSCOUT_W4_3,SPR_FSCOUT_W4_4,
|
|
SPR_FSCOUT_W4_5,SPR_FSCOUT_W4_6,SPR_FSCOUT_W4_7,SPR_FSCOUT_W4_8,
|
|
|
|
SPR_VITAL_STAND,
|
|
SPR_VITAL_DIE_1, SPR_VITAL_DIE_2, SPR_VITAL_DIE_3,SPR_VITAL_DIE_4,
|
|
SPR_VITAL_DIE_5, SPR_VITAL_DIE_6, SPR_VITAL_DIE_7, SPR_VITAL_DIE_8,
|
|
SPR_VITAL_DEAD_1,SPR_VITAL_DEAD_2,SPR_VITAL_DEAD_3,
|
|
SPR_VITAL_OUCH,
|
|
|
|
SPR_MUTHUM2_W1,SPR_MUTHUM2_W2,SPR_MUTHUM2_W3,SPR_MUTHUM2_W4,
|
|
SPR_MUTHUM2_SWING1,SPR_MUTHUM2_SWING2,SPR_MUTHUM2_SWING3,
|
|
SPR_MUTHUM2_DEAD,
|
|
SPR_MUTHUM2_DIE1,SPR_MUTHUM2_DIE2,SPR_MUTHUM2_DIE3,SPR_MUTHUM2_DIE4,
|
|
SPR_MUTHUM2_OUCH,
|
|
SPR_MUTHUM2_SPIT1,SPR_MUTHUM2_SPIT2,SPR_MUTHUM2_SPIT3,
|
|
|
|
SPR_LCAN_ALIEN_READY,SPR_LCAN_ALIEN_B1,SPR_LCAN_ALIEN_B2,
|
|
SPR_LCAN_ALIEN_B3,SPR_LCAN_ALIEN_EMPTY,
|
|
|
|
SPR_LCAN_ALIEN_W1,SPR_LCAN_ALIEN_W2,SPR_LCAN_ALIEN_W3,SPR_LCAN_ALIEN_W4,
|
|
SPR_LCAN_ALIEN_SWING1,SPR_LCAN_ALIEN_SWING2,SPR_LCAN_ALIEN_SWING3,
|
|
SPR_LCAN_ALIEN_DEAD,
|
|
SPR_LCAN_ALIEN_DIE1,SPR_LCAN_ALIEN_DIE2,SPR_LCAN_ALIEN_DIE3,
|
|
SPR_LCAN_ALIEN_DIE4,SPR_LCAN_ALIEN_OUCH,
|
|
SPR_LCAN_ALIEN_SPIT1,SPR_LCAN_ALIEN_SPIT2,SPR_LCAN_ALIEN_SPIT3,
|
|
|
|
SPR_GURNEY_MUT_READY,SPR_GURNEY_MUT_B1,SPR_GURNEY_MUT_B2,
|
|
SPR_GURNEY_MUT_B3,SPR_GURNEY_MUT_EMPTY,
|
|
|
|
SPR_GURNEY_MUT_W1,SPR_GURNEY_MUT_W2,SPR_GURNEY_MUT_W3,SPR_GURNEY_MUT_W4,
|
|
SPR_GURNEY_MUT_SWING1,SPR_GURNEY_MUT_SWING2,SPR_GURNEY_MUT_SWING3,
|
|
SPR_GURNEY_MUT_DEAD,
|
|
SPR_GURNEY_MUT_DIE1,SPR_GURNEY_MUT_DIE2,SPR_GURNEY_MUT_DIE3,
|
|
SPR_GURNEY_MUT_DIE4,SPR_GURNEY_MUT_OUCH,
|
|
|
|
SPR_LIQUID_M1,SPR_LIQUID_M2,SPR_LIQUID_M3,
|
|
SPR_LIQUID_R1,SPR_LIQUID_R2,SPR_LIQUID_R3,SPR_LIQUID_R4,
|
|
SPR_LIQUID_S1,SPR_LIQUID_S2,SPR_LIQUID_S3,
|
|
SPR_LIQUID_OUCH,
|
|
SPR_LIQUID_DIE_1,SPR_LIQUID_DIE_2,SPR_LIQUID_DIE_3,SPR_LIQUID_DIE_4,
|
|
SPR_LIQUID_DEAD,
|
|
SPR_LIQUID_SHOT_FLY_1,SPR_LIQUID_SHOT_FLY_2,SPR_LIQUID_SHOT_FLY_3,
|
|
SPR_LIQUID_SHOT_BURST_1,SPR_LIQUID_SHOT_BURST_2,SPR_LIQUID_SHOT_BURST_3,
|
|
|
|
SPR_GREEN_OOZE1,SPR_GREEN_OOZE2,SPR_GREEN_OOZE3,
|
|
SPR_BLACK_OOZE1,SPR_BLACK_OOZE2,SPR_BLACK_OOZE3,
|
|
|
|
SPR_BOSS2_W1,SPR_BOSS2_W2,SPR_BOSS2_W3,SPR_BOSS2_W4,
|
|
SPR_BOSS2_SWING1,SPR_BOSS2_SWING2,SPR_BOSS2_SWING3,
|
|
SPR_BOSS2_DEAD,
|
|
SPR_BOSS2_DIE1,SPR_BOSS2_DIE2,SPR_BOSS2_DIE3,SPR_BOSS2_DIE4,
|
|
SPR_BOSS2_OUCH,
|
|
SPR_BOSS2_SHOOT1,SPR_BOSS2_SHOOT2,SPR_BOSS2_SHOOT3,
|
|
SPR_BOSS2_PROJ1,SPR_BOSS2_PROJ2,SPR_BOSS2_PROJ3,
|
|
SPR_BOSS2_EXP1,SPR_BOSS2_EXP2,SPR_BOSS2_EXP3,
|
|
|
|
SPR_BOSS3_W1,SPR_BOSS3_W2,SPR_BOSS3_W3,SPR_BOSS3_W4,
|
|
SPR_BOSS3_SWING1,SPR_BOSS3_SWING2,SPR_BOSS3_SWING3,
|
|
SPR_BOSS3_DEAD,
|
|
SPR_BOSS3_DIE1,SPR_BOSS3_DIE2,SPR_BOSS3_DIE3,SPR_BOSS3_DIE4,
|
|
SPR_BOSS3_OUCH,
|
|
SPR_BOSS3_SHOOT1,SPR_BOSS3_SHOOT2,SPR_BOSS3_SHOOT3,
|
|
SPR_BOSS3_PROJ1,SPR_BOSS3_PROJ2,SPR_BOSS3_PROJ3,
|
|
SPR_BOSS3_EXP1,SPR_BOSS3_EXP2,SPR_BOSS3_EXP3,
|
|
|
|
SPR_BOSS4_W1,SPR_BOSS4_W2,SPR_BOSS4_W3,SPR_BOSS4_W4,
|
|
SPR_BOSS4_SWING1,SPR_BOSS4_SWING2,SPR_BOSS4_SWING3,
|
|
SPR_BOSS4_DEAD,
|
|
SPR_BOSS4_DIE1,SPR_BOSS4_DIE2,SPR_BOSS4_DIE3,SPR_BOSS4_DIE4,
|
|
SPR_BOSS4_OUCH,
|
|
SPR_BOSS4_SHOOT1,SPR_BOSS4_SHOOT2,SPR_BOSS4_SHOOT3,
|
|
SPR_BOSS4_PROJ1,SPR_BOSS4_PROJ2,SPR_BOSS4_PROJ3,
|
|
SPR_BOSS4_EXP1,SPR_BOSS4_EXP2,SPR_BOSS4_EXP3,
|
|
|
|
SPR_BOSS5_W1,SPR_BOSS5_W2,SPR_BOSS5_W3,SPR_BOSS5_W4,
|
|
SPR_BOSS5_SWING1,SPR_BOSS5_SWING2,SPR_BOSS5_SWING3,
|
|
SPR_BOSS5_DEAD,
|
|
SPR_BOSS5_DIE1,SPR_BOSS5_DIE2,SPR_BOSS5_DIE3,SPR_BOSS5_DIE4,
|
|
SPR_BOSS5_OUCH,
|
|
SPR_BOSS5_SHOOT1,SPR_BOSS5_SHOOT2,SPR_BOSS5_SHOOT3,
|
|
SPR_BOSS5_PROJ1,SPR_BOSS5_PROJ2,SPR_BOSS5_PROJ3,
|
|
SPR_BOSS5_EXP1,SPR_BOSS5_EXP2,SPR_BOSS5_EXP3,
|
|
|
|
SPR_BOSS6_W1,SPR_BOSS6_W2,SPR_BOSS6_W3,SPR_BOSS6_W4,
|
|
SPR_BOSS6_SWING1,SPR_BOSS6_SWING2,SPR_BOSS6_SWING3,
|
|
SPR_BOSS6_DEAD,
|
|
SPR_BOSS6_DIE1,SPR_BOSS6_DIE2,SPR_BOSS6_DIE3,SPR_BOSS6_DIE4,
|
|
SPR_BOSS6_OUCH,
|
|
SPR_BOSS6_SHOOT1,SPR_BOSS6_SHOOT2,SPR_BOSS6_SHOOT3,
|
|
SPR_BOSS6_PROJ1,SPR_BOSS6_PROJ2,SPR_BOSS6_PROJ3,
|
|
SPR_BOSS6_EXP1,SPR_BOSS6_EXP2,SPR_BOSS6_EXP3,
|
|
} dummy_sprite_t;
|
|
#endif
|
|
|
|
//
|
|
// Door Objects
|
|
//
|
|
|
|
typedef enum
|
|
{
|
|
// LOCKED DOORS
|
|
|
|
L_METAL,
|
|
L_METAL_SHADE,
|
|
|
|
L_BIO,
|
|
L_BIO_SHADE,
|
|
|
|
L_ELEVATOR,
|
|
L_ELEVATOR_SHADE,
|
|
|
|
L_SPACE,
|
|
L_SPACE_SHADE,
|
|
|
|
L_PRISON,
|
|
L_PRISON_SHADE,
|
|
|
|
L_HIGH_SECURITY,
|
|
L_HIGH_SECURITY_SHADE,
|
|
|
|
L_ENTER_ONLY,
|
|
L_ENTER_ONLY_SHADE,
|
|
|
|
L_HIGH_TECH,
|
|
L_HIGH_TECH_SHADE,
|
|
|
|
// UNLOCKED DOORS
|
|
|
|
|
|
UL_METAL,
|
|
UL_METAL_SHADE,
|
|
|
|
UL_BIO,
|
|
UL_BIO_SHADE,
|
|
|
|
UL_ELEVATOR,
|
|
UL_ELEVATOR_SHADE,
|
|
|
|
UL_SPACE,
|
|
UL_SPACE_SHADE,
|
|
|
|
UL_PRISON,
|
|
UL_PRISON_SHADE,
|
|
|
|
UL_HIGH_SECURITY,
|
|
UL_HIGH_SECURITY_SHADE,
|
|
|
|
UL_ENTER_ONLY,
|
|
UL_ENTER_ONLY_SHADE,
|
|
|
|
UL_HIGH_TECH,
|
|
UL_HIGH_TECH_SHADE,
|
|
|
|
// MISC DOORS
|
|
|
|
NOEXIT,
|
|
NOEXIT_SHADE,
|
|
|
|
STEEL_JAM,
|
|
STEEL_JAM_SHADE,
|
|
|
|
SPACE_JAM,
|
|
SPACE_JAM_SHADE,
|
|
|
|
OFFICE_JAM,
|
|
OFFICE_JAM_SHADE,
|
|
|
|
BIO_JAM,
|
|
BIO_JAM_SHADE,
|
|
|
|
SPACE_JAM_2,
|
|
SPACE_JAM_2_SHADE,
|
|
|
|
// END OF DOOR LIST
|
|
|
|
NUMDOORTYPES,
|
|
|
|
|
|
} doortype;
|
|
|
|
|
|
//
|
|
// Breifing types - Note these are ordered to an char array in Breifing().
|
|
//
|
|
|
|
typedef enum
|
|
{
|
|
BT_LOSE,
|
|
BT_WIN,
|
|
BT_INTRO,
|
|
|
|
} breifing_type;
|
|
|
|
// Terminal Messages - These correspond to the order in which they are
|
|
// grabbed in VGAGRAPH.BS?. See BSTONEV.I
|
|
//
|
|
|
|
typedef enum
|
|
{
|
|
TM_HINT,
|
|
TM_JAM,
|
|
TM_HELP,
|
|
TM_APOGEE,
|
|
TM_ID,
|
|
TM_GOOBERS,
|
|
TM_MIKE,
|
|
TM_JIM,
|
|
TM_JERRY,
|
|
|
|
TM_JOSHUA,
|
|
|
|
TM_STAR,
|
|
|
|
TM_VITALS1,
|
|
TM_VITALS2,
|
|
|
|
TM_DEACTIVATE_TURRET,
|
|
TM_TURRETS_ACTIVATED,
|
|
TM_TURRETS_DEACTIVATED,
|
|
|
|
TM_LINK,
|
|
TM_LINK_OK,
|
|
TM_LINK_BAD,
|
|
|
|
TM_RADAR_OFF,
|
|
TM_RADAR_ON,
|
|
|
|
TM_SOUND_OFF,
|
|
TM_SOUND_ON,
|
|
|
|
TM_GOLDSTERN_TRACK_OFF,
|
|
TM_GOLDSTERN_TRACK_ON,
|
|
TM_GOLDSTERN_ARRIVED,
|
|
TM_GOLDSTERN_WILL_AR,
|
|
TM_GOLDSTERN_NO_PICK,
|
|
TM_GOLDSTERN_NO_INFO,
|
|
|
|
TM_RESET_SECURITY,
|
|
TM_SECURITY_STATUS_OFF,
|
|
TM_SECURITY_STATUS_ON,
|
|
|
|
TM_TURRET_DEACTIVATE_BAD,
|
|
TM_TURRET_DEACTIVATE_GOOD,
|
|
|
|
TM_UNRECOGNIZED_COMMAND,
|
|
TM_READY,
|
|
TM_RETURN,
|
|
TM_SECONDS,
|
|
TM_CHEATER,
|
|
TM_BLUEPRINTS,
|
|
|
|
TM_PROFILE_WHO,
|
|
TM_PROFILE_SARA,
|
|
TM_PROFILE_BLAKE,
|
|
TM_PROFILE_GOLDSTERN,
|
|
TM_PROFILE_UNKNOWN,
|
|
TM_DEACTIVATE_SOCKETS,
|
|
TM_ACTIVATE_SOCKETS,
|
|
TM_UNABLE_TO_PERFORM,
|
|
TM_NO_SOCKETS,
|
|
TM_ALREADY_ACTIVATED,
|
|
TM_ALREADY_DEACTIVATED,
|
|
TM_LAST,
|
|
} term_msg_type;
|
|
|
|
// Terminal Commands - The first set of commands TC_HINT - TC_end_of_1to1
|
|
// are directly mapped 1 to 1 to the terminal msgs.
|
|
//
|
|
|
|
typedef enum
|
|
{
|
|
TC_HINT,
|
|
TC_JAM,
|
|
TC_HELP,
|
|
TC_APOGEE,
|
|
TC_THANKS,
|
|
TC_GOOBERS,
|
|
TC_MIKE,
|
|
TC_JIM,
|
|
TC_JERRY,
|
|
|
|
// END OF ONE TO ONE LIST
|
|
|
|
TC_JOSHUA,
|
|
TC_STAR,
|
|
TC_BLUEPRINT,
|
|
TC_EXIT,
|
|
TC_QUIT,
|
|
TC_OFF,
|
|
TC_BYE,
|
|
TC_DISPLAY_PERSONNEL,
|
|
TC_SOUND,
|
|
TC_DISPLAY_GOLDSTERN,
|
|
TC_ARRIVAL_GOLDSTERN,
|
|
TC_DEACTIVATE_SECURITY,
|
|
TC_DISPLAY_SECURITY,
|
|
TC_SATALITE_STATUS,
|
|
TC_DEACTIVATE_TURRETS,
|
|
TC_TURRET_STATUS,
|
|
TC_PROFILE,
|
|
TC_SSTONE,
|
|
TC_BSTONE,
|
|
TC_GOLDSTERN,
|
|
TC_DEACTIVATE_SOCKETS,
|
|
TC_ACTIVATE_SOCKETS,
|
|
|
|
TC_LAST,
|
|
} term_cmd_type;
|
|
|
|
//
|
|
// Barrier State Transistions
|
|
//
|
|
|
|
typedef enum
|
|
{
|
|
bt_OFF,
|
|
bt_ON,
|
|
bt_DISABLING,
|
|
bt_DISABLED,
|
|
|
|
bt_OPENING, // For physical barriers
|
|
bt_CLOSING, // " " "
|
|
|
|
} barrier_state_type;
|
|
|
|
|
|
|
|
/*
|
|
=============================================================================
|
|
|
|
GLOBAL TYPES
|
|
|
|
=============================================================================
|
|
*/
|
|
|
|
typedef long fixed;
|
|
|
|
// Display priority is determined by the order of these bits!
|
|
// And, this order must match the PinballBonus table in AGENT.C!
|
|
//
|
|
#define B_GALIEN_DESTROYED 0x0001
|
|
#define B_SCORE_ROLLED 0x0002
|
|
#define B_ONE_MILLION 0x0004
|
|
#define B_EXTRA_MAN 0x0008
|
|
#define B_ENEMY_DESTROYED 0x0010
|
|
#define B_TOTAL_POINTS 0x0020
|
|
#define B_INFORMANTS_ALIVE 0x0040
|
|
|
|
#define BONUS_QUEUE gamestuff.level[gamestate.mapon].bonus_queue
|
|
#define BONUS_SHOWN gamestuff.level[gamestate.mapon].bonus_shown
|
|
|
|
#define PinballBonusShown(bonus) (BONUS_SHOWN & bonus)
|
|
#define ActivatePinballBonus(bonus) if (!PinballBonusShown(bonus)) BONUS_QUEUE |= bonus
|
|
|
|
typedef struct {
|
|
char far *BonusText; // REBA text pointer
|
|
long Points; // Score for this bonus
|
|
boolean Recurring; // Appear multiple times in a single level?
|
|
void (far *func)(); // Code to execute when you get this bonus.
|
|
} PinballBonusInfo;
|
|
|
|
typedef struct
|
|
{
|
|
char tics;
|
|
char attack;
|
|
char frame; // attack is 1 for gun, 2 for knife
|
|
} atkinf_t;
|
|
|
|
|
|
typedef enum // NOTE - This enum list is ORDERED!
|
|
{
|
|
mv_intro,
|
|
mv_final,
|
|
mv_NUM_MOVIES,
|
|
|
|
} movie_t;
|
|
|
|
typedef enum {
|
|
di_north,
|
|
di_east,
|
|
di_south,
|
|
di_west
|
|
} controldir_t;
|
|
|
|
typedef enum { // NOTE - This enum list is ORDERED!
|
|
dr_bio,
|
|
dr_normal,
|
|
dr_prison,
|
|
dr_elevator,
|
|
dr_high_security,
|
|
dr_office,
|
|
dr_oneway_left,
|
|
dr_oneway_up,
|
|
dr_oneway_right,
|
|
dr_oneway_down,
|
|
dr_space,
|
|
} door_t;
|
|
|
|
typedef enum {
|
|
kt_none =-1,
|
|
kt_red,
|
|
kt_yellow,
|
|
kt_blue,
|
|
NUMKEYS,
|
|
} keytype;
|
|
|
|
typedef enum {
|
|
ac_badobject = -1,
|
|
ac_no,
|
|
ac_yes,
|
|
ac_allways
|
|
} activetype;
|
|
|
|
typedef enum {
|
|
nothing,
|
|
playerobj,
|
|
inertobj,
|
|
fixup_inertobj,
|
|
deadobj,
|
|
|
|
|
|
// BEGIN - Start of ordered list for ActorInfoMsg[] for attacking
|
|
// actor REBA messages
|
|
|
|
rentacopobj,
|
|
hang_terrotobj,
|
|
gen_scientistobj,
|
|
podobj,
|
|
electroobj,
|
|
electrosphereobj,
|
|
proguardobj,
|
|
genetic_guardobj,
|
|
mutant_human1obj,
|
|
mutant_human2obj,
|
|
lcan_wait_alienobj,
|
|
lcan_alienobj,
|
|
scan_wait_alienobj,
|
|
scan_alienobj,
|
|
gurney_waitobj,
|
|
gurneyobj,
|
|
liquidobj,
|
|
swatobj,
|
|
goldsternobj,
|
|
gold_morphobj,
|
|
volatiletransportobj,
|
|
floatingbombobj,
|
|
rotating_cubeobj,
|
|
|
|
spider_mutantobj,
|
|
breather_beastobj,
|
|
cyborg_warriorobj,
|
|
reptilian_warriorobj,
|
|
acid_dragonobj,
|
|
mech_guardianobj,
|
|
|
|
final_boss1obj,
|
|
final_boss2obj,
|
|
final_boss3obj,
|
|
final_boss4obj,
|
|
|
|
blakeobj,
|
|
|
|
crate1obj,
|
|
crate2obj,
|
|
crate3obj,
|
|
|
|
green_oozeobj,
|
|
black_oozeobj,
|
|
green2_oozeobj,
|
|
black2_oozeobj,
|
|
podeggobj,
|
|
|
|
morphing_spider_mutantobj,
|
|
morphing_reptilian_warriorobj,
|
|
morphing_mutanthuman2obj,
|
|
|
|
SPACER1_OBJ,
|
|
electroshotobj, // NON-HITPOINT objects...
|
|
post_barrierobj,
|
|
arc_barrierobj,
|
|
vpost_barrierobj,
|
|
vspike_barrierobj,
|
|
goldmorphshotobj,
|
|
|
|
security_lightobj,
|
|
explosionobj,
|
|
steamgrateobj,
|
|
steampipeobj,
|
|
|
|
liquidshotobj,
|
|
|
|
lcanshotobj,
|
|
podshotobj,
|
|
scanshotobj,
|
|
dogshotobj,
|
|
mut_hum1shotobj,
|
|
|
|
ventdripobj,
|
|
playerspshotobj,
|
|
flickerlightobj,
|
|
|
|
plasma_detonatorobj,
|
|
plasma_detonator_reserveobj,
|
|
|
|
grenadeobj,
|
|
bfg_shotobj,
|
|
bfg_explosionobj,
|
|
pd_explosionobj,
|
|
|
|
spider_mutantshotobj,
|
|
breather_beastshotobj,
|
|
cyborg_warriorshotobj,
|
|
reptilian_warriorshotobj,
|
|
acid_dragonshotobj,
|
|
mech_guardianshotobj,
|
|
final_boss2shotobj,
|
|
final_boss4shotobj,
|
|
|
|
doorexplodeobj, // Door explosion_anim acto
|
|
gr_explosionobj,
|
|
gold_morphingobj,
|
|
|
|
} classtype;
|
|
|
|
|
|
//
|
|
// NOTE: When adding bonus objects - Make sure that they are added
|
|
// ----- at the bottom of the list or that BonusMsg[] is correctly
|
|
// updated.
|
|
//
|
|
|
|
typedef enum {
|
|
dressing,
|
|
|
|
bo_red_key,
|
|
bo_yellow_key,
|
|
bo_blue_key,
|
|
|
|
bo_clip,
|
|
bo_clip2,
|
|
bo_pistol,
|
|
bo_burst_rifle,
|
|
bo_ion_cannon,
|
|
bo_grenade,
|
|
bo_bfg_cannon,
|
|
|
|
// START of Bonus Health Ordered list
|
|
|
|
bo_fullheal,
|
|
bo_firstaid,
|
|
bo_ham,
|
|
bo_chicken,
|
|
bo_sandwich,
|
|
bo_candybar,
|
|
bo_water,
|
|
bo_water_puddle,
|
|
|
|
// END of ordered ...
|
|
|
|
bo_money_bag,
|
|
bo_loot,
|
|
|
|
bo_gold1,
|
|
bo_gold2,
|
|
bo_gold3,
|
|
|
|
bo_gold,
|
|
bo_bonus,
|
|
|
|
bo_plainvent,
|
|
bo_bloodvent,
|
|
bo_watervent,
|
|
|
|
bo_coin,
|
|
bo_coin5,
|
|
|
|
bo_plasma_detonator,
|
|
bo_automapper1,
|
|
|
|
bo_nothing,
|
|
|
|
block,
|
|
|
|
} stat_t;
|
|
|
|
typedef struct
|
|
{
|
|
int picnum;
|
|
stat_t type;
|
|
} stattype;
|
|
|
|
typedef enum {
|
|
east,
|
|
northeast,
|
|
north,
|
|
northwest,
|
|
west,
|
|
southwest,
|
|
south,
|
|
southeast,
|
|
nodir
|
|
} dirtype;
|
|
|
|
|
|
typedef enum {
|
|
en_rentacop, // Actors with hitpoints (normal actors)
|
|
en_hang_terrot,
|
|
en_gen_scientist,
|
|
en_pod,
|
|
en_electro_alien,
|
|
en_electrosphere,
|
|
en_proguard,
|
|
en_genetic_guard,
|
|
en_mutant_human1,
|
|
en_mutant_human2,
|
|
en_lcan_wait_alien,
|
|
en_lcan_alien,
|
|
en_scan_wait_alien,
|
|
en_scan_alien,
|
|
en_gurney_wait,
|
|
en_gurney,
|
|
en_liquid,
|
|
en_swat,
|
|
en_goldstern,
|
|
en_gold_morph,
|
|
en_volatiletransport,
|
|
en_floatingbomb,
|
|
en_rotating_cube,
|
|
|
|
en_spider_mutant,
|
|
en_breather_beast,
|
|
en_cyborg_warrior,
|
|
en_reptilian_warrior,
|
|
en_acid_dragon,
|
|
en_mech_guardian,
|
|
|
|
en_final_boss1,
|
|
en_final_boss2,
|
|
en_final_boss3,
|
|
en_final_boss4,
|
|
|
|
en_blake,
|
|
|
|
en_crate1,
|
|
en_crate2,
|
|
en_crate3,
|
|
|
|
en_green_ooze,
|
|
en_black_ooze,
|
|
en_green2_ooze,
|
|
en_black2_ooze,
|
|
en_podegg,
|
|
|
|
en_morphing_spider_mutant,
|
|
en_morphing_reptilian_warrior,
|
|
en_morphing_mutanthuman2,
|
|
|
|
NUMHITENEMIES,
|
|
|
|
en_electro_shot, // Actors WITHOUT hitpoints (abnormal actors?)
|
|
en_post_barrier,
|
|
en_arc_barrier,
|
|
en_vpost_barrier,
|
|
en_vspike_barrier,
|
|
en_goldmorphshot,
|
|
|
|
en_security_light,
|
|
en_explosion,
|
|
en_steamgrate,
|
|
en_steampipe,
|
|
|
|
en_liquidshot,
|
|
|
|
en_lcanshot,
|
|
en_podshot,
|
|
en_scanshot,
|
|
en_dogshot,
|
|
en_mut_hum1shot,
|
|
|
|
en_ventdrip,
|
|
en_playerspshotobj,
|
|
en_flickerlight,
|
|
|
|
en_plasma_detonator,
|
|
en_plasma_detonator_reserve,
|
|
|
|
en_vertsphere, // Actor types only used for spawning.
|
|
en_horzsphere,
|
|
en_diagsphere,
|
|
en_bloodvent,
|
|
en_watervent,
|
|
NUMENEMIES
|
|
} enemy_t;
|
|
|
|
#define SF_ROTATE 0x01
|
|
#define SF_PAINFRAME 0x02
|
|
|
|
typedef struct statestruct
|
|
{
|
|
byte flags;
|
|
int shapenum; // a shapenum of -1 means get from ob->temp1
|
|
int tictime;
|
|
void (*think) (),(*action) ();
|
|
struct statestruct *next;
|
|
} statetype;
|
|
|
|
|
|
//---------------------
|
|
//
|
|
// trivial actor structure
|
|
//
|
|
//---------------------
|
|
|
|
typedef struct statstruct
|
|
{
|
|
byte tilex,tiley;
|
|
byte areanumber;
|
|
|
|
byte *visspot;
|
|
int shapenum; // if shapenum == -1 the obj has been removed
|
|
unsigned flags;
|
|
byte itemnumber;
|
|
char lighting;
|
|
} statobj_t;
|
|
|
|
//---------------------
|
|
//
|
|
// door actor structure
|
|
//
|
|
//---------------------
|
|
|
|
typedef struct doorstruct
|
|
{
|
|
byte tilex,tiley;
|
|
boolean vertical;
|
|
char flags;
|
|
keytype lock;
|
|
door_t type;
|
|
enum {dr_open,dr_closed,dr_opening,dr_closing,dr_jammed} action;
|
|
int ticcount;
|
|
byte areanumber[2];
|
|
} doorobj_t;
|
|
|
|
|
|
//--------------------
|
|
//
|
|
// thinking actor structure
|
|
//
|
|
//--------------------
|
|
|
|
typedef struct objstruct
|
|
{
|
|
byte tilex,tiley;
|
|
byte areanumber;
|
|
|
|
activetype active;
|
|
int ticcount;
|
|
classtype obclass;
|
|
statetype *state;
|
|
|
|
unsigned long flags;
|
|
unsigned flags2; // Aux flags
|
|
|
|
long distance; // if negative, wait for that door to open
|
|
dirtype dir;
|
|
dirtype trydir; // "bit 7" == "direction to turn" flag
|
|
|
|
fixed x,y;
|
|
unsigned char s_tilex,s_tiley; // s_tilex==0, running for corner
|
|
|
|
int viewx;
|
|
unsigned viewheight;
|
|
fixed transx,transy; // in global coord
|
|
|
|
int hitpoints;
|
|
unsigned char ammo;
|
|
char lighting;
|
|
unsigned linc;
|
|
int angle;
|
|
long speed;
|
|
|
|
int temp1;
|
|
int temp2;
|
|
unsigned temp3; // holds 'last door used' by 'smart' actors
|
|
|
|
struct objstruct *next,*prev;
|
|
} objtype;
|
|
|
|
|
|
|
|
|
|
enum
|
|
{
|
|
bt_nobutton=-1,
|
|
bt_attack=0,
|
|
bt_strafe,
|
|
bt_run,
|
|
bt_use,
|
|
bt_ready_autocharge,
|
|
bt_ready_pistol,
|
|
bt_ready_burst_rifle,
|
|
bt_ready_ion_cannon,
|
|
bt_ready_grenade,
|
|
bt_ready_bfg_cannon,
|
|
bt_ready_plasma_detonators,
|
|
|
|
bt_SPACER,
|
|
|
|
NUMBUTTONS,
|
|
};
|
|
|
|
|
|
typedef enum
|
|
{
|
|
wp_autocharge,
|
|
wp_pistol,
|
|
wp_burst_rifle,
|
|
wp_ion_cannon,
|
|
wp_grenade,
|
|
wp_bfg_cannon,
|
|
// wp_plasma_detonators,
|
|
|
|
wp_SPACER,
|
|
NUMWEAPONS,
|
|
} weapontype;
|
|
|
|
|
|
|
|
typedef enum {
|
|
gd_baby,
|
|
gd_easy,
|
|
gd_medium,
|
|
gd_hard
|
|
};
|
|
|
|
|
|
|
|
typedef enum
|
|
{
|
|
ELEVATOR_BACK,
|
|
TRANSPORTER_BACK
|
|
|
|
} backgroundtype;
|
|
|
|
|
|
|
|
|
|
//
|
|
// General Coord (tile) structure
|
|
//
|
|
typedef struct
|
|
{
|
|
unsigned char tilex, tiley;
|
|
} tilecoord_t;
|
|
|
|
//-----------------------------------
|
|
//
|
|
// barrier coord/table structure
|
|
//
|
|
//-----------------------------------
|
|
|
|
typedef struct
|
|
{
|
|
tilecoord_t coord;
|
|
unsigned char on;
|
|
} barrier_type;
|
|
|
|
|
|
//---------------
|
|
//
|
|
// gamestate structure
|
|
//
|
|
//---------------
|
|
|
|
typedef struct statsInfoType {
|
|
long total_points,accum_points;
|
|
byte total_enemy,accum_enemy;
|
|
byte total_inf,accum_inf;
|
|
short overall_floor;
|
|
} statsInfoType;
|
|
|
|
typedef struct {
|
|
unsigned bonus_queue; // bonuses that need to be shown
|
|
unsigned bonus_shown; // bonuses that have been shown
|
|
boolean locked;
|
|
statsInfoType stats;
|
|
byte ptilex,ptiley;
|
|
int pangle;
|
|
} levelinfo;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
levelinfo old_levelinfo[MAPS_PER_EPISODE];
|
|
levelinfo level[MAPS_PER_EPISODE];
|
|
} fargametype;
|
|
|
|
typedef struct
|
|
{
|
|
int turn_around,turn_angle;
|
|
unsigned flags;
|
|
int lastmapon;
|
|
int difficulty;
|
|
int mapon;
|
|
int status_refresh;
|
|
long oldscore,tic_score,score,nextextra;
|
|
int score_roll_wait;
|
|
int lives;
|
|
int health;
|
|
int health_delay;
|
|
char health_str[4];
|
|
|
|
int rpower,old_rpower;
|
|
char rzoom;
|
|
char radar_leds,lastradar_leds;
|
|
|
|
char lastammo_leds;
|
|
char ammo_leds;
|
|
int ammo,old_ammo;
|
|
|
|
int plasma_detonators,old_plasma_detonators;
|
|
|
|
char useable_weapons;
|
|
char weapons,weapon,chosenweapon,old_weapons[4];
|
|
char key_floor;
|
|
|
|
char weapon_wait;
|
|
int attackframe,attackcount,weaponframe;
|
|
int episode;
|
|
long TimeCount;
|
|
long killx,killy;
|
|
char far *msg; // InfoArea msg...
|
|
char numkeys[NUMKEYS],old_numkeys[NUMKEYS];
|
|
barrier_type barrier_table[MAX_BARRIER_SWITCHES];
|
|
barrier_type old_barrier_table[MAX_BARRIER_SWITCHES];
|
|
unsigned tokens,old_tokens;
|
|
boolean boss_key_dropped,old_boss_key_dropped;
|
|
int wintilex,wintiley;
|
|
} gametype;
|
|
|
|
typedef enum {
|
|
ex_stillplaying,
|
|
ex_completed,
|
|
ex_transported,
|
|
ex_died,
|
|
ex_warped,
|
|
ex_resetgame,
|
|
ex_loadedgame,
|
|
ex_victorious,
|
|
ex_abort,
|
|
ex_demodone,
|
|
ex_secretlevel,
|
|
ex_title,
|
|
} exit_t;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
unsigned char init_delay;
|
|
unsigned char delay_count;
|
|
unsigned char firstreg;
|
|
unsigned char lastreg;
|
|
} CycleInfo;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
int viewx,
|
|
viewheight,
|
|
shapenum;
|
|
char lighting;
|
|
char cloaked;
|
|
} visobj_t;
|
|
|
|
|
|
typedef enum {at_NONE=0,at_CYCLE,at_REBOUND,at_ONCE} animtype_t;
|
|
typedef enum {ad_FWD=0,ad_REV} animdir_t;
|
|
|
|
|
|
typedef struct ofs_anim_struct
|
|
{
|
|
unsigned animtype:2; // animtype_t
|
|
unsigned curframe:5;
|
|
unsigned maxframe:5;
|
|
unsigned animdir:1; // animdir_t
|
|
unsigned extra:3;
|
|
|
|
} ofs_anim_t;
|
|
|
|
|
|
//
|
|
// DisplayInfoMsg Priorities - Duplicate Values are Allowed.
|
|
//
|
|
// ("enum" list used simply for debuging use like Object Classes)
|
|
//
|
|
|
|
//
|
|
// Msg_Priorities - Hell.. Lets just make them all the same...
|
|
|
|
typedef enum
|
|
{
|
|
MP_min_val = 0,
|
|
|
|
MP_HEARTB_SND = 0x0200,
|
|
MP_WALLSWITCH_OPERATE = 0x0200,
|
|
|
|
MP_DOOR_OPERATE = 0x0200,
|
|
MP_CONCESSION_OPERATE = 0x0200,
|
|
MP_WEAPON_AVAIL = 0x0200,
|
|
|
|
MP_ATTACK_INFO = 0x0200,
|
|
MP_NO_MORE_AMMO = 0x0200,
|
|
MP_WEAPON_MALFUNCTION = 0x0200,
|
|
|
|
MP_INTERROGATE = 0x0200,
|
|
MP_CONCESSION_HINT = 0x0200,
|
|
MP_NO_MORE_TOKENS = 0x0200,
|
|
MP_CONCESSION_OUT_ORDER = 0x0200,
|
|
|
|
MP_BONUS = 0x0200,
|
|
|
|
MP_TAKE_DAMAGE = 0x0200,
|
|
MP_DETONATOR = 0x0200,
|
|
|
|
MP_PINBALL_BONUS = 0x3000,
|
|
MP_FLOOR_UNLOCKED = 0x3000,
|
|
|
|
MP_POWERUP = 0x7000, // Power-Up/Game-Start Value
|
|
MP_max_val = 0x7FFF, // DO NOT USE/EXCEED - MAX Val
|
|
} msg_priorities;
|
|
|
|
typedef enum
|
|
{
|
|
MT_NOTHING,
|
|
MT_CLEAR,
|
|
MT_ATTACK,
|
|
MT_GENERAL,
|
|
MT_OUT_OF_AMMO,
|
|
MT_MALFUNCTION,
|
|
MT_NO_MO_FOOD_TOKENS,
|
|
MT_BONUS,
|
|
|
|
} infomsg_type;
|
|
|
|
|
|
//
|
|
// Menu Instruction Text types...
|
|
//
|
|
typedef enum
|
|
{
|
|
IT_STANDARD,
|
|
IT_HIGHSCORES,
|
|
IT_ENTER_HIGHSCORE,
|
|
IT_MOUSE_SEN,
|
|
MAX_INSTRUCTIONS,
|
|
|
|
} inst_type;
|
|
|
|
|
|
|
|
#define MAX_CACHE_MSGS 30
|
|
#define MAX_CACHE_MSG_LEN 190
|
|
|
|
//------------------------- BASIC STRUCTURES -----------------------------
|
|
|
|
// Basic 'message info' structure
|
|
//
|
|
typedef struct {
|
|
unsigned char local_val; // where msg is in 'local' list
|
|
unsigned char global_val; // where msg was in 'global' list
|
|
memptr mSeg; // pointer to message
|
|
} mCacheInfo;
|
|
|
|
// Basic 'message list' structure
|
|
//
|
|
typedef struct {
|
|
short NumMsgs; // number of messages
|
|
mCacheInfo mInfo[MAX_CACHE_MSGS]; // table of message 'info'
|
|
} mCacheList;
|
|
|
|
//----------------------- CONCESSION STRUCTURES --------------------------
|
|
|
|
// Concession 'message info' structure
|
|
//
|
|
typedef struct {
|
|
mCacheInfo mInfo;
|
|
unsigned char type; // type of concession
|
|
unsigned char operate_cnt; // # of times req'd to operate
|
|
} con_mCacheInfo;
|
|
|
|
// Concession 'message list' structure
|
|
//
|
|
typedef struct {
|
|
short NumMsgs; // also, num concessions
|
|
con_mCacheInfo cmInfo[MAX_CACHE_MSGS];
|
|
} concession_t;
|
|
|
|
//------------------------ INFORMANT STRUCTURES --------------------------
|
|
|
|
// Informant 'message info' structure
|
|
//
|
|
typedef struct {
|
|
mCacheInfo mInfo;
|
|
byte areanumber; // 'where' msg can be used
|
|
} sci_mCacheInfo;
|
|
|
|
// Informant 'message list' structure
|
|
//
|
|
typedef struct {
|
|
short NumMsgs;
|
|
sci_mCacheInfo smInfo[MAX_CACHE_MSGS];
|
|
} scientist_t;
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
|
|
// Electro-Alien controller structer
|
|
//
|
|
typedef struct
|
|
{
|
|
char tilex,tiley; // where this controller is in the map.
|
|
char aliens_out; // aliens spawned by this controller.
|
|
short delay; // delay before spawning another alien.
|
|
} eaWallInfo;
|
|
|
|
|
|
|
|
|
|
|
|
// General Structure to hold goldstern specific stuff...
|
|
//
|
|
|
|
typedef struct
|
|
{
|
|
unsigned char LastIndex; // Last Spawn Coord Index
|
|
unsigned char SpawnCnt; // Num of Spawnpoints for Goldstern
|
|
unsigned flags; // What type of command/operation is needed...
|
|
unsigned WaitTime; // Wait time for Goldstern Spawn (current & Next)
|
|
boolean GoldSpawned; // Has Goldstern been spawned?
|
|
} GoldsternInfo_t;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
long x,y,z;
|
|
byte color;
|
|
} star_t;
|
|
|
|
#define MAX_SPACE_THRUST ((long)0x4fff)
|
|
|
|
#define MAX_STARS 128
|
|
#define MAX_SPACE_STATS (((MAXSTATS*sizeof(statobj_t))-((MAX_STARS+1)*sizeof(star_t)))/sizeof(statobj_t))
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
=============================================================================
|
|
|
|
3D_MAIN DEFINITIONS
|
|
|
|
=============================================================================
|
|
*/
|
|
|
|
#define TITLE_LOOP_MUSIC PLOT_MUS
|
|
|
|
#define CANT_PLAY_TXT "\n" \
|
|
"ERROR: Insufficient disk space.\n" \
|
|
"Try deleting some files from your hard disk.\n\n"
|
|
|
|
|
|
extern char tempPath[];
|
|
|
|
extern const float radtoint; // = (float)FINEANGLES/2/PI;
|
|
|
|
extern levelinfo far default_level[MAPS_PER_EPISODE];
|
|
extern short view_xl,view_xh,view_yl,view_yh;
|
|
extern short starting_level, debug_value, starting_episode, starting_difficulty;
|
|
|
|
extern boolean MS_CheckParm (char far *string);
|
|
|
|
extern signed char lastmap_tilex,lastmap_tiley;
|
|
extern unsigned TopColor, BottomColor;
|
|
extern char str[80],str2[20];
|
|
//extern unsigned tedlevelnum;
|
|
//extern boolean tedlevel;
|
|
extern boolean nospr;
|
|
extern boolean IsA386;
|
|
|
|
extern fixed focallength;
|
|
extern unsigned viewangles;
|
|
extern unsigned screenofs;
|
|
extern int viewwidth;
|
|
extern int viewheight;
|
|
extern int centerx;
|
|
extern int shootdelta;
|
|
|
|
extern int dirangle[9];
|
|
|
|
extern boolean startgame,loadedgame;
|
|
extern int mouseadjustment;
|
|
//
|
|
// math tables
|
|
//
|
|
extern int pixelangle[MAXVIEWWIDTH];
|
|
extern long far finetangent[FINEANGLES/4];
|
|
extern fixed far sintable[],far *costable;
|
|
|
|
//
|
|
// derived constants
|
|
//
|
|
extern fixed scale,maxslope;
|
|
extern long heightnumerator;
|
|
extern int minheightdiv;
|
|
|
|
extern char configname[13];
|
|
|
|
extern boolean ShowQuickMsg;
|
|
|
|
long DeleteChunk(int handle, char *chunk);
|
|
|
|
void LoadFonts(void);
|
|
void ClearNClose(void);
|
|
void CycleColors(void);
|
|
void LoadAccessCodes(void);
|
|
void AlignPlayerInElevator(void);
|
|
void HelpScreens (void);
|
|
void OrderingInfo (void);
|
|
void TEDDeath(void);
|
|
void CalcProjection (long focal);
|
|
boolean SetViewSize (unsigned width, unsigned height);
|
|
void NewGame (int difficulty,int episode);
|
|
void NewViewSize (int width);
|
|
unsigned scan_atoi(char *s);
|
|
void AlignPlayerOnTransporter(void);
|
|
|
|
unsigned UseFunc(char huge *first, char huge *next);
|
|
boolean DoMovie(movie_t movie, memptr palette);
|
|
boolean CheckDiskSpace(long needed,char far *text,cds_io_type io_type);
|
|
boolean SaveTheGame(int handle, char far *description);
|
|
long ChecksumFile(char *file, long checksum);
|
|
void BadChecksum(void);
|
|
void InvalidLevels(void);
|
|
void CheckValidity(char *file, long valid_checksum);
|
|
void UnauthorizedLevels(void);
|
|
void ShowChecksums(void);
|
|
void fprint(char far *text);
|
|
|
|
void SetupWalls (void);
|
|
void InitDigiMap (void);
|
|
|
|
void CleanUpDoors_N_Actors(void);
|
|
|
|
|
|
void MakeDestPath(char far *file);
|
|
void InitDestPath(void);
|
|
|
|
extern long FindChunk(int file, char *chunk);
|
|
extern long NextChunk(int file);
|
|
|
|
/*
|
|
=============================================================================
|
|
|
|
3D_GAME DEFINITIONS
|
|
|
|
=============================================================================
|
|
*/
|
|
|
|
extern int db_count;
|
|
extern classtype far debug_bonus[2][800];
|
|
extern fargametype far gamestuff;
|
|
extern tilecoord_t far GoldieList[GOLDIE_MAX_SPAWNS];
|
|
extern GoldsternInfo_t GoldsternInfo;
|
|
|
|
extern unsigned char VitalsRemain,VitalsOnFloor;
|
|
|
|
extern eaWallInfo eaList[];
|
|
extern char NumEAWalls,NumEASpawned;
|
|
extern boolean ingame,fizzlein,screensplit;
|
|
extern unsigned latchpics[NUMLATCHPICS];
|
|
extern gametype gamestate;
|
|
extern int doornum;
|
|
|
|
extern char demoname[13];
|
|
|
|
void DrawPlayBorder (void);
|
|
void ScanInfoPlane (void);
|
|
void SetupGameLevel (void);
|
|
void NormalScreen (void);
|
|
void DrawPlayScreen (boolean);
|
|
void FizzleOut (void);
|
|
void GameLoop (void);
|
|
|
|
// JAB
|
|
#define PlaySoundLocTile(s,tx,ty) PlaySoundLocGlobal(s,(((long)(tx) << TILESHIFT) + (1L << (TILESHIFT - 1))),(((long)ty << TILESHIFT) + (1L << (TILESHIFT - 1))))
|
|
#define PlaySoundLocActor(s,ob) PlaySoundLocGlobal(s,(ob)->x,(ob)->y)
|
|
void PlaySoundLocGlobal(word s,fixed gx,fixed gy);
|
|
|
|
|
|
void Warped (void);
|
|
void RotateView(int DestAngle,unsigned char RotSpeed);
|
|
void DrawWarpIn(void);
|
|
void BMAmsg(char far *msg);
|
|
void CacheBMAmsg(unsigned MsgNum);
|
|
void BevelBox(short xl, short yl, short w, short h, byte hi, byte med, byte lo);
|
|
|
|
void AddTotalPoints(unsigned points);
|
|
void AddTotalInformants(char informants);
|
|
void AddTotalEnemy(unsigned enemies);
|
|
|
|
void ShadowPrintLocationText(sp_type type);
|
|
void LoseScreen(void);
|
|
void LoadLocationText(short textNum);
|
|
|
|
/*
|
|
=============================================================================
|
|
|
|
3D_PLAY DEFINITIONS
|
|
|
|
=============================================================================
|
|
*/
|
|
|
|
extern int objcount;
|
|
|
|
extern objtype *DeadGuys[],dummyobj;
|
|
extern unsigned char NumDeadGuys;
|
|
|
|
extern exit_t playstate;
|
|
|
|
extern int bordertime;
|
|
|
|
extern boolean madenoise,usedummy,nevermark;
|
|
extern unsigned char alerted,alerted_areanum;
|
|
|
|
extern objtype objlist[MAXACTORS],*new,*player,*lastobj,
|
|
*objfreelist,*killerobj;
|
|
extern statobj_t statobjlist[MAXSTATS],*laststatobj;
|
|
extern doorobj_t doorobjlist[MAXDOORS],*lastdoorobj;
|
|
|
|
extern unsigned farmapylookup[MAPSIZE];
|
|
extern byte *nearmapylookup[MAPSIZE];
|
|
|
|
extern byte tilemap[MAPSIZE][MAPSIZE]; // wall values only
|
|
extern byte spotvis[MAPSIZE][MAPSIZE];
|
|
extern objtype *actorat[MAPSIZE][MAPSIZE];
|
|
|
|
#define UPDATESIZE (UPDATEWIDE*UPDATEHIGH)
|
|
extern byte update[UPDATESIZE];
|
|
|
|
extern boolean singlestep,godmode,noclip;
|
|
extern int extravbls;
|
|
extern int DebugOk;
|
|
extern int InstantWin, InstantQuit;
|
|
extern boolean PowerBall;
|
|
extern int TestQuickSave, TestAutoMapper;
|
|
extern unsigned ExtraRadarFlags;
|
|
|
|
//
|
|
// control info
|
|
//
|
|
extern boolean mouseenabled,joystickenabled,joypadenabled,joystickprogressive;
|
|
extern int joystickport;
|
|
extern int dirscan[4];
|
|
extern int buttonscan[NUMBUTTONS];
|
|
extern int buttonmouse[4];
|
|
extern int buttonjoy[4];
|
|
|
|
extern boolean buttonheld[NUMBUTTONS];
|
|
|
|
extern int viewsize;
|
|
|
|
//
|
|
// curent user input
|
|
//
|
|
extern int controlx,controly; // range from -100 to 100
|
|
extern boolean buttonstate[NUMBUTTONS];
|
|
|
|
extern boolean demorecord,demoplayback;
|
|
extern char far *demoptr, far *lastdemoptr;
|
|
extern memptr demobuffer;
|
|
|
|
extern char far Computing[];
|
|
|
|
|
|
void CenterWindow(word w,word h);
|
|
void InitActorList (void);
|
|
void GetNewActor (void);
|
|
void RemoveObj (objtype *gone);
|
|
void PollControls (void);
|
|
void StopMusic(void);
|
|
void StartMusic(boolean startit);
|
|
void PlayLoop (void);
|
|
|
|
void ChangeSwapFiles(boolean display);
|
|
void OpenPageFile(void);
|
|
void CheckMusicToggle(void);
|
|
|
|
/*
|
|
=============================================================================
|
|
|
|
3D_DEBUG
|
|
|
|
=============================================================================
|
|
*/
|
|
|
|
int DebugKeys (void);
|
|
void CalcMemFree(void);
|
|
|
|
|
|
/*
|
|
=============================================================================
|
|
|
|
3D_DRAW DEFINITIONS
|
|
|
|
=============================================================================
|
|
*/
|
|
|
|
extern byte far TravelTable[MAPSIZE][MAPSIZE];
|
|
|
|
extern int weaponchangetics,itemchangetics,bodychangetics;
|
|
extern int plaqueon,plaquetime,plaquetimefrac,getpic;
|
|
|
|
extern statobj_t *firststarobj;
|
|
|
|
extern unsigned screenloc[3];
|
|
extern unsigned freelatch;
|
|
|
|
extern long space_xmove,space_ymove;
|
|
|
|
extern long lasttimecount;
|
|
extern long framecount;
|
|
extern long frameon;
|
|
extern boolean fizzlein;
|
|
|
|
extern unsigned wallheight[MAXVIEWWIDTH];
|
|
|
|
extern fixed focallength;
|
|
extern fixed mindist;
|
|
|
|
//
|
|
// math tables
|
|
//
|
|
extern int pixelangle[MAXVIEWWIDTH];
|
|
extern long far finetangent[FINEANGLES/4];
|
|
extern fixed far sintable[],far *costable;
|
|
|
|
//
|
|
// derived constants
|
|
//
|
|
extern fixed scale;
|
|
extern long heightnumerator,mindist;
|
|
|
|
//
|
|
// refresh variables
|
|
//
|
|
extern fixed viewx,viewy; // the focal point
|
|
extern int viewangle;
|
|
extern fixed viewsin,viewcos;
|
|
|
|
extern long postsource;
|
|
extern unsigned postx;
|
|
extern unsigned postwidth;
|
|
|
|
|
|
extern int horizwall[],vertwall[];
|
|
|
|
extern unsigned pwallpos;
|
|
|
|
extern boolean cloaked_shape;
|
|
|
|
fixed FixedByFrac (fixed a, fixed b);
|
|
void TransformActor (objtype *ob);
|
|
void BuildTables (void);
|
|
void ClearScreen (void);
|
|
int CalcRotate (objtype *ob);
|
|
void DrawScaleds (void);
|
|
void CalcTics (void);
|
|
void FixOfs (void);
|
|
void ThreeDRefresh (void);
|
|
void FarScalePost (void);
|
|
void DrawStars(void);
|
|
|
|
|
|
|
|
boolean TransformTile (int tx, int ty, int *dispx, int *dispheight);
|
|
void WrapTransformActor (objtype *ob);
|
|
void ComputeActorPosition(objtype *ob, char adjust_x, char adjust_y);
|
|
void WrapDrawScaleds (void);
|
|
boolean WrapActorPosition(objtype *obj);
|
|
void WrapStaticPosition(statobj_t *statptr, visobj_t *visptr);
|
|
void ShowOverhead(short bx, short by, short radius, short zoom, unsigned flags);
|
|
void UpdateTravelTable(void);
|
|
|
|
|
|
|
|
/*
|
|
=============================================================================
|
|
|
|
3D_DRAW2 DEFINITIONS
|
|
|
|
=============================================================================
|
|
*/
|
|
extern unsigned CeilingTile, FloorTile;
|
|
extern void (*MapRowPtr)();
|
|
|
|
void DrawPlanes (void);
|
|
|
|
|
|
void MapRow();
|
|
void C_MapRow();
|
|
void F_MapRow();
|
|
|
|
|
|
/*
|
|
=============================================================================
|
|
|
|
3D_STATE DEFINITIONS
|
|
|
|
=============================================================================
|
|
*/
|
|
|
|
extern unsigned far actor_points[];
|
|
extern dirtype opposite[9];
|
|
extern dirtype diagonal[9][9];
|
|
|
|
|
|
void SeekPlayerOrStatic(objtype *ob, int *deltax, int *deltay);
|
|
unsigned CheckRunChase(objtype *ob);
|
|
void GetCornerSeek(objtype *ob);
|
|
boolean LookForGoodies(objtype *ob, unsigned RunReason);
|
|
void InitHitRect (objtype *ob, unsigned radius);
|
|
void SpawnNewObj (unsigned tilex, unsigned tiley, statetype *state);
|
|
void NewState (objtype *ob, statetype *state);
|
|
|
|
boolean TryWalk (objtype *ob, boolean moveit);
|
|
void SelectChaseDir (objtype *ob);
|
|
void SelectDodgeDir (objtype *ob);
|
|
void MoveObj (objtype *ob, long move);
|
|
|
|
void KillActor (objtype *ob);
|
|
void DamageActor (objtype *ob, unsigned damage, objtype *attacker);
|
|
|
|
boolean CheckLine (objtype *from_obj, objtype *to_obj);
|
|
boolean CheckSight (objtype *from_obj, objtype *to_obj);
|
|
|
|
boolean PosVisable(fixed from_x, fixed from_y, fixed to_x, fixed to_y, int from_angle);
|
|
boolean PlayerIsBlocking(objtype *ob);
|
|
|
|
void MakeAlertNoise(objtype *obj);
|
|
objtype *CheckAndReserve(void);
|
|
|
|
|
|
/*
|
|
=============================================================================
|
|
|
|
3D_SCALE DEFINITIONS
|
|
|
|
=============================================================================
|
|
*/
|
|
|
|
|
|
#define COMPSCALECODESTART (65*4) // offset to start of code in comp scaler
|
|
|
|
typedef struct
|
|
{
|
|
unsigned codeofs[65];
|
|
unsigned width[65];
|
|
byte code[];
|
|
} t_compscale;
|
|
|
|
typedef struct
|
|
{
|
|
unsigned leftpix,rightpix;
|
|
unsigned dataofs[64];
|
|
// table data after dataofs[rightpix-leftpix+1]
|
|
} t_compshape;
|
|
|
|
|
|
extern t_compscale _seg *scaledirectory[MAXSCALEHEIGHT+1];
|
|
extern long fullscalefarcall[MAXSCALEHEIGHT+1];
|
|
|
|
extern byte bitmasks1[8][8];
|
|
extern byte bitmasks2[8][8];
|
|
extern unsigned wordmasks[8][8];
|
|
|
|
extern byte mapmasks1[4][8];
|
|
extern byte mapmasks2[4][8];
|
|
extern byte mapmasks3[4][8];
|
|
|
|
extern int maxscale,maxscaleshl2;
|
|
extern boolean scaledir_avail;
|
|
|
|
extern int normalshade;
|
|
extern int normalshade_div;
|
|
extern int shade_max;
|
|
|
|
|
|
void FreeScaleDirectory(void);
|
|
void SetupScaling (int maxscaleheight);
|
|
void ScaleShape (int xcenter, int shapenum, unsigned height);
|
|
void SimpleScaleShape (int xcenter, int shapenum, unsigned height);
|
|
void MegaSimpleScaleShape (int xcenter, int ycenter, int shapenum, unsigned height, unsigned shade);
|
|
|
|
/*
|
|
=============================================================================
|
|
|
|
3D_AGENT DEFINITIONS
|
|
|
|
=============================================================================
|
|
*/
|
|
|
|
extern scientist_t InfHintList;
|
|
extern scientist_t NiceSciList;
|
|
extern scientist_t MeanSciList;
|
|
|
|
extern unsigned far static_points[];
|
|
extern boolean GAN_HiddenArea;
|
|
extern memptr InfAreaMsgs[];
|
|
extern byte NumAreaMsgs,LastInfArea;
|
|
extern short FirstGenInfMsg,TotalGenInfMsgs;
|
|
extern classtype LastInfoAttacker;
|
|
extern int LastInfoAttacker_Cloaked;
|
|
|
|
extern char term_com_name[];
|
|
extern char term_msg_name[];
|
|
|
|
extern atkinf_t far attackinfo[7][14];
|
|
|
|
//
|
|
// player state info
|
|
//
|
|
extern boolean commandmode;
|
|
extern long thrustspeed;
|
|
extern unsigned plux,pluy; // player coordinates scaled to unsigned
|
|
extern boolean PlayerInvisable;
|
|
extern char DrawInfoArea_COUNT;
|
|
extern char InitInfoArea_COUNT;
|
|
|
|
extern unsigned player_oldtilex;
|
|
extern unsigned player_oldtiley;
|
|
|
|
// Terminal variables
|
|
|
|
extern unsigned RadarSw;
|
|
|
|
// Location Bar message string...
|
|
|
|
extern char LocationText[MAX_LOCATION_DESC_LEN];
|
|
|
|
void JLatchDrawPic (unsigned x, unsigned y, unsigned picnum);
|
|
|
|
|
|
//
|
|
// search / move info
|
|
//
|
|
extern unsigned searchon; // held object number looking at
|
|
extern int searchtics; // when it reaches SEARCHTICS, get an obj
|
|
extern objtype *searchobj; // current object being searched
|
|
extern unsigned foundflag; // only show NOTHING if nothing was found
|
|
extern objtype *moveobj; // current object being draged
|
|
|
|
extern int anglefrac;
|
|
extern int facecount;
|
|
|
|
extern unsigned LastMsgPri;
|
|
extern short MsgTicsRemain;
|
|
|
|
void GivePoints(long score,boolean add_to_stats);
|
|
void SpawnPlayer (int tilex, int tiley, int dir);
|
|
void DrawCash(void);
|
|
void UpdateHealth(void);
|
|
|
|
void DrawAmmoGuage(void);
|
|
void DrawAmmoMsg(void);
|
|
void DrawAmmo(boolean ForceRefresh);
|
|
boolean DisplayInfoMsg(char far *Msg,msg_priorities Priority,short DisplayTime,short MessageType);
|
|
void UpdateInfoAreaClock(void);
|
|
void UpdateInfoArea(void);
|
|
void DrawHealthMonitor(void);
|
|
void CalcHealthDisplay(void);
|
|
void UpdateScore(void);
|
|
|
|
byte ValidAreaTile(unsigned far *ptr);
|
|
char GetAreaNumber(char tilex, char tiley);
|
|
short InputFloor(void);
|
|
|
|
void RestoreInfoArea(void);
|
|
void DrawHeartPic(void);
|
|
void DrawInfoArea(void);
|
|
short DrawShape(short x, short y, short shapenum, pisType shapetype);
|
|
|
|
void AnimatePage(void);
|
|
|
|
void ActivateTerminal(boolean);
|
|
void TerminalPrint(char far *msg,boolean FastPrint);
|
|
void FloorCheat(unsigned RadarFlags);
|
|
boolean Interrogate(objtype *ob);
|
|
|
|
void GiveKey(int key);
|
|
void TakeKey(int key);
|
|
void GiveToken (int tokens);
|
|
|
|
void TakePlasmaDetonator (int count);
|
|
void GivePlasmaDetonator (int count);
|
|
|
|
void CacheDrawPic(short x, short y, short pic);
|
|
void LoadTerminalCommands(void);
|
|
|
|
void ActivateWallSwitch(unsigned iconnum, short x, short y);
|
|
unsigned UpdateBarrierTable(unsigned char x, unsigned char y, boolean OnOff);
|
|
unsigned ScanBarrierTable(unsigned char x, unsigned char y);
|
|
void DisplaySwitchOperateMsg(unsigned coords);
|
|
|
|
void DisplayNoMoMsgs(void);
|
|
void PrintStatPercent(short nx, short ny, char percentage);
|
|
short ShowStats(short bx, short by, ss_type type, statsInfoType far *stats);
|
|
boolean PerfectStats(void);
|
|
boolean CheckPerfectStats(void);
|
|
boolean OperateSmartSwitch(unsigned tilex, unsigned tiley, char Operation, boolean Force);
|
|
|
|
/*
|
|
=============================================================================
|
|
|
|
3D_ACT1 DEFINITIONS
|
|
|
|
=============================================================================
|
|
*/
|
|
extern char xy_offset[8][2];
|
|
extern stattype far statinfo[];
|
|
extern concession_t far ConHintList;
|
|
|
|
extern doorobj_t doorobjlist[MAXDOORS],*lastdoorobj;
|
|
extern int doornum;
|
|
|
|
extern unsigned doorposition[MAXDOORS],pwallstate;
|
|
|
|
extern byte far areaconnect[NUMAREAS][NUMAREAS];
|
|
|
|
extern boolean areabyplayer[NUMAREAS];
|
|
|
|
extern unsigned pwallstate;
|
|
extern unsigned pwallpos; // amount a pushable wall has been moved (0-63)
|
|
extern unsigned pwallx,pwally;
|
|
extern int pwalldir,pwalldist;
|
|
|
|
|
|
statobj_t *ReserveStatic(void);
|
|
void SpawnStatic (int tilex, int tiley, int type);
|
|
void SpawnDoor (int tilex, int tiley, boolean vertical, keytype lock, door_t type);
|
|
|
|
void OperateConcession(unsigned concession);
|
|
void SpawnConcession(int tilex, int tiley, unsigned credits,unsigned machinetype);
|
|
unsigned LoadConcessionHint(unsigned MsgNum);
|
|
void CacheInfoAreaMsg(unsigned block, unsigned MsgNum, char far *hint_buffer,unsigned MaxBufferLen);
|
|
void CheckSpawnEA(void);
|
|
|
|
int TransformAreas(char tilex, char tiley, char xform);
|
|
|
|
|
|
void CheckSpawnGoldstern(void);
|
|
void FindNewGoldieSpawnSite(void);
|
|
|
|
void InitMsgCache(mCacheList *mList, unsigned listSize, unsigned infoSize);
|
|
void FreeMsgCache(mCacheList *mList, unsigned listSize);
|
|
void CacheMsg(mCacheInfo *ci, unsigned SegNum, unsigned MsgNum);
|
|
short LoadMsg(char far *hint_buffer, unsigned SegNum, unsigned MsgNum, unsigned MaxMsgLen);
|
|
void CacheConcessionMsg(void);
|
|
boolean ReuseMsg(mCacheInfo *ci, short count, short struct_size);
|
|
|
|
void DropPlasmaDetonator(void);
|
|
void BlockDoorOpen(int door);
|
|
void BlastNearDoors(int tilex, int tiley);
|
|
void TryBlastDoor(char door);
|
|
|
|
statobj_t *FindStatic(unsigned tilex, unsigned tiley);
|
|
statobj_t *UseReservedStatic(int itemtype, int tilex, int tiley);
|
|
void PlaceReservedItemNearTile(int itemtype, int tilex, int tiley);
|
|
void ExplodeStatics(int tilex, int tiley);
|
|
|
|
|
|
/*
|
|
=============================================================================
|
|
|
|
3D_ACT2 DEFINITIONS
|
|
|
|
=============================================================================
|
|
*/
|
|
|
|
#define s_nakedbody s_static10
|
|
|
|
|
|
#define BARRIER_STATE(obj) ((obj)->ammo)
|
|
|
|
#define InitSmartAnim(obj, ShapeNum, StartOfs, MaxOfs, AnimType, AnimDir) \
|
|
InitSmartSpeedAnim(obj, ShapeNum, StartOfs, MaxOfs, AnimType, AnimDir, 7)
|
|
|
|
|
|
|
|
void MakeFakeStatic(objtype *ob);
|
|
void UnmakeFakeStatic(objtype *ob);
|
|
|
|
extern char detonators_spawned;
|
|
extern int far starthitpoints[][NUMHITENEMIES];
|
|
extern unsigned far MorphClass[];
|
|
|
|
extern statetype s_ofs_bounce;
|
|
|
|
extern statetype s_ofs_esphere_death1;
|
|
extern statetype s_ofs_ouch;
|
|
|
|
extern statetype s_ofs_static;
|
|
|
|
extern statetype s_rent_die1;
|
|
extern statetype s_ofcdie1;
|
|
extern statetype s_swatdie1;
|
|
extern statetype s_prodie1;
|
|
extern statetype s_proshoot1;
|
|
|
|
|
|
extern statetype s_rent_chase1;
|
|
extern statetype s_ofcchase1;
|
|
extern statetype s_prochase1;
|
|
extern statetype s_swatchase1;
|
|
|
|
|
|
extern statetype s_rent_pain;
|
|
extern statetype s_ofcpain;
|
|
extern statetype s_propain;
|
|
extern statetype s_swatpain;
|
|
|
|
extern statetype s_hold;
|
|
|
|
|
|
extern statetype s_swatwounded1;
|
|
|
|
extern statetype s_deathcam;
|
|
|
|
|
|
extern statetype s_terrot_wait;
|
|
extern statetype s_terrot_seek1;
|
|
|
|
|
|
extern statetype s_ofs_stand;
|
|
extern statetype s_ofs_chase1;
|
|
extern statetype s_ofs_pain;
|
|
extern statetype s_ofs_die1;
|
|
extern statetype s_ofs_pod_death1;
|
|
extern statetype s_ofs_pod_ouch;
|
|
extern statetype s_ofs_attack1;
|
|
|
|
extern statetype s_electro_appear1;
|
|
extern statetype s_electro_chase1;
|
|
extern statetype s_electro_ouch;
|
|
extern statetype s_electro_shoot1;
|
|
extern statetype s_electro_die1;
|
|
|
|
|
|
extern statetype s_liquid_wait;
|
|
extern statetype s_liquid_move;
|
|
extern statetype s_liquid_rise1;
|
|
extern statetype s_liquid_shoot1;
|
|
extern statetype s_liquid_ouch;
|
|
extern statetype s_liquid_shot;
|
|
extern statetype s_liquid_die1;
|
|
extern statetype s_liquid_shot_exp1;
|
|
|
|
|
|
|
|
extern statetype s_goldstand;
|
|
extern statetype s_goldpath1;
|
|
extern statetype s_goldpain;
|
|
extern statetype s_goldshoot1;
|
|
extern statetype s_goldchase1;
|
|
extern statetype s_goldwarp_it; // Warp In w/button pressing
|
|
extern statetype s_goldwarp_out1;
|
|
extern statetype s_goldwarp_in1;
|
|
|
|
extern statetype s_goldmorph1;
|
|
extern statetype s_goldmorph2;
|
|
extern statetype s_goldmorph3;
|
|
extern statetype s_goldmorph4;
|
|
extern statetype s_goldmorph5;
|
|
extern statetype s_goldmorph6;
|
|
extern statetype s_goldmorph7;
|
|
extern statetype s_goldmorph8;
|
|
|
|
extern statetype s_mgold_chase1;
|
|
extern statetype s_mgold_chase2;
|
|
extern statetype s_mgold_chase3;
|
|
extern statetype s_mgold_chase4;
|
|
|
|
extern statetype s_mgold_shoot1;
|
|
extern statetype s_mgold_shoot2;
|
|
extern statetype s_mgold_shoot3;
|
|
extern statetype s_mgold_shoot4;
|
|
|
|
extern statetype s_mgold_pain;
|
|
|
|
extern statetype s_security_light;
|
|
|
|
|
|
extern statetype s_scout_path1;
|
|
extern statetype s_scout_path2;
|
|
extern statetype s_scout_path3;
|
|
extern statetype s_scout_path4;
|
|
extern statetype s_scout_pain;
|
|
extern statetype s_scout_run;
|
|
extern statetype s_scout_run2;
|
|
extern statetype s_scout_run3;
|
|
extern statetype s_scout_run4;
|
|
extern statetype s_scout_die1;
|
|
extern statetype s_scout_stand;
|
|
extern statetype s_scout_dead;
|
|
|
|
extern statetype s_explosion1;
|
|
|
|
extern statetype s_steamgrate;
|
|
extern statetype s_vital;
|
|
|
|
extern statetype s_vital_ouch;
|
|
extern statetype s_vital_die;
|
|
extern statetype s_vital_die1;
|
|
extern statetype s_vital_die2;
|
|
extern statetype s_vital_die3;
|
|
extern statetype s_vital_die4;
|
|
extern statetype s_vital_die5;
|
|
extern statetype s_vital_die6;
|
|
extern statetype s_vital_die7;
|
|
extern statetype s_vital_die8;
|
|
|
|
extern statetype s_ooze_chase;
|
|
extern statetype s_vpost_barrier;
|
|
extern statetype s_spike_barrier;
|
|
|
|
void T_PainThink(objtype *obj);
|
|
void T_ExplodeScout(objtype *obj);
|
|
|
|
|
|
|
|
void T_Security(objtype *obj);
|
|
|
|
void T_ChangeShape(objtype *obj);
|
|
void T_MakeOffset(objtype *obj);
|
|
void T_LiquidStand(objtype *obj);
|
|
|
|
void PlaceTowardPlayer(objtype *obj);
|
|
|
|
void T_Seek(objtype *ob);
|
|
|
|
void SpawnProjectile(objtype *shooter, classtype class);
|
|
void SpawnStand (enemy_t which, int tilex, int tiley, int dir);
|
|
void SpawnPatrol (enemy_t which, int tilex, int tiley, int dir);
|
|
void KillActor (objtype *ob);
|
|
|
|
void US_ControlPanel(byte);
|
|
|
|
int IntSqrt(long va);
|
|
unsigned CalcDistance(unsigned x1, unsigned y1, unsigned x2, unsigned y2);
|
|
|
|
|
|
void T_Hit(objtype *ob);
|
|
void SpawnOffsetObj (enemy_t which, int tilex, int tiley);
|
|
|
|
|
|
void InitSmartAnimStruct(objtype *obj, unsigned ShapeNum, unsigned char StartOfs, unsigned char MaxOfs, animtype_t AnimType, animdir_t AnimDir);
|
|
boolean AnimateOfsObj(objtype *obj);
|
|
void AdvanceAnimREV(objtype *obj);
|
|
void AdvanceAnimFWD(objtype *obj);
|
|
|
|
void SpawnCusExplosion(fixed x, fixed y, unsigned StartFrame, unsigned NumFrames, unsigned Delay, unsigned Class);
|
|
void T_SpawnExplosion(objtype *obj);
|
|
void T_ExplodeDamage(objtype *obj);
|
|
|
|
void ExplodeRadius(objtype *obj, short damage,boolean damageplayer);
|
|
|
|
extern statetype s_barrier_transition;
|
|
extern statetype s_barrier_shutdown;
|
|
|
|
void SpawnBarrier (enemy_t which, int tilex, int tiley,boolean OnOff);
|
|
void ToggleBarrier(objtype *obj);
|
|
|
|
void InitAnim(objtype *obj, unsigned ShapeNum, unsigned char StartOfs, unsigned char MaxOfs, animtype_t AnimType, animdir_t AnimDir, unsigned Delay, unsigned WaitDelay);
|
|
|
|
objtype *FindObj(classtype which, short tilex, short tiley);
|
|
objtype *FindHiddenOfs(classtype which);
|
|
void SpawnHiddenOfs(enemy_t which, int tilex, int tiley);
|
|
objtype *MoveHiddenOfs(classtype which_class, classtype new, fixed x, fixed y);
|
|
|
|
void CheckForSpecialTile(objtype *obj, unsigned tilex, unsigned tiley);
|
|
void DropCargo(objtype *obj);
|
|
|
|
|
|
/*
|
|
=============================================================================
|
|
|
|
3D_TEXT DEFINITIONS
|
|
|
|
=============================================================================
|
|
*/
|
|
|
|
extern char helpfilename[],endfilename[];
|
|
|
|
extern void HelpScreens(void);
|
|
extern void EndText(void);
|
|
|
|
|
|
/*
|
|
=============================================================================
|
|
|
|
3D_MSGS TEXT DEFINITIONS
|
|
|
|
=============================================================================
|
|
*/
|
|
|
|
|
|
extern char far noeat_msg1[];
|
|
extern char far bevs_msg1[];
|
|
extern char far food_msg1[];
|
|
|
|
extern char far bonus_msg7[];
|
|
extern char far bonus_msg26[];
|
|
|
|
extern char far * far BonusMsg[];
|
|
extern char far * far ActorInfoMsg[];
|
|
extern char far ekg_heartbeat_enabled[];
|
|
extern char far ekg_heartbeat_disabled[];
|
|
extern char far attacker_info_enabled[];
|
|
extern char far attacker_info_disabled[];
|
|
extern char far WeaponNotAvailMsg[];
|
|
extern char far WeaponAvailMsg[];
|
|
extern char far RadarAvailMsg[];
|
|
extern char far RadarEnergyGoneMsg[];
|
|
extern char far WeaponAutoSelectMsg[];
|
|
extern char far EnergyPackDepleted[];
|
|
extern char far NotEnoughEnergyForWeapon[];
|
|
|
|
extern char far WeaponMalfunction[];
|
|
|
|
extern char far SwitchNotActivateMsg[];
|
|
extern char far NoFoodTokens[];
|
|
extern char far ExtraMan[];
|
|
extern char far OneMillion[];
|
|
extern char far TenMillion[];
|
|
|
|
extern char far NoAdLibCard[];
|
|
extern char far MusicOn[];
|
|
extern char far MusicOff[];
|
|
extern char far SoundOn[];
|
|
extern char far SoundOff[];
|
|
|
|
extern char far pd_dropped[];
|
|
extern char far pd_nomore[];
|
|
extern char far pd_switching[];
|
|
extern char far pd_notnear[];
|
|
extern char far pd_getcloser[];
|
|
extern char far pd_floorunlocked[];
|
|
extern char far pd_donthaveany[];
|
|
extern char far pd_no_computer[];
|
|
extern char far pd_floornotlocked[];
|
|
|
|
|
|
|
|
/*
|
|
=============================================================================
|
|
|
|
3D_INTER DEFINITIONS
|
|
|
|
=============================================================================
|
|
*/
|
|
|
|
extern char BreifingText[];
|
|
|
|
void UpdateScreenPic(void);
|
|
void DisplayPrepingMsg(char far *text);
|
|
boolean Breifing(breifing_type BreifingType,unsigned episode);
|
|
void ShPrint(char far *text, char shadow_color, boolean single_char);
|
|
unsigned Random(unsigned Max);
|
|
|
|
|
|
//===========================================================================
|
|
//
|
|
// 3D_MENU DEFINATIONS - WHICH NEED TO BE GLOBAL
|
|
//
|
|
//===========================================================================
|
|
|
|
extern boolean EscPressed;
|
|
|
|
void DrawInstructions(inst_type Type);
|
|
void CacheMessage(unsigned MessageNum);
|
|
void TerminateStr(char far *pos);
|
|
unsigned long CacheCompData(unsigned ItemNum, memptr *dest_loc);
|
|
boolean CheckForSpecialCode(unsigned ItemNum);
|
|
|
|
|
|
//===========================================================================
|
|
//
|
|
// 3D_FREE DEFINATIONS - WHICH NEED TO BE GLOBAL
|
|
//
|
|
//===========================================================================
|
|
|
|
|
|
extern char far JM_FREE_DATA_END[];
|
|
extern char far JM_FREE_DATA_START[];
|
|
|