THESPIANS --------- This is a program which will act out plays on IRC. To invoke it, run it from the command line like so: $ perl thespians.pl play-file ...where "play-file" is the filename of a properly formatted play. Play files for _Macbeth_ and _Oedipus Rex_ are included with the script. The script takes the following command-line options: -d [seconds] Set the delay between the execution of each line. -s [server] Tell the script which IRC server to connect to. -c [channel] Tell the script which channel to hold the performance on. -l Turn on line-length-based delays. In addition to the normal delay between lines, it'll add an extra dynamic delay based on the length of the line being spoken. Good for non-verse plays, where you have lines of wildly varying lengths. -p Run the play in "preview" mode. It'll race through the entire play in a matter of seconds without doing anything on-channel. Good for debugging play files before you actually stage a performance... nothing sucks like the bots crashing in the middle of the play! The format for the play files goes like this: Each actor's lines begin with the actor's name, followd by a colon: Messenger: So please you, it is true; our Thane is coming. One of my fellows had the speed of him, Who, almost dead for breath, had scarcely more Than would make up his message. This will make 'Messenger' speak four times, one for each line. Every non-command line from there on will be interpreted as his text, until a different actor is commanded to speak. Indentation and blank lines are ignored. Lines which begin with a tilde ("~") will be displayed centered on the screen (assuming a terminal width of 80 columns) by the stage manager. Do this for titles, act/scene announcements, and other important meta-data. Lines which begin with a pound sign ("#") are comments which will be ignored by the interpreter. Lines which begin with a _ are commands to the play interpreter. The following commands exist: _enter [ ...] Causes the actor with the given nick to enter the scene. Any number of nicks can be specified on the same line. _exit [ ...] Causes the actor with the given nick to leave the scene. Throws a fatal error if the given actor isn't in the scene already. Any number of nicks can be specified on the same line. _exeunt Causes all actors to exit the scene. _pause [optional: a number] Causes the interpreter to stop talking for N seconds (the default is 5 seconds, if no arguments are given.) You may wish to do this in between acts and scenes. _action Causes the actor named to perform a /me action. _event Causes the stage manager to speak the given text. Good for scene-setting and describing events as they happen. For offstage or "within" voices, I have the Narrator speak the text like so: "_event [Banquo, from within.] Give us a light there, ho!". I have used the convention of _pause'ing between each scene, and _pause'ing for 10 seconds between acts. Have fun! If you take the time to convert any plays to the above-described format, please send them to me so I can post them for the world to see at . Thanks! Dennis Taylor dennis@funkplanet.com February 5, 2001 Changelog: 1.0: Initial release. 1.1: Added the command-line options. Made the nick for the "ALL" actor configurable. Fixed a couple bugs in the Macbeth script. Allowed _enter and _exit to take multiple nicks. 1.2: Added the "preview" -p option, because it was horribly annoying to debug things by letting plays run overnight. Split the between-lines delay into a static delay and a separate delay based on line length, and added the -l option for it. 1.3: The preview feature was horribly broken. I fixed it. Doh.