wolf3d

The original open source release of Wolfenstein 3D
Log | Files | Refs

WL_DEF.H (27948B)


      1 //#define BETA
      2 #define YEAR	1992
      3 #define MONTH	9
      4 #define DAY		30
      5 
      6 #include "ID_HEADS.H"
      7 #include <MATH.H>
      8 #include <VALUES.H>
      9 
     10 #include "WL_MENU.H"
     11 
     12 #ifdef SPANISH
     13 #include "SPANISH.H"
     14 #else
     15 #include "FOREIGN.H"
     16 #endif
     17 
     18 #ifdef SPEAR
     19 #include "F_SPEAR.H"
     20 #endif
     21 
     22 /*
     23 =============================================================================
     24 
     25 							MACROS
     26 
     27 =============================================================================
     28 */
     29 
     30 
     31 #define COLORBORDER(color)		asm{mov	dx,STATUS_REGISTER_1;in al,dx;\
     32 	mov dx,ATR_INDEX;mov al,ATR_OVERSCAN;out dx,al;mov al,color;out	dx,al;\
     33 	mov	al,32;out dx,al};
     34 
     35 #define MAPSPOT(x,y,plane)		(*(mapsegs[plane]+farmapylookup[y]+x))
     36 
     37 #define SIGN(x) 	((x)>0?1:-1)
     38 #define ABS(x) 		((int)(x)>0?(x):-(x))
     39 #define LABS(x) 	((long)(x)>0?(x):-(x))
     40 
     41 /*
     42 =============================================================================
     43 
     44 						 GLOBAL CONSTANTS
     45 
     46 =============================================================================
     47 */
     48 
     49 #define MAXACTORS		150				// max number of nazis, etc / map
     50 #define MAXSTATS		400				// max number of lamps, bonus, etc
     51 #define MAXDOORS		64				// max number of sliding doors
     52 #define MAXWALLTILES	64				// max number of wall tiles
     53 
     54 //
     55 // tile constants
     56 //
     57 
     58 #define	ICONARROWS		90
     59 #define PUSHABLETILE	98
     60 #define EXITTILE		99				// at end of castle
     61 #define AREATILE		107				// first of NUMAREAS floor tiles
     62 #define NUMAREAS		37
     63 #define ELEVATORTILE	21
     64 #define AMBUSHTILE		106
     65 #define	ALTELEVATORTILE	107
     66 
     67 #define NUMBERCHARS	9
     68 
     69 
     70 //----------------
     71 
     72 #define EXTRAPOINTS		40000
     73 
     74 #define PLAYERSPEED		3000
     75 #define RUNSPEED   		6000
     76 
     77 #define	SCREENSEG		0xa000
     78 
     79 #define SCREENBWIDE		80
     80 
     81 #define HEIGHTRATIO		0.50		// also defined in id_mm.c
     82 
     83 #define BORDERCOLOR	3
     84 #define FLASHCOLOR	5
     85 #define FLASHTICS	4
     86 
     87 
     88 #define PLAYERSIZE		MINDIST			// player radius
     89 #define MINACTORDIST	0x10000l		// minimum dist from player center
     90 										// to any actor center
     91 
     92 #define NUMLATCHPICS	100
     93 
     94 
     95 #define PI	3.141592657
     96 
     97 #define GLOBAL1		(1l<<16)
     98 #define TILEGLOBAL  GLOBAL1
     99 #define PIXGLOBAL	(GLOBAL1/64)
    100 #define TILESHIFT		16l
    101 #define UNSIGNEDSHIFT	8
    102 
    103 #define ANGLES		360					// must be divisable by 4
    104 #define ANGLEQUAD	(ANGLES/4)
    105 #define FINEANGLES	3600
    106 #define ANG90		(FINEANGLES/4)
    107 #define ANG180		(ANG90*2)
    108 #define ANG270		(ANG90*3)
    109 #define ANG360		(ANG90*4)
    110 #define VANG90		(ANGLES/4)
    111 #define VANG180		(VANG90*2)
    112 #define VANG270		(VANG90*3)
    113 #define VANG360		(VANG90*4)
    114 
    115 #define MINDIST		(0x5800l)
    116 
    117 
    118 #define	MAXSCALEHEIGHT	256				// largest scale on largest view
    119 
    120 #define MAXVIEWWIDTH		320
    121 
    122 #define MAPSIZE		64					// maps are 64*64 max
    123 #define NORTH	0
    124 #define EAST	1
    125 #define SOUTH	2
    126 #define WEST	3
    127 
    128 
    129 #define STATUSLINES		40
    130 
    131 #define SCREENSIZE		(SCREENBWIDE*208)
    132 #define PAGE1START		0
    133 #define PAGE2START		(SCREENSIZE)
    134 #define PAGE3START		(SCREENSIZE*2u)
    135 #define	FREESTART		(SCREENSIZE*3u)
    136 
    137 
    138 #define PIXRADIUS		512
    139 
    140 #define STARTAMMO		8
    141 
    142 
    143 // object flag values
    144 
    145 #define FL_SHOOTABLE	1
    146 #define FL_BONUS		2
    147 #define FL_NEVERMARK	4
    148 #define FL_VISABLE		8
    149 #define FL_ATTACKMODE	16
    150 #define FL_FIRSTATTACK	32
    151 #define FL_AMBUSH		64
    152 #define FL_NONMARK		128
    153 
    154 
    155 //
    156 // sprite constants
    157 //
    158 
    159 enum	{
    160 		SPR_DEMO,
    161 		SPR_DEATHCAM,
    162 //
    163 // static sprites
    164 //
    165 		SPR_STAT_0,SPR_STAT_1,SPR_STAT_2,SPR_STAT_3,
    166 		SPR_STAT_4,SPR_STAT_5,SPR_STAT_6,SPR_STAT_7,
    167 
    168 		SPR_STAT_8,SPR_STAT_9,SPR_STAT_10,SPR_STAT_11,
    169 		SPR_STAT_12,SPR_STAT_13,SPR_STAT_14,SPR_STAT_15,
    170 
    171 		SPR_STAT_16,SPR_STAT_17,SPR_STAT_18,SPR_STAT_19,
    172 		SPR_STAT_20,SPR_STAT_21,SPR_STAT_22,SPR_STAT_23,
    173 
    174 		SPR_STAT_24,SPR_STAT_25,SPR_STAT_26,SPR_STAT_27,
    175 		SPR_STAT_28,SPR_STAT_29,SPR_STAT_30,SPR_STAT_31,
    176 
    177 		SPR_STAT_32,SPR_STAT_33,SPR_STAT_34,SPR_STAT_35,
    178 		SPR_STAT_36,SPR_STAT_37,SPR_STAT_38,SPR_STAT_39,
    179 
    180 		SPR_STAT_40,SPR_STAT_41,SPR_STAT_42,SPR_STAT_43,
    181 		SPR_STAT_44,SPR_STAT_45,SPR_STAT_46,SPR_STAT_47,
    182 
    183 #ifdef SPEAR
    184 		SPR_STAT_48,SPR_STAT_49,SPR_STAT_50,SPR_STAT_51,
    185 #endif
    186 
    187 //
    188 // guard
    189 //
    190 		SPR_GRD_S_1,SPR_GRD_S_2,SPR_GRD_S_3,SPR_GRD_S_4,
    191 		SPR_GRD_S_5,SPR_GRD_S_6,SPR_GRD_S_7,SPR_GRD_S_8,
    192 
    193 		SPR_GRD_W1_1,SPR_GRD_W1_2,SPR_GRD_W1_3,SPR_GRD_W1_4,
    194 		SPR_GRD_W1_5,SPR_GRD_W1_6,SPR_GRD_W1_7,SPR_GRD_W1_8,
    195 
    196 		SPR_GRD_W2_1,SPR_GRD_W2_2,SPR_GRD_W2_3,SPR_GRD_W2_4,
    197 		SPR_GRD_W2_5,SPR_GRD_W2_6,SPR_GRD_W2_7,SPR_GRD_W2_8,
    198 
    199 		SPR_GRD_W3_1,SPR_GRD_W3_2,SPR_GRD_W3_3,SPR_GRD_W3_4,
    200 		SPR_GRD_W3_5,SPR_GRD_W3_6,SPR_GRD_W3_7,SPR_GRD_W3_8,
    201 
    202 		SPR_GRD_W4_1,SPR_GRD_W4_2,SPR_GRD_W4_3,SPR_GRD_W4_4,
    203 		SPR_GRD_W4_5,SPR_GRD_W4_6,SPR_GRD_W4_7,SPR_GRD_W4_8,
    204 
    205 		SPR_GRD_PAIN_1,SPR_GRD_DIE_1,SPR_GRD_DIE_2,SPR_GRD_DIE_3,
    206 		SPR_GRD_PAIN_2,SPR_GRD_DEAD,
    207 
    208 		SPR_GRD_SHOOT1,SPR_GRD_SHOOT2,SPR_GRD_SHOOT3,
    209 
    210 //
    211 // dogs
    212 //
    213 		SPR_DOG_W1_1,SPR_DOG_W1_2,SPR_DOG_W1_3,SPR_DOG_W1_4,
    214 		SPR_DOG_W1_5,SPR_DOG_W1_6,SPR_DOG_W1_7,SPR_DOG_W1_8,
    215 
    216 		SPR_DOG_W2_1,SPR_DOG_W2_2,SPR_DOG_W2_3,SPR_DOG_W2_4,
    217 		SPR_DOG_W2_5,SPR_DOG_W2_6,SPR_DOG_W2_7,SPR_DOG_W2_8,
    218 
    219 		SPR_DOG_W3_1,SPR_DOG_W3_2,SPR_DOG_W3_3,SPR_DOG_W3_4,
    220 		SPR_DOG_W3_5,SPR_DOG_W3_6,SPR_DOG_W3_7,SPR_DOG_W3_8,
    221 
    222 		SPR_DOG_W4_1,SPR_DOG_W4_2,SPR_DOG_W4_3,SPR_DOG_W4_4,
    223 		SPR_DOG_W4_5,SPR_DOG_W4_6,SPR_DOG_W4_7,SPR_DOG_W4_8,
    224 
    225 		SPR_DOG_DIE_1,SPR_DOG_DIE_2,SPR_DOG_DIE_3,SPR_DOG_DEAD,
    226 		SPR_DOG_JUMP1,SPR_DOG_JUMP2,SPR_DOG_JUMP3,
    227 
    228 
    229 
    230 //
    231 // ss
    232 //
    233 		SPR_SS_S_1,SPR_SS_S_2,SPR_SS_S_3,SPR_SS_S_4,
    234 		SPR_SS_S_5,SPR_SS_S_6,SPR_SS_S_7,SPR_SS_S_8,
    235 
    236 		SPR_SS_W1_1,SPR_SS_W1_2,SPR_SS_W1_3,SPR_SS_W1_4,
    237 		SPR_SS_W1_5,SPR_SS_W1_6,SPR_SS_W1_7,SPR_SS_W1_8,
    238 
    239 		SPR_SS_W2_1,SPR_SS_W2_2,SPR_SS_W2_3,SPR_SS_W2_4,
    240 		SPR_SS_W2_5,SPR_SS_W2_6,SPR_SS_W2_7,SPR_SS_W2_8,
    241 
    242 		SPR_SS_W3_1,SPR_SS_W3_2,SPR_SS_W3_3,SPR_SS_W3_4,
    243 		SPR_SS_W3_5,SPR_SS_W3_6,SPR_SS_W3_7,SPR_SS_W3_8,
    244 
    245 		SPR_SS_W4_1,SPR_SS_W4_2,SPR_SS_W4_3,SPR_SS_W4_4,
    246 		SPR_SS_W4_5,SPR_SS_W4_6,SPR_SS_W4_7,SPR_SS_W4_8,
    247 
    248 		SPR_SS_PAIN_1,SPR_SS_DIE_1,SPR_SS_DIE_2,SPR_SS_DIE_3,
    249 		SPR_SS_PAIN_2,SPR_SS_DEAD,
    250 
    251 		SPR_SS_SHOOT1,SPR_SS_SHOOT2,SPR_SS_SHOOT3,
    252 
    253 //
    254 // mutant
    255 //
    256 		SPR_MUT_S_1,SPR_MUT_S_2,SPR_MUT_S_3,SPR_MUT_S_4,
    257 		SPR_MUT_S_5,SPR_MUT_S_6,SPR_MUT_S_7,SPR_MUT_S_8,
    258 
    259 		SPR_MUT_W1_1,SPR_MUT_W1_2,SPR_MUT_W1_3,SPR_MUT_W1_4,
    260 		SPR_MUT_W1_5,SPR_MUT_W1_6,SPR_MUT_W1_7,SPR_MUT_W1_8,
    261 
    262 		SPR_MUT_W2_1,SPR_MUT_W2_2,SPR_MUT_W2_3,SPR_MUT_W2_4,
    263 		SPR_MUT_W2_5,SPR_MUT_W2_6,SPR_MUT_W2_7,SPR_MUT_W2_8,
    264 
    265 		SPR_MUT_W3_1,SPR_MUT_W3_2,SPR_MUT_W3_3,SPR_MUT_W3_4,
    266 		SPR_MUT_W3_5,SPR_MUT_W3_6,SPR_MUT_W3_7,SPR_MUT_W3_8,
    267 
    268 		SPR_MUT_W4_1,SPR_MUT_W4_2,SPR_MUT_W4_3,SPR_MUT_W4_4,
    269 		SPR_MUT_W4_5,SPR_MUT_W4_6,SPR_MUT_W4_7,SPR_MUT_W4_8,
    270 
    271 		SPR_MUT_PAIN_1,SPR_MUT_DIE_1,SPR_MUT_DIE_2,SPR_MUT_DIE_3,
    272 		SPR_MUT_PAIN_2,SPR_MUT_DIE_4,SPR_MUT_DEAD,
    273 
    274 		SPR_MUT_SHOOT1,SPR_MUT_SHOOT2,SPR_MUT_SHOOT3,SPR_MUT_SHOOT4,
    275 
    276 //
    277 // officer
    278 //
    279 		SPR_OFC_S_1,SPR_OFC_S_2,SPR_OFC_S_3,SPR_OFC_S_4,
    280 		SPR_OFC_S_5,SPR_OFC_S_6,SPR_OFC_S_7,SPR_OFC_S_8,
    281 
    282 		SPR_OFC_W1_1,SPR_OFC_W1_2,SPR_OFC_W1_3,SPR_OFC_W1_4,
    283 		SPR_OFC_W1_5,SPR_OFC_W1_6,SPR_OFC_W1_7,SPR_OFC_W1_8,
    284 
    285 		SPR_OFC_W2_1,SPR_OFC_W2_2,SPR_OFC_W2_3,SPR_OFC_W2_4,
    286 		SPR_OFC_W2_5,SPR_OFC_W2_6,SPR_OFC_W2_7,SPR_OFC_W2_8,
    287 
    288 		SPR_OFC_W3_1,SPR_OFC_W3_2,SPR_OFC_W3_3,SPR_OFC_W3_4,
    289 		SPR_OFC_W3_5,SPR_OFC_W3_6,SPR_OFC_W3_7,SPR_OFC_W3_8,
    290 
    291 		SPR_OFC_W4_1,SPR_OFC_W4_2,SPR_OFC_W4_3,SPR_OFC_W4_4,
    292 		SPR_OFC_W4_5,SPR_OFC_W4_6,SPR_OFC_W4_7,SPR_OFC_W4_8,
    293 
    294 		SPR_OFC_PAIN_1,SPR_OFC_DIE_1,SPR_OFC_DIE_2,SPR_OFC_DIE_3,
    295 		SPR_OFC_PAIN_2,SPR_OFC_DIE_4,SPR_OFC_DEAD,
    296 
    297 		SPR_OFC_SHOOT1,SPR_OFC_SHOOT2,SPR_OFC_SHOOT3,
    298 
    299 #ifndef SPEAR
    300 //
    301 // ghosts
    302 //
    303 		SPR_BLINKY_W1,SPR_BLINKY_W2,SPR_PINKY_W1,SPR_PINKY_W2,
    304 		SPR_CLYDE_W1,SPR_CLYDE_W2,SPR_INKY_W1,SPR_INKY_W2,
    305 
    306 //
    307 // hans
    308 //
    309 		SPR_BOSS_W1,SPR_BOSS_W2,SPR_BOSS_W3,SPR_BOSS_W4,
    310 		SPR_BOSS_SHOOT1,SPR_BOSS_SHOOT2,SPR_BOSS_SHOOT3,SPR_BOSS_DEAD,
    311 
    312 		SPR_BOSS_DIE1,SPR_BOSS_DIE2,SPR_BOSS_DIE3,
    313 
    314 //
    315 // schabbs
    316 //
    317 		SPR_SCHABB_W1,SPR_SCHABB_W2,SPR_SCHABB_W3,SPR_SCHABB_W4,
    318 		SPR_SCHABB_SHOOT1,SPR_SCHABB_SHOOT2,
    319 
    320 		SPR_SCHABB_DIE1,SPR_SCHABB_DIE2,SPR_SCHABB_DIE3,SPR_SCHABB_DEAD,
    321 		SPR_HYPO1,SPR_HYPO2,SPR_HYPO3,SPR_HYPO4,
    322 
    323 //
    324 // fake
    325 //
    326 		SPR_FAKE_W1,SPR_FAKE_W2,SPR_FAKE_W3,SPR_FAKE_W4,
    327 		SPR_FAKE_SHOOT,SPR_FIRE1,SPR_FIRE2,
    328 
    329 		SPR_FAKE_DIE1,SPR_FAKE_DIE2,SPR_FAKE_DIE3,SPR_FAKE_DIE4,
    330 		SPR_FAKE_DIE5,SPR_FAKE_DEAD,
    331 
    332 //
    333 // hitler
    334 //
    335 		SPR_MECHA_W1,SPR_MECHA_W2,SPR_MECHA_W3,SPR_MECHA_W4,
    336 		SPR_MECHA_SHOOT1,SPR_MECHA_SHOOT2,SPR_MECHA_SHOOT3,SPR_MECHA_DEAD,
    337 
    338 		SPR_MECHA_DIE1,SPR_MECHA_DIE2,SPR_MECHA_DIE3,
    339 
    340 		SPR_HITLER_W1,SPR_HITLER_W2,SPR_HITLER_W3,SPR_HITLER_W4,
    341 		SPR_HITLER_SHOOT1,SPR_HITLER_SHOOT2,SPR_HITLER_SHOOT3,SPR_HITLER_DEAD,
    342 
    343 		SPR_HITLER_DIE1,SPR_HITLER_DIE2,SPR_HITLER_DIE3,SPR_HITLER_DIE4,
    344 		SPR_HITLER_DIE5,SPR_HITLER_DIE6,SPR_HITLER_DIE7,
    345 
    346 //
    347 // giftmacher
    348 //
    349 		SPR_GIFT_W1,SPR_GIFT_W2,SPR_GIFT_W3,SPR_GIFT_W4,
    350 		SPR_GIFT_SHOOT1,SPR_GIFT_SHOOT2,
    351 
    352 		SPR_GIFT_DIE1,SPR_GIFT_DIE2,SPR_GIFT_DIE3,SPR_GIFT_DEAD,
    353 #endif
    354 //
    355 // Rocket, smoke and small explosion
    356 //
    357 		SPR_ROCKET_1,SPR_ROCKET_2,SPR_ROCKET_3,SPR_ROCKET_4,
    358 		SPR_ROCKET_5,SPR_ROCKET_6,SPR_ROCKET_7,SPR_ROCKET_8,
    359 
    360 		SPR_SMOKE_1,SPR_SMOKE_2,SPR_SMOKE_3,SPR_SMOKE_4,
    361 		SPR_BOOM_1,SPR_BOOM_2,SPR_BOOM_3,
    362 
    363 //
    364 // Angel of Death's DeathSparks(tm)
    365 //
    366 #ifdef SPEAR
    367 		SPR_HROCKET_1,SPR_HROCKET_2,SPR_HROCKET_3,SPR_HROCKET_4,
    368 		SPR_HROCKET_5,SPR_HROCKET_6,SPR_HROCKET_7,SPR_HROCKET_8,
    369 
    370 		SPR_HSMOKE_1,SPR_HSMOKE_2,SPR_HSMOKE_3,SPR_HSMOKE_4,
    371 		SPR_HBOOM_1,SPR_HBOOM_2,SPR_HBOOM_3,
    372 
    373 		SPR_SPARK1,SPR_SPARK2,SPR_SPARK3,SPR_SPARK4,
    374 #endif
    375 
    376 #ifndef SPEAR
    377 //
    378 // gretel
    379 //
    380 		SPR_GRETEL_W1,SPR_GRETEL_W2,SPR_GRETEL_W3,SPR_GRETEL_W4,
    381 		SPR_GRETEL_SHOOT1,SPR_GRETEL_SHOOT2,SPR_GRETEL_SHOOT3,SPR_GRETEL_DEAD,
    382 
    383 		SPR_GRETEL_DIE1,SPR_GRETEL_DIE2,SPR_GRETEL_DIE3,
    384 
    385 //
    386 // fat face
    387 //
    388 		SPR_FAT_W1,SPR_FAT_W2,SPR_FAT_W3,SPR_FAT_W4,
    389 		SPR_FAT_SHOOT1,SPR_FAT_SHOOT2,SPR_FAT_SHOOT3,SPR_FAT_SHOOT4,
    390 
    391 		SPR_FAT_DIE1,SPR_FAT_DIE2,SPR_FAT_DIE3,SPR_FAT_DEAD,
    392 
    393 //
    394 // bj
    395 //
    396 		SPR_BJ_W1,SPR_BJ_W2,SPR_BJ_W3,SPR_BJ_W4,
    397 		SPR_BJ_JUMP1,SPR_BJ_JUMP2,SPR_BJ_JUMP3,SPR_BJ_JUMP4,
    398 #else
    399 //
    400 // THESE ARE FOR 'SPEAR OF DESTINY'
    401 //
    402 
    403 //
    404 // Trans Grosse
    405 //
    406 		SPR_TRANS_W1,SPR_TRANS_W2,SPR_TRANS_W3,SPR_TRANS_W4,
    407 		SPR_TRANS_SHOOT1,SPR_TRANS_SHOOT2,SPR_TRANS_SHOOT3,SPR_TRANS_DEAD,
    408 
    409 		SPR_TRANS_DIE1,SPR_TRANS_DIE2,SPR_TRANS_DIE3,
    410 
    411 //
    412 // Wilhelm
    413 //
    414 		SPR_WILL_W1,SPR_WILL_W2,SPR_WILL_W3,SPR_WILL_W4,
    415 		SPR_WILL_SHOOT1,SPR_WILL_SHOOT2,SPR_WILL_SHOOT3,SPR_WILL_SHOOT4,
    416 
    417 		SPR_WILL_DIE1,SPR_WILL_DIE2,SPR_WILL_DIE3,SPR_WILL_DEAD,
    418 
    419 //
    420 // UberMutant
    421 //
    422 		SPR_UBER_W1,SPR_UBER_W2,SPR_UBER_W3,SPR_UBER_W4,
    423 		SPR_UBER_SHOOT1,SPR_UBER_SHOOT2,SPR_UBER_SHOOT3,SPR_UBER_SHOOT4,
    424 
    425 		SPR_UBER_DIE1,SPR_UBER_DIE2,SPR_UBER_DIE3,SPR_UBER_DIE4,
    426 		SPR_UBER_DEAD,
    427 
    428 //
    429 // Death Knight
    430 //
    431 		SPR_DEATH_W1,SPR_DEATH_W2,SPR_DEATH_W3,SPR_DEATH_W4,
    432 		SPR_DEATH_SHOOT1,SPR_DEATH_SHOOT2,SPR_DEATH_SHOOT3,SPR_DEATH_SHOOT4,
    433 
    434 		SPR_DEATH_DIE1,SPR_DEATH_DIE2,SPR_DEATH_DIE3,SPR_DEATH_DIE4,
    435 		SPR_DEATH_DIE5,SPR_DEATH_DIE6,SPR_DEATH_DEAD,
    436 
    437 //
    438 // Ghost
    439 //
    440 		SPR_SPECTRE_W1,SPR_SPECTRE_W2,SPR_SPECTRE_W3,SPR_SPECTRE_W4,
    441 		SPR_SPECTRE_F1,SPR_SPECTRE_F2,SPR_SPECTRE_F3,SPR_SPECTRE_F4,
    442 
    443 //
    444 // Angel of Death
    445 //
    446 		SPR_ANGEL_W1,SPR_ANGEL_W2,SPR_ANGEL_W3,SPR_ANGEL_W4,
    447 		SPR_ANGEL_SHOOT1,SPR_ANGEL_SHOOT2,SPR_ANGEL_TIRED1,SPR_ANGEL_TIRED2,
    448 
    449 		SPR_ANGEL_DIE1,SPR_ANGEL_DIE2,SPR_ANGEL_DIE3,SPR_ANGEL_DIE4,
    450 		SPR_ANGEL_DIE5,SPR_ANGEL_DIE6,SPR_ANGEL_DIE7,SPR_ANGEL_DEAD,
    451 
    452 #endif
    453 
    454 //
    455 // player attack frames
    456 //
    457 		SPR_KNIFEREADY,SPR_KNIFEATK1,SPR_KNIFEATK2,SPR_KNIFEATK3,
    458 		SPR_KNIFEATK4,
    459 
    460 		SPR_PISTOLREADY,SPR_PISTOLATK1,SPR_PISTOLATK2,SPR_PISTOLATK3,
    461 		SPR_PISTOLATK4,
    462 
    463 		SPR_MACHINEGUNREADY,SPR_MACHINEGUNATK1,SPR_MACHINEGUNATK2,MACHINEGUNATK3,
    464 		SPR_MACHINEGUNATK4,
    465 
    466 		SPR_CHAINREADY,SPR_CHAINATK1,SPR_CHAINATK2,SPR_CHAINATK3,
    467 		SPR_CHAINATK4,
    468 
    469 		};
    470 
    471 
    472 /*
    473 =============================================================================
    474 
    475 						   GLOBAL TYPES
    476 
    477 =============================================================================
    478 */
    479 
    480 typedef long fixed;
    481 
    482 typedef enum {
    483 	di_north,
    484 	di_east,
    485 	di_south,
    486 	di_west
    487 } controldir_t;
    488 
    489 typedef enum {
    490 	dr_normal,
    491 	dr_lock1,
    492 	dr_lock2,
    493 	dr_lock3,
    494 	dr_lock4,
    495 	dr_elevator
    496 } door_t;
    497 
    498 typedef enum {
    499 	ac_badobject = -1,
    500 	ac_no,
    501 	ac_yes,
    502 	ac_allways
    503 } activetype;
    504 
    505 typedef enum {
    506 	nothing,
    507 	playerobj,
    508 	inertobj,
    509 	guardobj,
    510 	officerobj,
    511 	ssobj,
    512 	dogobj,
    513 	bossobj,
    514 	schabbobj,
    515 	fakeobj,
    516 	mechahitlerobj,
    517 	mutantobj,
    518 	needleobj,
    519 	fireobj,
    520 	bjobj,
    521 	ghostobj,
    522 	realhitlerobj,
    523 	gretelobj,
    524 	giftobj,
    525 	fatobj,
    526 	rocketobj,
    527 
    528 	spectreobj,
    529 	angelobj,
    530 	transobj,
    531 	uberobj,
    532 	willobj,
    533 	deathobj,
    534 	hrocketobj,
    535 	sparkobj
    536 } classtype;
    537 
    538 typedef enum {
    539 	dressing,
    540 	block,
    541 	bo_gibs,
    542 	bo_alpo,
    543 	bo_firstaid,
    544 	bo_key1,
    545 	bo_key2,
    546 	bo_key3,
    547 	bo_key4,
    548 	bo_cross,
    549 	bo_chalice,
    550 	bo_bible,
    551 	bo_crown,
    552 	bo_clip,
    553 	bo_clip2,
    554 	bo_machinegun,
    555 	bo_chaingun,
    556 	bo_food,
    557 	bo_fullheal,
    558 	bo_25clip,
    559 	bo_spear
    560 } stat_t;
    561 
    562 typedef enum {
    563 	east,
    564 	northeast,
    565 	north,
    566 	northwest,
    567 	west,
    568 	southwest,
    569 	south,
    570 	southeast,
    571 	nodir
    572 } dirtype;
    573 
    574 
    575 #define NUMENEMIES		22
    576 typedef enum {
    577 	en_guard,
    578 	en_officer,
    579 	en_ss,
    580 	en_dog,
    581 	en_boss,
    582 	en_schabbs,
    583 	en_fake,
    584 	en_hitler,
    585 	en_mutant,
    586 	en_blinky,
    587 	en_clyde,
    588 	en_pinky,
    589 	en_inky,
    590 	en_gretel,
    591 	en_gift,
    592 	en_fat,
    593 	en_spectre,
    594 	en_angel,
    595 	en_trans,
    596 	en_uber,
    597 	en_will,
    598 	en_death
    599 } enemy_t;
    600 
    601 
    602 typedef struct	statestruct
    603 {
    604 	boolean	rotate;
    605 	int		shapenum;			// a shapenum of -1 means get from ob->temp1
    606 	int		tictime;
    607 	void	(*think) (),(*action) ();
    608 	struct	statestruct	*next;
    609 } statetype;
    610 
    611 
    612 //---------------------
    613 //
    614 // trivial actor structure
    615 //
    616 //---------------------
    617 
    618 typedef struct statstruct
    619 {
    620 	byte	tilex,tiley;
    621 	byte	*visspot;
    622 	int		shapenum;			// if shapenum == -1 the obj has been removed
    623 	byte	flags;
    624 	byte	itemnumber;
    625 } statobj_t;
    626 
    627 
    628 //---------------------
    629 //
    630 // door actor structure
    631 //
    632 //---------------------
    633 
    634 typedef struct doorstruct
    635 {
    636 	byte	tilex,tiley;
    637 	boolean	vertical;
    638 	byte	lock;
    639 	enum	{dr_open,dr_closed,dr_opening,dr_closing}	action;
    640 	int		ticcount;
    641 } doorobj_t;
    642 
    643 
    644 //--------------------
    645 //
    646 // thinking actor structure
    647 //
    648 //--------------------
    649 
    650 typedef struct objstruct
    651 {
    652 	activetype	active;
    653 	int			ticcount;
    654 	classtype	obclass;
    655 	statetype	*state;
    656 
    657 	byte		flags;				//	FL_SHOOTABLE, etc
    658 
    659 	long		distance;			// if negative, wait for that door to open
    660 	dirtype		dir;
    661 
    662 	fixed 		x,y;
    663 	unsigned	tilex,tiley;
    664 	byte		areanumber;
    665 
    666 	int	 		viewx;
    667 	unsigned	viewheight;
    668 	fixed		transx,transy;		// in global coord
    669 
    670 	int 		angle;
    671 	int			hitpoints;
    672 	long		speed;
    673 
    674 	int			temp1,temp2,temp3;
    675 	struct		objstruct	*next,*prev;
    676 } objtype;
    677 
    678 
    679 #define NUMBUTTONS	8
    680 enum	{
    681 	bt_nobutton=-1,
    682 	bt_attack=0,
    683 	bt_strafe,
    684 	bt_run,
    685 	bt_use,
    686 	bt_readyknife,
    687 	bt_readypistol,
    688 	bt_readymachinegun,
    689 	bt_readychaingun
    690 };
    691 
    692 
    693 #define NUMWEAPONS	5
    694 typedef enum	{
    695 	wp_knife,
    696 	wp_pistol,
    697 	wp_machinegun,
    698 	wp_chaingun
    699 } weapontype;
    700 
    701 
    702 typedef enum	{
    703 	gd_baby,
    704 	gd_easy,
    705 	gd_medium,
    706 	gd_hard
    707 };
    708 
    709 //---------------
    710 //
    711 // gamestate structure
    712 //
    713 //---------------
    714 
    715 typedef	struct
    716 {
    717 	int			difficulty;
    718 	int			mapon;
    719 	long		oldscore,score,nextextra;
    720 	int			lives;
    721 	int			health;
    722 	int			ammo;
    723 	int			keys;
    724 	weapontype		bestweapon,weapon,chosenweapon;
    725 
    726 	int			faceframe;
    727 	int			attackframe,attackcount,weaponframe;
    728 
    729 	int			episode,secretcount,treasurecount,killcount,
    730 				secrettotal,treasuretotal,killtotal;
    731 	long		TimeCount;
    732 	long		killx,killy;
    733 	boolean		victoryflag;		// set during victory animations
    734 } gametype;
    735 
    736 
    737 typedef	enum	{
    738 	ex_stillplaying,
    739 	ex_completed,
    740 	ex_died,
    741 	ex_warped,
    742 	ex_resetgame,
    743 	ex_loadedgame,
    744 	ex_victorious,
    745 	ex_abort,
    746 	ex_demodone,
    747 	ex_secretlevel
    748 } exit_t;
    749 
    750 
    751 /*
    752 =============================================================================
    753 
    754 						 WL_MAIN DEFINITIONS
    755 
    756 =============================================================================
    757 */
    758 
    759 extern	boolean		MS_CheckParm (char far *string);
    760 
    761 extern	char		str[80],str2[20];
    762 extern	int			tedlevelnum;
    763 extern	boolean		tedlevel;
    764 extern	boolean		nospr;
    765 extern	boolean		IsA386;
    766 
    767 extern	byte far	*scalermemory;
    768 
    769 extern	fixed		focallength;
    770 extern	unsigned	viewangles;
    771 extern	unsigned	screenofs;
    772 extern	int		    viewwidth;
    773 extern	int			viewheight;
    774 extern	int			centerx;
    775 extern	int			shootdelta;
    776 
    777 extern	int			dirangle[9];
    778 
    779 extern	boolean         startgame,loadedgame,virtualreality;
    780 extern	int		mouseadjustment;
    781 //
    782 // math tables
    783 //
    784 extern	int			pixelangle[MAXVIEWWIDTH];
    785 extern	long		far finetangent[FINEANGLES/4];
    786 extern	fixed 		far sintable[],far *costable;
    787 
    788 //
    789 // derived constants
    790 //
    791 extern	fixed 	scale,maxslope;
    792 extern	long	heightnumerator;
    793 extern	int		minheightdiv;
    794 
    795 extern	char	configname[13];
    796 
    797 
    798 
    799 void		HelpScreens (void);
    800 void		OrderingInfo (void);
    801 void		TEDDeath(void);
    802 void		Quit (char *error);
    803 void 		CalcProjection (long focal);
    804 boolean		SetViewSize (unsigned width, unsigned height);
    805 void		NewGame (int difficulty,int episode);
    806 void 		NewViewSize (int width);
    807 boolean 	LoadTheGame(int file,int x,int y);
    808 boolean		SaveTheGame(int file,int x,int y);
    809 void 		ShowViewSize (int width);
    810 void		ShutdownId (void);
    811 
    812 
    813 /*
    814 =============================================================================
    815 
    816 						 WL_GAME DEFINITIONS
    817 
    818 =============================================================================
    819 */
    820 
    821 
    822 extern	boolean		ingame,fizzlein;
    823 extern	unsigned	latchpics[NUMLATCHPICS];
    824 extern	gametype	gamestate;
    825 extern	int			doornum;
    826 
    827 extern	char		demoname[13];
    828 
    829 extern	long		spearx,speary;
    830 extern	unsigned	spearangle;
    831 extern	boolean		spearflag;
    832 
    833 
    834 void 	DrawPlayBorder (void);
    835 void 	ScanInfoPlane (void);
    836 void	SetupGameLevel (void);
    837 void 	NormalScreen (void);
    838 void 	DrawPlayScreen (void);
    839 void 	FizzleOut (void);
    840 void 	GameLoop (void);
    841 void ClearMemory (void);
    842 void PlayDemo (int demonumber);
    843 void RecordDemo (void);
    844 void DrawAllPlayBorder (void);
    845 void	DrawHighScores(void);
    846 void DrawAllPlayBorderSides (void);
    847 
    848 
    849 // JAB
    850 #define	PlaySoundLocTile(s,tx,ty)	PlaySoundLocGlobal(s,(((long)(tx) << TILESHIFT) + (1L << (TILESHIFT - 1))),(((long)ty << TILESHIFT) + (1L << (TILESHIFT - 1))))
    851 #define	PlaySoundLocActor(s,ob)		PlaySoundLocGlobal(s,(ob)->x,(ob)->y)
    852 void	PlaySoundLocGlobal(word s,fixed gx,fixed gy);
    853 void UpdateSoundLoc(void);
    854 
    855 
    856 /*
    857 =============================================================================
    858 
    859 						 WL_PLAY DEFINITIONS
    860 
    861 =============================================================================
    862 */
    863 
    864 #ifdef SPEAR
    865 extern	long		funnyticount;		// FOR FUNNY BJ FACE
    866 #endif
    867 
    868 extern	exit_t		playstate;
    869 
    870 extern	boolean		madenoise;
    871 
    872 extern	objtype 	objlist[MAXACTORS],*new,*obj,*player,*lastobj,
    873 					*objfreelist,*killerobj;
    874 extern	statobj_t	statobjlist[MAXSTATS],*laststatobj;
    875 extern	doorobj_t	doorobjlist[MAXDOORS],*lastdoorobj;
    876 
    877 extern	unsigned	farmapylookup[MAPSIZE];
    878 extern	byte		*nearmapylookup[MAPSIZE];
    879 
    880 extern	byte		tilemap[MAPSIZE][MAPSIZE];	// wall values only
    881 extern	byte		spotvis[MAPSIZE][MAPSIZE];
    882 extern	objtype		*actorat[MAPSIZE][MAPSIZE];
    883 
    884 #define UPDATESIZE			(UPDATEWIDE*UPDATEHIGH)
    885 extern	byte		update[UPDATESIZE];
    886 
    887 extern	boolean		singlestep,godmode,noclip;
    888 extern	int			extravbls;
    889 
    890 //
    891 // control info
    892 //
    893 extern	boolean		mouseenabled,joystickenabled,joypadenabled,joystickprogressive;
    894 extern	int			joystickport;
    895 extern	int			dirscan[4];
    896 extern	int			buttonscan[NUMBUTTONS];
    897 extern	int			buttonmouse[4];
    898 extern	int			buttonjoy[4];
    899 
    900 extern	boolean		buttonheld[NUMBUTTONS];
    901 
    902 extern	int			viewsize;
    903 
    904 //
    905 // curent user input
    906 //
    907 extern	int			controlx,controly;		// range from -100 to 100
    908 extern	boolean		buttonstate[NUMBUTTONS];
    909 
    910 extern	boolean		demorecord,demoplayback;
    911 extern	char		far *demoptr, far *lastdemoptr;
    912 extern	memptr		demobuffer;
    913 
    914 
    915 
    916 void	InitRedShifts (void);
    917 void 	FinishPaletteShifts (void);
    918 
    919 void	CenterWindow(word w,word h);
    920 void 	InitActorList (void);
    921 void 	GetNewActor (void);
    922 void 	RemoveObj (objtype *gone);
    923 void 	PollControls (void);
    924 void 	StopMusic(void);
    925 void 	StartMusic(void);
    926 void	PlayLoop (void);
    927 void StartDamageFlash (int damage);
    928 void StartBonusFlash (void);
    929 
    930 /*
    931 =============================================================================
    932 
    933 							WL_INTER
    934 
    935 =============================================================================
    936 */
    937 
    938 void IntroScreen (void);
    939 void PreloadGraphics(void);
    940 void LevelCompleted (void);
    941 void	CheckHighScore (long score,word other);
    942 void Victory (void);
    943 void ClearSplitVWB (void);
    944 
    945 
    946 /*
    947 =============================================================================
    948 
    949 							WL_DEBUG
    950 
    951 =============================================================================
    952 */
    953 
    954 int DebugKeys (void);
    955 void PicturePause (void);
    956 
    957 
    958 /*
    959 =============================================================================
    960 
    961 						 WL_DRAW DEFINITIONS
    962 
    963 =============================================================================
    964 */
    965 
    966 extern	unsigned screenloc[3];
    967 extern	unsigned freelatch;
    968 
    969 extern	long 	lasttimecount;
    970 extern	long 	frameon;
    971 extern	boolean	fizzlein;
    972 
    973 extern	unsigned	wallheight[MAXVIEWWIDTH];
    974 
    975 extern	fixed	tileglobal;
    976 extern	fixed	focallength;
    977 extern	fixed	mindist;
    978 
    979 //
    980 // math tables
    981 //
    982 extern	int			pixelangle[MAXVIEWWIDTH];
    983 extern	long		far finetangent[FINEANGLES/4];
    984 extern	fixed 		far sintable[],far *costable;
    985 
    986 //
    987 // derived constants
    988 //
    989 extern	fixed 	scale;
    990 extern	long	heightnumerator,mindist;
    991 
    992 //
    993 // refresh variables
    994 //
    995 extern	fixed	viewx,viewy;			// the focal point
    996 extern	int		viewangle;
    997 extern	fixed	viewsin,viewcos;
    998 
    999 extern	long		postsource;
   1000 extern	unsigned	postx;
   1001 extern	unsigned	postwidth;
   1002 
   1003 
   1004 extern	int		horizwall[],vertwall[];
   1005 
   1006 extern	unsigned	pwallpos;
   1007 
   1008 
   1009 fixed	FixedByFrac (fixed a, fixed b);
   1010 void	TransformActor (objtype *ob);
   1011 void	BuildTables (void);
   1012 void	ClearScreen (void);
   1013 int		CalcRotate (objtype *ob);
   1014 void	DrawScaleds (void);
   1015 void	CalcTics (void);
   1016 void	FixOfs (void);
   1017 void	ThreeDRefresh (void);
   1018 void  FarScalePost (void);
   1019 
   1020 /*
   1021 =============================================================================
   1022 
   1023 						 WL_STATE DEFINITIONS
   1024 
   1025 =============================================================================
   1026 */
   1027 #define TURNTICS	10
   1028 #define SPDPATROL	512
   1029 #define SPDDOG		1500
   1030 
   1031 
   1032 extern	dirtype opposite[9];
   1033 extern	dirtype diagonal[9][9];
   1034 
   1035 
   1036 void	InitHitRect (objtype *ob, unsigned radius);
   1037 void	SpawnNewObj (unsigned tilex, unsigned tiley, statetype *state);
   1038 void	NewState (objtype *ob, statetype *state);
   1039 
   1040 boolean TryWalk (objtype *ob);
   1041 void 	SelectChaseDir (objtype *ob);
   1042 void 	SelectDodgeDir (objtype *ob);
   1043 void	SelectRunDir (objtype *ob);
   1044 void	MoveObj (objtype *ob, long move);
   1045 boolean SightPlayer (objtype *ob);
   1046 
   1047 void	KillActor (objtype *ob);
   1048 void	DamageActor (objtype *ob, unsigned damage);
   1049 
   1050 boolean CheckLine (objtype *ob);
   1051 boolean	CheckSight (objtype *ob);
   1052 
   1053 
   1054 /*
   1055 =============================================================================
   1056 
   1057 						 WL_SCALE DEFINITIONS
   1058 
   1059 =============================================================================
   1060 */
   1061 
   1062 
   1063 #define COMPSCALECODESTART	(65*4)		// offset to start of code in comp scaler
   1064 
   1065 typedef struct
   1066 {
   1067 	unsigned	codeofs[65];
   1068 	unsigned	width[65];
   1069 	byte		code[];
   1070 }	t_compscale;
   1071 
   1072 typedef struct
   1073 {
   1074 	unsigned	leftpix,rightpix;
   1075 	unsigned	dataofs[64];
   1076 // table data after dataofs[rightpix-leftpix+1]
   1077 }	t_compshape;
   1078 
   1079 
   1080 extern	t_compscale _seg *scaledirectory[MAXSCALEHEIGHT+1];
   1081 extern	long			fullscalefarcall[MAXSCALEHEIGHT+1];
   1082 
   1083 extern	byte		bitmasks1[8][8];
   1084 extern	byte		bitmasks2[8][8];
   1085 extern	unsigned	wordmasks[8][8];
   1086 
   1087 extern	byte		mapmasks1[4][8];
   1088 extern	byte		mapmasks2[4][8];
   1089 extern	byte		mapmasks3[4][8];
   1090 
   1091 extern	int			maxscale,maxscaleshl2;
   1092 
   1093 extern	boolean	insetupscaling;
   1094 
   1095 void SetupScaling (int maxscaleheight);
   1096 void ScaleShape (int xcenter, int shapenum, unsigned height);
   1097 void SimpleScaleShape (int xcenter, int shapenum, unsigned height);
   1098 
   1099 /*
   1100 =============================================================================
   1101 
   1102 						 WL_AGENT DEFINITIONS
   1103 
   1104 =============================================================================
   1105 */
   1106 
   1107 //
   1108 // player state info
   1109 //
   1110 extern	boolean		running;
   1111 extern	long		thrustspeed;
   1112 extern	unsigned	plux,pluy;		// player coordinates scaled to unsigned
   1113 
   1114 extern	int			anglefrac;
   1115 extern	int			facecount;
   1116 
   1117 void	SpawnPlayer (int tilex, int tiley, int dir);
   1118 void 	DrawFace (void);
   1119 void	DrawHealth (void);
   1120 void	TakeDamage (int points,objtype *attacker);
   1121 void	HealSelf (int points);
   1122 void	DrawLevel (void);
   1123 void	DrawLives (void);
   1124 void	GiveExtraMan (void);
   1125 void	DrawScore (void);
   1126 void	GivePoints (long points);
   1127 void	DrawWeapon (void);
   1128 void	DrawKeys (void);
   1129 void	GiveWeapon (int weapon);
   1130 void	DrawAmmo (void);
   1131 void	GiveAmmo (int ammo);
   1132 void	GiveKey (int key);
   1133 void	GetBonus (statobj_t *check);
   1134 
   1135 void	Thrust (int angle, long speed);
   1136 
   1137 /*
   1138 =============================================================================
   1139 
   1140 						 WL_ACT1 DEFINITIONS
   1141 
   1142 =============================================================================
   1143 */
   1144 
   1145 extern	doorobj_t	doorobjlist[MAXDOORS],*lastdoorobj;
   1146 extern	int			doornum;
   1147 
   1148 extern	unsigned	doorposition[MAXDOORS],pwallstate;
   1149 
   1150 extern	byte		far areaconnect[NUMAREAS][NUMAREAS];
   1151 
   1152 extern	boolean		areabyplayer[NUMAREAS];
   1153 
   1154 extern unsigned	pwallstate;
   1155 extern unsigned	pwallpos;			// amount a pushable wall has been moved (0-63)
   1156 extern unsigned	pwallx,pwally;
   1157 extern int			pwalldir;
   1158 
   1159 
   1160 void InitDoorList (void);
   1161 void InitStaticList (void);
   1162 void SpawnStatic (int tilex, int tiley, int type);
   1163 void SpawnDoor (int tilex, int tiley, boolean vertical, int lock);
   1164 void MoveDoors (void);
   1165 void MovePWalls (void);
   1166 void OpenDoor (int door);
   1167 void PlaceItemType (int itemtype, int tilex, int tiley);
   1168 void PushWall (int checkx, int checky, int dir);
   1169 void OperateDoor (int door);
   1170 void InitAreas (void);
   1171 
   1172 /*
   1173 =============================================================================
   1174 
   1175 						 WL_ACT2 DEFINITIONS
   1176 
   1177 =============================================================================
   1178 */
   1179 
   1180 #define s_nakedbody s_static10
   1181 
   1182 extern	statetype s_grddie1;
   1183 extern	statetype s_dogdie1;
   1184 extern	statetype s_ofcdie1;
   1185 extern	statetype s_mutdie1;
   1186 extern	statetype s_ssdie1;
   1187 extern	statetype s_bossdie1;
   1188 extern	statetype s_schabbdie1;
   1189 extern	statetype s_fakedie1;
   1190 extern	statetype s_mechadie1;
   1191 extern	statetype s_hitlerdie1;
   1192 extern	statetype s_greteldie1;
   1193 extern	statetype s_giftdie1;
   1194 extern	statetype s_fatdie1;
   1195 
   1196 extern	statetype s_spectredie1;
   1197 extern	statetype s_angeldie1;
   1198 extern	statetype s_transdie0;
   1199 extern	statetype s_uberdie0;
   1200 extern	statetype s_willdie1;
   1201 extern	statetype s_deathdie1;
   1202 
   1203 
   1204 extern	statetype s_grdchase1;
   1205 extern	statetype s_dogchase1;
   1206 extern	statetype s_ofcchase1;
   1207 extern	statetype s_sschase1;
   1208 extern	statetype s_mutchase1;
   1209 extern	statetype s_bosschase1;
   1210 extern	statetype s_schabbchase1;
   1211 extern	statetype s_fakechase1;
   1212 extern	statetype s_mechachase1;
   1213 extern	statetype s_gretelchase1;
   1214 extern	statetype s_giftchase1;
   1215 extern	statetype s_fatchase1;
   1216 
   1217 extern	statetype s_spectrechase1;
   1218 extern	statetype s_angelchase1;
   1219 extern	statetype s_transchase1;
   1220 extern	statetype s_uberchase1;
   1221 extern	statetype s_willchase1;
   1222 extern	statetype s_deathchase1;
   1223 
   1224 extern	statetype s_blinkychase1;
   1225 extern	statetype s_hitlerchase1;
   1226 
   1227 extern	statetype s_grdpain;
   1228 extern	statetype s_grdpain1;
   1229 extern	statetype s_ofcpain;
   1230 extern	statetype s_ofcpain1;
   1231 extern	statetype s_sspain;
   1232 extern	statetype s_sspain1;
   1233 extern	statetype s_mutpain;
   1234 extern	statetype s_mutpain1;
   1235 
   1236 extern	statetype s_deathcam;
   1237 
   1238 extern	statetype s_schabbdeathcam2;
   1239 extern	statetype s_hitlerdeathcam2;
   1240 extern	statetype s_giftdeathcam2;
   1241 extern	statetype s_fatdeathcam2;
   1242 
   1243 void SpawnStand (enemy_t which, int tilex, int tiley, int dir);
   1244 void SpawnPatrol (enemy_t which, int tilex, int tiley, int dir);
   1245 void KillActor (objtype *ob);
   1246 
   1247 void	US_ControlPanel(byte);
   1248 
   1249 void SpawnDeadGuard (int tilex, int tiley);
   1250 void SpawnBoss (int tilex, int tiley);
   1251 void SpawnGretel (int tilex, int tiley);
   1252 void SpawnTrans (int tilex, int tiley);
   1253 void SpawnUber (int tilex, int tiley);
   1254 void SpawnWill (int tilex, int tiley);
   1255 void SpawnDeath (int tilex, int tiley);
   1256 void SpawnAngel (int tilex, int tiley);
   1257 void SpawnSpectre (int tilex, int tiley);
   1258 void SpawnGhosts (int which, int tilex, int tiley);
   1259 void SpawnSchabbs (int tilex, int tiley);
   1260 void SpawnGift (int tilex, int tiley);
   1261 void SpawnFat (int tilex, int tiley);
   1262 void SpawnFakeHitler (int tilex, int tiley);
   1263 void SpawnHitler (int tilex, int tiley);
   1264 
   1265 /*
   1266 =============================================================================
   1267 
   1268 						 WL_TEXT DEFINITIONS
   1269 
   1270 =============================================================================
   1271 */
   1272 
   1273 extern	char	helpfilename[],endfilename[];
   1274 
   1275 extern	void	HelpScreens(void);
   1276 extern	void	EndText(void);