home *** CD-ROM | disk | FTP | other *** search
- 10000 '--------------------------------------------------------------------
- 10010 '
- 10020 ' DUNGEON MASTER MAP WRITER (DMW.BAS)
- 10030 '
- 10040 ' written by タケ (NAA01070)
- 10050 '--------------------------------------------------------------------
- 10051 ' 改造 by Dante(PEE01022)
- 10052 '--------------------------------------------------------------------
- 10060 ON ERROR GOTO *ERROR
- 10070 SCREEN@ 0
- 10080 COLOR 0, 0, 0
- 10090 CLS
- 10100 '
- 10110 CBK=5 'COLOR OF BACKGROUND
- 10120 CG=0 'COLOR OF GRID
- 10130 CP=15 'COLOR OF PASSAGE
- 10140 CB=10 'COLOR OF BORDER LINE
- 10150 CE=0 'COLOR OF ELEMENT
- 10160 CN=0 'COLOR OF NUMBER
- 10170 CS=0 'COLOR OF SYMBOL
- 10180 CR=15 'COLOR FOR REVERSE
- 10190 CC=0 'COLOR OF COMPASS
- 10200 '
- 10210 GL=12: NG=32 'GRID
- 10220 GOX=54: GOY=13
- 10230 DIM GRID(NG, NG)
- 10240 PL=16: NPX=4: NPY=3 'PASSAGE
- 10250 POX=445: POY=6
- 10260 DL=16: NDX=2: NDY=1 'DRAW MODE
- 10270 DOX=445: DOY=61
- 10280 EL=16: NEX=4: NEY=8 'ELEMENT
- 10290 EOX=445: EOY=81
- 10300 MAXE=2000
- 10310 DIM EEX(MAXE), EEY(MAXE), EE(MAXE)
- 10320 FL=16: NFX=4: NFY=4 'FILE
- 10330 FOX=445: FOY=228
- 10340 TXL=64: TYL=16: NT=6 'TASK
- 10350 TOX=445: TOY=301
- 10360 SOX=1: SOY=42 'TITLE
- 10370 NOX=1: NOY=123 'FLOOR NUMBER
- 10380 COX=19: COY=260 'COMPASS
- 10390 '-------------------- MAIN ROUTINE --------------------
- 10400 GOSUB *INIT.SCREEN
- 10410 '
- 10420 SFLG=0
- 10430 P=0: PX=0: PY=0
- 10440 GOSUB *REVERSE.PASSAGE
- 10450 DFLG=0
- 10460 DX=0: DY=0
- 10470 GOSUB *REVERSE.MODE
- 10480 EEN=0
- 10490 F=0: FX=0: FY=0: FILE$="DMMAP0"
- 10500 GOSUB *REVERSE.FILE
- 10510 GOSUB *FLOOR.NUMBER
- 10520 '
- 10530 MOUSE 0
- 10540 MOUSE 1, GOX, GOY, 1
- 10550 WHILE NOT(MOUSE(2, 0) AND MOUSE(2, 1))
- 10560 IF MOUSE(2, 0) THEN GOSUB *LEFT.BUTTON
- 10570 FOR WW=0 TO 200: W=W+1: NEXT
- 10580 WEND
- 10590 MOUSE 5
- 10600 '
- 10610 END
- 10620 '-------------------- LEFT BUTTON --------------------
- 10630 *LEFT.BUTTON
- 10640 MX=MOUSE(4, 0): MY=MOUSE(5, 0)
- 10650 IF MX>GOX AND MX<GL*NG+GOX AND MY>GOY AND MY<GL*NG+GOY THEN GOSUB *SELECT.GRID
- 10660 IF MX>POX AND MX<PL*NPX+POX AND MY>POY AND MY<PL*NPY+POY THEN GOSUB *SELECT.PASSAGE
- 10670 IF MX>DOX AND MX<DL*NDX+DOX AND MY>DOY AND MY<DL*NDY+DOY THEN GOSUB *SELECT.MODE
- 10680 IF MX>EOX AND MX<EL*NEX+EOX AND MY>EOY AND MY<EL*NEY+EOY THEN GOSUB *SELECT.ELEMENT
- 10690 IF MX>FOX AND MX<FL*NFX+FOX AND MY>FOY AND MY<FL*NFY+FOY THEN GOSUB *SELECT.FILE
- 10700 IF MX>TOX AND MX<TXL+TOX AND MY>TOY AND MY<TYL*NT+TOY THEN GOSUB *SELECT.TASK
- 10710 RETURN
- 10720 '--------------------- SELECT GRID --------------------
- 10730 *SELECT.GRID
- 10740 IF ((MX-GOX) MOD GL)=0 OR ((MY-GOY) MOD GL)=0 THEN RETURN
- 10750 GX=(MX-GOX)\GL: GY=(MY-GOY)\GL
- 10760 SX=GL*GX+GOX: SY=GL*GY+GOY
- 10770 IF SFLG=0 THEN GOSUB *DRAW.PASSAGE ELSE IF DFLG=0 THEN GOSUB *DRAW.ELEMENT ELSE GOSUB *ERASE.ELEMENT
- 10780 RETURN
- 10790 '-------------------- DRAW PASSAGE --------------------
- 10800 *DRAW.PASSAGE
- 10810 PP=0: GOSUB *PUT.PASSAGE
- 10820 GRID(GX, GY)=P
- 10830 PP=P: GOSUB *PUT.PASSAGE
- 10840 RETURN
- 10850 '-------------------- DRAW ELEMENT --------------------
- 10860 *DRAW.ELEMENT
- 10870 IF EEN=MAXE THEN RETURN
- 10880 EEN=EEN+1
- 10890 EEX(EEN)=GX: EEY(EEN)=GY
- 10900 EE(EEN)=E
- 10910 EE=E: GOSUB *PUT.ELEMENT
- 10920 RETURN
- 10930 '--------------------- ERASE.ELEMENT ---------------------
- 10940 *ERASE.ELEMENT
- 10950 FOR N=1 TO EEN
- 10960 IF EEX(N)=GX AND EEY(N)=GY AND EE(N)=E THEN *ERASE
- 10970 NEXT
- 10980 *ERASE
- 10990 EE=EE(N)
- 11000 EE(N)=-1
- 11010 HLD=CE: CE=CP
- 11020 GOSUB *PUT.ELEMENT
- 11030 CE=HLD
- 11040 RETURN
- 11050 '--------------------- SELECT DRAW MODE --------------------
- 11060 *SELECT.MODE
- 11070 IF ((MX-DOX) MOD DL)=0 OR ((MY-DOY) MOD DL)=0 THEN RETURN
- 11080 GOSUB *REVERSE.MODE
- 11090 DX=(MX-DOX)\DL: DY=(MY-DOY)\DL
- 11100 DFLG=NDX*DY+DX
- 11110 GOSUB *REVERSE.MODE
- 11120 RETURN
- 11130 '--------------------- SELECT PASSAGE --------------------
- 11140 *SELECT.PASSAGE
- 11150 IF ((MX-POX) MOD PL)=0 OR ((MY-POY) MOD PL)=0 THEN RETURN
- 11160 IF SFLG=0 THEN GOSUB *REVERSE.PASSAGE ELSE GOSUB *REVERSE.ELEMENT
- 11170 SFLG=0
- 11180 PX=(MX-POX)\PL: PY=(MY-POY)\PL
- 11190 P=NPX*PY+PX
- 11200 GOSUB *REVERSE.PASSAGE
- 11210 RETURN
- 11220 '--------------------- SELECT ELEMENT --------------------
- 11230 *SELECT.ELEMENT
- 11240 IF ((MX-EOX) MOD EL)=0 OR ((MY-EOY) MOD EL)=0 THEN RETURN
- 11250 IF SFLG=1 THEN GOSUB *REVERSE.ELEMENT ELSE GOSUB *REVERSE.PASSAGE
- 11260 SFLG=1
- 11270 EX=(MX-EOX)\EL: EY=(MY-EOY)\EL
- 11280 E=NEX*EY+EX
- 11290 GOSUB *REVERSE.ELEMENT
- 11300 RETURN
- 11310 '-------------------- SELECT FILE --------------------
- 11320 *SELECT.FILE
- 11330 IF ((MX-FOX) MOD FL)=0 OR ((MY-FOY) MOD FL)=0 THEN RETURN
- 11340 GOSUB *REVERSE.FILE
- 11350 FX=(MX-FOX)\FL: FY=(MY-FOY)\FL
- 11360 F=NFX*FY+FX
- 11370 FILE$="DMMAP"+MID$(STR$(F), 2)
- 11380 GOSUB *REVERSE.FILE
- 11390 GOSUB *FLOOR.NUMBER
- 11400 RETURN
- 11410 '-------------------- SELECT TASK --------------------
- 11420 *SELECT.TASK
- 11430 IF ((MY-TOY) MOD TYL)=0 THEN RETURN
- 11440 TY=(MY-TOY)\TYL
- 11450 T=TY
- 11460 GOSUB *REVERSE.TASK
- 11470 ON T+1 GOSUB *READ.MAP, *WRITE.MAP, *FAIR.COPY, *CLEAR.MAP, *HARD, *TIFF
- 11480 GOSUB *REVERSE.TASK
- 11490 RETURN
- 11500 '-------------------- READ MAP --------------------
- 11510 *READ.MAP
- 11520 OPEN "I", #1, FILE$+".DAT"
- 11530 FOR Y=0 TO NG-1
- 11540 FOR X=0 TO NG-1
- 11550 INPUT #1, GRID(X, Y)
- 11560 NEXT
- 11570 NEXT
- 11580 EEN=0
- 11590 WHILE NOT EOF(1)
- 11600 EEN=EEN+1
- 11610 INPUT #1, EEX(EEN), EEY(EEN), EE(EEN)
- 11620 WEND
- 11630 CLOSE
- 11640 GOSUB *DRAW.GRID
- 11650 GOSUB *DRAW.MAP
- 11660 *READ.ERROR
- 11670 RETURN
- 11680 '-------------------- WRITE MAP --------------------
- 11690 *WRITE.MAP
- 11700 OPEN "O", #1, FILE$+".DAT"
- 11710 FOR Y=0 TO NG-1
- 11720 FOR X=0 TO NG-1
- 11730 PRINT #1, GRID(X, Y)
- 11740 NEXT
- 11750 NEXT
- 11760 I=1
- 11770 WHILE I<=EEN
- 11780 IF EE(I)=-1 THEN *ENDIF1
- 11790 PRINT #1, EEX(I), EEY(I), EE(I)
- 11800 *ENDIF1
- 11810 I=I+1
- 11820 WEND
- 11830 CLOSE
- 11840 RETURN
- 11850 '-------------------- FAIR COPY --------------------
- 11860 *FAIR.COPY
- 11870 GOSUB *DRAW.GRID
- 11880 GOSUB *DRAW.MAP
- 11890 RETURN
- 11900 '-------------------- CLEAR MAP --------------------
- 11910 *CLEAR.MAP
- 11920 GOSUB *DRAW.GRID
- 11930 FOR Y=0 TO NG-1
- 11940 FOR X=0 TO NG-1
- 11950 GRID(X, Y)=0
- 11960 NEXT
- 11970 NEXT
- 11980 EEN=0
- 11990 RETURN
- 12000 '-------------------- HARD COPY --------------------
- 12010 *HARD
- 12020 HARDC 1
- 12030 RETURN
- 12040 '-------------------- TIFF SAVE --------------------
- 12050 *TIFF
- 12060 SAVE@ FILE$+".TIF", (0, 0)-(511, 399)
- 12070 RETURN
- 12080 '-------------------- DRAW MAP --------------------
- 12090 *DRAW.MAP
- 12100 FOR Y=0 TO NG-1
- 12110 FOR X=0 TO NG-1
- 12120 PP=GRID(X, Y)
- 12130 IF PP=0 THEN *ENDIF2
- 12140 SX=GL*X+GOX: SY=GL*Y+GOY
- 12150 GOSUB *PUT.PASSAGE
- 12160 *ENDIF2
- 12170 NEXT
- 12180 NEXT
- 12190 J=1
- 12200 WHILE J<=EEN
- 12210 IF EE(J)=-1 THEN *ENDIF3
- 12220 SX=GL*EEX(J)+GOX: SY=GL*EEY(J)+GOY
- 12230 EE=EE(J): GOSUB *PUT.ELEMENT
- 12240 *ENDIF3
- 12250 J=J+1
- 12260 WEND
- 12270 FOR Y=0 TO NG-1
- 12280 FOR X=0 TO NG-1
- 12290 PP=GRID(X, Y)
- 12300 IF PP=0 THEN *ENDIF4
- 12310 SX=GL*X+GOX: SY=GL*Y+GOY
- 12320 GOSUB *DRAW.BORDER
- 12330 *ENDIF4
- 12340 NEXT
- 12350 NEXT
- 12360 RETURN
- 12370 '--------------------- DRAW BORDER LINE ---------------------
- 12380 *DRAW.BORDER
- 12390 IF PP=>4 AND PP<=11 THEN GOSUB *ALTAR: RETURN
- 12400 IF X=0 THEN GOSUB *LEFT ELSE XX=GRID(X-1, Y): IF XX=0 OR (XX=>4 AND XX<=11 AND XX<>4 AND XX<>8) THEN GOSUB *LEFT
- 12410 IF X=NG-1 THEN GOSUB *RIGHT ELSE XX=GRID(X+1, Y): IF XX=0 OR (XX=>4 AND XX<=11 AND XX<>6 AND XX<>10) THEN GOSUB *RIGHT
- 12420 IF Y=0 THEN GOSUB *UPPER ELSE YY=GRID(X, Y-1): IF YY=0 OR (YY=>4 AND YY<=11 AND YY<>5 AND YY<>9) THEN GOSUB *UPPER
- 12430 IF Y=NG-1 THEN GOSUB *LOWER ELSE YY=GRID(X, Y+1): IF YY=0 OR (YY=>4 AND YY<=11 AND YY<>7 AND YY<>11) THEN GOSUB *LOWER
- 12440 RETURN
- 12450 '-------------------- INIT SCREEN --------------------
- 12460 *INIT.SCREEN
- 12461 LINE(0,0)-(511,399),PSET,%15,BF
- 12462 SYMBOL(1,392),"Dante",.9!,.5!,%10
- 12470 '-------------------- GRID
- 12480 GOSUB *DRAW.GRID
- 12490 FOR I=0 TO NG-1
- 12500 SYMBOL(1+GL*I+GOX, -12+GOY), RIGHT$(STR$(I+1), 2), .7!, .7!, %CN
- 12510 SYMBOL(-15+GOX, 3+GL*I+GOY), RIGHT$(STR$(I+1), 2), .7!, .7!, %CN
- 12520 NEXT
- 12530 '-------------------- TITLE
- 12540 LINE(SOX, SOY)-(41+SOX, 43+SOY), PSET, %CBK, BF
- 12550 LINE(1+SOX, 1+SOY)-(40+SOX, 42+SOY), PSET, %14, B
- 12560 SYMBOL(3+SOX, 5+SOY), "DUNGEON", .64!, 1, %10,,, 1
- 12570 SYMBOL(3+SOX, 5+SOY), "DUNGEON", .64!, 1, %14
- 12580 SYMBOL(6+SOX, 25+SOY), "MASTER", .64!, 1, %10,,, 1
- 12590 SYMBOL(6+SOX, 25+SOY), "MASTER", .64!, 1, %14
- 12600 '-------------------- COMPASS
- 12610 CIRCLE(COX, COY), 18, 0, 1.9!,,, F,, %CBK
- 12620 CIRCLE(COX, COY), 15, 0, 2!,,, F,, %12
- 12630 LINE(COX, -25+COY)-(COX, 17+COY), PSET, %CC
- 12640 LINE(-10+COX, COY)-(10+COX, COY), PSET, %CC
- 12650 LINE(COX, -25+COY)-(4+COX, -8+COY), PSET, %CC
- 12660 LINE(4+COX, -8+COY)-(-4+COX, -8+COY), PSET, %CC
- 12670 '-------------------- BACKGROUND OF BUTTONS
- 12680 LINE(POX-2, POY-2)-(TXL+TOX+2, TYL*NT+TOY+2), PSET, %CBK, BF
- 12690 '-------------------- PASSAGE
- 12700 FOR I=0 TO NPX
- 12710 LINE(PL*I+POX, POY)-(PL*I+POX, PL*NPY+POY), PSET, %CG
- 12720 NEXT
- 12730 FOR I=0 TO NPY
- 12740 LINE(POX, PL*I+POY)-(PL*NPX+POX, PL*I+POY), PSET, %CG
- 12750 NEXT
- 12760 PP=0
- 12770 FOR Y=0 TO NPY-1
- 12780 FOR X=0 TO NPX-1
- 12790 SX=2+PL*X+POX: SY=2+PL*Y+POY
- 12800 GOSUB *PUT.PASSAGE
- 12810 PP=PP+1
- 12820 NEXT
- 12830 NEXT
- 12840 '-------------------- DRAW MODE
- 12850 FOR I=0 TO NDX
- 12860 LINE(DL*I+DOX, DOY)-(DL*I+DOX, DL*NDY+DOY), PSET, %CG
- 12870 IF I=NDX THEN *ENDIF5
- 12880 READ D$
- 12890 SYMBOL(2+DL*I+DOX, 3+DOY), D$, .55!, .8!, %CS
- 12900 *ENDIF5
- 12910 NEXT
- 12920 DATA PUT, ERA
- 12930 FOR I=0 TO NDY
- 12940 LINE(DOX, DL*I+DOY)-(DL*NDX+DOX, DL*I+DOY), PSET, %CG
- 12950 NEXT
- 12960 '-------------------- ELEMENT
- 12970 FOR I=0 TO NEX
- 12980 LINE(EL*I+EOX, EOY)-(EL*I+EOX, EL*NEY+EOY), PSET, %CG
- 12990 NEXT
- 13000 FOR I=0 TO NEY
- 13010 LINE(EOX, EL*I+EOY)-(EL*NEX+EOX, EL*I+EOY), PSET, %CG
- 13020 NEXT
- 13030 EE=0
- 13040 FOR Y=0 TO NEY-1
- 13050 FOR X=0 TO NEX-1
- 13060 SX=2+EL*X+EOX: SY=2+EL*Y+EOY
- 13070 GOSUB *PUT.ELEMENT
- 13080 EE=EE+1
- 13090 NEXT
- 13100 NEXT
- 13110 '-------------------- FILE
- 13120 FOR I=0 TO NFX
- 13130 LINE(FL*I+FOX, FOY)-(FL*I+FOX, FL*NFY+FOY), PSET, %CG
- 13140 NEXT
- 13150 FOR I=0 TO NFY
- 13160 LINE(FOX, FL*I+FOY)-(FL*NFX+FOX, FL*I+FOY), PSET, %CG
- 13170 NEXT
- 13180 F=0
- 13190 FOR Y=0 TO NFY-1
- 13200 FOR X=0 TO NFX-1
- 13210 SYMBOL(2+FL*X+FOX, 3+FL*Y+FOY), RIGHT$(STR$(F), 2), .8!, .8!, %CS
- 13220 F=F+1
- 13230 NEXT
- 13240 NEXT
- 13250 '-------------------- TASK
- 13260 LINE(TOX, TOY)-(TOX, TYL*NT+TOY), PSET, %CG
- 13270 LINE(TXL+TOX, TOY)-(TXL+TOX, TYL*NT+TOY), PSET, %CG
- 13280 FOR I=0 TO NT
- 13290 LINE(TOX, TYL*I+TOY)-(TXL+TOX, TYL*I+TOY), PSET, %CG
- 13300 IF I=NT THEN *ENDIF6
- 13310 READ T$
- 13320 SYMBOL((TXL-6*LEN(T$))\2+TOX, 3+TYL*I+TOY), T$, .8!, .8!, %CS
- 13330 *ENDIF6
- 13340 NEXT
- 13350 DATA READ, WRITE, FAIR COPY, CLEAR, HARD COPY, TIFF SAVE
- 13360 RETURN
- 13370 '-------------------- DRAW GRID --------------------
- 13380 *DRAW.GRID
- 13390 LINE(-2+GOX, -2+GOY)-(2+GL*NG+GOX, 2+GL*NG+GOY), PSET, %CBK, BF
- 13400 FOR I=0 TO NG
- 13410 LINE(GL*I+GOX, GOY)-(GL*I+GOX, GL*NG+GOY), PSET, %CG
- 13420 LINE(GOX, GL*I+GOY)-(GL*NG+GOX, GL*I+GOY), PSET, %CG
- 13430 NEXT
- 13440 RETURN
- 13450 '-------------------- PUT PASSAGE --------------------
- 13460 *PUT.PASSAGE
- 13470 ON PP+1 GOSUB *P0, *P1, *P2, *P3, *P4, *P5, *P6, *P7, *P8, *P9, *P10, *P11
- 13480 RETURN
- 13490 '-------------------- PUT ELEMENT --------------------
- 13500 *PUT.ELEMENT
- 13510 ON EE+1 GOSUB *E0, *E1, *E2, *E3, *E4, *E5, *E6, *E7, *E8, *E9, *E10, *E11, *E12, *E13, *E14, *E15, *E16, *E17, *E18, *E19, *E20, *E21, *E22, *E23, *E24, *E25, *E26, *E27, *E28, *E29, *E30, *E31
- 13520 RETURN
- 13530 '-------------------- BORDER: ALTAR --------------------
- 13540 *ALTAR
- 13550 IF PP>=8 THEN PP=PP-4
- 13560 ON PP-3 GOSUB *A0, *A1, *A2, *A3
- 13570 RETURN
- 13580 '-------------------- REVERSE FOR PASSAGE --------------------
- 13590 *REVERSE.PASSAGE
- 13600 SX=PL*PX+POX: SY=PL*PY+POY
- 13610 LINE(SX, SY)-(PL+SX, PL+SY), XOR, %CR, BF
- 13620 RETURN
- 13630 '-------------------- REVERSE FOR DRAW MODE --------------------
- 13640 *REVERSE.MODE
- 13650 SX=DL*DX+DOX: SY=DL*DY+DOY
- 13660 LINE(SX, SY)-(DL+SX, DL+SY), XOR, %CR, BF
- 13670 RETURN
- 13680 '-------------------- REVERSE FOR ELEMENT --------------------
- 13690 *REVERSE.ELEMENT
- 13700 SX=EL*EX+EOX: SY=EL*EY+EOY
- 13710 LINE(SX, SY)-(PL+SX, PL+SY), XOR, %CR, BF
- 13720 RETURN
- 13730 '-------------------- REVERSE FOR FILE --------------------
- 13740 *REVERSE.FILE
- 13750 SX=FL*FX+FOX: SY=FL*FY+FOY
- 13760 LINE(SX, SY)-(FL+SX, FL+SY), XOR, %CR, BF
- 13770 RETURN
- 13780 '-------------------- REVERSE FOR TASK --------------------
- 13790 *REVERSE.TASK
- 13800 SX=TOX: SY=TYL*TY+TOY
- 13810 LINE(SX, SY)-(TXL+SX, TYL+SY), XOR, %CR, BF
- 13820 RETURN
- 13830 '-------------------- FLOOR NUMBER --------------------
- 13840 *FLOOR.NUMBER
- 13850 LINE(NOX, NOY)-(36+NOX, 22+NOY), PSET, %CBK, BF
- 13860 LINE(2+NOX, 2+NOY)-(34+NOX, 20+NOY), PSET, 7, B
- 13870 IF F=0 THEN N$="1F" ELSE N$="B"+MID$(STR$(F), 2)+"F"
- 13880 SYMBOL(1+(35-LEN(N$)*8)\2+NOX, 4+NOY), N$, 1, 1, %15,,, 1
- 13890 RETURN
- 13900 '-------------------- PASSAGE 0: BACKGROUND --------------------
- 13910 *P0
- 13920 LINE(SX, SY)-(GL+SX, GL+SY), PSET, %CBK, BF
- 13930 LINE(SX, SY)-(GL+SX, GL+SY), PSET, %CG, B
- 13940 RETURN
- 13950 '-------------------- PASSAGE 1: PASSAGE --------------------
- 13960 *P1
- 13970 LINE(SX, SY)-(GL+SX, GL+SY), PSET, %CP, BF
- 13980 RETURN
- 13990 '-------------------- PASSAGE 2: STAIRS --------------------
- 14000 *P2
- 14010 LINE(SX, SY)-(GL+SX, GL+SY), PSET, %CP, BF
- 14020 SYMBOL(SX+2, SY+2), "Up", .6!, .6!, %CE
- 14030 '
- 14040 '
- 14050 RETURN
- 14060 '-------------------- PASSAGE 3: STAIRS --------------------
- 14070 *P3
- 14080 LINE(SX, SY)-(GL+SX, GL+SY), PSET, %CP, BF
- 14090 SYMBOL(SX+2, SY+2), "Dn", .6!, .6!, %CE
- 14100 '
- 14110 '
- 14120 RETURN
- 14130 '-------------------- PASSAGE 4: ALTAR --------------------
- 14140 *P4
- 14150 CONNECT(GL+SX, 2+SY)-(GL+SX, -2+GL+SY)-(-4+GL+SX, -3+GL+SY)- (-4+GL+SX, 3+SY)-(GL+SX, 2+SY), %CP, PSET, F, %CP
- 14160 RETURN
- 14170 '-------------------- PASSAGE 5: ALTAR --------------------
- 14180 *P5
- 14190 CONNECT(2+SX, GL+SY)-(-2+GL+SX, GL+SY)-(-3+GL+SX, -4+GL+SY)- (3+SX, -4+GL+SY)-(2+SX, GL+SY), %CP, PSET, F, %CP
- 14200 RETURN
- 14210 '-------------------- PASSAGE 6: ALTAR --------------------
- 14220 *P6
- 14230 CONNECT(SX, 2+SY)-(SX, -2+GL+SY)-(4+SX, -3+GL+SY)- (4+SX, 3+SY)-(SX, 2+SY), %CP, PSET, F, %CP
- 14240 RETURN
- 14250 '-------------------- PASSAGE 7: ALTAR --------------------
- 14260 *P7
- 14270 CONNECT(2+SX, SY)-(-2+GL+SX, SY)-(-3+GL+SX, 4+SY)- (3+SX, 4+SY)-(2+SX, SY), %CP, PSET, F, %CP
- 14280 RETURN
- 14290 '-------------------- PASSAGE 8: VI ALTAR --------------------
- 14300 *P8
- 14310 CONNECT(GL+SX, 2+SY)-(GL+SX, -2+GL+SY)-(-4+GL+SX, -3+GL+SY)- (-4+GL+SX, 3+SY)-(GL+SX, 2+SY), %CP, PSET, F, %CP
- 14320 LINE(-2+GL+SX, 2+SY)-(-2+GL+SX, 4+SY), PSET, %CE
- 14330 LINE(-2+GL+SX, -2+GL+SY)-(-2+GL+SX, -4+GL+SY), PSET, %CE
- 14340 RETURN
- 14350 '-------------------- PASSAGE 9: VI ALTAR --------------------
- 14360 *P9
- 14370 CONNECT(2+SX, GL+SY)-(-2+GL+SX, GL+SY)-(-3+GL+SX, -4+GL+SY)- (3+SX, -4+GL+SY)-(2+SX, GL+SY), %CP, PSET, F, %CP
- 14380 LINE(2+SX, -2+GL+SY)-(4+SX, -2+GL+SY), PSET, %CE
- 14390 LINE(-2+GL+SX, -2+GL+SY)-(-4+GL+SX, -2+GL+SY), PSET, %CE
- 14400 RETURN
- 14410 '-------------------- PASSAGE 10: VI ALTAR --------------------
- 14420 *P10
- 14430 CONNECT(SX, 2+SY)-(SX, -2+GL+SY)-(4+SX, -3+GL+SY)- (4+SX, 3+SY)-(SX, 2+SY), %CP, PSET, F, %CP
- 14440 LINE(2+SX, 2+SY)-(2+SX, 4+SY), PSET, %CE
- 14450 LINE(2+SX, -2+GL+SY)-(2+SX, -4+GL+SY), PSET, %CE
- 14460 RETURN
- 14470 '-------------------- PASSAGE 11: VI ALTAR --------------------
- 14480 *P11
- 14490 CONNECT(2+SX, SY)-(-2+GL+SX, SY)-(-3+GL+SX, 4+SY)- (3+SX, 4+SY)-(2+SX, SY), %CP, PSET, F, %CP
- 14500 LINE(2+SX, 2+SY)-(4+SX, 2+SY), PSET, %CE
- 14510 LINE(-2+GL+SX, 2+SY)-(-4+GL+SX, 2+SY), PSET, %CE
- 14520 RETURN
- 14530 '-------------------- ELEMENT 0: HIDDEN WALL --------------------
- 14540 *E0
- 14550 FOR I=0 TO 2
- 14551 LINE(2+4*I+SX, SY)-(2+4*I+SX, GL+SY), PSET, %CE
- 14552 LINE(SX, 2+4*I+SY)-(GL+SX, 2+4*I+SY), PSET, %CE
- 14553 NEXT
- 14560 RETURN
- 14570 '-------------------- ELEMENT 1: INVISIBLE WALL --------------------
- 14580 *E1
- 14590 LINE(SX, SY)-(GL+SX, GL+SY), PSET, %CE
- 14591 LINE(SX, GL+SY)-(GL+SX, SY), PSET, %CE
- 14600 RETURN
- 14610 '-------------------- ELEMENT 2: WARP ZONE --------------------
- 14620 *E2
- 14630 FOR I=0 TO 5
- 14631 LINE(1+SX, 1+2*I+SY)-(-1+GL+SX, 1+2*I+SY), PSET, %CE, B, &HAAAA
- 14632 NEXT
- 14640 RETURN
- 14650 '-------------------- ELEMENT 3: BLACK GHOST --------------------
- 14660 *E3
- 14670 CIRCLE(GL\2+SX, GL\2+SY), 3, %CE
- 14671 CIRCLE(GL\2+SX, GL\2+SY), 6, %CE
- 14680 RETURN
- 14690 '-------------------- ELEMENT 4: TURN TABLE --------------------
- 14700 *E4
- 14710 CIRCLE(GL\2+SX, GL\2+SY), 5, %CE, 1, .5!, .25!
- 14711 CONNECT(GL\2+SX, 2+GL\2+SY)-(GL\2+SX, 6+GL\2+SY)-(4+GL\2+SX, 6+GL\2+SY), %CE
- 14720 RETURN
- 14730 '-------------------- ELEMENT 5: HIDDEN SWITCH --------------------
- 14740 *E5
- 14750 CIRCLE(GL\2+SX, GL\2+SY), 2, %CE
- 14760 RETURN
- 14770 '-------------------- ELEMENT 6: ITEMS --------------------
- 14780 *E6
- 14790 SYMBOL(2+SX, 2+SY), "I", .6!, .6!, %CE
- 14800 RETURN
- 14810 '-------------------- ELEMENT 7: UNIDENTIFIED -------------------
- 14820 *E7
- 14830 SYMBOL(2+SX, 2+SY), "?", .6!, .6!, %CE
- 14840 RETURN
- 14850 '-------------------- ELEMENT 8: DOOR --------------------
- 14860 *E8
- 14870 LINE(GL\2+SX, SY)-(GL\2+SX, GL+SY), PSET, %CE
- 14880 RETURN
- 14890 '-------------------- ELEMENT 9: DOOR --------------------
- 14900 *E9
- 14910 LINE(SX, GL\2+SY)-(GL+SX, GL\2+SY), PSET, %CE
- 14920 RETURN
- 14930 '-------------------- ELEMENT 10: WOODEN DOOR --------------------
- 14940 *E10
- 14950 LINE(-1+GL\2+SX, SY)-(-1+GL\2+SX, GL+SY), PSET, %CE
- 14960 LINE(1+GL\2+SX, SY)-(1+GL\2+SX, GL+SY), PSET, %CE
- 14970 RETURN
- 14980 '-------------------- ELEMENT 11: WOODEN DOOR --------------------
- 14990 *E11
- 15000 LINE(SX, -1+GL\2+SY)-(GL+SX, -1+GL\2+SY), PSET, %CE
- 15010 LINE(SX, 1+GL\2+SY)-(GL+SX, 1+GL\2+SY), PSET, %CE
- 15020 RETURN
- 15030 '-------------------- ELEMENT 12: DOOR WITH BUTTONS -----------------
- 15040 *E12
- 15050 LINE(GL\2+SX, SY)-(GL\2+SX, GL+SY), PSET, %CE
- 15060 LINE(-1+GL\2+SX, -2+GL+SY)-(-2+GL\2+SX, -4+GL+SY), PSET, %CE, BF
- 15070 LINE(1+GL\2+SX, 2+SY)-(2+GL\2+SX, 4+SY), PSET, %CE, BF
- 15080 RETURN
- 15090 '-------------------- ELEMENT 13: DOOR WITH BUTTONS -----------------
- 15100 *E13
- 15110 LINE(SX, GL\2+SY)-(GL+SX, GL\2+SY), PSET, %CE
- 15120 LINE(2+SX, -1+GL\2+SY)-(4+SX, -2+GL\2+SY), PSET, %CE, BF
- 15130 LINE(-2+GL+SX, 1+GL\2+SY)-(-4+GL+SX, 2+GL\2+SY), PSET, %CE, BF
- 15140 RETURN
- 15150 '-------------------- ELEMENT 14: PIT --------------------
- 15160 *E14
- 15170 LINE(4+SX, 4+SY)-(-4+GL+SX, -4+GL+SY), PSET, %CE, BF
- 15180 RETURN
- 15190 '-------------------- ELEMENT 15: FLOOR SWITCH --------------------
- 15200 *E15
- 15210 LINE(4+SX, 4+SY)-(-4+GL+SX, -4+GL+SY), PSET, %CE, B
- 15220 RETURN
- 15230 '-------------------- ELEMENT 16: BUTTON --------------------
- 15240 *E16
- 15250 LINE(GL+SX, -1+GL\2+SY)-(-2+GL+SX, 1+GL\2+SY), PSET, %CE, BF
- 15260 RETURN
- 15270 '-------------------- ELEMENT 17: BUTTON --------------------
- 15280 *E17
- 15290 LINE(-1+GL\2+SX, GL+SY)-(1+GL\2+SX, -2+GL+SY), PSET, %CE, BF
- 15300 RETURN
- 15310 '-------------------- ELEMENT 18: BUTTON --------------------
- 15320 *E18
- 15330 LINE(SX, -1+GL\2+SY)-(2+SX, 1+GL\2+SY), PSET, %CE, BF
- 15340 RETURN
- 15350 '-------------------- ELEMENT 19: BUTTON --------------------
- 15360 *E19
- 15370 LINE(-1+GL\2+SX, SY)-(1+GL\2+SX, 2+SY), PSET, %CE, BF
- 15380 RETURN
- 15390 '-------------------- ELEMENT 20: MESSAGE --------------------
- 15400 *E20
- 15410 LINE(GL+SX, GL\2+SY)-(-4+GL+SX, GL\2+SY), PSET, %CE
- 15420 RETURN
- 15430 '-------------------- ELEMENT 21: MESSAGE --------------------
- 15440 *E21
- 15450 LINE(GL\2+SX, GL+SY)-(GL\2+SX, -4+GL+SY), PSET, %CE
- 15460 RETURN
- 15470 '-------------------- ELEMENT 22: MESSAGE --------------------
- 15480 *E22
- 15490 LINE(SX, GL\2+SY)-(4+SX, GL\2+SY), PSET, %CE
- 15500 RETURN
- 15510 '-------------------- ELEMENT 23: MESSAGE --------------------
- 15520 *E23
- 15530 LINE(GL\2+SX, SY)-(GL\2+SX, 4+SY), PSET, %CE
- 15540 RETURN
- 15550 '-------------------- ELEMENT 24: LOCK --------------------
- 15560 *E24
- 15570 LINE(GL+SX, -1+GL\2+SY)-(-2+GL+SX, -1+GL\2+SY), PSET, %CE
- 15580 LINE(GL+SX, 1+GL\2+SY)-(-2+GL+SX, 1+GL\2+SY), PSET, %CE
- 15590 RETURN
- 15600 '-------------------- ELEMENT 25: LOCK --------------------
- 15610 *E25
- 15620 LINE(-1+GL\2+SX, GL+SY)-(-1+GL\2+SX, -2+GL+SY), PSET, %CE
- 15630 LINE(1+GL\2+SX, GL+SY)-(1+GL\2+SX, -2+GL+SY), PSET, %CE
- 15640 RETURN
- 15650 '-------------------- ELEMENT 26: LOCK --------------------
- 15660 *E26
- 15670 LINE(SX, -1+GL\2+SY)-(2+SX, -1+GL\2+SY), PSET, %CE
- 15680 LINE(SX, 1+GL\2+SY)-(2+SX, 1+GL\2+SY), PSET, %CE
- 15690 RETURN
- 15700 '-------------------- ELEMENT 27: LOCK --------------------
- 15710 *E27
- 15720 LINE(-1+GL\2+SX, SY)-(-1+GL\2+SX, 2+SY), PSET, %CE
- 15730 LINE(1+GL\2+SX, SY)-(1+GL\2+SX, 2+SY), PSET, %CE
- 15740 RETURN
- 15750 '-------------------- ELEMENT 28: FOUNTAIN --------------------
- 15760 *E28
- 15770 CIRCLE(GL+SX, GL\2+SY), 3, %CE, 1, .25!, .75!
- 15780 RETURN
- 15790 '-------------------- ELEMENT 28: FOUNTAIN --------------------
- 15800 *E29
- 15810 CIRCLE(GL\2+SX, GL+SY), 3, %CE, 1, .5!, 1
- 15820 RETURN
- 15830 '-------------------- ELEMENT 28: FOUNTAIN --------------------
- 15840 *E30
- 15850 CIRCLE(SX, GL\2+SY), 3, %CE, 1, .75!, .25!
- 15860 RETURN
- 15870 '-------------------- ELEMENT 28: FOUNTAIN --------------------
- 15880 *E31
- 15890 CIRCLE(GL\2+SX, SY), 3, %CE, 1, 0, .5!
- 15900 RETURN
- 15910 '-------------------- BORDER: LEFT LINE --------------------
- 15920 *LEFT
- 15930 SX=GL*X+GOX: SY=GL*Y+GOY
- 15940 LINE(SX, SY)-(SX, GL+SY), PSET, %CB
- 15950 RETURN
- 15960 '-------------------- BORDER: RIGHT LINE --------------------
- 15970 *RIGHT
- 15980 SX=GL*X+GOX: SY=GL*Y+GOY
- 15990 LINE(GL+SX, SY)-(GL+SX, GL+SY), PSET, %CB
- 16000 RETURN
- 16010 '-------------------- BORDER: UPPER LINE --------------------
- 16020 *UPPER
- 16030 SX=GL*X+GOX: SY=GL*Y+GOY
- 16040 LINE(SX, SY)-(GL+SX, SY), PSET, %CB
- 16050 RETURN
- 16060 '-------------------- BORDER: LOWER LINE --------------------
- 16070 *LOWER
- 16080 SX=GL*X+GOX: SY=GL*Y+GOY
- 16090 LINE(SX, GL+SY)-(GL+SX, GL+SY), PSET, %CB
- 16100 RETURN
- 16110 '-------------------- BORDER: ALTAR 0 --------------------
- 16120 *A0
- 16130 CONNECT(GL+SX, -1+GL+SY)-(-5+GL+SX, -2+GL+SY)-(-5+GL+SX, 2+SY)- (GL+SX, 1+SY), %CB
- 16140 RETURN
- 16150 '-------------------- BORDER: ALTAR 1 --------------------
- 16160 *A1
- 16170 CONNECT(-1+GL+SX, GL+SY)-(-2+GL+SX, -5+GL+SY)-(2+SX, -5+GL+SY)- (1+SX, GL+SY), %CB
- 16180 RETURN
- 16190 '-------------------- BORDER: ALTAR 2 --------------------
- 16200 *A2
- 16210 CONNECT(SX, -1+GL+SY)-(5+SX, -2+GL+SY)-(5+SX, 2+SY)-(SX, 1+SY), %CB
- 16220 RETURN
- 16230 '-------------------- BORDER: ALTAR 3 --------------------
- 16240 *A3
- 16250 CONNECT(-1+GL+SX, SY)-(-2+GL+SX, 5+SY)-(2+SX, 5+SY)-(1+SX, SY), %CB
- 16260 RETURN
- 16270 '-------------------- ERROR ROUTINE --------------------
- 16280 *ERROR
- 16290 IF ERR=63 THEN RESUME *READ.ERROR
- 16300 IF ERR=64 AND ERL=11700 THEN KILL FILE$+".DAT": RESUME
- 16310 IF ERR=64 AND ERL=12060 THEN KILL FILE$+".TIF": RESUME
- 16320 '
- 16330 CLS
- 16340 COLOR 2: PRINT "ERL:"; ERL; " ERR:"; ERR
- 16350 END
-