OSDN Git Service

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