'----------------------------------------------------------------- ' Bierschen II (Schluß mit Lustig) ' Bierschen II Copyright © 1999 by Testaware ' Author ® 12-12-99 by Volker Stepprath ' testaware@arcor.de ' Extra Extensions used: ' AMOSPro AMCAF Extension V1.50 © Chris Hodges ' AMOSPro Explode Extension V1.55 © Volker Stepprath 'AMOS Professional V2.00, APCmp V2.00 © 1993 by Europress Software '----------------------------------------------------------------- Global XSPEED,XANUMB,XVIRUS,XFMODE,XAHITS,XSCORE,XLEVEL,XTASKS Global XTOHIT,XLIVES,XMODUS,XLASER,XNHIGH,XLLOST,XMUSIC,XTIMER Global XLSCRE 'Variablenerklärung '------------------ 'XSPEED = Aliengeschwindigkeit 'XANUMB = Alienanzahl 'XVIRUS = Virus/Bonus Quote 'XFMODE = Lasermodus 'XAHITS = Treffer pro Alien 'XSCORE = Punktestand 'XLEVEL = Level 'XTOHIT = Noch vorhandene Aliens 'XLIVES = Bierschenanzahl 'XMODUS = Schwierigkeitsstufe 'XLASER = Laser in-/aktiv 'XNHIGH = Highscore-Eintrag 'XLLOST = Benötigte 'Leben' 'XMUSIC = Musik an/aus 'XTIMER = Benötigte Zeit 'XTASKS = Tasks an/aus 'XLSCRE = Erreichte Levelpunkte Request Off Amos To Front Close Editor Close Workbench Hide On Amos Lock Break Off Trap Bank Load "BierschenII.Top" To 6 Fix(1) Proc _GETBOBS Do Proc _INTRO XLIVES=3 XFMODE=4 XLEVEL=False XMODUS=False XANUMB=False XTOHIT=False XAHITS=False XSCORE=False Proc _BACKGROUND Repeat Proc _INSTALL XLSCRE=XSCORE Add XLEVEL,1,1 To 11 On XLEVEL Proc _L01,_L02,_L03,_L04,_L05,_L06,_L07,_L08,_L09,_L10,_L11 If XLEVEL=11 and XMODUS=2 and XLIVES>False Proc _ALLDONE Exit Else If XLEVEL=11 and XMODUS<2 and XLIVES>False Proc _NEXTMODE Inc XMODUS End If Until XLIVES<1 Screen False : Fade 3 : Wait 45 : Screen Close False Screen 1 : Fade 3 : Wait 45 : Screen Close 1 Proc _FORBID[False] Loop Procedure _GETBOBS If Length(1) Then Pop Proc Unpack 16 To False Screen Hide False If Prg StateA Then Proc _BESTENLISTE Do If Fire(1) Restore A_TXT Cls False End If Read A$,A Exit If A=False If A$="*" Proc _PAUSE[A] Else Ink 2,False : Text 162-Text Length(A$)/2,193,A$ Ink 1,False : Text 160-Text Length(A$)/2,191,A$ A=A*10 For I=False To A Screen Copy 1,False,40,320,200 To 1,False,39 Exit If Fire(1) : Wait 2 Next End If Loop Palette ,,,,,,,,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF : Wait Vbl Fade 3,,,,,,,,,$0,$8F6,$4B2,$270,$F66,$D33,$900,$400 : Wait 45 Do Proc _WAIT A=Param If A=80 or A=82 Exit Else If A=81 Proc _BESTENLISTE Exit End If Loop If A=81 Then Restore A_TXT : Goto A Screen 1 Palette ,,,,,,,,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF : Wait Vbl Fade 3 : Proc _MUSIC[False] Screen Close 1 Screen Close False Wait Vbl If A=82 If XNHIGH Trap Bank Save "BierschenII.Top",6 Wait 100 End If If Prg State<1 Erase All End If Request On Amos Unlock Wait Vbl End End If Pop Proc Data "BIERSCHEN II",1 Data "(SCHLUß MIT LUSTIG)",2 Data "©1999 BY TESTAWARE",4 Data "GRAFIK",1 Data "DAVID MCLACHLAN",1 Data "&",1 Data "VOLKER STEPPRATH",4 Data "MUSIK",1 Data "BIFF BYFORD",4 Data "SFX & PROGRAMMIERUNG",1 Data "VOLKER STEPPRATH",4 Data "AMOS PROFESSIONAL & APCMP",1 Data "FRANÇOIS LIONET",1 Data "©1993 by EUROPRESS SOFTWARE",15 Data "BIERSCHEN II IST GIFTWARE!",1 Data "ALS GEBÜHR WÜRDE EINE POSTKARTE AN",1 Data "MEINE PERSON VÖLLIG AUSREICHEN. BEI",1 Data "GEFALLEN WENDET EUCH BITTE AN:",2 Data "VOLKER STEPPRATH ",1 Data "TEGELER STRASSE 7",1 Data "40789 MONHEIM ",1 Data "DEUTSCHLAND ",2 Data "E-MAIL: PEACEFLOETE@AOL.COM",1 Data "FAX: (+49) 040 / 360 336 989 8",2 Data "*",12 Data "",8 Data "WARUM SCHON WIEDER ALIENS ERSCHIEßEN?",2 Data "WÄHREND BIERSCHEN IM ERSTEN TEIL NOCH",1 Data "SEINE LETZTEN HOPFEN & MALZPLANTAGEN",1 Data "GEGEN ALKOHOLKRANKE ALIENS VERTEIDIGTE",1 Data "HAT ER DIESMAL SELBST ZU TIEF IN DIE",1 Data "FLASCHE GESCHAUT UND GLAUBT SICH IN",1 Data "MÜNCHEN AUF DEM OKTOBERFEST ALS NEUER",1 Data "SÜDDEUTSCHER SCHÜTZENKÖNIG.",4 Data "*",10 Data "",3 Data "DIE VON DR.ZUCKERBROT TROCKEN GELEGTEN",1 Data "SOWIE AHNUNGSLOSEN & NICHT MEHR BÖSE",1 Data "GESINNTEN ALIENS REAGIEREN NATÜRLICH",1 Data "VÖLLIG ÜBERRASCHT AUF DIESES MAKABERE",1 Data "SCHÜTZENFEST UND ERGREIFEN UNTER",1 Data "PANIK SCHLAGARTIG DIE FLUCHT. NUN",1 Data "ERWACHT BIERSCHENS VORSINTFLUTMÄßIGER",1 Data "JAGDTRIEB... NA DEN MA' PROST!",4 Data "*",10 Data "",5 Data "ÄHNLICHKEITEN MIT EXISTIERENDEN PERSONEN",1 Data "SIND NATÜRLICH BE..UNBEABSICHTIGT (PUUH)",5 Data "AUCH WENN MAN ES VERMUTEN KÖNNTE",1 Data "DIESE GESCHICHTE STAMMT NICHT AUS EINEM",1 Data "KRIMMI DES PRIVATFERNSEHNS!",15 A_TXT: Data "F1:ATTACKE F2:BESTENLISTE F3:FINITO",3 Data "",0 End Proc Procedure _BESTENLISTE Cls False If XSCORE<=Leek(Start(6)+236) Palette ,,,,,,,,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF : Wait Vbl Fade 3,,,,,,,,,$0,$3A1,$60,$20,$A11,$800,$400,$0 : Wait 45 XSCORE=False Else For I=False To 9 If XSCORE>Leek(Start(6)+I*24+20) If I<9 Copy Start(6)+I*24,Start(6)+216 To Start(6)+I*24+24 End If Poke$ Start(6)+I*24,String$(Chr$(False),20) Loke Start(6)+I*24+20,XSCORE XSCORE=I+1 Exit End If Next End If A$="BESTENLISTE" : B=16 : Gosub B_BL For I=False To 9 P=Start(6)+I*24 A$=Str$(I+1)-" " A$=String$(" ",2-Len(A$))+A$+". " B$=Peek$(P,19,Chr$(False)) B$=B$+String$(" ",20-Len(B$)) C$=Str$(Leek(P+20))-" " A$=A$+B$+String$("0",6-Len(C$))+C$ B=10 : Gosub B_BL Next A$="" : B=18 : Gosub B_BL If XSCORE XNHIGH=True Gr Writing 1 Dec XSCORE Y=58+XSCORE*11+Text Base Flash 3,"(FF0,10)(000,10)" Ink ,3 : Text 72,Y," " Do A=Asc(Inkey$) If Len(A$)<18 and A>13 A$=A$+Upper$(Chr$(A)) Else If Len(A$)>False and A=8 A$=Left$(A$,Len(A$)-1) End If If A Clear Key Ink 1,False : Text 72,Y,A$+" " Exit If A=13 Ink ,3 : Text 72+Text Length(A$),Y," " End If Loop Gr Writing False Poke$ Start(6)+XSCORE*24,A$ Flash Off End If XSCORE=False Proc _WAIT Cls False Pop Proc B_BL: Ink 2,False : Text 162-Text Length(A$)/2,193,A$ Ink 1 : Text 160-Text Length(A$)/2,191,A$ For C=False To B Screen Copy 1,False,40,320,200 To 1,False,39 Wait 2 Next Return End Proc Procedure _INSTALL Amreg(False)=False : Rem A - Aliens Amreg(1)=False : Rem B - Points Amreg(5)=False : Rem F - No. Of Laser Amreg(17)=False : Rem R - Voices Amreg(18)=False : Rem S - Sample Amreg(19)=False : Rem T - Frequency XLLOST=False : Rem Verlorene 'Leben' Screen False Screen To Front False Wait Vbl Cls False : Wait Vbl Autoback False : Wait Vbl For I=False To 200 Plot Rnd(320),Rnd(199),1+Rnd(3) Next Wait Vbl Screen Copy Logic To Physic : Wait Vbl Autoback 2 : Wait Vbl 'Amal für Joystick A$=" M25,0,25;P;" A$=A$+" AU(LR0=J1&15;IR0>0 DB else DA)" A$=A$+"A:LRX=X;LRY=Y;LA=1;W" A$=A$+"B:LR0=J1;LR1=R0&3;IR1=0JD" A$=A$+" IR1=1JE" A$=A$+" LR1=5;LA=8; JD" A$=A$+"E:LR1=-5;LA=2" A$=A$+"D:LR2=R0&12;IR2=0JF" A$=A$+" IR2=4JG" A$=A$+" LR2=5;JF" A$=A$+"G:LR2=-5" A$=A$+"F:LX=X+R2;LY=Y+R1;" A$=A$+" LR4=X>8;LR5=X<310;LR6=Y<191;LR7=Y>8" A$=A$+" IR4&R5&R6&R7JH" A$=A$+" LX=X-R2;LY=Y-R1" A$=A$+"H:LRX=X;LRY=Y;JB" Channel 1 To Bob 1 Bob 1,-16,100,1 : Wait Vbl : Amal 1,A$ XLASER=True Proc _SETLASER End Proc Procedure _SETLASER 'Lasermodus [0-4] If XLASER=False Then Pop Proc Proc _LASEROFF For I=2 To 4 Channel I To Bob I Next If XFMODE=False or XFMODE=1 A$=" A:LA=108;LR1=0;LX=-60;LY=-60;P;" A$=A$+"B:IJ1&16JCJB;" A$=A$+"C:LRR=9;" A$=A$+" LRS=1" A$=A$+" LRT=15000-"+Str$(XFMODE*7000) A$=A$+" LRF=RF+1; LX=RX;LY=RY;LA="+Str$(99+XFMODE) A$=A$+"D:LX=X+16;IX>320JA;IR1>0JA;P;JD" Bob 2,False,False,108 : Wait Vbl : Amal 2,A$ Else If XFMODE=2 A$=" A:LA=108;LR1=0;LX=-60;LY=-60;P;" A$=A$+"B:IJ1&16JCJB;" A$=A$+"C:LRR=9;LRS=2;LRT=9000; LRF=RF+1; LX=RX;LY=RY;LA=102" A$=A$+"D:LX=X+12;IX>320JA;IR1>0JA;P;JD" Bob 2,False,False,108 : Wait Vbl : Amal 2,A$ A$=" A:LA=108;LR1=0;LX=-60;LY=-60;P;" A$=A$+"B:IJ1&16JCJB;" A$=A$+"C:LX=RX;LY=RY;LA=101" A$=A$+"D:LX=X-12;IX<0JA;IR1>0JA;P;JD" Bob 3,False,False,108 : Wait Vbl : Amal 3,A$ Else If XFMODE=3 A$=" A:LA=108;LR1=0;LX=-60;LY=-60;P;" A$=A$+"B:IJ1&16JCJB;" A$=A$+"C:LRR=8;LRS=3;LRT=11000; LRF=RF+1; LX=RX-8;LY=RY;LA=103" A$=A$+"D:LX=X+12;IX>320JA;IR1>0JA;P;JD" Bob 2,False,False,108 : Wait Vbl : Amal 2,A$ A$=" A:LA=108;LR1=0;LX=-60;LY=-60;P;" A$=A$+"B:IJ1&16JCJB;" A$=A$+"C:LRR=1;LRS=3;LRT=11000; LX=RX-2;LY=RY;LA=104" A$=A$+"D:LX=X+12;LY=Y+2;IX>320JA;IY>190JA;IR1>0JA;P;JD" Bob 3,False,False,108 : Wait Vbl : Amal 3,A$ A$=" A:LA=108;LR1=0;LX=-60;LY=-60;P;" A$=A$+"B:IJ1&16JCJB;" A$=A$+"C:LRR=1;LRS=3;LRT=11000 LX=RX-2;LY=RY;LA=105" A$=A$+"D:LX=X+12;LY=Y-2;IX>320JA;IY<0JA;IR1>0JA;P;JD" Bob 4,False,False,108 : Wait Vbl : Amal 4,A$ Else If XFMODE=4 A$=" A:LA=108;LR1=0;LX=-60;LY=-60;P;" A$=A$+"B:IJ1&16JCJB;" A$=A$+"C:LRR=9;LRS=4;LRT=12000" A$=A$+" LRF=RF+1; LX=RX;LY=RY;LA=106" A$=A$+"D:LX=X+16;IX>320JA;IR1>0JA;P;JD" Bob 2,False,False,108 : Wait Vbl : Amal 2,A$ A$=" A:LA=108;LR1=0;LX=-60;LY=-60;P;" A$=A$+"B:IJ1&16JCJB;" A$=A$+"C:LX=RX-16;LY=RY;LA=106" A$=A$+"D:LX=X+16;IX>320JA;IR1>0JA;P;JD" Bob 3,False,False,108 : Wait Vbl : Amal 3,A$ End If Amreg(18)=False End Proc Procedure _LASEROFF For I=2 To 4 Amal Off I : Bob Off I : Wait Vbl Next End Proc Procedure _L01 'Aufwärmen 'RB = Punktegeber nach Geschw. 'RV = X-Pos. für Virus 'RW = Y-Pos. für Virus 'R0 = X-Geschw. 'R1 = [0] Treffer, [1] Kein Treffer 'R2 = Anzahl der Wiederkehr If XMODUS=False XANUMB=3 XAHITS=5 XSPEED=1 XVIRUS=100 Else If XMODUS=1 XANUMB=4 XAHITS=6 XSPEED=1 XVIRUS=80 Else If XMODUS=2 XANUMB=5 XAHITS=7 XSPEED=2 XVIRUS=60 End If Add XANUMB,4 'Amal für Alien A$=" L:LR1=1;" A$=A$+" LX=336+Z(32);" A$=A$+" LY=8+Z(52)+Z(33)+Z(99);" A$=A$+" LR0=4+Z(1)+Z(3)+Z("+Str$(XSPEED)+");" A$=A$+" A0,(19,4)(20,4)(21,4)(22,4);" A$=A$+"A:LX=X-R0;P;IX<0JL;IR1<1JBJA" A$=A$+"B:LRB=R0*10;" A$=A$+" LRV=X;LRW=Y;" A$=A$+" A1,(23,4)(24,4)(25,4)(26,4)(27,4)(28,4)(108,1);" A$=A$+" FR0=0T12;P;NR0;" A$=A$+" LR2=R2-1;IR2>0JL" For I=5 To XANUMB Channel I To Bob I Bob I,False,False,108 Amal I,A$ Amreg(I,2)=XAHITS : Rem Anzahl der nötigen Treffer Next 'Levelinfo A$="LEVEL"+Str$(XLEVEL+XMODUS*11) B$="ERST EINMAL ETWAS ZUM AUFWAERMEN" Proc _LGO[A$,B$] End Proc Procedure _L02 'Ei & Spion Mutanten 'RB = Punktegeber 'R0 = X-Geschw. 'R1 = [0] Treffer, [1] Kein Treffer 'R2 = Stopposition 'R3 = Anzahl der Wiederkehr If XMODUS=False XANUMB=3 XAHITS=5 XSPEED=1 XVIRUS=80 Else If XMODUS=1 XANUMB=4 XAHITS=6 XSPEED=2 XVIRUS=60 Else If XMODUS=2 XANUMB=5 XAHITS=7 XSPEED=3 XVIRUS=40 End If Add XANUMB,4 A$=" L:LR1=1;" A$=A$+" A1,(29,1);LX=336+Z(32);" A$=A$+" LY=8+Z(52)+Z(33)+Z(99);" A$=A$+" LR0=5+Z(1)+Z(3)+Z("+Str$(XSPEED)+");" A$=A$+" LR2=50+Z(150)+Z(100);" A$=A$+"A:LX=X-R0;P;IR1<1JC;IX>R2JA;" A$=A$+" A1,(30,4)(31,4)(32,4)(33,4)(34,4)(35,4)(36,4)(29,1);" A$=A$+" FR4=0T20;" A$=A$+" IR1<1JC;P" A$=A$+" NR4;" A$=A$+" LR0=R0+2+Z("+Str$(XSPEED)+");" A$=A$+"B:LX=X-R0;P;IX<0JL;IR1<1JCJB" A$=A$+"C:LRB=R0*10;" A$=A$+" LRV=X;LRW=Y;" A$=A$+" A1,(37,4)(38,4)(39,4)(40,4)(41,4)(108,1);" A$=A$+" FR0=0T10;P;NR0;" A$=A$+" LR3=R3-1;IR3>0JL" For I=5 To XANUMB Channel I To Bob I Bob I,False,False,108 Amal I,A$ Amreg(I,3)=XAHITS Next A$="LEVEL"+Str$(XLEVEL+XMODUS*11) B$="EIN KLARER FALL VON EI UND SPION MUTATION" Proc _LGO[A$,B$] End Proc Procedure _L03 'Anti Alkohol Staffel 'RB = Punktegeber 'R0 = X-Geschw. 'R1 = [0] Treffer, [1] Kein Treffer 'R2 = Y-Schwankung 'R3 = Max. Höhe 'R4 = Max. Tiefe 'R5 = Y-Geschw. 'R6 = Anzahl der Wiederkehr If XMODUS=False XANUMB=4 XAHITS=5 XSPEED=1 XVIRUS=60 Else If XMODUS=1 XANUMB=5 XAHITS=7 XSPEED=2 XVIRUS=40 Else If XMODUS=2 XANUMB=6 XAHITS=9 XSPEED=3 XVIRUS=20 End If Add XANUMB,4 A$=" L:LR1=1;" A$=A$+" A0,(42,3)(43,3)(44,3)(45,3)(46,3)(47,3)(48,3)(49,3);" A$=A$+"A:LX=336+Z(48);" A$=A$+" LY=8+Z(50)+Z(33)+Z(89);" A$=A$+" LR0=2+Z(1)+Z(3)+Z("+Str$(XSPEED)+");" A$=A$+" LR2=16+Z(10)+Z(6);" A$=A$+" LR3=Y-R2;" A$=A$+" LR4=Y+R2;" A$=A$+" LR5=1+Z(1);" A$=A$+"B:IR1<1JD;LX=X-R0;LY=Y-R5;P;IX<0JA;IYR4JB;IY>188JBJC;" A$=A$+"D:LRB=R0*10;" A$=A$+" LRV=X;LRW=Y;" A$=A$+" A1,(23,4)(24,4)(25,4)(26,4)(27,4)(28,4)(108,1);" A$=A$+" FR0=0T12;P;NR0;" A$=A$+" LR6=R6-1;IR6>0JL" For I=5 To XANUMB Channel I To Bob I Bob I,False,False,108 Amal I,A$ Amreg(I,6)=XAHITS Next A$="LEVEL"+Str$(XLEVEL+XMODUS*11) B$="DIE ANTI ALLOHOL... ALKOHOL STAFFEL" Proc _LGO[A$,B$] End Proc Procedure _L04 'Aliens subtrahieren 'RB = Punktegeber 'R0 = X-Geschw. 'R1 = [0] Treffer, [1] Kein Treffer 'R2 = Anzahl der Wiederkehr 'R3 = X-Stopposition 'R4 = Y-Stopposition 'R5 = Y-Min 'R6 = Y-Max If XMODUS=False XANUMB=4 XAHITS=5 XSPEED=1 XVIRUS=50 Else If XMODUS=1 XANUMB=4 XAHITS=6 XSPEED=2 XVIRUS=40 Else If XMODUS=2 XANUMB=5 XAHITS=7 XSPEED=2 XVIRUS=30 End If Add XANUMB,4 A$=" L:LR1=1;" A$=A$+" LX=336+Z(32);" A$=A$+" LY=8+Z(52)+Z(33)+Z(99);" A$=A$+" LR0=2+Z(1)+Z(3)+Z("+Str$(XSPEED)+");" A$=A$+" LR3=10+Z(10)+Z(5);" A$=A$+" LR4=16+Z(32);" A$=A$+" LR5=16+R0;" A$=A$+" LR6=188-R0;" A$=A$+" A0,(50,4)(51,4)(52,4)(53,4);" A$=A$+"A:FR7=0TR3;LX=X-R0;IR1<1JD;IX<0JL;NR7;" A$=A$+"B:IZ(1)>0JC;FR7=0TR4;IYR6JB;LY=Y+R0;IR1<1JD;NR7;JA" A$=A$+"D:LRB=R0*10;" A$=A$+" LRV=X;LRW=Y;" A$=A$+" A1,(54,4)(55,4)(56,4)(57,4)(58,4)(59,4)(108,1);" A$=A$+" FR0=0T12;P;NR0;" A$=A$+" LR2=R2-1;IR2>0JL" For I=5 To XANUMB Channel I To Bob I Bob I,False,False,108 Amal I,A$ Amreg(I,2)=XAHITS Next A$="LEVEL"+Str$(XLEVEL+XMODUS*11) B$="ARGUMENTIEREN, DISKUTIEREN, ALIENS SUBTRAHIEREN" Proc _LGO[A$,B$] End Proc Procedure _L05 'Hauptverkehrszeit 'RB = Punktegeber 'R0 = X-Geschw. 'R1 = [0] Treffer, [1] Kein Treffer 'R2 = Anzahl der Wiederkehr If XMODUS=False XANUMB=4 XAHITS=4 XSPEED=1 XVIRUS=75 Else If XMODUS=1 XANUMB=5 XAHITS=6 XSPEED=2 XVIRUS=50 Else If XMODUS=2 XANUMB=6 XAHITS=8 XSPEED=3 XVIRUS=25 End If Add XANUMB,4 A$=" L:LR1=1;" A$=A$+" LR0=336;LX=R0+Z(32);" A$=A$+" LY=8+Z(52)+Z(33)+Z(99);" A$=A$+" LR0=4+Z("+Str$(XSPEED)+");" A$=A$+" A0,(60,3)(61,3)(62,3)(63,3);" A$=A$+"A:LX=X-R0;IR1<1JC;P;IX>-32JA;LR0=1+R0+Z("+Str$(XSPEED)+");LY=8+Z(52)+Z(20)+Z(99);" A$=A$+"B:LX=X+R0;IX>368JL;IR1<1JC;P;JB" A$=A$+"C:LRB=R0*10" A$=A$+" LRV=X;LRW=Y;" A$=A$+" A1,(64,18)(65,3)(66,3)(67,3)(68,3)(69,3)(70,3)(71,3)(72,3)(73,3)(108,1);" A$=A$+" LR2=R2-1;FR0=0T23;P;NR0;" A$=A$+" IR2>0JL" For I=5 To XANUMB Channel I To Bob I Bob I,False,False,108 Amal I,A$ Amreg(I,2)=XAHITS Next A$="LEVEL"+Str$(XLEVEL+XMODUS*11) B$="NACH DER ZUKUNFT FOLGT DIE HAUPTVERKEHRSZEIT" Proc _LGO[A$,B$] End Proc Procedure _L06 'Flummies 'RB = Punktegeber 'R0 = Label-Sprung 'R1 = Test ob Treffer 'R2 = X-Geschw. 'R3 = Y-Geschw. 'R4 = [0] Kein Treffer, [1] Treffer 'R5 = Anzahl der Wiederkehr 'R6 = Kugelfarbe [0-2] If XMODUS=False XANUMB=3 XAHITS=5 XSPEED=1 XVIRUS=50 Else If XMODUS=1 XANUMB=4 XAHITS=6 XSPEED=2 XVIRUS=40 Else If XMODUS=2 XANUMB=4 XAHITS=7 XSPEED=3 XVIRUS=30 End If Add XANUMB,4 A$=" L:LR1=1;" A$=A$+" LA=74+R6;" A$=A$+" LR0=Z(3);" A$=A$+" LR2=2+Z("+Str$(XSPEED)+");" A$=A$+" LR3=2+Z("+Str$(XSPEED)+");" A$=A$+" IR0=0JA;" A$=A$+" IR0=1JB;" A$=A$+" IR0=2JC;" A$=A$+" IR0=3JD;" A$=A$+"A:IX>312JD;IY>192JC;IR1<1JE;LX=X+R2;LY=Y+R3;P;JA;" A$=A$+"B:IX< 8JC;IY< 8JD;IR1<1JE;LX=X-R2;LY=Y-R3;P;JB;" A$=A$+"C:IX>312JB;IY< 8JA;IR1<1JE;LX=X+R2;LY=Y-R3;P;JC;" A$=A$+"D:IX< 8JA;IY>192JB;IR1<1JE;LX=X-R2;LY=Y+R3;P;JD;" A$=A$+"E:LRB=R2*10;" A$=A$+" LRV=X;LRW=Y;" A$=A$+" LA=77;P;P;P;P;P;P;P;" A$=A$+" LR5=R5-1;IR5>0JL;" A$=A$+" A1,(37,4)(38,4)(39,4)(40,4)(41,4)(108,1);" A$=A$+" FR0=0T10;P;NR0" Randomize Timer For I=5 To XANUMB Channel I To Bob I Bob I,336+Rnd(16),8+Rnd(179),108 Amal I,A$ Amreg(I,5)=XAHITS Amreg(I,6)=Rnd(2) Next A$="LEVEL"+Str$(XLEVEL+XMODUS*11) B$="WAS SUCHEN DENN FLUMMIES IM WELTALL?" Proc _LGO[A$,B$] End Proc Procedure _L07 'Totenköpfe 'RA = Anzahl der Totenköpfe 'R0 = Geschw. & Punktebonus 'R1 = Totenkopf Reg. [1] = Nicht getroffen / [0] = Getroffen If XMODUS=False XANUMB=4 XSPEED=1 Else If XMODUS=1 XANUMB=5 XSPEED=2 Else If XMODUS=2 XANUMB=6 XSPEED=3 End If XTOHIT=XANUMB Add XANUMB,4 XAHITS=1 XVIRUS=False 'Levelinfo B$="LEVEL"+Str$(XLEVEL+XMODUS*11) C$="DIE ZUVIEL GERAUCHT ODER FALSCHE DIAET LIGA" Proc _LEVINFO[B$,C$] If Param=69 or Param=95 Then Pop Proc 'Amal für Totenköpfe A$=" LR1=1;" A$=A$+" A0,(78,10)(79,10);" A$=A$+" LR0=50+Z(20);P;MRX-X,RY-Y,R0;P;" A$=A$+"A:LR0=16+Z(54);LR0=R0+"+Str$(XSPEED)+"P;MRX-X,RY-Y,R0;JA" For I=5 To XANUMB Channel I To Bob I Bob I,336,8+Rnd(192),79 Amal I,A$ Next Flash 8,"(F00,5)(A00,3)(600,3)(200,5)(600,3)(A00,3)" 'Amal wenn Totenkopf getroffen A$=" LR1=0;" A$=A$+"A1,(80,5)(81,5)(82,5)(83,5)(108,1);" A$=A$+"FR0=0T10;P;NR0" Amal On 1 : Wait 80 Amal On : Wait Vbl Timer=False Repeat If Amreg(18) Then Proc _SFX If Bob Col(1,5 To XANUMB) If Amreg(Col(-1),1) Proc _EXPLO Exit If XLIVES<1 End If End If If Bob Col(2,5 To XANUMB) Amreg(2,1)=1 Gosub A_LE01 End If If Bob Col(3,5 To XANUMB) Amreg(3,1)=1 Gosub A_LE01 End If If Bob Col(4,5 To XANUMB) Amreg(4,1)=1 Gosub A_LE01 End If Until XTOHIT<1 XTIMER=Timer Proc _LEVOK Pop Proc A_LE01: I=Col(-1) If Amreg(I,1) Sam Play %10,5 Add XSCORE,300-Amreg(I,False) Amal Off I Amal I,A$ Amal On I Dec XTOHIT Proc _PUTINFO End If Return End Proc Procedure _L08 'Bonussturm 'RA = 0 -> Ende 'R1 = Tafel Reg. [<1] = Ende / [>1] 'R2 = Tafelart 'R3 = X-Geschw. XLASER=False If XMODUS=False XTOHIT=30 Else If XMODUS=1 XTOHIT=40 Else If XMODUS=2 XTOHIT=50 End If XANUMB=10 XVIRUS=False 'Levelinfo A$="BONUSSTURM" B$="NICHT ALLES WAS DA HERUMWIRBELT IST NUETZLICH" Proc _LEVINFO[A$,B$] If Param=69 or Param=95 Then Pop Proc 'Schuss abstellen für mehr Geschw. Proc _LASEROFF 'Amal für Tafel For I=5 To 10 Channel I To Bob I A$=" A:LX=336;LX=X+Z(10)+Z(6);" A$=A$+" LY=Z(5)+Z(6);LY=Y*16+14;P;" A$=A$+" LR2=Z(3)+Z(5);LR2=Z(R2);LA=84+R2;P;" A$=A$+" LR3=Z(2)*Z(3);LR3=R3+Z(2)+Z(3);LR3=R3+2;" A$=A$+" LR1=1;" A$=A$+" IR3<8JB;LRR=1;LRS=7;LRT=15000" A$=A$+"B:IR1<1JA;IRA<1JC;LX=X-R3;P;IX<0JAJB;" A$=A$+"C:LY=Y+2;P;IY<208JC;LA=108;P" Bob I,False,False,108 Amal I,A$ Next 'RA = 0 dann geschafft Amreg(False)=1 Amal On 1 : Wait 80 Amal On : Wait Vbl Repeat If Amreg(18) Then Proc _SFX If Bob Col(1,5 To 10) I=Col(-1) B=Amreg(I,2) If B=False and Amreg(I,1)>False Proc _EXPLO Exit If XLIVES<1 Else Amreg(I,1)=False Dec XTOHIT If B=1 Add XSCORE,10 Else If B=2 Add XSCORE,50 Else If B=3 Add XSCORE,100 Else If B=4 XFMODE=False : Rem Einerschuss Else If B=5 XFMODE=1 : Rem Doppelschuss Else If B=6 XFMODE=2 : Rem Hintervorderschuss Else If B=7 XFMODE=3 : Rem Dreierschuss Else If B=8 XFMODE=4 : Rem Salveschuss End If Sam Play 14,8,4000 End If Proc _PUTINFO End If Until XTOHIT<1 'Bonustafeln absinken If XTOHIT<1 Then Amreg(False)=False Proc _LEVOK End Proc Procedure _L09 'Meteorsturm 'RA = Anzahl der Meteore 'RB = Punktezähler 'R0 = X-Geschw. 'R1 = X-Geschw × 2 'R2 = Punktebonus XLASER=False If XMODUS=False XTOHIT=50 Else If XMODUS=1 XTOHIT=100 Else If XMODUS=2 XTOHIT=150 End If XANUMB=10 XVIRUS=False 'Levelinfo A$="NUN HABEN WIR NE SCHOENE ZEIT MIT METEORITEN" B$="FUER MEHR PUNKTE EINFACH BLEIFUSS EINSCHALTEN" Proc _LEVINFO[A$,B$] If Param=69 or Param=95 Then Pop Proc 'Amal für Meteore A$=" L:LX=368+Z(16);LX=X+Z(16);LA=115+Z(3);" A$=A$+" LR0=Z(1);LR0=R0+Z(2);LR0=R0+Z(3);LY=28*R0;LY=Y;LY=Y+9;" B$=" L:LX=368+Z(16);LX=X+Z(16);LY=RY;LA=115+Z(3);" C$=" LR0=2+Z(3);LR0=R0+Z(2);LR1=R0+R0;LR1=R1+2;P;" C$=C$+" IR0<6JA;LRR=2;LRS=7;LRT=9000" C$=C$+"A:LR2=R0;" C$=C$+"B:IJ1&16JC;LX=X-R0;P;IRA<1JF;IX>0JBJE" C$=C$+"C:LR2=R1+RX" C$=C$+"D:LX=X-R1;P;IRA<1JF;IX<0JE;IJ1&16JDJA" C$=C$+"E:IRA<1JF;LRA=RA-1;LRB=R2;JL" C$=C$+"F:LY=Y+2;P;IY<230JF;LA=108;P" A$=A$+C$ B$=B$+C$ Proc _LASEROFF For I=5 To 9 Channel I To Bob I Bob I,368,False,115+Rnd(3) Amal I,A$ Next Channel 10 To Bob 10 Bob 10,False,False,108 Amal 10,B$ 'RA = Anzahl der Meteore Amreg(0)=XTOHIT Amal On 1 : Wait 80 Amal On : Wait Vbl Repeat If Amreg(18) Then Proc _SFX If Bob Col(1,5 To 10) If XLIVES<2 Amreg(False)=1000 End If Proc _EXPLO Exit If XLIVES<1 End If If XTOHIT>Amreg(False) XTOHIT=Amreg(False) Add XSCORE,Amreg(1) Proc _PUTINFO End If Until XTOHIT<1 Proc _LEVOK End Proc Procedure _L10 'Zyklop 'RA = [1] = Zyklop Ok, [0] = Zerstört 'RB = Punktebonus (abh. v. Schussanzahl) 'RC = Y-Pos. Endgegner 'RD = Signal für Schuss If XMODUS=False XAHITS=20 Else If XMODUS=1 XAHITS=30 Else If XMODUS=2 XAHITS=40 End If XANUMB=5 XTOHIT=XAHITS XVIRUS=False 'Levelinfo A$="BIG ZYKLOP IS WATCHING YOU" B$="DA WERDEN WIR WOHL MAL ZUM AUGENARZT MUESSEN" Proc _LEVINFO[A$,B$] If Param=69 or Param=95 Then Pop Proc 'Amal für Zyklop A$=" LR0=0;LA=109;LX=360;M-56,0,56;" A$=A$+"L:LR1=1;" A$=A$+" A0,(109,20)(110,5)(111,5)(112,5)(113,5)(112,5)(111,5)(110,5);" A$=A$+" LR0=Z(1);IR0=1JB;" A$=A$+"A:LR0=Z(80);FR3=0TR0;IY>180JB;LY=Y+4;LRC=Y;IR1<1JC;NR3;JB;" A$=A$+"B:LR0=Z(80);FR3=0TR0;IY< 17JA;LY=Y-4;LRC=Y;IR1<1JC;NR3;JA;" A$=A$+"C:A1,(114,1);P;P;P;P;P;P;P;IRA>0JL;A1,(113,1);" A$=A$+"D:LA=113+Z(1);P;P;P;IRA<1JD;LA=113;FR0=0T20;P;NR0;M56,0,112" Channel 5 To Bob 5 : Bob 5,False,100,108 : Wait Vbl : Amal 5,A$ 'Alien-Schuss A$=" FR0=0T56;P;NR0;LRB=50" A$=A$+"L:LRD=Z(3)+Z(3);IRD<5JA;FR0=0T30;P;NR0;JL" A$=A$+"A:LRR=4;LRS=9;LRT=8000;" A$=A$+" LY=RC;LX=304;LA=107;M-304,RY-Y,33;LA=108;LRB=50;JL" Channel 6 To Bob 6 : Bob 6,False,False,108 : Wait Vbl : Amal 6,A$ A$=" FR0=0T56;P;NR0" A$=A$+"L:P;IRD>3JL;LRB=60" A$=A$+" LY=RC;LX=304;LA=107;M-304,RY-Y-48,33;LA=108;LRB=50;JL" Channel 7 To Bob 7 : Bob 7,False,False,108 : Wait Vbl : Amal 7,A$ A$=" FR0=0T56;P;NR0" A$=A$+"L:P;IRD>2JL;LRB=70" A$=A$+" LY=RC;LX=304;LA=107;M-304,RY-Y+48,33;LA=108;LRB=50;JL" Channel 8 To Bob 8 : Bob 8,False,False,108 : Wait Vbl : Amal 8,A$ 'RA = 0 dann geschafft Amreg(False)=1 Amal On 1 : Wait 80 Amal On : Wait Vbl Timer=False Repeat If Amreg(18) Then Proc _SFX If Bob Col(1,5 To 8) Proc _EXPLO Exit If XLIVES<1 End If If Bob Col(2,5 To 5) Amreg(2,1)=1 Gosub L_HIT End If If Bob Col(3,5 To 5) Amreg(3,1)=1 Gosub L_HIT End If If Bob Col(4,5 To 5) Amreg(4,1)=1 Gosub L_HIT End If Until XTOHIT<1 XTIMER=Timer 'Schluß-Sequenz If XTOHIT<1 Amreg(False)=False A$=" A10,(9,3)(10,3)(11,3)(12,3)(13,3)(14,3)(15,3)(16,3)(17,3)(18,3)(108,1);" A$=A$+" LR1=10;" A$=A$+"A:LR0=Z(13)-Z(12);LX=304+R0;LR0=Z(12)-Z(13);LY=RC+R0;" A$=A$+" LRR=1+Z(14);LRS=5;LRT=9000;FR0=0T11;P;P;NR0;LR1=R1-1;IR1>0JA;LA=108" Priority Reverse Off For I=6 To 8 Amal Off I Amal I,A$ Amal On I Wait 1+Rnd(10) Next While Chanan(8) Proc _SFX Wait 3 Wend For I=6 To 8 Amal Off I Bob Off I Wait Vbl Next Priority Reverse On Amreg(False)=1 Wait Vbl While Chanmv(5) Proc _SFX Wend End If Proc _LEVOK Pop Proc 'Treffer L_HIT: If Amreg(5,1) Sam Play %10,5 Amreg(5,1)=False Add XSCORE,Amreg(1) Dec XTOHIT Proc _PUTINFO End If Return End Proc Procedure _L11 'Dr.Zuckerbrot 'RA = [1] = Alien Ok, [0] = Zerstört 'RB = X-Pos. Endgegner nach zerst. 'RC = Y-Pos. Endgegner nach zerst. 'R0 = X/Y-Bewegung 'R1 = Gegner getroffen 'R2 = Schleifenzähler If XMODUS=False XAHITS=20 Else If XMODUS=1 XAHITS=30 Else If XMODUS=2 XAHITS=50 End If XANUMB=5 XTOHIT=XAHITS XVIRUS=False 'Levelinfo A$="DIE FAUST DES DR.ZUCKERBROT" B$="RUNDE"+Str$(XMODUS+1)+" VON 3 ABER WO BLEIBT DAS NUMMERNGIRL?" Proc _LEVINFO[A$,B$] If Param=69 or Param=95 Then Pop Proc 'Amal für Faust A$=" M-130,0,130" A$=A$+"L:LR1=1" A$=A$+" IZ(1)=1JB" A$=A$+"A:LR0=Z(37)-Z(4);IR0>36JC" A$=A$+" FR2=0TR0;IY>190JB;LY=Y+5;IY=RYJC;IRA<1JF;IR1<1JF;NR2;JB" A$=A$+"B:LR0=Z(37)-Z(4);IR0>36JC" A$=A$+" FR2=0TR0;IY< 10JA;LY=Y-5;IY=RYJC;IRA<1JF;IR1<1JF;NR2;JA" A$=A$+"C:IX< 80JD;IR1<1JE;IRA<1JE;LX=X-20;P;JC" A$=A$+"D:LRR=15;LRS=10;LRT=10000" A$=A$+"E:IX>260JL;IR1<1JF;IRA<1JF;LX=X+20;P;JE" A$=A$+"F:P;P;IRA>0JL" A$=A$+" LRB=X;LRC=Y" A$=A$+"G:P;IRA<1JG" A$=A$+"H:LX=X+1;P;IX<400JH" Channel 5 To Bob 5 : Bob 5,400,100,119 : Wait Vbl : Amal 5,A$ 'RA=0 dann geschafft Amreg(False)=1 Amal On 1 : Wait 80 Amal On : Wait Vbl Timer=False Repeat If Amreg(18) Then Proc _SFX If Bob Col(1,5 To 5) Proc _EXPLO Exit If XLIVES<1 End If If Bob Col(2,5 To 5) Amreg(2,1)=1 Gosub L_HIT End If If Bob Col(3,5 To 5) Amreg(3,1)=1 Gosub L_HIT End If If Bob Col(4,5 To 5) Amreg(4,1)=1 Gosub L_HIT End If Until XTOHIT<1 XTIMER=Timer If XTOHIT<1 Amreg(False)=False Bob 5,Max(84,Min(270,X Bob(5))),Max(36,Min(164,Y Bob(5))),119 Wait Vbl Amreg(1)=X Bob(5) Amreg(2)=Y Bob(5) A$=" LR1=20" A$=A$+" A0,(9,3)(10,3)(11,3)(12,3)(13,3)(14,3)(15,3)(16,3)(17,3)(18,3)(108,1)" A$=A$+"A:LR0=Z(75)-Z(75);LX=RB+R0;;LR0=Z(23)-Z(23);LY=RC+R0" A$=A$+" FR0=0T22;P;NR0;LR1=R1-1;IR1>0JA;LA=108" Priority Reverse Off For I=6 To 15 Channel I To Bob I Bob I,Amreg(1),Amreg(2),108 Amal I,A$ Amal On I Wait Vbl Next While Amreg(15,1) If Rnd(1) Get Icon Palette Sam Play 1+Rnd(14),5,9000 Colour False,Rnd($F) : Wait 3 Get Bob Palette End If Wait Vbl Wend For I=6 To 15 Amal Off I : Bob Off I : Wait Vbl Next Priority Reverse On Amreg(False)=1 Amreg(18)=False Repeat Proc _SFX Wait Vbl Until X Bob(5)>399 End If Proc _LEVOK Pop Proc L_HIT: If Amreg(5,1) Get Icon Palette Sam Play %10,5 Amreg(5,1)=False XTOHIT=Max(False,XTOHIT-1) Add XSCORE,50+Amreg(23) Proc _PUTINFO Get Bob Palette End If Return End Proc Procedure _LGO[A$,B$] 'Haupttest für Alien-Level`s 'R1 = Reg. für Treffererkennung 'Anzahl der zu vernich. Aliens XTOHIT=(XANUMB-4)*XAHITS 'Levelinfo Proc _LEVINFO[A$,B$] If Param=69 or Param=95 Then Pop Proc 'WeltraumVIRUS aktivieren If XVIRUS Then Proc _VIRUS Amal On 1 : Wait 80 Amal On : Wait Vbl Timer=False Repeat If Amreg(18) Then Proc _SFX If Bob Col(1,5 To XVIRUS) If Col(-1)=XVIRUS Proc _COLTEST If XTOHIT<1 Pop Proc End If Else If Amreg(Col(-1),1) Proc _EXPLO End If End If Exit If XLIVES<1 End If If Bob Col(2,5 To XANUMB) Amreg(2,1)=1 Gosub L_HIT End If If Bob Col(3,5 To XANUMB) Amreg(3,1)=1 Gosub L_HIT End If If Bob Col(4,5 To XANUMB) Amreg(4,1)=1 Gosub L_HIT End If Until XTOHIT<1 XTIMER=Timer Proc _LEVOK Pop Proc 'R1<>0 dann Treffer L_HIT: A=Col(-1) If Amreg(A,1) Amreg(A,1)=False Dec XTOHIT Sam Play %10,5 Wait Vbl Add XSCORE,Amreg(1)+Amreg(7)*Amreg(1) Amreg(XVIRUS,1)=False Proc _PUTINFO End If Return End Proc Procedure _EXPLO Amal Freeze 1 Inc XLLOST Channel 15 To Bob 15 Bob 15,X Bob(1),Y Bob(1),108 Proc _CFX[$F00,5] Bob 1,,,108 Proc _LASEROFF Wait 6 Fade 3 To -1 Amal 15,"A1,(108,10)(9,4)(10,4)(11,4)(12,4)(13,4)(14,4)(15,4)(16,4)(17,4)(18,4)(108,1)" Amal On 15 : Wait Vbl While Chanan(15) Wend Bob Off 15 : Wait Vbl XFMODE=Max(False,XFMODE-1) Proc _SETLASER Dec XLIVES Proc _PUTINFO If XLIVES<1 XTIMER=Timer Randomize Timer Amal Off 1 : Bob Off 1 : Wait Vbl Proc _PUTINFO A=Start(8) B=A+Length(8) Amreg(18)=False Amreg(23)=100 Amreg(24)=100 Repeat Paste Bob Deek(A),Deek(A+2),9+Rnd(1) : Add A,4 Proc _SFX Until A=>B Timer=XTIMER Else For I=1 To 4 Amal On I Next End If End Proc Procedure _COLTEST A=Amreg(XVIRUS,False) Amreg(XVIRUS,1)=1 If A<3 If A=False Add XSCORE,10 Else If A=1 Add XSCORE,50 Else If A=2 Add XSCORE,100 End If Sam Play 15,8 Proc _PUTINFO Else If A>2 and A<8 XFMODE=A-3 Sam Play 15,8 Proc _SETLASER For I=2 To 4 Amal On I Next Wait Vbl Else If A=8 Sam Play 15,2,4000 XLIVES=Min(99,XLIVES+1) Proc _PUTINFO Else If A=9 or A=10 If A=9 B=$FD0 Else B=$AAA End If Proc _CFX[B,4] Amal Off For I=2 To 15 Bob Off I Next Wait 5 Fade 3 : Wait 45 Proc _INSTALL If A=9 Proc _L08 Else Proc _L09 End If XTOHIT=False Else If A>10 Proc _EXPLO Amreg(XVIRUS,2)=4 End If End Proc Procedure _VIRUS 'A = Auftrittsquote 0%-100% A=XVIRUS XVIRUS=XANUMB+1 If A A$=" L:P;IR1>0JL;LX=RV;LY=RW;IZ(99)>R3JC" A$=A$+" LR0=Z(5);LR0=R0+Z(7)" A$=A$+" IR0>10JB" A$=A$+" LA=85+R0" A$=A$+"A:LX=X-6;P;IR1>0JC;IX>0JAJC" A$=A$+"B:A0,(96,3)(97,3)(98,3)" A$=A$+" LRH=1" A$=A$+" FR2=0T4" A$=A$+" LRR=4;LRS=6;LRT=11000" A$=A$+" MRX-X,RY-Y,80-R2" A$=A$+" NR2" A$=A$+" LRR=4;LRS=6;LRT=11000" A$=A$+" M-336,0,82" A$=A$+"C:LR1=1;A1,(108,1);LX=336;P;LRH=0;JL" Channel XVIRUS To Bob XVIRUS : Bob XVIRUS,336,False,108 : Amal XVIRUS,A$ Amreg(7)=False Amreg(XVIRUS,1)=1 Amreg(XVIRUS,3)=A End If End Proc Procedure _LEVOK Proc _PUTINFO Amal Off XVIRUS Bob Off XVIRUS Amal Off 1 If XLIVES>False Then Bob 1,,,1 Proc _LASEROFF Amreg(18)=False If XTOHIT>False Proc _WAIT Else If Amreg(7) Proc _CFX[$B0F,4] XLIVES=Min(99,XLIVES+1) Add XSCORE,500+XMODUS*11+XLEVEL*10 For I=2 To 10 Amal Off I : Bob Off I : Wait Vbl Next Proc _LEVINFO["F R E I B I E R S C H E N",""] End If Wait 80 A$=" A0,(1,5)(2,5)(3,5)(4,5)(5,5)(6,5)(7,5)(8,5);" A$=A$+"FR0=0T50;P;NR0;A:LX=X+2;P;JA" Amal 1,A$ Amal On 1 Repeat Wait Vbl Until X Bob(1)>400 Bob Off 1 Wait Vbl End If Amreg(7)=False Flash Off : Fade 3 : Wait 45 Amal Off : Bob Off : Wait Vbl If XLASER Then Proc _ANALYSE End Proc Procedure _PUTINFO 'Informationen ausgeben Screen 1 Text 115,22,Format$("%03ld",Varptr(XTOHIT)) Text 175,22,Format$("%02ld",Varptr(XLIVES)) A=XMODUS*11+XLEVEL : Text 119,51,Format$("%02ld",Varptr(A)) Text 160,51,Format$("%06ld",Varptr(XSCORE)) Screen False End Proc Procedure _LEVINFO[A$,B$] If B$="" Then A=5 : Rem Freibierschen für Virus! Proc _PUTINFO Autoback False : Wait Vbl X=160-Len(A$)*3 : Proc _T[X,85+A,A$] X=160-Len(B$)*3 : Proc _T[X,95,B$] Screen Swap : Wait Vbl Screen Show False Fade 3 To -1 : Wait 50 If A=False Proc _FORBID[False] Proc _WAIT : A=Param If Param=95 Proc _MENU End If Proc _FORBID[True] End If Screen Copy Logic To Physic : Wait Vbl Autoback 2 : Wait Vbl End Proc[A] Procedure _ANALYSE If XLASER=False Then Pop Proc _FORBID[False] _MUSIC[True] T=XTIMER/50 A=T/60 : M$=Format$("%02ld",Varptr(A)) A=T mod 60 : M$=M$+":"+Format$("%02ld",Varptr(A)) XANUMB=(XANUMB-4)*XAHITS A#=50.0/XANUMB A#=50.0-(A#*XTOHIT) A#=A#-(10*XLLOST) B#=50.0/Max(1,Amreg(5)) B#=B#*(XANUMB-XTOHIT) A#=A#+B# If A#<0 Then A#=0 If A#>100 Then A#=100 Y=30 Cls False : Wait Vbl Autoback False : Wait Vbl A$="STATISTIK DES LEVEL"+Str$(XLEVEL+XMODUS*11) _T[160-Len(A$)*3,Y,A$] _T[79,Y+20,Format$("VERBRAUCHTE BIERSCHEN:%6ld",Varptr(XLLOST))] A=XANUMB-XTOHIT _T[79,Y+30,Format$("ALIENS ERSCHOSSEN....:%6ld",Varptr(A))] A=Amreg(5) _T[79,Y+40,Format$("ABGEFEUERTE LASER....:%6ld",Varptr(A))] _T[79,Y+50,"BENOETIGTE ZEIT......: "+M$] If A#>99.9 Then A$="100" Else A$=Str$(A#) _T[79,Y+60,"TALENTQUOTE..........:"+String$(" ",5-Len(A$))+A$+"-"] A=A#*10 : Add A,-XLLOST*50 : Add A,120-T : A=Max(0,A) _T[79,Y+80,Format$("BONUSPUNKTE..........:%6ld",Varptr(A))] Add XSCORE,A XLSCRE=XSCORE-XLSCRE _T[79,Y+90,Format$("LEVELPUNKTE TOTAL....:%6ld",Varptr(XLSCRE))] A=Start(6)+238+2*(XLEVEL+XMODUS*11) If XLSCRE>Deek(A) Then B$="NEUER " : Doke A,XLSCRE : XNHIGH=True A$=Str$(Deek(A))-" " : A$=String$(" ",6-Len(A$))+A$ B$=B$+"LEVELREKORD" : B$=B$+String$(".",21-Len(B$)) _T[79,Y+110,B$+":"+A$] Screen Copy Logic To Physic : Wait Vbl Autoback 2 : Wait Vbl Fade 3 To -1 : Wait 45 If A#>89.99 and XLIVES>0 A$="SO EIN BALLERMANN TALENT BEKOMMT EIN FREIBIERSCHEN" _T[160-Len(A$)*3,Y+135,A$] XLIVES=Min(99,XLIVES+1) XFMODE=Min(4,XFMODE+1) End If _PUTINFO _WAIT Fade 3 If XLEVEL<11 and XLIVES>False Then _MUSIC[False] Else Wait 45 End Proc Procedure _NEXTMODE Screen 1 : Fade 3 : Wait 45 : Screen False Proc _MUSIC[True] Cls False : Wait Vbl B=XSCORE/5 Add XSCORE,B Get Bob Palette Restore A_NM Do Read A$,A Exit If A$="" Proc _T[160-Len(A$)*3,A,A$] Loop Proc _WAIT Fade 3 : Proc _MUSIC[False] Screen 1 Fade 2,$0,$FFF,$426,$646,$868,$A8A,$92,$204,$406,$608,$80A,$A0C,$C0E,$C6E,$C8F,$305 Wait 32 Screen False A_NM: Data "NAJA DAS WAR JA GAR NICHT MAL SO SCHLECHT",30 Data "DU HAST DIE"+Str$(XMODUS+1)+". STUFE ERKLOMMEN",40 Data "DA MAN ES ABER IN SUEDDEUTSCHLAND GERNE",60 Data "LAUT UND ORDENTLICH KRACHEN HOERT SETZT DU",70 Data "NATUERLICH NOCH LOCKER EINEN DRAUF",80 Data "MIT DEM SCHLACHTRUF: 1..2..3..XSUFFA",100 Data "SCHWINGST DU DICH ERNEUT AUF DEINEN GLEITER",110 Data "NATUERLICH NICHT OHNE ZUVOR AUCH DEINEN",130 Data "FLIEGER AUSREICHEND MIT SPRIT ZU VERSORGEN",140 Data "ZUSAETZLICH GIBT ES DANN NOCH"+Str$(B)+" BONUSPUNKTE",170 Data "",0 End Proc Procedure _ALLDONE Proc _MUSIC[True] Screen 1 : Fade 3 : Wait 45 : Screen False Cls False : Wait Vbl Autoback False : Wait Vbl A$="FEIERABEND" Proc _T[False,False,A$] ZX=3 ZY=3 A=Len(A$)*6*ZX B=160-A/2 C=(XSCORE/5)*Max(1,XLIVES) Add XSCORE,C For X=False To A For Y=False To 4 Cls Point(X,Y),B+X*ZX,30+Y*ZY To B+ZX+X*ZX,30+ZY+Y*ZY Next Next Cls False,False,False To 320,6 Screen Copy Logic To Physic : Wait Vbl Autoback 2 : Wait Vbl Fade 3 To -1 : Wait 45 Restore A_AD Do Read A$,A Exit If A$="" Proc _T[160-Len(A$)*3,A,A$] Loop Proc _WAIT A_AD: Data "DR.ZUCKERBROT UND SEINE GETREUEN ALIENS",70 Data "KAPITULIEREN VOR SOVIEL SCHIESSWUT",80 Data "AUS IHRER SICHT KANNST DU DICH NUN RUHIG",100 Data "SUEDDEUTSCHER SCHUETZENKOENIG NENNEN",110 Data "WENN DU NUR DIE FINGER VOM ALKOHOL LAESST",120 Data "UND ALS BELOHNUNG EINE KLEINE FUDELEI:",140 Data "VOR DEM START EINES LEVEL >> HELP << DRUECKEN",150 Data "DEIN PUNKTEKONTO WIRD ZUVOR UM"+Str$(C)+" ERHOEHT",170 Data "SUMMA SUMARUM MACHT DAS DANN"+Str$(XSCORE)+" PUNKTE",180 Data "",0 End Proc Procedure _SFX If Amreg(18) Sam Play Amreg(17),Amreg(18),Amreg(19) Amreg(18)=False End If End Proc Procedure _CFX[A,B] Sam Play 1,B,8000 : Wait Vbl Sam Play 2,B,9000 : Wait Vbl Sam Play 4,B,10000 : Wait Vbl Sam Play 8,B,11000 For I=False To 8 Colour False,A : Wait Vbl Colour False,False : Wait Vbl Next Palette A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A End Proc Procedure _MUSIC[A] If A=False For A=63 To False Step -1 Pt Volume A Wait Vbl Next Pt Stop Led On XMUSIC=False Else If A=True and XMUSIC=False Pt Play 3 Pt Volume 63 XMUSIC=True End If End Proc Procedure _WAIT Amreg(18)=False A=Scancode Clear Key Wait 10 Repeat Proc _SFX A=Scancode Exit If A Wait Vbl Until Fire(1)+Asc(Inkey$) If Fire(1) Then A=80 If A=False Then A=Scancode Clear Key Wait 10 If A=69 Then XLIVES=False End Proc[A] Procedure _PAUSE[A] Clear Key A=A*50 Repeat Dec A Wait Vbl Until A<1 or Fire(1) End Proc Procedure _FORBID[A] 'True = Forbid / False = Permit If A=True and XTASKS=False A=Execall(-132) XTASKS=True Else If A=False and XTASKS=True A=Execall(-138) XTASKS=False End If End Proc Procedure _T[X,Y,A$] A=Len(A$)-1 B=Varptr(A$) For I=False To A C=Peek(B+I)-43 If C>False Then Paste Icon X+I*6,Y,C Next End Proc Procedure _MENU Amal Off : Bob Off : Wait Vbl Fade 3 : Wait 45 Proc _MUSIC[True] Cls False : Wait Vbl Autoback False : Wait Vbl XLEVEL=XMODUS*11+XLEVEL Proc _T[97,55,"BIERSCHEN FUDEL MENUE"] Gosub _MOUT Screen Show Fade 3 To -1 : Wait 45 Do If Inkey$=Chr$(27) Proc _MUSIC[False] Direct End If A=Joy(1) Exit If A=16 If A=1 Add B,-10,False To 20 Else If A=2 Add B,10,False To 20 End If If A<3 Then Bob 1,112,77+B,107 : Wait 4 If A=4 or A=8 If A=4 : A=-1 Else A=1 : End If If B=False Add XLEVEL,A,1 To 33 Else If B=10 Add XLIVES,A,1 To 99 Else If B=20 Add XFMODE,A,False To 4 End If Gosub _MOUT End If Loop If XLEVEL<12 XMODUS=False Else If XLEVEL>11 and XLEVEL<23 XMODUS=1 Else If XLEVEL>22 XMODUS=2 End If XLEVEL=(XLEVEL mod 11)-1 Bob Off : Wait Vbl Screen Swap : Wait Vbl Bob Off : Wait Vbl Fade 3 : Proc _MUSIC[False] Autoback 2 : Wait Vbl Pop Proc _MOUT: Proc _T[121,75,"STARTLEVEL:"+Str$(XLEVEL)] Proc _T[121,85,"BIERSCHEN.:"+Str$(XLIVES)] Proc _T[121,95,"LASERMODUS:"+Str$(XFMODE)] Screen Copy Logic To Physic : Wait Vbl Return End Proc