Stage (#820)(an instance of Generic Secured Post-Apocalypse Room made by Marcus)     The Stage is wide. Up here it's easy to feel       all eyes are on you.            From here you can go down to the theater, or       east past the wings to go backstage.       You see feather boa here. EXITS:       The curtains are closed. You can squeeze through them and descend to the theater. [ theater ] O.o.f. Theater. You slide past a curtain, down the steps and into the ruined theater.       West from here you can go back behind ratty curtains. [ backstage ] Backstage. Parting the dusty, cruddy curtains, you come backstage. VERB SOURCE CODE: lights house*lights:
" Toggles the .dark property on #819, the theater, and makes appropriate announcements";
dark = #819.dark;
#823:announce_all("You hear the chunk of a relay.");
if (!dark)
if (!#820.curtain)
for onstage in (#820:contents())
onstage:tell("The houselights are going down. The theater grows quiet.");
onstage:tell("All eyes are on you.");
endfor
endif
#819:announce_all("The lights are dimming.");
suspend(3);
#819:announce_all("As the theater darkens it gets quieter.");
suspend(3);
else
if (!#820.curtain)
for onstage in (#820:contents())
onstage:tell("The houselights are coming up.");
endfor
endif
#819:announce_anyway("The house lights are coming up in the theater.");
suspend(2);
#819:announce_anyway("You can talk again...");
endif
#819.dark = !#819.dark;
.
cur*tains:
if (this.curtain)
#823:announce_all("The curtains on stage sweep open.");
this:announce_all("The curtains draw open to reveal the house.");
for audience in (#819:contents())
audience:tell("With a scrape and a rush the curtains open on stage.");
audience:tell_lines(#821.description);
audience:tell_lines(#820.stageset);
endfor
for onstage in (this:contents())
onstage:tell_lines(#822.house_desc);
endfor
if (#819.dark)
this:announce_all("Is there an audience out there? it's watching you.");
else
this:announce_all("The house lights are on.");
endif
else
#823:announce_all("The curtains on stage sweep closed.");
for onstage in (this:contents())
onstage:tell("The curtains are closing -- they close.");
endfor
#819:announce_anyway("With a jerk and a squeak the curtains on stage sweep closed.");
endif
this.curtain = !this.curtain;
.
announce:
pass(@args);
if (!#820.curtain)
for audience in (#819:contents())
audience:tell("[On Stage]: ", @args);
endfor
endif
.
announce_all:
pass(@args);
if (!#820.curtain)
for audience in (#819:contents())
audience:tell("[On Stage]: ", @args);
endfor
endif
.
announce_all_but:
pass(@args);
if (!#820.curtain)
for audience in (#819:contents())
audience:tell("[On Stage]: ", @args[2..length(args)]);
endfor
endif
.
look_self: pass(@args); player:tell_lines(this.stageset); . find_script:
"looks at the stuff on the stage. The first thing with a :play_script verb is presumed
to be playable; it's returned";
for item in (#820:contents())
scripted = $object_utils:has_verb(item, "play_script");
if (scripted)
return item;
endif
endfor
return #-1;
.
play:
if (#820.playing)
if (player.location == #820)
player:tell("A performance is running! You're spoiling it! Get off the
stage!");
else
player:tell("A performance is already running...you can grab a seat in the
back of the theater...");
endif
else
#820.playing = 1;
playable = #820:find_script();
if (valid(playable))
#819:announce_anyway("There seems to be some action. A show is going to
start...");
suspend(5);
#819:announce_anyway("There's a distinct sense of expectation on the stage...");
suspend(4);
if (!#819.dark)
#820:lights();
endif
if (#820.curtain)
#820:curtains();
endif
suspend(5);
playable:play_script();
while (playable.playing)
suspend(playable.delay);
endwhile
suspend(5);
#820:curtains();
suspend(3);
#820:lights();
#820.playing = 0;
else
player:tell("The house is quiet. There's nothing doing.");
#820.playing = 0;
endif
endif
.
quiet:
" interrupts the script in mid-performance... ";
playable = #820:find_script();
if (valid(playable))
if (playable.playing)
kill_task(playable.runtask);
playable.playing = 0;
this.playing = 0;
endif
#819:announce_anyway("Whatever's on the stage seems to have stopped abruptly
in the middle...");
endif
.
emote:
name = this:get_name(player);
if ((argstr != "") && (argstr[1] == ":"))
this:announce_all(name, argstr[2..length(argstr)]);
else
this:announce_all(name, " ", argstr);
endif
.
get_name:
who = args[1];
name = who.name;
if ($object_utils:has_property(who, "costume"))
costume = who.costume;
if ($object_utils:has_property(costume, "role_msg"))
name = costume.role_msg;
endif
endif
return name;
.
`*:
" Hacked from the stage-feature object, #112. ";
name = verb[2..length(verb)];
who = player.location:match_object(name);
if ($command_utils:object_match_failed(who, name))
return;
endif
player.location:announce_all(this:get_name(player), " [to ", this:get_name(who),
"]: ", argstr);
.
[*: " hacked from #112, the Stage-talk FO. "; player.location:announce_all((((this:get_name(player) + " ") + verb) + " ") + argstr); . ]*:
" Hacked from #112, the Stage-talk FO. ";
player.location:announce_all("[", (((this:get_name(player) + " ") + verb[2..length(verb)])
+ (argstr ? " " + argstr | "")) + "]");
.
say:
player:tell("You say, \"", argstr, "\"");
this:announce(this:get_name(player), " says, \"", argstr, "\"");
.
PROPERTY DATA:       curtain       stageset       playing |