|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T a
Length: 3833 (0xef9) Types: TextFile Names: »aliens.c.orig«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987 └─⟦this⟧ »EUUGD18/General/Mpss/aliens.c.orig«
#include "ships.h" #include "header.h" makealien(cp) register struct player *cp; { char *malloc(); struct player *aa; aa=(struct player *)malloc(sizeof(struct player)); i=(int)rnd(0,10); if (i>5) { aa->id=ROMID; aa->xpos=600; aa->ypos=100; } else { aa->id=KLINGID; aa->xpos=600; aa->ypos=575; } aa->impulsemove=0; aa->cm[0]='\0'; aa->cl[0]='\0'; aa->cm[0]='\0'; aa->terminalfile[0]='\0'; aa->shipno=28; aa->tty_type= -1; aa->pid=99999; aa->doneit=0; aa->reason=10; aa->oldxpos=aa->xpos; aa->oldypos=aa->ypos; aa->beeping=ON; aa->maxvel=MAXWARP; aa->xvel=0; aa->yvel=0; aa->chflg=FLAG; aa->clflg=OFF; aa->stat=3; aa->energy=STARTENERGY; aa->maxenergy=STARTENERGY; aa->phaserbanks=STARTPHASER; aa->maxphaser=STARTPHASER; aa->photontorpedos=STARTPHOTON; aa->maxphoton=STARTPHOTON; aa->photonpower=PHOTONPOWER; aa->phaserpower=PHASERPOWER; if (aa->id==ROMID) { aa->photonpower= aa->photonpower+20; aa->phaserpower= aa->phaserpower+20; } aa->photonreach=WEAPONREACH+4; aa->phaserreach=WEAPONREACH+4; aa->weaponselect=0; aa->score=0; aa->cloakingdevice=OFF; aa->shields=OFF; for(k=0;k<30;++k) aa->planets[k]=0; aa->planetno=0; for (k=0; k<=3; k++) { aa->channel[k].enemy=NULL; aa->channel[k].xloc=0; aa->channel[k].yloc=0; } aa->flyto= -1; aa->messindex=0; addtolist(aa); ++noofaliens; } servicealien(cp) register struct player *cp; { if (cp->messindex==1) { if (autopilotalien(cp)==0) goto movealien; else { /*we have arrived. Now attack the guy*/ if (cp->weaponselect==0) { i=rand()%100; if (i<6) { fire_torpedo(cp,'6',0); cp->messindex=0; i=rand()%100; if (i<50) cp->yvel=1; } } else { i=rand()%100; if (i<6) { fire_torpedo(cp,'4',0); cp->messindex=0; i=rand()%100; if (i<50) { cp->yvel=1; cp->xvel=1; } } } } } i=rand()%10000; if (i==9995) { j=rand()%10; if (cp->messindex==0 && j<2) lockonalien(cp,NULL); else cp->messindex=0; } if (i<9920) {goto movealien;} if ((i>=9920)&&(i<9995)) {cp->xvel=0; cp->yvel=0; goto movealien;} if (i==9996) {cp->xvel = -1; goto movealien;} if (i==9997) {cp->xvel = 1; goto movealien;} if (i==9998) {cp->yvel = 1; goto movealien;} if (i==9999) cp->yvel = -1; movealien : cp->oldxpos=cp->xpos; cp->oldypos=cp->ypos; cp->xpos+=cp->xvel; cp->ypos+=cp->yvel; if (((cp->yvel!=0)||(cp->xvel!=0))&&(cp->stat<12)) cp->chflg=FLAG; } gethim(who,enemyid) register struct player *who; char enemyid; { register struct player *x; if (noofplayers>1) return(0); x=startlist; while (x!=NULL && x->id!=enemyid) x=x->next; if (x!=NULL) lockonalien(x,who); } lockonalien(cp,who) register struct player *cp,*who; { register struct player *x; if (cp->stat==12) return(0); i=rand()%1000; if (i>500) cp->weaponselect=0; else cp->weaponselect=1; if (who==NULL) { x=startlist; while (x!=NULL) { if (x==cp) {x=x->next; continue;} if ((x->shields==OFF)&&(x->id!=ROMID)&&(x->id!=KLINGID)) { cp->channel[1].enemy=x; cp->channel[1].xloc=0; cp->channel[1].yloc=0; cp->messindex=1; } x=x->next; } } else { cp->channel[1].enemy=who; cp->channel[1].xloc=0; cp->channel[1].yloc=0; cp->messindex=1; } } autopilotalien(cp) register struct player *cp; { if (cp->weaponselect==0) { if (cp->xpos!=(cp->channel[1].enemy->xpos-7)) { if (cp->xpos<(cp->channel[1].enemy->xpos-7)) cp->xvel=1; else cp->xvel= -1; } else cp->xvel=0; } else { if (cp->xpos!=(cp->channel[1].enemy->xpos+6)) { if (cp->xpos<(cp->channel[1].enemy->xpos+6)) cp->xvel=1; else cp->xvel= -1; } else cp->xvel=0; } if (cp->ypos!=cp->channel[1].enemy->ypos) { if (cp->ypos<cp->channel[1].enemy->ypos) cp->yvel=1; else cp->yvel= -1; } else cp->yvel=0; /* arrival at location*/ if ((cp->xvel==0)&&(cp->yvel==0)) return(1); else return(0); }