mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-12-25 05:29:34 +00:00
glados: level19 finished more or less!
This commit is contained in:
parent
ce0d4e86e4
commit
fe93b99f27
@ -2,6 +2,9 @@
|
|||||||
' by Vince Weaver (vince@deater.net)
|
' by Vince Weaver (vince@deater.net)
|
||||||
' http://www.deater.net/weave/vmwprod/portal/
|
' http://www.deater.net/weave/vmwprod/portal/
|
||||||
'
|
'
|
||||||
|
' This program is pretty big (>7k) so you might need to load it high
|
||||||
|
' POKE 104,64:POKE 16384,0 before running
|
||||||
|
'
|
||||||
' Variable Summary
|
' Variable Summary
|
||||||
'
|
'
|
||||||
' CX,CY = Chell X, Y OX,OY = Old Chell X,Y
|
' CX,CY = Chell X, Y OX,OY = Old Chell X,Y
|
||||||
@ -10,7 +13,7 @@
|
|||||||
' SX,SY = Cursor X,Y LX,LY = Old Cursor X,Y
|
' SX,SY = Cursor X,Y LX,LY = Old Cursor X,Y
|
||||||
' BO=Blue Portal Out BX,BY = Blue Portal X,Y
|
' BO=Blue Portal Out BX,BY = Blue Portal X,Y
|
||||||
' GO=Orange Portal Out GX,GY = Orange Portal X,Y
|
' GO=Orange Portal Out GX,GY = Orange Portal X,Y
|
||||||
' PR=Portal rotated, LR=Last rotate
|
' PR=Portal rotated LR=Last rotate
|
||||||
' JO=Blob out JX,JY,JA = Blob X,Y,add
|
' JO=Blob out JX,JY,JA = Blob X,Y,add
|
||||||
' KO=object out KX,KY,KV = Object X,Y,velocity
|
' KO=object out KX,KY,KV = Object X,Y,velocity
|
||||||
' UX,UY = old object X,Y
|
' UX,UY = old object X,Y
|
||||||
@ -36,9 +39,9 @@
|
|||||||
10 I=0:VTAB 24:PRINT "H FOR HELP";
|
10 I=0:VTAB 24:PRINT "H FOR HELP";
|
||||||
11 IF PEEK(-16384)>=128 THEN GET A$:GOTO 13
|
11 IF PEEK(-16384)>=128 THEN GET A$:GOTO 13
|
||||||
12 I=I+1:IF I<500 GOTO 11
|
12 I=I+1:IF I<500 GOTO 11
|
||||||
13 HGR
|
13 HGR:PR=0
|
||||||
'
|
'
|
||||||
14 L=19
|
14 L=19:PR=1:LR=1
|
||||||
' PRINT LEVEL INFO
|
' PRINT LEVEL INFO
|
||||||
15 TEXT:GOSUB 9000
|
15 TEXT:GOSUB 9000
|
||||||
' Clear screen to black#2
|
' Clear screen to black#2
|
||||||
@ -46,7 +49,7 @@
|
|||||||
'
|
'
|
||||||
' Initialize Variables
|
' Initialize Variables
|
||||||
'
|
'
|
||||||
20 CX=21:CY=100:CD=0:VX=0:VY=0:SX=140:SY=80:BO=0:GO=0:T=0:ZY=42:ZX=0:PX=0:PY=0:JO=0:PR=0:LR=0:KO=0
|
20 CX=21:CY=100:CD=0:VX=0:VY=0:SX=140:SY=80:BO=0:GO=0:T=0:ZY=42:ZX=0:PX=0:PY=0:JO=0:LR=0:KO=0
|
||||||
'
|
'
|
||||||
' Draw Level Background
|
' Draw Level Background
|
||||||
'
|
'
|
||||||
@ -55,7 +58,7 @@
|
|||||||
'
|
'
|
||||||
' Draw Initial Chell and Gun Cursor
|
' Draw Initial Chell and Gun Cursor
|
||||||
'
|
'
|
||||||
25 SCALE=2:XDRAW 1 AT SX,SY
|
25 SCALE=2:ROT=0:IF PR=1 THEN ROT=16:XDRAW 1 AT SX,SY:ROT=0
|
||||||
27 SCALE=1:XDRAW 4 AT CX,CY
|
27 SCALE=1:XDRAW 4 AT CX,CY
|
||||||
'
|
'
|
||||||
30 REM MAIN LOOP
|
30 REM MAIN LOOP
|
||||||
@ -73,7 +76,9 @@
|
|||||||
40 GET A$
|
40 GET A$
|
||||||
42 IF A$="I" AND SY>4 THEN SY=SY-4
|
42 IF A$="I" AND SY>4 THEN SY=SY-4
|
||||||
44 IF A$="J" AND SX>4 THEN SX=SX-4
|
44 IF A$="J" AND SX>4 THEN SX=SX-4
|
||||||
|
45 IF A$="U" AND SX>24 THEN SX=SX-24
|
||||||
46 IF A$="K" AND SX<275 THEN SX=SX+4
|
46 IF A$="K" AND SX<275 THEN SX=SX+4
|
||||||
|
47 IF A$="O" AND SX<255 THEN SX=SX+24
|
||||||
48 IF A$="M" AND SY<150 THEN SY=SY+4
|
48 IF A$="M" AND SY<150 THEN SY=SY+4
|
||||||
50 IF A$="D" AND VX<0 THEN VX=0:CD=0:GOTO 52
|
50 IF A$="D" AND VX<0 THEN VX=0:CD=0:GOTO 52
|
||||||
51 IF A$="D" THEN VX=8:CD=0
|
51 IF A$="D" THEN VX=8:CD=0
|
||||||
@ -105,13 +110,18 @@
|
|||||||
200 IF BO=0 OR GO=0 GOTO 210
|
200 IF BO=0 OR GO=0 GOTO 210
|
||||||
201 IF CX>BX-6 AND CX<BX+6 AND CY<BY+12 AND CY>BY-12 THEN CX=GX+2*VX:CY=GY:POKE 768,180:POKE 769,40:CALL 770
|
201 IF CX>BX-6 AND CX<BX+6 AND CY<BY+12 AND CY>BY-12 THEN CX=GX+2*VX:CY=GY:POKE 768,180:POKE 769,40:CALL 770
|
||||||
202 IF CX>GX-6 AND CX<GX+6 AND CY<GY+12 AND CY>GY-12 THEN CX=BX+2*VX:CY=BY:POKE 768,180:POKE 769,40:CALL 770
|
202 IF CX>GX-6 AND CX<GX+6 AND CY<GY+12 AND CY>GY-12 THEN CX=BX+2*VX:CY=BY:POKE 768,180:POKE 769,40:CALL 770
|
||||||
|
' Portal/Object. Cheat a bit
|
||||||
|
203 IF KO=0 GOTO 206
|
||||||
|
204 IF KX>BX-12 AND KX<BX+12 AND KY<BY+6 AND KY>BY-6 THEN SCALE=1:KX=GX:KY=GY+6
|
||||||
|
205 IF KX>GX-12 AND KX<GX+12 AND KY<GY+6 AND KY>GY-6 THEN SCALE=1:KX=BX:KY=BY+6
|
||||||
' Portal/Blob
|
' Portal/Blob
|
||||||
203 IF L=1 OR JO=0 GOTO 210
|
206 IF L=1 OR JO=0 GOTO 210
|
||||||
204 IF JX>BX-12 AND JX<BX+12 AND JY<BY+6 AND JY>BY-6 THEN SCALE=2:XDRAW 6 AT JX,JY:JX=GX:JY=GY-6:JA=-JA:XDRAW 6 AT JX,JY
|
207 IF JX>BX-12 AND JX<BX+12 AND JY<BY+6 AND JY>BY-6 THEN SCALE=2:XDRAW 6 AT JX,JY:JX=GX:JY=GY-6:JA=-JA:XDRAW 6 AT JX,JY
|
||||||
205 IF JX>GX-12 AND JX<GX+12 AND JY<GY+6 AND JY>GY-6 THEN SCALE=2:XDRAW 6 AT JX,JY:JX=BX:JY=BY-6:JA=-JA:XDRAW 6 AT JX,JY
|
208 IF JX>GX-12 AND JX<GX+12 AND JY<GY+6 AND JY>GY-6 THEN SCALE=2:XDRAW 6 AT JX,JY:JX=BX:JY=BY-6:JA=-JA:XDRAW 6 AT JX,JY
|
||||||
|
|
||||||
' Edges
|
' Edges
|
||||||
210 IF CX<7 THEN CX=7:VX=0
|
210 IF CX<7 THEN CX=7:VX=0
|
||||||
211 IF L=1 AND CX>271 THEN L=19:GOTO 15
|
211 IF L=1 AND CX>271 THEN L=19:PR=1:GOTO 15
|
||||||
212 IF CX>271 THEN CX=271:VX=0
|
212 IF CX>271 THEN CX=271:VX=0
|
||||||
214 IF CY<7 THEN CY=7:VY=-VY
|
214 IF CY<7 THEN CY=7:VY=-VY
|
||||||
' Floors
|
' Floors
|
||||||
@ -129,7 +139,9 @@
|
|||||||
228 IF JX>110 AND JX<130 AND JY>60 AND JY<85 THEN GOSUB 3000
|
228 IF JX>110 AND JX<130 AND JY>60 AND JY<85 THEN GOSUB 3000
|
||||||
' Object
|
' Object
|
||||||
229 IF KO=1 AND KY>115 THEN KY=115:KV=0
|
229 IF KO=1 AND KY>115 THEN KY=115:KV=0
|
||||||
230 GOTO 240
|
' Object in Incinerator
|
||||||
|
230 IF KO=1 AND KX>240 AND KY>100 THEN GOSUB 4000
|
||||||
|
231 GOTO 240
|
||||||
' Level 1 Floors
|
' Level 1 Floors
|
||||||
233 IF CX < 119 AND CY > 112 THEN CY=112:VY=0:VX=VX/2
|
233 IF CX < 119 AND CY > 112 THEN CY=112:VY=0:VX=VX/2
|
||||||
234 IF CX > 161 AND CY > 112 THEN CY=112:VY=0:VX=VX/2
|
234 IF CX > 161 AND CY > 112 THEN CY=112:VY=0:VX=VX/2
|
||||||
@ -150,7 +162,7 @@
|
|||||||
256 XDRAW 1 AT LX,LY:ROT=0:IF PR=1 THEN ROT=16
|
256 XDRAW 1 AT LX,LY:ROT=0:IF PR=1 THEN ROT=16
|
||||||
257 XDRAW 1 AT SX,SY:ROT=0
|
257 XDRAW 1 AT SX,SY:ROT=0
|
||||||
' Object
|
' Object
|
||||||
260 IF KO=1 AND UX=KX AND UY=KY GOTO 300
|
260 IF UX=KX AND UY=KY GOTO 300
|
||||||
265 SCALE=1:XDRAW 7 AT UX,UY:XDRAW 7 AT KX,KY
|
265 SCALE=1:XDRAW 7 AT UX,UY:XDRAW 7 AT KX,KY
|
||||||
300 REM
|
300 REM
|
||||||
500 GOTO 30
|
500 GOTO 30
|
||||||
@ -228,11 +240,11 @@
|
|||||||
' LEVEL 19
|
' LEVEL 19
|
||||||
2000 PRINT D$;"BLOAD GLADOS.HGR"
|
2000 PRINT D$;"BLOAD GLADOS.HGR"
|
||||||
' Draw the blue core
|
' Draw the blue core
|
||||||
2005 SCALE=1:KX=150:KY=65:XDRAW 7 AT KX,KY:JO=-1:KO=1
|
2005 SCALE=1:KX=150:KY=65:XDRAW 7 AT KX,KY:KO=0
|
||||||
2007 HTAB 3:VTAB 21: PRINT "Well, you found me. Congratulations."
|
2007 HTAB 3:VTAB 21: PRINT "Well, you found me. Congratulations."
|
||||||
2099 RETURN
|
2099 RETURN
|
||||||
' GLADOS INJURED
|
' GLADOS INJURED
|
||||||
3000 HTAB 3:VTAB 21:HTAB 6:PRINT " Nice job breaking it, hero. "
|
3000 HTAB 3:VTAB 21:PRINT " Nice job breaking it, hero. "
|
||||||
3005 JO=-1
|
3005 JO=-1
|
||||||
3010 FOR I=1 TO 10
|
3010 FOR I=1 TO 10
|
||||||
3015 XDRAW 7 AT 110,60:V=PEEK(-16336):XDRAW 7 AT 130,60
|
3015 XDRAW 7 AT 110,60:V=PEEK(-16336):XDRAW 7 AT 130,60
|
||||||
@ -243,14 +255,14 @@
|
|||||||
3050 KO=1
|
3050 KO=1
|
||||||
3099 RETURN
|
3099 RETURN
|
||||||
' GLADOS DESTROYED
|
' GLADOS DESTROYED
|
||||||
4000 VTAB 20:PRINT:PRINT:PRINT:PRINT
|
4000 VTAB 20:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
|
||||||
4005 HCOLOR=5
|
4005 HCOLOR=5
|
||||||
4010 FOR X=0 TO 278 STEP 5:HPLOT X,0 TO 120,85:V=PEEK(-16336):NEXT X
|
4010 FOR X=0 TO 278 STEP 5:HPLOT X,0 TO 120,85:V=PEEK(-16336):NEXT X
|
||||||
4015 FOR Y=0 TO 159 STEP 5:HPLOT 278,Y TO 120,85:V=PEEK(-16336):NEXT Y
|
4015 FOR Y=0 TO 159 STEP 5:HPLOT 278,Y TO 120,85:V=PEEK(-16336):NEXT Y
|
||||||
4020 FOR X=278 TO 0 STEP -5:HPLOT X,159 TO 120,85:V=PEEK(-16336):NEXT X
|
4020 FOR X=278 TO 0 STEP -5:HPLOT X,159 TO 120,85:V=PEEK(-16336):NEXT X
|
||||||
4025 FOR Y=159 TO 0 STEP -5:HPLOT 0,Y TO 120,85:V=PEEK(-16336):NEXT Y
|
4025 FOR Y=159 TO 0 STEP -5:HPLOT 0,Y TO 120,85:V=PEEK(-16336):NEXT Y
|
||||||
4097 GET A$
|
4097 GET A$
|
||||||
4098 REM PRINT D$;"RUN STILL_ALIVE.BAS"
|
4098 PRINT:PRINT D$;"RUN STILL_ALIVE.BAS"
|
||||||
4099 END
|
4099 END
|
||||||
' HELP
|
' HELP
|
||||||
5000 REM HELP
|
5000 REM HELP
|
||||||
@ -363,12 +375,18 @@
|
|||||||
9054 PRINT" *"
|
9054 PRINT" *"
|
||||||
9056 PRINT"* *"
|
9056 PRINT"* *"
|
||||||
9058 PRINT"* ___________________ *"
|
9058 PRINT"* ___________________ *"
|
||||||
9059 PRINT"* ___ *"
|
9060 IF L=1 GOTO 9079
|
||||||
9060 PRINT"* \o/ [] [] o () *"
|
9062 PRINT"* # *"
|
||||||
9062 PRINT"* ~~~~~ [ V ] /< _ *"
|
9064 PRINT"* #### _()_ [=|=] *"
|
||||||
9064 PRINT"* / \ []_[] <=> | *"
|
9066 PRINT"* #*# |____ *"
|
||||||
9066 PRINT"* *"
|
9068 PRINT"* ===== |____ O *"
|
||||||
9068 PRINT"************************"
|
9078 GOTO 9086
|
||||||
|
9079 PRINT"* ___ *"
|
||||||
|
9080 PRINT"* \o/ [] [] o () *"
|
||||||
|
9082 PRINT"* ~~~~~ [ V ] /< _ *"
|
||||||
|
9084 PRINT"* / \ []_[] <=> | *"
|
||||||
|
9086 PRINT"* *"
|
||||||
|
9088 PRINT"************************"
|
||||||
9090 POKE 32,0
|
9090 POKE 32,0
|
||||||
9091 FOR I=1 TO 2500:NEXT I
|
9091 FOR I=1 TO 2500:NEXT I
|
||||||
9099 RETURN
|
9099 RETURN
|
||||||
@ -390,13 +408,11 @@
|
|||||||
' FUTURE: Walk on all platforms
|
' FUTURE: Walk on all platforms
|
||||||
' FUTURE: Knock over sentries from behind
|
' FUTURE: Knock over sentries from behind
|
||||||
' FUTURE: Sentries an object that can go through portal
|
' FUTURE: Sentries an object that can go through portal
|
||||||
' FUTURE: Objects can be picked up with gun?
|
|
||||||
' BUG: Chell changes color (turns into Mel) going through O->B portal?
|
' BUG: Chell changes color (turns into Mel) going through O->B portal?
|
||||||
'
|
'
|
||||||
' End level:
|
' End level:
|
||||||
' FUTURE: Objects through portal
|
' FUTURE: Objects can be picked up with gun?
|
||||||
' FUTURE: Incinerator
|
' This is doable but would hugely complicate the code
|
||||||
' FUTURE: Call out to Still Alive when finish
|
|
||||||
'
|
'
|
||||||
' It turns out it is impossible to draw an ASCII Cake
|
' It turns out it is impossible to draw an ASCII Cake
|
||||||
'
|
'
|
||||||
|
Loading…
Reference in New Issue
Block a user