Skip to content

Instantly share code, notes, and snippets.

@Jither

Jither/boot.c Secret

Last active July 3, 2023 14:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Jither/bdb253854c6938675e9d525157e0b3fb to your computer and use it in GitHub Desktop.
Save Jither/bdb253854c6938675e9d525157e0b3fb to your computer and use it in GitHub Desktop.
BOOT.SCU
script boot-script {
number-actors = 25
revert-verb is walk-to
selected-actor is dave
min-jiffies = 4
override-key = 4
actor actor-0 talk-color yellow
cut-scene {
actor syd name "Syd"
actor syd sound footstep-sound
actor razor name "Razor"
actor razor sound footstep-sound
actor dave name "Dave"
actor dave sound footstep-sound
actor michael name "Michael"
actor michael sound footstep-sound
actor bernard name "Bernard"
actor bernard sound footstep-sound
actor wendy name "Wendy"
actor wendy sound footstep-sound
actor jeff name "Jeff"
actor jeff sound sound-0
actor kid-in-radiation-suit name ""
actor kid-in-radiation-suit sound footstep-sound
actor sandy name "Sandy"
actor sandy sound footstep-sound
actor dr-fred name "Dr Fred"
actor dr-fred sound footstep-sound
actor nurse-edna name "Nurse Edna"
actor nurse-edna sound footstep-sound
actor weird-ed name "Weird Ed"
actor weird-ed sound footstep-sound
actor dead-cousin-ted name "Dead Cousin Ted"
actor dead-cousin-ted sound footstep-sound
actor purple-tentacle name "Purple Tentacle"
actor purple-tentacle sound tentacle-hop-sound
actor green-tentacle name "Green Tentacle"
actor green-tentacle sound tentacle-hop-sound
actor meteor-police-officer name ""
actor meteor-police-officer sound footstep-sound
actor meteor name "Meteor"
actor meteor sound footstep-sound
actor marketeer name ""
actor marketeer sound footstep-sound
actor talkshow-host name ""
actor talkshow-host sound sound-0
actor plant name "Plant"
actor plant sound sound-0
actor radiation-wave name ""
actor radiation-wave sound sound-0
actor car name ""
actor car sound sound-0
actor falling-meteor name ""
actor falling-meteor sound sound-0
userface 3 freeze-scripts cursor-on none
load-sound maniac-mansion-theme
lock-sound maniac-mansion-theme
load-script sentence
lock-script sentence
load-script build-sentence
lock-script build-sentence
load-script setup-verbs
lock-script setup-verbs
load-sound footstep-sound
lock-sound footstep-sound
load-sound open-door-sound
load-sound close-door-sound
load-sound cricket-sound
load-room mansion-gate
load-script arrival-at-mansion
load-script play-cricket-sound
start-script keep-security-door-closed
kid-forced-on-you is dave
current-room boot
bar = 0
selected = 1
do {
sleep-for 1 second
print-line " Copyright 1987, 1988 Lucasfilm Ltd. ",
" All rights reserved. "
override label-590
do {
failed-keycode is random 1
if (message-going is false) {
sleep-for 2 seconds
if (message-going is false) {
if (selected == 1) {
print-line " Please select two other kids."
}
if (selected == 2) {
print-line " Please select one other kid."
}
}
}
break-here
} until (bar == 1)
label-590:
if (selected >= 3) {
jump label-606
}
do-sentence push start-game
}
label-606:
}
current-room room-0
load-costume kid-forced-on-you
load-costume chosen-kid-1
load-costume chosen-kid-2
userface 2 freeze-scripts cursor-off none
if (bar == 1) {
start-script opening
break-until (script-running opening is false)
}
unlock-sound maniac-mansion-theme
put-actor kid-forced-on-you at 24,59 in-room mansion-gate
put-actor chosen-kid-1 at 29,57 in-room mansion-gate
put-actor chosen-kid-2 at 34,61 in-room mansion-gate
put-actor dead-cousin-ted at 30,48 in-room bathroom
put-actor weird-ed at 10,52 in-room weird-eds-room
telescope-position = 1
actor-range-min = 1
actor-range-max = 8
room-always-lit[mansion-gate] = 1
room-always-lit[mansion-exterior] = 1
room-always-lit[dungeon] = 1
room-always-lit[pool] = 1
room-always-lit[bottom-of-pool] = 1
room-always-lit[garage] = 1
room-always-lit[zom-b-matic-room] = 1
room-always-lit[lab] = 1
room-always-lit[meteor-room] = 1
room-is-dark[cellar] = 1
room-is-dark[library] = 1
room-is-dark[safe-room] = 1
room-is-dark[boarded-up-room] = 1
room-is-dark[medical-lab] = 1
room-is-dark[dark-room] = 1
selected = random 4
if (selected == 0) {
ednas-number-digit-1 = 5, 2, 3, 5
}
if (selected == 1) {
ednas-number-digit-1 = 1, 5, 4, 7
state-of ednas-number-1 is GONE
}
if (selected == 2) {
ednas-number-digit-1 = 2, 2, 7, 5
state-of ednas-number-2 is GONE
}
if (selected == 3) {
ednas-number-digit-1 = 3, 4, 4, 4
state-of ednas-number-3 is GONE
}
if (selected == 4) {
ednas-number-digit-1 = 7, 5, 3, 7
state-of ednas-number-4 is GONE
}
selected = random 4
if (selected == 0) {
safe-combination-digit-1 = 3, 6, 2, 1
}
if (selected == 1) {
safe-combination-digit-1 = 0, 1, 2, 0
state-of safe-combination-1 is GONE
}
if (selected == 2) {
safe-combination-digit-1 = 1, 2, 3, 0
state-of safe-combination-2 is GONE
}
if (selected == 3) {
safe-combination-digit-1 = 1, 0, 2, 9
state-of safe-combination-3 is GONE
}
if (selected == 4) {
safe-combination-digit-1 = 4, 1, 8, 6
state-of safe-combination-4 is GONE
}
meteor-police-number = random 4
if (meteor-police-number == 0) {
meteor-police-number-digit-1 = 3, 4, 1, 2
}
if (meteor-police-number == 1) {
meteor-police-number-digit-1 = 1, 1, 3, 8
}
if (meteor-police-number == 2) {
meteor-police-number-digit-1 = 9, 1, 1, 1
}
if (meteor-police-number == 3) {
meteor-police-number-digit-1 = 1, 9, 7, 7
}
if (meteor-police-number == 4) {
meteor-police-number-digit-1 = 0, 5, 2, 5
}
start-script arrival-at-mansion
}
script sentence {
if (var-42 is current-noun2) {
if (var-43 is current-noun1) {
++var-41
if (var-41 > 6) {
var-41 = 0
chain-script default-responses
}
jump label-31
}
}
var-41 = 0
label-31:
var-42 is current-noun1
var-43 is current-noun2
if (current-verb is new-kid) {
jump label-420
}
if (current-verb is give) {
if (current-noun2 <= actor-25) {
if (owner-of current-noun1 is in-the-room) {
jump label-232
}
if (kid-is-busy[selected-actor] == 0) {
walk selected-actor to current-noun2 within 4
}
wait-for-actor selected-actor
if (proximity selected-actor to current-noun2 <= 4) {
if (current-noun2 is-not plant) {
do-animation current-noun2 face-towards selected-actor
}
do-animation selected-actor face-towards current-noun2
if (legal-verb) {
do-sentence give current-noun1 current-noun2
revert-sentence
jump label-420
} else {
if (current-noun2 < end-kids) {
owner-of current-noun1 is current-noun2
} else {
chain-script default-responses
}
}
} else {
say-line "I'd better get closer."
}
jump label-420
}
}
if (not legal-verb) {
if (kid-is-busy[selected-actor] == 0) {
if (owner-of current-noun1 is in-the-room) {
walk selected-actor to current-noun1
}
}
wait-for-actor selected-actor
if (current-verb is-not walk-to) {
chain-script default-responses
}
} else {
if (current-verb is-not read) {
if (current-verb is-not pick-up) {
if (owner-of current-noun1 is in-the-room) {
if (class-of current-noun1 is PICKUPABLE) {
label-232:
do-sentence current-verb current-noun1 current-noun2
do-sentence pick-up current-noun1
jump label-420
}
}
if (owner-of current-noun2 is in-the-room) {
if (class-of current-noun2 is PICKUPABLE) {
do-sentence current-verb current-noun1 current-noun2
do-sentence pick-up current-noun2
jump label-420
}
}
}
} else {
if (current-lights == 0) {
say-line "It's too dark to read."
}
}
if (userface-flag != 3) {
if (userface-flag != 5) {
dest-object is current-noun1
if (owner-of current-noun1 is-not in-the-room) {
if (current-noun2 is-not object-0) {
if (owner-of current-noun2 is in-the-room) {
dest-object is current-noun2
}
}
}
if (kid-is-busy[selected-actor] == 0) {
if (owner-of dest-object is in-the-room) {
walk selected-actor to dest-object
wait-for-actor selected-actor
}
}
if (proximity selected-actor to dest-object > 2) {
say-line "I can't reach it."
stop-script sentence
}
if (kid-is-busy[selected-actor]) {
if (current-verb is walk-to) {
jump label-420
}
}
}
}
do-sentence current-verb current-noun1 current-noun2
}
label-420:
do-sentence selected-verb selected-noun1 selected-noun2
}
script default-responses {
case current-verb {
of open {
say-line "It doesn't seem to open."
}
of push {
jump label-49
}
of pull {
label-49:
say-line "I can't move it."
}
of read {
say-line "There's nothing to read on it."
}
of pick-up {
say-line "I can't pick that up."
}
default {
say-line "That doesn't seem to work."
}
}
clear-sentence-stack
revert-sentence
do-sentence selected-verb selected-noun1 selected-noun2
}
script build-sentence {
if (touched-zone == 4) {
if (key-hit == 62) {
++var-200
print-line "sound %nvar-200%"
stop-music
stop-music
start-sound var-200
stop-script
}
if (key-hit == 60) {
--var-200
print-line "sound %nvar-200%"
stop-music
stop-music
start-sound var-200
stop-script
}
}
exec-sentence-flag is false
if (userface-flag == 3) {
selected-verb is push
exec-sentence-flag is true
}
if (touched-zone == 4) {
case key-hit {
of 8 {
restart
}
of 13 {
exec-sentence-flag is true
}
of 5 {
if (selected-room is boot) {
chain-script script-163
}
if (userface-flag == 1) {
if (meteor-controls-computer is false) {
chain-script script-163
} else {
print-line "The Meteor has control of your computer",
"and he won't let you save the game."
}
}
}
}
if (userface-flag == 1) {
if (meteor-controls-computer is false) {
case key-hit {
of 1 {
label-218:
start-script setup-verbs
selected-actor is kid-forced-on-you
camera-follow selected-actor
jump label-665
}
of 2 {
label-237:
start-script setup-verbs
selected-actor is chosen-kid-1
camera-follow selected-actor
jump label-665
}
of 3 {
label-256:
start-script setup-verbs
selected-actor is chosen-kid-2
camera-follow selected-actor
jump label-665
}
}
}
}
}
if (touched-zone == 1) {
if (selected-prep) {
jump label-303
}
if (touched-verb is new-kid) {
if (not meteor-controls-computer) {
start-script setup-verbs-new-kid
jump label-303
}
}
if (touched-verb is give) {
label-303:
revert-sentence
}
if (touched-verb is what-is) {
selected-verb is what-is
do-sentence selected-verb object-0
do {
if (cursor-y < 67) {
touched-object is find-object cursor-x cursor-y
if (touched-object is-not selected-noun1) {
selected-noun1 is touched-object
do-sentence selected-verb selected-noun1
}
}
break-here
}
}
if (touched-verb is new-kid) {
selected-prep = 4
selected-verb is touched-verb
}
if (not meteor-controls-computer) {
if (touched-verb is new-kid-1) {
jump label-218
}
if (touched-verb is new-kid-2) {
jump label-237
}
if (touched-verb is new-kid-3) {
jump label-256
}
}
if (selected-verb is touched-verb) {
exec-sentence-flag is true
} else {
selected-verb is touched-verb
}
} else {
if (touched-zone == 2) {
if (selected-verb is walk-to) {
exec-sentence-flag is true
}
if (selected-verb is what-is) {
revert-sentence
exec-sentence-flag is false
}
case selected-verb {
of give {
if (selected-prep) {
touched-object is find-actor cursor-x cursor-y
} else {
touched-object is find-object cursor-x cursor-y
}
}
of new-kid {
touched-object is find-object cursor-x cursor-y
}
}
}
if (not touched-object) {
if (selected-verb is walk-to) {
revert-sentence
exec-sentence-flag is true
}
} else {
if (selected-prep) {
if (touched-object is selected-noun2) {
exec-sentence-flag is true
}
if (touched-object is selected-noun1) {
touched-object is object-0
}
if (selected-verb is give) {
if (touched-object > actor-25) {
touched-object is object-0
}
}
selected-noun2 is touched-object
} else {
selected-noun2 is object-0
if (touched-object is selected-noun1) {
exec-sentence-flag is true
}
selected-noun1 is touched-object
}
}
}
if (selected-verb is pick-up) {
if (owner-of selected-noun1 is-not in-the-room) {
selected-noun1 is object-0
}
}
if (userface-flag != 3) {
do-sentence selected-verb selected-noun1 selected-noun2
}
if (exec-sentence-flag) {
if (selected-verb) {
if (selected-verb is new-kid) {
jump label-618
}
if (selected-noun1) {
if (selected-prep) {
if (selected-noun2) {
jump label-618
}
} else {
label-618:
clear-sentence-stack
do-sentence selected-verb selected-noun1 selected-noun2
}
} else {
if (selected-verb is walk-to) {
if (kid-is-busy[selected-actor] == 0) {
if (touched-zone == 2) {
clear-sentence-stack
walk selected-actor to cursor-x,cursor-y
}
}
}
}
}
if (selected-verb is-not walk-to) {
revert-sentence
}
}
label-665:
touched-verb is verb-0
touched-object is object-0
}
script empty-script-5 {
}
script demo {
cut-scene {
min-jiffies = 4
override-key = 4
room-is-dark[library] = 1
state-of crater is HERE
state-of mansion-lights-5 is HERE
state-of mansion-lights-4 is HERE
state-of mansion-lights-3 is HERE
state-of mansion-lights-2 is HERE
state-of mansion-lights-1 is HERE
state-of door-hall-to-living-room is CLOSED
state-of door-living-room-to-hall is CLOSED
state-of door-to-library is CLOSED
state-of door-library-exit is CLOSED
load-sound tentacle-hop-sound
lock-sound tentacle-hop-sound
load-sound switch-sound
lock-sound switch-sound
load-script demo-purple-follows-sandy
lock-script demo-purple-follows-sandy
load-script demo-sandy-examines-books
lock-script demo-sandy-examines-books
lock-script update-room-light
load-costume dave-costume
lock-costume dave-costume
load-sound open-door-sound
lock-sound open-door-sound
load-sound close-door-sound
lock-sound close-door-sound
load-script open-door
lock-script open-door
load-script close-door
lock-script close-door
load-sound kid-recording-sound
lock-sound kid-recording-sound
load-sound boom-sound
lock-sound boom-sound
load-sound tentacle-collision-sound
lock-sound tentacle-collision-sound
load-script build-sentence
load-room mansion-panorama
load-script empty-script-5
load-sound meteor-falling-sound
load-sound maniac-mansion-theme
load-sound unused-sound-1
load-room mansion-exterior
load-sound doorbell-sound
load-script play-cricket-sound
load-room hall
load-script grandfather-clock-tick-tock
load-script update-room-light
load-sound tick-tock-sound
load-room lab
load-script demo-lab-scene
load-script demo-dr-fred-paces
load-costume dr-fred-costume
load-costume nurse-edna-costume
load-costume weird-ed-costume
load-costume purple-tentacle-costume
load-room living-room
load-costume sandy-costume
load-script play-mating-call-in-living-room
load-sound break-glass-sound
load-room library
load-script edna-answers-phone
load-script phone-ringing
load-script hang-up-when-leaving-phone
load-script hang-up-phone
load-sound phone-dial-tone
load-sound unused-sound-46
load-sound wrong-number-tone
load-sound ednas-phone-ringing-tone
load-sound library-phone-ringing-tone
start-script demo-opening
start-script demo-review-quotes
break-until (script-running demo-opening is false)
stop-script demo-review-quotes
put-actor dave at 18,58 in-room mansion-exterior
current-room mansion-exterior
camera-follow dave
verb give at 0,20 in-slot 2 prep 0 name " Lucasfilm Games Presents"
verb give at 0,21 in-slot 3 prep 0 name " "
verb give at 0,22 in-slot 4 prep 0 name " MANIAC MANSION"
verb give at 0,23 in-slot 5 prep 0 name " "
userface 0 verbs
do-animation dave turn-front
sleep-for 2 seconds
walk dave to 18,70
wait-for-actor dave
actor dave talk-color blue
say-line dave "Hello, and welcome to Maniac Mansion,",
"an exciting new game from Lucasfilm."
wait-for-message
say-line dave "I'm Dave Miller, your personal guide",
"and one of the stars of the adventure."
wait-for-message
walk dave to 59,58
say-line dave "Here's where Sandy was held captive,",
"and where we rescued her from Dr. Fred."
wait-for-actor dave
do-animation dave face-front
say-line dave "Let's go inside."
wait-for-message
walk dave to front-door-ext
wait-for-actor dave
state-of front-door-ext is OPEN
state-of front-door-int-left is OPEN
start-sound open-door-sound
sleep-for 30 jiffies
camera-at camera-x
put-actor dave at 6,60 in-room hall
do-animation dave turn-right
sleep-for 1 second
current-room hall
camera-follow dave
sleep-for 30 jiffies
do-animation dave face-front
sleep-for 15 jiffies
say-line dave "I've arranged for the occupants to be",
"gone during our `tour.`":
"We shouldn't have any problems."
wait-for-message
do-animation dave face-left
sleep-for 20 jiffies
state-of front-door-int-left is CLOSED
state-of front-door-ext is CLOSED
start-sound close-door-sound
break-here 2
do-animation dave face-front
sleep-for 20 jiffies
start-script demo-lab-scene
break-until (script-running demo-lab-scene is false)
current-room hall
camera-follow dave
sleep-for 90 jiffies
say-line dave "Oh. That was a `cut-scene.`":
"They let you know what's",
"going on elsewhere in the mansion."
wait-for-message
sleep-for 30 jiffies
say-line dave "All these tours make me hungry."
wait-for-message
say-line dave "Here's the kitchen."
walk dave to door-hall-to-kitchen
wait-for-actor dave
state-of door-hall-to-kitchen is OPEN
start-sound open-door-sound
sleep-for 1 second
do-animation dave face-front
say-line dave "I see they haven't cleaned up the, er,",
"uh, um... the mess yet."
wait-for-message
do-animation dave face-back
wait-for-actor dave
say-line dave "I think I just lost my appetite."
state-of door-hall-to-kitchen is CLOSED
start-sound close-door-sound
sleep-for 20 jiffies
do-animation dave face-front
wait-for-message
sleep-for 1 second
say-line dave "I know, let's go to my favorite room,",
"the basement."
sleep-for 1 second
walk dave to 56,58
wait-for-actor dave
wait-for-message
do-animation dave face-back
break-here
say-line dave "Oh yes, no handle."
wait-for-message
do-animation dave face-front
say-line dave "Now how did I open this door last time?":
"Push it?"
wait-for-message
walk dave to 56,40
wait-for-actor dave
sleep-for 1 second
say-line dave "Nope. Maybe I need a running start."
walk dave to 56,70
wait-for-actor dave
wait-for-message
min-jiffies = 0
walk dave to 56,40
wait-for-actor dave
start-sound boom-sound
do-animation dave chore-12
print-line "Owwwwwwwwwwwwwwwwwww! "
do {
do-animation dave turn-left
break-here
do-animation dave turn-front
break-here
do-animation dave turn-right
break-here
do-animation dave turn-back
break-here
x = random 112
y = random 12
y += 52
walk dave to x,y
} until (message-going is false)
min-jiffies = 4
break-here
do-animation dave chore-255
sleep-for 1 second
do-animation dave chore-16
break-here
do-animation dave face-front
sleep-for 1 second
say-line dave "Oh well, I'll let you figure it out."
sleep-for 1 second
walk dave to door-hall-to-living-room
wait-for-actor dave
state-of door-hall-to-living-room is OPEN
state-of door-living-room-to-hall is OPEN
start-sound open-door-sound
sleep-for 1 second
wait-for-message
camera-at camera-x
put-actor dave at 7,60 in-room living-room
sleep-for 1 second
put-actor sandy at 24,56 in-room living-room
do-animation sandy turn-back
do-animation dave turn-right
current-room living-room
start-music kid-recording-sound
camera-follow dave
state-of cassette-player is ON
state-of cassette-tape is HERE
sleep-for 3 seconds
say-line dave "Hi Sandy, could you turn the music down?"
wait-for-message
sleep-for 3 seconds
say-line dave "Sandy, the music's too loud!"
wait-for-message
sleep-for 2 seconds
walk dave to 9,60
say-line dave "SANDY, TURN OFF THE MUSIC!"
wait-for-message
do-animation sandy face-left
sleep-for 1 second
say-line sandy "Oh!"
sleep-for 1 second
walk sandy to cabinet-door
wait-for-actor sandy
do-animation sandy face-back
sleep-for 15 jiffies
state-of cabinet-door is OPEN
sleep-for 1 second
state-of cassette-player is OFF
break-here
stop-sound kid-recording-sound
sleep-for 30 jiffies
state-of cabinet-door is CLOSED
break-here
start-sound close-door-sound
sleep-for 30 jiffies
walk sandy to dave within 4
do-animation sandy face-left
say-line sandy "I'm sorry Dave, I couldn't hear you,":
"the music was too loud."
wait-for-message
do-animation dave face-front
wait-for-actor dave
say-line dave "Everybody's a comedian!"
wait-for-message
do-animation dave face-right
say-line dave "I was just giving a tour to all these",
"future game players. Want to come?"
wait-for-message
say-line sandy "Sure Dave, I'll go anywhere with you!"
wait-for-message
walk dave to door-to-library
sleep-for 30 jiffies
walk sandy to 69,60
say-line dave "Oh yes, in Maniac Mansion,":
"you not only direct my actions,",
"but the actions of two of my friends."
wait-for-actor dave
wait-for-message
state-of door-to-library is OPEN
state-of door-library-exit is OPEN
start-sound open-door-sound
camera-at camera-x
verb give at 0,19 in-slot 2 prep 0 name "Push Open Walk to Unlock Turn on "
verb give at 0,20 in-slot 3 prep 0 name "Pull Close Pick up New kid Turn off"
verb give at 0,21 in-slot 4 prep 0 name "Give Read What is Use Fix"
userface 0 verbs
do-animation dave face-front
say-line dave "You point to the verbs you see below to",
"construct sentences."
break-here 2
do-animation sandy face-front
wait-for-message
sleep-for 30 jiffies
sleep-for 3 seconds
put-actor dave at 13,56 in-room library
walk sandy to 73,60
break-here
wait-for-actor sandy
break-here
put-actor sandy at 9,56 in-room library
do-animation sandy turn-right
sleep-for 1 second
current-room library
verb give at 0,20 in-slot 2 prep 0 name " Lucasfilm Games Presents"
verb give at 0,21 in-slot 3 prep 0 name " "
verb give at 0,22 in-slot 4 prep 0 name " MANIAC MANSION"
userface 0 verbs
camera-follow dave
walk sandy to 12,52
say-line dave "This is the library."
wait-for-actor sandy
lights is 2
start-sound switch-sound
sleep-for 30 jiffies
start-script demo-sandy-examines-books
say-line dave "It's one of the many rooms in the game."
walk dave to 38,66
wait-for-actor dave
do-animation dave turn-front
wait-for-message
start-script phone-ringing
say-line dave "And there are more than 450 objects..."
wait-for-message
do-animation dave turn-right
camera-pan-to 50
sleep-for 2 seconds
do-animation dave turn-front
break-here
say-line dave "...that you can use to solve over..."
wait-for-message
do-animation dave turn-right
sleep-for 2 seconds
do-animation dave turn-front
break-here
say-line dave "Just a second."
wait-for-message
walk dave to 50,64
break-until (actor-x dave > 48)
walk dave to 65,64
wait-for-actor dave
do-animation dave face-back
break-here
state-of library-phone is ON
stop-script phone-ringing
stop-sound library-phone-ringing-tone
sleep-for 30 jiffies
say-line dave "Hello?"
sleep-for 3 seconds
do-animation dave face-right
say-line dave "Hello, who's there?"
put-actor purple-tentacle at 10,60 in-room library
start-script demo-purple-follows-sandy
sleep-for 2 seconds
do-animation sandy face-left
break-here
do-animation sandy chore-12
break-here 2
walk sandy to 50,50
break-here
say-line dave "Oh, Mom! I asked you not to call me",
"at work."
wait-for-actor sandy
walk sandy to 50,60
break-here
wait-for-actor sandy
walk sandy to 10,50
break-here
wait-for-actor sandy
say-line dave "I love you too...Mom."
sleep-for 2 seconds
break-until (actor-x purple-tentacle <= 28)
stop-script demo-purple-follows-sandy
start-sound tentacle-collision-sound
sleep-for 30 jiffies
do-animation dave face-back
break-here
state-of library-phone is OFF
break-here
start-sound close-door-sound
sleep-for 30 jiffies
do-animation dave turn-left
break-here
say-line dave "Sandy?"
sleep-for 3 seconds
say-line dave "SANDY!"
sleep-for 3 seconds
camera-follow dave
do-animation dave turn-front
break-here
say-line dave "Oh great! Not again!!":
"Time to round up the Gang."
wait-for-message
sleep-for 3 seconds
}
chain-script demo
}
script select-kid {
start-sound button-press-sound
if (state-of current-noun1 is GONE) {
state-of current-noun1 is HERE
selected -= 1
if (selected == 2) {
if (foo is-not chosen-kid-2) {
chosen-kid-1 is chosen-kid-2
}
}
print-line " "
} else {
if (selected < 3) {
++selected
draw-object current-noun1
if (selected == 2) {
chosen-kid-1 is foo
}
if (selected == 3) {
chosen-kid-2 is foo
}
}
}
}
script arrival-at-mansion {
lab-code-digit-1 = 100
camera-follow dave
cut-scene {
start-script play-cricket-sound
override label-523
do-animation dave turn-right
do-animation chosen-kid-1 turn-left
do-animation chosen-kid-2 turn-left
sleep-for 1 second
say-line dave "Ok! This looks like the old mansion."
sleep-for 1 second
walk dave to 18,60
wait-for-message
say-line dave "I'm sure I saw Dr. Fred take Sandy here.":
"It's up to us to get her out."
sleep-for 2 seconds
walk dave to 24,59
wait-for-message
say-line dave "This could be real dangerous.":
"If anyone wants to back out^"
wait-for-message
if (state-of select-bernard is ON) {
say-line bernard "Ok, I'm outta here!"
x = actor-x bernard
y = actor-y bernard
walk bernard to 38,64
if (chosen-kid-1 is bernard) {
do-animation chosen-kid-2 turn-front
} else {
do-animation chosen-kid-1 turn-front
}
wait-for-actor bernard
do-animation bernard turn-right
wait-for-message
say-line dave "BERNARD! Don't be a tuna head!":
"It's Sandy we're talking about!"
break-until (chars-printed > 28)
do-animation bernard turn-front
break-here
do-animation bernard turn-left
wait-for-message
sleep-for 2 seconds
say-line bernard "Ok."
walk bernard to x,y
break-here
wait-for-actor bernard
do-animation bernard turn-front
}
if (state-of select-razor is ON) {
say-line razor "I heard Dr. Fred was kinda cute."
wait-for-message
}
if (state-of select-syd is ON) {
say-line syd "Let's do it."
wait-for-message
}
if (state-of select-jeff is ON) {
say-line jeff "I thought we were going to the beach!"
wait-for-message
}
if (state-of select-michael is ON) {
say-line michael "Did any of you guys see that movie?":
"Four kids went into this strange house":
"and...uh...never mind."
wait-for-message
}
sleep-for 1 second
label-523:
say-line dave "Ok, let's go rescue Sandy!"
sleep-for 1 second
do-animation dave turn-front
break-here
do-animation chosen-kid-1 turn-front
break-here
do-animation chosen-kid-2 turn-front
}
start-script setup-verbs
}
script setup-verbs {
for selected = 0 to 14 ++ {
delete-verb selected
}
verb push at 0,19 in-slot 0 prep 0 name "Push@@@"
verb pull at 0,20 in-slot 5 prep 0 name "Pull@@@"
verb give at 0,21 in-slot 10 prep 4 name "Give@@@"
verb open at 7,19 in-slot 1 prep 0 name "Open@@@@"
verb close at 7,20 in-slot 6 prep 0 name "Close@@@"
verb read at 7,21 in-slot 11 prep 0 name "Read@@@@"
verb walk-to at 15,19 in-slot 2 prep 0 name "Walk to@@"
verb pick-up at 15,20 in-slot 7 prep 0 name "Pick up@@"
verb what-is at 15,21 in-slot 12 prep 0 name "What is@@"
verb unlock at 24,19 in-slot 3 prep 2 name "Unlock@@"
if (not meteor-controls-computer) {
verb new-kid at 24,20 in-slot 8 prep 0 name "New kid@"
}
verb use at 24,21 in-slot 13 prep 255 name "Use@@@@@"
verb turn-on at 32,19 in-slot 4 prep 0 name "Turn on@"
verb turn-off at 32,20 in-slot 9 prep 0 name "Turn off"
verb fix at 32,21 in-slot 14 prep 2 name "Fix@@@@@"
revert-sentence
userface 1 unfreeze-scripts cursor-on sentence inventory verbs
}
script setup-verbs-new-kid {
for selected = 0 to 14 ++ {
delete-verb selected
}
verb new-kid-1 at 0,19 in-slot 0 prep 0 name " Dave "
if (chosen-kid-1 is syd) {
verb new-kid-2 at 13,19 in-slot 1 prep 0 name " Syd "
}
if (chosen-kid-2 is syd) {
verb new-kid-3 at 26,19 in-slot 2 prep 0 name "Syd "
}
if (chosen-kid-1 is michael) {
verb new-kid-2 at 13,19 in-slot 1 prep 0 name " Michael "
}
if (chosen-kid-2 is michael) {
verb new-kid-3 at 26,19 in-slot 2 prep 0 name "Michael "
}
if (chosen-kid-1 is wendy) {
verb new-kid-2 at 13,19 in-slot 1 prep 0 name " Wendy "
}
if (chosen-kid-2 is wendy) {
verb new-kid-3 at 26,19 in-slot 2 prep 0 name "Wendy "
}
if (chosen-kid-1 is bernard) {
verb new-kid-2 at 13,19 in-slot 1 prep 0 name " Bernard "
}
if (chosen-kid-2 is bernard) {
verb new-kid-3 at 26,19 in-slot 2 prep 0 name "Bernard "
}
if (chosen-kid-1 is razor) {
verb new-kid-2 at 13,19 in-slot 1 prep 0 name " Razor "
}
if (chosen-kid-2 is razor) {
verb new-kid-3 at 26,19 in-slot 2 prep 0 name "Razor "
}
if (chosen-kid-1 is jeff) {
verb new-kid-2 at 13,19 in-slot 1 prep 0 name " Jeff "
}
if (chosen-kid-2 is jeff) {
verb new-kid-3 at 26,19 in-slot 2 prep 0 name "Jeff "
}
userface 5 freeze-scripts cursor-on sentence verbs
}
script demo-dr-fred-paces {
do {
walk dr-fred to 30,63
break-here
wait-for-actor dr-fred
do-animation dr-fred turn-front
break-here
walk dr-fred to 10,63
break-here
wait-for-actor dr-fred
do-animation dr-fred turn-back
break-here
}
}
script demo-lab-scene {
load-sound tentacle-hop-sound
lock-sound tentacle-hop-sound
load-script demo-dr-fred-paces
sleep-for 2 seconds
put-actor dr-fred at 20,63 in-room lab
put-actor nurse-edna at 4,68 in-room lab
put-actor weird-ed at 34,50 in-room lab
put-actor purple-tentacle at 45,63 in-room lab
lock-costume purple-tentacle-costume
do-animation nurse-edna turn-right
do-animation weird-ed turn-back
current-room lab
camera-at 20
start-script demo-dr-fred-paces
sleep-for 3 seconds
say-line nurse-edna "How long do we have to stay down here?"
wait-for-message
sleep-for 1 second
stop-script demo-dr-fred-paces
walk dr-fred to 15,63
wait-for-actor dr-fred
break-here
do-animation dr-fred turn-front
sleep-for 2 seconds
do-animation dr-fred turn-left
say-line dr-fred "Shh... I think I hear something!"
wait-for-message
do-animation weird-ed turn-left
say-line weird-ed "I miss my hamster."
wait-for-message
walk dr-fred to weird-ed within 5
break-here 2
do-animation dr-fred chore-255
break-here
do-animation dr-fred turn-right
say-line dr-fred "Quiet! I think I hear someone upstairs!"
wait-for-message
walk nurse-edna to weird-ed within 4
say-line nurse-edna "Oh great! Who forgot to lock the door?"
wait-for-message
do-animation weird-ed turn-back
sleep-for 1 second
walk dr-fred to purple-tentacle within 5
say-line dr-fred "PURPLE TENTACLE!"
break-here 2
do-animation dr-fred chore-255
wait-for-message
walk purple-tentacle to dr-fred within 4
wait-for-actor purple-tentacle
say-line purple-tentacle "Yes sir, Dr. Fred SIR!"
wait-for-message
say-line dr-fred "Go upstairs and check it out!"
wait-for-message
say-line purple-tentacle "Yes sir!"
start-script demo-dr-fred-paces
walk purple-tentacle to lab-door-left
wait-for-actor purple-tentacle
state-of lab-door-left is OPEN
start-sound open-door-sound
sleep-for 1 second
put-actor purple-tentacle in-the-void
state-of lab-door-left is CLOSED
start-sound close-door-sound
walk weird-ed to 34,70
camera-follow weird-ed
sleep-for 1 second
do-animation nurse-edna turn-front
wait-for-actor weird-ed
say-line weird-ed "I really DO miss my hamster!"
wait-for-message
sleep-for 1 second
current-room room-0
stop-script demo-dr-fred-paces
}
script demo-sandy-examines-books {
selected = 4
x = 17
do {
walk sandy to x,50
wait-for-actor sandy
do-animation sandy turn-back
x += 5
selected -= 1
sleep-for 4 seconds
} until (selected == 0)
}
script demo-purple-follows-sandy {
do {
break-here 2
walk purple-tentacle to sandy within 2
}
}
script demo-review-quotes {
sleep-for 5 seconds
verb give at 0,20 in-slot 2 prep 0 name "`Game of the Year`"
verb give at 0,21 in-slot 3 prep 0 name " - Analog Science Fiction Magazine"
verb give at 0,22 in-slot 4 prep 0 name " "
userface 0 verbs
sleep-for 6 seconds
verb give at 0,20 in-slot 2 prep 0 name "`Most innovative game of 1987`"
verb give at 0,21 in-slot 3 prep 0 name " - Computer Entertainer"
verb give at 0,22 in-slot 4 prep 0 name " "
userface 0 verbs
sleep-for 5 seconds
verb give at 0,20 in-slot 2 prep 0 name "`Best of 1987 Award`"
verb give at 0,21 in-slot 3 prep 0 name " - Commodore Magazine"
userface 0 verbs
sleep-for 4 seconds
verb give at 0,20 in-slot 2 prep 0 name "`Game of the Year`"
verb give at 0,21 in-slot 3 prep 0 name " - Isaac Asimov Science Fiction Magazine"
verb give at 0,22 in-slot 4 prep 0 name " "
userface 0 verbs
sleep-for 4 seconds
verb give at 0,20 in-slot 2 prep 0 name "`Best game idea of 1987`"
verb give at 0,21 in-slot 3 prep 0 name " - Happy Computer"
userface 0 verbs
sleep-for 4 seconds
verb give at 0,20 in-slot 2 prep 0 name "`Plenty of laughter among the chills^"
verb give at 0,21 in-slot 3 prep 0 name "the animation and graphics are superb^"
verb give at 0,22 in-slot 4 prep 0 name "the detail is exceptional.`"
verb give at 0,23 in-slot 5 prep 0 name " - COMPUTE!'s Gazette"
userface 0 verbs
sleep-for 8 seconds
verb give at 0,20 in-slot 2 prep 0 name " "
verb give at 0,21 in-slot 3 prep 0 name "`As funny as it is fun.`"
verb give at 0,22 in-slot 4 prep 0 name " - A+ Magazine"
verb give at 0,23 in-slot 5 prep 0 name " "
userface 0 verbs
sleep-for 3 seconds
verb give at 0,20 in-slot 2 prep 0 name "`There are ingenious puzzles to be"
verb give at 0,21 in-slot 3 prep 0 name "solved as you explore the mansion"
verb give at 0,22 in-slot 4 prep 0 name "and meet its inhabitants.`"
verb give at 0,23 in-slot 5 prep 0 name " - The New York Times"
userface 0 verbs
sleep-for 8 seconds
verb give at 0,20 in-slot 2 prep 0 name "`Diabolically fun^wildly entertaining^"
verb give at 0,21 in-slot 3 prep 0 name "a cross between 'The Rocky Horror"
verb give at 0,22 in-slot 4 prep 0 name "Picture Show' and 'The Addams Family'.`"
verb give at 0,23 in-slot 5 prep 0 name " - Columbia Daily Tribune"
userface 0 verbs
sleep-for 8 seconds
}
script demo-opening {
cut-scene {
override label-163
load-costume falling-meteor-costume
lock-costume falling-meteor-costume
load-room maniac-mansion-logo
lock-room maniac-mansion-logo
load-script opening-meteor-fall
lock-script opening-meteor-fall
load-sound boom-sound
current-room mansion-panorama
camera-at 60
sleep-for 2 seconds
print-line "Twenty years ago today..."
sleep-for 3 seconds
start-script opening-meteor-fall
break-until (script-running opening-meteor-fall is false)
sleep-for 1 second
start-music maniac-mansion-theme
draw-object mansion-lights-5
sleep-for 30 jiffies
draw-object mansion-lights-4
sleep-for 30 jiffies
draw-object mansion-lights-3
sleep-for 30 jiffies
draw-object mansion-lights-2
sleep-for 30 jiffies
draw-object mansion-lights-1
sleep-for 3 seconds
sleep-for 4 seconds
sleep-for 4 seconds
sleep-for 4 seconds
sleep-for 4 seconds
sleep-for 4 seconds
sleep-for 4 seconds
current-room maniac-mansion-logo
camera-at 20
camera-pan-to 220
break-until (camera-x == 180)
label-163:
stop-script opening-meteor-fall
unlock-room maniac-mansion-logo
unlock-costume falling-meteor-costume
unlock-script opening-meteor-fall
}
}
room boot {
sounds {
"sfx\button-press-sound" button-press-sound
}
enter {
lights is 2
load-sound button-press-sound
load-script select-kid
}
exit {
}
object select-syd {
name is ""
verb default-verb {
foo = 1
print-line "Syd - an aspiring musician tring to",
"start his own new-wave band."
++x
start-script select-kid
}
}
object select-razor {
name is ""
verb default-verb {
foo = 2
print-line "Razor - lead singer for the punk band,",
"`Razor and the Scummettes.`"
start-script select-kid
}
}
object select-michael {
name is ""
verb default-verb {
foo = 4
print-line "Michael - award winning photographer",
"for the college newspaper."
start-script select-kid
}
}
object select-bernard {
name is ""
verb default-verb {
foo = 5
print-line "Bernard - president of the physics club",
"and winner of the college's Geek Award."
start-script select-kid
}
}
object select-wendy {
name is ""
verb default-verb {
foo = 6
print-line "Wendy - wants to be a famous novelist",
"and is waiting for a big break."
start-script select-kid
}
}
object select-jeff {
name is ""
verb default-verb {
foo = 7
print-line "Jeff - usually hangs out on the beach,",
"responds to the name, Surfer Dude."
start-script select-kid
}
}
object select-dave {
name is ""
verb default-verb {
start-sound button-press-sound
print-line "Dave - Sandy's boyfriend.",
"Organizer of the rescue effort."
}
}
object start-game {
name is ""
verb default-verb {
start-sound button-press-sound
if (selected < 3) {
print-line " Please select two kids besides Dave."
} else {
bar = 1
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment