25 #define STARS_MONKEYSTONE_7 0xfe257d // magic value in the config file for the unlocking of the Monkeystone secret #7 26 #define STARS_MONKEYSTONE_7_FAKE 0x11887e // fake value that means it hasn't been unlocked 27 #define STARS_MONKEYSTONE_14 0x3341fe // <same> for the Monkeystone #14 28 #define STARS_MONKEYSTONE_14_FAKE 0x1cefd0 // fake value that means it hasn't been unlocked 29 #define STARS_MONKEYSTONE_21 0x77ace3 // <same> for the Monkeystone #21 30 #define STARS_MONKEYSTONE_21_FAKE 0x3548fe // fake value that means it hasn't been unlocked 50 kDelay5Seconds = 5 * kGameFPS,
53 kPushMoveSpeed = (kPlayerMoveSpeed >> 1),
54 kPlayerTouchPWait = 16,
268 STATE_ATK_CLUB_RIGHT,
272 STATE_ATK_STUN_RIGHT,
276 STATE_ATK_SLUG_RIGHT,
296 STATE_MEER_DISAPPEAR,
301 STATE_ICEP_THROWDOWN,
302 STATE_ICEP_THROWRIGHT,
303 STATE_ICEP_THROWLEFT,
304 STATE_ICEP_DISAPPEAR,
373 AI_BARREL_EXPLOSION_END,
374 CALLBACK_DOOR_OPEN_CLOSE,
375 CALLBACK_AUTODOOR_OPEN_CLOSE,
386 typedef void(*FuncPtr)(
AIEntity *, int, int);
401 char luaFuncInit[32];
402 char luaFuncAction[32];
405 int16 value1, value2;
409 int16 drawXOff, drawYOff;
415 int16 touchpX, touchpY, touchpTile, touchpWait;
419 char printedName[32];
429 Tile *blinkGfx[kMaxAnimFrames];
432 uint16 special1Frames;
435 Tile *special1Gfx[kMaxAnimFrames];
437 int16 standdownFrames;
438 Tile *standdownGfx[kMaxAnimFrames];
441 Tile *standupGfx[kMaxAnimFrames];
443 int16 standleftFrames;
444 Tile *standleftGfx[kMaxAnimFrames];
446 int16 standrightFrames;
447 Tile *standrightGfx[kMaxAnimFrames];
450 Tile *moveupGfx[kMaxAnimFrames];
452 int16 movedownFrames;
453 Tile *movedownGfx[kMaxAnimFrames];
455 int16 moveleftFrames;
456 Tile *moveleftGfx[kMaxAnimFrames];
458 int16 moverightFrames;
459 Tile *moverightGfx[kMaxAnimFrames];
463 luaFuncAction[0] = 0;
474 aiInit = aiInit2 =
nullptr;
484 drawXOff = drawYOff = 0;
490 touchpX = touchpY = touchpTile = touchpWait = 0;
499 for (
int i = 0; i < kMaxAnimFrames; i++) {
500 blinkGfx[i] =
nullptr;
504 for (
int i = 0; i < kMaxAnimFrames; i++) {
505 special1Gfx[i] =
nullptr;
509 for (
int i = 0; i < kMaxAnimFrames; i++) {
510 standdownGfx[i] =
nullptr;
514 for (
int i = 0; i < kMaxAnimFrames; i++) {
515 standupGfx[i] =
nullptr;
519 for (
int i = 0; i < kMaxAnimFrames; i++) {
520 standleftGfx[i] =
nullptr;
523 standrightFrames = 0;
524 for (
int i = 0; i < kMaxAnimFrames; i++) {
525 standrightGfx[i] =
nullptr;
529 for (
int i = 0; i < kMaxAnimFrames; i++) {
530 movedownGfx[i] =
nullptr;
534 for (
int i = 0; i < kMaxAnimFrames; i++) {
535 moveupGfx[i] =
nullptr;
539 for (
int i = 0; i < kMaxAnimFrames; i++) {
540 moveleftGfx[i] =
nullptr;
544 for (
int i = 0; i < kMaxAnimFrames; i++) {
545 moverightGfx[i] =
nullptr;
578 AIEntLevel2() : x(0), y(0), draw(
nullptr), e(
nullptr), aiDraw(
nullptr), stunnedWait(0) {}
589 Tile *gfxList[kMaxAnimTFrames];
591 AnimTarget() : x(0), y(0), start(0), end(0), vel(0), animCycle(0), animFrame(0), killAuto(
false), inMap(
false) {
592 for (
int i = 0; i < kMaxAnimTFrames; i++) {
593 gfxList[i] =
nullptr;
613 char itemTextName[32];
614 char itemGfxName[32];
617 char destTextName[32];
618 char destGfxName[32];
623 DlvEnt() : itemGfx(
nullptr), destGfx(
nullptr) {
652 uint16 value1, value2;
653 char luaFuncInit[32];
654 char luaFuncAction[32];
666 for (uint i = 0; i <
ARRAYSIZE(luaFuncInit); i++) luaFuncInit[i] = 0;
667 for (uint i = 0; i <
ARRAYSIZE(luaFuncAction); i++) luaFuncAction[i] = 0;
668 for (uint i = 0; i <
ARRAYSIZE(luaFuncUse); i++) luaFuncUse[i] = 0;
675 char luaFuncInit[32];
688 for (uint i = 0; i <
ARRAYSIZE(luaFuncInit); i++) luaFuncInit[i] = 0;
689 for (uint i = 0; i <
ARRAYSIZE(luaFuncUse); i++) luaFuncUse[i] = 0;
690 for (uint i = 0; i <
ARRAYSIZE(entityName); i++) entityName[i] = 0;
699 uint16 level1, level2;
700 uint16 usable1, usable2;
702 char luaFuncUse1[32];
703 char luaFuncUse2[32];
722 for (uint i = 0; i <
ARRAYSIZE(luaFuncUse1); i++) luaFuncUse1[i] = 0;
723 for (uint i = 0; i <
ARRAYSIZE(luaFuncUse2); i++) luaFuncUse2[i] = 0;
728 uint16 x, y, level, usable, anim;
731 SingleTele() : x(0), y(0), level(0), usable(0), anim(0), dir(DIR_NONE) {}
737 char luaFuncInit[32];
749 for (uint i = 0; i <
ARRAYSIZE(luaFuncInit); i++) luaFuncInit[i] = 0;
750 for (uint i = 0; i <
ARRAYSIZE(luaFuncUse); i++) luaFuncUse[i] = 0;
751 for (uint i = 0; i <
ARRAYSIZE(entityName); i++) entityName[i] = 0;
760 ArrowPath() : type(0), dir(DIR_NONE), tileX(0), tileY(0) {}
771 uint16 value1, value2;
772 char luaFuncInit[32];
775 Trigger() : x(0), y(0), value1(0), value2(0) {
784 void(*
function)(
int x,
int y);
808 Fairystone() : srcX(0), srcY(0), destX(0), destY(0) {}
844 CineCommand() : cmdType(C_NO_COMMAND), x(0.0), y(0.0), x2(0.0), y2(0.0), xv(0.0), yv(0.0),
845 start(0), end(0), delay(0), speed(0), title(
nullptr), string(
nullptr), id(
nullptr), e(
nullptr), pic(
nullptr) {}
855 CineBlit() : x(0), y(0), pic(
nullptr), name(
nullptr), id(
nullptr), masked(
false) {}
858 #define onEvenTile(x, y) ( !(x & 31) && !(y & 31) ) 859 #define hitPlayer(x, y) ( e->onScreen && g_hdb->_ai->checkPlayerCollision( x, y, 4 ) && !g_hdb->_ai->playerDead() ) 860 #define cycleFrames( e, max ) \ 862 if ( e->animDelay-- < 1 ) \ 864 e->animDelay = e->animCycle; \ 866 if ( e->animFrame >= max ) \ 870 #define spawnBlocking(x, y, level) g_hdb->_ai->spawn(AI_NONE, DIR_NONE, x, y, nullptr, nullptr, nullptr, DIR_NONE, level, 0, 0, 0) 878 void clearPersistent();
879 void restartSystem();
880 const char *funcLookUp(FuncPtr
function);
881 FuncPtr funcLookUp(
const char *
function);
887 AIEntity *spawn(AIType type, AIDir dir,
int x,
int y,
const char *funcInit,
const char *funcAction,
const char *funcUse, AIDir dir2,
int level,
int value1,
int value2,
int callInit);
888 bool cacheEntGfx(AIEntity *e,
bool initFlag);
889 void stopEntity(AIEntity *e);
890 AIEntity *locateEntity(
const char *luaName);
891 AIEntity *findEntity(
int x,
int y);
892 AIEntity *findEntityIgnore(
int x,
int y, AIEntity *ignore);
893 AIEntity *findEntityType(AIType type,
int x,
int y);
894 void getEntityXY(
const char *entName,
int *x,
int *y);
895 bool useLuaEntity(
const char *initName);
896 void removeLuaEntity(
const char *initName);
897 void animLuaEntity(
const char *initName, AIState st);
898 void setLuaAnimFrame(
const char *initName, AIState st,
int frame);
899 int checkForTouchplate(
int x,
int y);
900 void removeEntity(AIEntity *e);
901 void setEntityGoal(AIEntity *e,
int x,
int y);
903 void killPlayer(Death method);
904 void stunEnemy(AIEntity *e,
int time);
905 int metalOrFleshSND(AIEntity *e);
906 int tileDistance(AIEntity *e1, AIEntity *e2) {
907 return abs(e1->tileX - e2->tileX) + abs(e1->tileY - e2->tileY);
910 void animateEntity(AIEntity *e);
911 void animEntFrames(AIEntity *e);
912 void drawEnts(
int x,
int y,
int w,
int h);
913 void drawLevel2Ents();
915 void entityFace(
const char *luaName,
int dir);
919 bool findPath(AIEntity *e);
920 AIEntity *legalMove(
int tileX,
int tileY,
int level,
int *result);
921 AIEntity *legalMoveOverWater(
int tileX,
int tileY,
int level,
int *result);
922 AIEntity *legalMoveOverWaterIgnore(
int tileX,
int tileY,
int level,
int *result, AIEntity *ignore);
923 void addAnimateTarget(
int x,
int y,
int start,
int end, AnimSpeed speed,
bool killAuto,
bool inMap,
const char *tileName);
924 void animateTargets();
926 void addBridgeExtend(
int x,
int y,
int bridgeType);
927 void animateBridges();
928 void addToFairystones(
int index,
int tileX,
int tileY,
int sourceOrDest);
929 int checkFairystones(
int tileX,
int tileY);
930 void getFairystonesSrc(
int index,
int *tileX,
int *tileY) {
931 *tileX = _fairystones[index].srcX;
932 *tileY = _fairystones[index].srcY;
935 AIEntity *playerCollision(
int topBorder,
int bottomBorder,
int leftBorder,
int rightBorder);
936 bool checkPlayerTileCollision(
int x,
int y);
937 bool checkPlayerCollision(
int x,
int y,
int border);
938 void clearDiverters();
942 void addToActionList(
int actionIndex,
int x,
int y,
char *funcLuaInit,
char *funcLuaUse);
943 bool checkActionList(AIEntity *e,
int x,
int y,
bool lookAndGrab);
944 void addToHereList(
const char *entName,
int x,
int y);
945 HereT *findHere(
int x,
int y);
946 void addToAutoList(
int x,
int y,
const char *luaFuncInit,
const char *luaFuncUse);
947 void autoDeactivate(
int x,
int y);
948 bool activateAction(AIEntity *e,
int x,
int y,
int targetX,
int targetY);
949 bool checkAutoList(AIEntity *e,
int x,
int y);
950 bool autoActive(
int x,
int y);
951 void addCallback(CallbackType type,
int x,
int y,
int delay);
952 void processCallbackList();
953 void addToLuaList(
int x,
int y,
int value1,
int value2,
char *luaFuncInit,
char *luaFuncAction,
char *luaFuncUse);
954 bool checkLuaList(AIEntity *e,
int x,
int y);
955 bool luaExistAtXY(
int x,
int y);
956 void addToTeleportList(
int teleIndex,
int x,
int y,
int dir,
int level,
int anim,
int usable,
const char *luaFuncUse);
957 bool checkTeleportList(AIEntity *e,
int x,
int y);
958 bool findTeleporterDest(
int tileX,
int tileY,
SingleTele *info);
959 void addToPathList(
int x,
int y,
int type, AIDir dir);
961 void addToTriggerList(
char *luaFuncInit,
char *luaFuncUse,
int x,
int y,
int value1,
int value2,
char *
id);
962 bool checkTriggerList(
char *entName,
int x,
int y);
963 void killTrigger(
const char *
id);
965 void floatEntity(AIEntity *e, AIState state);
966 bool checkFloating(
int x,
int y);
968 bool getTableEnt(AIType type);
969 bool walkThroughEnt(AIType type);
970 void getItemSound(AIType type);
971 void lookAtEntity(AIEntity *e);
975 void movePlayer(uint16 buttons);
977 void setPlayerWeapon(AIType w,
Tile *gfx) {
981 AIType getPlayerWeapon() {
982 return _weaponSelected;
984 Tile *getPlayerWeaponGfx() {
987 Tile *getPlayerWeaponSelGfx() {
988 return _weaponSelGfx;
991 AIEntity *getPlayer() {
993 return &_dummyPlayer;
997 void getPlayerXY(
int *x,
int *y) {
1006 void setPlayerXY(
int x,
int y) {
1009 _player->tileX = x / kTileWidth;
1011 _player->tileY = y / kTileHeight;
1012 _player->xVel = _player->yVel = 0;
1016 void assignPlayer(AIEntity *p) {
1024 bool playerOnIce() {
1025 return _playerOnIce;
1028 bool playerLocked() {
1032 void setPlayerLock(
bool status) {
1033 _playerLock = status;
1036 void setPlayerInvisible(
bool status) {
1037 _playerInvisible = status;
1040 bool playerRunning() {
1041 return _playerRunning;
1044 void togglePlayerRunning() {
1045 _playerRunning = !_playerRunning;
1049 bool cinematicsActive() {
1052 bool cineAbortable() {
1053 return _cineAbortable;
1055 void processCines();
1058 void cineAddToBlitList(
const char *
id,
Picture *pic,
int x,
int y,
bool masked);
1059 Picture *cineFindInBlitList(
const char *name);
1060 void cineRemoveFromBlitList(
const char *name);
1061 void cineAddToFreeList(
Picture *pic);
1063 void cineStart(
bool abortable,
const char *abortFunc);
1064 void cineStop(
const char *funcNext);
1065 void cineStartMap(
const char *mapName);
1066 void cineLockPlayer();
1067 void cineUnlockPlayer();
1068 void cineSetCamera(
int x,
int y);
1069 void cineResetCamera();
1070 void cineMoveCamera(
int x,
int y,
int speed);
1071 void cineWait(
int seconds);
1072 void cineWaitUntilDone();
1073 void cineSetEntity(
const char *entName,
int x,
int y,
int level);
1074 void cineMoveEntity(
const char *entName,
int x,
int y,
int level,
int speed);
1075 void cineSpawnEntity(AIType t, AIDir d,
int x,
int y,
const char *func_init,
const char *func_action,
1076 const char *func_use, AIDir d2,
int level,
int value1,
int value2);
1077 void cineRemoveEntity(
const char *entName);
1078 void cineAnimEntity(
const char *entName, AIState state,
int loop);
1079 void cineSetAnimFrame(
const char *entName, AIState state,
int frame);
1080 void cineEntityFace(
const char *luaName,
double dir);
1081 void cineDialog(
const char *title,
const char *
string,
int seconds);
1082 void cineTextOut(
const char *text,
int x,
int y,
int timer);
1083 void cineCenterTextOut(
const char *text,
int y,
int timer);
1084 void cineDrawPic(
const char *
id,
const char *pic,
int x,
int y);
1085 void cineDrawMaskedPic(
const char *
id,
const char *pic,
int x,
int y);
1086 void cineMovePic(
const char *
id,
const char *pic,
int x1,
int y1,
int x2,
int y2,
int speed);
1087 void cineMoveMaskedPic(
const char *
id,
const char *pic,
int x1,
int y1,
int x2,
int y2,
int speed);
1088 void cineUse(
const char *entName);
1089 void cinePlaySound(
int index);
1090 void cinePlayVoice(
int index,
int actor);
1091 void cineFadeIn(
bool isBlack,
int steps);
1092 void cineFadeOut(
bool isBlack,
int steps);
1093 void cineClearForeground(
int x,
int y);
1094 void cineSetBackground(
int x,
int y,
int index);
1095 void cineSetForeground(
int x,
int y,
int index);
1096 void cineFunction(
const char *func);
1099 void lookAtXY(
int x,
int y);
1100 void addWaypoint(
int px,
int py,
int x,
int y,
int level);
1101 void removeFirstWaypoint();
1102 void clearWaypoints();
1103 bool traceStraightPath(
int x1,
int y1,
int *x2,
int *y2,
int *lvl);
1104 Tile *getStandFrameDir(AIEntity *e);
1105 void drawWayPoints();
1106 int waypointsLeft() {
1107 return _numWaypoints;
1111 bool addToInventory(AIEntity *e);
1112 void purgeInventory();
1113 void clearInventory();
1114 int getInvAmount() {
1115 return _numInventory;
1117 int getGemAmount() {
1120 int getMonkeystoneAmount() {
1121 return _numMonkeystones;
1123 int getGooCupAmount() {
1126 void setGemAmount(
int amt) {
1130 return _numInventory;
1132 AIType getInvItemType(
int which) {
1133 return _inventory[which].ent.type;
1135 Tile *getInvItemGfx(
int which) {
1136 return _inventory[which].ent.standdownGfx[0];
1139 AIEntity *getInvItem(
int which);
1140 int queryInventory(
const char *
string);
1141 bool removeInvItem(
const char *
string,
int amount);
1142 int queryInventoryType(AIType which);
1143 int queryInventoryTypeSlot(AIType which);
1144 bool removeInvItemType(AIType which,
int amount);
1145 bool addItemToInventory(AIType type,
int amount,
const char *funcInit,
const char *funcAction,
const char *funcUse);
1146 void keepInvItem(AIType type);
1147 void printYouGotMsg(
const char *name);
1150 void newDelivery(
const char *itemTextName,
const char *itemGfxName,
const char *destTextName,
const char *destGfxName,
const char *
id);
1151 int getDeliveriesAmount() {
1152 return _numDeliveries;
1154 DlvEnt *getDeliveryItem(
int which) {
1155 return &_deliveries[which];
1157 bool completeDelivery(
const char *
id);
1161 void addGatePuddle(
int amount) {
1162 _gatePuddles += amount;
1164 int getGatePuddles() {
1165 return _gatePuddles;
1173 bool _playerInvisible;
1175 bool _playerEmerging;
1176 bool _playerRunning;
1178 uint16 _pushupFrames;
1179 Tile *_pushupGfx[kMaxAnimFrames];
1181 uint16 _pushdownFrames;
1182 Tile *_pushdownGfx[kMaxAnimFrames];
1184 uint16 _pushleftFrames;
1185 Tile *_pushleftGfx[kMaxAnimFrames];
1187 uint16 _pushrightFrames;
1188 Tile *_pushrightGfx[kMaxAnimFrames];
1192 uint16 _dyingFrames;
1193 Tile *_dyingGfx[kMaxDeathFrames];
1197 uint16 _horrible1Frames;
1198 Tile *_horrible1Gfx[kMaxDeathFrames];
1199 uint16 _horrible2Frames;
1200 Tile *_horrible2Gfx[kMaxDeathFrames];
1201 uint16 _horrible3Frames;
1202 Tile *_horrible3Gfx[kMaxDeathFrames];
1203 uint16 _horrible4Frames;
1204 Tile *_horrible4Gfx[kMaxDeathFrames];
1205 uint16 _plummetFrames;
1206 Tile *_plummetGfx[kMaxDeathFrames];
1208 uint16 _clubUpFrames;
1209 Picture *_clubUpGfx[kMaxAnimFrames];
1210 uint16 _clubDownFrames;
1211 Picture *_clubDownGfx[kMaxAnimFrames];
1212 uint16 _clubLeftFrames;
1213 Picture *_clubLeftGfx[kMaxAnimFrames];
1214 uint16 _clubRightFrames;
1215 Picture *_clubRightGfx[kMaxAnimFrames];
1217 uint16 _stunUpFrames;
1218 Tile *_stunUpGfx[kMaxAnimFrames];
1219 uint16 _stunDownFrames;
1220 Tile *_stunDownGfx[kMaxAnimFrames];
1221 uint16 _stunLeftFrames;
1222 Tile *_stunLeftGfx[kMaxAnimFrames];
1223 uint16 _stunRightFrames;
1224 Tile *_stunRightGfx[kMaxAnimFrames];
1225 Tile *_stunLightningGfx[kMaxAnimFrames];
1226 Tile *_stunnedGfx[kMaxAnimFrames];
1228 uint16 _slugUpFrames;
1229 Tile *_slugUpGfx[kMaxAnimFrames];
1230 uint16 _slugDownFrames;
1231 Tile *_slugDownGfx[kMaxAnimFrames];
1232 uint16 _slugLeftFrames;
1233 Tile *_slugLeftGfx[kMaxAnimFrames];
1234 uint16 _slugRightFrames;
1235 Tile *_slugRightGfx[kMaxAnimFrames];
1237 uint16 _slugAttackFrames;
1238 Picture *_slugAttackGfx[kMaxAnimFrames];
1240 Tile *_weaponSelGfx;
1242 AIType _weaponSelected;
1248 int _numMonkeystones;
1256 int _useHolderEmpty;
1263 int _useHandswitchOn;
1264 int _useHandswitchOff;
1299 int _targetBridgeMidLR;
1300 int _targetBridgeMidUD;
1303 int _templeTouchpOn;
1304 int _templeTouchpOff;
1307 int _kcHolderWhiteOff;
1308 int _kcHolderWhiteOn;
1309 int _kcHolderBlueOff;
1310 int _kcHolderBlueOn;
1311 int _kcHolderRedOff;
1313 int _kcHolderGreenOff;
1314 int _kcHolderGreenOn;
1315 int _kcHolderPurpleOff;
1316 int _kcHolderPurpleOn;
1317 int _kcHolderBlackOff;
1318 int _kcHolderBlackOn;
1323 InvEnt _inventory[kMaxInventory];
1326 DlvEnt _deliveries[kMaxDeliveries];
1329 Waypoint _waypoints[kMaxWaypoints];
1331 Tile *_waypointGfx[4];
1334 LuaT _luaList[kMaxLuaEnts];
1339 TeleInfo _teleporters[kMaxTeleporters];
1340 int _numTeleporters;
1342 AIEntity _dummyPlayer, _dummyLaser;
1343 bool _laserRescan, _laserOnScreen;
1347 Callback _callbacks[kMaxCallbacks];
1351 Bridge _bridges[kMaxBridges];
1361 Picture *_cineFreeList[kMaxCineGfx];
1362 int _numCineFreeList;
1364 CineBlit *_cineBlitList[kMaxCineGfx];
1365 int _numCineBlitList;
1372 Picture *_icepSnowballGfxDown;
1373 Picture *_icepSnowballGfxLeft;
1374 Picture *_icepSnowballGfxRight;
1376 Tile *_tileFroglickMiddleUD;
1377 Tile *_tileFroglickWiggleUD[3];
1378 Tile *_tileFroglickMiddleLR;
1379 Tile *_tileFroglickWiggleLeft[3];
1380 Tile *_tileFroglickWiggleRight[3];
1384 Picture *_gfxDragonBreathe[3];
1386 Tile *_gfxLaserbeamUD[4];
1387 Tile *_gfxLaserbeamUDTop[4];
1388 Tile *_gfxLaserbeamUDBottom[4];
1389 Tile *_gfxLaserbeamLR[4];
1390 Tile *_gfxLaserbeamLRLeft[4];
1391 Tile *_gfxLaserbeamLRRight[4];
1398 bool isClosedDoor(
int x,
int y);
1399 bool isOpenDoor(
int x,
int y);
1402 bool useTarget(
int x,
int y,
int targetX,
int targetY,
int newTile,
int *worked);
1405 bool useSwitch(AIEntity *e,
int x,
int y,
int targetX,
int targetY,
int onTile);
1406 bool useSwitchOn(AIEntity *e,
int x,
int y,
int targetX,
int targetY,
int offTile);
1407 bool useSwitch2(AIEntity *e,
int x,
int y,
int targetX,
int targetY);
1410 bool useLockedSwitch(AIEntity *e,
int x,
int y,
int targetX,
int targetY,
int onTile, AIType item,
const char *keyerror);
1411 bool useLockedSwitchOn(AIEntity *e,
int x,
int y,
int targetX,
int targetY,
int offTile, AIType item);
1414 bool useCellHolder(AIEntity *e,
int x,
int y,
int targetX,
int targetY);
1417 bool useTouchplate(AIEntity *e,
int x,
int y,
int targetX,
int targetY,
int type);
1418 bool useTouchplateOn(AIEntity *e,
int x,
int y,
int targetX,
int targetY,
int type);
1421 bool useDoorOpenClose(AIEntity *e,
int x,
int y);
1422 bool useAutoDoorOpenClose(AIEntity *e,
int x,
int y);
1425 bool useDoorOpenCloseBot(AIEntity *e,
int x,
int y);
1433 bool _cineAbortable;
1435 const char *_cineAbortFunc;
1439 double _cameraX, _cameraY;
1443 const char *AIType2Str(AIType v);
1444 const char *AIState2Str(AIState v);
#define ARRAYSIZE(x)
Definition: util.h:91
Definition: ai-player.h:25
Definition: savefile.h:54