Landers go crazy if all pods die. Surpassed 1 kloc.
authorlimb <limb@bc5cbbab-a4ec-0310-bb52-ff3d296db539>
Thu, 7 Dec 2006 13:14:28 +0000 (13:14 +0000)
committerlimb <limb@bc5cbbab-a4ec-0310-bb52-ff3d296db539>
Thu, 7 Dec 2006 13:14:28 +0000 (13:14 +0000)
git-svn-id: svn+ssh://svn/var/repos/curfender@574 bc5cbbab-a4ec-0310-bb52-ff3d296db539

CHANGELOG
main.cpp

index 3d72ba2..e9dcd9e 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,4 @@
+Landers -> crazies if all pods are dead and none are in.
 Made logo
 Landers respawn, too.
 Fixed pause, respawn
index 5183ec2..4066852 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -71,7 +71,7 @@ game_object gravitize(game_object object){
 
 void radar_plot(game_object object, int drawlocation){
 
-  if(object.x>0&&object.y>0){
+  if(object.x>0&&object.y>0&&object.active==1){
     int line = 0;  //vert plot pos
     int row = 0;  //horiz plot pos
     int x_offset = 19; //offset for height
@@ -243,14 +243,6 @@ game_object lander_init(game_object lander){
 
 game_object encrazify(game_object lander, game_object crazy){
   
-  int pause = 0;
-  while(pause!=' '){
-    cbreak();
-    mvprintw(10,20,"Crazy?\n");
-    pause = getch();
-  };
-  halfdelay(1);
-
   crazy.active=1;
   crazy.x = lander.x;
   crazy.y = lander.y;  
@@ -604,6 +596,8 @@ int main(){
   int input = 0;
   int podcount = 0;
   int podsin = 0;
+  int landercount = 0;
+  int crazycount = 0;
 
   cbreak();
   halfdelay(1);
@@ -871,7 +865,7 @@ int main(){
     // Lander shots
     for(int landerloop = 0; landerloop<landermax; landerloop++){
       if(landers[landerloop].active==1){
-       if(rand()%1000>200){
+       if(rand()%1000>500){
          // lander shoot
          for(int landershotloop = 0; landershotloop<landershotmax; landershotloop++){ 
            if(landershot[landershotloop].active==0){ 
@@ -901,6 +895,39 @@ int main(){
       };
     };
 
+    // Crazy shots
+    for(int crazyloop = 0; crazyloop<landermax; crazyloop++){
+      if(crazies[crazyloop].active==1){
+       if(rand()%1000>200){
+         // crazy shoot
+         for(int crazyshotloop = 0; crazyshotloop<landershotmax; crazyshotloop++){ 
+           if(landershot[crazyshotloop].active==0){ 
+             int multiplier = 1;
+             landershot[crazyshotloop].active=1;
+             //set direction
+             if(player.y<crazies[crazyloop].y){ 
+               if(player.x<crazies[crazyloop].x){ landershot[crazyshotloop].direction = 7; };
+               if(player.x==crazies[crazyloop].x){ landershot[crazyshotloop].direction = 4; };
+               if(player.x>crazies[crazyloop].x){ landershot[crazyshotloop].direction = 1; };
+               //set multipler based on direction
+               multiplier = -1; 
+             };
+             if(player.y>=crazies[crazyloop].y){
+               if(player.x<crazies[crazyloop].x){ landershot[crazyshotloop].direction = 9; };
+               if(player.x==crazies[crazyloop].x){ landershot[crazyshotloop].direction = 6; };
+               if(player.x>crazies[crazyloop].x){ landershot[crazyshotloop].direction = 3; };
+             };
+             landershot[crazyshotloop].speed = crazies[crazyloop].speed;
+             landershot[crazyshotloop].x = crazies[crazyloop].x;
+             landershot[crazyshotloop].y = crazies[crazyloop].y + (crazies[crazyloop].speed * multiplier);
+             landershot[crazyshotloop].vtime = 1;
+             break;
+           };
+         };
+       };
+      };
+    };
+
     //for each active lander shot
     for(int landershotloop = 0; landershotloop<landershotmax; landershotloop++){ 
       if(landershot[landershotloop].active==1){ 
@@ -941,43 +968,51 @@ int main(){
     podcount = 0;
     for(int podloop = 0; podloop<8; podloop++){ podcount = podcount + pods[podloop].active; };
     if(podcount<=0){
-      if(podsin>0){
-       //Tally bonuses
-       //Award lives, if any
-       if(lives<4){lives++;};
-       //Print goodies, getch
-       pause = 0;
-       while(pause!=' '){
-         cbreak();
-         mvprintw(10,20,"Level %d Completed.  Press SPACE to continue.\n", level);
-         pause = getch();
-       };
-       halfdelay(1);
-       //Advance level
-       level++;
-       //Reactivate pods if not zombied
-       for(int podloop = 0; podloop<8; podloop++){ pods[podloop] = pod_init(pods[podloop]); };
-       podsin = 0;
-       //regen landers
-       for(int landerloop = 0; landerloop<landermax; landerloop++){ 
-         if(landers[landerloop].active==0){
-           landers[landerloop] = lander_init(landers[landerloop]);
+      //do the level victory once all landers are dead  
+      landercount = 0;
+      for(int landerloop = 0; landerloop<landermax; landerloop++){ landercount = landercount + landers[landerloop].active; };
+      //do the level victory once all crazies are dead  
+      crazycount = 0;
+      for(int crazyloop = 0; crazyloop<landermax; crazyloop++){ crazycount = crazycount + crazies[crazyloop].active; };
+      if(crazycount<=0){
+       if(podsin>0&&landercount<=0){
+         //Tally bonuses
+         //Award lives, if any
+         if(lives<4){lives++;};
+         //Print goodies, getch
+         pause = 0;
+         while(pause!=' '){
+           cbreak();
+           mvprintw(10,20,"Level %d Completed.  Press SPACE to continue.\n", level);
+           pause = getch();
+         };
+         halfdelay(1);
+         //Advance level
+         level++;
+         //Reactivate pods if not zombied
+         for(int podloop = 0; podloop<8; podloop++){ pods[podloop] = pod_init(pods[podloop]); };
+         podsin = 0;
+         //regen landers
+         for(int landerloop = 0; landerloop<landermax; landerloop++){ 
+           if(landers[landerloop].active==0){
+             landers[landerloop] = lander_init(landers[landerloop]);
+           };
          };
        };
-      } else {
-       //crazy the landers
-       for(int landerloop = 0; landerloop<landermax; landerloop++){ 
-         if(landers[landerloop].active==1){
-           crazies[landerloop] = encrazify(landers[landerloop], crazies[landerloop]);
-           landers[landerloop] = object_out(landers[landerloop]);
+       if(podsin<=0&&landercount>0){
+         //crazy the landers
+         for(int landerloop = 0; landerloop<landermax; landerloop++){ 
+           if(landers[landerloop].active==1){
+             crazies[landerloop] = encrazify(landers[landerloop], crazies[landerloop]);
+             landers[landerloop] = object_out(landers[landerloop]);
+           };
          };
        };
-       //do the level victory once all crazies are dead
-      };
+      };  
     };
-      
+    
   }; //end main loop
-
+  
   endwin();
   
   return 0;