1393 lines
34 KiB
Plaintext
1393 lines
34 KiB
Plaintext
|
|
|
|
.FUNCT I-UNWOUND
|
|
SET 'WATCH-WOUND,FALSE-VALUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT I-BUSINESS-HOURS
|
|
ZERO? BUSINESS-HOURS? /?ELS5
|
|
SET 'BUSINESS-HOURS?,FALSE-VALUE
|
|
IN? PLAYER,MCGINTY-HQ \?ELS9
|
|
MOVE PLAYER,WHARF-ROAD-2
|
|
SET 'HERE,WHARF-ROAD-2
|
|
PRINTI """Closing time,"" says "
|
|
CALL DPRINT,MCGINTY
|
|
PRINTI " as he escorts you out to the street..."
|
|
CRLF
|
|
CRLF
|
|
CALL V-FIRST-LOOK
|
|
RTRUE
|
|
?ELS9: IN? PLAYER,OUTFITTERS-HQ \?ELS13
|
|
MOVE PLAYER,WHARF-ROAD-4
|
|
SET 'HERE,WHARF-ROAD-4
|
|
PRINTI """Sorry, but it's closing time,"" the salesman says, then shows you out..."
|
|
CRLF
|
|
CRLF
|
|
CALL V-FIRST-LOOK
|
|
RTRUE
|
|
?ELS13: IN? PLAYER,BANK \FALSE
|
|
MOVE PLAYER,SHORE-ROAD-2
|
|
SET 'HERE,SHORE-ROAD-2
|
|
PRINTI "The teller says, ""You'll have to leave. It's 5:00."" A guard escorts you out..."
|
|
CRLF
|
|
CRLF
|
|
CALL V-FIRST-LOOK
|
|
RTRUE
|
|
?ELS5: SET 'BUSINESS-HOURS?,TRUE-VALUE
|
|
CALL QUEUE,I-BUSINESS-HOURS,480
|
|
PUT STACK,0,1
|
|
RFALSE
|
|
|
|
|
|
.FUNCT I-FERRY-APPROACHING
|
|
CALL QUEUE,I-FERRY-APPROACHING,-1
|
|
PUT STACK,0,1
|
|
FCLEAR FERRY,INVISIBLE
|
|
IN? WEASEL,GLOBAL-FERRY \?CND1
|
|
MOVE WEASEL,FERRY
|
|
?CND1: EQUAL? HERE,FERRY-LANDING,SHORE-ROAD-1,SHORE-ROAD-2 \FALSE
|
|
PRINTR "The ferry approaches the landing."
|
|
|
|
|
|
.FUNCT I-FERRY,WEASEL-HERE?=0
|
|
CALL INT,I-FERRY-APPROACHING
|
|
PUT STACK,0,0
|
|
CALL QUEUE,I-FERRY-LEAVING,5
|
|
PUT STACK,0,1
|
|
CALL QUEUE,I-FERRY-GONE,8
|
|
PUT STACK,0,1
|
|
MOVE FERRY,FERRY-LANDING
|
|
IN? WEASEL,FERRY-LANDING \?ELS3
|
|
CALL QUEUED?,I-TRAITOR-MEETING
|
|
ZERO? STACK \?ELS3
|
|
SET 'WEASEL-HERE?,TRUE-VALUE
|
|
MOVE WEASEL,FERRY
|
|
JUMP ?CND1
|
|
?ELS3: IN? WEASEL,FERRY \?CND1
|
|
MOVE WEASEL,FERRY-LANDING
|
|
IN? JOHNNY,FERRY-LANDING \?ELS10
|
|
ZERO? WEASEL-BLOWN /?ELS10
|
|
CALL ROUGH-JUSTICE
|
|
JUMP ?CND1
|
|
?ELS10: EQUAL? SHIP-CHOSEN,TRAWLER \?ELS14
|
|
CALL ESTABLISH-GOAL,WEASEL,NW-CREW-QTRS
|
|
JUMP ?CND1
|
|
?ELS14: EQUAL? SHIP-CHOSEN,SALVAGER \?CND1
|
|
CALL ESTABLISH-GOAL,WEASEL,MM-CREW-QTRS
|
|
?CND1: EQUAL? HERE,FERRY-LANDING \?ELS21
|
|
PRINTI "The ferry arrives. Some passengers get off and others get on."
|
|
ZERO? WEASEL-HERE? /?ELS26
|
|
CALL TELL-FERRY-KLUDGE,STR?431
|
|
JUMP ?CND24
|
|
?ELS26: IN? WEASEL,FERRY-LANDING \?CND24
|
|
CALL QUEUED?,I-TRAITOR-MEETING
|
|
ZERO? STACK \?CND24
|
|
CALL TELL-FERRY-KLUDGE,STR?432
|
|
IN? ENVELOPE,PLAYER \?CND24
|
|
CRLF
|
|
CALL WEASEL-BEATS-YOU
|
|
?CND24: CRLF
|
|
RTRUE
|
|
?ELS21: EQUAL? HERE,SHORE-ROAD-1,SHORE-ROAD-2 \FALSE
|
|
PRINTR "The ferry arrives at the landing."
|
|
|
|
|
|
.FUNCT TELL-FERRY-KLUDGE,STR
|
|
PRINTI " The Weasel "
|
|
PRINT STR
|
|
PRINTI "."
|
|
RTRUE
|
|
|
|
|
|
.FUNCT I-FERRY-LEAVING
|
|
CALL QUEUE,I-FERRY-LEAVING,-1
|
|
PUT STACK,0,1
|
|
MOVE FERRY,LOCAL-GLOBALS
|
|
IN? WEASEL,FERRY \?CND1
|
|
IN? PASSBOOK,WEASEL \?CND1
|
|
MOVE WEASEL,LOCAL-GLOBALS
|
|
?CND1: EQUAL? HERE,FERRY-LANDING,SHORE-ROAD-1,SHORE-ROAD-2 \FALSE
|
|
PRINTR "The ferry pulls away, heading for the mainland."
|
|
|
|
|
|
.FUNCT I-FERRY-GONE
|
|
CALL INT,I-FERRY-LEAVING
|
|
PUT STACK,0,0
|
|
CALL QUEUE,I-FERRY-APPROACHING,109
|
|
PUT STACK,0,1
|
|
CALL QUEUE,I-FERRY,112
|
|
PUT STACK,0,1
|
|
FSET FERRY,INVISIBLE
|
|
IN? WEASEL,FERRY \FALSE
|
|
MOVE WEASEL,GLOBAL-FERRY
|
|
RFALSE
|
|
|
|
|
|
.FUNCT I-DISGUSTING-WEASEL-KLUDGE,WGT
|
|
IN? PASSBOOK,WEASEL /FALSE
|
|
GET GOAL-TABLES,WEASEL-C >WGT
|
|
GET WGT,GOAL-F
|
|
EQUAL? STACK,SHANTY /FALSE
|
|
PUT WGT,ATTENTION,0
|
|
CALL ESTABLISH-GOAL,WEASEL,SHANTY
|
|
RFALSE
|
|
|
|
|
|
.FUNCT I-FIRST-MEETING
|
|
EQUAL? FM-CTR,5 \?ELS5
|
|
CALL INT,I-FIRST-MEETING
|
|
PUT STACK,0,0
|
|
RFALSE
|
|
?ELS5: IN? JOHNNY,SHANTY \FALSE
|
|
IN? PETE,SHANTY \FALSE
|
|
CALL META-LOC,PLAYER
|
|
EQUAL? STACK,SHANTY \FALSE
|
|
ZERO? FM-CTR \?ELS14
|
|
GRTR? PRESENT-TIME,535 \?CND15
|
|
CALL I-PLOT-NEVER-STARTS
|
|
CALL INT,I-FIRST-MEETING
|
|
PUT STACK,0,0
|
|
RFALSE
|
|
?CND15: SET 'QCONTEXT,JOHNNY
|
|
SET 'QCONTEXT-ROOM,HERE
|
|
PRINTI """Sit down and we'll talk,"" "
|
|
CALL DPRINT,JOHNNY
|
|
PRINTR " says."
|
|
?ELS14: EQUAL? FM-CTR,1 \?ELS21
|
|
IN? WEASEL,SHANTY \?ELS26
|
|
SET 'FM-CTR,2
|
|
CALL I-FIRST-MEETING
|
|
RSTACK
|
|
?ELS26: ZERO? WAITING-FOR-WEASEL /?ELS28
|
|
GRTR? PRESENT-TIME,525 \FALSE
|
|
CALL INT,I-FIRST-MEETING
|
|
PUT STACK,0,0
|
|
CALL I-PLOT-NEVER-STARTS
|
|
SET 'QCONTEXT,JOHNNY
|
|
SET 'QCONTEXT-ROOM,HERE
|
|
PRINTI "Pete looks at Johnny and says, ""Weasel ain't gonna show.""
|
|
""Guess not,"" replies Johnny. ""Without "
|
|
CALL DPRINT,WEASEL
|
|
PRINTR ", there's no deal. Who knows what that creep is up to?"""
|
|
?ELS28: SET 'QCONTEXT,JOHNNY
|
|
SET 'QCONTEXT-ROOM,HERE
|
|
PRINTI "Johnny says, ""When "
|
|
CALL DPRINT,WEASEL
|
|
PRINTI " shows, I'll tell ya what we got."""
|
|
CRLF
|
|
SET 'WAITING-FOR-WEASEL,TRUE-VALUE
|
|
RETURN WAITING-FOR-WEASEL
|
|
?ELS21: GRTR? BLOOD-ALCOHOL,10 \?ELS42
|
|
CALL INT,I-FIRST-MEETING
|
|
PUT STACK,0,0
|
|
CALL I-PLOT-NEVER-STARTS
|
|
PRINTR "Pete turns to Johnny and says, ""This joker's drunk!""
|
|
""Yeah,"" Johnny says. He looks at you. ""Some diver! We'll find someone else."""
|
|
?ELS42: EQUAL? FM-CTR,2 \?ELS46
|
|
SET 'QCONTEXT,JOHNNY
|
|
SET 'QCONTEXT-ROOM,HERE
|
|
PRINTI "At Pete's request, "
|
|
CALL DPRINT,WEASEL
|
|
PRINTI " joins you. Johnny then whispers that he's come across some sunken "
|
|
CALL DPRINT,GLOBAL-TREASURE
|
|
PRINTI "."
|
|
CRLF
|
|
SET 'FM-CTR,3
|
|
SET 'I-WAIT-RTN,I-FIRST-MEETING
|
|
SET 'I-WAIT-DURATION,2
|
|
RETURN I-WAIT-DURATION
|
|
?ELS46: EQUAL? FM-CTR,3 \?ELS50
|
|
ZERO? I-WAIT-FLAG /?ELS55
|
|
PRINTI "Unfortunately, this interrupts Johnny's explanation of what the meeting is about."
|
|
CRLF
|
|
SET 'I-WAIT-DURATION,2
|
|
RETURN I-WAIT-DURATION
|
|
?ELS55: GRTR? I-WAIT-DURATION,0 \?ELS60
|
|
EQUAL? I-WAIT-RTN,I-FIRST-MEETING /FALSE
|
|
?ELS60: SET 'QCONTEXT,JOHNNY
|
|
SET 'QCONTEXT-ROOM,HERE
|
|
PRINTI "Johnny explains that they need more money to get started. They chose you because they know you've salted some money away and you're a great diver. He asks if you're interested in the deal."
|
|
CRLF
|
|
SET 'FM-CTR,4
|
|
RETURN FM-CTR
|
|
?ELS50: EQUAL? FM-CTR,4 \FALSE
|
|
GRTR? PRESENT-TIME,539 \?ELS73
|
|
EQUAL? PRSA,V?NO,V?YES /?ELS73
|
|
SET 'QCONTEXT,JOHNNY
|
|
SET 'QCONTEXT-ROOM,HERE
|
|
CALL I-PLOT-NEVER-STARTS
|
|
PRINTR "Pete turns to Johnny. ""We don't want anyone who can't decide.""
|
|
""Right,"" says Johnny. ""We'll find someone else."" He turns to you. ""Say a word about this and you're history!"""
|
|
?ELS73: SET 'QCONTEXT,JOHNNY
|
|
SET 'QCONTEXT-ROOM,HERE
|
|
PRINTR """Well, what is it? Yes or no?"" Pete asks anxiously."
|
|
|
|
|
|
.FUNCT SAMPLE-TREASURE-F
|
|
EQUAL? PRSA,V?TAKE /?THN6
|
|
EQUAL? PRSA,V?ASK-FOR \?ELS5
|
|
EQUAL? PRSO,JOHNNY \?ELS5
|
|
?THN6: IN? MCGINTY,HERE \?ELS14
|
|
CALL PERFORM,V?TELL,MCGINTY,SAMPLE-TREASURE
|
|
RTRUE
|
|
?ELS14: PRINTR "Red pulls it back. ""If we get the loot, there'll be plenty for all."""
|
|
?ELS5: EQUAL? PRSA,V?TURN \FALSE
|
|
CALL DPRINT,JOHNNY
|
|
PRINTR " has it."
|
|
|
|
|
|
.FUNCT I-SECOND-MEETING
|
|
GRTR? PRESENT-TIME,585 \?CND1
|
|
LESS? SM-CTR,2 /?THN6
|
|
GRTR? HOW-HUNGRY,3 \?CND1
|
|
?THN6: CALL ALL-GO-HOME
|
|
CALL I-PLOT-NEVER-STARTS
|
|
SET 'SM-CTR,4
|
|
?CND1: EQUAL? SM-CTR,4 \?ELS12
|
|
CALL INT,I-SECOND-MEETING
|
|
PUT STACK,0,0
|
|
RTRUE
|
|
?ELS12: EQUAL? HERE,WINDING-ROAD-1 /?ELS14
|
|
CALL INT,I-SECOND-MEETING
|
|
PUT STACK,0,0
|
|
RTRUE
|
|
?ELS14: GRTR? SM-CTR,1 \?ELS16
|
|
IN? MCGINTY,WINDING-ROAD-1 /?THN19
|
|
IN? MCGINTY,WINDING-ROAD-2 \?ELS16
|
|
?THN19: CALL JIGS-UP,STR?435
|
|
RSTACK
|
|
?ELS16: LESS? SM-CTR,2 \?ELS22
|
|
IN? WEASEL,WINDING-ROAD-1 \?ELS27
|
|
IN? JOHNNY,WINDING-ROAD-1 \?ELS27
|
|
IN? PETE,WINDING-ROAD-1 \?ELS27
|
|
SET 'SM-CTR,2
|
|
CALL I-SECOND-MEETING
|
|
RTRUE
|
|
?ELS27: ZERO? SM-CTR \FALSE
|
|
IN? JOHNNY,WINDING-ROAD-1 \FALSE
|
|
SET 'SM-CTR,1
|
|
SET 'QCONTEXT,JOHNNY
|
|
SET 'QCONTEXT-ROOM,HERE
|
|
PRINTR "Johnny says, ""We'll start when everyone's here."""
|
|
?ELS22: GRTR? BLOOD-ALCOHOL,10 \?ELS40
|
|
SET 'SM-CTR,4
|
|
CALL INT,I-SECOND-MEETING
|
|
PUT STACK,0,0
|
|
SET 'QCONTEXT,JOHNNY
|
|
SET 'QCONTEXT-ROOM,HERE
|
|
CALL ALL-GO-HOME
|
|
CALL I-PLOT-NEVER-STARTS
|
|
PRINTI """I won't risk everything on a drunk diver!"" "
|
|
CALL DPRINT,WEASEL
|
|
PRINTR " says.
|
|
""You're right,"" says Johnny. ""We're calling this off."""
|
|
?ELS40: EQUAL? SM-CTR,2 \?ELS44
|
|
RANDOM 2 >WRECK-FOUND
|
|
EQUAL? WRECK-FOUND,1 \?ELS47
|
|
SET 'SAMPLE-TREASURE,GOLD-COIN
|
|
JUMP ?CND45
|
|
?ELS47: SET 'SAMPLE-TREASURE,DINNER-PLATE
|
|
?CND45: PUTP SAMPLE-TREASURE,P?ACTION,SAMPLE-TREASURE-F
|
|
MOVE SAMPLE-TREASURE,JOHNNY
|
|
SET 'P-IT-OBJECT,SAMPLE-TREASURE
|
|
SET 'SM-CTR,3
|
|
SET 'I-WAIT-DURATION,6
|
|
SET 'I-WAIT-RTN,I-SECOND-MEETING
|
|
SET 'QCONTEXT,JOHNNY
|
|
SET 'QCONTEXT-ROOM,HERE
|
|
PRINTI "Johnny nods, then pulls out "
|
|
CALL APRINT,SAMPLE-TREASURE
|
|
PRINTR " he says he came across while on a shark hunt."
|
|
?ELS44: EQUAL? SM-CTR,3 \FALSE
|
|
ZERO? I-WAIT-FLAG /?ELS58
|
|
PRINTI "This interrupts Johnny's explanation, which makes him angry."
|
|
CRLF
|
|
SET 'I-WAIT-DURATION,6
|
|
RETURN I-WAIT-DURATION
|
|
?ELS58: GRTR? I-WAIT-DURATION,0 \?ELS63
|
|
EQUAL? I-WAIT-RTN,I-SECOND-MEETING /FALSE
|
|
?ELS63: CALL INT,I-SECOND-MEETING
|
|
PUT STACK,0,0
|
|
SUB 705,PRESENT-TIME
|
|
CALL QUEUE,I-OTHERS-MEET,STACK
|
|
PUT STACK,0,1
|
|
SET 'SM-CTR,4
|
|
SET 'MEETINGS-COMPLETED,2
|
|
PUT MOVEMENT-GOALS,JOHNNY-C,JOHNNY-CONTINUES-TABLE
|
|
CALL IMOVEMENT,JOHNNY,I-JOHNNY
|
|
CALL RATING-UPD,20
|
|
SET 'QCONTEXT,JOHNNY
|
|
SET 'QCONTEXT-ROOM,HERE
|
|
CRLF
|
|
PRINTI """We're not sure which wreck to salvage,"" Johnny says. ""Since you're joining up, we're hoping you'll identify where the "
|
|
CALL DPRINT,SAMPLE-TREASURE
|
|
PRINTI " came from, and then do the dive for us. I'll captain, Pete will cook, and "
|
|
CALL DPRINT,WEASEL
|
|
PRINTI " will crew.
|
|
|
|
Johnny winks at you. ""We'll need you to supply the minutes of longitude and latitude of the wreck. Get $500 and meet me at Point Lookout at 10:45. Then we'll provision the boat.""
|
|
|
|
He turns to the others. ""We'll meet in "
|
|
CALL DPRINT,SHANTY
|
|
PRINTR " at 11:45 to discuss final arrangements.
|
|
|
|
""We're all in this now,"" Johnny says to the group. ""I'm not gonna chance this operation if one of you doesn't show. We need everyone to pull this off. If anyone tries anything stupid, you won't live to regret it."""
|
|
|
|
|
|
.FUNCT I-THIRD-MEETING,JMG
|
|
EQUAL? HERE,POINT-LOOKOUT /?ELS3
|
|
CALL INT,I-THIRD-MEETING
|
|
PUT STACK,0,0
|
|
RFALSE
|
|
?ELS3: IN? JOHNNY,POINT-LOOKOUT \FALSE
|
|
LESS? TM-CTR,6 \?CND1
|
|
INC 'TM-CTR
|
|
?CND1: IN? MCGINTY,POINT-LOOKOUT \?ELS15
|
|
CALL JIGS-UP,STR?436
|
|
RSTACK
|
|
?ELS15: IN? MCGINTY,OCEAN-ROAD-3 \?ELS17
|
|
CALL IN-MOTION?,MCGINTY
|
|
ZERO? STACK \?ELS17
|
|
CALL JIGS-UP,STR?437
|
|
RSTACK
|
|
?ELS17: EQUAL? TM-CTR,1 \?ELS21
|
|
SET 'QCONTEXT,JOHNNY
|
|
SET 'QCONTEXT-ROOM,HERE
|
|
PRINTR "Johnny turns toward you. ""Well? Did you bring the money?"""
|
|
?ELS21: GRTR? BLOOD-ALCOHOL,10 \?ELS25
|
|
CALL JIGS-UP,STR?438
|
|
RSTACK
|
|
?ELS25: EQUAL? TM-CTR,4 \?ELS27
|
|
PRINTR "Johnny glares at you as if you were a sea slug."
|
|
?ELS27: EQUAL? TM-CTR,5 \?ELS31
|
|
CALL JIGS-UP,STR?439
|
|
RSTACK
|
|
?ELS31: EQUAL? TM-CTR,6 \?ELS33
|
|
SET 'TM-CTR,7
|
|
CALL RATING-UPD,20
|
|
SET 'QCONTEXT,JOHNNY
|
|
SET 'QCONTEXT-ROOM,HERE
|
|
CRLF
|
|
PRINTI """Glad you're with us. Since you're okay, I'll level with you. Before Hevlin died, he told me he gave you the book. He also said you could handle this job. He's the one who gave me the "
|
|
CALL DPRINT,SAMPLE-TREASURE
|
|
PRINTI ". I didn't want to say anything in front of Pete and "
|
|
CALL DPRINT,WEASEL
|
|
PRINTI " just in case.
|
|
|
|
""We're gonna need a boat, but I don't know which one. If you need deep-sea diving gear, it'll have to be the "
|
|
CALL DPRINT,SALVAGER
|
|
PRINTI ". Is the "
|
|
CALL DPRINT,GLOBAL-TREASURE
|
|
PRINTR " more than 200 feet deep?"""
|
|
?ELS33: EQUAL? TM-CTR,7 \?ELS37
|
|
GRTR? PRESENT-TIME,675 \?CND38
|
|
CALL JIGS-UP,STR?440
|
|
?CND38: SET 'QCONTEXT,JOHNNY
|
|
SET 'QCONTEXT-ROOM,HERE
|
|
PRINTR "Johnny looks impatient. ""Don't confuse things. A yes or no will do."""
|
|
?ELS37: EQUAL? TM-CTR,8 \FALSE
|
|
CALL ESTABLISH-GOAL,JOHNNY,OUTFITTERS-HQ
|
|
PUT MOVEMENT-GOALS,JOHNNY-C,JOHNNY-COMPLETES-TABLE
|
|
GET MOVEMENT-GOALS,JOHNNY-C >JMG
|
|
SUB 838,PRESENT-TIME
|
|
PUT JMG,MG-TIME,STACK
|
|
CALL IMOVEMENT,JOHNNY,I-JOHNNY
|
|
CALL INT,I-THIRD-MEETING
|
|
PUT STACK,0,0
|
|
SET 'MEETINGS-COMPLETED,3
|
|
PRINTI """We'll rent the "
|
|
CALL DPRINT,SHIP-CHOSEN
|
|
PRINTR ". Let's go get what we need."""
|
|
|
|
|
|
.FUNCT I-EQUIP,MCG-GT,V=0
|
|
IN? PLAYER,OUTFITTERS-HQ \?ELS5
|
|
IN? MCGINTY,OUTFITTERS-HQ \?ELS10
|
|
INC 'WARNING-CTR
|
|
EQUAL? WARNING-CTR,7 \?CND11
|
|
PRINTI "Johnny leans over and whispers, ""Let's wait out McGinty. He should leave soon."""
|
|
CRLF
|
|
SET 'V,TRUE-VALUE
|
|
?CND11: GRTR? I-WAIT-DURATION,0 \?ELS20
|
|
SET 'I-WAIT-DURATION,0
|
|
SET 'I-WAIT-RTN,FALSE-VALUE
|
|
PRINTI "Johnny ends his conversation, and "
|
|
CALL DPRINT,MCGINTY
|
|
PRINTR " asks the salesman some questions."
|
|
?ELS20: GET GOAL-TABLES,MCGINTY-C >MCG-GT
|
|
GET MCG-GT,GOAL-ENABLE
|
|
ZERO? STACK /?ELS24
|
|
GET MCG-GT,GOAL-F
|
|
EQUAL? STACK,MCGINTY-HQ \?ELS24
|
|
ZERO? MCGINTY-KNOWS \?CND27
|
|
SET 'MCGINTY-MEETS-WEASEL,TRUE-VALUE
|
|
?CND27: SET 'I-WAIT-DURATION,9
|
|
SET 'I-WAIT-RTN,I-EQUIP
|
|
RFALSE
|
|
?ELS24: EQUAL? PRSA,V?RENT,V?BUY \?ELS31
|
|
EQUAL? PRSO,FERRY-TOKEN /?ELS31
|
|
SET 'MCGINTY-KNOWS,TRUE-VALUE
|
|
CALL INT,I-MCGINTY-FOLLOWS
|
|
PUT STACK,0,0
|
|
CALL INT,I-EQUIP
|
|
PUT STACK,0,0
|
|
MOVE MCGINTY,WHARF-ROAD-4
|
|
CALL ESTABLISH-GOAL,MCGINTY,MCGINTY-HQ
|
|
CALL DPRINT,MCGINTY
|
|
PRINTI " grins as he realizes what you're up to."
|
|
CALL SAY-MCGINTY-KNOWS
|
|
RSTACK
|
|
?ELS31: GRTR? PRESENT-TIME,699 \?ELS37
|
|
IN? JOHNNY,OUTFITTERS-HQ \?ELS42
|
|
CALL ESTABLISH-GOAL,JOHNNY,SHANTY
|
|
PRINTI "Johnny glares at "
|
|
CALL DPRINT,MCGINTY
|
|
PRINTR " and then at his watch. ""There's no way."" He turns to you. ""Forget it. We can't get this done in time."""
|
|
?ELS42: CALL INT,I-MCGINTY-FOLLOWS
|
|
PUT STACK,0,0
|
|
CALL ESTABLISH-GOAL,MCGINTY,MCGINTY-HQ
|
|
CALL INT,I-EQUIP
|
|
PUT STACK,0,0
|
|
CALL DPRINT,MCGINTY
|
|
PRINTR " turns to the salesman. ""I think... yeah! I will need that boat after all."" He turns to you and grins."
|
|
?ELS37: EQUAL? PRSA,V?WAIT-FOR,V?WAIT /?ELS50
|
|
EQUAL? PRSA,V?WALK,V?LOOK /?ELS50
|
|
PRINTI "Johnny glances nervously at "
|
|
CALL DPRINT,MCGINTY
|
|
PRINTR "."
|
|
?ELS50: RETURN V
|
|
?ELS10: ZERO? MCGINTY-KNOWS /?ELS58
|
|
CALL INT,I-EQUIP
|
|
PUT STACK,0,0
|
|
RFALSE
|
|
?ELS58: ZERO? I-WAIT-FLAG /?ELS61
|
|
PRINTI "Johnny seems unhappy to have his conversation interrupted."
|
|
CRLF
|
|
SET 'I-WAIT-DURATION,9
|
|
RETURN I-WAIT-DURATION
|
|
?ELS61: EQUAL? I-WAIT-RTN,I-EQUIP \?ELS66
|
|
GRTR? I-WAIT-DURATION,0 /FALSE
|
|
CALL ESTABLISH-GOAL,JOHNNY,SHANTY
|
|
SUB 870,PRESENT-TIME
|
|
CALL QUEUE,I-SHOVE-OFF,STACK
|
|
PUT STACK,0,1
|
|
CALL INT,I-EQUIP
|
|
PUT STACK,0,0
|
|
EQUAL? SHIP-CHOSEN,TRAWLER \?ELS76
|
|
RANDOM 50
|
|
ADD 50,STACK >AMT-OWED
|
|
JUMP ?CND74
|
|
?ELS76: RANDOM 50
|
|
ADD 400,STACK >AMT-OWED
|
|
?CND74: SET 'JOHNNY-MADE-DEAL,TRUE-VALUE
|
|
CALL RATING-UPD,20
|
|
PRINTI "Johnny hands him a list and the salesman quotes a price. Johnny gives him the money he has, then says to you, ""You'll need to chip in $"
|
|
PRINTN AMT-OWED
|
|
PRINTI " plus the money for your stuff. We'll leave on the "
|
|
CALL DPRINT,SHIP-CHOSEN
|
|
PRINTI " at high tide.""
|
|
|
|
He tells the "
|
|
CALL DPRINT,SPEAR-CARRIER
|
|
PRINTR ", ""Deliver the stuff half an hour before high tide."" He turns back to you. ""Better be on board then to watch the stuff."""
|
|
?ELS66: IN? MCGINTY,WHARF-ROAD-4 /FALSE
|
|
SET 'I-WAIT-DURATION,9
|
|
SET 'I-WAIT-RTN,I-EQUIP
|
|
RFALSE
|
|
?ELS5: SET 'I-WAIT-DURATION,0
|
|
CALL INT,I-EQUIP
|
|
GET STACK,C-TICK
|
|
LESS? STACK,-15 \FALSE
|
|
CALL INT,I-EQUIP
|
|
PUT STACK,0,0
|
|
IN? JOHNNY,OUTFITTERS-HQ \?CND90
|
|
CALL ESTABLISH-GOAL,JOHNNY,SHANTY
|
|
?CND90: CALL I-PLOT-NEVER-STARTS
|
|
RFALSE
|
|
|
|
|
|
.FUNCT TELL-NEED-BOAT
|
|
PRINTR " ""We will need that boat after all,"" he says to the salesman as he leaves."
|
|
|
|
|
|
.FUNCT SAY-MCGINTY-KNOWS
|
|
CALL TELL-NEED-BOAT
|
|
MOVE JOHNNY,WHARF-ROAD-3
|
|
CALL ZERO-ATTENTION,JOHNNY
|
|
CALL ESTABLISH-GOAL,JOHNNY,SHANTY
|
|
CRLF
|
|
PRINTR "Johnny glares at you. ""That was stupid! Now he's stopped us from renting the boat we need."" He storms out. You can't help feeling fortunate that someone else happened to be here."
|
|
|
|
|
|
.FUNCT I-OTHERS-MEET,V=1
|
|
GRTR? PRESENT-TIME,720 \?ELS3
|
|
CALL INT,I-OTHERS-MEET
|
|
PUT STACK,0,0
|
|
CALL I-PLOT-NEVER-STARTS
|
|
IN? PLAYER,CHAIR \?ELS6
|
|
PRINTI "Johnny tells Pete the deal's off."
|
|
CRLF
|
|
RETURN V
|
|
?ELS6: IN? PLAYER,SHANTY \?ELS10
|
|
PRINTI "Johnny says something to Pete."
|
|
CRLF
|
|
RETURN V
|
|
?ELS10: SET 'V,FALSE-VALUE
|
|
RETURN V
|
|
?ELS3: IN? JOHNNY,SHANTY \?THN17
|
|
IN? PETE,SHANTY \?THN17
|
|
IN? WEASEL,SHANTY /?ELS16
|
|
?THN17: CALL QUEUE,I-OTHERS-MEET,1
|
|
PUT STACK,0,1
|
|
RFALSE
|
|
?ELS16: ZERO? JOHNNY-MADE-DEAL \?CND1
|
|
CALL I-PLOT-NEVER-STARTS
|
|
?CND1: IN? PLAYER,CHAIR \?ELS25
|
|
PRINTI "Johnny tells Pete and "
|
|
CALL DPRINT,WEASEL
|
|
PRINTI " the deal's "
|
|
ZERO? JOHNNY-MADE-DEAL /?ELS30
|
|
PRINTI "on and to be at the "
|
|
CALL DPRINT,SHIP-CHOSEN
|
|
PRINTI " at 2:30"
|
|
JUMP ?CND28
|
|
?ELS30: PRINTI "off"
|
|
?CND28: PRINTR "."
|
|
?ELS25: IN? PLAYER,SHANTY \FALSE
|
|
PRINTI "Johnny, Pete, and "
|
|
CALL DPRINT,WEASEL
|
|
PRINTR " are talking at a corner table."
|
|
|
|
|
|
.FUNCT I-TRAITOR-MEETING,FERRY-HERE=0
|
|
IN? WEASEL,FERRY /?THN6
|
|
ZERO? MCGINTY-KNOWS \?THN6
|
|
IN? MCGINTY,FERRY-LANDING /?ELS5
|
|
?THN6: CALL INT,I-TRAITOR-MEETING
|
|
PUT STACK,0,0
|
|
RFALSE
|
|
?ELS5: IN? WEASEL,FERRY-LANDING \FALSE
|
|
IN? ID-CARD,WEASEL \?ELS11
|
|
IN? PASSBOOK,WEASEL \?ELS16
|
|
IN? FERRY,FERRY-LANDING \?CND17
|
|
MOVE WEASEL,FERRY
|
|
SET 'FERRY-HERE,TRUE-VALUE
|
|
?CND17: CALL INT,I-TRAITOR-MEETING
|
|
PUT STACK,0,0
|
|
IN? PLAYER,FERRY-LANDING \FALSE
|
|
CALL TELL-CORNER,FERRY-HERE,STR?441
|
|
RSTACK
|
|
?ELS16: MOVE ID-CARD,MCGINTY
|
|
IN? FERRY,FERRY-LANDING \?CND27
|
|
MOVE WEASEL,FERRY
|
|
SET 'FERRY-HERE,TRUE-VALUE
|
|
?CND27: CALL INT,I-TRAITOR-MEETING
|
|
PUT STACK,0,0
|
|
IN? PLAYER,FERRY-LANDING \FALSE
|
|
CALL TELL-CORNER,FERRY-HERE,STR?442
|
|
RSTACK
|
|
?ELS11: MOVE ID-CARD,WEASEL
|
|
SET 'MCGINTY-MEETS-WEASEL,FALSE-VALUE
|
|
IN? PLAYER,FERRY-LANDING \FALSE
|
|
CALL DPRINT,MCGINTY
|
|
PRINTI " takes "
|
|
CALL DPRINT,WEASEL
|
|
PRINTR " to a corner of the landing, where they talk."
|
|
|
|
|
|
.FUNCT TELL-CORNER,FERRY-HERE,STR
|
|
CALL DPRINT,MCGINTY
|
|
PRINTI " and "
|
|
CALL DPRINT,WEASEL
|
|
PRINTI " are talking in a corner. The Weasel "
|
|
PRINT STR
|
|
PRINTI " and "
|
|
ZERO? FERRY-HERE /?ELS5
|
|
PRINTI "then boards the ferry"
|
|
JUMP ?CND3
|
|
?ELS5: PRINTI "they separate"
|
|
?CND3: PRINTR "."
|
|
|
|
|
|
.FUNCT I-SHOVE-OFF,L,?TMP1
|
|
CALL ENABLED?,I-JOHNNY
|
|
ZERO? STACK /FALSE
|
|
CALL META-LOC,PLAYER
|
|
GETP STACK,P?LINE >?TMP1
|
|
GETP SHIP-CHOSEN,P?LINE
|
|
EQUAL? ?TMP1,STACK \?ELS7
|
|
GRTR? PRESENT-TIME,930 \?ELS10
|
|
ZERO? LATITUDE-SET \?ELS10
|
|
ZERO? LONGITUDE-SET \?ELS10
|
|
CALL ALL-GO-HOME
|
|
RFALSE
|
|
?ELS10: CALL META-LOC,PLAYER
|
|
IN? JOHNNY,STACK \?ELS14
|
|
CALL DPRINT,JOHNNY
|
|
PRINTI " turns to"
|
|
JUMP ?CND8
|
|
?ELS14: LOC JOHNNY >L
|
|
CALL META-LOC,PLAYER
|
|
MOVE JOHNNY,STACK
|
|
CALL ESTABLISH-GOAL,JOHNNY,L
|
|
CALL DPRINT,JOHNNY
|
|
PRINTI " walks up behind"
|
|
?CND8: PRINTI " you and says, """
|
|
ZERO? DELIVERY-MADE \?ELS25
|
|
PRINTI "We're gonna have to forget it. Outfitters never delivered the stuff."
|
|
CRLF
|
|
CALL ALL-GO-HOME
|
|
RTRUE
|
|
?ELS25: EQUAL? 0,LATITUDE-SET,LONGITUDE-SET \?ELS29
|
|
PRINTI "If we're gonna go, you have to tell me the minutes of "
|
|
ZERO? LATITUDE-SET \?CND32
|
|
PRINTI "latitude"
|
|
ZERO? LONGITUDE-SET \?CND32
|
|
PRINTI " and "
|
|
?CND32: ZERO? LONGITUDE-SET \?CND42
|
|
PRINTI "longitude"
|
|
?CND42: PRINTI "."""
|
|
CRLF
|
|
CALL GRAB-ATTENTION,JOHNNY
|
|
RANDOM 10
|
|
ADD 30,STACK
|
|
CALL QUEUE,I-SHOVE-OFF,STACK
|
|
PUT STACK,0,1
|
|
RTRUE
|
|
?ELS29: PRINTI "We'll be leaving shortly. Get some sleep."""
|
|
CRLF
|
|
?CND23: EQUAL? SHIP-CHOSEN,SALVAGER \?ELS55
|
|
CALL ESTABLISH-GOAL,JOHNNY,MM-WHEELHOUSE
|
|
JUMP ?CND53
|
|
?ELS55: CALL ESTABLISH-GOAL,JOHNNY,NW-WHEELHOUSE
|
|
?CND53: LOC WEASEL
|
|
EQUAL? STACK,FERRY,GLOBAL-FERRY,LOCAL-GLOBALS /?CND58
|
|
LOC DECK-CHAIR
|
|
CALL ESTABLISH-GOAL,WEASEL,STACK
|
|
?CND58: ZERO? AMT-OWED \FALSE
|
|
CALL QUEUE,I-BOAT-TRIP,10
|
|
PUT STACK,0,1
|
|
RFALSE
|
|
?ELS7: GRTR? PRESENT-TIME,900 \?ELS67
|
|
CALL ALL-GO-HOME
|
|
RFALSE
|
|
?ELS67: RANDOM 10
|
|
ADD 30,STACK
|
|
CALL QUEUE,I-SHOVE-OFF,STACK
|
|
PUT STACK,0,1
|
|
RFALSE
|
|
|
|
|
|
.FUNCT ALL-GO-HOME
|
|
CALL ESTABLISH-GOAL,PETE,SHANTY
|
|
IN? WEASEL,FERRY /?CND1
|
|
IN? WEASEL,GLOBAL-FERRY /?CND1
|
|
IN? WEASEL,LOCAL-GLOBALS /?CND1
|
|
CALL ESTABLISH-GOAL,WEASEL,SHANTY
|
|
?CND1: SET 'JOHNNY-SILENT,TRUE-VALUE
|
|
CALL ESTABLISH-GOAL,JOHNNY,SHANTY
|
|
RSTACK
|
|
|
|
|
|
.FUNCT I-BOAT-TRIP,BOAT,OT,EXCESS,?TMP1
|
|
ZERO? ASLEEP \FALSE
|
|
CALL META-LOC,PLAYER
|
|
GETP STACK,P?LINE >?TMP1
|
|
GETP SHIP-CHOSEN,P?LINE >BOAT
|
|
EQUAL? ?TMP1,BOAT \FALSE
|
|
LOC WEASEL
|
|
GETP STACK,P?LINE
|
|
EQUAL? STACK,BOAT /?ELS11
|
|
CALL TELL-COMES-UP,JOHNNY
|
|
PRINTI """The Weasel's not on board. The deal's off."""
|
|
CRLF
|
|
CALL FINISH
|
|
JUMP ?CND9
|
|
?ELS11: LOC MCGINTY
|
|
GETP STACK,P?LINE
|
|
EQUAL? STACK,BOAT \?ELS15
|
|
CALL TELL-COMES-UP,WEASEL
|
|
CALL JIGS-UP,STR?443
|
|
JUMP ?CND9
|
|
?ELS15: IN? ENVELOPE,JOHNNY \?CND9
|
|
LOC WEASEL
|
|
MOVE JOHNNY,STACK
|
|
CALL ROUGH-JUSTICE
|
|
?CND9: CALL INT,I-MCGINTY-FOLLOWS
|
|
PUT STACK,0,0
|
|
SET 'SOUPS-ON,TRUE-VALUE
|
|
CALL RATING-UPD,20
|
|
EQUAL? LATITUDE-SET,20 \?CND18
|
|
EQUAL? LONGITUDE-SET,25 \?CND18
|
|
CALL TELL-COMES-UP,JOHNNY
|
|
CALL JIGS-UP,STR?444
|
|
?CND18: CALL META-LOC,PLAYER
|
|
EQUAL? STACK,MM-GALLEY,NW-GALLEY \?CND23
|
|
PRINTI "Pete announces that the stew is ready."
|
|
CRLF
|
|
?CND23: EQUAL? SHIP-CHOSEN,TRAWLER \?ELS30
|
|
SET 'TRAWLER-DOCKED,FALSE-VALUE
|
|
JUMP ?CND28
|
|
?ELS30: SET 'SALVAGER-DOCKED,FALSE-VALUE
|
|
?CND28: SET 'AT-SEA,TRUE-VALUE
|
|
IN? PLAYER,DECK-CHAIR \?CND33
|
|
LOC DECK-CHAIR
|
|
MOVE PLAYER,STACK
|
|
?CND33: LOC PLAYER
|
|
CALL GLOBAL-IN?,RAILING,STACK
|
|
ZERO? STACK /?ELS38
|
|
PRINTI "As the engines roar to life, you go to the "
|
|
CALL DPRINT,RAILING
|
|
PRINTI " to watch the shoreline recede."
|
|
LOC PLAYER
|
|
IN? DECK-CHAIR,STACK \?CND41
|
|
CALL TELL-FERRY-KLUDGE,STR?445
|
|
?CND41: PRINTI " As the boat leaves the wharf, y"
|
|
JUMP ?CND36
|
|
?ELS38: PRINTI "The boat begins to move through the waves. Y"
|
|
?CND36: PRINTI "ou feel the thrill of being out to sea once again."
|
|
CRLF
|
|
CRLF
|
|
IN? PLAYER,BUNK /?CND52
|
|
PRINTI "You "
|
|
LOC BUNK
|
|
IN? PLAYER,STACK /?CND57
|
|
LOC BUNK >HERE
|
|
CALL MOVE-SHARED-OBJECTS,HERE
|
|
IN? AIR-HOSE,DEEP-SUIT \?CND60
|
|
MOVE AIR-HOSE,MM-COMPRESSOR
|
|
PRINTI "disconnect the "
|
|
CALL DPRINT,AIR-HOSE
|
|
PRINTI ", "
|
|
?CND60: PRINTI "go to the crew's quarters and "
|
|
?CND57: MOVE PLAYER,BUNK
|
|
PRINTI "climb into your bunk"
|
|
CALL STRIP-EQUIPMENT
|
|
PRINTI ". "
|
|
CRLF
|
|
?CND52: PRINTI "In no time, the rhythm of the ocean lulls you to sleep..."
|
|
CRLF
|
|
CRLF
|
|
MOVE PETE,DECK-CHAIR
|
|
MOVE JOHNNY,HERE
|
|
EQUAL? SHIP-CHOSEN,SALVAGER \?ELS75
|
|
MOVE WEASEL,MM-AFT-DECK
|
|
JUMP ?CND73
|
|
?ELS75: MOVE WEASEL,NW-AFT-DECK
|
|
?CND73: CALL META-LOC,ENVELOPE
|
|
GETP STACK,P?LINE
|
|
EQUAL? STACK,BOAT \?CND78
|
|
IN? ENVELOPE,UNDER-BUNK /?CND78
|
|
MOVE ENVELOPE,WEASEL
|
|
?CND78: SET 'OT,PRESENT-TIME
|
|
RANDOM 15
|
|
ADD 345,STACK >PRESENT-TIME
|
|
ADD PRESENT-TIME,1440
|
|
SUB STACK,OT >EXCESS
|
|
CALL INTERRUPT-CHECK,EXCESS
|
|
ZERO? WATCH-WOUND /?CND83
|
|
MOD EXCESS,60
|
|
ADD WATCH-MOVES,STACK >WATCH-MOVES
|
|
GRTR? WATCH-MOVES,59 \?CND87
|
|
SUB WATCH-MOVES,60 >WATCH-MOVES
|
|
INC 'WATCH-SCORE
|
|
?CND87: DIV EXCESS,60
|
|
ADD WATCH-SCORE,STACK >WATCH-SCORE
|
|
?PRG90: GRTR? WATCH-SCORE,11 \?REP91
|
|
SUB WATCH-SCORE,12 >WATCH-SCORE
|
|
JUMP ?PRG90
|
|
?REP91:
|
|
?CND83: CALL WATCH-UPDATE
|
|
EQUAL? LATITUDE-SET,40 \?ELS99
|
|
EQUAL? LONGITUDE-SET,45 \?ELS99
|
|
SET 'WRECK-CHOSEN,1
|
|
SET 'OCEAN-BOTTOM,400
|
|
JUMP ?CND97
|
|
?ELS99: EQUAL? LATITUDE-SET,25 \?ELS103
|
|
EQUAL? LONGITUDE-SET,25 \?ELS103
|
|
SET 'WRECK-CHOSEN,2
|
|
SET 'OCEAN-BOTTOM,150
|
|
JUMP ?CND97
|
|
?ELS103: EQUAL? LATITUDE-SET,15 \?ELS107
|
|
EQUAL? LONGITUDE-SET,50 \?ELS107
|
|
SET 'WRECK-CHOSEN,3
|
|
SET 'OCEAN-BOTTOM,350
|
|
JUMP ?CND97
|
|
?ELS107: CALL OCEAN-BOTTOM-FCN >OCEAN-BOTTOM
|
|
ZERO? OCEAN-BOTTOM \?CND97
|
|
CALL JIGS-UP,STR?446
|
|
?CND97: SET 'HOW-TIRED,1
|
|
LESS? HOW-HUNGRY,2 \?CND112
|
|
SET 'HOW-HUNGRY,1
|
|
?CND112: LESS? HOW-THIRSTY,2 \?CND115
|
|
SET 'HOW-THIRSTY,1
|
|
?CND115: CALL QUEUE,I-HUNGER,10
|
|
PUT STACK,0,1
|
|
CALL QUEUE,I-THIRST,15
|
|
PUT STACK,0,1
|
|
CALL QUEUE,I-TIRED,869
|
|
PUT STACK,0,1
|
|
SUB 720,PRESENT-TIME
|
|
CALL QUEUE,I-ENDIT,STACK
|
|
PUT STACK,0,1
|
|
CALL DPRINT,JOHNNY
|
|
PRINTI " shakes your shoulder and wakes you. "
|
|
EQUAL? SHIP-CHOSEN,TRAWLER \?ELS122
|
|
CALL ESTABLISH-GOAL,JOHNNY,NW-CAPT-CABIN
|
|
JUMP ?CND120
|
|
?ELS122: CALL ESTABLISH-GOAL,JOHNNY,MM-CAPT-CABIN
|
|
?CND120: CALL INT,I-BOAT-TRIP
|
|
PUT STACK,0,0
|
|
PRINTR """We've arrived. You're up as soon as you're ready."""
|
|
|
|
|
|
.FUNCT STRIP-EQUIPMENT,F,N,V=0
|
|
FIRST? PLAYER >F /?KLU17
|
|
?KLU17:
|
|
?PRG1: ZERO? F \?CND3
|
|
JUMP ?REP2
|
|
?CND3: NEXT? F >N /?KLU18
|
|
?KLU18: EQUAL? F,WATCH /?CND6
|
|
LOC BUNK
|
|
MOVE F,STACK
|
|
FCLEAR F,WORNBIT
|
|
SET 'V,TRUE-VALUE
|
|
?CND6: SET 'F,N
|
|
JUMP ?PRG1
|
|
?REP2: ZERO? V /FALSE
|
|
PRINTI ", dropping your equipment"
|
|
RTRUE
|
|
|
|
|
|
.FUNCT INTERRUPT-CHECK,DUR,C,E,TICK,FOO,R
|
|
ADD C-TABLE,C-INTS >C
|
|
ADD C-TABLE,C-TABLELEN >E
|
|
SET 'ASLEEP,TRUE-VALUE
|
|
?PRG1: EQUAL? C,E \?ELS5
|
|
JUMP ?REP2
|
|
?ELS5: GET C,C-ENABLED?
|
|
ZERO? STACK /?CND3
|
|
GET C,C-TICK >TICK
|
|
ZERO? TICK \?ELS10
|
|
JUMP ?CND3
|
|
?ELS10: SUB TICK,DUR >FOO
|
|
LESS? FOO,2 \?ELS15
|
|
GET C,C-RTN
|
|
CALL STACK
|
|
SUB TICK,1
|
|
PUT C,C-TICK,STACK
|
|
JUMP ?CND8
|
|
?ELS15: PUT C,C-TICK,FOO
|
|
?CND8:
|
|
?CND3: ADD C,C-INTLEN >C
|
|
JUMP ?PRG1
|
|
?REP2: SET 'ASLEEP,FALSE-VALUE
|
|
RETURN ASLEEP
|
|
|
|
|
|
.FUNCT LE?,LAT,LON,CNST,?TMP1
|
|
MUL LAT,LATITUDE-SET >?TMP1
|
|
MUL LON,LONGITUDE-SET
|
|
ADD ?TMP1,STACK
|
|
GRTR? STACK,CNST /FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT GE?,LAT,LON,CNST,?TMP1
|
|
MUL LAT,LATITUDE-SET >?TMP1
|
|
MUL LON,LONGITUDE-SET
|
|
ADD ?TMP1,STACK
|
|
LESS? STACK,CNST /FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT OCEAN-BOTTOM-FCN
|
|
LESS? LONGITUDE-SET,5 /?THN6
|
|
GRTR? LONGITUDE-SET,55 /?THN6
|
|
LESS? LATITUDE-SET,5 /?THN6
|
|
GRTR? LATITUDE-SET,45 \?ELS5
|
|
?THN6: CALL JIGS-UP,STR?447
|
|
RSTACK
|
|
?ELS5: GRTR? LATITUDE-SET,17 /?ELS9
|
|
CALL LE?,2,-5,-11
|
|
ZERO? STACK /?ELS9
|
|
CALL LE?,1,1,30
|
|
ZERO? STACK \FALSE
|
|
?ELS9: GRTR? LATITUDE-SET,6 /?ELS13
|
|
GRTR? LONGITUDE-SET,36 /?ELS13
|
|
LESS? LONGITUDE-SET,34 \FALSE
|
|
?ELS13: GRTR? LONGITUDE-SET,34 /?ELS17
|
|
GRTR? LATITUDE-SET,7 /?ELS17
|
|
CALL LE?,1,-1,-26
|
|
ZERO? STACK \FALSE
|
|
?ELS17: CALL GE?,2,1,115
|
|
ZERO? STACK /?ELS21
|
|
RETURN 400
|
|
?ELS21: CALL GE?,1,1,68
|
|
ZERO? STACK /?ELS23
|
|
CALL LE?,1,-2,-91
|
|
ZERO? STACK /?ELS23
|
|
RETURN 400
|
|
?ELS23: LESS? LATITUDE-SET,40 \?THN32
|
|
CALL GE?,15,4,680
|
|
ZERO? STACK \?THN32
|
|
CALL GE?,2,1,107
|
|
ZERO? STACK \?THN32
|
|
CALL GE?,1,1,76
|
|
ZERO? STACK \?THN32
|
|
LESS? LONGITUDE-SET,44 /?ELS27
|
|
CALL GE?,2,1,70
|
|
ZERO? STACK /?ELS27
|
|
LESS? LONGITUDE-SET,52 \?THN32
|
|
CALL LE?,5,-3,-57
|
|
ZERO? STACK \?THN32
|
|
CALL LE?,1,-1,-31
|
|
ZERO? STACK /?ELS27
|
|
?THN32: RETURN 350
|
|
?ELS27: GRTR? LATITUDE-SET,37 /?THN40
|
|
CALL GE?,6,1,240
|
|
ZERO? STACK \?THN40
|
|
CALL GE?,13,6,635
|
|
ZERO? STACK \?THN40
|
|
CALL GE?,1,1,72
|
|
ZERO? STACK \?THN40
|
|
LESS? LONGITUDE-SET,41 /?ELS35
|
|
CALL GE?,13,8,497
|
|
ZERO? STACK /?ELS35
|
|
LESS? LONGITUDE-SET,49 \?THN40
|
|
CALL LE?,6,-5,-121
|
|
ZERO? STACK \?THN40
|
|
CALL LE?,2,-3,-103
|
|
ZERO? STACK /?ELS35
|
|
?THN40: RETURN 300
|
|
?ELS35: LESS? LATITUDE-SET,35 \?THN48
|
|
CALL GE?,2,-1,57
|
|
ZERO? STACK \?THN48
|
|
CALL GE?,44,15,1810
|
|
ZERO? STACK \?THN48
|
|
CALL GE?,4,3,230
|
|
ZERO? STACK \?THN48
|
|
LESS? LONGITUDE-SET,37 /?ELS43
|
|
CALL GE?,13,7,415
|
|
ZERO? STACK /?ELS43
|
|
LESS? LONGITUDE-SET,46 \?THN48
|
|
CALL LE?,3,-2,-32
|
|
ZERO? STACK /?ELS43
|
|
?THN48: RETURN 250
|
|
?ELS43: GRTR? LATITUDE-SET,19 /?ELS55
|
|
CALL LE?,5,3,131
|
|
ZERO? STACK /?ELS55
|
|
CALL LE?,7,6,214
|
|
ZERO? STACK \?THN52
|
|
?ELS55: GRTR? LATITUDE-SET,7 /?ELS57
|
|
GRTR? LONGITUDE-SET,35 \?THN52
|
|
?ELS57: GRTR? LATITUDE-SET,8 /?ELS51
|
|
CALL LE?,2,-1,-16
|
|
ZERO? STACK /?ELS51
|
|
CALL LE?,1,1,45
|
|
ZERO? STACK /?ELS51
|
|
CALL LE?,2,1,51
|
|
ZERO? STACK /?ELS51
|
|
?THN52: RETURN 50
|
|
?ELS51: GRTR? LATITUDE-SET,20 /?ELS65
|
|
CALL LE?,2,1,50
|
|
ZERO? STACK /?ELS65
|
|
CALL LE?,10,7,286
|
|
ZERO? STACK \?THN62
|
|
?ELS65: GRTR? LATITUDE-SET,9 /?ELS61
|
|
CALL LE?,3,2,99
|
|
ZERO? STACK /?ELS61
|
|
?THN62: RETURN 100
|
|
?ELS61: GRTR? LATITUDE-SET,22 /?THN74
|
|
CALL LE?,5,3,140
|
|
ZERO? STACK \?THN74
|
|
CALL LE?,7,3,172
|
|
ZERO? STACK \?THN70
|
|
?THN74: GRTR? LATITUDE-SET,10 /?ELS69
|
|
CALL LE?,9,5,270
|
|
ZERO? STACK /?ELS69
|
|
?THN70: RETURN 150
|
|
?ELS69: GRTR? LONGITUDE-SET,29 /?ELS79
|
|
LESS? LONGITUDE-SET,18 /?ELS79
|
|
GRTR? LATITUDE-SET,24 /?ELS79
|
|
LESS? LATITUDE-SET,19 /?ELS79
|
|
CALL LE?,9,4,296
|
|
ZERO? STACK /?ELS79
|
|
CALL GE?,4,1,102
|
|
ZERO? STACK /?ELS79
|
|
CALL GE?,2,1,62
|
|
ZERO? STACK /?ELS79
|
|
RETURN 50
|
|
?ELS79: GRTR? LATITUDE-SET,28 /?ELS83
|
|
LESS? LATITUDE-SET,17 /?ELS83
|
|
GRTR? LONGITUDE-SET,34 /?ELS83
|
|
LESS? LONGITUDE-SET,15 /?ELS83
|
|
CALL LE?,1,-1,11
|
|
ZERO? STACK /?ELS83
|
|
CALL GE?,1,1,39
|
|
ZERO? STACK /?ELS83
|
|
CALL GE?,5,2,141
|
|
ZERO? STACK /?ELS83
|
|
CALL GE?,1,-1,-15
|
|
ZERO? STACK /?ELS83
|
|
CALL LE?,4,1,118
|
|
ZERO? STACK \?THN86
|
|
CALL LE?,6,5,268
|
|
ZERO? STACK /?ELS83
|
|
?THN86: RETURN 100
|
|
?ELS83: GRTR? LATITUDE-SET,32 /?ELS89
|
|
LESS? LATITUDE-SET,16 /?ELS89
|
|
GRTR? LONGITUDE-SET,38 /?ELS89
|
|
CALL GE?,5,-3,-19
|
|
ZERO? STACK /?ELS89
|
|
CALL GE?,7,3,196
|
|
ZERO? STACK /?ELS89
|
|
CALL GE?,3,7,164
|
|
ZERO? STACK /?ELS89
|
|
CALL LE?,1,-1,18
|
|
ZERO? STACK /?ELS89
|
|
CALL LE?,7,6,344
|
|
ZERO? STACK \?THN92
|
|
CALL LE?,11,4,394
|
|
ZERO? STACK /?ELS89
|
|
?THN92: RETURN 150
|
|
?ELS89: RETURN 200
|
|
|
|
|
|
.FUNCT I-HUNGER,N,?TMP1
|
|
ZERO? ASLEEP \FALSE
|
|
INC 'HOW-HUNGRY
|
|
EQUAL? HOW-HUNGRY,1 \?ELS9
|
|
CALL QUEUE,I-HUNGER,300
|
|
PUT STACK,0,1
|
|
RFALSE
|
|
?ELS9: EQUAL? HOW-HUNGRY,2 \?ELS11
|
|
CALL QUEUE,I-HUNGER,20
|
|
PUT STACK,0,1
|
|
PRINTI "You begin to feel hungry."
|
|
CRLF
|
|
RFALSE
|
|
?ELS11: EQUAL? HOW-HUNGRY,3 \?ELS15
|
|
CALL QUEUE,I-HUNGER,20
|
|
PUT STACK,0,1
|
|
PRINTI "Your stomach begins to bother you. Better "
|
|
CALL META-LOC,PLAYER >?TMP1
|
|
CALL META-LOC,FOOD
|
|
EQUAL? ?TMP1,STACK \?ELS20
|
|
PRINTI "do something about it"
|
|
JUMP ?CND18
|
|
?ELS20: PRINTI "find some food"
|
|
?CND18: PRINTI "!"
|
|
CRLF
|
|
RFALSE
|
|
?ELS15: GRTR? HOW-HUNGRY,3 \FALSE
|
|
EQUAL? HERE,SHANTY \?ELS33
|
|
SET 'N,2
|
|
JUMP ?CND31
|
|
?ELS33: SET 'N,6
|
|
?CND31: CALL QUEUE,I-HUNGER,N
|
|
PUT STACK,0,1
|
|
PRINTI "Your stomach is growling loudly."
|
|
CRLF
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT I-THIRST
|
|
ZERO? ASLEEP \FALSE
|
|
INC 'HOW-THIRSTY
|
|
EQUAL? HOW-THIRSTY,1 \?ELS9
|
|
CALL QUEUE,I-THIRST,110
|
|
PUT STACK,0,1
|
|
PRINTI "Your throat starts to feel dry."
|
|
CRLF
|
|
RFALSE
|
|
?ELS9: EQUAL? HOW-THIRSTY,2 \?ELS13
|
|
CALL QUEUE,I-THIRST,115
|
|
PUT STACK,0,1
|
|
PRINTI "You feel fairly thirsty."
|
|
CRLF
|
|
RFALSE
|
|
?ELS13: EQUAL? HOW-THIRSTY,3 \?ELS17
|
|
CALL QUEUE,I-THIRST,15
|
|
PUT STACK,0,1
|
|
CALL TELL-YOUD-BETTER,STR?448
|
|
RFALSE
|
|
?ELS17: GRTR? HOW-THIRSTY,3 \FALSE
|
|
CALL QUEUE,I-THIRST,4
|
|
PUT STACK,0,1
|
|
PRINTI "You lick your lips and clear your throat."
|
|
CRLF
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT I-TIRED
|
|
ZERO? ASLEEP \FALSE
|
|
LESS? HOW-TIRED,6 \?CND1
|
|
INC 'HOW-TIRED
|
|
?CND1: EQUAL? HOW-TIRED,1 \?ELS11
|
|
CALL QUEUE,I-TIRED,479
|
|
PUT STACK,0,1
|
|
RFALSE
|
|
?ELS11: EQUAL? HOW-TIRED,2 \?ELS13
|
|
CALL QUEUE,I-TIRED,1
|
|
PUT STACK,0,1
|
|
RFALSE
|
|
?ELS13: EQUAL? HOW-TIRED,3 \?ELS15
|
|
CALL QUEUE,I-TIRED,30
|
|
PUT STACK,0,1
|
|
PRINTR "You yawn as you begin to feel drowsy."
|
|
?ELS15: EQUAL? HOW-TIRED,4 \?ELS19
|
|
CALL QUEUE,I-TIRED,20
|
|
PUT STACK,0,1
|
|
PRINTI "You are starting to feel tired."
|
|
CRLF
|
|
RFALSE
|
|
?ELS19: EQUAL? HOW-TIRED,5 \?ELS23
|
|
CALL QUEUE,I-TIRED,10
|
|
PUT STACK,0,1
|
|
PRINTR "You yawn and feel very tired. Think about going to bed."
|
|
?ELS23: EQUAL? HOW-TIRED,6 \FALSE
|
|
PRINTI "Exhaustion overwhelms you. Keeping your eyes open is painful."
|
|
ZERO? AT-SEA \?ELS32
|
|
PRINTI " "
|
|
CALL V-SLEEP
|
|
RETURN 2
|
|
?ELS32: CALL QUEUE,I-TIRED,6
|
|
PUT STACK,0,1
|
|
CRLF
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT I-SQUID,L
|
|
LOC SQUID >L
|
|
CALL META-LOC,PLAYER
|
|
EQUAL? STACK,L \?ELS5
|
|
CALL JIGS-UP,STR?449
|
|
RSTACK
|
|
?ELS5: CALL INT,I-SQUID
|
|
PUT STACK,0,0
|
|
RFALSE
|
|
|
|
|
|
.FUNCT I-SHARK
|
|
GETP HERE,P?LINE
|
|
LESS? STACK,UNDERWATER-LINE-C \?ELS5
|
|
CALL INT,I-SHARK
|
|
PUT STACK,0,0
|
|
MOVE SHARK,LOCAL-GLOBALS
|
|
FCLEAR SHARK,ONBIT
|
|
RFALSE
|
|
?ELS5: IN? SHARK,UNDERWATER \?ELS7
|
|
IN? SHARK-REPELLENT,PLAYER \?ELS12
|
|
FSET? SHARK-REPELLENT,OPENBIT \?ELS12
|
|
MOVE SHARK,WINDING-ROAD-2
|
|
CALL INT,I-SHARK
|
|
PUT STACK,0,0
|
|
ZERO? LIT /FALSE
|
|
FSET? SHARK,ONBIT \?ELS19
|
|
PRINTI "The shark continues"
|
|
JUMP ?CND15
|
|
?ELS19: PRINTI "A shark swims"
|
|
?CND15: PRINTR " toward you, then stops. It turns and swims away."
|
|
?ELS12: FSET? SHARK,ONBIT \?ELS32
|
|
PRINTI "The shark"
|
|
JUMP ?CND30
|
|
?ELS32: ZERO? LIT /?ELS36
|
|
PRINTI "A shark"
|
|
JUMP ?CND30
|
|
?ELS36: PRINTI "Something"
|
|
?CND30: CALL JIGS-UP,STR?450
|
|
RSTACK
|
|
?ELS7: MOVE SHARK,UNDERWATER
|
|
CALL QUEUE,I-SHARK,-1
|
|
PUT STACK,0,1
|
|
ZERO? LIT /FALSE
|
|
FSET SHARK,ONBIT
|
|
PRINTR "A shark swims toward you!"
|
|
|
|
|
|
.FUNCT I-PLUMMET
|
|
INC 'CRIMP-CTR
|
|
EQUAL? CRIMP-CTR,1 \?ELS5
|
|
CALL QUEUE,I-PLUMMET,-1
|
|
PUT STACK,0,1
|
|
CALL GLOBAL-IN?,FALLEN-BUNK,HERE
|
|
ZERO? STACK /FALSE
|
|
SET 'P-IT-OBJECT,FALLEN-BUNK
|
|
PRINTR "The row of bunks you moved starts to fall."
|
|
?ELS5: EQUAL? CRIMP-CTR,2 \?ELS14
|
|
CALL GLOBAL-IN?,FALLEN-BUNK,HERE
|
|
ZERO? STACK /FALSE
|
|
SET 'P-IT-OBJECT,FALLEN-BUNK
|
|
PRINTI "The row of bunks falls toward the doorway"
|
|
EQUAL? HERE,WRECK-8 \?ELS24
|
|
PRINTI ", threatening to pinch your "
|
|
CALL DPRINT,AIR-HOSE
|
|
PRINTI "!"
|
|
JUMP ?CND22
|
|
?ELS24: PRINTI "."
|
|
?CND22: CRLF
|
|
RTRUE
|
|
?ELS14: EQUAL? CRIMP-CTR,3 \FALSE
|
|
CALL GLOBAL-IN?,FALLEN-BUNK,HERE
|
|
ZERO? STACK /?ELS37
|
|
EQUAL? HERE,WRECK-8 \?ELS42
|
|
CALL JIGS-UP,STR?451
|
|
RSTACK
|
|
?ELS42: SET 'BUNKS-MOVED,FALSE-VALUE
|
|
SET 'P-IT-OBJECT,FALLEN-BUNK
|
|
PRINTR "The bunks fall back into the doorway, blocking the passage."
|
|
?ELS37: EQUAL? HERE,WRECK-1,WRECK-2,WRECK-3 /?THN49
|
|
EQUAL? HERE,WRECK-4,WRECK-5,WRECK-6 /?THN49
|
|
EQUAL? HERE,UNDERWATER \?ELS48
|
|
?THN49: SET 'BUNKS-MOVED,FALSE-VALUE
|
|
RFALSE
|
|
?ELS48: CALL JIGS-UP,STR?452
|
|
RSTACK
|
|
|
|
|
|
.FUNCT I-LIVER
|
|
GRTR? BLOOD-ALCOHOL,0 \?CND1
|
|
DEC 'BLOOD-ALCOHOL
|
|
?CND1: GRTR? SLOSH-CTR,0 \?CND4
|
|
DEC 'SLOSH-CTR
|
|
?CND4: CALL QUEUE,I-LIVER,10
|
|
PUT STACK,0,1
|
|
GRTR? BLOOD-ALCOHOL,15 \FALSE
|
|
PRINTI "Your head swims for a minute."
|
|
CRLF
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT I-PENDULUM,DIR=0
|
|
CALL QUEUE,I-PENDULUM,-2
|
|
EQUAL? LINE-LOC,5 \?ELS3
|
|
SET 'LINE-LOC-INC,-1
|
|
JUMP ?CND1
|
|
?ELS3: EQUAL? LINE-LOC,1 \?ELS5
|
|
SET 'LINE-LOC-INC,1
|
|
JUMP ?CND1
|
|
?ELS5: CALL META-LOC,PLAYER
|
|
IN? SAFETY-LINE,STACK \?CND1
|
|
EQUAL? LINE-LOC-INC,1 \?ELS10
|
|
SET 'DIR,STR?170
|
|
JUMP ?CND1
|
|
?ELS10: SET 'DIR,STR?171
|
|
?CND1: ADD LINE-LOC,LINE-LOC-INC >LINE-LOC
|
|
EQUAL? LINE-LOC,2 \?ELS17
|
|
MOVE SAFETY-LINE,WEST-OF-WRECK-9
|
|
EQUAL? HERE,WEST-OF-WRECK-9 \FALSE
|
|
CALL TELL-LINE-SWINGS
|
|
RSTACK
|
|
?ELS17: EQUAL? LINE-LOC,4 \?ELS24
|
|
MOVE SAFETY-LINE,WEST-OF-WRECK-11
|
|
EQUAL? HERE,WEST-OF-WRECK-11 \FALSE
|
|
CALL TELL-LINE-SWINGS
|
|
RSTACK
|
|
?ELS24: MOVE SAFETY-LINE,LOCAL-GLOBALS
|
|
ZERO? DIR /FALSE
|
|
PRINTI "The line swings away to the "
|
|
PRINT DIR
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT TELL-LINE-SWINGS
|
|
PRINTI "The "
|
|
CALL DPRINT,SAFETY-LINE
|
|
PRINTI " from above swings in from the "
|
|
EQUAL? LINE-LOC-INC,1 \?ELS5
|
|
PRINTI "south"
|
|
JUMP ?CND3
|
|
?ELS5: PRINTI "north"
|
|
?CND3: PRINTR "."
|
|
|
|
|
|
.FUNCT I-CASE-LEAK,ALREADY=0
|
|
INC 'WATER-IN-CASE
|
|
GRTR? WATER-IN-CASE,9 \?CND1
|
|
FSET? STAMPS,RMUNGBIT \?CND4
|
|
SET 'ALREADY,TRUE-VALUE
|
|
?CND4: FSET STAMPS,RMUNGBIT
|
|
CALL INT,I-CASE-LEAK
|
|
PUT STACK,0,0
|
|
?CND1: IN? GLASS-CASE,PLAYER \FALSE
|
|
PRINTI "The water level in the "
|
|
CALL DPRINT,GLASS-CASE
|
|
PRINTI " rises."
|
|
FSET? STAMPS,RMUNGBIT \?CND14
|
|
ZERO? ALREADY \?CND14
|
|
PRINTI " As it reaches the stamps, it soaks them."
|
|
?CND14: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT I-DRILL
|
|
FSET BATTERY,RMUNGBIT
|
|
SET 'DRILL-POWERED,FALSE-VALUE
|
|
CALL INT,I-DRILL
|
|
PUT STACK,0,0
|
|
PRINTI "The "
|
|
CALL DPRINT,DRILL
|
|
PRINTR " sputters, and the bit stops turning."
|
|
|
|
|
|
.FUNCT I-AIR-SUPPLY
|
|
GETP HERE,P?LINE
|
|
EQUAL? STACK,UNDERWATER-LINE-C \FALSE
|
|
IN? AIR-TANK,PLAYER \FALSE
|
|
CALL AIRTIGHT-ROOM?
|
|
ZERO? STACK \FALSE
|
|
ADD DEPTH,33
|
|
DIV STACK,44
|
|
SUB AIR-LEFT,STACK >AIR-LEFT
|
|
LESS? AIR-LEFT,1 \?ELS12
|
|
CALL JIGS-UP,STR?453
|
|
RSTACK
|
|
?ELS12: LESS? AIR-LEFT,15 \FALSE
|
|
PRINTI "Your air supply is dangerously low."
|
|
CRLF
|
|
EQUAL? WAITED?,1 /TRUE
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT I-MM-COMPRESSOR
|
|
CALL QUEUE,I-LAST-GASP,10
|
|
PUT STACK,0,1
|
|
GETP HERE,P?LINE
|
|
EQUAL? STACK,UNDERWATER-LINE-C \FALSE
|
|
PRINTI "You have to breathe harder. Maybe you'd better surface."
|
|
CRLF
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT I-LAST-GASP
|
|
GETP HERE,P?LINE
|
|
EQUAL? STACK,UNDERWATER-LINE-C \?ELS5
|
|
CALL JIGS-UP,STR?454
|
|
RSTACK
|
|
?ELS5: CALL QUEUE,I-LAST-GASP,1
|
|
PUT STACK,0,0
|
|
RTRUE
|
|
|
|
|
|
.FUNCT I-PLOT-NEVER-STARTS
|
|
CALL INT,I-JOHNNY
|
|
PUT STACK,0,0
|
|
CALL INT,I-PETE
|
|
PUT STACK,0,0
|
|
IN? WEASEL,SHANTY \?CND1
|
|
CALL INT,I-WEASEL
|
|
PUT STACK,0,0
|
|
?CND1: SET 'FM-CTR,5
|
|
RFALSE
|
|
|
|
|
|
.FUNCT I-ENDIT
|
|
GETP HERE,P?LINE
|
|
LESS? STACK,UNDERWATER-LINE-C \FALSE
|
|
CALL JIGS-UP,STR?455
|
|
RSTACK
|
|
|
|
.ENDI
|