/* -----------------------------------------------------, */ /* Sneech Started 14-9-94 By Paul Burkey | */ /* -----------------------------------------------------' */ Set Buffer 120; int GRID[75][63],TAIL[9][1][302],X[9],Y[9],DX[9],DY[9],SIZ[9],LTH[9],TL[9],SLOPE[7][2][2]; int SPEED[9],SPC[9],DEAD[9],CUL[9],CONTR[9],NAME$[9],KEYS[1][3],CTYP[3],SPENDS[9]; int SCORE[9],WININ[9],OUT[9],PTS[9],BIGBON[9],SPEEDBON[9],DEST[9],SLIP[75][63]; int BITS[20][1],PARTX[9],PARTY[9],_FLASHCOL[20],KILBON[9],MONEY[9],STACK[9]; int CORNER[5],CPOS[3][1],CWAIT[3],SCOOPCO[3][1],DAM[9][9],LOAN[9],COUNTER[9],STARS[3][5]; int STUCK[9],HI$[40],HI[40],RATE[9],SHADE[75][63],OLDM[9],OLDP[9],TMP[3],ITEM[20][14]; int _INTEREST[9],PLACED[9],HUMAN$[9],COMP$[19],KILPTS[19],MOVE[4],CPREF[19][2]; int KIL[9],FINISH[9],_DOOR[75][63],KILS[9][12],L[9],BOOSTER[9],AHEAD[19],BOO[9],MSPEED[19]; /* DEM=0 : MEN=9 */ DEM=5-4; MEN=9-2; /* Prototypes */ void main(void); void F_Menu(void); void F_Sholeague(void); void F_Results(void); void F_Shop(void); void F_Options(void); void F_Finalscores(void); void F_Hiscores(int TYP); void F_Newleague(int TP); void F_Newgame(void); void F_About(void); void F_Merge(void); void F_Culmenu(void); void F_Makeit(int HIT,int MID); void F_Setup(void); void F_Scrol(void); void F_Computer(void); void F_Findpart(int FX,int FY,int M); void F_Whichcont(int CONT); void F_Humancontr(void); void F_Humanjoy(int _JOY); void F_Humanadap(int T); void F_Humankey(int K); void F_Clbig(int TY); void F_Free(int SPR,int VA,int SAM,int SPE); void F_Freebomb(void); void F_Speed(int TY,int SH); void F_Kilmoney(int KX,int KY,int TYP); void F_Lastbonus(int KX,int KY); void F_Slip(void); void F_Slope(void); void F_Putslip(int PX,int PY,int SL,int SH); void F_Puthole(int KX,int KY,int TYP); void F_Putslope(int KX,int KY,int TYP); void F_Putblock(int PX,int PY,int AC,int DN,int SH); void F_Exit(void); void F_Block(void); void F_Shotime(void); void F_Shrink(int PERS,int _D); void F_Face(int PERS,int OLDX,int OLDY); void F_Checkrev(int MAN); void F_Reverse(int PERS); void F_Resurect(int PERS); void F_Worth(int PERS); void F_Openup(int MMX,int MMY,int OT); void F_Ok(int F_OkX,int F_OkY); void F_Sort(int GA); void F_Checkit(int TIP); void F_Sam(int SMM,int SPP); void F_Wat0(void); void F_Fontdo(void); void F_Tex(int XT,int YT,char F_Tex[]); void F_Shtex(int XT,int YT,char TEX[],int SPICE); void F_Sh(int XT,int YT,char TEX[]); void F_Dis(char TEX[]); void F_Cen(int WY,char TEX[]); void F_Bits(int PX,int PY,int INOUT); void F_Bitsempty(void); void F_Pause(void); void F_Movemouse(void); void F_Madcry(int S,int P,int AD); void F_Fad(int C,int S); void F_Cul(int C,int S); void F_Save(int TYP); void F_Load(int TYP); void F_Getname(int OFFS); void F_Rating(int GMS); void F_Loadcpt(char F[]); void F_Savecpt(char F[]); void F_Loadsave(int TY); void F_Saveops(int OP); void F_Loadops(int OP); void F_Savehidata(int TYP); void F_Titles(void); void F_Doscr(int TY,int SCRR); void F_Bw(int TY); void F_Chekdoors(void); void F_Allert(int SCRR,char T1[],char T11[],char T2[],char T3[]); F_Setup(); F_Titles(); BIG=301; BIGX=75; BIGY=63; for (;;) { F_Menu(); F_Newleague(PASS); for (;;) { GAME++; if (GAME<==GAMES) { F_Sholeague(); } else { GAMEOVER=1; } if (GAMEOVER) { F_Finalscores(); break; } main(); F_Results(); if (DEMO) { break; } } } void main(void) { F_Newgame(); PL=0; OUT=0; SP0ON=-1; STRON=0; HUMSIN=1; for (;;) { MAN=0; for (;;) { if (CONTR(MAN)==7) { Goto PAA; } BOO(MAN)=SPEED(MAN)-(BOOSTER(MAN)/20); SLIP=SLIP(X(MAN),Y(MAN)); if (SLIP!==0) { if (SLIP==-1) { Add BOO(MAN),4; } else { if (SLIP==1) { Add BOO(MAN),-2; } else { if (SLIP==-2) { BOO(MAN)++; } else { Add BOO(MAN),SLOPE(SLIP-6,DX(MAN)+1,DY(MAN)+1); if (SLOPE(SLIP-6,DX(MAN)+1,DY(MAN)+1)<0) { BOOSTER(MAN)=Min(BOOSTER(MAN)+5,150); } if (SLOPE(SLIP-6,DX(MAN)+1,DY(MAN)+1)>0) { BOOSTER(MAN)--; } } } } } Add SPC(MAN),1,0 To Max(BOO(MAN),0); if (STUCK(MAN)>0) { if ((SP0ON==-1) || (SP0ON==MAN)) { STUCK(MAN)--; } if (STUCK(MAN)>95) { Goto LAA; } else { if (STUCK(MAN)==8) { F_Sam(14,25000); F_Sam(14,25010); Amal Off 12; Amal Off 14; Sprite Off 0; SP0ON=-1; Goto LAA; } else { if (STUCK(MAN)>8) { if (SP0ON==-1) { Wait Vbl; Sprite 0,0,0,20; Wait Vbl; SP0ON=MAN; Channel 14 To Screen Offset 0; Amal 14,"L: L RA=X; L RB=Y; J L"; Amal On 14; Channel 12 To Sprite 0; Amreg(2)=X Hard(X(MAN)*4+31); Amreg(3)=Y Hard(Y(MAN)*4+31); Amal 12,"L: L X=RC-RA; L Y=RD-RB; J L"; Amal On 12; SP0ON=MAN; } else { SPP=11+Min(9,(STUCK(MAN)-7)/9); Sprite 0,,,SPP; } } Goto LAA; } } } if ((SPC(MAN)>0) || (DEAD(MAN)>0)) { Goto SKIP; } if ((DX(MAN)==0) && (DY(MAN)==0)) { STACK(MAN)=ITEM(_STSIZ,MAN+1); SIZ(MAN)=10; Goto KO; } /* -------------- Start of Speed Loop ----------------------' */ ST: if ((X(MAN)+DX(MAN)>-1) && (X(MAN)+DX(MAN)<(BIGX+1))) { Add X(MAN),DX(MAN); } else { Gosub WALL; } if (CR==1) { Goto LAA; } if ((Y(MAN)+DY(MAN)>-1) && (Y(MAN)+DY(MAN)<(BIGY+1))) { Add Y(MAN),DY(MAN); } else { Gosub WALL; } if (CR==1) { Goto LAA; } if ((ITEM(_SCOOP,MAN+1)) || (ITEM(_SLSC,MAN+1))) { Gosub SSCOOPER; } if (GRID(X(MAN),Y(MAN))==0) { Goto KO; } else { GR=GRID(X(MAN),Y(MAN)); } if (GR==PART) { F_Bits(X(MAN),Y(MAN),0); Add STACK(MAN),8+Rnd(4); F_Sam(12,12000); Goto KO; } if (GR==SPEED) { F_Bits(X(MAN),Y(MAN),0); SPEED(MAN)=Max(0,SPEED(MAN)-1); F_Sam(6,14000); Goto KO; } if (GR==MONEY) { F_Bits(X(MAN),Y(MAN),0); Gosub GMONEY; F_Sam(MON,14000+Rnd(1000)); Goto KO; } if (GR==BLOCK) { Gosub CRASHED; Add Y(MAN),-DY(MAN); Add X(MAN),-DX(MAN); } if (ITEM(_ATURN,MAN+1)) { ITEM(_ATURN,MAN+1)=1; F_Face(MAN,DX(MAN),DY(MAN)); } Goto LAA; if (GR==HOLE) { Gosub HOLE; Add Y(MAN),-DY(MAN); Add X(MAN),-DX(MAN); Goto LAA; } if (GR==_EXIT) { Gosub _EXIT; Goto LAA; } if (GR==SLOW) { SPEED(MAN)=Min(6-LOWEST,SPEED(MAN)+1); F_Sam(6,6000); Goto KO; } if (GR==GOLD) { F_Bits(X(MAN),Y(MAN),0); F_Kilmoney(X(MAN),Y(MAN),1); F_Sam(15,7000); F_Fad($660,0); Fade 3 To 1; Goto KO; } if (MEGAX==-1) { Goto X; } if (GR==KEY) { F_Clbig(KEY); F_Openup(X(MAN),Y(MAN),1); Goto KO; } if (GR==FRBOMB) { F_Clbig(FRBOMB); ITEM(_BOMB,MAN+1)++; F_Madcry(12,2000,50); Goto KO; } if (GR==FRDEF) { F_Clbig(FRDEF); ITEM(_BOMBB,MAN+1)++; F_Madcry(12,3000,20); Goto KO; } if (GR==EXL) { F_Clbig(EXL); ITEM(_EXTRA,MAN+1)=1; F_Madcry(13,8000,1000); Goto KO; } if (GR==BW) { F_Clbig(BW); F_Madcry(8,3000,1000); F_Bw(0); Goto KO; } if (GR==_VIRUS) { F_Clbig(_VIRUS); VIRUS=MAN; LASTV=MAN; VCOUNT=0; F_Sam(7,2500); F_Checkit(1); Goto KO; } if (GR==STRAWB) { F_Clbig(STRAWB); F_Bw(STRAWB); Goto KO; } if (GR==MEGA) { F_Clbig(MEGA); Add STACK(MAN),200; F_Madcry(14,10000,1000); Goto KO; } X: if (GR>0) { Gosub _COLIDE; } KO: if (_DONT==1) { Gosub MOVEIT; } else { _DONT=1; } LAA: SAM=DX(MAN); if (((SLIP(X(MAN),Y(MAN))!==-2) || (Rnd(5)==0))) { if (CONTR(MAN)==6) { F_Computer(); } else { F_Humancontr(); } } if (STUCK(MAN)>0) { Goto PAA; } if (SAM!==DX(MAN)) { if (SIZ(MAN)==1) { PL=15000; if ((SIZ(MAN)==1) && (Rnd(4)==0)) { ITEM(_SUV1,MAN+1)=1; } } else { if (Rnd(1)) { PL=6000+((12-BOO(MAN))*600); } } } SKIP: if (Rnd(4)==0) { if ((STACK(MAN)>0) && (Rnd(2)>0) && ((SIZ(MAN)<(BIG-10)))) { SIZ(MAN)++; STACK(MAN)--; } if ((PARTS==6) && (GAMETIME<113) && ((Rnd(180-(SIZ(MAN)/3))==0)) && ((SIZ(MAN)+STACK(MAN)>1)) && (VIRUS!==MAN)) { Add STACK(MAN),4; } if ((Rnd(260+(SPEED(MAN)*5))==0) && (ITEM(_CON,MAN+1)==0)) { SPEED(MAN)=Min(6-LOWEST,SPEED(MAN)+1); } if ((VIRUS==MAN) && (Rnd(26)==0)) { Gosub VIRI; VCOUNT--; } } if (BOOSTER(MAN)>0) { BOOSTER(MAN)--; } else { BOOSTER(MAN)++; } PAA: if (MAN==MEN) { break; } MAN++; } /* ----- End Of Players Loop */ if ((HUMANS>0) || (SECS==24) || (DEMO==1)) { Wait Vbl; } if (PL>0) { F_Sam(11,Min(25000,Max(600,PL))); PL=0; } if (Rnd(5)==0) { F_Scrol(); if ((Key State(69)) && ((GAMETIME>59) || (DEMO==1))) { if (IT<4) { IT=-5; break; } else { break; } } } else { Gosub TIME_KEEPING; if ((Rnd(10)==0) && (GAMETIME>10) && (GAMETIME<115) && (OVER<2)) { Gosub RANDOM; } } if (CONTESTANTS==0) { break; } if (Key State(25)) { F_Pause(); } } Fade 5; F_Sam(1,2200); Wait 8; F_Sam(1,2200); Wait 72; Sprite Off; return 0; _COLIDE: _DONT=1; HITED=GRID(X(MAN),Y(MAN)); if ((HITED==MAN+1) && (ITEM(_PT,MAN+1))) { ITEM(_PT,MAN+1)=1; NOOX=Min(BIGX,Max(0,X(MAN)+DX(MAN))); NOOY=Min(BIGY,Max(0,Y(MAN)+DY(MAN))); if (GRID(NOOX,NOOY)==0) { F_Sam(13,25000); TEX=X(MAN); TEY=Y(MAN); CX=(TEX*4)+32; CY=(TEY*4)+32; Screen Copy 1,CX,CY,CX+4,CY+4 To 0,CX,CY; GRID(TEX,TEY)=0; Add X(MAN),DX(MAN); Add Y(MAN),DY(MAN); Goto OK; } } if ((L(HITED-1)==L(MAN)) && (L(MAN)>1)) { BOOB=1; } else { BOOB=0; } SIZ=((SIZ(MAN)+8)/8)+Rnd(1); F_Checkrev(MAN); if ((PASS==2) || ((PASS==1) && (ITEM(_REV,MAN+1)>0))) { F_Reverse(MAN); if (PASS==1) { ITEM(_REV,MAN+1)--; } Goto OK; } else { Add Y(MAN),DY(MAN); Add X(MAN),DX(MAN); } if ((HITED!==MAN+1) && (HITED<25)) { if (VIRUS==MAN) { if ((VCOUNT<1) || (LASTV!==HITED-1)) { VIRUS=HITED-1; LASTV=MAN; VCOUNT=5; F_Checkit(1); } VCOUNT--; } else { if (VIRUS==HITED-1) { if ((VCOUNT<1) || (LASTV!==MAN)) { VIRUS=MAN; LASTV=HITED-1; VCOUNT=5; F_Checkit(1); } VCOUNT--; } } if ((ITEM(_STUN,HITED)==2) && (BOOB==0)) { if (ITEM(_SGRAB,MAN+1)) { ITEM(_SGRAB,MAN+1)=1; ITEM(_STUN,MAN+1)=2; ITEM(_STUN,HITED)=1; F_Sam(14,20000); F_Sam(15,3500); } else { STUCK(MAN)=900; ITEM(_STUN,HITED)--; F_Sam(14,20000); F_Sam(14,20010); Add Y(MAN),-DY(MAN); Add X(MAN),-DX(MAN); if (ITEM(_BOMB,MAN+1)==0) { Goto OK; } } } if ((ITEM(_BOMB,MAN+1)) && (BOOB==0)) { if ((ITEM(_BGRAB,HITED)>0) && (ITEM(_BOMBB,HITED)==0)) { F_Sam(10,18000); F_Sam(8,4500); ITEM(_BGRAB,HITED)=1; ITEM(_BOMB,MAN+1)--; ITEM(_BOMB,HITED)++; } else { Gosub BOMB; Goto OK; } } Add STACK(HITED-1),SIZ/2; DAM(HITED-1,MAN)++; } Add Y(MAN),-DY(MAN); Add X(MAN),-DX(MAN); KILBY=HITED; if (Rnd(8)>(-1+(ITEM(_SH1,MAN+1)*2)+(ITEM(_SH2,MAN+1)*4))) { for (SZZ=1;SZZ<=SIZ;SZZ++) { F_Shrink(MAN,1); } if ((DX(MAN)!==0) || (DY(MAN)!==0)) { F_Sam(10,10500); } } if (ITEM(_ATURN,MAN+1)) { F_Face(MAN,DX(MAN),DY(MAN)); ITEM(_ATURN,MAN+1)=1; } _DONT=0; OK: if (DEAD(MAN)>0) { _DONT=0; } Return; VIRI: F_Sam(10,20000); if (_MEMORY==0) { F_Sam(7,12000); } else { F_Sam(19,7500); } Add DAM(LVIRUS,MAN),5; CN=Max(2,SIZ(MAN)/6); for (;;) { KILBY=LVIRUS+1; F_Shrink(MAN,0); if (DEAD(MAN)>0) { break; } CN--; if (CN<1) { F_Face(MAN,DX(MAN),DY(MAN)); break; } } Return; BOMB: F_Fad($FFF,0); if (ITEM(_BOMBB,HITED)) { ITEM(_BOMBB,HITED)--; Add DAM(HITED-1,MAN),5; Add STACK(HITED-1),5; F_Sam(10,32000); if (_MEMORY==0) { F_Sam(16,30000); F_Sam(10,25000); } else { F_Sam(17,6100); F_Sam(17,6200); } COWNT=0; for (;;) { F_Shrink(MAN,0); COWNT++; if (COWNT==5) { break; } } F_Face(MAN,DX(MAN),DY(MAN)); } else { F_Sam(10,25000); for (Y0=0;Y0<=4;Y0++) { for (X0=0;X0<=4;X0++) { TEX=Min(BIGX,Max(0,(X(MAN)-2)+X0)); TEY=Min(BIGY,Max(0,(Y(MAN)-2)+Y0)); PO=GRID(TEX,TEY); if ((PO>0) && (PO<25) && (PO!==MAN+1)) { CX=(TEX*4)+32; CY=(TEY*4)+32; Screen Copy 1,CX,CY,CX+4,CY+4 To 0,CX,CY; GRID(TEX,TEY)=0; DAM(MAN,PO-1)++; STACK(MAN)++; KILBY=MAN+1; F_Shrink(PO-1,0); CHE=GRID(X(PO-1),Y(PO-1)); if (CHE!==PO) { F_Shrink(PO-1,0); } F_Face(PO-1,DX(PO-1),DY(PO-1)); if ((SIZ(PO-1)<5) && (STUCK(PO-1)>20)) { STUCK(PO-1)=20; } } } } } ITEM(_BOMB,MAN+1)--; if (ITEM(_BOMB,MAN+1)==0) { F_Madcry(12,4000,1); } Fade 3 To 1; Return; TIME_KEEPING: if (GAMETIME>0) { if (GAMETIME==10) { if (_MEMORY==0) { F_Madcry(12,4080,4); } else { F_Madcry(20,5000,4); } F_Exit(); F_Bw(1); GAMETIME=9; } if (Timer>SECS*TIME) { if (((HUMANS==0) && (DEMO==0))) { SECS=9; } if ((CONTESTANTS<2) || (OVER==2)) { SECS=2; } if (GAMETIME<10) { SECS=35; } Timer=0; GAMETIME--; F_Shotime(); for (A=0;A<=MEN;A++) { if ((DEAD(A)==0) && (SECS>8)) { Add BIGBON(A),SIZ(A); Add SPEEDBON(A),(13-BOO(A))*8; COUNTER(A)++; } } } if (GAMETIME==115) { GG=0; do { if ((DEAD(GG)==0) && (CONTR(GG)!==7) && (DX(GG)==0) && (DY(GG)==0)) { F_Face(GG,(Rnd(1)*2)-1,0); } GG++; } while (!(GG>MEN)); GAMETIME--; } } else { if (GAMETIME==0) { if (_MEMORY==1) { F_Madcry(20,5000,3); } else { F_Madcry(5,6000,3); } GAMETIME--; F_Bw(1); } else { if (Timer>4) { for (MAN=0;MAN<=MEN;MAN++) { if ((DEAD(MAN)==0) && (CONTR(MAN)!==7)) { KILBY=0; STACK(MAN)=0; F_Shrink(MAN,1); Timer=0; } } } } } Return; RANDOM: F_Bitsempty(); if ((TMP(1)<3) && (Rnd(50-CONTESTANTS*4)==0)) { F_Speed(F_Speed,9); Goto ER; } if (TMP(0)<2) { if (PARTS==5) { if (Rnd(44-CONTESTANTS*4)==0) { F_Speed(PART,7); Goto ER; } } else { if (Rnd(250)==0) { F_Speed(PART,7); Goto ER; } } } if (Rnd(220-(CONTESTANTS*8))==0) { F_Speed(MONEY,38); Goto ER; } if ((Rnd(250)==0) && (MEGAX==-1)) { F_Freebomb(); Goto ER; } /* If GAMETIME>15 and GAMETIME<120 and Rnd(5)=0 Then _FREE[62,_MINE,12,2] : Goto ER */ if ((_VIR>0) && (GAMETIME>50) && (GAMETIME<90) && (Rnd(1000)==0) && (VIRUS==-1) && (MEGAX==-1)) { F_Free(56,_VIRUS,7,10); Goto ER; } if ((_VIR==2) && (GAMETIME>45) && (GAMETIME<100) && (HUMANS>0) && (Rnd(1500)==0) && (VIRUS==-1) && (MEGAX==-1)) { F_Free(56,_VIRUS,7,10); Goto ER; } if ((DEM==0) && (GAMETIME>45) && (GAMETIME<60) && (Rnd(650)==0) && (MEGAX==-1)) { F_Free(52,MEGA,9,20); Goto ER; } if ((DEM==0) && (GAMETIME>20) && (GAMETIME<35) && (CONTESTANTS>4) && (Rnd(500)==0) && (MEGAX==-1)) { F_Free(70,BW,8,3); Goto ER; } if ((DEM==0) && (STRON==0) && (GAMETIME>25) && (GAMETIME<45) && (CONTESTANTS>4) && (Rnd(500)==0) && (MEGAX==-1)) { F_Free(68,STRAWB,15,1); Goto ER; } if ((DEM==0) && (STRON==1)) { if ((Rnd(200)==0) && (MEGAX==-1)) { F_Free(68,STRAWB,8,3); Goto ER; } } if (((_KEYS==1) || ((Rnd(4)==0) && (DEM==1))) && (Rnd(550)==0) && (OPEN==0) && (MEGAX==-1)) { F_Free(69,KEY,5,3); Goto ER; } if (Rnd(130)==0) { F_Speed(SLOW,36); } if ((DEM==0) && (Rnd(120)==0)) { if (Rnd(2)>0) { F_Slip(); } else { F_Slope(); } } if (Rnd(52)==0) { F_Block(); } ER: Return; MOVEIT: if (VIRUS==MAN) { Paste Icon(X(MAN)*4)+32,(Y(MAN)*4)+32,110+SHADE(X(MAN),Y(MAN)); } else { Paste Icon(X(MAN)*4)+32,(Y(MAN)*4)+32,50+(CUL(MAN)*3)+SHADE(X(MAN),Y(MAN)); } GRID(X(MAN),Y(MAN))=MAN+1; TAIL(MAN,0,TL(MAN))=X(MAN); TAIL(MAN,1,TL(MAN))=Y(MAN); Add TL(MAN),1,0 To BIG; LTH(MAN)++; BIT=-1; if (LTH(MAN)>SIZ(MAN)) { BIT=TL(MAN)-(SIZ(MAN)+1); if (BIT<0) { BIT=(BIG+1)+BIT; } } if (BIT>-1) { TX=TAIL(MAN,0,BIT); TY=TAIL(MAN,1,BIT); if ((TX!==X(MAN)) || (TY!==Y(MAN))) { if ((GRID(TX,TY)==MAN+1) || (GRID(TX,TY)==0)) { CX=(TX*4)+32; CY=(TY*4)+32; Screen Copy 1,CX,CY,CX+4,CY+4 To 0,CX,CY; GRID(TX,TY)=0; } } } Return; BLANKOFF: CX=(SCOOX*4)+32; CY=(SCOOY*4)+32; Screen Copy 1,CX,CY,CX+4,CY+4 To 0,CX,CY; GRID(SCOOX,SCOOY)=0; Return; SSCOOPER: SCOOP=0; for (;;) { SCOOX=Min(BIGX,Max(0,X(MAN)+SCOOPCO(SCOOP,0))); SCOOY=Min(BIGY,Max(0,Y(MAN)+SCOOPCO(SCOOP,1))); GR=GRID(SCOOX,SCOOY); if ((GR!==MAN+1) && (GR!==0)) { CHK=0; if (ITEM(_SCOOP,MAN+1)) { if (GR==PART) { Add STACK(MAN),8+Rnd(4); F_Sam(12,12000); CHK++; } if (GR==GOLD) { F_Kilmoney(SCOOX,SCOOY,1); F_Sam(15,7000); F_Fad($660,0); Fade 3 To 1; CHK++; } if (GR==MONEY) { Gosub GMONEY; F_Sam(MON,14500); CHK++; } if (GR==SPEED) { SPEED(MAN)=Max(0,SPEED(MAN)-1); F_Sam(6,14000); CHK++; } } if (ITEM(_SLSC,MAN+1)) { if (GR==SLOW) { SPEED(MAN)=Min(6-LOWEST,SPEED(MAN)+1); F_Sam(6,6000); CHK++; } } if (CHK) { if (GR==SLOW) { ITEM(_SLSC,MAN+1)=1; } else { ITEM(_SCOOP,MAN+1)=1; } F_Bits(SCOOX,SCOOY,0); Gosub BLANKOFF; } } SCOOP++; if (SCOOP==4) { break; } } Return; CRASHED: KILBY=0; SIZ=Max((SIZ(MAN)+8)/8,1); if (Rnd(8)>(-1+(ITEM(_SH1,MAN+1)*2)+(ITEM(_SH2,MAN+1)*4))) { for (SZZ=1;SZZ<=SIZ;SZZ++) { F_Shrink(MAN,1); } F_Sam(10,10500); } Return; HOLE: KILBY=-1; SIZ=(SIZ(MAN)+16)/10; SIZ=Max(2,SIZ); if (SIZ(MAN)-SIZ>1) { F_Sam(13,8000+(SIZ(MAN)*100)); } for (SZZ=1;SZZ<=SIZ;SZZ++) { F_Shrink(MAN,1); } Return; _EXIT: KILBY=-2; if (_MEMORY==1) { F_Sam(18,10000); F_Sam(18,10010); } else { F_Sam(6,1100); F_Sam(6,1110); } do { Wait Vbl; F_Shrink(MAN,1); F_Shrink(MAN,1); } while (!(DEAD(MAN))); F_Sam(21,11000); F_Sam(21,11000+Rnd(10)); Return; WALL: F_Ok(X(MAN)+DX(MAN),Y(MAN)+DY(MAN)); if (Param) { X(MAN)=OKX; Y(MAN)=OKY; F_Scrol(); F_Sam(Rnd(3)+1,4000); PARTX(MAN)=-1; PARTY(MAN)=-1; CR=0; } else { CR=1; Gosub CRASHED; if (ITEM(_ATURN,MAN+1)) { F_Face(MAN,DX(MAN),DY(MAN)); ITEM(_ATURN,MAN+1)=1; } } Return; GMONEY: if (MONEY(MAN)-LOAN(MAN)<1000) { MON=Rnd(2)+2; } else { if (MONEY(MAN)-LOAN(MAN)<1500) { MON=Rnd(2)+1; } else { MON=Rnd(1)+1; } } Add MONEY(MAN),MON*100; Return; } void F_Menu(void) { F_Doscr(13,7); F_Doscr(13,1); F_Doscr(13,0); Screen 0; F_Fad(0,0); Screen Show 0; F_Fad($F00,3); Gosub SHMEN; OM=X Mouse+Y Mouse; for (;;) { F_Movemouse(); if (Timer>1600) { Proc HISCORES[Rnd(5)]; Gosub SHMEN; MZ=0; } if ((MKEY) && (Mouse Zone==147)) { Proc HISCORES[0]; Gosub SHMEN; MZ=0; } if (X Mouse+Y Mouse!==OM) { Timer=0; OM=X Mouse+Y Mouse; } if (MKEY==0) { Goto NOKEY; } if (((MKEY==1) || (Key State(68))) && (Mouse Zone==149)) { DEMO=0; Gosub CHEC; } if (CHEC==1) { break; } else { F_Madcry(6,9000,5); Goto NOKEY; } if (((MKEY==1) || (Key State(68))) && (Mouse Zone==145)) { DEMO=1; Gosub CHEC; } if (CHEC==1) { break; } else { F_Madcry(6,9000,5); DEMO=0; Goto NOKEY; } if (((MKEY==1) && (Mouse Zone==201)) || (Key State(69))) { F_Allert(1,"Do You Want","To Quit?","Yes","No!"); } if (Param==0) { Wait 70; F_Madcry(6,1000,1); F_Fad($F0F,10); Wait 160; Fade 1; Wait 20; End; } if ((MKEY==1) && (Mouse Zone==150)) { F_Options(); Gosub SHMEN; } if ((MKEY==1) && (Mouse Zone==148)) { F_About(); Gosub SHMEN; } if ((MKEY==1) && (Mouse Zone==143)) { F_Merge(); Gosub SHMEN; } if ((MKEY==1) && (Mouse Zone==146)) { F_Sam(15,2200); F_Saveops(0); F_Wat0(); MZ=0; } if ((MKEY==1) && (Mouse Zone==144)) { Gosub _LOADIN; } if (PASS==1) { F_Loadsave(1); Wait 20; break; } else { F_Wat0(); MZ=0; } if ((MZ>==21) && (MZ<==26)) { F_Sam(8,30000); } if (MKEY==1) { Add CONTR(MZ-21),1,0 To 7; PASS=MZ-21; Gosub SHO; F_Wat0(); } else { Add CONTR(MZ-21),-1,0 To 7; PASS=MZ-21; Gosub SHO; F_Wat0(); } if ((MZ>==27) && (MZ<==30)) { F_Sam(8,30000); Add CONTR(MZ-21),1,6 To 7; PASS=MZ-21; Gosub SHO; F_Wat0(); } if ((MZ>==61) && (MZ<==70)) { if (CONTR(MZ-61)<6) { F_Sam(9,30000); PASS=MZ-61; Gosub NAME; } } if ((MZ>==160) && (MZ<==169)) { if (CONTR(MZ-160)<7) { F_Sam(5,20000); PASS=MZ-160; } } if (MKEY==1) { Add L(MZ-160),1,0 To 8; Gosub SHO; F_Wat0(); } else { Add L(MZ-160),-1,0 To 8; Gosub SHO; F_Wat0(); } if ((MZ>==1) && (MZ<==10)) { PASS=MZ-1; F_Culmenu(); Gosub SHO; Gosub SHMEN; } Timer=0; NOKEY: } F_Madcry(7,4080,4); Fade 1; Wait 16; return 0; CHEC: CHEC=1; OF=0; for (PE=0;PE<=5;PE++) { for (A=0;A<=MEN;A++) { if ((CONTR(A)<6) && (A!==PE) && (CONTR(A)==CONTR(PE))) { CHEC=-1; } } if ((DEM) && ((CONTR(PE)==4) || (CONTR(PE)==5))) { CHEC=-2; } if ((DEM) && (L(PE)>1) && (CONTR(PE)<6)) { CHEC=-3; } } HUM=0; for (A=0;A<=MEN;A++) { if (CONTR(A)==7) { OF++; L(A)=0; } if (CONTR(A)<6) { HUM++; } } if (CHEC==-1) { F_Allert(1,"Controls","Setup Error","Ok","Ok"); CHEC=0; } if (CHEC==-2) { F_Allert(1,"No Adaptors in","Demo!","Ok","Ok"); CHEC=0; } if (CHEC==-3) { F_Allert(1,"No Humans in","Teams (Demo)","Ok","Ok"); CHEC=0; } if (OF>8) { CHEC=0; } PASS=0; if ((HUM==0) && (CHEC==1) && (DEMO==0)) { F_Allert(1,"No Humans!","Start A Demo?","Yes","No!"); } if (Param==0) { DEMO=1; PASS=0; } else { CHEC=0; } Return; SHO: Rem Update Menu Screen; TRX=X Mouse; TRY=Y Mouse; if (CONTR(PASS)<6) { NA$=HUMAN$(PASS); } else { if (CONTR(PASS)==6) { NA$=COMP$(CUL(PASS)); } else { NA$="Off"; } } MX=0; MY=PASS; if (MY>4) { Add MY,-5; MX++; } if (NA$!==NAME$(PASS)) { NAME$(PASS)=NA$; LE=15; Gosub SHONAM; } Ink 1,0; MX=0; MY=0; for (MAN=0;MAN<=9;MAN++) { Paste Icon 12+(MX*154),136+(MY*22),50+(CUL(MAN)*3); Paste Icon 110+(MX*154),135+(MY*22),CONTR(MAN)+1; if (CONTR(MAN)<7) { L=L(MAN)+15; } else { L=15; } Paste Icon 144+(MX*154),138+(MY*22),L; if ((DEM==0) || (MAN<8)) { F_Shtex(20+(MX*154),137+(MY*22),NAME$(MAN),7); Set Zone MAN+1,6+(MX*154),133+(MY*22) To 22+(MX*154),151+(MY*22); Set Zone MAN+21,110+(MX*154),135+(MY*22) To 142+(MX*154),150+(MY*22); Set Zone MAN+160,144+(MX*154),138+(MY*22) To 154+(MX*154),146+(MY*22); Set Zone MAN+61,26+(MX*154),133+(MY*22) To 108+(MX*154),150+(MY*22); } else { F_Shtex(173,137+(MY*22),"Unavailable.",7); } MY++; if (MY==5) { MY=0; MX++; } } X Mouse=TRX; Y Mouse=TRY; Return; /* Show Menu Screen */ SHMEN: F_Wat0(); Screen Copy 7 To 0; Screen 0; MX=0; MY=1; for (MAN=1;MAN<=9;MAN++) { Screen Copy 0,8,132,158,154 To 0,8+(MX*154),132+(MY*22); MY++; if (MY==5) { MY=0; MX++; } } Limit Mouse 128,37 To 442,289; Reserve Zone 201; Set Zone 145,280,110 To 305,125; Set Zone 146,10,110 To 23,128; Set Zone 144,24,110 To 36,128; Set Zone 143,37,110 To 50,128; Set Zone 147,75,108 To 100,128; Set Zone 148,225,108 To 245,128; Set Zone 149,101,108 To 205,128; Set Zone 150,205,108 To 225,128; Set Zone 201,10,5 To 25,20; PASS=0; Gosub SHO; F_Madcry(6,1000,1); Fade 5 To 7; Timer=0; MZ=0; Return; _LOADIN: if (DEM) { F_Allert(1,"No loading","in Demo","Ok","Ok"); Goto LODD; } if ((Exist("Sneechfiles/Sav_Options.dat")) && (Exist("Sneechfiles/Old_Game.dat"))) { F_Allert(1,"Load An Old","League?","Yes","No!"); if (Param==0) { PASS=1; Goto LODD; } } PASS=0; F_Allert(1,"No Old Game","Load Disk Ops?","Yes","No!"); if (Param==0) { F_Loadops(0); Goto LOOO; } F_Allert(1,"Want To Load","Default Ops?","Yes","No!"); if (Param==0) { F_Loadops(1); } else { Goto LODD; } LOOO: F_Fad($F00,1); Gosub SHMEN; LODD: Return; NAME: Sprite Off 0; MX=0; MY=PASS; if (MY>4) { Add MY,-5; MX++; } LE=Len(NAME$(PASS)); Gosub SHONAM; Clear Key; F_Wat0(); for (;;) { F_Movemouse(); A$=Inkey$; if ((Mouse Key!==0) || (Fire(1)!==0)) { if (LE>0) { LE=100; Gosub SHONAM; break; } } if (A$=="") { Goto NOLET; } if (Asc(A$)==8) { if (LE>0) { NAME$(PASS)=Left$(NAME$(PASS),LE-1); LE--; Wait 3; } } if (Asc(A$)==13) { if (LE>0) { LE=100; Gosub SHONAM; break; } } if (LE==10) { F_Sam(10,10000); Goto NOLET; } if ((Asc(A$)>31) && (Asc(A$)<127)) { NAME$(PASS)=NAME$(PASS)+A$; LE++; } SH: Gosub SHONAM; NOLET: } for (;;) { if ((Right$(NAME$(PASS),1)==" ") && (Len(NAME$(PASS))>1)) { NAME$(PASS)=Left$(NAME$(PASS),Len(NAME$(PASS))-1); } else { break; } } HUMAN$(PASS)=NAME$(PASS); Return; SHONAM: F_Sam(9,30000); Ink 0; Vbl Wait 190; Bar 23+(MX*154),137+(MY*22) To 109+(MX*154),147+(MY*22); if (LE<11) { F_Shtex(20+(MX*154),137+(MY*22),NAME$(PASS)+"_",7); } else { F_Shtex(20+(MX*154),137+(MY*22),NAME$(PASS),7); } Return; } void F_Sholeague(void) { if (DEMO==1) { Goto DEM; } F_Doscr(14,0); F_Cul($F00,0); F_Doscr(14,1); Screen 0; Ink 12; Bar 60,175 To 191,182; F_Sort(GAME); if (GAMES>GAME) { F_Sh(76,176,"Play Match"+Str$(GAME)+" Of"+Str$(GAMES)); } else { F_Sh(83,176,"Play Last Match"); } F_Sh(85,53,"Current League Table"); F_Sh(63,65,"Name $ Rate Pts"); for (A=0;A<=MEN;A++) { POS=WININ(A); if (CONTR(POS)!==7) { F_Shtex(58,74+A*9,NAME$(POS),7); if (A>0) { if ((L(POS)>1) && (L(POS)==L(WININ(A-1)))) { Goto LX; } } if (L(POS)) { Paste Icon 48,75+A*9,15+L(POS); } F_Shtex(172,74+A*9,Str$(RATE(POS)),7); F_Shtex(207,74+A*9,Str$(SCORE(POS)),7); LX: PAY=-Min(LOAN(POS),MONEY(POS)); Add LOAN(POS),PAY; Add MONEY(POS),PAY; if (MONEY(POS)>9999) { F_Shtex(131,74+A*9,Str$(MONEY(POS)/1000)+"k",7); } else { F_Shtex(131,74+A*9,Str$(MONEY(POS)),7); } } } LAAA: Reserve Zone 5; Set Zone 1,50,166 To 223,190; Set Zone 3,225,169 To 244,188; Set Zone 2,249,169 To 270,185; Screen Show 0; Sprite Off; Fade 5 To 1; X Mouse=280; Y Mouse=230; F_Madcry(4,5000,1); Wait 82; RET: do { F_Movemouse(); } while (!(((MKEY) || (Key State(68)) || (Key State(49))) && (MZ!==0))); if (MZ==2) { if (GAME==1) { GAMEOVER=1; } else { F_Allert(1,"Quit League!","Are You Sure?","Yes","No!"); if (Param==1) { Goto RET; } else { GAMEOVER=1; GAME=1; } } } if (MZ==3) { F_Allert(1,"Save League &","Exit To Menu?","Yes","No!"); } if (Param==0) { F_Loadsave(0); GAME=1; GAMEOVER=1; } else { Goto RET; } SKP: F_Madcry(4,5000,1); Fade 3; Wait 24; if (GAMEOVER==1) { return 0; } F_Loadsave(0); DEM: TEST=0; for (A=0;A<=MEN;A++) { ITEM(_STSPEED,A+1)=LOWEST; if (CONTR(A)<6) { if (L(A)!==1) { TEST++; } else { ITEM(_SH1,A+1)=1; ITEM(_SH2,A+1)=1; ITEM(_SCOOP,A+1)=1; ITEM(_ATURN,A+1)=1; ITEM(_CON,A+1)=1; ITEM(_SLSC,A+1)=1; ITEM(_SUV1,A+1)=1; ITEM(_STSIZ,A+1)=40; ITEM(_STSPEED,A+1)=2; ITEM(_SREV,A+1)=1; ITEM(_REV,A+1)=3; ITEM(_BOMBB,A+1)=5; MONEY(A)=0; } } if (CONTR(A)!==6) { Goto L; } Timer=0; GG=CPREF(CUL(A),0); if (ITEM(GG,A+1)ITEM(GG,0)) && (ITEM(GG,A+1)ITEM(GG,0)) && (ITEM(GG,A+1)ITEM(GG,0)) && (ITEM(GG,A+1)150) { break; } } L: } if (TEST>0) { F_Shop(); } for (A=0;A<=MEN;A++) { LOAN(A)=LOAN(A)*1.2; _INTEREST(A)=Min(2500,(MONEY(A)*50)/100); MONEY(A)=MONEY(A)+_INTEREST(A); OLDM(A)=MONEY(A); OLDP(A)=SCORE(A); } } void F_Results(void) { if (OUT!==CONTEND) { return 0; } F_Doscr(15,0); F_Cul($F,0); FF$="Sneechfiles/Sav_Options.dat"; if (Exist(FF$)) { Kill FF$; } FF$="Sneechfiles/Old_Game.dat"; if (Exist(FF$)) { Kill FF$; } if (_SCORE==0) { Goto SK1; } F_Doscr(15,1); Screen 0; if (DEMO==1) { F_Tex(105,30,"End Of Demo"); } else { F_Tex(99,30,"End Of Game"+Str$(GAME)); } F_Tex(52,50,"Pos Name Bonus Total"); SK1: for (A=0;A<=CONTEND-1;A++) { POS=OUT((CONTEND-1)-A); if (CONTR(POS)!==7) { /* PTS(POS)=BON */ BON=FINISH(POS); PTS(POS)=BON; if (_SCORE>0) { if (L(POS)) { Paste Icon 50,63+A*13,15+L(POS); } F_Tex(59,65+A*13,Right$(" "+Str$(A+1),2)+" "+NAME$(POS)); F_Tex(167,65+A*13,Str$(BON)); F_Tex(215,65+A*13,Str$(BON)); } } } if (_SCORE==0) { Goto SK2; } F_Tex(104,219,"Finish BONUS"); Sprite Off; Screen Show 0; Fade 4 To 1; F_Madcry(4,5000,4); Wait 40; SK2: for (A=0;A<=MEN;A++) { if (CONTR(A)!==7) { C=Max(COUNTER(A),75); B#=C/100.0; BIGBON(A)=(BIGBON(A)/Max(1,COUNTER(A)))*B#; SPEEDBON(A)=(SPEEDBON(A)/Max(1,COUNTER(A)))*B#; } } Gosub CLR; F_Dis("Size & Speed Bonus"); for (A=0;A<=CONTEND-1;A++) { POS=OUT((CONTEND-1)-A); if (CONTR(POS)!==7) { BON=BIGBON(POS)+SPEEDBON(POS); Add PTS(POS),BON; Gosub SHO; } } if (_SCORE) { Wait 65; } for (DAM=0;DAM<=MEN;DAM++) { RM=-1; MX=0; for (A=0;A<=MEN;A++) { if ((L(A)==L(DAM)) && (L(A)>1)) { DAM(A,DAM)=0 : } else { : DAM(A,DAM)=(10+DAM(A,DAM))/12; } if (DAM(A,DAM)>MX) { MX=DAM(A,DAM); RM=A; } } for (A=0;A<=MEN;A++) { if (DAM(A,DAM)0) { PASS=1; if (KILS(A,0)>0) { for (KIL=1;KIL<=KILS(A,0);KIL++) { if (KILS(A,KIL)==PIT) { PASS=0; DAM(A,PIT)=0; } } } if (PASS==1) { Add DEST(A),(KIL(PIT)/2); } } } } Gosub CLR; F_Dis("Kill & Damage Bonus"); for (A=0;A<=CONTEND-1;A++) { POS=OUT((CONTEND-1)-A); if (CONTR(POS)!==7) { BON=KILBON(POS)+DEST(POS); Add PTS(POS),BON; Gosub SHO; } } if (_SCORE) { Wait 70; } Gosub CLR; F_Dis("Random Factor"); for (A=0;A<=CONTEND-1;A++) { POS=OUT((CONTEND-1)-A); if (CONTR(POS)!==7) { RF=ITEM(_RF,POS+1)*90; BON=Rnd(Max(5,RF+30-OUT(POS)))+(ITEM(_RF,POS+1)*30); Add PTS(POS),BON; Gosub SHO; } } if (_SCORE) { Wait 120; F_Madcry(6,5000,20); Fade 1; Wait 12; } for (A=0;A<=CONTEND-1;A++) { POS=OUT((CONTEND-1)-A); if (CONTR(POS)!==7) { for (ITS=0;ITS<=20;ITS++) { if ((ITEM(ITS,12)==1) && (ITEM(ITS,POS+1)>0)) { ITEM(ITS,POS+1)--; } if (ITEM(ITS,12)==0) { ITEM(ITS,POS+1)=0; } } } } if (_STAT>0) { F_Doscr(16,0); for (A=1;A<=31;A++) { Colour(A),4095-A; } for (A=0;A<=CONTEND-1;A++) { Screen Copy 0,0,36,320,57 To 0,0,36+A*21; } } for (A=0;A<=CONTEND-1;A++) { POS=OUT((CONTEND-1)-A); if (CONTR(POS)!==7) { BM=0; BP=0; B$=""; if ((MONEY(POS)+_INTEREST(POS)==0) && (SPEEDBON(POS)<43) && (BIGBON(POS)<40) && (KILBON(POS)+DEST(POS)==0)) { B$="Foolish Bonus"; BP=100; BM=300; } if (MONEY(POS)-OLDM(POS)>4499) { B$="Money Bonus"; BP=100; BM=10; } if (SPEEDBON(POS)>94) { B$="Speed Bonus"; BP=100; BM=400; } if (BIGBON(POS)>79) { B$="Size Bonus"; BP=150; BM=400; } if (KILBON(POS)>(CONTEND*55)+150) { B$="Kill Bonus"; BP=150; BM=500; } if (IT==POS) { B$="Survive Bonus"; BM=Min(999,300+CONTEND*70); BP=KIL(POS); } if (_STAT>0) { Paste Icon 3,40+A*21,50+(CUL(POS)*3); } T=1; AA=0; BB=0; for (;;) { if ((KILS(POS,0)0) { Paste Icon 190+AA,BB+40+A*21,50+(CUL(KILS(POS,T))*3); } Add AA,5; if (AA>10) { AA=0; Add BB,5; } T++; } AA=0; BB=0; for (T=0;T<=MEN;T++) { if (DAM(POS,T)>0) { if (_STAT>0) { Paste Icon 232+AA,BB+40+A*21,50+(CUL(T))*3; } Add AA,5; if (AA>10) { AA=0; Add BB,5; } } } if (_STAT>0) { F_Shtex(197,41+A*21,Str$(KILBON(POS)),7); F_Shtex(239,41+A*21,Str$(DEST(POS)),7); F_Shtex(148,37+A*21,Str$(SPEEDBON(POS)),7); F_Shtex(148,46+A*21,Str$(BIGBON(POS)),7); } if ((BM>0) || (BP>0)) { if (_STAT>0) { Ink 10; Paint 50,47+A*21; F_Shtex(98,37+A*21," $"+Right$(Str$(BM),Len(Str$(BM))-1),7); F_Shtex(98,46+A*21,Str$(BP)+"Pts",7); F_Shtex(7,37+A*21,B$,7); } Add MONEY(POS),BM; Add PTS(POS),BP; } OLDM(POS)=(MONEY(POS)-OLDM(POS)); if (_STAT>0) { F_Shtex(-1,45+A*21,NAME$(POS),7); F_Shtex(265,37+A*21," $"+Right$(Str$(_INTEREST(POS)),Len(Str$(_INTEREST(POS)))-1),7); F_Shtex(265,46+A*21," $"+Right$(Str$(OLDM(POS)),Len(Str$(OLDM(POS)))-1),7); } Add SPENDS(POS),(_INTEREST(POS)+OLDM(POS)); Add SCORE(POS),PTS(POS); OLDP(POS)=(SCORE(POS)-OLDP(POS)); } } if (_STAT>0) { F_Madcry(6,8000,5); Screen Show 0; Fade 3 To 1; Wait 48; } for (GGG=1;GGG<=5;GGG++) { F_Save(GGG); } if (_STAT==0) { Goto SK4; } do { F_Movemouse(); } while (!((MKEY) || (Key State(68)) || (Key State(49)))); EN: F_Madcry(4,5000,4); Fade 3; Wait 30; SK4: for (A=2;A<=8;A++) { MON=0; SCO=0; CNT=0; for (B=0;B<=MEN;B++) { if (L(B)==A) { Add MON,MONEY(B); Add SCO,SCORE(B); CNT++; } } for (B=0;B<=MEN;B++) { if (L(B)==A) { MONEY(B)=MON/CNT; SCORE(B)=SCO/CNT; } } } return 0; SHO: if (_SCORE!==0) { if (BON>0) { F_Tex(167,65+A*13,Str$(BON)); Wait Vbl; Screen Copy 1,222,65+(A*13),260,73+(A*13) To 0,222,65+(A*13); F_Tex(215,65+A*13,Str$(PTS(POS))); F_Sam(12,6700+(A*20)); Wait 15-A; } } Return; CLR: if (_SCORE>0) { for (A=0;A<=CONTEND-1;A++) { Screen Copy 1,172,65+(A*13),223,73+(A*13) To 0,172,65+(A*13); } } Return; } void F_Shop(void) { F_Doscr(11,0); F_Cul($F0,0); Paste Bob 4,68,312; F_Doscr(11,1); Paste Bob 4,68,312; Screen 0; Ink 0; Bar 0,250 To 319,255; Screen Copy 0,0,0,160,128 To 0,160,0; Screen Copy 0,0,0,320,128 To 0,0,127; Sprite Off; DEEND=0; Reserve Zone 100; CORNER(0)=-1; CORNER(1)=-1; CORNER(2)=-1; CORNER(3)=-1; CORNER(4)=-1; CORNER(5)=-1; C=0; for (A=0;A<=MEN;A++) { if ((CONTR(A)<6) && (L(A)!==1)) { CORNER(C)=A; C++; } } CORN=0; for (;;) { OX=CPOS(CORN,0)*160; OY=CPOS(CORN,1)*127; if (CORNER(CORN)>-1) { Gosub SHOIM; Set Zone 1+(CORN*25),113+OX,103+OY To 155+OX,120+OY; for (G=0;G<=4;G++) { Set Zone 2+(G*2)+(CORN*25),110+OX,23+OY+(G*9) To 128+OX,32+OY+(G*9); Set Zone 3+(G*2)+(CORN*25),140+OX,23+OY+(G*9) To 155+OX,32+OY+(G*9); } for (G=0;G<=3;G++) { Set Zone 12+G+(CORN*25),(G*12)+6+OX,69+OY To(G*12)+18+OX,76+OY; } Set Zone 19+(CORN*25),113+OX,75+OY To 155+OX,100+OY; } else { Gosub SHADE; } CWAIT(CORN)=0; CORN++; if (CORN==4) { break; } } Screen Show 0; Fade 3 To 1; F_Madcry(2,2500+Rnd(500),2); Timer=0; for (;;) { Gosub MOVM; Vbl Wait 200; if (DEEND==4) { break; } /* Exit If Key State(69) */ if (Rnd(220)==0) { F_Sam(14,1500+Rnd(1500)); } } Wait 26; F_Madcry(2,2700,2); Fade 3; Wait 24; Sprite Off; return 0; SHOIM: DIS=0; PERS=CORNER(CORN); if ((MONEY(PERS)<20) && (DEM==0)) { CTYP(CORN)=3; } else { CTYP(CORN)=0; } DIS=0; Gosub SHO; Sprite CORN*2,128+70+OX,42+70+OY,23; Return; BEEPSHO: if (DIS<6) { CWAIT(A)=Timer+4; } else { CWAIT(A)=Timer+12; } F_Sam(9,40000); CORN=A; Gosub SHO; Return; SHO: CTYP=CTYP(CORN); OX=CPOS(CORN,0)*160; OY=CPOS(CORN,1)*127; F_Shtex(14+OX,8+OY,NAME$(PERS),7); Paste Icon 145+OX,78+OY,50+(CUL(PERS)*3); Paste Icon 5+OX,11+OY,50+(CUL(PERS)*3); Ink 0; Bar 110+OX,10+OY To 153+OX,17+OY; if (MONEY(PERS)>99999) { F_Tex(103+OX,10+OY,Str$(MONEY(PERS)/1000)+"k"); } else { F_Tex(103+OX,10+OY,Str$(MONEY(PERS))); } if (DIS==-1) { Goto SKIPE; } if (DIS==0) { Paste Bob 4+OX,68+OY,312+CTYP; if (CTYP==3) { Gosub SHOLOAN; } for (ITEM=0;ITEM<=4;ITEM++) { Bar 78+OX,23+OY+(ITEM*9) To 107+OX,31+OY+(ITEM*9); F_Tex(72+OX,24+OY+(ITEM*9),Str$(ITEM(ITEM+10,PERS+1))); } } if ((DIS>0) && (DIS<6)) { ITEM=DIS-1; Bar 78+OX,23+OY+(ITEM*9) To 107+OX,31+OY+(ITEM*9); F_Tex(72+OX,24+OY+(ITEM*9),Str$(ITEM(ITEM+10,PERS+1))); } if ((CTYP==0) || (CTYP==1) || (CTYP==2)) { PLUSS=CTYP*5; if (CTYP==2) { PLUSS=16; } for (G=0;G<=4;G++) { if (ITEM(G+PLUSS,PERS+1)==0) { Paste Bob 79+OX,77+OY+(G*9),310; } else { Paste Bob 79+OX,77+OY+(G*9),311; } Set Zone(24-G)+(CORN*25),76+OX,(113+OY)-(G*9) To 90+OX,(122+OY)-(G*9); } } else { Set Zone 20+(CORN*25),46+OX,90+OY To 63+OX,98+OY; Set Zone 21+(CORN*25),46+OX,100+OY To 63+OX,110+OY; } if ((DIS>5) && (DIS<11)) { ITEM=DIS-6; if (ITEM(ITEM+PLUSS,PERS+1)==0) { Paste Bob 79+OX,77+OY+(ITEM*9),310; } else { Paste Bob 79+OX,77+OY+(ITEM*9),311; } } Paste Bob 142+OX,87+OY,310+ITEM(_EXTRA,PERS+1); SKIPE: Return; SHADE: DEEND++; SPR=CORNER(CORN); if (SPR>-1) { if ((LOAN(SPR)>0) && (MONEY(SPR)>0)) { BIGG=Min(MONEY(SPR),LOAN(SPR)); Add LOAN(SPR),-BIGG; Add MONEY(SPR),-BIGG; DIS=0; Gosub SHO; Wait 10; } } CORNER(CORN)=-1; if (CORN==0) { Paste Bob 0,0,320; } if (CORN==1) { Paste Bob 160,0,Hrev(320); } if (CORN==2) { Paste Bob 0,127,Vrev(320); } if (CORN==3) { Paste Bob 160,127,Hrev(Vrev(320)); } if (CORNER(4)>-1) { Swap CORNER(CORN),CORNER(4); Gosub NEWONE; Gosub SHOIM; DEEND--; } else { if (CORNER(5)>-1) { Swap CORNER(CORN),CORNER(5); Gosub NEWONE; Gosub SHOIM; DEEND--; } } Return; NEWONE: OX=CPOS(CORN,0)*160; OY=CPOS(CORN,1)*127; F_Sam(12,3000); for (A=1;A<=60;A++) { Screen Copy 1,80-(A*1.25),64-A,80+(A*1.25),64+A To 0,OX+80-(A*1.25),OY+64-A; } Screen Copy 1,0,0,160,128 To 0,OX,OY; Return; MOVM: CORN=0; do { if (CORNER(CORN)==-1) { Goto DEEND; } PERS=CORNER(CORN); A=CORN*2; F_Whichcont(CONTR(PERS)); if (MOVE(1)) { Sprite A,,Max(CPOS(A/2,1)*127+68,Y Sprite(A)-2),; } if (MOVE(2)) { Sprite A,,Min((CPOS(A/2,1)+1)*127+32,Y Sprite(A)+2),; } if (MOVE(3)) { Sprite A,Min((CPOS(A/2,0)+1)*160+116,X Sprite(A)+2),,; } if (MOVE(4)) { Sprite A,Max(CPOS(A/2,0)*160+138,X Sprite(A)-2),,; } if (MOVE(0)) { MZ=Hzone(X Sprite(A),Y Sprite(A)); Gosub ZON; Goto DEEND; } DEEND: CORN++; } while (!(CORN>3)); Return; ZON: A=A/2; if (Timer11) && (MZ<15) || (MZ==15)) { DIS=0; if (CTYP(A)==MZ-12) { Add CTYP(A),1,0 To 2; } else { CTYP(A)=MZ-12; } F_Sam(6,4000); CORN=A; Gosub SHO; CWAIT(A)=Timer+16; Goto DEND; } if ((MZ>1) && (MZ<12)) { ITEM=MZ/2; ITEM#=MZ/2.0; if (ITEM#==ITEM) { if ((MONEY(PERS)==>ITEM(ITEM+9,0)) && (ITEM(ITEM+9,PERS+1)0) && ((ITEM+9!==_STSPEED) || (ITEM(_STSPEED,PERS+1)>LOWEST))) { Add MONEY(PERS),ITEM(ITEM+9,0); ITEM(ITEM+9,PERS+1)--; DIS=ITEM; Gosub BEEPSHO; } } } if ((MZ>18) && (MZ<25)) { if (MZ==19) { ITEM=_EXTRA; DIS=11; } else { if ((CTYP(A)>0) && (DEM)) { F_Sam(2,5000); Goto DEND; } else { if (CTYP(A)==0) { ITEM=MZ-20; } if (CTYP(A)==1) { ITEM=MZ-15; } if (CTYP(A)==2) { ITEM=MZ-4; } if (CTYP(A)==3) { if (MZ==20) { AM=1000+(GAMES-GAME)*200+Min(3000,SPENDS(PERS)/GAME); if ((GAME==1) || (L(PERS)==1)) { AM=0; } MOUNT=Max(0,Min(AM-LOAN(PERS),20)); } if (MZ==21) { MOUNT=-Min(MONEY(PERS),Min(LOAN(PERS),20)); } if (MOUNT!==0) { Add LOAN(PERS),MOUNT; Add MONEY(PERS),MOUNT; F_Sam(4,21000+(LOAN(PERS)*2)); CORN=A; DIS=-1; Gosub SHO; Gosub SHOLOAN; CWAIT(A)=Timer+4; } Goto DEND; } DIS=MZ-14; } } if (ITEM(ITEM,PERS+1)==0) { if (MONEY(PERS)==>ITEM(ITEM,0)) { Add MONEY(PERS),-ITEM(ITEM,0); ITEM(ITEM,PERS+1)=1; Gosub BEEPSHO; } } else { Add MONEY(PERS),ITEM(ITEM,0); ITEM(ITEM,PERS+1)=0; Gosub BEEPSHO; } } DEND: Return; SHOLOAN: PERS=CORNER(CORN); Ink 0; Bar 64+OX,80+OY To 105+OX,88+OY; if ((GAME==1) || (L(PERS)==1)) { LUN=0; } else { LUN=1000+(GAMES-GAME)*200+Min(3000,SPENDS(PERS)/GAME); } F_Tex(57+OX,81+OY,Str$(LUN)); Bar 61+OX,95+OY To 105+OX,103+OY; F_Tex(57+OX,96+OY,Str$(LOAN(PERS))); Bar 64+OX,110+OY To 105+OX,118+OY; P=LOAN(PERS)*1.2; F_Tex(57+OX,111+OY,Str$(P)); Return; } void F_Options(void) { F_Makeit(62,84); F_Tex(104,30,"Game Options"); F_Tex(80,136,"Press Here To EXIT"); Reserve Zone 30; ZON=1; for (PASS=0;PASS<=6;PASS++) { Paste Bob 20,40+(PASS*13),34; Paste Bob 36,40+(PASS*13),35; Paste Bob 127,40+(PASS*13),35; Paste Bob 167,40+(PASS*13),35; Gosub SHO; if (((PASS>1) && (PASS<6)) || (DEM==0)) { Set Zone ZON,262,40+(PASS*13) To 274,51+(PASS*13); Set Zone ZON+1,274,40+(PASS*13) To 286,51+(PASS*13); Paste Bob 265,42+(PASS*13),31; Paste Bob 275,42+(PASS*13),32; } else { F_Tex(270,42+(PASS*13),"N/A"); } Add ZON,2; } Set Zone 30,60,135 To 240,150; F_Wat0(); for (;;) { F_Movemouse(); if (MKEY==0) { Goto NOKEY; } if (MZ==30) { break; } if ((MZ==1) || (MZ==2)) { Add GAMES,(1-(MZ-1))*2-1,3 To 30; PASS=0; Gosub UPDAT; } if ((MZ==3) || (MZ==4)) { Add TIME,(1-(MZ-3))*2-1,4 To 15; PASS=1; Gosub UPDAT; } if ((MZ==5) || (MZ==6)) { Add PARTS,(1-(MZ-5))*2-1,5 To 6; PASS=2; Gosub UPDAT; } if ((MZ==7) || (MZ==8)) { Add _KEYS,(1-(MZ-7))*2-1,0 To 2; PASS=3; Gosub UPDAT; } if ((MZ==9) || (MZ==10)) { Add _SCORE,(1-(MZ-9))*2-1,0 To 1; PASS=4; Gosub UPDAT; } if ((MZ==11) || (MZ==12)) { Add _STAT,(1-(MZ-11))*2-1,0 To 1; PASS=5; Gosub UPDAT; } if ((MZ==13) || (MZ==14)) { Add _VIR,(1-(MZ-13))*2-1,0 To 2; PASS=6; Gosub UPDAT; } NOKEY: } F_Sam(11,23000); F_Fad($F,0); return 0; SHO: Ink 12; Wait Vbl; if (PASS<2) { Bar 142,42+(PASS*13) To 256,49+(PASS*13); } if (PASS==0) { F_Tex(22,42+(PASS*13),"Amount Of Games "+Str$(GAMES)); } if (PASS==1) { F_Tex(22,42+(PASS*13),"Minutes Per Game "+Str$(TIME)); } if (PASS==2) { F_Tex(22,42+(PASS*13),"Growth Type"); Paste Bob 230,41+(PASS*13),45-PARTS; } if (PASS==3) { F_Tex(22,42+(PASS*13),"Door Opening Type"); Paste Bob 230,41+(PASS*13),41+_KEYS; } if (PASS==4) { F_Tex(22,42+(PASS*13),"Points awarding Screens"); Paste Bob 230,41+(PASS*13),43+_SCORE; } if (PASS==5) { F_Tex(22,42+(PASS*13),"Statistics Screen"); Paste Bob 230,41+(PASS*13),43+_STAT; } if (PASS==6) { F_Tex(22,42+(PASS*13),"Viruses"); Paste Bob 230,41+(PASS*13),43+_VIR; } Return; UPDAT: Gosub SHO; F_Sam(8,30000); Wait 3; Return; } void F_Finalscores(void) { if (GAME0) { if ((L(POS)>1) && (L(POS)==L(WININ(A-1)))) { Goto LX; } } if (L(POS)) { Paste Icon 49,69+A*13,15+L(POS); } if (MONEY(POS)>99999) { F_Shtex(123,68+A*13,Str$(MONEY(POS)/1000)+"k",7); } else { F_Shtex(123,68+A*13,Str$(MONEY(POS)),7); } F_Shtex(172,68+A*13,Str$(RATE(POS)),7); F_Shtex(207,68+A*13,Str$(SCORE(POS)),7); LX: } } Reserve Zone 30; Set Zone 30,60,210 To 240,235; F_Doscr(15,1); Screen Copy 0 To 1; F_Doscr(15,2); Cls 0; Screen 0; Cls 0; Screen Show 0; Sprite Off; Wait Vbl; A=1; do { A++; F_Sam(6,4080+A*30); Timer=0; Zoom 1,20,0,300,255 To 2,160-A,Max(0,128-A),159+A,Min(255,127+A); Screen Copy 2 To 0; do { } while (!(Timer>3)); } while (!(A>39)); Wait 40; F_Madcry(7,4080,4); Wait 120; F_Fad(4095,0); Screen Copy 1 To 0; F_Madcry(5,4000,1); Wait 10; Fade 3 To 1; Screen Close 2; for (;;) { F_Movemouse(); if ((MKEY==0) && (Key State(68)==0)) { Goto NOKEY; } if (MZ==30) { break; } NOKEY: } F_Madcry(11,999,1); Sprite Off; Screen Copy 0 To 1; for (A=5;A<=230;A++) { C=1; B=A-1; do { Screen Copy 1,0,A-C,319,A To 1,0,B-C; Add B,-C; C=C*2; } while (!(B<1)); Screen Copy 1 To 0; if (A==130) { F_Fad($F00,20); } } /* Multi Yes */ Fade 2; Wait 30; } void F_Hiscores(int TYP) { Sam Play %1,16,1000; Wait 2; Sam Play %10,16,1001; F_Fad($367,3); Wait 15; F_Doscr(17,1); Screen 0; Reserve Zone 6; for (A=1;A<=6;A++) { Set Zone A,199,10+A*20 To 260,28+A*20; Screen Copy 1,199,6,260,27 To 1,199,10+A*20; } Screen 1; F_Sh(210,13,"Top's"); F_Sh(214,37,"Rate"); F_Sh(210,57,"Speed"); F_Sh(214,77,"Size"); F_Sh(210,97,"Money"); F_Sh(210,117,"Kills"); F_Sh(206,137,"Points"); for (A=0;A<=19;A++) { if (A<9) { F_Sh(31,31+A*11," "+Str$(A+1)); } else { F_Sh(31,31+A*11,Str$(A+1)); } } Screen 0; Gosub SHO; Fade 5 To 1; Timer=0; OM=X Mouse+Y Mouse; for (;;) { F_Movemouse(); if (Timer>2200) { break; } if (X Mouse+Y Mouse!==OM) { Timer=0; OM=X Mouse+Y Mouse; } if (MKEY>0) { if (MZ==0) { break; } else { if (MZ-1!==TYP) { TYP=MZ-1; F_Sam(21,3000); Gosub SHO; Timer=0; } } } } do { F_Movemouse(); } while (!(MKEY==0)); F_Fad($F00,1); Wait 14; return 0; SHO: F_Load(TYP); Screen Copy 1 To 0; if (TYP==0) { F_Sh(70,13,"Best Ratings"); } if (TYP==1) { F_Sh(75,13,"Best Speeds"); } if (TYP==2) { F_Sh(78,13,"Best Sizes"); } if (TYP==3) { F_Sh(53,13,"Best $ Collectors"); } if (TYP==4) { F_Sh(56,13,"Best Kill Points"); } if (TYP==5) { F_Sh(56,13,"Best Game Points"); } for (A=0;A<=19;A++) { F_Sh(58,31+A*11,HI$(A)); EX$=" "; if (TYP==3) { EX$="$"; } F_Sh(140,30+A*11,EX$+Str$(HI(A))-" "); } Return; } /* Setup Procs */ void F_Newleague(int TP) { if (TP==1) { F_Loadops(2); } CONTEND=0; for (A=0;A<=MEN;A++) { for (B=0;B<=20;B++) { ITEM(B,A+1)=0; } SCORE(A)=0; MONEY(A)=1000; LOAN(A)=0; SPENDS(A)=0; if (CONTR(A)!==7) { CONTEND++; } WININ(A)=A; } GAMEOVER=0; GAME=0; if (TP==1) { F_Loadsave(1); } Screen Close 7; } void F_Newgame(void) { F_Doscr(12,1); F_Sort(GAME); if ((GAME==GAMES) && (DEMO==0)) { F_Doscr(14,0); F_Fad(0,0); Ink 12; Bar 48,160 To 268,190; F_Sh(124,55,"Last Game"); F_Sh(55,68,"Name"); F_Sh(130,68," Rate"); F_Sh(180,68," Odds"); TP=-1; FAV=0; for (A=0;A<=MEN;A++) { POS=WININ(A); if ((CONTR(POS)!==7) && (TP0) { if ((L(POS)>1) && (L(POS)==L(WININ(A-1)))) { Goto LX; } } F_Tex(130,80+A*10,Str$(RATE(POS))); if (FAV==POS) { F_Tex(180,80+A*10," Favourite"); } else { RT=2+((TP-RATE(POS))/(40-GAME)); if (RT>12) { F_Tex(180,80+A*10," Bubbled!"); } else { F_Tex(180,80+A*10,Str$(RT)+"-1"); } } } LX: } Sprite Off; Screen Show 0; F_Madcry(15,600,1); F_Fad($606,7); Wait 50; Fade 8 To 1; Wait 350; F_Fad($606,10); F_Madcry(16,4000,50); Wait 150; Fade 4; Wait 64; } JJJJ=0; if ((GAME>(1+DEM)) && (Rnd(3+DEM)==0)) { JJJJ=Rnd(26)+1; FF$=Str$(JJJJ)-" "; Load "sneechfiles/screens/screen"+FF$+".dat",6; F_Doscr(20,0); F_Fad($FFF,0); PASS=160; F_Cen(60,"Random Factors Arena"); F_Cen(80,"Arena No."+FF$); PZ=1; N$=""; for (;;) { A$=Chr$(Peek(Start(6)+198+PZ)); if (A$=="*") { break; } N$=N$+A$; PZ++; } F_Cen(100,N$); Wait 100; Screen Show 0; F_Madcry(21,10600,10); Fade 3 To 1; Wait 280; Fade 9; F_Madcry(16,4000,50); Wait 140; } Screen Close 1; F_Doscr(12,0); Screen Open 1,336,304,32,Lowres; Screen Hide 1; Flash Off; Get Palette 0; Screen Copy 0 To 1; Paste Bob 0,0,37; Screen 0; F_Fad(0,0); Screen Display 0,128,40,320,266; Screen Offset 0,20,27; Hide On; X(0)=10; Y(0)=12; X(1)=BIGX-10; Y(1)=12; X(2)=10; Y(2)=BIGY-12; X(3)=BIGX-10; Y(3)=BIGY-12; X(4)=10; Y(4)=BIGY/2; X(5)=BIGX-10; Y(5)=BIGY/2; X(6)=BIGX-25; Y(6)=BIGY-12; X(7)=BIGX-25; Y(7)=12; X(8)=25; Y(8)=BIGY-12; X(9)=25; Y(9)=12; for (A=0;A<=BIGY;A++) { for (B=0;B<=BIGX;B++) { GRID(B,A)=0; SHADE(B,A)=0; SLIP(B,A)=0; } } for (A=0;A<=BIGX;A++) { SHADE(A,0)=2; SHADE(A,1)=1; SHADE(A,BIGY-1)=1; SHADE(A,BIGY)=2; } for (A=1;A<=BIGY-1;A++) { SHADE(0,A)=2; SHADE(1,A)=1; SHADE(BIGX-1,A)=1; SHADE(BIGX,A)=2; } for (A=0;A<=2;A++) { for (B=0;B<=2;B++) { SHADE(A,B)=0; SHADE(BIGX-A,B)=0; SHADE(BIGX-A,BIGY-B)=0; SHADE(A,BIGY-B)=0; } } Channel 10 To Screen Offset 0; _EXITX=-1; _EXITY=-1; VIRUS=-1; if (JJJJ==0) { Goto NOLAST; } NSH=33; PLC=0; for (;;) { X=Peek(Start(6)+PLC)-10; PLC++; Y=Peek(Start(6)+PLC)-10; PLC++; if (X==-2) { NSH=Y; Goto LLL; } if (X==-1) { break; } if ((NSH>99) && (NSH<300)) { Add NSH,220; } if (NSH>319) { F_Putslope(X,Y,NSH); } if ((NSH==48) || (NSH==33)) { F_Putblock(X,Y,8,8,NSH); } if (NSH==8) { F_Putblock(X,Y,6,6,NSH); } if ((NSH==74) || (NSH==75)) { F_Puthole(X,Y,NSH); } if (NSH==49) { F_Putslip(X,Y,1,NSH); } LLL: } NOLAST: HUMANS=0; CONTESTANTS=0; OVER=0; for (A=0;A<=MEN;A++) { if (CONTR(A)!==7) { DX(A)=0; DY(A)=0; TL(A)=1; LTH(A)=1; STACK(A)=ITEM(_STSIZ,A+1); SIZ(A)=10; SPC(A)=0; SPEED(A)=(6-LOWEST)-ITEM(_STSPEED,A+1); DEAD(A)=0; BOOSTER(A)=-50; OUT(A)=-1; KILBON(A)=0; BIGBON(A)=0; SPEEDBON(A)=0; COUNTER(A)=0; STUCK(A)=0; FINISH(A)=0; KILS(A,0)=0; PARTX(A)=BIGX/2; PARTY(A)=BIGY/2; for (PIP=0;PIP<=BIG+1;PIP++) { TAIL(A,0,PIP)=X(A); TAIL(A,1,PIP)=Y(A); } Paste Bob((X(A)-1)*4)+32,((Y(A)-1)*4)+32,10; Paste Icon(X(A)*4)+32,(Y(A)*4)+32,50+(CUL(A)*3); for (PIP=0;PIP<=MEN;PIP++) { DAM(A,PIP)=0; } for (ITS=0;ITS<=20;ITS++) { if ((ITEM(ITS,12)==1) && (ITEM(ITS,A+1)==1)) { ITEM(ITS,A+1)=2; } BITS(ITS,0)=-1; BITS(ITS,1)=-1; } if (CONTR(A)<6) { HUMANS++; } if (CONTR(A)<7) { CONTESTANTS++; } } } BID=0; IT=-5; for (A=0;A<=MEN;A++) { if (CONTR(A)<7) { if (CONTR(A)==6) { KIL(A)=KILPTS(CUL(A))+(RATE(A)/15)+((10-CONTESTANTS)*5); } else { KIL(A)=45+(RATE(A)/12); } if ((BID==0) && (GAME>1) && (GAME3)) { KIL(A)=110+(CONTESTANTS*10); BID++; IT=A; } /* Every TIME IT */ /* If BID<1 : KIL(A)=150 : Inc BID : IT=A : End If */ if (Len(NAME$(A))<9) { SPICE=7; } else { if (Len(NAME$(A))<10) { SPICE=6; } else { SPICE=5; } } Gosub XY; Paste Bob PLX,PLY,50; F_Shtex(PLX,PLY,NAME$(A),SPICE); F_Tex(PLX+27,PLY+12,Str$(KIL(A))); } } OPEN=0; if (_KEYS==0) { F_Openup(0,0,0); } F_Madcry(1,2300,4); Screen Show 0; Fade 4 To 1; Gosub PUS; Gosub PUS; Gosub PUS; Gosub PUS; Gosub PUS; SECS=24; Sam Play %1100,4,10000; Gosub PUS; Sam Play %11,3,10000; Gosub PUS; Sam Play %1100,2,9200; Gosub PUS; Sam Play %11,1,10000; Wait 20; Bob Off; Wait Vbl; for (MAN=0;MAN<=MEN;MAN++) { if (CONTR(MAN)!==7) { Screen Copy 1,(X(MAN)-1)*4+32,(Y(MAN)-1)*4+32,(X(MAN)-1)*4+44,(Y(MAN)-1)*4+44 To 0,(X(MAN)-1)*4+32,(Y(MAN)-1)*4+32; Paste Icon(X(MAN)*4)+32,(Y(MAN)*4)+32,50+(CUL(MAN)*3); } } for (_DO=0;_DO<=10;_DO++) { for (A=0;A<=MEN;A++) { if (CONTR(A)!==7) { Gosub XY; Screen Copy 1,PLX,PLY+_DO,PLX+65,PLY+1+_DO To 0,PLX,PLY+_DO; Screen Copy 1,PLX,(PLY+21)-_DO,PLX+65,(PLY+22)-_DO To 0,PLX,(PLY+21)-_DO; Screen Copy 1,PLX+_DO,PLY,PLX+_DO+1,PLY+22 To 0,PLX+_DO,PLY; Screen Copy 1,PLX+63-_DO,PLY,PLX+64-_DO,PLY+22 To 0,PLX+63-_DO,PLY; } } Wait Vbl; } Wait 10; MEGAX=-1; MEGAY=-1; return 0; XY: PLX=Min(258,Max(15,(X(A)*4)+4)); if (A<4) { PLY=Min(205,Max(94,(Y(A)*4+32))); } else { if (Y(A)>46) { PLY=250; } else { PLY=49; } if (A==4) { PLX=84; PLY=147; } if (A==5) { PLX=220; PLY=147; } } Return; PUS: Timer=0; for (;;) { for (A=0;A<=MEN;A++) { if (IT==A) { Bob 1,X(A)*4+23+Rnd(3),Y(A)*4+23+Rnd(3),51; } } Wait Vbl; GAMETIME=Min(120,GAMETIME+1); F_Shotime(); if (Timer>38) { break; } if (Key State(25)) { F_Pause(); Timer=0; } } Return; } void F_About(void) { F_Makeit(124,125); PASS=160; if (DEM) { Restore DEMO; } else { Restore STUF; } J=8; for (;;) { Read A$; if (A$=="*") { break; } F_Cen(J,A$); if (A$==" ") { Add J,5; } else { Add J,9; } } F_Wat0(); do { F_Movemouse(); } while (!(MKEY)); F_Sam(5,15000); F_Sam(5,15002); F_Fad($F00,0); STUF: Data "Sneech V1.51 (25.4.97)"; Data " ","Graphics, Sound and Code By Paul Burkey."; Data "With Help From Bazza, Maxi, Jase, Kathy."," "; Data "Big Thanks also to Fool et Magilac, G Wood"; Data "P Oliver, I Croucher, E Cousins, B Seaton,"; Data "S Peck, P Branney, R Hanson, D Campbell,"; Data "Hatstand, R.K Withers, A+L Atkins, P Bevan"; Data "I Ashby, N Hutchison, R Nolan, P Sydell,"; Data "J Rowe, D Schoolwerth and Marco Antonio."," "; Data "And all the other Registered Users from"; Data "all over the world...."," "; Data " ","Contact Me at:-"," "; Data "Email: paul@sneech.demon.co.uk"; Data "WWW: http://www.sneech.demon.co.uk/" Data "IRC: shoecake"," "; Data "Snail Mail to :-"," "; Data "Paul Burkey"; Data "32 Cottage Close"; Data "Little Neston"; Data "South Wirral"; Data "L64 9RB, England","*"; DEMO: Data "Sneech Demo V1.51 (25.4.97)"; Data " ","Graphics, Sound and Code By Paul Burkey."," "; Data "The Full version has all 10 players!"; Data "Full team options and 3-30 game leagues!"; Data "A full Shop, Extra Joysticks and more Sound!"; Data "Loan feature! Even Better Computer Opponents!"; Data "Load & Save Options and Guru Security!"; Data "Read the Docs supplied for Full details!"," "; Data "If your a real Sneecher then register for"; Data "the full game by sending 5 UK Pounds to."," "; Data "Paul Burkey"; Data "32 Cottage Close"; Data "Little Neston"; Data "South Wirral"; Data "L64 9RB, ENGLAND"," "; Data "You will receive the latest Full Version,"; Data "By Mail or Email"," "; Data "Email me at; paulb@sneech.demon.co.uk"; Data "WWW: http://www.sneech.demon.co.uk/" Data "IRC as; shoecake "," "; Data "*"; } void F_Merge(void) { if (DEM) { F_Allert(1,"No Score Merge","in Demo","Ok","Ok"); return 0; } F_Makeit(124,125); PASS=160; F_Cen(20,"* Sneech HiScores Merge *"); F_Cen(30,"Please wait, Loading Scores..."); Gosub LD; PASS=160; F_Cen(60,"Insert other Sneech disk into DF0:"); F_Cen(70,"..Then Press Button or Esc To Exit.."); for (;;) { F_Movemouse(); if (MKEY) { PASS=0; break; } if (Key State(69)) { PASS=1; break; } } if (PASS==1) { Goto LAA; } PASS=160; F_Cen(100,"Please Wait, Reading 2nd Disk..."); do { } while (!(Exist("df0:sneech"))); /* ------------------------------- Load And Merge ------------- */ for (TYP=0;TYP<=5;TYP++) { for (A=0;A<=39;A++) { HI$(A)=" "; HI(A)=0; } Dir$="df0:"; F_Load(TYP); F_Loadcpt("ram:scores"+Right$(Str$(TYP),1)+".dat"); for (PEE=0;PEE<=19;PEE++) { F_Getname(PEE); NAME$=PASS$; RATE=PASS; for (G=0;G<=39;G++) { if (Upper$(HI$(G))==Upper$(NAME$)) { if (RATE>HI(G)) { HI(G)=RATE; } break; } if (HI$(G)==" ") { HI(G)=RATE; HI$(G)=NAME$; break; } } } F_Savehidata(TYP); } Gosub LD; PASS=160; F_Cen(130,"If you booted from Floppy then you should"); F_Cen(140,"Swap back to your Boot disk now."); F_Cen(150,"If you Booted from HD, Remove Disk from DF0:"); F_Cen(160,"..Press Button or Esc To Exit.."); for (;;) { F_Movemouse(); if (MKEY) { PASS=0; break; } if (Key State(69)) { PASS=1; break; } } if (PASS==1) { Goto LAA; } PASS=160; F_Cen(190,"Please Wait, Saving To 1st Disk..."); Dir$=DEF$; do { } while (!(Exist("sneech"))); for (A=0;A<=5;A++) { F$="ram:scores"+Right$(Str$(A),1)+".dat"; if (Exist(F$)) { Load F$,10; Kill F$; Save "Sneechfiles/scores"+Right$(Str$(A),1)+".dat",10; } } F_Cen(230,"Click To Exit!"); for (;;) { F_Movemouse(); if (MKEY) { break; } } LAA: F_Wat0(); F_Sam(5,15000); F_Sam(5,15002); F_Fad($F00,0); return 0; LD: for (A=0;A<=5;A++) { Load "Sneechfiles/scores"+Right$(Str$(A),1)+".dat",10; Save "ram:scores"+Right$(Str$(A),1)+".dat",10; } Return; } void F_Culmenu(void) { F_Makeit(36,91); for (A=0;A<=3;A++) { F_Shtex(16+A*72,60,Right$("****Star",5+A),7); for (B=0;B<=5;B++) { PERS=STARS(A,B); if (PERS>==0) { Paste Icon 10+A*72,75+B*9,50+(PERS*3); F_Shtex(20+A*72,71+B*9,Right$(COMP$(PERS),Len(COMP$(PERS))-3),7); } } } Sprite 4,X Sprite(0),Y Sprite(0),23; Limit Mouse 138,117 To 420,165; F_Wat0(); do { OY=(Y Mouse-113)/9; if (DEM) { if ((OY==0) || (OY==2)) { OX=Min(2,(X Mouse-135)/72); } else { OX=Min(1,(X Mouse-135)/72); } } else { OX=(X Mouse-135)/72; } F_Movemouse(); if (STARS(OX,OY)<0) { Add OY,STARS(OX,OY); } CUL(PASS)=STARS(OX,OY); Sprite 2,133+(OX*72),111+(OY*9),46; } while (!(MKEY)); Limit Mouse; F_Sam(5,15000); F_Sam(5,15002); F_Fad(_FLASHCOL(CUL(PASS)),0); Sprite Off 2; X Mouse=X Sprite(4); Y Mouse=Y Sprite(4); Sprite Off 4; } void F_Makeit(int HIT,int MID) { Screen Copy 0 To 1; F_Sam(3,2100); F_Sam(3,2102); for (A=2;A<=HIT;A++) { Screen Copy 1,0,0,320,6 To 0,0,MID-A; Screen Copy 1,0,250,320,255 To 0,0,MID+A; } } void F_Setup(void) { if ((Chip Free<500000) || (DEM)) { _MEMORY=0; } else { _MEMORY=1; } DEF$=Dir$; /* Erase All */ /* Load Iff "SneechIff/mainscreen.iff",0 : Spack 0 To 16 : Save "sneechfiles/MainScreen.abk",16 */ /* Load Iff "SneechIff/Random.iff",0 : Spack 0 To 16 : Save "sneechfiles/Random.abk",16 */ /* Load Iff "SneechIff/DaliHide.iff",0 : Spack 0 To 16 : Save "sneechfiles/DaliHide.abk",16 */ /* Load Iff "SneechIff/menuscreen.iff",0 : Spack 0 To 16 : Save "sneechfiles/MenuScreen.abk",16 */ /* Load Iff "SneechIff/blankscreen.iff",0 : Spack 0 To 16 : Save "sneechfiles/BlankScreen.abk",16 */ /* Load Iff "SneechIff/leaguescreen.iff",0 : Spack 0 To 16 : Save "sneechfiles/LeagueScreen.abk",16 */ /* Load Iff "SneechIff/StatsScreen.iff",0 : Spack 0 To 16 : Save "sneechfiles/StatsScreen.abk",16 */ /* Load Iff "SneechIff/ShopScreen.iff",0 : Spack 0 To 16 : Save "sneechfiles/ShopScreen.abk",16 */ /* Load Iff "SneechIff/HiScreen.iff",0 : Spack 0 To 16 : Save "sneechfiles/HiScreen.abk",16 */ /* Load Iff "SneechIff/Icons.iff",0 : Spack 0 To 16 : Save "sneechfiles/Icons.abk",16 */ /* End */ Restore COMP; for (A=0;A<=19;A++) { Read COMP$(A),KILPTS(A),A$,CPREF(A,0),CPREF(A,1),CPREF(A,2),A$,AHEAD(A),MSPEED(A); } COMP: Data "Mr.Red",50," ",12,14,11,"",4,2; Data "Mr.Blue",50," ",14,12,7," ",4,2; Data "Mr.Green",50," ",14,7,11," ",4,1; Data "Mr.Blonde",60,"",7,12,11," ",9,0; Data "Mr.Black",60," ",13,14,7," ",9,0; Data "Mr.White",50," ",11,12,11,"",4,2; Data "Mr.Pink",58," ",11,7,11," ",6,0; Data "Mr.Orange",60,"",7,11,0," ",9,0; Data "Mr.Grey",50," ",14,7,11," ",4,2; Data "Mr.Chrome",60,"",11,13,14,"",9,0; Data "Mr.Gold",54," ",14,12,11,"",6,1; Data "Mr.Bogey",54," ",7,11,2," ",6,1; Data "Mr.Dark",54," ",13,7,11," ",8,1; Data "Mr.Deep",60," ",13,7,13," ",9,0; Data "Mr.Sky",54," ",11,12,11,"",8,1; Data "Mr.Check",58," ",7,11,2," ",8,1; Data "Mr.Banana",58,"",7,2,11," ",8,1; Data "Mr.Purple",58,"",11,7,14," ",8,0; Data "Mr.Ball",45," ",7,11,2," ",8,3; Data "Mr.Sheen",60," ",11,13,14,"",9,0; Restore ITEMS; do { Read A; Read ITEM(A,0),ITEM(A,13),ITEM(A,14),ITEM(A,12); } while (!(A==20)); ITEMS: Data 0,350,1,1,1; Data 1,230,0,0,1; Data 2,300,1,4,0; Data 3,500,0,0,1; Data 4,150,1,5,1; Data 5,800,0,0,0; Data 6,150,0,0,1; Data 7,300,1,1,1; Data 8,400,1,3,1; Data 9,600,0,0,1; Data 10,10,100,0,0; Data 11,400,4,2,0; Data 12,250,10,2,2; Data 13,200,10,2,2; Data 14,200,10,1,2; Data 15,600,1,4,2; Data 16,500,1,10,0; Data 17,250,1,5,0; Data 18,300,1,0,1; Data 19,600,1,15,1; Data 20,250,1,10,1; Restore STARS; for (A=0;A<=3;A++) { for (B=0;B<=5;B++) { Read STARS(A,B); } } STARS: Data 0,1,2,-1,5,8; Data 6,-1,11,10,-1,-2; Data 17,14,15,16,18,12; Data 7,13,19,3,9,4; _STUN=0; _SCOOP=1; _RF=2; _PT=3; _NOM=4; _CON=5; _SLSC=6; _SREV=7; _SUV1=8; _BOOST=9; _STSIZ=10; _STSPEED=11; _REV=12; _BOMB=13; _BOMBB=14; _EXTRA=15; _SH1=16; _SH2=17; _ATURN=18; _BGRAB=19; _SGRAB=20; SPEED=31; PART=30; SLOW=32; MONEY=33; BLOCK=40; HOLE=41; _EXIT=43; GOLD=34; MEGA=35; FRBOMB=36; EXL=37; _VIRUS=44; _MINE=45; FRDEF=46; KEY=38; BW=39; STRAWB=42; CPOS(0,0)=0; CPOS(0,1)=0; CPOS(1,0)=1; CPOS(1,1)=0; CPOS(2,0)=0; CPOS(2,1)=1; CPOS(3,0)=1; CPOS(3,1)=1; SCOOPCO(0,0)=-1; SCOOPCO(0,1)=0; SCOOPCO(1,0)=0; SCOOPCO(1,1)=-1; SCOOPCO(2,0)=1; SCOOPCO(2,1)=0; SCOOPCO(3,0)=0; SCOOPCO(3,1)=1; KEYS(0,0)=99; KEYS(0,1)=96; KEYS(0,2)=102; KEYS(0,3)=100; KEYS(1,0)=76; KEYS(1,1)=77; KEYS(1,2)=78; KEYS(1,3)=79; for (XXX=0;XXX<=75;XXX++) { for (YYY=0;YYY<=25;YYY++) { _DOOR(XXX,YYY)=2; _DOOR(XXX,63-YYY)=3; } } for (XXX=0;XXX<=25;XXX++) { for (YYY=0;YYY<=63;YYY++) { _DOOR(XXX,YYY)=1; _DOOR(75-XXX,YYY)=4; } } Restore SLOPES; for (SL=0;SL<=7;SL++) { Read SLOPE(SL,1,0),SLOPE(SL,1,2),SLOPE(SL,0,1),SLOPE(SL,2,1); } SLOPES: Data -1,1,-1,1; Data -1,1,1,-1; Data 1,-1,-1,1; Data 1,-1,1,-1; Data -1,1,0,0; Data 0,0,-1,1; Data 0,0,1,-1; Data 1,-1,0,0; /* For GG=1 To 5 */ /* For X=0 To 39 */ /* HI$(X)=" " */ /* HI(X)=0 */ /* Next X */ /* _SAVE_HIDATA[GG] */ /* Next GG */ } /* Game Procs */ void F_Scrol(void) { if (OPEN) { F_Chekdoors(); } CN=0; MIDX=0; MIDY=0; SMX=100; SMY=100; BIX=0; BIY=0; for (A=0;A<=MEN;A++) { if ((DEAD(A)==0) && (CONTR(A)<7)) { if (CONTR(A)==6) { CN++; Add MIDX,X(A); Add MIDY,Y(A); } else { Add CN,4; Add MIDX,(X(A)*4); Add MIDY,(Y(A)*4); SMX=Min(SMX,X(A)); SMY=Min(SMY,Y(A)); BIX=Max(BIX,X(A)); BIY=Max(BIY,Y(A)); } } } if (CN>0) { MIDX=MIDX/CN; MIDY=MIDY/CN; } else { Amal 10,"M 24-X,27-Y,16"; Amal On 10; return 0; } MIDX=(MIDX*4)+38; MIDY=(MIDY*4)+41; MIDX=Max(0,Min(48,MIDX-164)); MIDY=Max(0,Min(54,MIDY-137)); if (BIX>BIGX-8) { MIDX=Max(MIDX,24); } if (SMX<8) { MIDX=Min(MIDX,24); } if (BIY>BIGY-8) { MIDY=Max(MIDY,27); } if (SMY<8) { MIDY=Min(MIDY,27); } Amal 10,"M "+Str$(MIDX)+"-X,"+Str$(MIDY)+"-Y,16"; Amal On 10; } void F_Computer(void) { OLDDX=DX(MAN); OLDDY=DY(MAN); SUGEST=-1; F_Ok(X(MAN)+DX(MAN),Y(MAN)+DY(MAN)); if (Param==False) { if (VIRUS==MAN) { PS=GRID(OKX,OKY); if ((PS>0) && (PS<11) && (PS-1!==MAN)) { if ((L(MAN)<2) || (L(MAN)!==L(PS-1))) { return 0; } } } if (DX(MAN)==0) { SUGEST=1; } else { SUGEST=0; } } else { if ((Rnd(100)==0) || ((MAN==VIRUS) && (Rnd(10)==0))) { F_Findpart(X(MAN),Y(MAN),MAN); } } if ((PARTX(MAN)<-1) && (PARTX(MAN)>-12)) { TM=(-(PARTX(MAN)+2)); if (VIRUS==MAN) { CHASEX=X(TM); CHASEY=Y(TM); } else { CHASEX=X(TM)+(DX(TM)*3); CHASEY=Y(TM)+(DY(TM)*3); } } else { CHASEX=PARTX(MAN); CHASEY=PARTY(MAN); } if (SUGEST==-1) { if (CHASEY==Y(MAN)) { if ((X(MAN)>CHASEX) && (DX(MAN)==0)) { DX(MAN)=-1; DY(MAN)=0; Goto DUN; } if ((X(MAN)CHASEY) && (DY(MAN)==0)) { DX(MAN)=0; DY(MAN)=-1; Goto DUN; } if ((Y(MAN)X(MAN)) && (DX(MAN)==-1)) || ((CHASEXY(MAN)) && (DY(MAN)==-1)) || ((CHASEYAHEAD)); } if (SUGEST==-1) { return 0; } if (SUGEST==0) { Gosub UPDOWN; } else { Gosub LEFTRIGHT; } DUN: F_Face(MAN,OLDDX,OLDDY); return 0; UPDOWN: U=1; D=1; for (;;) { F_Ok(X(MAN),Y(MAN)-U); if ((Param==0) || (U>7)) { break; } else { U++; } } for (;;) { F_Ok(X(MAN),Y(MAN)+D); if ((Param==0) || (D>7)) { break; } else { D++; } } if (VIRUS==MAN) { Add U,3; Add D,3; } if (CHASEY7) || (U==>D)) { DY(MAN)=-1; Goto OKE; } } if (CHASEY>Y(MAN)) { if (((Y(MAN)+D>==CHASEY)) || (D>7) || (D==>U)) { DY(MAN)=1; Goto OKE; } } if (U>D) { DY(MAN)=-1; } else { DY(MAN)=1; } OKE: DX(MAN)=0; Return; LEFTRIGHT: L=1; R=1; for (;;) { F_Ok(X(MAN)-L,Y(MAN)); if ((Param==0) || (L>7)) { break; } else { L++; } } for (;;) { F_Ok(X(MAN)+R,Y(MAN)); if ((Param==0) || (R>7)) { break; } else { R++; } } if (VIRUS==MAN) { Add L,3; Add R,3; } if (CHASEX7) || (L>==R)) { DX(MAN)=-1; Goto OK2; } } if (CHASEX>X(MAN)) { if (((X(MAN)+R>==CHASEX)) || (R>7) || (R>==L)) { DX(MAN)=1; Goto OK2; } } if (L>R) { DX(MAN)=-1; } else { DX(MAN)=1; } OK2: DY(MAN)=0; Return; } void F_Findpart(int FX,int FY,int M) { B=0; if (_EXITX==-1) { PARTX(M)=-1; PARTY(M)=-1; if (VIRUS==M) { DISTANCE=16; } else { DISTANCE=180; } } else { PARTX(M)=_EXITX+3; PARTY(M)=_EXITY+3; DISTANCE=Abs(_EXITX-FX)+Abs(_EXITY-FY); if ((GAMETIME<4) || (VIRUS==M)) { return 0; } } do { if (BITS(B,0)!==-1) { BITX=BITS(B,0); BITY=BITS(B,1); ITIS=GRID(BITX,BITY); if (((ITIS!==SPEED) || (SPEED(M)>MSPEED(CUL(M)))) && ((ITIS!==_VIRUS) || (SIZ(M)>50))) { if (OPEN==1) { if ((_DOOR(FX,FY)==1) && (_DOOR(BITX,BITY)==4)) { Add BITX,-81; BITY=Max(Min(BITY,31),24); Goto LL; } if ((_DOOR(FX,FY)==4) && (_DOOR(BITX,BITY)==1)) { Add BITX,81; BITY=Max(Min(BITY,31),24); Goto LL; } if ((_DOOR(FX,FY)==2) && (_DOOR(BITX,BITY)==3)) { Add BITY,-65; BITX=Max(Min(BITX,32),39); Goto LL; } if ((_DOOR(FX,FY)==3) && (_DOOR(BITX,BITY)==2)) { Add BITY,65; BITX=Max(Min(BITX,32),39); Goto LL; } } LL: D=Abs(BITX-FX)+Abs(BITY-FY); if (D-12)) { PARTX(M)=-13; } else { PARTX(M)=BITX; } PARTY(M)=BITY; DISTANCE=D; } } } B++; } while (!(B>20)); BO=((10-SPEED(M))*5)+(SIZ(M)/2)+(KIL(M)/15)+100; if (VIRUS==M) { BO=1000; } P=-1; if ((PARTX(M)==-1) && ((SIZ(M)>12) || (VIRUS==M)) && (GAMETIME<112)) { for (A=0;A<=MEN;A++) { if ((CONTR(A)<7) && (VIRUS!==A) && (DEAD(A)==0) && ((L(M)==0) || ((L(A)!==L(M)))) && (A!==M)) { if (VIRUS==M) { THIS=(Abs(X(A)-FX)+Abs(Y(A)-FY))-(SPEED(A)*8); } else { THIS=(((KIL(A)/15)+(SIZ(A)/2))-(SPEED(A)*8))+Abs(X(A)-FX)+Abs(Y(A)-FY); } if (THIS-1) && (P<==MEN)) { if ((M!==P) && ((L(M)==0) || ((L(P)!==L(M))))) { PARTX(M)=(-P)-2; } } if (PARTX(M)==-1) { PARTX(M)=BIGX/3+(M*5); PARTY(M)=BIGY/3+(M*5); } } void F_Whichcont(int CONT) { if (CONT==0) { F_Humanjoy(0); } if (CONT==1) { F_Humanjoy(1); } if (CONT==2) { F_Humankey(0); } if (CONT==3) { F_Humankey(1); } if (CONT==4) { F_Humanadap(0); } if (CONT==5) { F_Humanadap(1); } } void F_Humancontr(void) { F_Whichcont(CONTR(MAN)); if (DY(MAN)!==-1) { if ((MOVE(1)) && ((GRID(X(MAN),Max(0,Y(MAN)-1))!==MAN+1) || (Y(MAN)==0))) { DX(MAN)=0; DY(MAN)=-1; Goto F; } } if (DY(MAN)!==1) { if ((MOVE(2)) && ((GRID(X(MAN),Min(BIGY,Y(MAN)+1))!==MAN+1) || (Y(MAN)==BIGY))) { DX(MAN)=0; DY(MAN)=1; Goto F; } } if (DX(MAN)!==1) { if ((MOVE(3)) && ((GRID(Min(BIGX,X(MAN)+1),Y(MAN))!==MAN+1) || (X(MAN)==BIGX))) { DX(MAN)=1; DY(MAN)=0; Goto F; } } if (DX(MAN)!==-1) { if ((MOVE(4)) && ((GRID(Max(0,X(MAN)-1),Y(MAN))!==MAN+1) || (X(MAN)==0))) { DX(MAN)=-1; DY(MAN)=0; } } F: if ((MOVE(0)==1) && (ITEM(_BOOST,MAN+1)>0)) { ITEM(_BOOST,MAN+1)=1; BOOSTER(MAN)=Max(45,BOOSTER(MAN)); } } void F_Humanjoy(int _JOY) { if (Jup(_JOY)) { MOVE(1)=1; } else { MOVE(1)=0; } if (Jdown(_JOY)) { MOVE(2)=1; } else { MOVE(2)=0; } if (Jright(_JOY)) { MOVE(3)=1; } else { MOVE(3)=0; } if (Jleft(_JOY)) { MOVE(4)=1; } else { MOVE(4)=0; } if (Fire(_JOY)) { MOVE(0)=1; } else { MOVE(0)=0; } } void F_Humanadap(int T) { JJJ=Peek($BFE101); if (Btst(0+(T*4),JJJ)==0) { MOVE(1)=1; } else { MOVE(1)=0; } if (Btst(1+(T*4),JJJ)==0) { MOVE(2)=1; } else { MOVE(2)=0; } if (Btst(3+(T*4),JJJ)==0) { MOVE(3)=1; } else { MOVE(3)=0; } if (Btst(2+(T*4),JJJ)==0) { MOVE(4)=1; } else { MOVE(4)=0; } if (Btst(1+(T*3),Peek($BFD014))==0) { MOVE(0)=1; } else { MOVE(0)=0; } } void F_Humankey(int K) { for (TY=1;TY<=4;TY++) { if (Key State(KEYS(K,TY-1))) { MOVE(TY)=1; } else { MOVE(TY)=0; } } if (K==0) { if (Key State(49)) { MOVE(0)=1; } else { MOVE(0)=0; } } else { if (Key State(68)) { MOVE(0)=1; } else { MOVE(0)=0; } } } void F_Clbig(int TY) { CX=(MEGAX*4)+32; CY=(MEGAY*4)+32; if (TY==_VIRUS) { PIP=2; } else { PIP=1; } Screen Copy 1,CX,CY,CX+4+(PIP*4),CY+4+(PIP*4) To 0,CX,CY; for (MEGX=MEGAX;MEGX<=MEGAX+PIP;MEGX++) { for (MEGY=MEGAY;MEGY<=MEGAY+PIP;MEGY++) { if (GRID(MEGX,MEGY)==TY) { GRID(MEGX,MEGY)=0; } } } F_Bits(MEGAX,MEGAY,0); MEGAX=-1; } void F_Free(int SPR,int VA,int SAM,int SPE) { if (VA==_VIRUS) { TIP=2; } else { TIP=1; } PX=Rnd(BIGX-TIP); PY=Rnd(BIGY-TIP); SPA=0; for (T1=0;T1<=TIP;T1++) { for (T0=0;T0<=TIP;T0++) { if (GRID(PX+T0,PY+T1)>0) { SPA++; } } } if (SPA==0) { Paste Bob(PX*4)+32,(PY*4)+32,SPR; for (T1=0;T1<=TIP;T1++) { for (T0=0;T0<=TIP;T0++) { GRID(PX+T0,PY+T1)=VA; } } if (VA!==_MINE) { F_Bits(PX,PY,1); MEGAX=PX; MEGAY=PY; } F_Sam(SAM,SPE*1000); } if (VA==_VIRUS) { F_Speed(F_Speed,9); F_Speed(F_Speed,9); } } void F_Freebomb(void) { PX=Rnd(BIGX-1); PY=Rnd(BIGY-1); if ((GRID(PX,PY)==0) && (GRID(PX+1,PY)==0) && (GRID(PX,PY+1)==0) && (GRID(PX+1,PY+1)==0)) { EXX=0; for (GE=0;GE<=MEN;GE++) { if (ITEM(_EXTRA,GE+1)) { EXX++; GE=MEN; } } if ((EXX>0) || (Rnd(8)>0) || (GAMETIME<40)) { if (Rnd(3)==0) { Paste Bob(PX*4)+32,(PY*4)+32,61; GRID(PX,PY)=FRDEF; GRID(PX+1,PY)=FRDEF; GRID(PX,PY+1)=FRDEF; GRID(PX+1,PY+1)=FRDEF; F_Sam(9,25000); } else { Paste Bob(PX*4)+32,(PY*4)+32,27; GRID(PX,PY)=FRBOMB; GRID(PX+1,PY)=FRBOMB; GRID(PX,PY+1)=FRBOMB; GRID(PX+1,PY+1)=FRBOMB; F_Sam(9,20000); } } else { Paste Bob(PX*4)+32,(PY*4)+32,66; GRID(PX,PY)=EXL; GRID(PX+1,PY)=EXL; GRID(PX,PY+1)=EXL; GRID(PX+1,PY+1)=EXL; F_Sam(9,20000); } MEGAX=PX; MEGAY=PY; F_Bits(PX,PY,1); } } void F_Speed(int TY,int SH) { SP=1; PL=-1; SI=100; MN=3500; for (A=0;A<=MEN;A++) { if ((DEAD(A)==0) && (CONTR(A)<7) && (L(A)!==1) && (Rnd(1)==0)) { if ((TY==MONEY) && (MONEY(A)SP)) { SP=SPEED(A); PL=A; } } } if (PL>-1) { PX=Max(0,Min(BIGX,X(PL)+(DX(PL)*7)+(Rnd(28)-14))); PY=Max(0,Min(BIGY,Y(PL)+(DY(PL)*7)+(Rnd(28)-14))); } else { PX=Rnd(BIGX); PY=Rnd(BIGY); } if (GRID(PX,PY)==0) { if (TY!==SLOW) { F_Bits(PX,PY,1); if ((TY==MONEY) && (Rnd(30)==0)) { SH=53; TY=GOLD; } } GRID(PX,PY)=TY; Paste Bob(PX*4)+32,(PY*4)+32,SH; F_Sam(9,20000); } } void F_Kilmoney(int KX,int KY,int TYP) { GT=0; Timer=0; for (;;) { PX=Min(BIGX,Max(0,KX+(Rnd(12)-6))); PY=Min(BIGY,Max(0,KY+(Rnd(12)-6))); if (GRID(PX,PY)==0) { Paste Bob(PX*4)+32,(PY*4)+32,38; GRID(PX,PY)=MONEY; F_Bits(PX,PY,1); GT++; } if ((GT==4-TYP) || (Timer>12)) { break; } } } void F_Lastbonus(int KX,int KY) { GT=0; Timer=0; for (;;) { PX=Min(BIGX,Max(0,KX+(Rnd(10)-5))); PY=Min(BIGY,Max(0,KY+(Rnd(10)-5))); if (GRID(PX,PY)==0) { Paste Bob(PX*4)+32,(PY*4)+32,53; GRID(PX,PY)=GOLD; F_Bits(PX,PY,1); GT++; } if ((GT==3) || (Timer>20)) { break; } if ((GT==2) && (OVER>0)) { break; } } } void F_Slip(void) { AC=7; DN=7; SH=49; SL=1; PX=(Rnd(7)*8)+6; PY=(Rnd(5)*8)+8; NU=0; for (TT=0;TT<=AC;TT++) { for (TTT=0;TTT<=DN;TTT++) { if ((GRID(PX+TT,PY+TTT)!==0) || (SLIP(PX+TT,PY+TTT)!==0) || (SHADE(PX+TT,PY+TTT)!==0)) { NU++; TT=AC; TTT=DN; } } } if (NU==0) { if (Rnd(2)==0) { if (Rnd(4)>0) { if (Rnd(2)==0) { SH=63; } else { SH=74+Rnd(1); } SL=0; F_Sam(16,12999); F_Sam(16,13001); } else { SH=64; SL=-1; F_Sam(16,12999); F_Sam(16,13001); } } else { F_Sam(16,19999); F_Sam(16,20001); } if ((SH==74) || (SH==75) || (SH==63)) { F_Puthole(PX,PY,SH); } else { if (Rnd(25)>0) { F_Putslip(PX,PY,SL,SH); } else { F_Putslip(PX,PY,-2,22); } } } } void F_Slope(void) { J=Rnd(6); Restore Mid$("SMAL WIDE TALL BIGG VWID VTAL BGIN",(J*5)+1,4); Read AC,DN; PX=(Rnd(8-AC)*8)+6; PY=(Rnd(6-DN)*8)+8; NU=0; for (TT=0;TT<=8*AC;TT++) { for (TTT=0;TTT<=8*DN;TTT++) { if ((GRID(PX+TT,PY+TTT)!==0) || (SLIP(PX+TT,PY+TTT)>1) || (SHADE(PX+TT,PY+TTT)!==0)) { NU++; TT=AC*8; TTT=DN*8; } } } if (NU==0) { for (TTT=0;TTT<=DN-1;TTT++) { for (TT=0;TT<=AC-1;TT++) { Read TYP; if (TYP!==0) { F_Putslope(PX+TT*8,PY+TTT*8,TYP); } } F_Sam(9,11000); } } SMAL: Data 2,2,320,322,326,328; WIDE: Data 3,2,320,321,322,326,327,328; VWID: Data 4,2,320,321,321,322,326,327,327,328; VTAL: Data 2,4,320,322,323,325,323,325,326,328; TALL: Data 2,3,320,322,323,325,326,328; BIGG: Data 3,3,320,321,322,323,0,325,326,327,328; BGIN: Data 2,2,329,330,331,324; } void F_Putslip(int PX,int PY,int SL,int SH) { Paste Bob(PX*4)+33,(PY*4)+33,SH; Screen 1; Paste Bob(PX*4)+33,(PY*4)+33,SH; Screen 0; for (TT=0;TT<=7;TT++) { for (TTT=0;TTT<=7;TTT++) { SLIP(PX+TT,PY+TTT)=SL; } } } void F_Puthole(int KX,int KY,int TYP) { Paste Bob(KX*4)+33,(KY*4)+33,TYP; Screen 1; Paste Bob(KX*4)+33,(KY*4)+33,TYP; Screen 0; if (TYP==74) { for (TTT=0;TTT<=1;TTT++) { for (TT=0;TT<=1;TT++) { GRID(1+KX+TT,1+KY+TTT)=HOLE; GRID(5+KX+TT,1+KY+TTT)=HOLE; GRID(1+KX+TT,5+KY+TTT)=HOLE; GRID(5+KX+TT,5+KY+TTT)=HOLE; } } } else { if (TYP==75) { AD=0; } else { AD=1; } for (TTT=1-AD;TTT<=6+AD;TTT++) { for (TT=1-AD;TT<=6+AD;TT++) { GRID(KX+TT,KY+TTT)=HOLE; } } } } void F_Putslope(int KX,int KY,int TYP) { Paste Bob(KX*4)+33,(KY*4)+33,TYP; Screen 1; Paste Bob(KX*4)+33,(KY*4)+33,TYP; Screen 0; TYP$=Str$(TYP)-" "; if ((TYP!==321) && (TYP!==323) && (TYP!==325) && (TYP!==327)) { Restore TYP$; } for (A=0;A<=7;A++) { for (B=0;B<=7;B++) { SL=0; if (TYP==321) { SL=10; } if (TYP==323) { SL=11; } if (TYP==325) { SL=12; } if (TYP==327) { SL=13; } if (SL==0) { Read SL; } SLIP(KX+B,KY+A)=SL; } } 320; Data 0,0,0,0,0,0,0,6; Data 0,0,0,0,0,0,6,6; Data 0,0,0,0,0,6,6,6; Data 0,0,0,0,6,6,6,6; Data 0,0,0,6,6,6,6,6; Data 0,0,6,6,6,6,6,6; Data 0,6,6,6,6,6,6,6; Data 6,6,6,6,6,6,6,6; 322; Data 7,0,0,0,0,0,0,0; Data 7,7,0,0,0,0,0,0; Data 7,7,7,0,0,0,0,0; Data 7,7,7,7,0,0,0,0; Data 7,7,7,7,7,0,0,0; Data 7,7,7,7,7,7,0,0; Data 7,7,7,7,7,7,7,0; Data 7,7,7,7,7,7,7,7; 324; Data 6,6,6,6,6,6,6,6; Data 6,6,6,6,6,6,6,0; Data 6,6,6,6,6,6,0,0; Data 6,6,6,6,6,0,0,0; Data 6,6,6,6,0,0,0,0; Data 6,6,6,0,0,0,0,0; Data 6,6,0,0,0,0,0,0; Data 6,0,0,0,0,0,0,0; 326; Data 8,8,8,8,8,8,8,8; Data 0,8,8,8,8,8,8,8; Data 0,0,8,8,8,8,8,8; Data 0,0,0,8,8,8,8,8; Data 0,0,0,0,8,8,8,8; Data 0,0,0,0,0,8,8,8; Data 0,0,0,0,0,0,8,8; Data 0,0,0,0,0,0,0,8; 328; Data 9,9,9,9,9,9,9,9; Data 9,9,9,9,9,9,9,0; Data 9,9,9,9,9,9,0,0; Data 9,9,9,9,9,0,0,0; Data 9,9,9,9,0,0,0,0; Data 9,9,9,0,0,0,0,0; Data 9,9,0,0,0,0,0,0; Data 9,0,0,0,0,0,0,0; 329; Data 0,0,0,0,0,0,0,9; Data 0,0,0,0,0,0,9,9; Data 0,0,0,0,0,9,9,9; Data 0,0,0,0,9,9,9,9; Data 0,0,0,9,9,9,9,9; Data 0,0,9,9,9,9,9,9; Data 0,9,9,9,9,9,9,9; Data 9,9,9,9,9,9,9,9; 330; Data 8,0,0,0,0,0,0,0; Data 8,8,0,0,0,0,0,0; Data 8,8,8,0,0,0,0,0; Data 8,8,8,8,0,0,0,0; Data 8,8,8,8,8,0,0,0; Data 8,8,8,8,8,8,0,0; Data 8,8,8,8,8,8,8,0; Data 8,8,8,8,8,8,8,8; 331; Data 7,7,7,7,7,7,7,7; Data 0,7,7,7,7,7,7,7; Data 0,0,7,7,7,7,7,7; Data 0,0,0,7,7,7,7,7; Data 0,0,0,0,7,7,7,7; Data 0,0,0,0,0,7,7,7; Data 0,0,0,0,0,0,7,7; Data 0,0,0,0,0,0,0,7; } void F_Putblock(int PX,int PY,int AC,int DN,int SH) { Paste Bob(PX*4)+32,(PY*4)+32,SH; Screen 1; Paste Bob(PX*4)+32,(PY*4)+32,SH; Screen 0; for (TT=0;TT<=AC-1;TT++) { for (TTT=0;TTT<=DN-1;TTT++) { GRID(PX+TT,PY+TTT)=BLOCK; SHADE(PX+AC,PY+TTT)=2; SHADE(PX+TT,Min(BIGY,PY+DN))=2; } } if (SH==91) { for (TT=0;TT<=AC-1;TT++) { GRID(PX+TT,PY+6)=0; /* SHADE(PX+TT,PY+6),2 */ } } SHADE(PX+AC,PY)=1; SHADE(PX,Min(BIGY,PY+DN))=1; SHADE(PX+AC,Min(BIGY,PY+DN))=2; } void F_Exit(void) { SH=301; TRY=0; AG: PX=(Rnd(7)*8)+6; PY=(Rnd(5)*8)+8; NU=0; for (TT=0;TT<=7;TT++) { for (TTT=0;TTT<=7;TTT++) { if ((GRID(PX+TT,PY+TTT)!==0) || (SHADE(PX+TT,PY+TTT)!==0)) { NU++; TT=7; TTT=7; } } } if (NU!==0) { TRY++; } if (TRY>50) { return 0; } else { Goto AG; } Paste Bob(PX*4)+33,(PY*4)+33,SH; Screen 1; Paste Bob(PX*4)+33,(PY*4)+33,SH; Screen 0; _EXITX=PX+1; _EXITY=PY+1; for (TT=1;TT<=6;TT++) { for (TTT=1;TTT<=6;TTT++) { GRID(PX+TT,PY+TTT)=_EXIT; SHADE(PX+7,PY+TTT)=2; SHADE(PX+TT,PY+7)=2; } } SHADE(PX+1,PY+7)=1; SHADE(PX+7,PY+1)=1; SHADE(PX+7,PY+7)=2; } void F_Block(void) { AG: if (Rnd(2)==0) { BL=4; } else { BL=Rnd(3); } AC=6; DN=6; SH=8; if (BL==4) { PX=(Rnd(7)*8)+6; PY=(Rnd(7)*8); AC=8; DN=8; } if (PY<56) { SH=33; Goto G; } else { SH=48; Goto G; } if (BL==3) { PX=(Rnd(7)*8)+8; PY=(Rnd(7)*8)+2; AC=4; DN=4; SH=24; Goto G; } if (BL==1) { PX=(Rnd(6)*8)+7; AC=14; SH=29; } else { PX=(Rnd(7)*8)+7; } if (BL==2) { PY=(Rnd(6)*8)+1; DN=14; SH=28; } else { PY=(Rnd(7)*8)+1; } if ((BL==1) && (PY>56)) { Goto AG; } if ((BL==2) && (PY>48)) { Goto AG; } if ((BL==0) && (PY>56)) { SH=25; } G: /* If SH=33 Then SH=91 */ NU=0; TAK=-1; if (BL==4) { TAK=0; } for (TT=TAK;TT<=AC;TT++) { for (TTT=TAK;TTT<=DN;TTT++) { if (GRID(PX+TT,Max(0,Min(BIGY,PY+TTT)))!==0) { NU++; TT=AC; TTT=DN; } } } if (NU==0) { if (BL<3) { F_Sam(7,4500); } else { F_Sam(7,4999); } F_Putblock(PX,PY,AC,DN,SH); F_Sam(7,5000); } } void F_Shotime(void) { Screen 1; Sprite Off 2; if (GAMETIME>0) { Get Bob 30,0,120-GAMETIME To 8,120; Sprite 2,130,165-(GAMETIME/2),30; } else { Sprite 2,135,55,71; } Screen 0; } void F_Shrink(int PERS,int _D) { if (DEAD(PERS)>0) { return 0; } Gosub SHRINK; if (((SIZ(PERS)<2) && ((ITEM(_SUV1,PERS+1)==0) || (GAMETIME<11) || (VIRUS==PERS))) || ((SIZ(PERS)<1) && (ITEM(_SUV1,PERS+1))) || ((SIZ(PERS)<3) && (CONTR(PERS)==6) && ((ITEM(_SUV1,PERS+1)==0) || (GAMETIME<11)))) { do { Gosub SHRINK; } while (!(DEAD(PERS)>0)); Move Off 15; BOOB=0; if (KILBY>0) { if (((L(KILBY-1)==L(PERS)) && (L(PERS)>1)) || (KILBY-1==PERS) || (VIRUS==PERS)) { BOOB=1; } else { BOOB=0; } } if (KILBY>-1) { if (((GAMETIME<10) || (BOOB)) && (_MEMORY==1)) { F_Madcry(19,3000,1000); } else { F_Madcry(5,8000,1); } } else { if (KILBY==-1) { if (_MEMORY==1) { F_Madcry(19,3000,1000); } else { F_Madcry(7,6000,100); } } } if ((KILBY>0) && (KILBY<25) && ((KILBY-1!==PERS))) { if (BOOB==0) { Add KILBON(KILBY-1),KIL(PERS); KILS(KILBY-1,0)=Min(12,KILS(KILBY-1,0)+1); KILS(KILBY-1,KILS(KILBY-1,0))=PERS; } if (IT==PERS) { F_Madcry(7,3000,3); IT=-10; } } else { if ((IT==PERS) && (GAMETIME>10)) { IT=-10; } } if ((KILBY>-1) || (VIRUS==PERS)) { Gosub BIGFLASH; } if ((ITEM(_EXTRA,PERS+1)) && (SECS>5) && (HUMANS>0) && (GAMETIME>10) && (CONTESTANTS>1)) { F_Resurect(PERS); if (PASS==1) { ITEM(_EXTRA,PERS+1)--; return 0; } F_Madcry(5,8000,1); Gosub BIGFLASH; } CONTESTANTS--; if (CONTR(PERS)<6) { HUMANS--; } FINISH(PERS)=Max(0,100-Max(0,GAMETIME-10))/2; Add FINISH(PERS),OUT*5; if (KILBY==-2) { Add FINISH(PERS),100; } OUT(OUT)=PERS; OUT++; A=0; MY=-1; for (;;) { if ((DEAD(A)==0) && (CONTR(A)!==7)) { MY=A; break; } A++; if (A>MEN) { break; } } if ((MY==-1) || (MY==MEN)) { Goto SK; } else { if (L(MY)<2) { Goto SK; } } if ((OVER>1) || (OUT==CONTEND-1)) { Goto SK; } OVER=1; for (A=MY+1;A<=MEN;A++) { if ((CONTR(A)!==7) && (DEAD(A)==0) && (L(A)!==L(MY))) { OVER=0; } } SK: if ((OVER<2) && (GAMETIME>9)) { if ((OUT==CONTEND-1) || (OVER==1)) { for (TT=0;TT<=MEN;TT++) { if ((DEAD(TT)==0) && (CONTR(TT)!==7)) { F_Lastbonus(X(TT),Y(TT)); } } OVER=2; } else { if (ITEM(_NOM,PERS+1)) { ITEM(_NOM,PERS+1)=1; } else { F_Kilmoney(X(PERS),Y(PERS),0); } } } Timer=0; if (STRON==1) { F_Bw(STRAWB); } } if (SIZ(PERS)+STACK(PERS)==1) { if (SPEED(PERS)>0) { SPEED(PERS)--; } F_Madcry(1,8500,1); STACK(PERS)=0; } return 0; SHRINK: if (STACK(PERS)>0) { STACK(PERS)=0; Goto OUT; } SIZ(PERS)--; if (SIZ(PERS)<1) { DEAD(PERS)++; STUCK(PERS)=0; } if ((DEAD(PERS)) && (VIRUS==PERS)) { VIRUS=-1; } if (_D!==1) { CNT=0; Goto BOUNCE; } BIT=-1; if (LTH(PERS)>SIZ(PERS)) { BIT=TL(PERS)-(SIZ(PERS)+1); } if (BIT<0) { BIT=(BIG+1)+BIT; } if (BIT>-1) { TX=TAIL(PERS,0,BIT); TY=TAIL(PERS,1,BIT); if (GRID(TX,TY)==PERS+1) { CX=(TX*4)+32; CY=(TY*4)+32; Screen Copy 1,CX,CY,CX+4,CY+4 To 0,CX,CY; GRID(TX,TY)=0; } } Goto OUT; BOUNCE: CNT++; BACK=0; TX=TAIL(PERS,0,TL(PERS)); TY=TAIL(PERS,1,TL(PERS)); if (GRID(TX,TY)==PERS+1) { CX=(TX*4)+32; CY=(TY*4)+32; Screen Copy 1,CX,CY,CX+4,CY+4 To 0,CX,CY; GRID(TX,TY)=0; } else { GRID(TX,TY)=0; BACK++; } Add TL(PERS),-1,0 To BIG; X(PERS)=TAIL(PERS,0,TL(PERS)); Y(PERS)=TAIL(PERS,1,TL(PERS)); if ((BACK>0) && (CNT0) && (GR<11)) { GR=GRID(OKX,OKY)-1; if ((GR!==PERS) && ((L(PERS)!==L(GR)) || (L(PERS)<2))) { PASS=1; } } } Return; } void F_Checkrev(int MAN) { Add Y(MAN),-DY(MAN); Add X(MAN),-DX(MAN); A=0; SELF=0; for (;;) { F_Ok(X(MAN)+SCOOPCO(A,0),Y(MAN)+SCOOPCO(A,1)); if (Param==1) { PASS=0; return 0; } else { TMP=GRID(OKX,OKY); if ((TMP==BLOCK) || (TMP==HOLE) || (TMP==MAN+1)) { SELF++; } } A++; if (A==4) { break; } } if ((ITEM(_SREV,MAN+1)) && (SELF==4)) { ITEM(_SREV,MAN+1)=1; PASS=2; } else { PASS=1; } } void F_Reverse(int PERS) { BIT=(TL(PERS)-SIZ(PERS)); if (BIT<0) { BIT=(BIG+BIT)+1; } X(PERS)=TAIL(PERS,0,BIT); Y(PERS)=TAIL(PERS,1,BIT); DX(PERS)=-DX(PERS); DY(PERS)=-DY(PERS); if (_MEMORY==1) { F_Sam(22,9400); F_Sam(22,9100+Rnd(2)); } else { F_Sam(8,1000); F_Sam(8,1001); } for (A=0;A<=BIG/2;A++) { Swap TAIL(PERS,0,A),TAIL(PERS,0,BIG-A); Swap TAIL(PERS,1,A),TAIL(PERS,1,BIG-A); } TL(PERS)=(BIG-TL(PERS))+SIZ(PERS)+1; if (TL(PERS)>BIG) { TL(PERS)=(TL(PERS)-BIG)-1; } F_Face(PERS,DX(PERS),DY(PERS)); } void F_Resurect(int PERS) { if ((CONTR(PERS)==6) && (GAME-1) && (XA-1) && (YA28-(TIM*2)) { break; } } TIM++; if (TIM>12) { break; } } Screen Close 3; Screen 0; PASS=0; if ((XA>-1) && (YA>-1) && (XA=1;V--) { F_Sam(V,9000); Wait 16; } L: Fade 25 To 1; return 0; PLACE: OU=1; for (;;) { P=0; for (SY=Max(0,YA-OU);SY<=Min(BIGY,YA+OU);SY++) { for (SX=Max(0,XA-OU);SX<=Min(BIGX,XA+OU);SX++) { if (GRID(SX,SY)==0) { YA=SY; XA=SX; SX=1000; SY=1000; P++; } } } if (P>0) { break; } OU++; } Return; COMPRES: if (NEWXA>XA) { XA++; } if (NEWYA>YA) { YA++; } if (NEWXA0) { if ((G==SPEED) || (G==MONEY) || (G==PART)) { Add S,50; } else { if (G==GOLD) { Add S,100; } else { Add S,-10; } } } } } Add OU,5; if (OU>8) { break; } } if (S>BIGOUT) { BIGOUT=S; NEWXA=PLX; NEWYA=PLY; } SK: Return; MOVARROW: F_Whichcont(CONTR(PERS)); if (MOVE(1)) { YA--; } if (MOVE(2)) { YA++; } if (MOVE(3)) { XA++; } if (MOVE(4)) { XA--; } XA=Min(BIGX+3,Max(-3,XA)); YA=Min(BIGY+3,Max(-3,YA)); Return; } void F_Worth(int PERS) { WORTH=MONEY(PERS)-LOAN(PERS); for (A=0;A<=20;A++) { Add WORTH,ITEM(A,0)*ITEM(A,PERS+1); } } void F_Openup(int MMX,int MMY,int OT) { Paste Bob 160,19,72; Paste Bob 160,289,Vrev(72); Paste Bob 21,128,73; Paste Bob 332,128,Hrev(73); OPEN=1; if (OT) { F_Kilmoney(MMX,MMY,1); if (_MEMORY==1) { F_Sam(18,6000); F_Sam(18,6000); } else { F_Sam(5,12000); F_Sam(5,12000); } } } void F_Ok(int OKX,int OKY) { if (OKY<0) { if ((OKX>31) && (OKX<44) && (OPEN==1)) { OKY=BIGY; } else { OKY=0; } } if (OKY>BIGY) { if ((OKX>31) && (OKX<44) && (OPEN==1)) { OKY=0; } else { OKY=BIGY; } } if (OKX<0) { if ((OKY>23) && (OKY<40) && (OPEN==1)) { OKX=BIGX; } else { OKX=0; } } if (OKX>BIGX) { if ((OKY>23) && (OKY<40) && (OPEN==1)) { OKX=0; } else { OKX=BIGX; } } POZ=GRID(OKX,OKY); if (((POZ>0) && (POZ<11)) || (POZ==BLOCK) || (POZ==HOLE) || (POZ==SLOW)) { OK=0; } else { OK=1; } } /* Misc Procs */ void F_Sort(int GA) { F_Rating(GA); for (A=0;A<=MEN;A++) { WININ(A)=A; } for (A=0;A<=MEN;A++) { for (B=0;B<=MEN-1;B++) { if (CONTR(WININ(B+1))==7) { Goto DUN; } if (CONTR(WININ(B))==7) { Swap WININ(B),WININ(B+1); Goto DUN; } if (RATE(WININ(B))RATE(WININ(B+1))) { Goto DUN; } if (SCORE(WININ(B))SCORE(WININ(B+1))) { Goto DUN; } if (MONEY(WININ(B))MONEY(WININ(B+1))) { Goto DUN; } if (L(WININ(B))0) { PER=GRID(CHX,CHY)-1; if (PER==8) { CH=1; } if (CH<8) { CHANL=CH/2; } else { CHANL=3; } } void F_Wat0(void) { do { F_Movemouse(); } while (!(MKEY==0)); } void F_Fontdo(void) { FON=Length(1)+1; F_Doscr(19,6); G=FON; for (Y=0;Y<=3;Y++) { for (X=0;X<=23;X++) { Get Bob G,X*9,Y*9 To(X*9)+8,(Y*9)+9; G++; } } F_Doscr(18,6); for (X=0;X<=7;X++) { Get Icon X+1,X*32,0 To(X*32)+32,15; } for (X=0;X<=8;X++) { Get Icon X+15,X*10,15 To(X*10)+10,25; } for (A=0;A<=20;A++) { for (B=0;B<=2;B++) { _FLASHCOL(A)=Colour(Point(1+A*4,26+B*4)); Get Icon 50+(A*3)+B,A*4,25+B*4 To A*4+4,29+B*4; } } Make Icon Mask; Screen Close 6; } void F_Tex(int XT,int YT,char TEX[]) { for (A=0;A<=Len(TEX$)-1;A++) { A$=Mid$(TEX$,A+1,1); if (A$!==" ") { Paste Bob XT+A*8,YT,FON+(Asc(A$)-32); } } } void F_Shtex(int XT,int YT,char TEX[],int SPICE) { for (A=;A>=n(TE;A--) { F_Tex(XT+3+((A-1)*SPICE),YT+2,Mid$(F_Tex$,A,1)); } } void F_Sh(int XT,int YT,char TEX[]) { F_Shtex(XT-2,YT-2,TEX$,7); F_Shtex(XT-3,YT-3,TEX$,7); } void F_Dis(char TEX[]) { if (_SCORE==0) { return 0; } Ink 11; Bar 72,219 To 230,227; XT=152-Len(TEX$)*4; for (A=0;A<=Len(TEX$)-1;A++) { Paste Bob XT+A*8,219,FON+(Asc(Mid$(TEX$,A+1,1))-32); F_Sam(12,23000); Wait 3; } Wait 30; } void F_Cen(int WY,char TEX[]) { XT=PASS-Len(TEX$)*3.5; for (A=0;A<=Len(TEX$)-1;A++) { Paste Bob XT+A*7,WY,FON+(Asc(Mid$(TEX$,A+1,1))-32); } } void F_Bits(int PX,int PY,int INOUT) { B=0; for (;;) { if (INOUT) { if (BITS(B,0)==-1) { BITS(B,0)=PX; BITS(B,1)=PY; break; } } else { if ((BITS(B,0)==PX) && (BITS(B,1)==PY)) { BITS(B,0)=-1; break; } } B++; if (B>20) { break; } } for (A=0;A<=MEN;A++) { if ((CONTR(A)==6) && (DEAD(A)==0)) { F_Findpart(X(A),Y(A),A); } } } void F_Bitsempty(void) { B=0; TMP(0)=0; TMP(1)=0; for (;;) { if (BITS(B,0)!==-1) { TYP=GRID(BITS(B,0),BITS(B,1)); if (TYP==SPEED) { TMP(1)++; } if (TYP==PART) { TMP(0)++; } } B++; if (B>20) { break; } } } void F_Pause(void) { Gosub SAM; do { } while (!(Key State(25)==0)); Wait 5; C=0; Timer=490; do { if ((C==1) && (Timer>500)) { Fade 25 To 1; C=0; Timer=0; } if ((C==0) && (Timer>500)) { for (A=1;A<=31;A++) { Colour(A),4095-Colour(A); } C=1; Timer=0; } } while (!(Key State(25))); Gosub SAM; do { } while (!(Key State(25)==0)); Fade 8 To 1; Wait 200; return 0; SAM: F_Madcry(5,4000,4); Return; } void F_Movemouse(void) { Wait Vbl; Sprite 0,X Mouse,Y Mouse,23; MZ=Mouse Zone; MKEY=Mouse Key; for (A=1;A<=3;A++) { F_Whichcont(A); if (MOVE(1)) { Y Mouse=Y Mouse-2; } if (MOVE(2)) { Y Mouse=Y Mouse+2; } if (MOVE(3)) { X Mouse=X Mouse+2; } if (MOVE(4)) { X Mouse=X Mouse-2; } if (MOVE(0)) { MKEY=1; } } } void F_Madcry(int S,int P,int AD) { F_Sam(S,P); F_Sam(S,P+AD); F_Sam(S,P+AD*2); } void F_Fad(int C,int S) { if (S==0) { Palette C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C; } else { Fade S,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C; } } void F_Cul(int C,int S) { if (S==0) { Palette 0,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C; } else { Fade S,0,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C; } } void F_Save(int TYP) { F_Load(TYP); for (A=20;A<=39;A++) { HI$(A)=" "; HI(A)=0; } if (TYP==0) { F_Rating(GAMES); } if (TYP!==0) { for (A=0;A<=MEN;A++) { if (TYP==1) { RATE(A)=SPEEDBON(A); } if (TYP==2) { RATE(A)=BIGBON(A); } if (TYP==3) { RATE(A)=OLDM(A); } if (TYP==4) { RATE(A)=KILBON(A)+DEST(A); } if (TYP==5) { RATE(A)=OLDP(A); } } } for (A=0;A<=MEN;A++) { if (CONTR(A)<7) { G=0; do { if (Upper$(HI$(G))==Upper$(NAME$(A))) { if (RATE(A)>HI(G)) { HI(G)=RATE(A); } break; } if (HI$(G)==" ") { HI(G)=RATE(A); HI$(G)=NAME$(A); break; } G++; } while (!(G>29)); } } F_Savehidata(TYP); Erase 10; } void F_Load(int TYP) { F_Loadcpt("Sneechfiles/scores"+Right$(Str$(TYP),1)+".dat"); for (A=0;A<=19;A++) { F_Getname(A); HI$(A)=PASS$; HI(A)=PASS; } Erase 10; } void F_Getname(int OFFS) { PASS$=""; for (A=0;A<=19;A++) { PASS$=PASS$+Chr$(Peek(Start(10)+(OFFS*26)+A)); } PASS=Deek(Start(10)+(OFFS*26)+20); for (;;) { if ((Right$(PASS$,1)==" ") && (Len(PASS$)>1)) { PASS$=Left$(PASS$,Len(PASS$)-1); } else { break; } } } void F_Rating(int GMS) { for (A=0;A<=MEN;A++) { if (CONTR(A)<7) { C#=3; for (OTH=0;OTH<=MEN;OTH++) { if (CONTR(OTH)<7) { if ((L(OTH)!==L(A)) || (L(A)<2)) { if (CONTR(OTH)==6) { C#=C#-0.2; } else { C#=C#-0.13; } } } } if (MONEY(A)<0) { R=SCORE(A)+(MONEY(A)/10); } else { R=SCORE(A)+(MONEY(A)/300); } R=(R/GMS)+(GAMES*8); R#=R*C#; if (L(A)==1) { R#=R#*0.75; } if (((R#<0.0)) || ((GAME==1))) { RATE(A)=0; } else { RATE(A)=R#; } } } } void F_Loadcpt(char F[]) { Load F$,10; RE=1; for (A=0;A<=Length(10)-1;A++) { GG=Peek(Start(10)+A); Add GG,-RE; RE=RE+RE; if (RE>250) { RE=1; } if (GG<0) { Add GG,256; } Poke Start(10)+A,GG; } } void F_Savecpt(char F[]) { RE=1; for (A=0;A<=Length(10)-1;A++) { GG=Peek(Start(10)+A); Add GG,RE; RE=RE+RE; if (RE>250) { RE=1; } if (GG>255) { Add GG,-256; } Poke Start(10)+A,GG; } Save F$,10; } void F_Loadsave(int TY) { if (DEM) { return 0; } if (TY==0) { Erase 6; AGA=Free; Reserve As Data 6,200; } else { Load "Sneechfiles/Old_Game.dat",6; } for (A=0;A<=MEN;A++) { if (TY==0) { Doke Start(6)+(A*2),SCORE(A); Doke Start(6)+20+(A*2),MONEY(A); Doke Start(6)+40+(A*2),SPENDS(A); Doke Start(6)+60+(A*2),LOAN(A); } else { SCORE(A)=Deek(Start(6)+(A*2)); MONEY(A)=Deek(Start(6)+20+(A*2)); SPENDS(A)=Deek(Start(6)+40+(A*2)); LOAN(A)=Deek(Start(6)+60+(A*2)); } Restore LOD; for (Z=0;Z<=10;Z++) { Read B; if (TY==0) { Poke Start(6)+80+A+(Z*10),ITEM(B,A+1); } else { ITEM(B,A+1)=Peek(Start(6)+80+A+(Z*10)); } } } LOD: Data 13,4,12,15,0,14,9,8,7,3,6,1; if (TY==0) { Poke Start(6)+149,GAME; Save "sneechfiles/Old_Game.dat",6; F_Saveops(1); } else { GAME=Peek(Start(6)+149)-1; Erase 6; } } void F_Saveops(int OP) { if (DEM) { F_Allert(1,"No saving","in Demo","Ok","Ok"); return 0; } Erase 6; AGA=Free; Reserve As Data 6,400; for (A=0;A<=MEN;A++) { LE=Len(NAME$(A)); for (LET=1;LET<=LE;LET++) { Poke Start(6)+(A*12)+(LET-1),Asc(Mid$(NAME$(A),LET,1)); } Poke Start(6)+(A*12)+LE,42; } for (A=0;A<=MEN;A++) { LE=Len(HUMAN$(A)); for (LET=1;LET<=LE;LET++) { Poke Start(6)+150+(A*12)+(LET-1),Asc(Mid$(HUMAN$(A),LET,1)); } Poke Start(6)+150+(A*12)+LE,42; } for (A=0;A<=MEN;A++) { Poke Start(6)+300+A,CUL(A); Poke Start(6)+310+A,L(A); Poke Start(6)+320+A,CONTR(A); } PLL=Start(6)+350; Poke PLL,GAMES; Poke PLL+1,TIME; Poke PLL+3,PARTS; Poke PLL+6,_KEYS; Poke PLL+2,_STAT; Poke PLL+8,_SCORE; Poke PLL+5,_VIR; /* Poke PLL+9,PLL+13,PLL+7,pll+4,pll+12,pll+10 */ if (DEM==0) { if (OP==0) { /* Save "sneechfiles/Def_Options.dat",6 */ Save "sneechfiles/Options.dat",6; } else { Save "sneechfiles/Sav_Options.dat",6; } } } void F_Loadops(int OP) { if (OP==0) { Load "sneechfiles/options.dat",6; } else { if (OP==1) { Load "sneechfiles/Def_Options.dat",6; } else { Load "sneechfiles/Sav_Options.dat",6; } } for (A=0;A<=MEN;A++) { NAME$(A)=""; LET=0; for (;;) { A$=Chr$(Peek(Start(6)+(A*12)+LET)); if (A$=="*") { break; } NAME$(A)=NAME$(A)+A$; LET++; } HUMAN$(A)=""; LET=0; for (;;) { A$=Chr$(Peek(Start(6)+150+(A*12)+LET)); if (A$=="*") { break; } HUMAN$(A)=HUMAN$(A)+A$; LET++; } } for (A=0;A<=9;A++) { CUL(A)=Peek(Start(6)+300+A); L(A)=Peek(Start(6)+310+A); CONTR(A)=Peek(Start(6)+320+A); } PLL=Start(6)+350; GAMES=Peek(PLL); TIME=Peek(PLL+1); PARTS=Peek(PLL+3); _KEYS=Peek(PLL+6); _STAT=Peek(PLL+2); _SCORE=Peek(PLL+8); _VIR=Peek(PLL+5); if (DEM) { GAMES=2+1; TIME=6-1; _VIR=3-3; _SCORE=2-1; _STAT=6-5; _KEYS=4-2; PARTS=9-3; } Rem=Peek(PLL+9),(PLL+13),(PLL+7),(PLL+4),(pll+12),(pll+10); } void F_Savehidata(int TYP) { Erase 10; Reserve As Data 10,600; Home; Paper 0; for (A=0;A<=38;A++) { G$=Upper$(HI$(A)); for (B=A+1;B<=39;B++) { if (Upper$(HI$(B))==G$) { if (HI(A)>HI(B)) { HI(B)=0; HI$(B)=" "; } else { HI(A)=0; HI$(A)=" "; } } } } for (;;) { SW=0; for (A=0;A<=38;A++) { if (HI(A)0) { Colour(A),((15-R)*256)+((15-G)*16)+(15-B); } } else { Colour(A),(Min(15,R+1)*256)+(G*16)+Max(0,B-1); } } } Screen 0; Fade 80 To 1; if (TY==STRAWB) { STRON=1-STRON; if (STRON==1) { Channel 15 To Screen Display 0; Move Y 15,"(1,3,1)(1,2,1)(1,-2,1)(1,-3,1)(1,-2,1)(1,2,1)L"; Move On 15; } else { Move Off 15; Screen Display 0,,42,,; } } } void F_Chekdoors(void) { G=Rnd(3)+1; On G Gosub D1,D2,D3,D4; return 0; D1: Rem Bottom; CT=0; CB=0; for (A=0;A<=5;A++) { GR=GRID(32+A,0); G2=GRID(32+A,BIGY); if ((GR==BLOCK) || ((GR>0) && (GR<==MEN+1))) { if ((G2!==BLOCK) && ((G2>8) || (G2==0))) { CT++; } } GR=GRID(38+A,0); G2=GRID(38+A,BIGY); if ((GR==BLOCK) || ((GR>0) && (GR<==MEN+1))) { if ((G2!==BLOCK) && ((G2>8) || (G2==0))) { CB++; } } } Paste Bob 154,310,77-Min(1,CT); Paste Bob 212,310,77-Min(1,CB); Return; D2: Rem Top; CT=0; CB=0; for (A=0;A<=5;A++) { GR=GRID(32+A,BIGY); G2=GRID(32+A,0); if ((GR==BLOCK) || ((GR>0) && (GR<==MEN+1))) { if ((G2!==BLOCK) && ((G2>8) || (G2==0))) { CT++; } } GR=GRID(38+A,BIGY); G2=GRID(38+A,0); if ((GR==BLOCK) || ((GR>0) && (GR<==MEN+1))) { if ((G2!==BLOCK) && ((G2>8) || (G2==0))) { CB++; } } } Paste Bob 154,8,77-Min(1,CT); Paste Bob 212,8,77-Min(1,CB); Return; D3: Rem Right; CT=0; CB=0; for (A=0;A<=7;A++) { GR=GRID(0,24+A); G2=GRID(BIGX,24+A); if ((GR==BLOCK) || ((GR>0) && (GR<==MEN+1))) { if ((G2!==BLOCK) && ((G2>8) || (G2==0))) { CT++; } } GR=GRID(0,32+A); G2=GRID(BIGX,32+A); if ((GR==BLOCK) || ((GR>0) && (GR<==MEN+1))) { if ((G2!==BLOCK) && ((G2>8) || (G2==0))) { CB++; } } } Paste Bob 357,123,77-Min(1,CT); Paste Bob 357,195,77-Min(1,CB); Return; D4: Rem Left; CT=0; CB=0; for (A=0;A<=7;A++) { GR=GRID(BIGX,24+A); G2=GRID(0,24+A); if ((GR==BLOCK) || ((GR>0) && (GR<==MEN+1))) { if ((G2!==BLOCK) && ((G2>8) || (G2==0))) { CT++; } } GR=GRID(BIGX,32+A); G2=GRID(0,32+A); if ((GR==BLOCK) || ((GR>0) && (GR<==MEN+1))) { if ((G2!==BLOCK) && ((G2>8) || (G2==0))) { CB++; } } } Paste Bob 8,123,77-Min(1,CT); Paste Bob 8,195,77-Min(1,CB); Return; } void F_Allert(int SCRR,char T1[],char T11[],char T2[],char T3[]) { Get Bob 298,156-56,30 To 156+56,90; Screen SCRR; Paste Bob 0,0,299; PASS=56; F_Cen(9,T1$); F_Cen(18,T11$); PASS=34; F_Cen(34,T2$); PASS=80; F_Cen(34,T3$); F_Madcry(9,2100,4); for (A=7;A<=43;A++) { Zoom SCRR,0,0,112,59 To SCRR,0,60,Min(112,A),60+A/2; Vbl Wait 200; Screen Copy SCRR,0,60,A,60+A/2 To PRES,156-A/2,60-A/4; F_Movemouse(); } Screen 0; F_Fad($FFF,0); Screen Copy SCRR,0,0,112,59 To PRES,156-56,30; Fade 1 To 1; Wait 16; for (;;) { F_Movemouse(); if (MKEY==1) { if ((X Mouse>242) && (X Mouse<326)) { if ((Y Mouse>100) && (Y Mouse<115)) { if (X Mouse>284) { RET=1; break; } else { RET=0; break; } } } } } F_Madcry(5,15000,1); F_Fad($F95,0); Wait Vbl; Ink 0; Bar 156-56,30 To 155+56,89; Paste Bob 156-56,30,298; Fade 4 To 1; Wait 16; do { F_Movemouse(); } while (!(MKEY==0)); }