object.y = -1;
object.speed = 0;
object.direction = 0;
- object.chase = 0;
+ object.chase = -1;
object.phase = 0;
return object;
}
game_object pod_chase(game_object lander, game_object pod){
if(pod.active==0){
- lander.chase=0;
+ lander.chase=-1;
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(lander.chase>=0&&lander.phase==1){
if(abs(lander.y-pod.y)<3){
lander.speed = 2;
};
};
};
- if(lander.chase>0&&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(lander.chase>0&&lander.phase==3){
+ if(lander.chase>=0&&lander.phase==3){
//ascend at speed 1 keep pod at x+1
if(lander.vtime==0){
lander.x--;
strcpy (pods[podloop].line3, " + ");
strcpy (pods[podloop].radar, "x");
- pods[podloop].chase = 0;
+ pods[podloop].chase = -1;
};
for(int podloop = 1; podloop<podmax+1; podloop=podloop+2){
+ if(rand()%1000>=500){
+ pods[podloop].direction = 4;
+ } else {
+ pods[podloop].direction = 6;
+ };
+
strcpy (pods[podloop].line0, " + ");
strcpy (pods[podloop].line1, " + ");
strcpy (pods[podloop].line2, " x ");
strcpy (pods[podloop].line3, " x ");
strcpy (pods[podloop].radar, "x");
- pods[podloop].chase = 0;
+ pods[podloop].chase = -1;
};
//bullets
landers[landerloop].direction = 6;
};
+ landers[landerloop].chase = -1;
+
strcpy (landers[landerloop].line0, "{=}");
strcpy (landers[landerloop].radar, "*");
};
for(int podloop = 0; podloop<podmax; podloop++){
pods[podloop] = process_motion(pods[podloop], player);
//If lander dies, release pod
- if(pods[podloop].chase>0){
+ if(pods[podloop].chase>=0){
for(int landerloop = 0; landerloop<landermax; landerloop++){
if(landerloop==pods[podloop].chase){
if(landers[landerloop].active==0){
pods[podloop].vspeed = 2;
pods[podloop].vtime = 1;
- pods[podloop].chase = 0;
+ pods[podloop].chase = -1;
+ pods[podloop].speed = 1;
+ if(rand()%1000>=500){
+ pods[podloop].direction = 4;
+ } else {
+ pods[podloop].direction = 6;
+ };
};
};
};
};
-
};
gatebeam1 = process_motion(gatebeam1, player);
for(int landerloop = 0; landerloop<landermax; landerloop++){
if(landers[landerloop].active==1){
- if(landers[landerloop].chase>0&&landers[landerloop].phase==1){
+ if(landers[landerloop].chase>=0&&landers[landerloop].phase==1){
landers[landerloop] = pod_chase(landers[landerloop], pods[landers[landerloop].chase]);
};
- if(landers[landerloop].chase>0&&landers[landerloop].phase==2){
+ if(landers[landerloop].chase>=0&&landers[landerloop].phase==2){
landers[landerloop] = pod_chase(landers[landerloop], pods[landers[landerloop].chase]);
};
- if(landers[landerloop].chase>0&&landers[landerloop].phase==3){
+ if(landers[landerloop].chase>=0&&landers[landerloop].phase==3){
pods[landers[landerloop].chase].speed = 0;
pods[landers[landerloop].chase].direction = 5;
if(landers[landerloop].vtime<=10){
};
landers[landerloop] = pod_chase(landers[landerloop], pods[landers[landerloop].chase]);
};
- if(landers[landerloop].chase>0&&landers[landerloop].phase==4){ //decode which pod to kill
+ if(landers[landerloop].chase>=0&&landers[landerloop].phase==4){ //decode which pod to kill
pods[landers[landerloop].chase] = object_out(pods[landers[landerloop].chase]);
crazies[landerloop] = encrazify(landers[landerloop], crazies[landerloop]);
landers[landerloop] = object_out(landers[landerloop]);
for(int podloop = 0; podloop<podmax; podloop++){
if((pod_in==0)&&(pods[podloop].active==1)&&(check_collision(pods[podloop], player)==1)){
pod_in = pods[podloop].number;
+ pods[podloop].chase = -1;
+ //stop the chase if we steal the pod
+ for(int landerloop = 0; landerloop<landermax; landerloop++){
+ if(landers[landerloop].chase==podloop){
+ landers[landerloop].chase = -1;
+ landers[landerloop].phase = 0;
+ };
+ };
};
};
//steps:
//decide to grab a pod
for(int landerloop = 0; landerloop<landermax; landerloop++){
- if(landers[landerloop].active==1&&landers[landerloop].chase==0){
+ if(landers[landerloop].active==1&&landers[landerloop].chase==-1){
//if(rand()%10000<=10){
if(rand()%1000<=10){
//choose the closest pod
for(int podloop = 0; podloop<podmax; podloop++){
- if(landers[landerloop].chase==0&&pods[podloop].chase==0&&pods[podloop].active==1){
+ if(landers[landerloop].chase==-1&&pods[podloop].chase==-1&&pods[podloop].active==1){
landers[landerloop].chase = podloop;
pods[podloop].chase = landerloop;
};