home *** CD-ROM | disk | FTP | other *** search
- DECLARE SUB Intro ()
- DECLARE SUB pal (n!, r!, g!, b!)
- ON ERROR GOTO errorhandler
- IF COMMAND$ = "DBSISGREAT" THEN cheat% = 1 ELSE cheat% = 0
- COLOR 10
- PRINT "The EGGS Files ";
- COLOR 12
- PRINT "3";
- COLOR 7
- PRINT SPACE$(10); "version 1.2"
- PRINT
- COLOR 15
- PRINT "Please wait, loading and initializing..."
-
- DEFINT A-Y
- DIM SHARED speedreduc
- TT$ = TIME$
- DO
- LOOP UNTIL TIME$ <> TT$
- xx = 0
- TT$ = TIME$
- DO
- xx = xx + 1
- LOOP UNTIL TIME$ <> TT$
- speedreduc = xx * 1.5
- xx = 0
- 'Initialisation
- RANDOMIZE TIMER
- ON PLAY(1) GOSUB Musicplay
- PLAY ON
- DIM Music$(17, 3), musicl(17)
- FOR i = 1 TO 17: musicl(i) = 1: NEXT i
- musicl(10) = 3: musicl(12) = 3
- Music$(1, 1) = "MB O4 L4 DFEFE"
- Music$(2, 1) = "MB O3 L8 FEDACDE"
- Music$(3, 1) = "MB O2 L4 FEDCA"
- Music$(4, 1) = "MB O4 L16 GEGFAEADCCED"
- Music$(5, 1) = "MB O4 L8 FFEDEDAFED"
- Music$(6, 1) = "MB O4 L16 CCDFEDC > CCDFEDC"
- Music$(7, 1) = "MB O3 L8 FFEDC > FFEDC"
- Music$(8, 1) = "MB O4 L16 GGFEDCA"
- Music$(9, 1) = "MB O3 L16 GGEEDC > GGEEDC"
- Music$(10, 1) = "MB O4 L2 C L8 DFED L4 GG L8 GAEF L4 DD L8 DFEDC"
- Music$(10, 2) = "MB >C<BAGFED L2 C L8 DFED L4 GG L8 GAEF"
- Music$(10, 3) = "MB L4 DD L8 DFEDCGDE L2 C"
- Music$(11, 1) = "MB O4 L16 CEF L4 G L16 CEF L4 G L16 CDEF L8 GECED P8"
- Music$(12, 1) = "MB O3 L8 CCGGAAG P8 FFEEDDC P8"
- Music$(12, 2) = "MB O3 L8 GGFFEED P8 GGFFEED P8"
- Music$(12, 3) = Music$(12, 1)
- Music$(13, 1) = "MB O2 L2 DDEE D#D#EE"
- Music$(14, 1) = "MB O4 L8 BEDFE > BEDFE"
- Music$(15, 1) = "MB O3 L4 B>CE L2 E L3 D L3 C <"
- Music$(16, 1) = "MB O3 L8 FFF L2 G L3 GG P4 L8 GGFG L2 B- L8 GF L2 G P4"
- Music$(17, 1) = "MB O4 L16 FEGDAFC > FEGDAFC"
- items$ = "NPR"
- DIM dat$(20, 9), datnew$(20, 9), zowladpik(80), zfallbpik(80)
- DIM zmudpik(80), zgrasspik(80), zicemudpik(80), zrpik(80), zlpik(80)
- DIM zbrickpik(80), zscankypik(80), zscanky2pik(80), zladderpik(80)
- DIM zscanky3pik(80), zmouldypik(80), ztelepik(80), zspikepik(80), zxpik(80)
- DIM zmouldy2pik(80), zmouldy3pik(80), zblankpik(80), p$(20, 9), zicepik(80)
- DIM znrgpik(80), zpodpik(80), ztreepik(80), zexitpik(80), zbridgepik(80)
- DIM itemgot(20, 9), teleportx(2), teleporty(2)
- lev = 0: lives = 3: score = 0: livelost = 0
- OPEN "CONFIG.EF3" FOR INPUT AS #1
- INPUT #1, musicon
- INPUT #1, moosikon
- CLOSE
-
- SCREEN 13
- Intro
- pal 0, 0, 10, 63 'background
- pal 1, 63, 63, 0 'yellow
- pal 2, 0, 63, 0 'green
- pal 3, 0, 10, 63 'background colour
- pal 4, 63, 63, 63 'white
- pal 5, 63, 0, 0 'red
- COLOR 1
- LOCATE 5, 1
- PRINT "DBSoft presents"
- COLOR 2
- LOCATE 10, 1
- PRINT TAB(5); "▄▄▄▄ ▄▄▄ ▄▄▄ ▄▄▄ "; : COLOR 5: PRINT "███": COLOR 2
- PRINT TAB(5); "█ █ █ █ "; : COLOR 5: PRINT " █": COLOR 2: PRINT "THE";
- PRINT TAB(5); "█▀▀ █ ▄▄ █ ▄▄ ▀▀▄ FILES "; : COLOR 5: PRINT " ██ ": COLOR 2
- PRINT TAB(5); "█ █ █ █ █ █ "; : COLOR 5: PRINT " █": COLOR 2
- PRINT TAB(5); "▀▀▀▀ ▀▀▀ ▀▀▀ ▀▀▀ "; : COLOR 5: PRINT "███ ": COLOR 2
- PRINT TAB(5); "▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄"
- PRINT TAB(5); "███████▀▀▀▀▀▀▀▀"
- PRINT
- PRINT
- COLOR 1
- PRINT TAB(14); "version 1.2 "; : COLOR 5: PRINT "by Alex Warren"
- COLOR 4
- LOCATE 22, 1
- PRINT "Please wait, loading graphics"
- PRINT "filey-type-things...."
- FOR z = 6 TO 254
- pal z, 0, 10, 63
- NEXT z
- 'Get sprites
- FOR i% = 1 TO 25
- VIEW (1, 1)-(18, 22)
- CLS 1
- IF i% = 1 THEN f$ = "brick"
- IF i% = 2 THEN f$ = "icebrick"
- IF i% = 3 THEN f$ = "ladder"
- IF i% = 4 THEN f$ = "teleport"
- IF i% = 5 THEN f$ = "spike"
- IF i% = 6 THEN f$ = "scanky"
- IF i% = 7 THEN f$ = "scanky2"
- IF i% = 8 THEN f$ = "scanky3"
- IF i% = 9 THEN f$ = "mouldy"
- IF i% = 10 THEN f$ = "mouldy2"
- IF i% = 11 THEN f$ = "mouldy3"
- IF i% = 12 THEN f$ = "energy"
- IF i% = 13 THEN f$ = "pod"
- IF i% = 14 THEN f$ = "tree"
- IF i% = 15 THEN f$ = "x"
- IF i% = 16 THEN f$ = "exit"
- IF i% = 17 THEN f$ = "bridge"
- IF i% = 18 THEN f$ = "mud"
- IF i% = 19 THEN f$ = "grass"
- IF i% = 20 THEN f$ = "icemud"
- IF i% = 21 THEN f$ = "rghtbrck"
- IF i% = 22 THEN f$ = "leftbrck"
- IF i% = 23 THEN f$ = "owladder"
- IF i% = 24 THEN f$ = "fallbrck"
- IF i% = 25 THEN f$ = "blank"
-
- f$ = f$ + ".ef3"
-
- OPEN f$ FOR INPUT AS #1
- INPUT #1, dat$
- FOR y% = 1 TO 20
- FOR x% = 1 TO 16
- p$ = MID$(dat$, ((y% * 16) - 16) + x%, 1)
- p% = ASC(p$) - 1
- IF p% = 252 THEN p% = 25
- IF p% = 253 THEN p% = 33
-
- 7 PSET (x%, y%), p%
- 'IF p% >= 0 AND p% < 6 AND p% <> 3 THEN COLOR 3: PRINT p%: END
- NEXT x%
- NEXT y%
- CLOSE
- IF i% = 1 THEN GET (1, 1)-(16, 20), zbrickpik
- IF i% = 2 THEN GET (1, 1)-(16, 20), zicepik
- IF i% = 3 THEN GET (1, 1)-(16, 20), zladderpik
- IF i% = 4 THEN GET (1, 1)-(16, 20), ztelepik
- IF i% = 5 THEN GET (1, 1)-(16, 20), zspikepik
- IF i% = 6 THEN GET (1, 1)-(16, 20), zscankypik
- IF i% = 7 THEN GET (1, 1)-(16, 20), zscanky2pik
- IF i% = 8 THEN GET (1, 1)-(16, 20), zscanky3pik
- IF i% = 9 THEN GET (1, 1)-(16, 20), zmouldypik
- IF i% = 10 THEN GET (1, 1)-(16, 20), zmouldy2pik
- IF i% = 11 THEN GET (1, 1)-(16, 20), zmouldy3pik
- IF i% = 12 THEN GET (1, 1)-(16, 20), znrgpik
- IF i% = 13 THEN GET (1, 1)-(16, 20), zpodpik
- IF i% = 14 THEN GET (1, 1)-(16, 20), ztreepik
- IF i% = 15 THEN GET (1, 1)-(16, 20), zxpik
- IF i% = 16 THEN GET (1, 1)-(16, 20), zexitpik
- IF i% = 17 THEN GET (1, 1)-(16, 20), zbridgepik
- IF i% = 18 THEN GET (1, 1)-(16, 20), zmudpik
- IF i% = 19 THEN GET (1, 1)-(16, 20), zgrasspik
- IF i% = 20 THEN GET (1, 1)-(16, 20), zicemudpik
- IF i% = 21 THEN GET (1, 1)-(16, 20), zrpik
- IF i% = 22 THEN GET (1, 1)-(16, 20), zlpik
- IF i% = 23 THEN GET (1, 1)-(16, 20), zowladpik
- IF i% = 24 THEN GET (1, 1)-(16, 20), zfallbpik
- IF i% = 25 THEN GET (1, 1)-(16, 20), zblankpik
- NEXT i%
- VIEW
-
- menu:
- SCREEN 0: SCREEN 13
- COLOR 10
- PRINT "THE EGGS FILES ";
- COLOR 12
- PRINT "3 ";
- COLOR 14
- PRINT "Menu"
- COLOR 10
- PRINT "~~~ ~~~~ ~~~~~ ~ ~~~~"
- PRINT : PRINT : PRINT
- COLOR 11
- PRINT "■ Press I for instructions"
- PRINT
- COLOR 15
- PRINT "■ Press O for options"
- PRINT
- COLOR 12
- PRINT "■ Press Q to quit"
- COLOR 14
- PRINT
- PRINT "Press any other key to play!..."
- PRINT : PRINT : PRINT
- COLOR 15
- PRINT "DISCLAIMER!"
- PRINT
- PRINT "DBSoft does not accept responsibility"
- PRINT "for any trouble this game may get you"
- PRINT "into. This game is FREEWARE and may be"
- PRINT "freely copied provided it's not altered."
- PRINT "The level files are encrypted so it's"
- PRINT "(almost) impossible to cheat."
- AAAA$ = UCASE$(INPUT$(1))
- CLS
- lg = 0
- IF AAAA$ = "I" THEN GOSUB inst: GOTO menu
- IF AAAA$ = "Q" THEN GOTO 300
- IF AAAA$ = "O" THEN GOSUB options: GOTO menu
- noscreens = 17
- timenow& = INT(TIMER)
- DO
- items = 0
- FOR xxx = 1 TO 20
- FOR yyy = 1 TO 9
- itemgot(xxx, yyy) = 0
- NEXT yyy
- NEXT xxx
- numteleports = 0
- IF livelost = 0 THEN lev = lev + 1
- livelost = 0
- filename$ = "LEVEL" + STR$(lev) + ".EF3"
- filen2$ = ""
- FOR k = 1 TO LEN(filename$)
- z$ = MID$(filename$, k, 1)
- IF z$ <> " " THEN filen2$ = filen2$ + z$
- NEXT k
- fg = 1
- 'Open level file and draw current level
- OPEN filen2$ FOR INPUT AS #1
- FOR y% = 1 TO 9
- LINE INPUT #1, da$
- FOR x% = 1 TO 20
- dat$(x%, y%) = MID$(da$, x%, 1)
- NEXT x%
- NEXT y%
- CLOSE
- FOR y% = 1 TO 9
- FOR x% = 1 TO 20
- A% = ASC(dat$(x%, y%))
- A% = A% - y%
- dat$(x%, y%) = CHR$(A%)
- NEXT x%
- NEXT y%
-
- RESTORE
- FOR yy% = 1 TO 9
- FOR xx% = 1 TO 20
- READ xxx%, yyy%
- datnew$(xx%, yy%) = dat$(xxx%, yyy%)
- NEXT xx%
- NEXT yy%
- FOR yy% = 1 TO 9
- da$ = ""
- FOR xx% = 1 TO 20
- da$ = da$ + datnew$(xx%, yy%)
- NEXT xx%
- NEXT yy%
-
-
- FOR y% = 1 TO 9
- FOR x% = 1 TO 20
- cl$ = datnew$(x%, y%)
- xx% = (x% * 16) - 16
- yy% = (y% * 20) - 20
- IF cl$ = "#" OR cl$ = "b" THEN
- PUT (xx%, yy%), zbrickpik
- ELSEIF cl$ = "~" OR cl$ = "m" THEN
- PUT (xx%, yy%), zmudpik
- ELSEIF cl$ = "*" OR cl$ = "g" THEN
- PUT (xx%, yy%), zgrasspik
- ELSEIF cl$ = ">" THEN
- PUT (xx%, yy%), zrpik
- ELSEIF cl$ = "<" THEN
- PUT (xx%, yy%), zlpik
- ELSEIF cl$ = "S" THEN
- PUT (xx%, yy%), zscankypik
- personx = x%
- persony = y%
- perstype$ = "S"
- cl$ = "O"
- ELSEIF cl$ = "M" THEN
- PUT (xx%, yy%), zmouldypik
- personx = x%
- persony = y%
- perstype$ = "M"
- cl$ = "O"
- ELSEIF cl$ = "T" THEN
- PUT (xx%, yy%), ztelepik
- numteleports = numteleports + 1
- teleportx(numteleports) = x%
- teleporty(numteleports) = y%
- ELSEIF cl$ = "^" THEN
- PUT (xx%, yy%), zspikepik
- ELSEIF cl$ = "X" THEN
- PUT (xx%, yy%), zxpik
- ELSEIF cl$ = "L" OR cl$ = "l" THEN
- PUT (xx%, yy%), zladderpik
- ELSEIF cl$ = "I" THEN
- PUT (xx%, yy%), zicepik
- ELSEIF cl$ = "i" THEN
- PUT (xx%, yy%), zicemudpik
- cl$ = "I"
- ELSEIF cl$ = "N" THEN
- PUT (xx%, yy%), znrgpik
- items = items + 1
- ELSEIF cl$ = "P" THEN
- PUT (xx%, yy%), zpodpik
- items = items + 1
- ELSEIF cl$ = "R" THEN
- PUT (xx%, yy%), ztreepik
- items = items + 1
- ELSEIF cl$ = "E" THEN
- PUT (xx%, yy%), zexitpik
- ex% = x%: ey% = y%
- ELSEIF cl$ = "=" THEN
- PUT (xx%, yy%), zbridgepik
- ELSEIF cl$ = "!" THEN
- PUT (xx%, yy%), zfallbpik
- ELSEIF cl$ = "U" THEN
- PUT (xx%, yy%), zowladpik
- END IF
- IF cl$ = "O" THEN
- p$(x%, y%) = " "
- ELSEIF cl$ = "m" OR cl$ = "g" THEN
- p$(x%, y%) = "b"
- ELSEIF cl$ = "~" OR cl$ = "*" THEN
- p$(x%, y%) = "#"
- ELSE
- p$(x%, y%) = cl$
- END IF
-
-
- NEXT x%
- NEXT y%
- CLOSE
-
- 'Yet more initialisation
- musicn = 1
- m = 0: d = 0: w = 0: d$ = "": pt = 1 'm = moved flag; d = dead; w = won
- igot = 0 'd$ = direction; pt = person type;
- DO 'igot = no. items got
- 'Draw level, lives, score and number of items
- IF moosikon = 1 THEN PLAY ON ELSE PLAY STOP
- IF fg = 1 AND moosikon = 1 THEN fg = 0: GOSUB Musicplay
- COLOR 14
- LOCATE 24, 4: PRINT " Level";
- PRINT lev;
- IF lev < 10 THEN PRINT " ";
- COLOR 10
- LOCATE 24, 1
- FOR i = 1 TO 3
- IF i <= lives THEN PRINT "■"; ELSE PRINT " ";
- NEXT i
- COLOR 11
- LOCATE 24, 13
- PRINT score;
- COLOR 12
- LOCATE 24, 23: PRINT "Items:"; igot; "/"; items;
-
- 'Get a key
- A$ = UCASE$(INKEY$)
-
- 'Check key
- IF A$ = "Q" THEN quit = 1
- IF A$ = "R" THEN restart = 1: lives = lives - 1
- IF A$ = "S" THEN
- moosikon = 0
- musicon = 3 - musicon
- IF musicon = 1 THEN PLAY "MF" ELSE PLAY "MB"
- END IF
- IF A$ = "M" THEN
- musicon = 2: PLAY "MB"
- IF moosikon = 1 THEN moosikon = 0 ELSE moosikon = 1
- END IF
- IF A$ = "W" AND cheat% = 1 THEN
- LOCATE 24, 1
- COLOR 15
- PRINT "<<<<<<<<<<<<<<< ! WARP ! >>>>>>>>>>>>>>>";
- w = 1
- END IF
- IF A$ = "1" AND cheat% = 1 THEN
- score = score + 1000
- END IF
- IF A$ = "2" AND cheat% = 1 THEN
- igot = igot + 1
- END IF
- IF A$ = "3" AND cheat% = 1 THEN
- lives = lives + 1
- END IF
- IF A$ = "4" AND cheat% = 1 THEN
- score = score - 1000
- END IF
- IF A$ = "5" AND cheat% = 1 THEN
- igot = igot - 1
- END IF
- IF A$ = "6" AND cheat% = 1 THEN
- lives = lives - 1
- END IF
- IF (restart = 1 OR quit = 1) AND musicon = 1 THEN
- FOR SFX = 1240 TO 500 STEP -40
- SOUND SFX, 1
- NEXT SFX
- END IF
- IF quit = 1 OR restart = 1 THEN GOTO 600
- od$ = d$
- d$ = ""
-
- 'Arrow keys
- SELECT CASE A$
- CASE CHR$(0) + "H"
- d$ = "u"
- CASE CHR$(0) + "K"
- d$ = "l"
- CASE CHR$(0) + "M"
- d$ = "r"
- CASE CHR$(0) + "P"
- d$ = "d"
- END SELECT
-
- 'Movement initialisation
- opersonx = personx: opersony = persony: opt = pt
- down = 0: oigot = igot
- down$ = p$(personx, persony + 1)
- up$ = p$(personx, persony - 1)
- lft$ = p$(personx - 1, persony)
- rght$ = p$(personx + 1, persony)
-
- 'Check movement - spikes? items? bonuses? (boni?!) teleports?
- IF down$ <> "#" AND down$ <> "I" AND down$ <> "=" AND down$ <> "<" AND down$ <> ">" AND pt <> 3 THEN persony = persony + 1: m = 1: down = 1: GOTO 100
- IF down$ = "I" AND od$ = "r" THEN d$ = "r"
- IF down$ = "I" AND od$ = "l" THEN d$ = "l"
- IF d$ = "u" AND up$ = "L" THEN persony = persony - 1: m = 1: pt = 3: GOTO 100
- IF d$ = "u" AND up$ = "U" THEN persony = persony - 2: m = 1: pt = 3: GOTO 100
- IF d$ = "l" AND (lft$ = " " OR lft$ = "b") THEN personx = personx - 1: m = 1: pt = 2: GOTO 100
- IF d$ = "l" AND lft$ = "T" THEN personx = personx - 1: GOTO teleport
- IF d$ = "l" AND lft$ = "^" THEN lives = lives - 1: d = 1: m = 1: GOTO 100
- IF d$ = "l" AND INSTR(items$, lft$) AND itemgot(personx - 1, persony) = 0 THEN itemgot(personx - 1, persony) = 1: personx = personx - 1: igot = igot + 1: m = 1: pt = 2: GOTO 100
- IF d$ = "l" AND INSTR(items$, lft$) AND itemgot(personx - 1, persony) = 1 THEN personx = personx - 1: m = 1: pt = 2: GOTO 100
- IF d$ = "l" AND lft$ = "L" THEN personx = personx - 1: m = 1: pt = 3: GOTO 100
- IF d$ = "l" AND lft$ = "l" THEN personx = personx - 1: m = 1: pt = 2: GOTO 100
- IF d$ = "l" AND lft$ = "X" AND itemgot(personx - 1, persony) = 0 THEN score = score + 100: itemgot(personx - 1, persony) = 1: bonusgot = 1: personx = personx - 1: m = 1: pt = 2: GOTO 100
- IF d$ = "l" AND lft$ = "X" AND itemgot(personx - 1, persony) = 1 THEN personx = personx - 1: m = 1: pt = 2: GOTO 100
- IF d$ = "l" AND lft$ = "E" AND igot = items THEN personx = personx - 1: m = 1: pt = 2: GOTO 100
- IF d$ = "l" AND lft$ = "<" THEN personx = personx - 2: m = 1: pt = 2: down = 1: GOTO 100
- IF d$ = "r" AND (rght$ = " " OR rght$ = "b") THEN personx = personx + 1: m = 1: pt = 1: GOTO 100
- IF d$ = "r" AND rght$ = "T" THEN personx = personx + 1: GOTO teleport
- IF d$ = "r" AND rght$ = "^" THEN lives = lives - 1: d = 1: m = 1: GOTO 100
- IF d$ = "r" AND INSTR(items$, rght$) AND itemgot(personx + 1, persony) = 0 THEN itemgot(personx + 1, persony) = 1: personx = personx + 1: igot = igot + 1: m = 1: pt = 1: GOTO 100
- IF d$ = "r" AND INSTR(items$, rght$) AND itemgot(personx + 1, persony) = 1 THEN personx = personx + 1: m = 1: pt = 1: GOTO 100
- IF d$ = "r" AND rght$ = "L" THEN personx = personx + 1: m = 1: pt = 3: GOTO 100
- IF d$ = "r" AND rght$ = "X" AND itemgot(personx + 1, persony) = 0 THEN score = score + 100: itemgot(personx + 1, persony) = 1: bonusgot = 1: personx = personx + 1: m = 1: pt = 1: GOTO 100
- IF d$ = "r" AND rght$ = "X" AND itemgot(personx + 1, persony) = 1 THEN personx = personx + 1: m = 1: pt = 1: GOTO 100
- IF d$ = "r" AND rght$ = "E" AND igot = items THEN personx = personx + 1: pt = 1: GOTO 100
- IF d$ = "r" AND rght$ = ">" THEN personx = personx + 2: m = 1: pt = 1: down = 1: GOTO 100
- IF d$ = "d" AND down$ = "L" THEN persony = persony + 1: m = 1: pt = 3: down = 1: GOTO 100
- IF d$ = "d" AND down$ <> "#" AND down$ <> "U" AND pt = 3 THEN persony = persony + 1: m = 1: down = 1: pt = 1: GOTO 100
- 100 IF p$(personx, persony) = "b" OR p$(personx, persony) = "l" THEN p$(personx, persony) = " ": disap = 1
- IF disap = 1 AND musicon = 1 THEN
- FOR ZZQ = 1200 TO 600 STEP -200
- SOUND ZZQ, 1
- NEXT ZZQ
- END IF
- disap = 0
- IF oigot <> igot AND musicon = 1 THEN
- FOR SFX = 500 TO 1240 STEP 100
- SOUND SFX, 1
- NEXT SFX
- END IF
- IF oigot <> igot THEN score = score + 250
- IF musicon = 1 AND m = 1 THEN
- IF d$ = "u" THEN SOUND 1000, 1: SOUND 1250, 1
- IF d$ = "l" OR d$ = "r" THEN SOUND 500, 1
- IF d$ = "d" THEN SOUND 1000, 1: SOUND 750, 1
- END IF
- IF musicon = 1 AND bonusgot = 1 THEN
- FOR SFX = 1 TO 10
- SOUND INT(RND * 2000) + 4000, 1
- NEXT SFX
- END IF
- bonusgot = 0
- IF down = 0 THEN GOTO 150
- here$ = p$(personx, persony)
- IF INSTR(items$, here$) AND itemgot(personx, persony) = 0 THEN igot = igot + 1: score = score + 250: itemgot(personx, persony) = 1
- IF here$ = "X" AND itemgot(personx, persony) = 0 THEN score = score + 100: itemgot(personx, persony) = 1: bonusgot = 1
- IF here$ = "T" THEN GOTO teleport
- IF here$ = "^" THEN d = 1: lives = lives - 1
- IF here$ = "L" THEN pt = 3
-
- IF oigot <> igot AND musicon = 1 THEN
- FOR SFX = 500 TO 1240 STEP 100
- SOUND SFX, 1
- NEXT SFX
- END IF
- IF musicon = 1 AND bonusgot = 1 THEN
- FOR SFX = 1 TO 10
- SOUND INT(RND * 2000) + 4000, 1
- NEXT SFX
- END IF
- bonusgot = 0
- 150 'Check for completion of level
- IF igot = items AND personx = ex% AND persony = ey% THEN w = 1
-
- 'Disappearing bridge?
- IF p$(opersonx, opersony + 1) = "=" AND m = 1 THEN
- p$(opersonx, opersony + 1) = " "
- PUT ((opersonx * 16) - 16, ((opersony + 1) * 20) - 20), zblankpik, PSET
- END IF
-
- 'Falling brick?
- fallbrick = 0
- IF p$(opersonx, opersony - 1) = "!" AND m = 1 THEN
- p$(opersonx, opersony) = "#"
- fallbrick = 1
- IF musicon = 1 THEN
- FOR SFX = 1 TO 10
- SOUND INT(RND * 100) + 100, 1
- NEXT SFX
- END IF
- END IF
-
- 'Redraw Mouldy/Scanky
- IF m = 1 THEN
- omx = (opersonx * 16) - 16
- mx = (personx * 16) - 16
- omy = (opersony * 20) - 20
- my = (persony * 20) - 20
- m = 0
- PUT (omx, omy), zblankpik, PSET
- IF opt = 3 AND p$(opersonx, opersony) = "L" THEN PUT (omx, omy), zladderpik, PSET
- IF pt = 1 AND perstype$ = "S" THEN PUT (mx, my), zscankypik, PSET
- IF pt = 2 AND perstype$ = "S" THEN PUT (mx, my), zscanky2pik, PSET
- IF pt = 3 AND perstype$ = "S" THEN PUT (mx, my), zscanky3pik, PSET
- IF pt = 1 AND perstype$ = "M" THEN PUT (mx, my), zmouldypik, PSET
- IF pt = 2 AND perstype$ = "M" THEN PUT (mx, my), zmouldy2pik, PSET
- IF pt = 3 AND perstype$ = "M" THEN PUT (mx, my), zmouldy3pik, PSET
- IF fallbrick = 1 THEN
- PUT ((opersonx * 16) - 16, ((opersony) * 20) - 20), zfallbpik, PSET
- END IF
- IF numteleports <> 0 THEN
- FOR zxc = 1 TO 2
- tx = (teleportx(zxc) * 16) - 16
- ty = (teleporty(zxc) * 20) - 20
- PUT (tx, ty), ztelepik, PSET
- NEXT zxc
- END IF
- END IF
-
- 'Time delay
- FOR JJ = 1 TO speedreduc: NEXT JJ
-
- 'End of current level?
- 600 LOOP UNTIL d = 1 OR w = 1 OR quit = 1 OR restart = 1
- PLAY STOP
- IF d = 1 AND musicon = 1 THEN
- FOR SFX = 1240 TO 500 STEP -40
- SOUND SFX, 1
- NEXT SFX
- END IF
-
- IF restart = 1 THEN restart = 0: d = 1
- IF d = 1 THEN livelost = 1: GOTO 999
- IF lev <> noscreens OR (lev = noscreens AND d = 1) THEN d = 0: w = 0
- 999 CLS
- 'The end of the game?
- LOOP UNTIL (lev = noscreens AND w = 1) OR (lives = 0 AND d = 1) OR quit = 1
- timetook = INT(TIMER - timenow&)
-
- CLS
- IF lives = 0 OR quit = 1 THEN GOTO 200
- COLOR 14
- PRINT "YOU WIN!!"
- PRINT
- COLOR 12
- PRINT "Your score is :"; score
- PRINT "Win bonus : 10000"
- PRINT "Lives bonus :";
- PRINT lives; "x 5000:";
- PRINT lives * 5000
- score = score + 10000 + (lives * 5000)
- PRINT "Time taken :"; timetook; "seconds"
- IF timetook < 241 THEN TT$ = "MEGA SPEED!": tb = 20000: GOTO 888
- IF timetook < 301 THEN TT$ = "FAST!": tb = 15000: GOTO 888
- IF timetook < 421 THEN TT$ = "GOOD TIME": tb = 10000: GOTO 888
- TT$ = "TOO SLOW": tb = 0
- 888
- PRINT "Speed rating : "; TT$
- PRINT "Time bonus :"; tb
- score = score + tb
- PRINT
- PRINT "FINAL SCORE :"; score
- PRINT
- COLOR 15
- wonit = 1
-
- GOTO 400
- 200 IF quit = 1 THEN GOTO 300
- COLOR 12
- PRINT "YOU LOSE."
- PRINT
- PRINT "You died, you silly fool! Now your"
- PRINT "boss' brain will be in alien hands"
- PRINT "forever and worse still you are dead"
- PRINT "and up in heaven where you can have"
- PRINT "boring conversations with boring dead"
- PRINT "people."
- PRINT : PRINT
- COLOR 14
- PRINT "Your final score is"; score
- wonit = 0
- GOTO 400
- 300 COLOR 13
- PRINT "YOU QUIT."
- PRINT
- PRINT "What was the point in that?!? Did"
- PRINT "some nasty git come up and press Q"
- PRINT "or have you got to go somewhere like"
- PRINT "Stoke-on-Trent or did you just get a"
- PRINT "bit bored?"
- PRINT
- COLOR 10
- PRINT "Your final score is"; score
- wonit = 0
- 400 COLOR 15
- PRINT : PRINT "Press a key..."
- A$ = INPUT$(1)
- SCREEN 0: CLS : WIDTH 80, 25
- PRINT "Credits:"
- PRINT "~~~~~~~~"
- PRINT
- PRINT "Idea: Alex Warren"
- PRINT "Design: Alex Warren"
- PRINT "Programming: Alex Warren"
- PRINT "Graphics: Alex Warren"
- PRINT "Sound Effects: Alex Warren"
- PRINT "Play testing: Alex Warren"
- PRINT "Producer: Alex Warren"
- PRINT
- PRINT "Electricity kindly supplied by a socket."
- PRINT "Lighting kindly supplied by a light bulb and the sun."
- PRINT "Heating kindly supplied by a radiator and the sun."
- PRINT
- PRINT "Special thanks must go to.....um.....er.....um.....hmm...."
- PRINT
- PRINT "(c) DBSoft 1996"
- A$ = INPUT$(1)
- CLS
- PRINT "Also available right NOW this minute from DBSoft:"
- PRINT
- PRINT "Platform games:"
- PRINT "The Eggs Files - the original game."
- PRINT "The Eggs Files 2 - the sequel!"
- PRINT
- PRINT "Billy Johnson in Weirdland - a rather naff platformer."
- PRINT "Katy Johnson in Strangeland - ditto."
- PRINT
- PRINT "These games are available for FREE if you ask Alex (nicely)."
- PRINT
- SYSTEM
-
- teleport:
- IF teleportx(1) <> personx OR teleporty(1) <> persony THEN telenum = 1 ELSE telenum = 2
- personx = teleportx(telenum)
- persony = teleporty(telenum)
- m = 1
- IF musicon = 1 THEN
- FOR SFX = 10000 TO 1000 STEP -1000
- SOUND SFX, 1
- NEXT SFX
- FOR SFX = 1000 TO 10000 STEP 1000
- SOUND SFX, 1
- NEXT SFX
- END IF
- down = 0
- GOTO 100
-
- options:
- COLOR 10
- PRINT "THE EGGS FILES 3 - ";
- COLOR 12
- PRINT "Options"
- PRINT
- COLOR 15
- OPEN "CONFIG.EF3" FOR INPUT AS #1
- INPUT #1, musicon
- INPUT #1, moosikon
- CLOSE
- PRINT "Sound is ";
- IF musicon = 1 THEN PRINT "on" ELSE PRINT "off"
- PRINT "Music is ";
- IF moosikon = 1 THEN PRINT "on" ELSE PRINT "off"
- PRINT
- PRINT "Press ";
- COLOR 11
- PRINT "S ";
- COLOR 15
- PRINT "to toggle sound on/off"
- PRINT "Press ";
- COLOR 11
- PRINT "M ";
- COLOR 15
- PRINT "to toggle music on/off"
- PRINT "Press ";
- COLOR 11
- PRINT "Q ";
- COLOR 15
- PRINT "to exit Options"
- ZZ$ = UCASE$(INPUT$(1))
- IF ZZ$ = "S" THEN
- moosikon = 0
- musicon = 3 - musicon
- IF musicon = 1 THEN PLAY "MF" ELSE PLAY "MB"
- ELSEIF ZZ$ = "M" THEN
- musicon = 2: PLAY "MB"
- IF moosikon = 1 THEN moosikon = 0 ELSE moosikon = 1
- ELSEIF ZZ$ = "Q" THEN
- A = 1
- END IF
- OPEN "CONFIG.EF3" FOR OUTPUT AS #1
- PRINT #1, musicon
- PRINT #1, moosikon
- CLOSE
- CLS
- IF A = 1 THEN GOTO 718452
- GOTO options
- 718452 RETURN
-
- inst:
- CLS
- COLOR 10
- PRINT "THE EGGS FILES 3 - ";
- COLOR 12
- PRINT "Instructions"
- COLOR 15
- PRINT
- PRINT "You take the role of Mouldy and Scanky"
- PRINT "yet again. Tiny aliens have taken"
- PRINT "control of your boss' brain. You must"
- PRINT "annihilate all alien pods where the"
- PRINT "aliens live and all alien trees where"
- PRINT "they grow from. Collect energy for"
- PRINT "your laser cannons to do this. Use the"
- PRINT "arrow keys to control Mouldy and"
- PRINT "Scanky. You can climb ladders. Watch"
- PRINT "out for:"
- PRINT " ■ Deadly sharp spikes"
- PRINT " ■ Disappearing bricks/earth that"
- PRINT " disappear when you step on them."
- PRINT " ■ Collapsing bridges - you can cross"
- PRINT " them once, then they collapse!"
- PRINT " ■ Icey bricks which make you slip."
- PRINT " ■ One way bricks and ladders - you"
- PRINT " can only go through them one way!"
- PRINT " ■ Falling bricks that fall behind you."
- PRINT
- PRINT "Press a key..."
- A$ = INPUT$(1)
- CLS
- COLOR 10
- PRINT "THE EGGS FILES 3 - ";
- COLOR 12
- PRINT "Instructions"
- COLOR 15
- PRINT
- PRINT "You must collect these items to kill"
- PRINT "the aliens on each level and then go"
- PRINT "to the exit:"
- PRINT " ■ Energy for your laser cannons"
- PRINT " ■ Alien pods where the aliens live"
- PRINT " ■ Alien 'trees' where they grow from"
- PRINT " before being born"
- PRINT "You can also collect bonus 'X's for"
- PRINT "bonus points. You can use teleports"
- PRINT "to teleport from place to place on"
- PRINT "a level."
- PRINT
- PRINT "In the game:"
- PRINT "Press R to restart the current level."
- PRINT "Press Q to quit. Press S to toggle"
- PRINT "sound on or off, and M to toggle music"
- PRINT "on or off."
- A$ = INPUT$(1)
- RETURN
-
- Musicplay:
- IF musicl(lev) = 1 THEN
- PLAY Music$(lev, 1)
- ELSE
- PLAY Music$(lev, musicn)
- musicn = musicn + 1
- IF musicn > musicl(lev) THEN musicn = 1
- END IF
- RETURN
-
- errorhandler:
- CLS
- pal 15, 63, 63, 63
- pal 12, 63, 0, 0
- COLOR 12
- PRINT "! ";
- COLOR 15: PRINT "Error ";
- COLOR 12: PRINT "!";
- COLOR 15: PRINT " ( number"; ERR; ")"
- PRINT
- PRINT "An error has occurred in your version"
- PRINT "of THE EGGS FILES 3 v1.2. This may be"
- PRINT "due to your disk being taken out of"
- PRINT "the drive and if so insert the disk."
- PRINT "The cause of the problem could be more"
- PRINT "serious, however, and if it keeps"
- PRINT "returning with no apparent logical"
- PRINT "explanation please report this to Alex"
- PRINT "who will try to fix the problem in the"
- PRINT "next version. Press Q to exit the"
- PRINT "program or any other key to retry..."
- A$ = UCASE$(INPUT$(1))
- IF A$ = "Q" THEN END
- RESUME NEXT
-
- ' Level unjumbler DATA lines
-
- DATA 12, 4, 15, 7, 14, 8, 10, 9, 14, 1, 8, 7, 3, 7, 7, 2, 9, 7, 19, 7, 13, 4, 11, 1, 13, 9
- DATA 13, 8, 20, 4, 17, 7, 8, 6, 7, 4, 11, 6, 2, 2, 5, 8, 19, 4, 10, 6, 6, 2, 18, 2, 6, 1
- DATA 12, 6, 11, 7, 18, 8, 20, 6, 16, 6, 14, 9, 1, 5, 10, 7, 9, 8, 13, 5, 19, 9, 8, 4, 3, 9
- DATA 1, 1, 5, 3, 11, 8, 15, 3, 6, 3, 13, 2, 18, 4, 1, 4, 8, 8, 1, 7, 17, 3, 4, 7, 3, 2
- DATA 3, 1, 16, 1, 15, 5, 6, 7, 10, 3, 4, 5, 17, 6, 10, 4, 16, 2, 5, 6, 16, 8, 8, 3, 14, 7
- DATA 9, 5, 7, 8, 12, 1, 2, 5, 15, 4, 13, 6, 16, 7, 8, 1, 13, 1, 9, 6, 20, 8, 12, 9, 7, 5
- DATA 2, 7, 7, 1, 14, 3, 14, 5, 5, 4, 19, 5, 11, 4, 2, 4, 6, 9, 16, 3, 10, 2, 18, 9, 11, 3
- DATA 8, 5, 17, 8, 17, 2, 3, 6, 13, 7, 2, 6, 9, 4, 9, 3, 2, 3, 16, 5, 2, 1, 1, 2, 20, 2
- DATA 9, 9, 12, 7, 19, 1, 18, 5, 5, 9, 10, 5, 6, 4, 18, 7, 1, 3, 7, 6, 4, 4, 13, 3, 5, 2
- DATA 5, 5, 3, 3, 10, 1, 15, 2, 1, 9, 4, 2, 19, 2, 11, 2, 18, 6, 20, 3, 17, 4, 3, 5, 2, 8
- DATA 17, 9, 6, 5, 1, 8, 14, 6, 16, 9, 16, 4, 12, 2, 15, 6, 1, 6, 20, 1, 10, 8, 19, 6, 18, 3
- DATA 9, 2, 12, 5, 5, 1, 8, 2, 15, 9, 2, 9, 11, 9, 4, 1, 6, 6, 3, 4, 17, 5, 8, 9, 7, 9
- DATA 12, 3, 3, 8, 14, 4, 6, 8, 20, 7, 14, 2, 4, 3, 19, 8, 4, 6, 7, 3, 20, 9, 11, 5, 17, 1
- DATA 12, 8, 18, 1, 15, 1, 4, 9, 4, 8, 20, 5, 15, 8, 7, 7, 19, 3, 9, 1, 5, 7
-
- SUB Intro
- PLAY "MB"
- COLOR 15
- f = 1
- sr = speedreduc / f
- f2 = 5
- FOR i = 1 TO 12
- LOCATE i, 17
- PRINT "D"
- FOR j = 1 TO sr: NEXT j
- IF i <> 12 THEN LOCATE i, 17: PRINT " "
- NEXT i
- FOR i = 40 TO 18 STEP -1
- LOCATE 12, i
- PRINT "B"
- FOR j = 1 TO sr: NEXT j
- IF i <> 18 THEN LOCATE 12, i: PRINT " "
- NEXT i
- FOR i = 23 TO 12 STEP -1
- LOCATE i, 19
- PRINT "Soft"
- FOR j = 1 TO sr: NEXT j
- IF i <> 12 THEN LOCATE i, 19: PRINT " "
- NEXT i
- FOR j = 1 TO speedreduc: NEXT j
- COLOR 14
- LOCATE 12, 17: PRINT "D"
- PLAY "L8O3 G"
- FOR k = 1 TO f2
- FOR j = 1 TO speedreduc
- NEXT j
- NEXT k
- COLOR 15
- LOCATE 12, 17: PRINT "D"
- COLOR 14
- LOCATE 12, 18: PRINT "B"
- PLAY "L8O3 G"
- FOR k = 1 TO f2
- FOR j = 1 TO speedreduc
- NEXT j
- NEXT k
- COLOR 15
- LOCATE 12, 18: PRINT "B"
- COLOR 14
- LOCATE 12, 19: PRINT "Soft"
- PLAY "L8O3 C"
- FOR q = 1 TO 2
- FOR k = 1 TO f2
- FOR j = 1 TO speedreduc
- NEXT j
- NEXT k
- NEXT q
- COLOR 15
- LOCATE 12, 19: PRINT "Soft"
- PLAY "MF"
- FOR q = 1 TO 10
- FOR j = 1 TO f2
- FOR k = 1 TO sr
- NEXT k
- NEXT j
- NEXT q
- END SUB
-
- DEFSNG A-Y
- SUB pal (n, r, g, b)
- OUT &H3C8, n
- OUT &H3C9, r
- OUT &H3C9, g
- OUT &H3C9, b
- END SUB
-
-