]> 4ch.mooo.com Git - 16.git/blob - 16/keen456/KEEN4-6/KEEN4/K4_DEF.H
extrcted keen code remake
[16.git] / 16 / keen456 / KEEN4-6 / KEEN4 / K4_DEF.H
1 /* Reconstructed Commander Keen 4-6 Source Code\r
2  * Copyright (C) 2021 K1n9_Duk3\r
3  *\r
4  * This file is loosely based on:\r
5  * Keen Dreams Source Code\r
6  * Copyright (C) 2014 Javier M. Chavez\r
7  *\r
8  * This program is free software; you can redistribute it and/or modify\r
9  * it under the terms of the GNU General Public License as published by\r
10  * the Free Software Foundation; either version 2 of the License, or\r
11  * (at your option) any later version.\r
12  *\r
13  * This program is distributed in the hope that it will be useful,\r
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
16  * GNU General Public License for more details.\r
17  *\r
18  * You should have received a copy of the GNU General Public License along\r
19  * with this program; if not, write to the Free Software Foundation, Inc.,\r
20  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
21  */\r
22 \r
23 #ifndef __K4_DEF__\r
24 #define __K4_DEF__\r
25 \r
26 /*\r
27 =============================================================================\r
28 \r
29                                                 GLOBAL CONSTANTS\r
30 \r
31 =============================================================================\r
32 */\r
33 \r
34 #if GRMODE == CGAGR\r
35 #define MINMEMORY 280000l\r
36 #else\r
37 #define MINMEMORY 310000l\r
38 #endif\r
39 \r
40 #define STARPALETTE   {0, 1, 2, 3, 4, 16, 6, 7, 31, 31, 31, 31, 31, 31, 31, 31, 0}\r
41 #define INTROPALETTE  {0, 24, 24, 7, 1, 1, 1, 1, 17, 17, 17, 17, 19, 19, 19, 19, 0}\r
42 #define SHRINKPALETTE {0, 24, 24, 7, 1, 1, 1, 1, 17, 17, 17, 17, 19, 19, 19, 24, 0}\r
43 \r
44 #define HIGHSCORE_LEFT  24\r
45 #define HIGHSCORE_TOP   51\r
46 #define HIGHSCORE_RIGHT 296\r
47 #define HIGHSCORE_MAP   19\r
48 \r
49 #define STATUS_PRESSKEY_X 160\r
50 \r
51 #define WORLDMAPNAME "Shadowlands"\r
52 #define DROPSNAME "DROPS"\r
53 \r
54 #define STARWARSMUSIC   12\r
55 #define ENDINGMUSIC     7\r
56 \r
57 // levels in this range can NOT be re-entered (BWB level should be > MAXDONELEVEL)\r
58 #define MINDONELEVEL 1\r
59 #define MAXDONELEVEL 17\r
60 \r
61 #define INACTIVATEDIST 4\r
62 \r
63 /*\r
64 =============================================================================\r
65 \r
66                                                 K4_SPEC DEFINITIONS\r
67 \r
68 =============================================================================\r
69 */\r
70 \r
71 extern char far swtext[];\r
72 extern char far *levelnames[GAMELEVELS];\r
73 extern char far *levelenter[GAMELEVELS];\r
74 \r
75 void ScanInfoPlane(void);\r
76 void PrincessLindsey(void);\r
77 void RescueJanitor(void);\r
78 void CantSwim(void);\r
79 void GotScuba(void);\r
80 void RescuedMember(void);\r
81 \r
82 extern statetype s_keenswimslow1;\r
83 extern statetype s_keenswimslow2;\r
84 extern statetype s_keenswim1;\r
85 extern statetype s_keenswim2;\r
86 extern statetype s_kbubble1;\r
87 extern statetype s_kbubble2;\r
88 extern statetype s_kbubble3;\r
89 extern statetype s_kbubble4;\r
90 void SpawnSwimKeen(Sint16 x, Sint16 y);\r
91 void SpawnKbubble(objtype *ob);\r
92 void T_KeenSwimSlow(objtype *ob);\r
93 void T_KeenSwim(objtype *ob);\r
94 void C_KeenSwim(objtype *ob, objtype *hit);\r
95 void R_KeenSwim(objtype *ob);\r
96 \r
97 /*\r
98 =============================================================================\r
99 \r
100                                                 K4_ACT1 DEFINITIONS\r
101 \r
102 =============================================================================\r
103 */\r
104 \r
105 extern statetype s_miragia0;\r
106 extern statetype s_miragia1;\r
107 extern statetype s_miragia2;\r
108 extern statetype s_miragia3;\r
109 extern statetype s_miragia4;\r
110 extern statetype s_miragia5;\r
111 extern statetype s_miragia6;\r
112 extern statetype s_miragia7;\r
113 void SpawnMiragia(Sint16 x, Sint16 y);\r
114 void T_Miragia0(objtype *ob);\r
115 void T_Miragia1(objtype *ob);\r
116 void T_Miragia2(objtype *ob);\r
117 void T_Miragia3(objtype *ob);\r
118 void T_Miragia4(objtype *ob);\r
119 void T_Miragia5(objtype *ob);\r
120 void T_Miragia6(objtype *ob);\r
121 void T_Miragia7(objtype *ob);\r
122 \r
123 extern statetype s_bonus1;\r
124 extern statetype s_bonus2;\r
125 extern statetype s_bonusrise;\r
126 extern statetype s_splash1;\r
127 extern statetype s_splash2;\r
128 extern statetype s_splash3;\r
129 extern Uint16 bonusshape[];\r
130 void SpawnBonus(Sint16 x, Sint16 y, Sint16 type);\r
131 void SpawnSplash(Sint16 x, Sint16 y);\r
132 void T_Bonus(objtype *ob);\r
133 \r
134 extern statetype s_councilwalk1;\r
135 extern statetype s_councilwalk2;\r
136 extern statetype s_councilstand;\r
137 void SpawnCouncil(Sint16 x, Sint16 y);\r
138 void T_Council(objtype *ob);\r
139 \r
140 extern statetype s_slugwalk1;\r
141 extern statetype s_slugwalk2;\r
142 extern statetype s_slugpiss1;\r
143 extern statetype s_slugstun;\r
144 extern statetype s_slugstunalt;\r
145 extern statetype s_slugslime;\r
146 extern statetype s_slugslime2;\r
147 void SpawnSlug(Sint16 x, Sint16 y);\r
148 void T_Slug(objtype *ob);\r
149 void T_SlugPiss(objtype *ob);\r
150 void C_Slug(objtype *ob, objtype *hit);\r
151 \r
152 extern statetype s_mushroom1;\r
153 extern statetype s_mushroom2;\r
154 void SpawnMadMushroom(Sint16 x, Sint16 y);\r
155 void T_Mushroom(objtype *ob);\r
156 void C_Mushroom(objtype *ob, objtype *hit);\r
157 void R_Mushroom(objtype *ob);\r
158 \r
159 extern statetype s_egg;\r
160 extern statetype s_eggbroke;\r
161 extern statetype s_eggchip1;\r
162 extern statetype s_eggchip2;\r
163 extern statetype s_eggchip3;\r
164 extern statetype s_eggbirdpause;\r
165 extern statetype s_eggbirdwalk1;\r
166 extern statetype s_eggbirdwalk2;\r
167 extern statetype s_eggbirdwalk3;\r
168 extern statetype s_eggbirdwalk4;\r
169 extern statetype s_eggbirdfly1;\r
170 extern statetype s_eggbirdfly2;\r
171 extern statetype s_eggbirdfly3;\r
172 extern statetype s_eggbirdfly4;\r
173 extern statetype s_eggbirddrop;\r
174 extern statetype s_eggbirdstun;\r
175 extern statetype s_eggbirdstun2;\r
176 extern statetype s_eggbirdstun3;\r
177 extern statetype s_eggbirdstun4;\r
178 extern statetype s_eggbirdstun5;\r
179 void SpawnEggbird(Sint16 x, Sint16 y);\r
180 void T_EggUnstun(objtype *ob);\r
181 void SpawnEggbirdOut(Sint16 x, Sint16 y);\r
182 void C_Egg(objtype *ob, objtype *hit);\r
183 void T_Eggbird(objtype *ob);\r
184 void T_EggbirdFly(objtype *ob);\r
185 void C_Eggbird(objtype *ob, objtype *hit);\r
186 void C_EggbirdStun(objtype *ob, objtype *hit);\r
187 void R_Eggbird(objtype *ob);\r
188 void R_EggbirdDrop(objtype *ob);\r
189 void R_Chip(objtype *ob);\r
190 void R_Eggbirdfly(objtype *ob);\r
191 \r
192 extern statetype s_arach1;\r
193 extern statetype s_arach2;\r
194 extern statetype s_arach3;\r
195 extern statetype s_arach4;\r
196 extern statetype s_arachstun;\r
197 extern statetype s_arachstun2;\r
198 extern statetype s_arachstun3;\r
199 extern statetype s_arachstun4;\r
200 extern statetype s_arachstun5;\r
201 void SpawnArachnut(Sint16 x, Sint16 y);\r
202 void T_Arach(objtype *ob);\r
203 void C_Arach(objtype *ob, objtype *hit);\r
204 void C_ArachStun(objtype *ob, objtype *hit);\r
205 \r
206 extern statetype s_pestfly1;\r
207 extern statetype s_pestfly2;\r
208 extern statetype s_squashedpest;\r
209 extern statetype s_pestrest1;\r
210 extern statetype s_pestrest2;\r
211 extern statetype s_pestrest3;\r
212 extern statetype s_pestrest4;\r
213 extern statetype s_pestrest5;\r
214 extern statetype s_pestrest6;\r
215 extern statetype s_pestrest7;\r
216 extern statetype s_pestrest8;\r
217 extern statetype s_pestrest9;\r
218 extern statetype s_pestrest10;\r
219 extern statetype s_pestrest11;\r
220 extern statetype s_pestrest12;\r
221 extern statetype s_pestrest13;\r
222 extern statetype s_pestrest14;\r
223 extern statetype s_pestrest15;\r
224 extern statetype s_pestrest16;\r
225 extern statetype s_pestrest17;\r
226 void SpawnSkypest(Sint16 x, Sint16 y);\r
227 void T_PestFly(objtype *ob);\r
228 void C_PestFly(objtype *ob, objtype *hit);\r
229 void C_Squashable(objtype *ob, objtype *hit);\r
230 void T_PestRest(objtype *ob);\r
231 void R_Pest(objtype *ob);\r
232 \r
233 /*\r
234 =============================================================================\r
235 \r
236                                                 K4_ACT2 DEFINITIONS\r
237 \r
238 =============================================================================\r
239 */\r
240 \r
241 extern statetype s_worm;\r
242 extern statetype s_wormpeek1;\r
243 extern statetype s_wormpeek2;\r
244 extern statetype s_wormpeek3;\r
245 extern statetype s_wormpeek4;\r
246 extern statetype s_wormpeek5;\r
247 extern statetype s_wormpeek6;\r
248 extern statetype s_wormpeek7;\r
249 extern statetype s_wormpeek8;\r
250 extern statetype s_wormbite1;\r
251 extern statetype s_wormbite2;\r
252 extern statetype s_wormbite3;\r
253 extern statetype s_wormbite4;\r
254 extern statetype s_wormbite5;\r
255 extern statetype s_wormstun;\r
256 void SpawnWormMouth(Sint16 x, Sint16 y);\r
257 void T_WormLookRight(objtype *ob);\r
258 void T_WormLook(objtype *ob);\r
259 void T_WormLookLeft(objtype *ob);\r
260 void T_Worm(objtype *ob);\r
261 void C_Worm(objtype *ob, objtype *hit);\r
262 void C_WormKill(objtype *ob, objtype *hit);\r
263 \r
264 extern statetype s_cloudsleep;\r
265 extern statetype s_cloudwake;\r
266 extern statetype s_cloud;\r
267 extern statetype s_cloudalign;\r
268 extern statetype s_cloudcharge;\r
269 extern statetype s_cloudattack1;\r
270 extern statetype s_cloudattack2;\r
271 extern statetype s_cloudattack3;\r
272 extern statetype s_cloudattack4;\r
273 extern statetype s_cloudattack5;\r
274 extern statetype s_cloudattack6;\r
275 extern statetype s_cloudattack7;\r
276 extern statetype s_cloudattack8;\r
277 extern statetype s_cloudattack9;\r
278 extern statetype s_bolt1;\r
279 extern statetype s_bolt2;\r
280 extern statetype s_bolt3;\r
281 extern statetype s_bolt4;\r
282 extern statetype s_bolt5;\r
283 extern statetype s_bolt6;\r
284 void SpawnCloudster(Sint16 x, Sint16 y);\r
285 void T_Cloud(objtype *ob);\r
286 void T_CloudAlign(objtype *ob);\r
287 void R_Cloud(objtype *ob);\r
288 void T_CloudShoot(objtype *ob);\r
289 void C_CloudSleep(objtype *ob, objtype *hit);\r
290 \r
291 extern statetype s_berkefloat1;\r
292 extern statetype s_berkefloat2;\r
293 extern statetype s_berkefloat3;\r
294 extern statetype s_berkefloat4;\r
295 extern statetype s_berkethrow1;\r
296 extern statetype s_berkethrow2;\r
297 extern statetype s_berkethrow3;\r
298 extern statetype s_berkethrow4;\r
299 extern statetype s_berkethrow5;\r
300 extern statetype s_berkethrow6;\r
301 extern statetype s_berkethrow7;\r
302 extern statetype s_berkethrow8;\r
303 extern statetype s_berkethrow9;\r
304 extern statetype s_berkethrow10;\r
305 extern statetype s_berkethrow11;\r
306 extern statetype s_berkethrow12;\r
307 extern statetype s_fire1;\r
308 extern statetype s_fire2;\r
309 extern statetype s_fireland1;\r
310 extern statetype s_fireland2;\r
311 extern statetype s_fireland3;\r
312 extern statetype s_fireland4;\r
313 extern statetype s_fireland5;\r
314 extern statetype s_fireland6;\r
315 extern statetype s_fireland7;\r
316 extern statetype s_fireland8;\r
317 extern statetype s_fireland9;\r
318 void SpawnBerkeloid(Sint16 x, Sint16 y);\r
319 void BerkeThink(objtype *ob);\r
320 void BerkeThrowThink(objtype *ob);\r
321 void BerkeThrowDone(objtype *ob);\r
322 void C_Berke(objtype *ob, objtype *hit);\r
323 void FireReact(objtype *ob);\r
324 void BerkeDrawReact(objtype *ob);\r
325 void BerkeWalkReact(objtype *ob);\r
326 \r
327 extern statetype s_footsmoke1;\r
328 extern statetype s_footsmoke2;\r
329 extern statetype s_footsmoke3;\r
330 extern statetype s_footsmoke4;\r
331 extern statetype s_inch1;\r
332 extern statetype s_inch2;\r
333 extern statetype s_footchange;  //never used!\r
334 extern statetype s_footwait;\r
335 void SpawnInchworm(Sint16 x, Sint16 y);\r
336 void SpawnFoot(Sint16 x, Sint16 y);\r
337 void InchThink(objtype *ob);\r
338 void InchContact(objtype *ob, objtype *hit);\r
339 void FootContact(objtype *ob, objtype *hit);\r
340 \r
341 extern statetype s_bounderup1;\r
342 extern statetype s_bounderup2;\r
343 extern statetype s_bounderside1;\r
344 extern statetype s_bounderside2;\r
345 extern statetype s_bounderstun;\r
346 extern statetype s_bounderstun2;\r
347 void SpawnBounder(Sint16 x, Sint16 y);\r
348 void C_Bounder(objtype *ob, objtype *hit);\r
349 void R_Bounder(objtype *ob);\r
350 \r
351 extern statetype s_lick1;\r
352 extern statetype s_lick2;\r
353 extern statetype s_lick3;\r
354 extern statetype s_lick4;\r
355 extern statetype s_licklick1;\r
356 extern statetype s_licklick2;\r
357 extern statetype s_licklick3;\r
358 extern statetype s_licklick4;\r
359 extern statetype s_licklick5;\r
360 extern statetype s_licklick6;\r
361 extern statetype s_licklick7;\r
362 extern statetype s_licklick8;\r
363 extern statetype s_lickstun;\r
364 extern statetype s_lickstun2;\r
365 void SpawnLick(Sint16 x, Sint16 y);\r
366 void LickJumpThink(objtype *ob);\r
367 void LickContact(objtype *ob, objtype *hit);\r
368 void LickKillContact(objtype *ob, objtype *hit);\r
369 void LickAirReact(objtype *ob);\r
370 \r
371 extern statetype s_platform;\r
372 void SpawnPlatform(Sint16 x, Sint16 y, Sint16 dir);\r
373 void T_Platform(objtype *ob);\r
374 void R_Platform(objtype *ob);\r
375 \r
376 extern statetype s_dropplatsit;\r
377 extern statetype s_dropplatfall;\r
378 extern statetype s_dropplatrise;\r
379 void SpawnDropPlat(Sint16 x, Sint16 y);\r
380 void T_DropPlatSit(objtype *ob);\r
381 void T_DropPlatFall(objtype *ob);\r
382 void T_DropPlatRise(objtype *ob);\r
383 \r
384 /*\r
385 =============================================================================\r
386 \r
387                                                 K4_ACT3 DEFINITIONS\r
388 \r
389 =============================================================================\r
390 */\r
391 \r
392 extern statetype s_eaterstand1;\r
393 extern statetype s_eaterstand2;\r
394 extern statetype s_eatertport1;\r
395 extern statetype s_eatertport2;\r
396 extern statetype s_eatertport3;\r
397 extern statetype s_eatertport4;\r
398 extern statetype s_eatertport5;\r
399 extern statetype s_eatertport6;\r
400 extern statetype s_eatertport7;\r
401 extern statetype s_eatertport8;\r
402 extern statetype s_eaterjump1;\r
403 extern statetype s_eaterjump2;\r
404 extern statetype s_eaterjump3;\r
405 extern statetype s_eaterjump4;\r
406 extern statetype s_eaterstun;\r
407 extern statetype s_eaterstun2;\r
408 extern statetype s_eatenbonus1;\r
409 extern statetype s_eatenbonus2;\r
410 extern statetype s_eatenbonus3;\r
411 extern statetype s_eatenbonus4;\r
412 void SpawnEater(Sint16 x, Sint16 y);\r
413 void T_EaterJump(objtype *ob);\r
414 void T_EaterTeleport(objtype *ob);\r
415 void C_Eater(objtype *ob, objtype *hit);\r
416 void EaterInTile(objtype *ob);\r
417 void R_EaterAir(objtype *ob);\r
418 \r
419 extern statetype s_mimrock;\r
420 extern statetype s_mimsneak1;\r
421 extern statetype s_mimsneak2;\r
422 extern statetype s_mimsneak3;\r
423 extern statetype s_mimsneak4;\r
424 extern statetype s_mimsneak5;\r
425 extern statetype s_mimsneak6;\r
426 extern statetype s_mimbonk1;\r
427 extern statetype s_mimbonk2;\r
428 extern statetype s_mimbonk3;\r
429 extern statetype s_mimbounce;\r
430 extern statetype s_mimstun;\r
431 extern statetype s_mimstun2;\r
432 void SpawnMimrock(Sint16 x, Sint16 y);\r
433 void T_MimrockWait(objtype *ob);\r
434 void T_MimrockSneak(objtype *ob);\r
435 void C_Mimrock(objtype *ob, objtype *hit);\r
436 void C_MimLethal(objtype *ob, objtype *hit);\r
437 void R_MimAir(objtype *ob);\r
438 void R_MimBounce(objtype *ob);\r
439 \r
440 extern statetype s_dopefish1;\r
441 extern statetype s_dopefish2;\r
442 extern statetype s_dopeattack;\r
443 extern statetype s_dopeeat;\r
444 extern statetype s_dopeburp1;\r
445 extern statetype s_dopeburp2;\r
446 extern statetype s_dopereturn;\r
447 extern statetype s_dopefood;\r
448 extern statetype s_keendopefood;\r
449 extern statetype s_keendieslow;\r
450 extern statetype s_bubble1;\r
451 extern statetype s_bubble2;\r
452 extern statetype s_bubble3;\r
453 extern statetype s_bubble4;\r
454 void SpawnDopefish(Sint16 x, Sint16 y);\r
455 void T_EatenKeen(objtype *ob);\r
456 void T_Dope(objtype *ob);\r
457 void T_DopeHunt(objtype *ob);\r
458 void T_DopeReturn(objtype *ob);\r
459 void T_Burp(objtype *ob);\r
460 void T_Bubble(objtype *ob);\r
461 void C_Dope(objtype *ob, objtype *hit);\r
462 void R_Fish(objtype *ob);\r
463 \r
464 extern statetype s_schoolfish1;\r
465 extern statetype s_schoolfish2;\r
466 void SpawnSchoolfish(Sint16 x, Sint16 y);\r
467 void T_SchoolFish(objtype *ob);\r
468 \r
469 extern statetype s_pixie;\r
470 extern statetype s_pixielook;\r
471 extern statetype s_pixieshoot;\r
472 extern statetype s_pixieshoot2;\r
473 extern statetype s_pixiefire1;\r
474 extern statetype s_pixiefire2;\r
475 extern statetype s_pixiefire3;\r
476 extern statetype s_pixiefire4;\r
477 void SpawnPixie(Sint16 x, Sint16 y);\r
478 void T_Pixie(objtype *ob);\r
479 void T_PixieCheck(objtype *ob);\r
480 void T_PixieShoot(objtype *ob);\r
481 void R_Mshot(objtype *ob);\r
482 \r
483 extern statetype s_mine;\r
484 extern statetype s_mineboom1;\r
485 extern statetype s_mineboom2;\r
486 void SpawnMine(Sint16 x, Sint16 y, Sint16 dir);\r
487 void C_Mine(objtype *ob, objtype *hit);\r
488 \r
489 extern statetype s_lindsey1;\r
490 extern statetype s_lindsey2;\r
491 extern statetype s_lindsey3;\r
492 extern statetype s_lindsey4;\r
493 void SpawnLindsey(Sint16 x, Sint16 y);\r
494 void T_Lindsey(objtype *ob);\r
495 \r
496 extern statetype s_dartthrower;\r
497 extern statetype s_dart1;\r
498 extern statetype s_dart2;\r
499 extern statetype s_dartup1;\r
500 extern statetype s_dartup2;\r
501 extern statetype s_dartdown1;\r
502 extern statetype s_dartdown2;\r
503 void SpawnDartShooter(Sint16 x, Sint16 y, Sint16 dir);\r
504 void T_DartShoot(objtype *ob);\r
505 void R_DartThrower(objtype *ob);\r
506 \r
507 extern statetype s_scuba;\r
508 void SpawnScuba(Sint16 x, Sint16 y);\r
509 void C_Scuba(objtype *ob, objtype *hit);\r
510 \r
511 #endif