-
-
Save Jither/bdb253854c6938675e9d525157e0b3fb to your computer and use it in GitHub Desktop.
BOOT.SCU
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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