]> 4ch.mooo.com Git - 16.git/blob - 16/keen456/KEEN4-6/KEEN6/K6_DEF.H
extrcted keen code remake
[16.git] / 16 / keen456 / KEEN4-6 / KEEN6 / K6_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 __K6_DEF__\r
24 #define __K6_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 255000l\r
36 #else\r
37 #define MINMEMORY 300000l\r
38 #endif\r
39 \r
40 #define STARPALETTE   {0, 1, 24, 25, 4, 28, 6, 7, 31, 31, 31, 31, 31, 31, 31, 31, 0}\r
41 #define INTROPALETTE  {0, 5, 5, 21, 1, 1, 1, 1, 17, 17, 17, 17, 19, 19, 19, 19, 0}\r
42 #define SHRINKPALETTE {0, 5, 5, 21, 1, 1, 1, 1, 17, 17, 17, 17, 19, 19, 19,  5, 0}\r
43 \r
44 #define HIGHSCORE_LEFT  40\r
45 #define HIGHSCORE_TOP   51\r
46 #define HIGHSCORE_RIGHT 280\r
47 #define HIGHSCORE_MAP   18\r
48 \r
49 #define STATUS_PRESSKEY_X 120\r
50 \r
51 #define WORLDMAPNAME    "Fribbulus Xax"\r
52 #define DROPSNAME       "VIVAS"\r
53 \r
54 #define STARWARSMUSIC   13\r
55 #define ENDINGMUSIC     1\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 16\r
60 \r
61 #define INACTIVATEDIST 4\r
62 \r
63 //\r
64 // tiles for worldmap teleporters\r
65 //\r
66 #define TELEPORTERTILE1 2613    // tile animation for teleporting out\r
67 #define TELEPORTERTILE2 2629    // tile after teleporting out\r
68 #define TELEPORTERTILE3 TELEPORTERTILE1 // tile animation for teleporting in\r
69 #define TELEPORTERTILE4 TELEPORTERTILE2 // tile after teleporting in\r
70 \r
71 #define TELEPORERTILEMASK 3     // animation has 4 frames\r
72 \r
73 extern Sint16 groundslam;\r
74 \r
75 //HACKs:\r
76 //#define US_ManualCheck() true\r
77 boolean US_ManualCheck(void);\r
78 \r
79 /*\r
80 =============================================================================\r
81 \r
82                                                 K6_SPEC DEFINITIONS\r
83 \r
84 =============================================================================\r
85 */\r
86 \r
87 extern char far swtext[];\r
88 extern char far *levelnames[GAMELEVELS];\r
89 extern char far *levelenter[GAMELEVELS];\r
90 \r
91 void ScanInfoPlane(void);\r
92 \r
93 extern statetype s_keenstun;\r
94 \r
95 void FlipBigSwitch(objtype *ob, boolean isup);\r
96 void GotSandwich(void);\r
97 void GotHook(void);\r
98 void GotPasscard(void);\r
99 \r
100 \r
101 /*\r
102 =============================================================================\r
103 \r
104                                                 K6_ACT1 DEFINITIONS\r
105 \r
106 =============================================================================\r
107 */\r
108 \r
109 extern Sint16 pdirx[];\r
110 extern Sint16 pdiry[];\r
111 \r
112 void C_ClipSide(objtype *ob, objtype *hit);\r
113 void C_ClipTop(objtype *ob, objtype *hit);\r
114 void R_Land(objtype *ob);\r
115 void R_Bounce(objtype *ob);\r
116 \r
117 extern statetype s_bonus1;\r
118 extern statetype s_bonus2;\r
119 extern statetype s_bonusfly1;\r
120 extern statetype s_bonusfly2;\r
121 extern statetype s_bonusrise;\r
122 \r
123 extern statetype s_splash1;\r
124 extern statetype s_splash2;\r
125 extern statetype s_splash3;\r
126 extern statetype s_splash4;\r
127 \r
128 extern Uint16 bonusshape[];\r
129 \r
130 void SpawnBonus(Uint16 tileX, Uint16 tileY, Uint16 type);\r
131 void SpawnSplash(Uint16 tileX, Uint16 tileY);\r
132 void T_Bonus(objtype *ob);\r
133 void T_FlyBonus(objtype *ob);\r
134 \r
135 extern statetype s_grabbiter1;\r
136 extern statetype s_grabbiter2;\r
137 extern statetype s_grabbitersleep1;\r
138 extern statetype s_grabbitersleep2;\r
139 \r
140 void SpawnGrabbiter(Uint16 tileX, Uint16 tileY);\r
141 void C_Grabbiter(objtype *ob, objtype *hit);\r
142 \r
143 extern statetype s_rocket;\r
144 extern statetype s_rocketfly1;\r
145 extern statetype s_rocketfly2;\r
146 extern statetype s_keenrocket;\r
147 \r
148 void SpawnRocket(Uint16 tileX, Uint16 tileY, Uint16 state);\r
149 void T_Rocket(objtype *ob);\r
150 void C_Rocket(objtype *ob, objtype *hit);\r
151 void C_RocketFly(objtype *ob, objtype *hit);\r
152 void T_RocketFly(objtype *ob);\r
153 \r
154 extern statetype s_grapplespot;\r
155 extern statetype s_throwrope1;\r
156 extern statetype s_throwrope2;\r
157 extern statetype s_climbrope1;\r
158 extern statetype s_climbrope2;\r
159 extern statetype s_maprope;\r
160 extern statetype s_mapropeshort;\r
161 \r
162 void SpawnGrappleSpot(Uint16 tileX, Uint16 tileY, Uint16 type);\r
163 void T_ThrowRope(objtype *ob);\r
164 void T_ClimbRope(objtype *ob);\r
165 void C_GrappleSpot(objtype *ob, objtype *hit);\r
166 \r
167 extern statetype s_satellitestopspot;\r
168 extern statetype s_worldkeensatellite;\r
169 extern statetype s_satellite1;\r
170 extern statetype s_satellite2;\r
171 extern statetype s_satellite3;\r
172 extern statetype s_satellite4;\r
173 \r
174 void SpawnSatelliteStop(Uint16 tileX, Uint16 tileY, Uint16 type);\r
175 void SpawnSatellite(Uint16 tileX, Uint16 tileY);\r
176 void T_Satellite(objtype *ob);\r
177 void C_Satellite(objtype *ob, objtype *hit);\r
178 void R_WorldKeenSatellite(objtype *ob);\r
179 \r
180 extern statetype s_sandwich;\r
181 \r
182 void SpawnSandwich(Uint16 tileX, Uint16 tileY);\r
183 \r
184 extern statetype s_hook;\r
185 \r
186 void SpawnHook(Uint16 tileX, Uint16 tileY);\r
187 \r
188 extern statetype s_passcard;\r
189 \r
190 void SpawnPasscard(Uint16 tileX, Uint16 tileY);\r
191 void C_Molly(objtype *ob, objtype *hit);\r
192 \r
193 extern statetype s_molly1;\r
194 extern statetype s_molly2;\r
195 extern statetype s_molly3;\r
196 extern statetype s_molly4;\r
197 \r
198 void SpawnMolly(Uint16 tileX, Uint16 tileY);\r
199 \r
200 extern statetype s_platform;\r
201 \r
202 void SpawnPlatform(Uint16 tileX, Uint16 tileY, Sint16 dir);\r
203 void T_Platform(objtype *ob);\r
204 \r
205 extern statetype s_dropplatsit;\r
206 extern statetype s_fallplatfall;\r
207 extern statetype s_fallplatrise;\r
208 \r
209 void SpawnDropPlat(Uint16 tileX, Uint16 tileY);\r
210 void T_DropPlatSit(objtype *ob);\r
211 void T_DropPlatFall(objtype *ob);\r
212 void T_DropPlatRise(objtype *ob);\r
213 \r
214 extern statetype s_staticplatform;\r
215 \r
216 void SpawnStaticPlat(Uint16 tileX, Uint16 tileY);\r
217 \r
218 extern statetype s_goplat;\r
219 \r
220 void SpawnGoPlat(Uint16 tileX, Uint16 tileY, Sint16 dir);\r
221 void T_GoPlat(objtype *ob);\r
222 void R_GoPlat(objtype *ob);\r
223 \r
224 extern statetype s_sneakplatsit;\r
225 extern statetype s_sneakplatdodge;\r
226 extern statetype s_sneakplatreturn;\r
227 \r
228 void SpawnSneakPlat(Uint16 tileX, Uint16 tileY);\r
229 void T_SneakPlat(objtype *ob);\r
230 \r
231 extern statetype s_bloogwalk1;\r
232 extern statetype s_bloogwalk2;\r
233 extern statetype s_bloogwalk3;\r
234 extern statetype s_bloogwalk4;\r
235 extern statetype s_bloogstun;\r
236 \r
237 void SpawnBloog(Uint16 tileX, Uint16 tileY);\r
238 void T_BloogWalk(objtype *ob);\r
239 void C_Bloog(objtype *ob, objtype *hit);\r
240 \r
241 extern statetype s_blooguardwalk1;\r
242 extern statetype s_blooguardwalk2;\r
243 extern statetype s_blooguardwalk3;\r
244 extern statetype s_blooguardwalk4;\r
245 extern statetype s_blooguardattack1;\r
246 extern statetype s_blooguardattack2;\r
247 extern statetype s_blooguardattack3;\r
248 extern statetype s_blooguardattack4;\r
249 extern statetype s_blooguardstun;\r
250 \r
251 void SpawnBlooguard(Uint16 tileX, Uint16 tileY);\r
252 void T_BlooguardWalk(objtype *ob);\r
253 void T_BlooguardAttack(objtype *ob);\r
254 void C_Blooguard(objtype *ob, objtype *hit);\r
255 void R_Blooguard(objtype *ob);\r
256 \r
257 extern statetype s_rbloogletwalk1;\r
258 extern statetype s_rbloogletwalk2;\r
259 extern statetype s_rbloogletwalk3;\r
260 extern statetype s_rbloogletwalk4;\r
261 extern statetype s_rbloogletstun;\r
262 extern statetype s_ybloogletwalk1;\r
263 extern statetype s_ybloogletwalk2;\r
264 extern statetype s_ybloogletwalk3;\r
265 extern statetype s_ybloogletwalk4;\r
266 extern statetype s_ybloogletstun;\r
267 extern statetype s_bbloogletwalk1;\r
268 extern statetype s_bbloogletwalk2;\r
269 extern statetype s_bbloogletwalk3;\r
270 extern statetype s_bbloogletwalk4;\r
271 extern statetype s_bbloogletstun;\r
272 extern statetype s_gbloogletwalk1;\r
273 extern statetype s_gbloogletwalk2;\r
274 extern statetype s_gbloogletwalk3;\r
275 extern statetype s_gbloogletwalk4;\r
276 extern statetype s_gbloogletstun;\r
277 \r
278 void SpawnBlooglet(Uint16 tileX, Uint16 tileY, Sint16 type);\r
279 void C_Blooglet(objtype *ob, objtype *hit);\r
280 \r
281 /*\r
282 =============================================================================\r
283 \r
284                                                 K6_ACT2 DEFINITIONS\r
285 \r
286 =============================================================================\r
287 */\r
288 \r
289 extern statetype s_nospikestand;\r
290 extern statetype s_nospikewalk1;\r
291 extern statetype s_nospikewalk2;\r
292 extern statetype s_nospikewalk3;\r
293 extern statetype s_nospikewalk4;\r
294 extern statetype s_nospikerun1;\r
295 extern statetype s_nospikerun2;\r
296 extern statetype s_nospikerun3;\r
297 extern statetype s_nospikerun4;\r
298 extern statetype s_nospikeconfused1;\r
299 extern statetype s_nospikeconfused2;\r
300 extern statetype s_nospikeconfused3;\r
301 extern statetype s_nospikefall;\r
302 extern statetype s_nospikestun;\r
303 \r
304 void SpawnNospike(Uint16 tileX, Uint16 tileY);\r
305 void T_NospikeWalk(objtype *ob);\r
306 void T_NospikeRun(objtype *ob);\r
307 void C_Nospike(objtype *ob, objtype *hit);\r
308 void T_NospikeConfused(objtype* ob);\r
309 void R_NospikeConfused(objtype *ob);\r
310 void R_NospikeFall(objtype *ob);\r
311 void R_NospikeRun(objtype *ob);\r
312 \r
313 extern statetype s_gikwalk1;\r
314 extern statetype s_gikwalk2;\r
315 extern statetype s_gikwalk3;\r
316 extern statetype s_gikjump;\r
317 extern statetype s_gikslide1;\r
318 extern statetype s_gikslide2;\r
319 extern statetype s_gikstand;\r
320 \r
321 void SpawnGik(Uint16 tileX, Uint16 tileY);\r
322 void T_GikWalk(objtype *ob);\r
323 void T_GikSlide(objtype *ob);\r
324 void R_GikJump(objtype *ob);\r
325 void R_GikSlide(objtype *ob);\r
326 \r
327 extern statetype s_cannon;\r
328 extern statetype s_cannonfire;\r
329 extern statetype s_cshot1;\r
330 extern statetype s_cshot2;\r
331 extern statetype s_cshot3;\r
332 extern statetype s_cshot4;\r
333 extern statetype s_cshothit1;\r
334 extern statetype s_cshothit2;\r
335 \r
336 void SpawnCannon(Uint16 tileX, Uint16 tileY, Sint16 dir);\r
337 void T_Cannon(objtype *ob);\r
338 void C_CShot(objtype *ob, objtype *hit);\r
339 void R_CShot(objtype *ob);\r
340 \r
341 extern statetype s_orbatrix1;\r
342 extern statetype s_orbatrix2;\r
343 extern statetype s_orbatrixcurl1;\r
344 extern statetype s_orbatrixcurl2;\r
345 extern statetype s_orbatrixcurl3;\r
346 extern statetype s_orbatrixuncurl1;\r
347 extern statetype s_orbatrixuncurl2;\r
348 extern statetype s_orbatrixidle1;\r
349 extern statetype s_orbatrixidle2;\r
350 extern statetype s_orbatrixidle3;\r
351 extern statetype s_orbatrixidle4;\r
352 extern statetype s_orbatrixbounce1;\r
353 extern statetype s_orbatrixbounce2;\r
354 extern statetype s_orbatrixbounce3;\r
355 extern statetype s_orbatrixbounce4;\r
356 \r
357 void SpawnOrbatrix(Uint16 tileX, Uint16 tileY);\r
358 void T_OrbatrixFly(objtype *ob);\r
359 void C_Orbatrix(objtype *ob, objtype *hit);\r
360 void R_Orbatrix(objtype *ob);\r
361 void R_OrbatrixBounce(objtype *ob);\r
362 void T_OrbatrixCurl(objtype *ob);\r
363 void T_OrbatrixUncurl(objtype *ob);\r
364 void C_OrbatrixBounce(objtype *ob, objtype *hit);\r
365 \r
366 extern statetype s_bipstand;\r
367 extern statetype s_bipwalk1;\r
368 extern statetype s_bipwalk2;\r
369 extern statetype s_bipwalk3;\r
370 extern statetype s_bipwalk4;\r
371 extern statetype s_bipsquished;\r
372 \r
373 void T_BipWalk(objtype *ob);\r
374 void C_Bip(objtype *ob, objtype *hit);\r
375 \r
376 extern statetype s_bipship;\r
377 extern statetype s_bipshipshot;\r
378 extern statetype s_bipshipturn1;\r
379 extern statetype s_bipshipturn2;\r
380 extern statetype s_bipshipturn3;\r
381 extern statetype s_bipshipturn4;\r
382 extern statetype s_bipshipexplode1;\r
383 extern statetype s_bipshipexplode2;\r
384 extern statetype s_bipshipexplode3;\r
385 extern statetype s_bipshipsmoke1;\r
386 extern statetype s_bipshipsmoke2;\r
387 \r
388 void SpawnBipship(Uint16 tileX, Uint16 tileY);\r
389 void R_BipShot(objtype *ob);\r
390 void T_BipshipTurn(objtype *ob);\r
391 void T_BipshipFly(objtype *ob);\r
392 void T_BipshipExplode(objtype *ob);\r
393 void C_Bipship(objtype *ob, objtype *hit);\r
394 \r
395 extern statetype s_flectstand;\r
396 extern statetype s_flectturn;\r
397 extern statetype s_flectwalk1;\r
398 extern statetype s_flectwalk2;\r
399 extern statetype s_flectwalk3;\r
400 extern statetype s_flectwalk4;\r
401 extern statetype s_flectstun;\r
402 \r
403 void SpawnFlect(Uint16 tileX, Uint16 tileY);\r
404 void T_FlectStand(objtype *ob);\r
405 void T_FlectWalk(objtype *ob);\r
406 void C_Flect(objtype *ob, objtype *hit);\r
407 void R_Flect(objtype *ob);\r
408 \r
409 /*\r
410 =============================================================================\r
411 \r
412                                                 K6_ACT3 DEFINITIONS\r
413 \r
414 =============================================================================\r
415 */\r
416 \r
417 extern statetype s_fleexwalk1;\r
418 extern statetype s_fleexwalk2;\r
419 extern statetype s_fleexrun1;\r
420 extern statetype s_fleexrun2;\r
421 extern statetype s_fleexrun3;\r
422 extern statetype s_fleexrun4;\r
423 extern statetype s_fleexlook1;\r
424 extern statetype s_fleexlook2;\r
425 extern statetype s_fleexstun;\r
426 \r
427 void SpawnFleex(Uint16 tileX, Uint16 tileY);\r
428 void T_FleexWalk(objtype *ob);\r
429 void T_FleexLook(objtype *ob);\r
430 void C_Fleex(objtype *ob, objtype *hit);\r
431 \r
432 extern statetype s_bobbajump1;\r
433 extern statetype s_bobbajump2;\r
434 extern statetype s_bobbastand;\r
435 extern statetype s_bobbaattack;\r
436 extern statetype s_bobbashot1;\r
437 extern statetype s_bobbashot2;\r
438 extern statetype s_bobbashot3;\r
439 extern statetype s_bobbashot4;\r
440 extern statetype s_bobbashot5;\r
441 extern statetype s_bobbashot6;\r
442 extern statetype s_bobbashot7;\r
443 extern statetype s_bobbashot8;\r
444 extern statetype s_bobbashotvanish1;\r
445 extern statetype s_bobbashotvanish2;\r
446 extern statetype s_bobbashotvanish3;\r
447 \r
448 void SpawnBobba(Uint16 tileX, Uint16 tileY);\r
449 void T_BobbaShot(objtype *ob);\r
450 void T_BobbaStand(objtype *ob);\r
451 void C_Bobba(objtype *ob, objtype *hit);\r
452 void R_Bobba(objtype *ob);\r
453 void R_BobbaShot(objtype *ob);\r
454 \r
455 extern statetype s_babobbajump1;\r
456 extern statetype s_babobbajump2;\r
457 extern statetype s_babobbastand;\r
458 extern statetype s_babobbaattack;\r
459 extern statetype s_babobbastun1;\r
460 extern statetype s_babobbastun2;\r
461 extern statetype s_babobbasleep1;\r
462 extern statetype s_babobbasleep2;\r
463 extern statetype s_babobbasleep3;\r
464 extern statetype s_babobbasleep4;\r
465 extern statetype s_babobbasleep5;\r
466 extern statetype s_babobbasleep6;\r
467 extern statetype s_babobbasleep7;\r
468 extern statetype s_babobbashot1;\r
469 extern statetype s_babobbashot2;\r
470 extern statetype s_babobbashot3;\r
471 extern statetype s_babobbashotvanish1;\r
472 extern statetype s_babobbashotvanish2;\r
473 \r
474 void SpawnBabobba(Uint16 tileX, Uint16 tileY);\r
475 void T_BabobbaStand(objtype *ob);\r
476 void C_Babobba(objtype *ob, objtype *hit);\r
477 void C_BabobbaSleep(objtype *ob, objtype *hit);\r
478 void R_Babobba(objtype *ob);\r
479 void T_BabobbaShot(objtype *ob);\r
480 void T_BabobbaShotVanish(objtype *ob);\r
481 \r
482 extern statetype s_blorb1;\r
483 extern statetype s_blorb2;\r
484 extern statetype s_blorb3;\r
485 \r
486 void SpawnBlorb(Uint16 tileX, Uint16 tileY);\r
487 void R_Blorb(objtype *ob);\r
488 \r
489 extern statetype s_ceilickhidden;\r
490 extern statetype s_ceilickattack1;\r
491 extern statetype s_ceilickattack2;\r
492 extern statetype s_ceilickattack3;\r
493 extern statetype s_ceilickattack4;\r
494 extern statetype s_ceilickattack5;\r
495 extern statetype s_ceilickattack6;\r
496 extern statetype s_ceilickattack7;\r
497 extern statetype s_ceilickattack8;\r
498 extern statetype s_ceilickattack9;\r
499 extern statetype s_ceilickattack10;\r
500 extern statetype s_ceilickattack11;\r
501 extern statetype s_ceilicklaugh1;\r
502 extern statetype s_ceilicklaugh2;\r
503 extern statetype s_ceilicklaugh3;\r
504 extern statetype s_ceilicklaugh4;\r
505 extern statetype s_ceilicklaugh5;\r
506 extern statetype s_ceilicklaugh6;\r
507 extern statetype s_ceilicklaugh7;\r
508 extern statetype s_ceilicklaugh8;\r
509 extern statetype s_ceilicklaugh9;\r
510 extern statetype s_ceilickstun;\r
511 \r
512 void SpawnCeilick(Uint16 tileX, Uint16 tileY);\r
513 void T_CeilickHidden(objtype *ob);\r
514 void T_CeilickLaugh(objtype *ob);\r
515 void T_CeilickStunned(objtype *ob);\r
516 void C_Ceilick(objtype *ob, objtype *hit);\r
517 \r
518 #endif