Landers will now ignore or abort chasing dead or rescued pods.
authorlimb <limb@bc5cbbab-a4ec-0310-bb52-ff3d296db539>
Thu, 7 Dec 2006 19:59:40 +0000 (19:59 +0000)
committerlimb <limb@bc5cbbab-a4ec-0310-bb52-ff3d296db539>
Thu, 7 Dec 2006 19:59:40 +0000 (19:59 +0000)
git-svn-id: svn+ssh://svn/var/repos/curfender@579 bc5cbbab-a4ec-0310-bb52-ff3d296db539

CHANGELOG
main.cpp

index 9b9d051..735f186 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,4 @@
+Landers will now ignore or abort chasing dead or rescued pods.
 Landers grab pods, kill them, go crazy.
 Crazies chase player.
 Landers -> crazies if all pods are dead and none are in.
index 899433c..0e68ffa 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -459,37 +459,45 @@ game_object player_init(game_object player){
 
 game_object pod_chase(game_object lander, game_object pod){
   
-  //match y, then direction and speed
-  if(lander.chase>0&&lander.phase==1){
-    if(abs(lander.y-pod.y)<4){
-      lander.speed = 2;
-    };
-    if(lander.y==pod.y){
-      lander.direction = pod.direction;
-      lander.speed = pod.speed;
-      lander.phase = 2;
-    };
-  };
-  
-  if(lander.chase>0&&lander.phase==2){
-    //decend to pod's x-1
-    if(lander.x<=pod.x-1){
-      lander.x++;
+  if(pod.active==0){
+    lander.chase=0;
+    lander.phase=0;
+    lander.speed=1;
+    strcpy(lander.radar, "*"); //debug
+  } else {
+    
+    //match y, then direction and speed
+    if(lander.chase>0&&lander.phase==1){
+      if(abs(lander.y-pod.y)<4){
+       lander.speed = 2;
+      };
+      if(lander.y==pod.y){
+       lander.direction = pod.direction;
+       lander.speed = pod.speed;
+       lander.phase = 2;
+      };
     };
-    if(lander.x>pod.x-1){
-      lander.phase = 3;
+    
+    if(lander.chase>0&&lander.phase==2){
+      //decend to pod's x-1
+      if(lander.x<=pod.x-1){
+       lander.x++;
+      };
+      if(lander.x>pod.x-1){
+       lander.phase = 3;
+      };
     };
-  };
-  
-  if(lander.chase>0&&lander.phase==3){
-    //ascend at speed 1 keep pod at x+1
-    lander.x--;
-    if(lander.x<=1){
-      //at x=1, destroy pod, deallocate lander, allocate crazy at same location.
-      lander.phase = 4;  //set pod to 'kill'
+    
+    if(lander.chase>0&&lander.phase==3){
+      //ascend at speed 1 keep pod at x+1
+      lander.x--;
+      if(lander.x<=1){
+       //at x=1, destroy pod, deallocate lander, allocate crazy at same location.
+       lander.phase = 4;  //set pod to 'kill'
+      };
     };
+
   };
-  
   return lander;
 }
 
@@ -1084,7 +1092,7 @@ int main(){
        if(rand()%1000<=10){
          //choose the closest pod
          for(int podloop = 0; podloop<8; podloop++){
-           if(landers[landerloop].chase==0&&pods[podloop].chase==0){
+           if(landers[landerloop].chase==0&&pods[podloop].chase==0&&pods[podloop].active==1){
              landers[landerloop].chase = pods[podloop].number;
              pods[podloop].chase = landers[landerloop].number;
            };
@@ -1095,6 +1103,8 @@ int main(){
          if(player.y<landers[landerloop].y){ landers[landerloop].direction = 6; alertright = 20;};
          if(player.y>=landers[landerloop].y){ landers[landerloop].direction = 4; alertleft = 20;};
          landers[landerloop].phase = 1;
+         strcpy(landers[landerloop].radar, "$"); //debug
+         strcpy(pods[landers[landerloop].chase].radar, "&"); //debug
        };
       };
     };