]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/hb/c6_act2.c
going to start wolf3d core core (loop with input only) work soon. I was mostly brains...
[16.git] / src / lib / hb / c6_act2.c
diff --git a/src/lib/hb/c6_act2.c b/src/lib/hb/c6_act2.c
deleted file mode 100755 (executable)
index 803fe8b..0000000
+++ /dev/null
@@ -1,891 +0,0 @@
-/* Catacomb Apocalypse Source Code\r
- * Copyright (C) 1993-2014 Flat Rock Software\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
-// C3_PLAY.C\r
-\r
-#include "DEF.H"\r
-#pragma hdrstop\r
-\r
-\r
-/*\r
-=============================================================================\r
-\r
-                                                GLOBAL VARIABLES\r
-\r
-=============================================================================\r
-*/\r
-\r
-boolean ShootPlayer (objtype *ob, short obclass, short speed, statetype *state);\r
-void T_ShootPlayer(objtype *ob);\r
-\r
-short head_base_delay;\r
-\r
-/*\r
-=============================================================================\r
-\r
-                                                LOCAL VARIABLES\r
-\r
-=============================================================================\r
-*/\r
-\r
-\r
-void T_ShooterObj(objtype *ob);\r
-\r
-void SpawnRamBone(int tilex, int tiley);\r
-void T_SkeletonShoot(objtype *ob);\r
-void SpawnFutureMage (int tilex, int tiley);\r
-void T_FMageShoot(objtype *ob);\r
-void SpawnRoboTank(int tilex, int tiley);\r
-void T_RoboTankShoot(objtype *ob);\r
-void SpawnStompy(int tilex, int tiley);\r
-void T_StompyShoot(objtype *ob);\r
-void SpawnBug(int tilex, int tiley);\r
-void T_BugShoot(objtype *ob);\r
-void SpawnShooterEye(int tilex, int tiley);\r
-void T_EyeShootPlayer(objtype *ob);\r
-void SpawnRunningEye(int tilex, int tiley);\r
-void T_RunningEye(objtype *ob);\r
-\r
-\r
-/*\r
-=============================================================================\r
-\r
-                                                                               LARGE SOUND\r
-\r
-=============================================================================\r
-*/\r
-void LargeSound (objtype *ob)\r
-{\r
-       if (ob->temp1 != SOUNDPLAYED)\r
-       {\r
-               SD_PlaySound(LARGEMONSTERSND);\r
-               ob->temp1 = SOUNDPLAYED;\r
-\r
-       }\r
-}\r
-\r
-\r
-/*\r
-=============================================================================\r
-\r
-                                                                               SMALL SOUND\r
-\r
-=============================================================================\r
-*/\r
-void SmallSound (objtype *ob)\r
-{\r
-       if (ob->temp1 != SOUNDPLAYED)\r
-       {\r
-               SD_PlaySound(SMALLMONSTERSND);\r
-               ob->temp1 = SOUNDPLAYED;\r
-\r
-       }\r
-}\r
-\r
-\r
-\r
-/*\r
-=============================================================================\r
-\r
-                                                                               RAMBONE\r
-\r
-=============================================================================\r
-*/\r
-\r
-\r
-statetype s_skel_1 = {RAMBONEWALK1PIC, 10, &T_ShooterObj, &s_skel_2};\r
-statetype s_skel_2 = {RAMBONEWALK2PIC, 10, &T_ShooterObj, &s_skel_3};\r
-statetype s_skel_3 = {RAMBONEWALK3PIC, 10, &T_ShooterObj, &s_skel_4};\r
-statetype s_skel_4 = {RAMBONEWALK4PIC, 10, &T_ShooterObj, &s_skel_1};\r
-\r
-statetype s_skel_attack1 = {RAMBONEATTACK1PIC, 12, NULL, &s_skel_attack2};\r
-statetype s_skel_attack2 = {RAMBONEATTACK2PIC, 20, NULL, &s_skel_attack3};\r
-statetype s_skel_attack3 = {RAMBONEATTACK2PIC, -1, T_SkeletonShoot, &s_skel_attack4};\r
-statetype s_skel_attack4 = {RAMBONEATTACK3PIC, 20, NULL, &s_skel_ouch};\r
-\r
-statetype s_skel_ouch = {RAMBONEATTACK1PIC, 10, NULL, &s_skel_1};\r
-\r
-statetype s_skel_die1 = {RAMBONEDEATH1PIC, 40, NULL, &s_skel_die2};\r
-statetype s_skel_die2 = {RAMBONEDEATH2PIC, 30, NULL, &s_skel_die3};\r
-statetype s_skel_die3 = {RAMBONEDEATH3PIC, 20, &LargeSound, NULL};\r
-\r
-statetype s_skel_shot1 = {RAMBONESHOT1PIC, 10, &T_ShootPlayer, &s_skel_shot2};\r
-statetype s_skel_shot2 = {RAMBONESHOT2PIC, 10, &T_ShootPlayer, &s_skel_shot1};\r
-\r
-#define shooter_mode           ob->temp1\r
-#define shooter_delay  ob->temp2\r
-\r
-\r
-/*\r
-===============\r
-=\r
-= SpawnSkeleton\r
-=\r
-===============\r
-*/\r
-void SpawnRamBone(int tilex, int tiley)\r
-{\r
-       SpawnNewObj(tilex, tiley, &s_skel_1,PIXRADIUS*20);\r
-       new->obclass    = ramboneobj;\r
-       new->speed              = 2036;\r
-       new->flags              |= of_shootable;\r
-       new->hitpoints  = EasyHitPoints(12);\r
-}\r
-\r
-\r
-/*\r
-=================\r
-=\r
-= T_SkeletonShoot\r
-=\r
-=================\r
-*/\r
-void T_SkeletonShoot(objtype *ob)\r
-{\r
-       ShootPlayer(ob, rbshotobj, MSHOTSPEED, &s_skel_shot1);\r
-}\r
-\r
-\r
-\r
-/*\r
-=============================================================================\r
-\r
-                                                                               FUTURE MAGE\r
-\r
-=============================================================================\r
-*/\r
-\r
-statetype s_fmage1 = {FMAGEWALK1PIC, 20, &T_ShooterObj, &s_fmage2};\r
-statetype s_fmage2 = {FMAGEWALK2PIC, 20, &T_ShooterObj, &s_fmage3};\r
-statetype s_fmage3 = {FMAGEWALK3PIC, 20, &T_ShooterObj, &s_fmage1};\r
-\r
-statetype s_fmageattack1 = {FMAGEATTACK1PIC, 20, NULL, &s_fmageattack2};\r
-statetype s_fmageattack2 = {FMAGEATTACK1PIC, -1, &T_FMageShoot, &s_fmageattack3};\r
-statetype s_fmageattack3 = {FMAGEATTACK2PIC, 30, NULL, &s_fmage1};\r
-\r
-statetype s_fmageouch = {FMAGEATTACK1PIC, 10, NULL, &s_fmage1};\r
-\r
-statetype s_fmagedie1 = {FMAGEDEATH1PIC, 40, NULL, &s_fmagedie2};\r
-statetype s_fmagedie2 = {FMAGEDEATH2PIC, 30, &SmallSound, &s_fmagedie3};\r
-statetype s_fmagedie3 = {FMAGEDEATH3PIC, 0, NULL, &s_fmagedie3};\r
-\r
-statetype s_fmshot1 = {FMAGESHOT1PIC, 8, &T_ShootPlayer, &s_fmshot2};\r
-statetype s_fmshot2 = {FMAGESHOT2PIC, 8, &T_ShootPlayer, &s_fmshot1};\r
-\r
-/*\r
-=================\r
-=\r
-= SpawnFutureMage\r
-=\r
-=================\r
-*/\r
-\r
-void SpawnFutureMage (int tilex, int tiley)\r
-{\r
-       SpawnNewObj(tilex, tiley, &s_fmage1, PIXRADIUS*15);\r
-       new->obclass    = fmageobj;\r
-       new->speed              = 3072;\r
-       new->flags              |= of_shootable;\r
-       new->hitpoints  = EasyHitPoints(12);\r
-}\r
-\r
-\r
-/*\r
-=================\r
-=\r
-= T_FMageShoot\r
-=\r
-=================\r
-*/\r
-void T_FMageShoot(objtype *ob)\r
-{\r
-       ShootPlayer(ob, fmshotobj, MSHOTSPEED, &s_fmshot1);\r
-}\r
-\r
-\r
-\r
-/*\r
-=============================================================================\r
-\r
-                                                                               ROBO TANK\r
-\r
-=============================================================================\r
-*/\r
-\r
-statetype s_robotank_walk1 = {ROBOTANKWALK1PIC, 15, &T_ShooterObj, &s_robotank_walk2};\r
-statetype s_robotank_walk2 = {ROBOTANKWALK2PIC, 15, &T_ShooterObj, &s_robotank_walk3};\r
-statetype s_robotank_walk3 = {ROBOTANKWALK3PIC, 15, &T_ShooterObj, &s_robotank_walk4};\r
-statetype s_robotank_walk4 = {ROBOTANKWALK4PIC, 15, &T_ShooterObj, &s_robotank_walk1};\r
-\r
-statetype s_robotank_attack1 = {ROBOTANKWALK1PIC, 15, NULL, &s_robotank_attack2};\r
-statetype s_robotank_attack2 = {ROBOTANKATTACK1PIC, 15, NULL, &s_robotank_attack3};\r
-statetype s_robotank_attack3 = {ROBOTANKATTACK1PIC, -1, &T_RoboTankShoot, &s_robotank_attack4};\r
-statetype s_robotank_attack4 = {ROBOTANKWALK1PIC, 15, NULL, &s_robotank_walk1};\r
-\r
-statetype s_robotank_death1 = {ROBOTANKDEATH1PIC, 8, NULL, &s_robotank_death2};\r
-statetype s_robotank_death2 = {ROBOTANKDEATH2PIC, 8, NULL, &s_robotank_death3};\r
-statetype s_robotank_death3 = {ROBOTANKDEATH2PIC, -1, &T_AlternateStates, &s_robotank_death1};\r
-statetype s_robotank_death4 = {ROBOTANKDEATH3PIC, 25, &ExplosionSnd, &s_robotank_death5};\r
-statetype s_robotank_death5 = {ROBOTANKDEATH4PIC, 20, NULL, &s_robotank_death5};\r
-\r
-statetype s_robotank_shot1 = {PSHOT1PIC, 10, &T_ShootPlayer, &s_robotank_shot2};\r
-statetype s_robotank_shot2 = {PSHOT2PIC, 10, &T_ShootPlayer, &s_robotank_shot1};\r
-\r
-\r
-/*\r
-=================\r
-=\r
-= SpawnRoboTank\r
-=\r
-=================\r
-*/\r
-void SpawnRoboTank(int tilex, int tiley)\r
-{\r
-       SpawnNewObj(tilex, tiley, &s_robotank_walk1, PIXRADIUS*35);\r
-       new->obclass    = robotankobj;\r
-       new->speed              = 1700;\r
-       new->flags              |= of_shootable;\r
-       new->hitpoints  = EasyHitPoints(25);\r
-}\r
-\r
-\r
-/*\r
-=================\r
-=\r
-= T_RoboTankShoot\r
-=\r
-=================\r
-*/\r
-void T_RoboTankShoot(objtype *ob)\r
-{\r
-       ShootPlayer(ob, rtshotobj, 7000, &s_robotank_shot1);\r
-}\r
-\r
-\r
-\r
-/*\r
-====================\r
-=\r
-= T_AlternateStates\r
-=\r
-====================\r
-*/\r
-void T_AlternateStates(objtype *ob)\r
-{\r
-       if (ob->temp1--)\r
-       {\r
-               ob->state = ob->state->next;\r
-       }\r
-       else\r
-       {\r
-               if (ob->state == &s_robotank_death3)\r
-                       ob->state = &s_robotank_death4;\r
-               else\r
-                       ob->state = &s_aqua_die4;\r
-       }\r
-       ob->ticcount    = ob->state->tictime;\r
-}\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*\r
-=============================================================================\r
-\r
-                                                                                       STOMPY\r
-\r
-=============================================================================\r
-*/\r
-\r
-statetype s_stompy_walk1 = {STOMPYWALK1PIC, 15, &T_ShooterObj, &s_stompy_walk2};\r
-statetype s_stompy_walk2 = {STOMPYWALK2PIC, 15, &T_ShooterObj, &s_stompy_walk3};\r
-statetype s_stompy_walk3 = {STOMPYWALK3PIC, 15, &T_ShooterObj, &s_stompy_walk4};\r
-statetype s_stompy_walk4 = {STOMPYWALK4PIC, 15, &T_ShooterObj, &s_stompy_walk1};\r
-\r
-statetype s_stompy_attack1 = {STOMPYATTACK1PIC, 10, NULL, &s_stompy_attack2};\r
-statetype s_stompy_attack2 = {STOMPYATTACK2PIC, 15, NULL, &s_stompy_attack3};\r
-statetype s_stompy_attack3 = {STOMPYATTACK2PIC, -1, T_StompyShoot, &s_stompy_attack4};\r
-statetype s_stompy_attack4 = {STOMPYATTACK1PIC, 10, NULL, &s_stompy_walk1};\r
-\r
-statetype s_stompy_ouch = {STOMPYATTACK1PIC, 10, NULL, &s_stompy_walk2};\r
-\r
-statetype s_stompy_death1 = {STOMPYDEATH1PIC, 45, &ExplosionSnd, &s_stompy_death2};\r
-statetype s_stompy_death2 = {STOMPYDEATH2PIC, 30, NULL, &s_stompy_death3};\r
-statetype s_stompy_death3 = {STOMPYDEATH3PIC, 25, NULL, &s_stompy_death4};\r
-statetype s_stompy_death4 = {STOMPYDEATH4PIC, 20, NULL, NULL};\r
-\r
-statetype s_stompy_shot1 = {STOMPYSHOT1PIC, 6, &T_ShootPlayer, &s_stompy_shot2};\r
-statetype s_stompy_shot2 = {STOMPYSHOT2PIC, 6, &T_ShootPlayer, &s_stompy_shot3};\r
-statetype s_stompy_shot3 = {STOMPYSHOT1PIC, 6, &T_ShootPlayer, &s_stompy_shot4};\r
-statetype s_stompy_shot4 = {STOMPYSHOT3PIC, 6, &T_ShootPlayer, &s_stompy_shot5};\r
-statetype s_stompy_shot5 = {STOMPYSHOT4PIC, 6, &T_ShootPlayer, &s_stompy_shot4};\r
-\r
-\r
-/*\r
-=================\r
-=\r
-= SpawnStompy\r
-=\r
-=================\r
-*/\r
-void SpawnStompy(int tilex, int tiley)\r
-{\r
-       SpawnNewObj(tilex, tiley, &s_stompy_walk1, PIXRADIUS*25);\r
-       new->obclass    = stompyobj;\r
-       new->speed              = 1800;\r
-       new->flags              |= of_shootable;\r
-       new->hitpoints  = EasyHitPoints(20);\r
-}\r
-\r
-\r
-/*\r
-=================\r
-=\r
-= T_StompyShoot\r
-=\r
-=================\r
-*/\r
-void T_StompyShoot(objtype *ob)\r
-{\r
-       ShootPlayer(ob, syshotobj, 8500, &s_stompy_shot1);\r
-}\r
-\r
-\r
-\r
-/*\r
-=============================================================================\r
-\r
-                                                                                               BUG\r
-\r
-=============================================================================\r
-*/\r
-\r
-statetype s_bug_walk1 = {BUG_WALK1PIC, 15, &T_ShooterObj, &s_bug_walk2};\r
-statetype s_bug_walk2 = {BUG_WALK2PIC, 15, &T_ShooterObj, &s_bug_walk3};\r
-statetype s_bug_walk3 = {BUG_WALK3PIC, 15, &T_ShooterObj, &s_bug_walk1};\r
-\r
-statetype s_bug_attack1 = {BUG_ATTACK1PIC, 20, NULL, &s_bug_attack2};\r
-statetype s_bug_attack2 = {BUG_ATTACK2PIC, 20, NULL, &s_bug_attack3};\r
-statetype s_bug_attack3 = {BUG_ATTACK2PIC, -1, &T_BugShoot, &s_bug_attack4};\r
-statetype s_bug_attack4 = {BUG_ATTACK1PIC, 15, NULL, &s_bug_walk1};\r
-\r
-statetype s_bug_ouch = {BUG_WALK1PIC, 10, NULL, &s_bug_walk2};\r
-\r
-statetype s_bug_death1 = {BUG_DEATH1PIC, 35, &SmallSound, &s_bug_death2};\r
-statetype s_bug_death2 = {BUG_DEATH2PIC, 10, NULL, &s_bug_death2};\r
-\r
-statetype s_bug_shot1 = {BUG_SHOT1PIC, 10, &T_ShootPlayer, &s_bug_shot2};\r
-statetype s_bug_shot2 = {BUG_SHOT2PIC, 10, &T_ShootPlayer, &s_bug_shot1};\r
-\r
-\r
-/*\r
-=================\r
-=\r
-= SpawnBug\r
-=\r
-=================\r
-*/\r
-void SpawnBug(int tilex, int tiley)\r
-{\r
-       SpawnNewObj(tilex, tiley, &s_bug_walk1, PIXRADIUS*20);\r
-       new->obclass    = bugobj;\r
-       new->speed              = 1500;\r
-       new->flags              |= of_shootable;\r
-       new->hitpoints  = EasyHitPoints(10);\r
-}\r
-\r
-\r
-/*\r
-=================\r
-=\r
-= T_BugShoot\r
-=\r
-=================\r
-*/\r
-void T_BugShoot(objtype *ob)\r
-{\r
-       ShootPlayer(ob, bgshotobj, 8000, &s_bug_shot1);\r
-}\r
-\r
-\r
-\r
-\r
-\r
-/*\r
-=============================================================================\r
-\r
-                                                                       MEC EYE\r
-\r
-=============================================================================\r
-*/\r
-\r
-void T_EyeShootPlayer (objtype *ob);\r
-\r
-statetype s_eye_pause = {EYE_WALK1PIC,40,NULL,&s_eye_2};\r
-\r
-statetype s_eye_1 = {EYE_WALK1PIC,20,T_ShooterObj,&s_eye_2};\r
-statetype s_eye_2 = {EYE_WALK2PIC,20,T_ShooterObj,&s_eye_3};\r
-statetype s_eye_3 = {EYE_WALK3PIC,20,T_ShooterObj,&s_eye_4};\r
-statetype s_eye_4 = {EYE_WALK2PIC,20,T_ShooterObj,&s_eye_1};\r
-statetype s_eye_shootplayer_1 = {EYE_WALK1PIC,1,T_EyeShootPlayer,&s_eye_shootplayer_2};\r
-statetype s_eye_shootplayer_2 = {EYE_WALK1PIC,20,NULL,&s_eye_1};\r
-\r
-statetype s_eye_ouch = {EYE_OUCH1PIC,8,NULL,&s_eye_ouch2};\r
-statetype s_eye_ouch2 = {EYE_OUCH2PIC,8,NULL,&s_eye_1};\r
-\r
-statetype s_eye_die1 = {EYE_DEATH1PIC,22,NULL,&s_eye_die2};\r
-statetype s_eye_die2 = {EYE_DEATH2PIC,22,&SmallSound,&s_eye_die3};\r
-statetype s_eye_die3 = {EYE_DEATH3PIC,22,NULL,&s_eye_die4};\r
-statetype s_eye_die4 = {EYE_DEATH4PIC,22,NULL,&s_eye_die4};\r
-\r
-statetype s_eshot1 = {EYE_SHOT1PIC,8,&T_ShootPlayer,&s_eshot2};\r
-statetype s_eshot2 = {EYE_SHOT2PIC,8,&T_ShootPlayer,&s_eshot1};\r
-\r
-\r
-//-------------------------------------------------------------------------\r
-// SpawnEye()\r
-//-------------------------------------------------------------------------\r
-void SpawnShooterEye(int tilex, int tiley)\r
-{\r
-       objtype *ob;\r
-\r
-       SpawnNewObj(tilex,tiley,&s_eye_1,PIXRADIUS*10);\r
-       ob = new;\r
-       new->obclass = eyeobj;\r
-       new->speed = 3000;\r
-       new->flags |= of_shootable;\r
-       new->hitpoints = EasyHitPoints(15);\r
-       shooter_mode = sm_other1;\r
-}\r
-\r
-\r
-//---------------------------------------------------------------------------\r
-// T_EyeShootPlayer\r
-//---------------------------------------------------------------------------\r
-void T_EyeShootPlayer (objtype *ob)\r
-{\r
-       ShootPlayer(ob, eshotobj, ESHOTSPEED, &s_eshot1);\r
-}\r
-\r
-\r
-/*\r
-===============\r
-=\r
-= T_ShooterObj\r
-=\r
-= **********\r
-= ***NOTE*** This routine controls the thinks for the RamBone, RoboTank,\r
-= **********   Stompy, Future Mage, Bug, and Old Mage\r
-=\r
-===============\r
-*/\r
-\r
-void T_ShooterObj(objtype *ob)\r
-{\r
-       fixed tempx,tempy;\r
-       unsigned temp_tilex,temp_tiley;\r
-       int angle;\r
-\r
-       shooter_delay -= realtics;\r
-       if (shooter_delay < 0)\r
-       {\r
-               shooter_mode = random(sm_dummy);\r
-               shooter_delay = random(10*60)+random(50);\r
-       }\r
-\r
-       tempx = player->x;\r
-       tempy = player->y;\r
-       temp_tilex = player->tilex;\r
-       temp_tiley = player->tiley;\r
-\r
-\r
-       switch (shooter_mode)\r
-       {\r
-               case sm_other1:\r
-               case sm_other2:\r
-               case sm_other3:\r
-               case sm_other4:\r
-                       player->x = ((long)other_x[shooter_mode]<<TILESHIFT)+TILEGLOBAL/2;\r
-                       player->y = ((long)other_y[shooter_mode]<<TILESHIFT)+TILEGLOBAL/2;\r
-                       player->tilex = other_x[shooter_mode];\r
-                       player->tiley = other_y[shooter_mode];\r
-               break;\r
-       }\r
-\r
-       if (Chase(ob,true))\r
-               shooter_delay = 0;\r
-\r
-       player->x = tempx;\r
-       player->y = tempy;\r
-       player->tilex = temp_tilex;\r
-       player->tiley = temp_tiley;\r
-\r
-       angle = AngleNearPlayer(ob);\r
-\r
-\r
-  // Handle shooting for the different characters controlled by this think.\r
-       switch (ob->obclass)\r
-       {\r
-               case ramboneobj:\r
-                       if (!random(2) && (angle != -1))\r
-                       {\r
-                               ob->state = &s_skel_attack1;\r
-                               ob->ticcount = ob->state->tictime;\r
-                       }\r
-               break;\r
-\r
-               case fmageobj:\r
-                       if (!random(8) && (angle != -1))\r
-                       {\r
-                               ob->state = &s_fmageattack1;\r
-                               ob->ticcount = ob->state->tictime;\r
-                       }\r
-               break;\r
-\r
-               case robotankobj:\r
-                       if (!random(15) && (angle != -1))\r
-                       {\r
-                               ob->state = &s_robotank_attack1;\r
-                               ob->ticcount = ob->state->tictime;\r
-                       }\r
-               break;\r
-\r
-               case stompyobj:\r
-                       if (angle != -1)\r
-                       {\r
-                               ob->state = &s_stompy_attack1;\r
-                               ob->ticcount = ob->state->tictime;\r
-                       }\r
-               break;\r
-\r
-               case bugobj:\r
-                       if (!random(5) && (angle != -1))\r
-                       {\r
-                               ob->state = &s_bug_attack1;\r
-                               ob->ticcount = ob->state->tictime;\r
-                       }\r
-               break;\r
-\r
-               case eyeobj:\r
-                       if (!random(2) && (angle != -1))\r
-                       {\r
-                               ob->state = &s_eye_shootplayer_1;\r
-                               ob->ticcount = ob->state->tictime;\r
-                       }\r
-               break;\r
-       }\r
-}\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*\r
-=============================================================================\r
-\r
-                                                                               RUNNING EYE\r
-\r
-=============================================================================\r
-*/\r
-\r
-statetype s_reye_1 = {EYE_WALK1PIC, 20, &T_RunningEye, &s_reye_2};\r
-statetype s_reye_2 = {EYE_WALK2PIC, 20, &T_RunningEye, &s_reye_3};\r
-statetype s_reye_3 = {EYE_WALK3PIC, 20, &T_RunningEye, &s_reye_4};\r
-statetype s_reye_4 = {EYE_WALK2PIC, 20, &T_RunningEye, &s_reye_1};\r
-\r
-statetype s_reye_ouch = {EYE_OUCH1PIC, 8, NULL, &s_reye_ouch2};\r
-statetype s_reye_ouch2 = {EYE_OUCH2PIC, 8, NULL, &s_reye_1};\r
-\r
-statetype s_reye_die1 = {EYE_DEATH1PIC, 22, NULL, &s_reye_die2};\r
-statetype s_reye_die2 = {EYE_DEATH2PIC, 22, &SmallSound, &s_reye_die3};\r
-statetype s_reye_die3 = {EYE_DEATH3PIC, 22, NULL, &s_reye_die4};\r
-statetype s_reye_die4 = {EYE_DEATH4PIC, 22, NULL, &s_reye_die4};\r
-\r
-/*\r
-====================\r
-=\r
-= SpawnRunningEye()\r
-=\r
-====================\r
-*/\r
-void SpawnRunningEye(int tilex, int tiley)\r
-{\r
-       SpawnNewObj(tilex,tiley,&s_reye_1,PIXRADIUS*25);\r
-       new->obclass = reyeobj;\r
-       new->speed = 3500;\r
-       new->flags |= of_shootable;\r
-       new->hitpoints = EasyHitPoints(15);\r
-       new->temp2 = (*(mapsegs[2]+farmapylookup[tiley+1]+tilex))>>8;\r
-       *(mapsegs[2]+farmapylookup[tiley+1]+tilex) = 0;\r
-\r
-       new->temp1 = 2;\r
-\r
-       if (!new->temp2)\r
-               Quit("Initialize the running eye!\n");\r
-}\r
-\r
-\r
-/*\r
-====================\r
-=\r
-= T_RunningEye\r
-=\r
-====================\r
-*/\r
-void T_RunningEye(objtype *ob)\r
-{\r
-       int x, y, dir_num, switch_num;\r
-       fixed tempx,tempy;\r
-       unsigned temp_tilex,temp_tiley;\r
-\r
-       dir_num = *(mapsegs[2]+farmapylookup[ob->tiley]+ob->tilex);\r
-       dir_num = dir_num>>8;\r
-\r
-       if (!dir_num)\r
-               dir_num = ob->temp2;\r
-\r
-       if (dir_num == 5)\r
-       {\r
-               if (ob->temp1)\r
-               {\r
-                       ob->temp1--;\r
-               }\r
-               else\r
-               {\r
-                       ob->temp1 = 2;\r
-                       actorat[ob->tilex][ob->tiley] = 0;\r
-                       switch (ob->temp2)\r
-                       {\r
-                               case 1:\r
-                                       ob->tiley = ob->tiley-1;\r
-                                       ob->y = ((long)(ob->tiley)<<TILESHIFT)+TILEGLOBAL/2;\r
-                               break;\r
-\r
-                               case 2:\r
-                                       ob->tilex = ob->tilex+1;\r
-                                       ob->x = ((long)(ob->tilex)<<TILESHIFT)+TILEGLOBAL/2;\r
-                               break;\r
-\r
-                               case 3:\r
-                                       ob->tiley = ob->tiley+1;\r
-                                       ob->y = ((long)(ob->tiley)<<TILESHIFT)+TILEGLOBAL/2;\r
-                               break;\r
-\r
-                               case 0:\r
-                               case 4:\r
-                                       ob->tilex = ob->tilex-1;\r
-                                       ob->x = ((long)(ob->tilex)<<TILESHIFT)+TILEGLOBAL/2;\r
-                               break;\r
-                       }\r
-                       CalcBounds (ob);\r
-                       ChaseThink(ob,false);\r
-                       actorat[ob->tilex][ob->tiley] = ob;\r
-                       return;\r
-               }\r
-       }\r
-\r
-       tempx = player->x;\r
-       tempy = player->y;\r
-       temp_tilex = player->tilex;\r
-       temp_tiley = player->tiley;\r
-\r
-       if (dir_num == 5)\r
-               switch_num = ob->temp2;\r
-       else\r
-               switch_num = dir_num;\r
-\r
-       switch (switch_num)\r
-       {\r
-               case 1:\r
-                       player->x = ((long)ob->tilex<<TILESHIFT)+TILEGLOBAL/2;\r
-                       player->y = ((long)(ob->tiley-2)<<TILESHIFT)+TILEGLOBAL/2;\r
-                       player->tilex = ob->tilex;\r
-                       player->tiley = ob->tiley-2;\r
-               break;\r
-\r
-               case 2:\r
-                       player->x = ((long)(ob->tilex+2)<<TILESHIFT)+TILEGLOBAL/2;\r
-                       player->y = ((long)ob->tiley<<TILESHIFT)+TILEGLOBAL/2;\r
-                       player->tilex = ob->tilex+2;\r
-                       player->tiley = ob->tiley;\r
-               break;\r
-\r
-               case 3:\r
-                       player->x = ((long)ob->tilex<<TILESHIFT)+TILEGLOBAL/2;\r
-                       player->y = ((long)(ob->tiley+2)<<TILESHIFT)+TILEGLOBAL/2;\r
-                       player->tilex = ob->tilex;\r
-                       player->tiley = ob->tiley+2;\r
-               break;\r
-\r
-               case 0:\r
-               case 4:\r
-                       player->x = ((long)(ob->tilex-2)<<TILESHIFT)+TILEGLOBAL/2;\r
-                       player->y = ((long)ob->tiley<<TILESHIFT)+TILEGLOBAL/2;\r
-                       player->tilex = ob->tilex-2;\r
-                       player->tiley = ob->tiley;\r
-               break;\r
-       }\r
-\r
-       Chase(ob, false);\r
-\r
-       player->x = tempx;\r
-       player->y = tempy;\r
-       player->tilex = temp_tilex;\r
-       player->tiley = temp_tiley;\r
-\r
-       if (dir_num != 5)\r
-               ob->temp2 = dir_num;\r
-}\r
-\r
-\r
-/*\r
-=============================================================================\r
-\r
-                                                                               EGYPTIAN HEAD\r
-\r
-=============================================================================\r
-*/\r
-\r
-void T_Head(objtype *ob);\r
-\r
-statetype s_head = {HEADPIC, 20, &T_Head, &s_head};\r
-\r
-statetype s_head_shot1 = {PSHOT1PIC, 10, &T_ShootPlayer, &s_head_shot2};\r
-statetype s_head_shot2 = {PSHOT2PIC, 10, &T_ShootPlayer, &s_head_shot1};\r
-\r
-\r
-/*\r
-===================\r
-=\r
-= SpawnEgyptianHead\r
-=\r
-===================\r
-*/\r
-\r
-void SpawnEgyptianHead (int tilex, int tiley)\r
-{\r
-       objtype *ob;\r
-       short current_head_delay;\r
-       unsigned tile;\r
-\r
-       SpawnNewObj(tilex, tiley, &s_head, PIXRADIUS*35);\r
-       ob = new;\r
-       head_mode = h_wait_to_rise;\r
-\r
-       tile = *(mapsegs[2]+farmapylookup[tiley+1]+tilex);\r
-       if (tile)\r
-               head_delay = (tile>>8)*30;\r
-       else\r
-       {\r
-               current_head_delay = (3*60)+random(3*60);\r
-               head_delay = head_base_delay+current_head_delay;\r
-               head_base_delay += current_head_delay;\r
-               if (head_base_delay > 8*60)\r
-                       head_base_delay = 0;\r
-       }\r
-\r
-       new->obclass    = realsolidobj;\r
-       new->speed              = 3000;\r
-       new->flags        |= of_shootable;\r
-}\r
-\r
-\r
-\r
-//--------------------------------------------------------------------------\r
-// T_Head()\r
-//--------------------------------------------------------------------------\r
-void T_Head(objtype *ob)\r
-{\r
-       fixed tempx,tempy;\r
-       unsigned temp_tilex,temp_tiley;\r
-       int angle;\r
-\r
-       switch (head_mode)\r
-       {\r
-               case h_wait_to_rise:\r
-                       if (head_delay < 0)\r
-                       {\r
-                               if ((ob->tilex == player->tilex) && (ob->tiley == player->tiley))\r
-                                       break;\r
-                               if (CheckHandAttack(ob))\r
-                                       break;\r
-\r
-                               ob->obclass     = headobj;\r
-                               ob->active      = always;\r
-                               head_mode       = h_active;\r
-                               head_delay      = random(100)+random(60);\r
-                               ob->hitpoints = EasyHitPoints(16);\r
-                       }\r
-                       else\r
-                               head_delay -= tics;\r
-\r
-               break;\r
-\r
-               case h_player1:\r
-               case h_player2:\r
-               case h_player3:\r
-               case h_player4:\r
-               case h_active:\r
-                       Chase (ob,true);\r
-\r
-                       if (!random(2) && (angle != -1))\r
-                               ShootPlayer(ob, hshotobj, 10000, &s_head_shot1);\r
-\r
-                       head_delay -= tics;\r
-                       if (head_delay < 0)\r
-                       {\r
-                               head_mode = random(h_other4)+1;\r
-                               head_delay = random(10*60)+random(50);\r
-                       }\r
-               break;\r
-\r
-               case h_other1:\r
-               case h_other2:\r
-               case h_other3:\r
-               case h_other4:\r
-\r
-                       tempx = player->x;\r
-                       tempy = player->y;\r
-                       temp_tilex = player->tilex;\r
-                       temp_tiley = player->tiley;\r
-\r
-                       player->x = ((long)other_x[head_mode]<<TILESHIFT)+TILEGLOBAL/2;\r
-                       player->y = ((long)other_y[head_mode]<<TILESHIFT)+TILEGLOBAL/2;\r
-                       player->tilex = other_x[head_mode];\r
-                       player->tiley = other_y[head_mode];\r
-\r
-                       if (Chase(ob,true))\r
-                               head_delay = 0;\r
-\r
-                       player->x = tempx;\r
-                       player->y = tempy;\r
-                       player->tilex = temp_tilex;\r
-                       player->tiley = temp_tiley;\r
-\r
-                       head_delay -= tics;\r
-                       if (head_delay <= 0)\r
-                       {\r
-                               head_mode = h_active;\r
-                               head_delay = random(10*60)+random(50);\r
-                       }\r
-               break;\r
-       }\r
-}\r