1 /*
2 Copyright (C) 1994-1995 Apogee Software, Ltd.
3 
4 This program is free software; you can redistribute it and/or
5 modify it under the terms of the GNU General Public License
6 as published by the Free Software Foundation; either version 2
7 of the License, or (at your option) any later version.
8 
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12 
13 See the GNU General Public License for more details.
14 
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18 
19 */
20 #ifndef _states_public
21 #define _states_public
22 
23 #include "develop.h"
24 
25 #if (SHAREWARE == 0)
26 #define MAXSTATES 1300
27 #else
28 #define MAXSTATES 660
29 #endif
30 
31 #define SF_CLOSE   0x01
32 #define SF_CRUSH   0x02
33 #define SF_UP      0x04
34 #define SF_DOWN    0x08
35 #define SF_SOUND   0x10
36 #define SF_BLOCK   0x20
37 #define SF_EYE1    0
38 #define SF_EYE2    1
39 #define SF_EYE3    2
40 #define SF_DOGSTATE 0x40
41 #define SF_BAT      0x80
42 #define SF_FAKING   0x80
43 #define SF_DEAD     0x80
44 
45 typedef struct  statestruct
46 {
47 		  byte            rotate;
48 		  short           shapenum;  // a shapenum of -1 means get from ob->temp1
49 		  short           tictime;
50 		  void            (*think) ();
51 		  signed char     condition;
52 		  struct  statestruct     *next;
53 } statetype;
54 
55 extern   statetype * statetable[MAXSTATES];
56 
57 extern   statetype s_lowgrdstand;
58 extern   statetype s_lowgrdpath4;
59 extern   statetype s_lowgrdpath3;
60 extern   statetype s_lowgrdpath2;
61 extern   statetype s_lowgrdpath1;
62 extern   statetype s_lowgrdcollide;
63 extern   statetype s_lowgrdcollide2;
64 //extern   statetype s_lowgrduse1;
65 extern   statetype s_lowgrdshoot1;
66 extern   statetype s_lowgrdchase1;
67 extern   statetype s_lowgrddie1;
68 extern   statetype s_lowgrdcrushed1;
69 extern   statetype s_lowgrdcrushed1;
70 extern   statetype s_sneakydown;
71 extern   statetype s_sneakyrise1;
72 
73 
74 extern   statetype s_highgrdstand;
75 extern   statetype s_highgrdpath1;
76 extern   statetype s_highgrdcollide;
77 extern   statetype s_highgrdcollide2;
78 //extern   statetype s_highgrduse1;
79 extern   statetype s_highgrdshoot1;
80 extern   statetype s_highgrdshoot3;
81 extern   statetype s_highgrdchase1;
82 extern   statetype s_highgrddie1;
83 extern   statetype s_highgrdcrushed1;
84 
85 
86 extern   statetype s_strikestand;
87 extern   statetype s_strikepath1;
88 extern   statetype s_strikecollide;
89 extern   statetype s_strikecollide2;
90 extern   statetype s_strikeshoot1;
91 //extern   statetype s_strikeuse1;
92 extern   statetype s_strikerollright1;
93 extern   statetype s_strikerollright3;
94 extern   statetype s_strikerollleft1;
95 extern   statetype s_strikerollleft3;
96 extern   statetype s_strikechase1;
97 extern   statetype s_strikedie1;
98 extern   statetype s_strikewait;
99 extern   statetype s_strikecrushed1;
100 
101 
102 extern   statetype s_blitzstand;
103 extern   statetype s_blitzpath1;
104 extern   statetype s_blitzcollide;
105 extern   statetype s_blitzcollide2;
106 extern   statetype s_blitzshoot1;
107 extern   statetype s_blitzuse;
108 extern   statetype s_blitzsteal1;
109 extern   statetype s_blitzchase1;
110 extern   statetype s_blitzdie1;
111 extern   statetype s_blitzdie3;
112 extern   statetype s_blitzplead1;
113 extern   statetype s_blitzplead3;
114 extern   statetype s_blitzplead4;
115 extern   statetype s_blitzplead7;
116 extern   statetype s_blitzaplead5;
117 extern   statetype s_blitzaplead4;
118 extern   statetype s_blitzcrushed1;
119 extern   statetype s_blitzfakedie1;
120 extern   statetype s_blitzrise2;
121 extern   statetype s_blitzstruggledie1;
122 extern   statetype s_blitzstruggledead;
123 
124 extern   statetype s_enforcerstand;
125 extern   statetype s_enforcerpath1;
126 extern   statetype s_enforcercollide;
127 extern   statetype s_enforcercollide2;
128 //extern   statetype s_enforceruse1;
129 extern   statetype s_enforcershoot1;
130 extern   statetype s_enforcershoot3;
131 extern   statetype s_enforcerthrow1;
132 extern   statetype s_grenade1;
133 extern   statetype s_grenadehit1;
134 extern   statetype s_enforcerchase1;
135 extern   statetype s_enforcerdie1;
136 extern   statetype s_grenade_fall1;
137 extern   statetype s_grenade_fall6;
138 extern   statetype s_enforcercrushed1;
139 
140 
141 extern   statetype s_robogrdstand;
142 extern   statetype s_robogrdpath1;
143 extern   statetype s_robogrdshoot1;
144 extern   statetype s_robogrdshuriken1;
145 extern   statetype s_shurikenhit1;
146 extern   statetype s_robogrdchase1;
147 extern   statetype s_robogrddie1;
148 extern   statetype s_robogrdcollide;
149 extern   statetype s_robogrdcollide2;
150 extern   statetype s_robogrdcrushed1;
151 extern   statetype s_roboalign;
152 extern   statetype s_robowait;
153 extern   statetype s_roborealign;
154 
155 
156 
157 
158 
159 extern statetype s_altexplosion10;
160 extern statetype s_altexplosion9 ;
161 extern statetype s_altexplosion8 ;
162 extern statetype s_altexplosion7 ;
163 extern statetype s_altexplosion6 ;
164 extern statetype s_altexplosion5 ;
165 extern statetype s_altexplosion4 ;
166 extern statetype s_altexplosion3  ;
167 extern statetype s_altexplosion2  ;
168 extern statetype s_altexplosion1  ;
169 
170 
171 
172 extern   statetype s_explosion1;
173 extern   statetype s_explosion2;
174 extern   statetype s_explosion3;
175 extern   statetype s_explosion4;
176 extern   statetype s_explosion5;
177 extern   statetype s_explosion6;
178 extern   statetype s_explosion7;
179 extern   statetype s_explosion8;
180 extern   statetype s_explosion9;
181 extern   statetype s_explosion10;
182 extern   statetype s_explosion11;
183 extern   statetype s_explosion12;
184 extern   statetype s_explosion13;
185 extern   statetype s_explosion14;
186 extern   statetype s_explosion15;
187 extern   statetype s_explosion16;
188 extern   statetype s_explosion17;
189 extern   statetype s_explosion18;
190 extern   statetype s_explosion19;
191 extern   statetype s_explosion20;
192 
193 extern   statetype s_grexplosion1;
194 extern   statetype s_grexplosion2;
195 extern   statetype s_grexplosion3;
196 extern   statetype s_grexplosion4;
197 extern   statetype s_grexplosion5;
198 extern   statetype s_grexplosion6;
199 extern   statetype s_grexplosion7;
200 extern   statetype s_grexplosion8;
201 extern   statetype s_grexplosion9;
202 extern   statetype s_grexplosion10;
203 extern   statetype s_grexplosion11;
204 extern   statetype s_grexplosion12;
205 extern   statetype s_grexplosion13;
206 extern   statetype s_grexplosion14;
207 extern   statetype s_grexplosion15;
208 extern   statetype s_grexplosion16;
209 extern   statetype s_grexplosion17;
210 extern   statetype s_grexplosion18;
211 extern   statetype s_grexplosion19;
212 extern   statetype s_grexplosion20;
213 
214 
215 
216 extern   statetype s_staticexplosion1;
217 extern   statetype s_staticexplosion2;
218 extern   statetype s_staticexplosion3;
219 extern   statetype s_staticexplosion4;
220 extern   statetype s_staticexplosion5;
221 extern   statetype s_staticexplosion6;
222 extern   statetype s_staticexplosion7;
223 extern   statetype s_staticexplosion8;
224 extern   statetype s_staticexplosion9;
225 extern   statetype s_staticexplosion10;
226 extern   statetype s_staticexplosion11;
227 extern   statetype s_staticexplosion12;
228 extern   statetype s_staticexplosion13;
229 extern   statetype s_staticexplosion14;
230 extern   statetype s_staticexplosion15;
231 extern   statetype s_staticexplosion16;
232 extern   statetype s_staticexplosion17;
233 extern   statetype s_staticexplosion18;
234 extern   statetype s_staticexplosion19;
235 extern   statetype s_staticexplosion20;
236 extern   statetype s_staticexplosion21;
237 extern   statetype s_staticexplosion22;
238 extern   statetype s_staticexplosion23;
239 extern   statetype s_staticexplosion24;
240 extern   statetype s_staticexplosion25;
241 
242 extern   statetype s_upblade1;
243 
244 extern   statetype s_firejetup1;
245 
246 
247 extern   statetype s_columndowndown1;
248 
249 
250 extern   statetype s_spearup1;
251 extern   statetype s_pushcolumn1;
252 extern   statetype s_pushcolumn2;
253 extern   statetype s_pushcolumn3;
254 
255 extern   statetype s_wallfireball;
256 extern   statetype s_crossfire1;
257 extern   statetype s_crossdone1;
258 
259 
260 
261 
262 extern   statetype s_fireunit1;
263 extern   statetype s_firespan1;
264 
265 extern   statetype s_p_bazooka1;
266 extern   statetype s_p_bazooka2;
267 
268 extern   statetype s_p_grenade;
269 extern   statetype s_p_gfall1;
270 extern   statetype s_p_gfall2;
271 extern   statetype s_p_gfall3;
272 extern   statetype s_p_gfall4;
273 
274 extern   statetype s_gunsmoke1;
275 extern   statetype s_bloodspurt1;
276 extern   statetype s_hitmetalwall1;
277 extern   statetype s_hitmetalactor1;
278 
279 
280 
281 
282 
283 
284 extern   statetype s_dust;
285 
286 
287 
288 extern   statetype s_skeleton1;
289 
290 
291 extern   statetype s_gas2;
292 extern   statetype s_gas1;
293 
294 
295 extern   statetype s_spring1;
296 extern   statetype s_spring2;
297 
298 
299 
300 
301 extern   statetype s_player;
302 extern   statetype s_free;
303 
304 extern   statetype s_pgunattack1;
305 extern   statetype s_pmissattack1;
306 extern   statetype s_pgunattack2;
307 extern   statetype s_pmissattack2;
308 extern   statetype s_remoteinelev;
309 extern   statetype s_remotemove1;
310 
311 
312 extern   statetype s_godfire1;
313 
314 
315 
316 extern   statetype s_remotedie1;
317 
318 
319 extern   statetype s_guts1;
320 extern   statetype s_guts12;
321 
322 
323 extern   statetype s_bossdeath;
324 extern   statetype s_megaexplosions;
325 
326 extern   statetype s_superparticles;
327 extern   statetype s_gibs1;
328 extern   statetype s_gibsdone1;
329 extern   statetype s_bigsoul;
330 extern   statetype s_littlesoul;
331 extern   statetype s_vaporized1;
332 extern   statetype s_autospring1;
333 extern   statetype s_pbatblast;
334 
335 
336 
337 extern   statetype s_collectorwander1;
338 extern   statetype s_collectorfdoor1;
339 extern   statetype s_tag;
340 extern   statetype s_timekeeper;
341 extern   statetype s_skeleton48;
342 extern   statetype s_skeleton24;
343 
344 extern   statetype s_wind;
345 extern   statetype s_remoteguts1;
346 extern   statetype s_voidwait;
347 extern   statetype s_ashwait;
348 extern   statetype s_deadwait;
349 extern   statetype s_gutwait;
350 extern   statetype s_vaporized8;
351 extern   statetype s_remoteguts12;
352 extern   statetype s_eye1;
353 extern   statetype s_itemspawn1;
354 extern   statetype s_deadblood1;
355 
356 
357 extern   statetype s_flash1;
358 
359 extern   statetype s_elevdisk;
360 extern   statetype s_pathdisk;
361 extern   statetype s_megaremove;
362 
363 extern   statetype s_respawn1;
364 extern   statetype s_basemarker1;
365 
366 extern   statetype s_blooddrip1;
367 
368 extern   statetype s_diskmaster;
369 extern   statetype s_bstar1;
370 
371 
372 #if (SHAREWARE == 0)
373 
374 extern   statetype s_scottwander1;
375 extern   statetype s_scottwanderdoor1;
376 
377 extern   statetype s_opstand;
378 extern   statetype s_oppath1;
379 extern   statetype s_opcollide;
380 extern   statetype s_opcollide2;
381 extern   statetype s_opgiveup;
382 //extern   statetype s_opuse1;
383 extern   statetype s_opshoot1;
384 extern   statetype s_opbolo1;
385 extern   statetype s_bolocast1;
386 extern   statetype s_opchase1;
387 extern   statetype s_opdie1;
388 extern   statetype s_opcrushed1;
389 
390 
391 extern   statetype s_dmonkstand;
392 extern   statetype s_dmonkpath1;
393 extern   statetype s_dmonkshoot1;
394 extern   statetype s_dmonkshoot2;
395 extern   statetype s_dmonkchase1;
396 extern   statetype s_dmonkdie1;
397 extern   statetype s_dmonkcollide;
398 extern   statetype s_dmonkcollide2;
399 extern   statetype s_dmonkcrushed1;
400 extern   statetype s_dmonkshoot5;
401 extern   statetype s_dmonkshoot3;
402 extern   statetype s_dmonkshoot4;
403 
404 
405 extern   statetype s_firemonkstand;
406 extern   statetype s_firemonkpath1;
407 extern   statetype s_firemonkcast1;
408 extern   statetype s_monkfire1;
409 extern   statetype s_fireballhit1;
410 extern   statetype s_firemonkchase1;
411 extern   statetype s_firemonkdie1;
412 extern   statetype s_firemonkcollide;
413 extern   statetype s_firemonkcollide2;
414 extern   statetype s_firemonkcrushed1;
415 
416 
417 extern   statetype s_wallstand;
418 extern   statetype s_wallpath;
419 extern   statetype s_wallshoot;
420 extern   statetype s_wallcollide;
421 extern   statetype s_wallalign;
422 extern   statetype s_wallwait;
423 extern   statetype s_wallrestore;
424 
425 
426 extern   statetype s_darianstand;
427 extern   statetype s_darianchase1;
428 extern   statetype s_darianuse;
429 extern   statetype s_darianshoot1;
430 extern   statetype s_dariancollide;
431 extern   statetype s_dariancollide2;
432 extern   statetype s_dariandie1;
433 extern   statetype s_darianspears;
434 extern   statetype s_darianuse1;
435 extern   statetype s_dariansink1;
436 extern   statetype s_dariansink9;
437 extern   statetype s_darianrise1;
438 extern   statetype s_darianwait;
439 extern   statetype s_dariandefend1;
440 
441 
442 extern   statetype s_heinrichstand;
443 extern   statetype s_heinrichshoot1;
444 extern   statetype s_heinrichshoot4;
445 extern   statetype s_heinrichshoot9;
446 extern   statetype s_heinrichooc;
447 extern   statetype s_heinrichchase;
448 extern   statetype s_heinexp1;
449 extern   statetype s_kristleft;
450 extern   statetype s_kristright;
451 
452 
453 extern   statetype s_missile1;
454 extern   statetype s_missilehit1;
455 extern   statetype s_mine1;
456 extern   statetype s_heinrichchase1;
457 extern   statetype s_heinrichuse;
458 extern   statetype s_heinrichmine;
459 extern   statetype s_heinrichdie1;
460 extern   statetype s_heinrichdead;
461 extern   statetype s_heinrichdefend;
462 
463 extern   statetype s_dexplosion22;
464 extern   statetype s_dexplosion21;
465 extern   statetype s_dexplosion20;
466 extern   statetype s_dexplosion19;
467 extern   statetype s_dexplosion18;
468 extern   statetype s_dexplosion17;
469 extern   statetype s_dexplosion16;
470 extern   statetype s_dexplosion15;
471 extern   statetype s_dexplosion14;
472 extern   statetype s_dexplosion13;
473 extern   statetype s_dexplosion12;
474 extern   statetype s_dexplosion11;
475 extern   statetype s_dexplosion10;
476 extern   statetype s_dexplosion9;
477 extern   statetype s_dexplosion8;
478 extern   statetype s_dexplosion7;
479 extern   statetype s_dexplosion6;
480 extern   statetype s_dexplosion5;
481 extern   statetype s_dexplosion4;
482 extern   statetype s_dexplosion3;
483 extern   statetype s_dexplosion2;
484 extern   statetype s_dexplosion1;
485 extern   statetype s_dspear1;
486 
487 
488 
489 extern   statetype s_NMEchase;
490 extern   statetype s_NMEdie;
491 extern   statetype s_NMEhead1;
492 extern   statetype s_NMEhead2;
493 extern   statetype s_NMEwheels1;
494 extern   statetype s_NMEwheels2;
495 extern   statetype s_NMEwheels3;
496 extern   statetype s_NMEwheels4;
497 extern   statetype s_NMEwheels5;
498 extern   statetype s_NMEwindup;
499 extern   statetype s_NMEwheels120;
500 
501 extern   statetype s_NMEwrotleft3;
502 extern   statetype s_NMEwrotleft2;
503 extern   statetype s_NMEwrotleft1;
504 
505 extern   statetype s_NMEwrotright3;
506 extern   statetype s_NMEwrotright2;
507 extern   statetype s_NMEwrotright1;
508 extern   statetype s_NMEminiball1;
509 extern   statetype s_NMEattack;
510 extern   statetype s_NMEsaucer1;
511 extern   statetype s_NMEhead1rl;
512 extern   statetype s_NMEhead2rl;
513 extern   statetype s_NMEspinattack;
514 extern   statetype s_NMEwheelspin;
515 extern   statetype s_NMEcollide;
516 extern   statetype s_NMEdeathbuildup;
517 extern   statetype s_NMEheadexplosion;
518 extern   statetype s_NMEstand;
519 extern   statetype s_NMEspinfire;
520 extern   statetype s_shootinghead;
521 extern   statetype s_oshuriken1;
522 extern   statetype s_oshurikenhit1;
523 
524 
525 
526 
527 extern   statetype s_darkmonkstand;
528 extern   statetype s_darkmonkcharge1;
529 extern   statetype s_darkmonkreact;
530 extern   statetype s_darkmonkland;
531 extern   statetype s_darkmonkchase1;
532 extern   statetype s_darkmonkcover1;
533 extern   statetype s_darkmonkawaken1;
534 extern   statetype s_darkmonklightning1;
535 extern   statetype s_darkmonkfspark1;
536 extern   statetype s_darkmonkbreathe1;
537 extern   statetype s_darkmonksummon1;
538 extern   statetype s_darkmonkhead;
539 extern   statetype s_darkmonkhspawn;
540 extern   statetype s_darkmonksneer1;
541 extern   statetype s_darkmonkheadhappy;
542 extern   statetype s_darkmonkheaddie1;
543 extern   statetype s_darkmonkhball1;
544 extern   statetype s_darkmonksphere1;
545 extern   statetype s_darkmonksphere8;
546 extern   statetype s_darkmonkbball1;
547 extern   statetype s_darkmonkscare1;
548 extern   statetype s_darkmonkdie1;
549 extern   statetype s_darkmonkredhead;
550 extern   statetype s_redheadhit;
551 extern   statetype s_darkmonksnakelink;
552 extern   statetype s_darkmonkredlink;
553 extern   statetype s_redlinkhit;
554 extern   statetype s_energysphere1;
555 extern   statetype s_lightning;
556 extern   statetype s_handball2;
557 extern   statetype s_handball1;
558 extern   statetype s_faceball2;
559 extern   statetype s_faceball1;
560 extern   statetype s_floorspark1;
561 extern   statetype s_dmlandandfire;
562 
563 extern   statetype s_darkmonkhball7;
564 extern   statetype s_darkmonkbball7;
565 extern   statetype s_darkmonklightning9;
566 extern   statetype s_darkmonkfspark5;
567 extern   statetype s_darkmonkbreathe6;
568 extern   statetype s_darkmonkabsorb1;
569 extern   statetype s_dmgreenthing1;
570 extern   statetype s_dmgreenthing8;
571 extern   statetype s_darkmonkfastspawn;
572 extern   statetype s_spit1;
573 extern   statetype s_spithit1;
574 extern   statetype s_snakefire1;
575 extern   statetype s_snakepath;
576 extern   statetype s_snakefindpath;
577 extern   statetype s_snakefireworks1;
578 extern   statetype s_snakefireworks2;
579 
580 
581 extern   statetype s_speardown1;
582 
583 
584 extern   statetype s_downblade1;
585 
586 
587 extern   statetype s_firejetdown1;
588 
589 extern   statetype s_columnupup1;
590 extern   statetype s_columnupup2;
591 extern   statetype s_columnupup8;
592 extern   statetype s_columnupup7;
593 extern   statetype s_columnupdown1;
594 extern   statetype s_columnupdown6;
595 
596 extern   statetype s_spinupblade1;
597 extern   statetype s_spindownblade1;
598 
599 extern   statetype s_boulderdrop12;
600 extern   statetype s_boulderdrop10;
601 extern   statetype s_boulderdrop8;
602 
603 
604 extern   statetype s_boulderdrop1;
605 extern   statetype s_boulderspawn;
606 extern   statetype s_bouldersink1;
607 extern   statetype s_boulderroll1;
608 
609 extern   statetype s_gunfire1;
610 extern   statetype s_gunfire2;
611 extern   statetype s_gundie1;
612 extern   statetype s_gunstand;
613 extern   statetype s_gunraise1;
614 extern   statetype s_gunlower1;
615 extern   statetype s_4waygunfire1;
616 extern   statetype s_4waygunfire2;
617 extern   statetype s_4waygun;
618 
619 
620 extern   statetype s_kessphere1;
621 extern   statetype s_batblast1;
622 extern   statetype s_slop1;
623 
624 
625 
626 extern   statetype s_serialdog4;
627 extern   statetype s_serialdog3;
628 extern   statetype s_serialdog2;
629 extern   statetype s_serialdog;
630 extern   statetype s_serialdogattack;
631 extern   statetype s_doguse;
632 extern   statetype s_doglick;
633 extern   statetype s_dogwait;
634 
635 
636 
637 #endif
638 
639 
640 
641 
642 
643 
644 #endif
645