+++ /dev/null
-/* Reconstructed Commander Keen 4-6 Source Code\r
- * Copyright (C) 2021 K1n9_Duk3\r
- *\r
- * This file is loosely based on:\r
- * Keen Dreams Source Code\r
- * Copyright (C) 2014 Javier M. Chavez\r
- *\r
- * This program is free software; you can redistribute it and/or modify\r
- * it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation; either version 2 of the License, or\r
- * (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License along\r
- * with this program; if not, write to the Free Software Foundation, Inc.,\r
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
- */\r
-\r
-#ifndef __CK_DEF__\r
-#define __CK_DEF__\r
-\r
-#include <BIOS.H>\r
-#include <CONIO.H>\r
-\r
-#include "ID_HEADS.H"\r
-\r
-/*\r
-=============================================================================\r
-\r
- GLOBAL CONSTANTS & MACROS\r
-\r
-=============================================================================\r
-*/\r
-\r
-#define MAXACTORS 100\r
-\r
-#define GAMELEVELS 25\r
-\r
-#define CONVERT_GLOBAL_TO_TILE(x) ((x)>>(G_T_SHIFT))\r
-#define CONVERT_TILE_TO_GLOBAL(x) ((x)<<(G_T_SHIFT))\r
-#define CONVERT_GLOBAL_TO_PIXEL(x) ((x)>>(G_P_SHIFT))\r
-#define CONVERT_PIXEL_TO_GLOBAL(x) ((x)<<(G_P_SHIFT))\r
-#define CONVERT_PIXEL_TO_TILE(x) ((x)>>(P_T_SHIFT))\r
-#define CONVERT_TILE_TO_PIXEL(x) ((x)<<(P_T_SHIFT))\r
-\r
-#define SPAWN_ADJUST_Y(y, h) (CONVERT_TILE_TO_GLOBAL(y) + (CONVERT_PIXEL_TO_GLOBAL(16-(h))))\r
-\r
-#define ARRAYLENGTH(x) (sizeof(x)/sizeof(*(x)))\r
-\r
-#define CA_UnmarkGrChunk(num) (grneeded[num] &= ~ca_levelbit)\r
-\r
-#define SetPalette(pal) {_ES=FP_SEG(pal); _DX=FP_OFF(pal); _AX=0x1002; geninterrupt(0x10);}\r
-#define SetPaletteEx(pal) {(pal)[16] = bordercolor; SetPalette(pal);}\r
-\r
-//HACK IMPORTS:\r
-void RFL_InitAnimList(void);\r
-void CA_FreeGraphics(void);\r
-void CA_SetGrPurge(void);\r
-\r
-/*\r
-Note:\r
-\r
-The ID software memory manager doesn't care about the different purge levels.\r
-Using PURGE_FIST is identical to using PURGE_LAST.\r
-*/\r
-#define PURGE_FIRST 3\r
-#define PURGE_LAST 1\r
-\r
-#define PLATFORMBLOCK 31\r
-#define DIRARROWSTART 91\r
-#define DIRARROWEND (DIRARROWSTART+arrow_None)\r
-\r
-/*\r
-=============================================================================\r
-\r
- GLOBAL TYPES\r
-\r
-=============================================================================\r
-*/\r
-\r
-//SDL-style integer types - just to make future SDL ports easier\r
-typedef unsigned int Uint16;\r
-typedef signed int Sint16;\r
-typedef unsigned char Uint8;\r
-typedef signed char Sint8;\r
-typedef unsigned long Uint32;\r
-typedef signed long Sint32;\r
-//Note: only the game code (CK_*.C, K?_*.C) uses these!\r
-\r
-//some compile-time checks to make sure the ints have the correct size\r
-#if (sizeof(Uint16) != 2)\r
-#error 'Uint16' has wrong size\r
-#elif (sizeof(Sint16) != 2)\r
-#error 'Sint16' has wrong size\r
-#elif (sizeof(Uint8) != 1)\r
-#error 'Uint8' has wrong size\r
-#elif (sizeof(Sint8) != 1)\r
-#error 'Sint8' has wrong size\r
-#elif (sizeof(Uint32) != 4)\r
-#error 'Uint32' has wrong size\r
-#elif (sizeof(Sint32) != 4)\r
-#error 'Sint32' has wrong size\r
-#endif\r
-\r
-typedef enum {\r
- arrow_North, // 0\r
- arrow_East, // 1\r
- arrow_South, // 2\r
- arrow_West, // 3\r
- arrow_NorthEast, // 4\r
- arrow_SouthEast, // 5\r
- arrow_SouthWest, // 6\r
- arrow_NorthWest, // 7\r
- arrow_None // 8\r
-} arrowdirtype;\r
-\r
-typedef enum {\r
- ex_stillplaying, // 0\r
- ex_died, // 1\r
- ex_completed, // 2\r
- ex_rescued, // 3, only in Keen 4\r
- ex_warped, // 4\r
- ex_resetgame, // 5\r
- ex_loadedgame, // 6\r
- ex_foot, // 7, only in Keen 4\r
- ex_abortgame, // 8\r
- ex_sandwich, // 9, only in Keen 6\r
- ex_hook, // 10, only in Keen 6\r
- ex_card, // 11, only in Keen 6\r
- ex_molly, // 12, only in Keen 6\r
- ex_portout, // 13, only in Keen 5\r
- ex_fusebroke, // 14, only in Keen 5\r
- ex_qedbroke, // 15, only in Keen 5\r
- NUMEXITTYPES\r
-} exittype;\r
-\r
-typedef enum\r
-{\r
- INTILE_NOTHING, // 0\r
- INTILE_POLE, // 1\r
- INTILE_DOOR, // 2\r
- INTILE_DEADLY, // 3\r
- INTILE_DROP, // 4\r
- INTILE_SWITCH0, // 5\r
- INTILE_SWITCH1, // 6\r
- INTILE_GEMSOCKET0, // 7\r
- INTILE_GEMSOCKET1, // 8\r
- INTILE_GEMSOCKET2, // 9\r
- INTILE_GEMSOCKET3, // 10\r
- INTILE_SHORESOUTH, // 11\r
- INTILE_SHOREWEST, // 12\r
- INTILE_SHORENORTH, // 13\r
- INTILE_SHOREEAST, // 14\r
- INTILE_BRIDGESWITCH, // 15\r
- INTILE_MOON, // 16\r
- INTILE_DIRARROW, // 17 (not used in the code, but assigned to tiles in Keen 5 & 6)\r
- INTILE_BRIDGE, // 18\r
- INTILE_FORCEFIELD, // 19\r
- INTILE_TELEPORT, // 20\r
- INTILE_BONUS100, // 21\r
- INTILE_BONUS200, // 22\r
- INTILE_BONUS500, // 23\r
- INTILE_BONUS1000, // 24\r
- INTILE_BONUS2000, // 25\r
- INTILE_BONUS5000, // 26\r
- INTILE_EXTRALIFE, // 27\r
- INTILE_AMMO, // 28\r
- INTILE_29, // 29 (never used)\r
- INTILE_FORCEFIELDEND, // 30\r
- INTILE_AMPTONCOMPUTER, // 31\r
- INTILE_KEYCARDDOOR, // 32\r
- INTILE_ELEVATORLEFT, // 33\r
- INTILE_ELEVATORRIGHT, // 34\r
-\r
- INTILE_FOREGROUND = 0x80\r
-} intiletype;\r
-\r
-#define INTILE_TYPEMASK (INTILE_FOREGROUND-1)\r
-\r
-typedef enum\r
-{\r
- nothing, // 0\r
- inertobj, // 1\r
- keenobj, // 2\r
- stunshotobj, // 3\r
-#if defined KEEN4\r
- bonusobj, // 4\r
- slugobj, // 5\r
- oracleobj, // 6\r
- classtype_7, // 7, never used\r
- eggobj, // 8\r
- madmushroomobj, // 9\r
- arachnutobj, // 10\r
- skypestobj, // 11\r
- wormouthobj, // 12\r
- thundercloudobj, // 13\r
- berkeloidobj, // 14\r
- bounderobj, // 15\r
- inchwormobj, // 16\r
- footobj, // 17\r
- lickobj, // 18\r
- mimrockobj, // 19\r
- platformobj, // 20\r
- dopefishobj, // 21\r
- schoolfishobj, // 22\r
- pixieobj, // 23\r
- lindseyobj, // 24\r
- lightningobj, // 25\r
- treasureeaterobj,// 26\r
- eggbirdobj, // 27\r
- classtype_28, // 28, never used\r
- classtype_29, // 29, never used\r
- scubaobj, // 30\r
- mshotobj, // 31\r
- mineobj, // 32\r
- stunnedobj, // 33\r
- flagobj, // 34\r
-#elif defined KEEN5\r
- mshotobj, // 4\r
- bonusobj, // 5\r
- platformobj, // 6\r
- stunnedobj, // 7\r
- flagobj, // 8\r
- sparkyobj, // 9\r
- mineobj, // 10\r
- slicestarobj, // 11\r
- roboredobj, // 12\r
- spirogripobj, // 13\r
- amptonobj, // 14\r
- cannonobj, // 15\r
- volteobj, // 16\r
- shelleyobj, // 17, never used\r
- spindredobj, // 18\r
- shikadimasterobj,// 19\r
- shikadiobj, // 20\r
- petobj, // 21\r
- spherefulobj, // 22\r
- scottieobj, // 23\r
- teleporterobj, // 24\r
- qedobj, // 25\r
-#elif defined KEEN6\r
- mshotobj, // 4\r
- bonusobj, // 5\r
- platformobj, // 6\r
- bloogobj, // 7\r
- bloogletobj, // 8\r
- classtype_9, // 9, never used\r
- fleexobj, // 10\r
- classtype_11, // 11, never used\r
- mollyobj, // 12\r
- babobbaobj, // 13\r
- bobbaobj, // 14\r
- classtype_15, // 15\r
- nospikeobj, // 16\r
- gikobj, // 17\r
- cannonobj, // 18\r
- orbatrixobj, // 19\r
- bipobj, // 20\r
- flectobj, // 21\r
- blorbobj, // 22\r
- ceilickobj, // 23\r
- blooguardobj, // 24\r
- stunnedobj, // 25\r
- bipshipobj, // 26\r
- sandwichobj, // 27\r
- hookobj, // 28\r
- passcardobj, // 29\r
- grabbiterobj, // 30\r
- rocketobj, // 31\r
- grapplespotobj, // 32\r
- satelliteobj, // 33\r
- satellitestopobj,// 34\r
- flagobj, // 35\r
-#endif\r
- NUMCLASSTYPES\r
-} classtype;\r
-\r
-typedef struct statestruct\r
-{\r
- Sint16 leftshapenum, rightshapenum;\r
- enum {step,slide,think,stepthink,slidethink} progress;\r
- boolean skippable;\r
- boolean pushtofloor;\r
- Sint16 tictime;\r
- Sint16 xmove;\r
- Sint16 ymove;\r
- void (*think) (struct objstruct*);\r
- void (*contact) (struct objstruct*, struct objstruct*);\r
- void (*react) (struct objstruct*);\r
- struct statestruct *nextstate;\r
-} statetype;\r
-\r
-typedef struct objstruct\r
-{\r
- classtype obclass;\r
- enum {ac_no, ac_yes, ac_allways, ac_removable} active;\r
- boolean needtoreact;\r
- enum {cl_noclip, cl_midclip, cl_fullclip} needtoclip;\r
- Uint16 nothink;\r
- Uint16 x, y;\r
- Sint16 xdir, ydir;\r
- Sint16 xmove, ymove;\r
- Sint16 xspeed, yspeed;\r
- Sint16 ticcount;\r
- statetype *state;\r
- Uint16 shapenum;\r
- Uint16 priority;\r
- Uint16 left, top, right, bottom, midx;\r
- Uint16 tileleft, tiletop, tileright, tilebottom, tilemidx;\r
- Sint16 hitnorth, hiteast, hitsouth, hitwest;\r
- Sint16 temp1, temp2, temp3, temp4;\r
- void *sprite;\r
- struct objstruct *next, *prev;\r
-} objtype;\r
-\r
-typedef struct\r
-{\r
- Uint16 worldx, worldy;\r
- boolean leveldone[GAMELEVELS];\r
- Sint32 score, nextextra;\r
- Sint16 ammo, drops;\r
-#if defined KEEN4\r
- Sint16 wetsuit;\r
- Sint16 rescued;\r
-#elif defined KEEN5\r
- boolean keycard;\r
- Sint16 destroyed; // never used\r
- Sint16 numfuses;\r
-#elif defined KEEN6\r
- Sint16 sandwichstate, hookstate, passcardstate, rocketstate;\r
-#endif\r
- Sint16 keys[4];\r
- Sint16 mapon;\r
- Sint16 lives;\r
- Sint16 difficulty;\r
- objtype *riding;\r
-} gametype;\r
-\r
-/*\r
-=============================================================================\r
-\r
- CK_MAIN DEFINITIONS\r
-\r
-=============================================================================\r
-*/\r
-\r
-extern char str[80], str2[20];\r
-extern boolean storedemo;\r
-\r
-void SizeText(char *text, Uint16 *width, Uint16 *height);\r
-\r
-/*\r
-=============================================================================\r
-\r
- CK_DEMO DEFINITIONS\r
-\r
-=============================================================================\r
-*/\r
-\r
-extern boolean scorescreenkludge;\r
-\r
-void CheckLastScan(void);\r
-#if GRMODE == EGAGR\r
-void Terminator(void);\r
-void StarWars(void);\r
-#endif\r
-void ShowTitle(void);\r
-#if GRMODE == CGAGR\r
-void ShowCredits(void);\r
-#endif\r
-void RunDemo(Sint16 num);\r
-void DrawHighScores(void);\r
-void CheckHighScore(Sint32 score, Sint16 completed);\r
-void ShowHighScores(void);\r
-\r
-/*\r
-=============================================================================\r
-\r
- CK_GAME DEFINITIONS\r
-\r
-=============================================================================\r
-*/\r
-\r
-void FreeGraphics(void);\r
-void NewGame(void);\r
-boolean SaveTheGame(Sint16 handle);\r
-boolean LoadTheGame(Sint16 handle);\r
-void ResetGame(void);\r
-void SetupGameLevel(boolean loadnow);\r
-void DialogDraw(char *title, Uint16 numcache);\r
-void DialogUpdate(void);\r
-void DialogFinish(void);\r
-void StartDemoRecord(void);\r
-void EndDemoRecord(void);\r
-void GameLoop(void);\r
-void HandleDeath(void);\r
-\r
-/*\r
-=============================================================================\r
-\r
- CK_PLAY DEFINITIONS\r
-\r
-=============================================================================\r
-*/\r
-\r
-extern boolean singlestep, jumpcheat, godmode, keenkilled;\r
-extern exittype playstate;\r
-extern gametype gamestate;\r
-extern objtype *new, *check, *player, *scoreobj;\r
-extern Uint16 originxtilemax, originytilemax;\r
-extern ControlInfo c;\r
-extern boolean button2, button3; // never used\r
-extern objtype dummyobj;\r
-extern Sint16 invincible;\r
-extern boolean oldshooting, showscorebox, joypad;\r
-extern Sint16 groundslam;\r
-extern boolean debugok;\r
-extern boolean jumpbutton, jumpheld, pogobutton, pogoheld, firebutton, fireheld, upheld;\r
-\r
-\r
-void CheckKeys(void);\r
-void StatusWindow(void);\r
-void CenterActor(objtype *ob);\r
-void WorldScrollScreen(objtype *ob);\r
-void ScrollScreen(objtype *ob);\r
-void InitObjArray(void);\r
-Sint16 GetNewObj(boolean usedummy);\r
-void RemoveObj(objtype *ob);\r
-void GivePoints(Uint16 points);\r
-void StopMusic(void);\r
-void StartMusic(Uint16 num);\r
-void PlayLoop(void);\r
-\r
-/*\r
-=============================================================================\r
-\r
- CK_TEXT DEFINITIONS\r
-\r
-=============================================================================\r
-*/\r
-\r
-void HelpScreens(void);\r
-void FinaleLayout(void);\r
-\r
-/*\r
-=============================================================================\r
-\r
- CK_STATE DEFINITIONS\r
-\r
-=============================================================================\r
-*/\r
-\r
-extern Sint16 wallclip[8][16];\r
-\r
-extern Sint16 xtry;\r
-extern Sint16 ytry;\r
-extern boolean playerkludgeclipcancel;\r
-\r
-void MoveObjVert(objtype *ob, Sint16 ymove);\r
-void MoveObjHoriz(objtype *ob, Sint16 xmove);\r
-void PlayerBottomKludge(objtype *ob);\r
-void PlayerTopKludge(objtype *ob);\r
-void ClipToEnds(objtype *ob);\r
-void ClipToSides(objtype *ob);\r
-boolean CheckPosition(objtype *ob);\r
-boolean StatePositionOk(objtype *ob, statetype *state);\r
-\r
-#ifdef KEEN5\r
-void CalcBounds(objtype *ob);\r
-#endif\r
-\r
-void ClipToWalls(objtype *ob);\r
-void FullClipToWalls(objtype *ob);\r
-void PushObj(objtype *ob);\r
-void ClipToSpriteSide(objtype *push, objtype *solid);\r
-void ClipToSpriteTop(objtype *push, objtype *solid);\r
-void ClipToSprite(objtype *push, objtype *solid, boolean squish);\r
-Sint16 DoActor(objtype *ob, Sint16 numtics);\r
-void StateMachine(objtype *ob);\r
-void NewState(objtype *ob, statetype *state);\r
-void ChangeState(objtype *ob, statetype *state);\r
-boolean OnScreen(objtype *ob);\r
-void DoGravity(objtype *ob);\r
-void DoWeakGravity(objtype *ob);\r
-void DoTinyGravity(objtype *ob);\r
-void AccelerateX(objtype *ob, Sint16 dir, Sint16 maxspeed);\r
-void AccelerateXv(objtype *ob, Sint16 dir, Sint16 maxspeed);\r
-void AccelerateY(objtype *ob, Sint16 dir, Sint16 maxspeed);\r
-void FrictionX(objtype *ob);\r
-void FrictionY(objtype *ob);\r
-void StunObj(objtype *ob, objtype *shot, statetype *stunstate);\r
-void T_Projectile(objtype *ob);\r
-void T_WeakProjectile(objtype *ob);\r
-void ProjectileThink1(objtype *ob);\r
-void T_Velocity(objtype *ob);\r
-void SetReactThink(objtype *ob);\r
-void T_Stunned(objtype *ob);\r
-void C_Lethal(objtype *ob, objtype *hit);\r
-void R_Draw(objtype *ob);\r
-void R_Walk(objtype *ob);\r
-void R_WalkNormal(objtype *ob);\r
-void BadState(void);\r
-void R_Stunned(objtype *ob);\r
-\r
-extern statetype sc_deadstate;\r
-extern statetype sc_badstate;\r
-\r
-/*\r
-=============================================================================\r
-\r
- CK_KEEN DEFINITIONS\r
-\r
-=============================================================================\r
-*/\r
-\r
-extern Uint16 bounceangle[8][8];\r
-#ifndef KEEN4\r
-extern arrowdirtype arrowflip[];\r
-#endif\r
-\r
-extern statetype s_keenstand;\r
-extern statetype s_keenpauselook;\r
-extern statetype s_keenwait1;\r
-extern statetype s_keenwait2;\r
-extern statetype s_keenwait3;\r
-extern statetype s_keenwait4;\r
-extern statetype s_keenwait5;\r
-extern statetype s_keenwait6;\r
-extern statetype s_keenmoon1;\r
-extern statetype s_keenmoon2;\r
-extern statetype s_keenmoon3;\r
-extern statetype s_keenread;\r
-extern statetype s_keenread2;\r
-extern statetype s_keenread3;\r
-extern statetype s_keenread4;\r
-extern statetype s_keenread5;\r
-extern statetype s_keenread6;\r
-extern statetype s_keenread7;\r
-extern statetype s_keenstopread;\r
-extern statetype s_keenstopread2;\r
-extern statetype s_keenstopread3;\r
-extern statetype s_keenlookup;\r
-extern statetype s_keenlookup2;\r
-extern statetype s_keenlookdown;\r
-extern statetype s_keenlookdown2;\r
-extern statetype s_keenlookdown3;\r
-extern statetype s_keenlookdown4;\r
-extern statetype s_keendrop;\r
-extern statetype s_keendead;\r
-extern statetype s_keendie1;\r
-extern statetype s_keendie2;\r
-#ifdef KEEN4\r
-extern statetype s_keensuitdie1;\r
-extern statetype s_keensuitdie2;\r
-#endif\r
-extern statetype s_keenshoot1;\r
-extern statetype s_keenshoot2;\r
-extern statetype s_keenshootup1;\r
-extern statetype s_keenshootup2;\r
-extern statetype s_keenswitch;\r
-extern statetype s_keenswitch2;\r
-extern statetype s_keenkey;\r
-extern statetype s_keenlineup;\r
-extern statetype s_keenenter1;\r
-extern statetype s_keenenter2;\r
-extern statetype s_keenenter3;\r
-extern statetype s_keenenter4;\r
-extern statetype s_keenenter5;\r
-extern statetype s_keenpole;\r
-extern statetype s_keenclimb1;\r
-extern statetype s_keenclimb2;\r
-extern statetype s_keenclimb3;\r
-extern statetype s_keenslide1;\r
-extern statetype s_keenslide2;\r
-extern statetype s_keenslide3;\r
-extern statetype s_keenslide4;\r
-extern statetype s_keenpoleshoot1;\r
-extern statetype s_keenpoleshoot2;\r
-extern statetype s_keenpoleshootup1;\r
-extern statetype s_keenpoleshootup2;\r
-extern statetype s_keenpoleshootdown1;\r
-extern statetype s_keenpoleshootdown2;\r
-extern statetype s_keenwalk1;\r
-extern statetype s_keenwalk2;\r
-extern statetype s_keenwalk3;\r
-extern statetype s_keenwalk4;\r
-extern statetype s_keenpogodown;\r
-extern statetype s_keenpogo;\r
-extern statetype s_keenpogo2;\r
-extern statetype s_keenjump1;\r
-extern statetype s_keenjump2;\r
-extern statetype s_keenjump3;\r
-extern statetype s_keenjump4;\r
-extern statetype s_keenairshoot1;\r
-extern statetype s_keenairshoot2;\r
-extern statetype s_keenairshoot3;\r
-extern statetype s_keenairshootup1;\r
-extern statetype s_keenairshootup2;\r
-extern statetype s_keenairshootup3;\r
-extern statetype s_keenairshootdown1;\r
-extern statetype s_keenairshootdown2;\r
-extern statetype s_keenairshootdown3;\r
-extern statetype s_keenholdon;\r
-extern statetype s_keenholdon2;\r
-extern statetype s_keenclimbup;\r
-extern statetype s_keenclimbup2;\r
-extern statetype s_keenclimbup3;\r
-extern statetype s_keenclimbup4;\r
-extern statetype s_keenclimbup5;\r
-\r
-extern Sint16 slopespeed[8];\r
-extern Sint16 polexspeed[3];\r
-\r
-extern Sint16 shotsinclip[4];\r
-extern Sint16 bonussound[];\r
-extern Sint16 bonuspoints[];\r
-extern Sint16 bonussprite[];\r
-\r
-extern Uint16 zeromap;\r
-\r
-extern Sint16 singlegravity;\r
-extern Sint16 jumptime;\r
-extern Sint32 leavepoletime;\r
-extern Sint16 moonok;\r
-\r
-void SpawnKeen(Sint16 x, Sint16 y, Sint16 dir);\r
-boolean CheckGrabPole(objtype *ob);\r
-boolean CheckEnterHouse(objtype *ob);\r
-void WalkSound1(objtype *ob);\r
-void WalkSound2(objtype *ob);\r
-void KeenStandThink(objtype *ob);\r
-void KeenPauseThink(objtype *ob);\r
-void KeenReadThink(objtype *ob);\r
-void KeenLookUpThink(objtype *ob);\r
-void KeenLookDownThink(objtype *ob);\r
-void KeenWalkThink(objtype *ob);\r
-void T_LineUp(objtype *ob);\r
-void KeenEnterThink(objtype *ob);\r
-void KeenSwitchThink(objtype *ob);\r
-void KeenKeyThink(objtype *ob);\r
-void KeenAirThink(objtype *ob);\r
-void KeenBounceThink(objtype *ob);\r
-void KeenPogoThink(objtype *ob);\r
-void PoleActions(objtype *ob);\r
-void KeenPoleThink(objtype *ob);\r
-void KeenClimbThink(objtype *ob);\r
-void KeenDropThink(objtype *ob);\r
-void KeenDropDownThink(objtype *ob);\r
-void KeenHoldThink(objtype *ob);\r
-void KeenShootThink(objtype *ob);\r
-void T_PullUp1(objtype *ob);\r
-void T_PullUp2(objtype *ob);\r
-void T_PullUp3(objtype *ob);\r
-void T_PulledUp(objtype *ob);\r
-void KeenDieThink(objtype *ob);\r
-void KillKeen(void);\r
-void KeenContact(objtype *ob, objtype *hit);\r
-void KeenPosContact(objtype *ob, objtype *hit);\r
-void HandleRiding(objtype *ob);\r
-void TileBonus(Uint16 x, Uint16 y, Uint16 bonus);\r
-void GiveDrop(Uint16 x, Uint16 y);\r
-void CheckInTiles(objtype *ob);\r
-void KeenSimpleReact(objtype *ob);\r
-void KeenStandReact(objtype *ob);\r
-void KeenWalkReact(objtype *ob);\r
-void KeenAirReact(objtype *ob);\r
-void KeenPogoReact(objtype *ob);\r
-void KeenPoleReact(objtype *ob);\r
-\r
-\r
-/*\r
-=============================================================================\r
-\r
- CK_KEEN2 DEFINITIONS\r
-\r
-=============================================================================\r
-*/\r
-\r
-extern statetype s_score;\r
-extern statetype s_demo;\r
-void SpawnScore(void);\r
-void UpdateScore(objtype *ob);\r
-void DrawDemoPlaque(objtype *ob);\r
-\r
-extern statetype s_worldkeen;\r
-extern statetype s_worldkeenwave1;\r
-extern statetype s_worldkeenwave2;\r
-extern statetype s_worldkeenwave3;\r
-extern statetype s_worldkeenwave4;\r
-extern statetype s_worldkeenwave5;\r
-extern statetype s_worldkeenwalk;\r
-void SpawnWorldKeen(Sint16 x, Sint16 y);\r
-#ifdef KEEN5\r
-void SpawnWorldKeenPort(Uint16 tileX, Uint16 tileY);\r
-#endif\r
-void CheckEnterLevel(objtype *ob);\r
-void T_KeenWorld(objtype *ob);\r
-void T_KeenWorldWalk(objtype *ob);\r
-void CheckWorldInTiles(objtype *ob);\r
-\r
-#ifdef KEEN4\r
-extern statetype s_keenonfoot1;\r
-extern statetype s_keenonfoot2;\r
-extern statetype s_worldswim;\r
-void T_FootFly(objtype *ob);\r
-void T_KeenWorldSwim(objtype *ob);\r
-#endif\r
-\r
-#ifdef KEEN5\r
-extern statetype s_worldelevate;\r
-void T_Elevate(objtype *ob);\r
-#endif\r
-\r
-extern statetype s_flagwave1;\r
-extern statetype s_flagwave2;\r
-extern statetype s_flagwave3;\r
-extern statetype s_flagwave4;\r
-void SpawnFlag(Sint16 x, Sint16 y);\r
-\r
-#ifndef KEEN5\r
-extern statetype s_throwflag0;\r
-extern statetype s_throwflag1;\r
-extern statetype s_throwflag2;\r
-extern statetype s_throwflag3;\r
-extern statetype s_throwflag4;\r
-extern statetype s_throwflag5;\r
-extern statetype s_throwflag6;\r
-void SpawnThrowFlag(Sint16 x, Sint16 y);\r
-void TossThink(objtype *ob);\r
-void PathThink(objtype *ob);\r
-void FlagAlign(objtype *ob);\r
-#endif\r
-\r
-extern statetype s_stunray1;\r
-extern statetype s_stunray2;\r
-extern statetype s_stunray3;\r
-extern statetype s_stunray4;\r
-extern statetype s_stunhit;\r
-extern statetype s_stunhit2;\r
-void SpawnShot(Uint16 x, Uint16 y, Direction dir);\r
-void ExplodeShot(objtype *ob);\r
-void T_Shot(objtype *ob);\r
-void R_Shot(objtype *ob);\r
-\r
-extern statetype s_door1;\r
-extern statetype s_door2;\r
-extern statetype s_door3;\r
-void DoorOpen(objtype *ob);\r
-\r
-#ifdef KEEN5\r
-extern statetype s_carddoor;\r
-void CardDoorOpen(objtype *ob);\r
-#endif\r
-\r
-/*\r
-=============================================================================\r
-\r
- OTHER DEFINITIONS\r
-\r
-=============================================================================\r
-*/\r
-\r
-#if defined KEEN4\r
-#include "K4_DEF.H"\r
-#elif defined KEEN5\r
-#include "K5_DEF.H"\r
-#elif defined KEEN6\r
-#include "K6_DEF.H"\r
-#endif\r
-\r
-#endif
\ No newline at end of file