]> 4ch.mooo.com Git - 16.git/blob - 16/keen456/KEEN4-6/KEEN5/K5_DEF.H
extrcted keen code remake
[16.git] / 16 / keen456 / KEEN4-6 / KEEN5 / K5_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 __K5_DEF__\r
24 #define __K5_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 310000l\r
38 #endif\r
39 \r
40 #define STARPALETTE   {0, 1, 24, 30, 31, 28, 6, 7, 19, 19, 19, 19, 19, 19, 19, 19, 0}\r
41 #define INTROPALETTE  {0, 4, 4, 28, 1, 1, 1, 1, 17, 17, 17, 17, 19, 19, 19, 19, 0}\r
42 #define SHRINKPALETTE {0, 4, 4, 28, 1, 1, 1, 1, 17, 17, 17, 17, 19, 19, 19,  4, 0}\r
43 \r
44 #define HIGHSCORE_LEFT  40\r
45 #define HIGHSCORE_TOP   35\r
46 #define HIGHSCORE_RIGHT 280\r
47 #define HIGHSCORE_MAP   15\r
48 \r
49 #define STATUS_PRESSKEY_X 120\r
50 \r
51 #define WORLDMAPNAME    "Armageddon"\r
52 #define DROPSNAME       "VITALIN"\r
53 \r
54 #define STARWARSMUSIC   17\r
55 #define ENDINGMUSIC     14\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 6\r
62 \r
63 //\r
64 // tiles for worldmap teleporters\r
65 //\r
66 #define TELEPORTERTILE1 2687    // tile animation for teleporting out\r
67 #define TELEPORTERTILE2 1063    // tile after teleporting out\r
68 #define TELEPORTERTILE3 TELEPORTERTILE1 // tile animation for teleporting in\r
69 #define TELEPORTERTILE4 0       // tile after teleporting in\r
70 \r
71 #define TELEPORERTILEMASK 1     // animation has 2 frames\r
72 \r
73 /*\r
74 =============================================================================\r
75 \r
76                                                 K5_SPEC DEFINITIONS\r
77 \r
78 =============================================================================\r
79 */\r
80 \r
81 extern char far swtext[];\r
82 extern char far *levelnames[GAMELEVELS];\r
83 extern char far *levelenter[GAMELEVELS];\r
84 \r
85 void OpenMapDoor(Sint16 tileX, Sint16 tileY);\r
86 void CloseMapDoor(Sint16 tileX, Sint16 tileY);\r
87 void ScanInfoPlane(void);\r
88 void GameOver(void);\r
89 \r
90 void FinishedFuse(void);\r
91 \r
92 /*\r
93 =============================================================================\r
94 \r
95                                                 K5_ACT1 DEFINITIONS\r
96 \r
97 =============================================================================\r
98 */\r
99 \r
100 extern Sint16 pdirx[];\r
101 extern Sint16 pdiry[];\r
102 \r
103 Sint16 CheckSpawnShot(Uint16 x, Uint16 y, statetype *state);\r
104 void C_ClipSide(objtype *ob, objtype *hit);\r
105 void C_ClipTop(objtype *ob, objtype *hit);\r
106 void R_Land(objtype *ob);\r
107 void R_Bounce(objtype *ob);\r
108 \r
109 extern statetype s_bonus1;\r
110 extern statetype s_bonus2;\r
111 extern statetype s_bonusfly1;\r
112 extern statetype s_bonusfly2;\r
113 extern statetype s_bonusrise;\r
114 extern statetype s_splash1;\r
115 extern statetype s_splash2;\r
116 extern statetype s_splash3;\r
117 extern statetype s_splash4;\r
118 \r
119 extern Uint16 bonusshape[];\r
120 \r
121 void SpawnBonus(Uint16 tileX, Uint16 tileY, Uint16 type);\r
122 void SpawnSplash(Uint16 tileX, Uint16 tileY);\r
123 void T_Bonus(objtype *ob);\r
124 void T_FlyBonus(objtype *ob);\r
125 \r
126 extern statetype s_teleport1;\r
127 extern statetype s_teleport2;\r
128 extern statetype s_teleportzap1;\r
129 extern statetype s_teleportzap2;\r
130 \r
131 void SpawnTeleport(void);\r
132 \r
133 extern statetype s_fuseflash1;\r
134 extern statetype s_fuseflash2;\r
135 extern statetype s_fuseflash3;\r
136 \r
137 void SpawnFuseFlash(Uint16 tileX, Uint16 tileY);\r
138 \r
139 extern statetype s_deadmachine;\r
140 \r
141 void SpawnDeadMachine(void);\r
142 void T_DeadMachine(objtype *ob);\r
143 \r
144 extern statetype s_platform;\r
145 extern statetype s_slotplat1;\r
146 extern statetype s_slotplat2;\r
147 \r
148 void SpawnPlatform(Uint16 tileX, Uint16 tileY, Sint16 dir, Sint16 type);\r
149 void T_Platform(objtype *ob);\r
150 void T_Slotplat(objtype *ob);\r
151 \r
152 extern statetype s_dropplatsit;\r
153 extern statetype s_dropplatfall;\r
154 extern statetype s_dropplatrise;\r
155 \r
156 void SpawnDropPlat(Uint16 tileX, Uint16 tileY);\r
157 void T_DropPlatSit(objtype *ob);\r
158 void T_DropPlatFall(objtype *ob);\r
159 void T_DropPlatRise(objtype *ob);\r
160 \r
161 extern statetype s_statplat;\r
162 \r
163 void SpawnStaticPlat(Uint16 tileX, Uint16 tileY);\r
164 \r
165 extern statetype s_goplat;\r
166 extern statetype s_slotgoplat1;\r
167 extern statetype s_slotgoplat2;\r
168 \r
169 void SpawnGoPlat(Uint16 tileX, Uint16 tileY, Sint16 dir, Sint16 type);\r
170 void T_GoPlat(objtype *ob);\r
171 void T_GoSlotPlat(objtype *ob);\r
172 \r
173 extern statetype s_volte1;\r
174 extern statetype s_volte2;\r
175 extern statetype s_volte3;\r
176 extern statetype s_volte4;\r
177 extern statetype s_voltestun;\r
178 \r
179 void SpawnVolte(Uint16 tileX, Uint16 tileY);\r
180 void T_Volte(objtype *ob);\r
181 void C_Volte(objtype *ob, objtype *hit);\r
182 \r
183 extern statetype s_sneakplatsit;\r
184 extern statetype s_sneakplatdodge;\r
185 extern statetype s_sneakplatreturn;\r
186 \r
187 void SpawnSneakPlat(Uint16 tileX, Uint16 tileY);\r
188 void T_SneakPlat(objtype *ob);\r
189 \r
190 extern statetype s_cannon;\r
191 extern statetype s_cannonfire;\r
192 extern statetype s_cshot1;\r
193 extern statetype s_cshot2;\r
194 extern statetype s_cshot3;\r
195 extern statetype s_cshot4;\r
196 extern statetype s_cshothit1;\r
197 extern statetype s_cshothit2;\r
198 \r
199 void SpawnCannon(Uint16 tileX, Uint16 tileY, Sint16 dir);\r
200 void T_Cannon(objtype *ob);\r
201 void C_CShot(objtype *ob, objtype *hit);\r
202 void R_CShot(objtype *ob);\r
203 \r
204 /*\r
205 =============================================================================\r
206 \r
207                                                 K5_ACT2 DEFINITIONS\r
208 \r
209 =============================================================================\r
210 */\r
211 \r
212 extern statetype s_sparkywalk1;\r
213 extern statetype s_sparkywalk2;\r
214 extern statetype s_sparkywalk3;\r
215 extern statetype s_sparkywalk4;\r
216 extern statetype s_sparkylook1;\r
217 extern statetype s_sparkylook2;\r
218 extern statetype s_sparkylook3;\r
219 extern statetype s_sparkylook4;\r
220 extern statetype s_sparkylook5;\r
221 extern statetype s_sparkylook6;\r
222 extern statetype s_sparkylook7;\r
223 extern statetype s_sparkylook8;\r
224 extern statetype s_sparkyspeed1;\r
225 extern statetype s_sparkyspeed2;\r
226 extern statetype s_sparkyspeed3;\r
227 extern statetype s_sparkyspeed4;\r
228 extern statetype s_sparkycharge1;\r
229 extern statetype s_sparkycharge2;\r
230 extern statetype s_sparkycharge3;\r
231 extern statetype s_sparkycharge4;\r
232 extern statetype s_sparkyturn1;\r
233 extern statetype s_sparkyturn2;\r
234 extern statetype s_sparkyturn3;\r
235 extern statetype s_sparkystun;\r
236 \r
237 void SpawnSparky(Uint16 tileX, Uint16 tileY);\r
238 void T_Sparky(objtype *ob);\r
239 void T_ChargeCount(objtype *ob);\r
240 void T_SparkyLookL(objtype *ob);\r
241 void T_SparkyLookR(objtype *ob);\r
242 void T_RunSnd1(objtype *ob);\r
243 void T_RunSnd2(objtype *ob);\r
244 void C_Sparky(objtype *ob, objtype *hit);\r
245 void R_Sparky(objtype *ob);\r
246 \r
247 extern statetype s_amptonwalk1;\r
248 extern statetype s_amptonwalk2;\r
249 extern statetype s_amptonwalk3;\r
250 extern statetype s_amptonwalk4;\r
251 extern statetype s_amptonturn;\r
252 extern statetype s_amptongrab1;\r
253 extern statetype s_amptongrab2;\r
254 extern statetype s_amptonclimb;\r
255 extern statetype s_amptonrelease1;\r
256 extern statetype s_amptonrelease2;\r
257 extern statetype s_amptonfiddle1;\r
258 extern statetype s_amptonfiddle2;\r
259 extern statetype s_amptonfiddle3;\r
260 extern statetype s_amptonfiddle4;\r
261 extern statetype s_amptonfiddle5;\r
262 extern statetype s_amptonstun;\r
263 \r
264 void SpawnAmpton(Uint16 tileX, Uint16 tileY);\r
265 void T_Ampton(objtype *ob);\r
266 void T_AmptonClimb(objtype *ob);\r
267 void T_SetNoThink(objtype *ob);\r
268 void C_Ampton(objtype *ob, objtype *hit);\r
269 void R_Ampton(objtype *ob);\r
270 \r
271 extern statetype s_slicestarslide;\r
272 extern statetype s_slicestarbounce;\r
273 extern statetype s_slicestarboom;\r
274 \r
275 void SpawnSlicestarSlide(Uint16 tileX, Uint16 tileY, Sint16 dir);\r
276 void SpawnSlicestarBounce(Uint16 tileX, Uint16 tileY);\r
277 void C_Slicestar(objtype *ob, objtype *hit);\r
278 void R_Slicestar(objtype *ob);\r
279 \r
280 extern statetype s_shellywalk1;\r
281 extern statetype s_shellywalk2;\r
282 extern statetype s_shellywalk3;\r
283 extern statetype s_shellywalk4;\r
284 extern statetype s_shellylook;\r
285 extern statetype s_shellylook2;\r
286 extern statetype s_shellyjump1;\r
287 extern statetype s_shellyjump2;\r
288 extern statetype s_shellydie;\r
289 extern statetype s_shellydieup;\r
290 extern statetype s_shellyboom1;\r
291 extern statetype s_shellyboom2;\r
292 extern statetype s_shellyboom3;\r
293 extern statetype s_shellyboom4;\r
294 extern statetype s_shellypiece1;\r
295 extern statetype s_shellypiece2;\r
296 \r
297 void SpawnShelly(Uint16 tileX, Uint16 tileY);\r
298 void T_ShellyLook(objtype *ob);\r
299 void T_Turn(objtype *ob);\r
300 void T_ShellyFrag(objtype *ob);\r
301 void C_Shelly(objtype *ob, objtype *hit);\r
302 void R_Shelly(objtype *ob);\r
303 void R_Shell(objtype *ob);\r
304 \r
305 /*\r
306 =============================================================================\r
307 \r
308                                                 K5_ACT3 DEFINITIONS\r
309 \r
310 =============================================================================\r
311 */\r
312 \r
313 extern statetype s_mine;\r
314 extern statetype s_minecenter;\r
315 extern statetype s_mineshift;\r
316 extern statetype s_mineboom1;\r
317 extern statetype s_mineboom2;\r
318 extern statetype s_mineboom3;\r
319 extern statetype s_mineboom4;\r
320 extern statetype s_mineboom5;\r
321 extern statetype s_mineboom6;\r
322 extern statetype s_minepiece;\r
323 \r
324 void SpawnMine(Uint16 tileX, Uint16 tileY);\r
325 boolean MinePosCheck(Uint16 tileX, Uint16 tileY);\r
326 boolean Walk(objtype *ob, Sint16 dir);\r
327 void ChaseThink(objtype *ob);\r
328 void T_Mine(objtype *ob);\r
329 void C_Solid(objtype *ob, objtype *hit);\r
330 void C_MineFrag(objtype *ob, objtype *hit);\r
331 void T_MineCenter(objtype *ob);\r
332 void T_MineShift(objtype *ob);\r
333 void T_MineFrag(objtype *ob);\r
334 void R_Mine(objtype *ob);\r
335 \r
336 extern statetype s_robored;\r
337 extern statetype s_roboredfire0;\r
338 extern statetype s_roboredfire1;\r
339 extern statetype s_roboredfire2;\r
340 extern statetype s_rshot1;\r
341 extern statetype s_rshot2;\r
342 extern statetype s_rshothit1;\r
343 extern statetype s_rshothit2;\r
344 \r
345 void SpawnRoboRed(Uint16 tileX, Uint16 tileY);\r
346 void T_RoboRed(objtype *ob);\r
347 void C_RoboRed(objtype *ob, objtype *hit);\r
348 void T_RoboShoot(objtype *ob);\r
349 void C_RShot(objtype *ob, objtype *hit);\r
350 void R_RShot(objtype *ob);\r
351 \r
352 extern statetype s_gripsitd;\r
353 extern statetype s_gripjumpd;\r
354 extern statetype s_gripsitl;\r
355 extern statetype s_gripjumpl;\r
356 extern statetype s_gripsitr;\r
357 extern statetype s_gripjumpr;\r
358 extern statetype s_gripsitu;\r
359 extern statetype s_gripjumpu;\r
360 extern statetype s_gripspin1;\r
361 extern statetype s_gripspin2;\r
362 extern statetype s_gripspin3;\r
363 extern statetype s_gripspin4;\r
364 extern statetype s_gripspin5;\r
365 extern statetype s_gripspin6;\r
366 extern statetype s_gripspin7;\r
367 extern statetype s_gripspin8;\r
368 extern statetype s_gripflyd;\r
369 extern statetype s_gripflyl;\r
370 extern statetype s_gripflyr;\r
371 extern statetype s_gripflyu;\r
372 \r
373 void SpawnSpirogrip(Uint16 tileX, Uint16 tileY);\r
374 void T_SpiroLaunch(objtype *ob);\r
375 void R_SpiroFly(objtype *ob);\r
376 \r
377 extern statetype s_spindred1;\r
378 extern statetype s_spindred2;\r
379 extern statetype s_spindred3;\r
380 extern statetype s_spindred4;\r
381 \r
382 void SpawnSpindread(Uint16 tileX, Uint16 tileY);\r
383 void T_Spindread(objtype *ob);\r
384 void C_Spindread(objtype *ob, objtype *hit);\r
385 void R_Spindread(objtype *ob);\r
386 \r
387 extern statetype s_master1;\r
388 extern statetype s_master2;\r
389 extern statetype s_master3;\r
390 extern statetype s_master4;\r
391 extern statetype s_mastershoot1;\r
392 extern statetype s_mastershoot2;\r
393 extern statetype s_mastertport1;\r
394 extern statetype s_mastertport2;\r
395 extern statetype s_mastertport3;\r
396 extern statetype s_mastertport4;\r
397 extern statetype s_mshot1;\r
398 extern statetype s_mshot2;\r
399 extern statetype s_mshot3;\r
400 extern statetype s_mshot4;\r
401 extern statetype s_mspray1;\r
402 extern statetype s_mspray2;\r
403 extern statetype s_mspray3;\r
404 extern statetype s_mspray4;\r
405 \r
406 void SpawnMaster(Uint16 tileX, Uint16 tileY);\r
407 void T_Master(objtype *ob);\r
408 void T_MasterShoot(objtype *ob);\r
409 void C_Master(objtype *ob, objtype *hit);\r
410 void T_MasterTPort(objtype *ob);\r
411 void C_MShot(objtype *ob, objtype *hit);\r
412 void R_MShot(objtype *ob);\r
413 void R_MSpray(objtype *ob);\r
414 \r
415 extern statetype s_shikadi1;\r
416 extern statetype s_shikadi2;\r
417 extern statetype s_shikadi3;\r
418 extern statetype s_shikadi4;\r
419 extern statetype s_shikadiwalk1;\r
420 extern statetype s_shikadiwalk2;\r
421 extern statetype s_shikadiwalk3;\r
422 extern statetype s_shikadiwalk4;\r
423 extern statetype s_shikadigrab;\r
424 extern statetype s_shikadigrab2;\r
425 extern statetype s_shikadistun;\r
426 extern statetype s_polespark1;\r
427 extern statetype s_polespark2;\r
428 \r
429 void SpawnShikadi(Uint16 tileX, Uint16 tileY);\r
430 void T_Shikadi(objtype *ob);\r
431 void C_Shikadi(objtype *ob, objtype *hit);\r
432 void T_PoleShock(objtype *ob);\r
433 void T_PoleSpark(objtype *ob);\r
434 void R_Shikadi(objtype *ob);\r
435 \r
436 extern statetype s_petsit1;\r
437 extern statetype s_petsit2;\r
438 extern statetype s_petbark1;\r
439 extern statetype s_petbark2;\r
440 extern statetype s_pet1;\r
441 extern statetype s_pet2;\r
442 extern statetype s_pet3;\r
443 extern statetype s_pet4;\r
444 extern statetype s_petjump;\r
445 extern statetype s_pshot1;\r
446 extern statetype s_pshot2;\r
447 extern statetype s_pshothot1;\r
448 extern statetype s_pshothot2;\r
449 extern statetype s_petstun;\r
450 \r
451 void SpawnPet(Uint16 tileX, Uint16 tileY);\r
452 void T_Pet(objtype *ob);\r
453 void T_PetSit(objtype *ob);\r
454 void T_PetBark(objtype *ob);\r
455 void C_Pet(objtype *ob, objtype *hit);\r
456 void R_Pet(objtype *ob);\r
457 void R_PetJump(objtype *ob);\r
458 void C_PShot(objtype *ob, objtype *hit);\r
459 void R_PShot(objtype *ob);\r
460 \r
461 extern statetype s_sphereful1;\r
462 extern statetype s_sphereful2;\r
463 extern statetype s_sphereful3;\r
464 extern statetype s_sphereful4;\r
465 \r
466 void SpawnSphereful(Uint16 tileX, Uint16 tileY);\r
467 void T_Sphereful(objtype *ob);\r
468 void R_Sphereful(objtype *ob);\r
469 \r
470 extern statetype s_scottie1;\r
471 extern statetype s_scottie2;\r
472 extern statetype s_scottie3;\r
473 extern statetype s_scottie4;\r
474 extern statetype s_scottieface;\r
475 extern statetype s_scottiestun;\r
476 \r
477 void SpawnScottie(Uint16 tileX, Uint16 tileY);\r
478 void T_Scottie(objtype *ob);\r
479 void C_Scottie(objtype *ob, objtype *hit);\r
480 \r
481 extern statetype s_qed;\r
482 \r
483 void SpawnQed(Uint16 tileX, Uint16 tileY);\r
484 \r
485 #endif