Speed-if Getting started as an IF author

I recommend doing a speed-if, according to the parameters. It makes you pick choices as a coder/IF - - Not that it’s relevant, but it says, “Better than turkey sandwiches!:trade_mark:” Wait, sorry. It says Turn-Key Sandwiches, which means doesn’t make much sense. [rev]

Rob

3 Likes

purp_040602025.pdf (33.1 KB)

Constant Story “The Last Ray of Hope”;
Constant Headline “^Speed-IF by jrw^”;
Include “parser”;
Include “custom_english”;
Include “verblib”;
Include “grammar”;
Class Room
with
cant_go “There’s nothing in that direction, specifically.”,
has light;
Room StartRoom “At the Restaurant”
with
description "You are running late tonight, but not too much.
The fact that it’s raining dampens your socks but not
your mood. Tonight will be a triumph, you feel certain. ",
e_to BackAlley,
has light;
Object → restaurant “restaurant”
with name ‘restaurant’ ‘restau’ ‘chez’ ‘louis’ ‘xiv’ ‘door’,
description "It’s round and green with a 3-foot string. ",
describe "The restaurant, Chez Louis XIV, is up ahead.
The lights are off. A slick narrow alley leads
to the back entrance. ",
before [;
Examine, Open, Enter: "Best to enter through the kitchen, via
the back alley. ";
Go: "You’re already at the restaurant. The service entrance
is around the back, through the alley. ";
],
has scenery;
Object → alley_scenery “narrow alley”
with name ‘alley’ ‘back’ ‘narrow’ ‘slick’,
description “The narrow alley leads to the back entrance. The
front door is for the customers to use.”,
before [;
Enter, Go: <>;
],
has scenery
;
default: "You can’t do that sort of thing. ";
Object Morons “you morons!”
with name ‘morons’ ‘dolts’ ‘clods’,
Message [;
if ( noun == kitchenDoor || noun == bucket ) {
} ],
has pluralname
give self general;
"^How many times have you told
these moronic clowns you call a
staff never to leave the door open? ";

;
Room BackAlley “Back Alley”
with name ‘back’ ‘alley’ ‘puddle’ ‘puddles’ ‘puddly’ ‘pot’ ‘hole’ ‘holes’
‘pot-holes’ ‘pothole’ ‘potholes’,
description "The alley is rutted and full of puddly pot-holes,
but is generally clean enough as far as the back sides
of eateries are concerned. ",
in_to kitchenDoor,
w_to Startroom,
after [;
default:
if ( turns > 0 && Morons hasnt general ) Morons.Message();
], has light;
Object → bucket “bucket”
with name ‘plastic’ ‘bucket’ ‘pail’,
description [;
print "It’s a standard plastic bucket, capable of holding
a couple of gallons of water. ";
new_line; rtrue;
],
describe [;
if ( propping_container has general )
"^The slate gray door to the kitchen is propped
open with a bucket. ";
rfalse; ],
before [;
Open, Close: "You don’t need to do that. ";
Prop:
if ( noun ~= kitchenDoor ) { rfalse; }
if ( propping_container has general ) {
}
"The bucket is already propping the door open. ";
<>;
Take:
if ( propping_container has general ) {
;
give kitchenDoor ~open;
print “^The kitchen door slowly squeezes
itself shut with a heavy, solid click.^”;
} Assault:
if ( verb_word == ‘kick’ ) {
deadflag = true;
"Oh dear, and in the prime of life, too. ";
rfalse;
],
has open container
;
! to-do: if you pick up the bucket, the door slams shut. (done 06-04-25
1:45pm)
!
Object → propping_container “[propping_container]”
}

with name ‘[propping_’,
description “[This item cannot be examined.]”,
before [;
Prop: give self general;
#Ifdef DEBUG; print “[performing prop action]^”; #Endif;
give kitchenDoor open;
print “You prop the kitchen door open with the plastic
bucket. Just like you tell everyone never to do.^”;
keep_silent = true;
;
rtrue;
UnProp:
give self ~general;
#Ifdef DEBUG; print “[performing unprop action]^”; #Endif;
rtrue;
default: "You cannot interact with this item. ";
],
! ( self has general ) means that the bucket is propping the door open
has static scenery general
;
! to-do: Allow re-propping the door open again.
!
Object → kitchenDoor “kitchen door”
with name ‘kitchen’ ‘entrance’ ‘door’ ‘slate’ ‘gray’ ‘grey’,
description [;
print "The slate gray door leads directly in to the
kitchen. ";
if ( self has open ) {
if ( propping_container has general ) "It’s propped
open with a plastic bucket. ";
else "It’s open. ";
}
"It’s closed. ";
],
door_dir in_to,
door_to BackKitchen,
before [;
Close:
if ( propping_container has general )
"You can’t, because the bucket is propping it open. ";
Prop: if ( second == bucket ) <>;
"You can’t prop ", (the) noun, " open with that. ";
],
has static door openable open lockable ~locked scenery
;
Object → dumpster “trash dumpster”
with name ‘trash’ ‘dumpster’,
description [;
if (self hasnt open) {
"A trash dumpster sits with its lid closed,
attracting a few flies. ";
}
else {
"A trash dumpster sits with its lid open, redolent
of food waste. ";

} ],
before [;
Enter: "That’s not something you would obligingly enter. ";
Search: "Until you have a specific thing you’re looking
for, you are disinclined to poke around in the
food waste and garbage. ";
],
has container static openable enterable
;
Room BackKitchen “Back Kitchen”
with
description “The back entrance to the kitchen is sort of a half-
storeroom
solid
slash loading area, covered with rubber floor mats. The
steel door leading to the refrigerated storage is east, and
the main kitchen is to the north. “,
e_to “You can’t seem to progress past this point. “,
n_to “You can’t seem to progress past this point. “,
out_to BackAlley,
!A delivery truck squeezes into the alley and parks.
! • The name on the side of the truck is “Sealife Food Ltd.” A painted logo of a large
!fish springing from foamy water has a little quote underneath in small print.
! • ◦
“Better than turnkey sandwiches!
!:trade_mark:” *Wait, sorry. It says Turn-Key Sandwiches, which means this isn’t important and doesn’t make !
!much sense. [rev] —-jrw 01:38am the tuesday after Memorial Day monday
[ Initialise;
#Ifdef DEBUG;
location = BackAlley;
if ( player has general ) HitAnyKey();
else print”^”;
#Ifnot;
location = StartRoom;
style bold;
print “^^^Krash! Kersploosh!!^”;
style roman;
print “^The wine, a 1932 Bordeaux, drips off of your hat,
flows over your chef whites (now a deep russet purple)
and pools on the tile floor. Before you can properly
react, the other door – the one to the back alley,
that you thought you’d locked – bursts open and a
tall figure comes right in, waving a fishing pole.^”;
print "
print "
print "
print "
HitAnyKey();
#Endif;
;
Not that it’s relevant, but it says,
~Behold!!~ he shouts. ~I have returned!~^”;
~You?!?~^”;
~The very same!~^”;
~But… but…~ you splutter. ~You… you are…~^”;

];
[QuitySub; quit;];
Verb meta ‘quity’

  • → Quity;
    [ HitAnyKey i;
    print “^”;
    i = 0->33; if (i > 30) i = (i-30)/2;
    print “[Press a key]^”;
    @read_char 1 → i;
    print “^”;
    ];
    Verb ‘prop’
    * noun ‘with’ held
    → Prop * noun ‘open’ ‘with’ held → Prop
  • ‘open’ noun ‘with’ held → Prop;
    [PropSub; "You can’t prop that open with anything. "; ];
    Verb ‘fakes.’ * → Unprop;
    [UnPropSub; “Unproppable.”; ];
    Verb ‘kick’
  • noun → Assault;
    [AssaultSub;
    "Violence is probably not the helpful solution. ";
    ];
    ! speed-if menu
    !A) Right now
    !B) Just a few minutes ago
    ! •
    !C) An hour ago
    ! •
    ! •
    !• ◦x3
    !D) Achievement. Log.
    !
    !Speed-IF Purple
    !
    !Write a game where the PC is purple, at least to start with, for whatever reason. The subsequent
    !tale must include a big white chef’s hat, gravel, the triumphant return of somebody or something,
    !and an evil fish (or any form of sealife.) Bonus points for including an irrelevant misquote about
    !turkey sandwiches, a strong anti-drugs moral/message, a telegram and one thing Gunther really hates.
    !You have two hours from 20:00 to 22:00 hours MUD time.
    !
    figure it out
    usually action
    new puzzle

You can format code by using the </> button or by surrounding the code with ``` (or ` for in-line code).

This is a code block.

It supports:
	indentation!
	so now you can
		nest your code as much
	or as little
as you need.
3 Likes

! Insert more routines here

[ AfterPrompt;
	if ( verb_word == 'superbrief' || verb_word == 'short' ) {
		box	
			"                                                         "
			"      I will be brief, for my short date of breath       "
			"      is not so long as it is a tedious tale.            "
			"                                                         "
			"                           -- William Shakespeare        "
			"                                                         ";
	}
	else if ( verb_word == 'verbose' || verb_word == 'long' ) {
		box	
			"                                                         "
			"      Words are flowing                                  "
			"          out like endless                               "
			"               rain into a paper cup                     "
			"                                      -- J. Lennon       "
			"                                                         ";
	}
	else if ( verb_word == 'brief' || verb_word == 'normal' ) {
		box	
			"                                                         "
			"      Cut to the chase, will ya?                         "
			"                                                         "
			"                                      -- Anon            "
			"                                                         ";
	}
	else if ( ParkingLot has general ) {
		give ParkingLot ~general;
		box	
			"                                                         "
			"              Mr. Anderson! Welcome back.                "
			"                                                         "
			"                            -- Agent Smith               "
			"                                                         ";
	}
];

[ HitAnyKey;
	print "^[Hit any key.]^^";
	KeyCharPrimitive();
	rtrue;
];

[ boldface text;
	glk_set_style(style_Emphasized); 
	print (string) text;
	glk_set_style(style_Normal);
];

Include "Grammar";

[ QuitySub; 
	#ifndef DEBUG;
	print "Bye Emily!^^^";
	#endif;
	quit; 		! Fast-quit routine I always include to speed up testing. 
];

[ Note n i pn;
	for ( i=0 : i < footnote_count : i++) {
		if ( n == footnotes_seen->i ) 
			pn=i;
	}
	if ( footnote_count == MAX_FOOTNOTES )
		"** MAX_FOOTNOTES exceeded! [BUG]**";
	if ( pn == 0 ) {
		pn = footnote_count++;
		footnotes_seen->pn = n;
	}
	if ( links_enabled )
		glk_set_hyperlink(pn+1);
	print "Footnote ", pn + 1;
	if ( links_enabled )
		glk_set_hyperlink(0);
];

[ FootnoteSub n;
	if ( noun > footnote_count ) {
		print_ret "No footnote [", noun, "] has been mentioned.^";
	}
	if ( noun == 0 )
		"Footnotes count upward from 1. ";
	
	n = footnotes_seen->( noun - 1 );
	print "[", noun , "] ";
	
	switch( n ) {
		1: manual_sidebar.read_footnote(); rtrue;
		2: "Those responsible have been sacked. ";
		3: "But please don't start thinking that every implied action used 
			for ornamental detail will be implemented merely because 
			this one is. ";
	}
];

![ Link linktext num;
!	if ( links_enabled )
!		glk_set_hyperlink(num);
!	print (string) linktext;
!	if ( links_enabled )
!		glk_set_hyperlink(0);
!	rtrue;
!];

[ HintSub;
	"This release of No Time to Lose does not have a hint system. We 
	apologize for the inconvenience. ";
];

[ CreditsSub;
	"Thanks go to Graham Nelson for Inform, and to Andrew Plotkin for
	Glulx Inform. ";
];

[ AboutSub;
	Banner();
	print "Version Alpha 4.00.^^";
	boldface( "No Time to Lose" );
	print " is a sequel to the text adventure game ", (boldface) "First Things First",
	". The story picks up ten hours after an assumed winning conclusion of ",
	(boldface) "FTF", ", and the game trusts that the main character knows and 
	remembers everything he just finished doing the night before. Players who 
	have not experienced the first game, and who therefore do not come in 
	with the same ready knowledge as the PC, will likely find one or two things 
	confusing at first. However, the game has been peppered with occasional 
	reminders of the previous installment of the story, ones that may be useful 
	for both new and returning players.^^
	
	Remember to examine everything, and make liberal use of your ability to 
	search. When in doubt, revisit places; sometimes, you will find something 
	new in a place you thought you had already scoured. It is possible to lose 
	or destroy items that you will need later on, so before you do anything 
	irrevocable, remember to save your game. Don't be reckless, and the game 
	will try to play fair.^^";
	
	print "Use the FULLSCORE (FULL) command to keep track of how far 
		along you are in the story. ";
	
!	print "The EXITS (XITS) command will remind you of which
!		directions are open to you.^^
	
!	print "This game is free, but if you would like to make a donation in 
!	support of it, please visit http://jrwdigitalmedia.com/ftf/nttl/ 
!	and use the PayPal link to do so. And feel free to drop me 
!	an email at jrw@jrwdigitalmedia.com.^^";
	
	print_ret "Thank you for playing ", (boldface) "No Time to Lose", ". Good luck! ";
];

[ ReadSub; <<Examine noun>>; ];
[ JumpToSub; if (location==thedark) return L__M(##LookUnder,1);
	"There's no reason to jump to that. "; ];
[ JumpToSillySub; "You make some sudden and unreasonable snap judgments. "; ];
[ ClimbOutSub; "That's not something you can climb out of. "; ];
[ UntieSub; 
	if (location==thedark) return L__M(##LookUnder,1);
	"There's no obvious way to do that. "; ];
[ PutUnderSub; "You don't need to put anything under that. "; ];

[ MakeSub; "That's not something you know how to make. "; ];
[ OldMagicSub; "You're a time traveller, not a magician. "; ];
[ XyzzySub; "Nothing happens. "; ];
[ CrossSub; 
	if (location==thedark) return L__M(##LookUnder,1);
	"That isn't something you can cross. "; ];
[ PrySub; 
	if ( noun == second ) "You can't pry something with itself. ";
	"That's not going to work. "; 
];
[ TurnWithSub; print_ret "You can't effectively ", (address) verb_word, 
	" ", (the) noun, " with ", (ThatOrThose) second, ". "; ];
[ LookBehindSub; 
	if (location==thedark) "It's too dark to see anything. ";
	print_ret "There's nothing behind ", (the) noun, ". "; 
];
[ ZipSub; "That doesn't have a zipper. "; ];

[ ExitSub p;
	if ( BeforeRoutines() == 1 ) rtrue;
	p = parent( player );
	if ( p == location || ( location == thedark && p == real_location ) ) {
		if ( ( location.out_to ~= 0 ) || 
			( location == thedark && real_location.out_to ~= 0 ) ) 
			<<Go out_obj>>;
		return L__M( ##Exit, 1 );
	}
	if ( p has container && p hasnt open )
		return L__M( ##Exit, 2, p );
	
	move player to parent( p );
	
	if ( AfterRoutines() == 1 ) rtrue;
	if ( RunRoutines( p, after ) ~= 0 ) rtrue;	! Make after[ Exit: ] work, darnit 
	if ( keep_silent == 1 ) rtrue;
	L__M( ##Exit, 3, p ); LookSub(1);
];

[ InvSub i j items clothes;
	if ( child( player ) == 0 ) "You are naked and empty-handed. ";
	if ( inventory_style == 0 ) 
		inventory_style = FULLINV_BIT + INDENT_BIT + NEWLINE_BIT + RECURSE_BIT;
	
	print "You are carrying";
	
	objectloop( i in player ) {
		if ( i hasnt worn ) { give i workflag; items++; }
		else { give i ~workflag; clothes++; }
	}
	if ( items == 0 ) {
		print " nothing. ";
		if ( inventory_style & NEWLINE_BIT ) new_line;
	}
	else {
		if ( inventory_style & ENGLISH_BIT ) print " ";
		else print ":^";
		
		WriteListFrom( child(player), inventory_style + WORKFLAG_BIT );
		if ( inventory_style & ENGLISH_BIT ) print ". ";
	}
	
	if ( inventory_style & NEWLINE_BIT ) new_line;
	if ( clothes == 0 ) {
		print "You are completely naked.^";
	}
	else {
		print "You are wearing";
		
		objectloop( i in player ) {
			if ( i has worn ) {
				give i workflag;
				if ( i == backpack ) j = j + 500;
				j++;
			}
			else {
				give i ~workflag;
			}
		}
		if ( j == 501 ) {
			print " ";
			WriteListFrom( child(player), FULLINV_BIT + ENGLISH_BIT + 
				RECURSE_BIT + WORKFLAG_BIT );
			print ". You are otherwise completely naked.^";
		}
		else {
			if ( inventory_style & ENGLISH_BIT ) print " ";
			else print ":^";
			
			if ( j > 499 ) {
				give backpack ~workflag;
				WriteListFrom( child(player), inventory_style + WORKFLAG_BIT );
				
				objectloop( i in player ) {
					if ( i has workflag ) give i ~workflag;
				}
				give backpack workflag;
				
				if ( inventory_style & ENGLISH_BIT ) 
					print ". You are also wearing ";
			}
			WriteListFrom( child(player), inventory_style + WORKFLAG_BIT );
			if ( inventory_style & ENGLISH_BIT ) print ".^";
		}
	}
	
#IFNDEF MANUAL_PRONOUNS;
	objectloop( i in player ) PronounNotice(i);
#ENDIF;
	
	AfterRoutines();
];

[ FallSub; "You'd only hurt yourself. "; ];
[ FallOffSub; "You'd only just hurt yourself. "; ];

[ PointSub; print_ret "Very well. You point at ", (the) noun, 
	". Nothing practical results from your indications. "; ];
[ AimSub; 
	print_ret "I don't know how to aim ", ThatOrThose( noun ), ". ";
];
[ AimAtSub; 
	print "I don't know how to aim ";
	ThatOrThose( noun );
	" at anything. ";
];

[ PullWithSub; print_ret "You can't effectively ", (address) verb_word, 
	" ", (the) noun, " with ", (ThatOrThose) second, ". "; ];
[ SwatSub; "That's not going to do anyone any good. "; ];
[ FlipSub; "That isn't a switch. "; ];

[ ThanksSub; 
	switch( random(2) ) {
		1: "You're welcome. ";
		2: "Think nothing of it, old sport. ";
		3: "Right back atcha. ";
	}
];
[ ThanksVerySub; "You're quite welcome. "; ];
[ WhySub; "Good question. "; ];
[ SarcasticSub; "Oh dear. It does get more fun after this, I promise. "; ];
[ HuhSub; "Well, maybe it'll make sense later. "; ];
[ KickSub; "Don't take your frustrations out on ", (ThatOrThose) noun, ". "; ];
[ BrenBarnSub; "Hey there BrenBarn. "; ];
[ WowSub; "Why thank you. "; ];
[ GiggleSub;
	glk_set_style( style_Emphasized );
	print "Rob says, ~", (address) verb_word, " ", (address) verb_word, "~^"; 
	glk_set_style( style_Normal );
];
[ HarHarSub; "Oh well. I thought it was funny, anyway. "; ];
[ FlushSub; "Beats my two-of-a-kind. "; ];
[ SitAtSub; "That doesn't make much sense. "; ];

[ WaveToSub; print_ret "You wave to ", (the) noun, ". There is no acknowledgement. "; ];
[ ShootSub; "That isn't something you can shoot. "; ];
[ HeadButtSub; 
	print_ret "You'd need to be in a life or death struggle with ", (the) noun, 
	" before you would even consider doing that. "; 
];
[ HoldSub; 
	if ( noun has worn ) "But you're wearing it. ";
	if ( noun in player ) "You're already holding that. ";
	<<Take noun>>;
];
[ AttackWithSub; 
	if ( noun has animate )
		"Hey you big bully. Stop picking on that little bully. "; 
	"There's no need to take out your frustrations so brutishly. ";
];
[ BlizzoSub;
	<Switchon breakerBox>;
	<Open metalCabinet>;
	<<Switchon liftPowerSwitch>>;
];
[ Blizzo2Sub;
	move flashlight to player;
	<Switchon flashlight>;
	<Blizzo>;
	PlayerTo( lift );
];
[ DunkSub;
	"You can't dunk ", (ThatOrThose) noun, ". ";
];

Verb meta 'footnote' 'note'
	* number						-> Footnote;

Verb meta 'quity' 'xquit'
	*							-> Quity;

[ LookDirection;
	if ( noun in Compass ) rtrue;
	rfalse;
];

Extend 'look'
	* 'around' 						-> Look
	* 'behind' noun					-> LookBehind
	* 'out' noun					-> Search
	* noun = LookDirection				-> Examine;

Extend 'jump'
	* noun						-> JumpOver
	* 'on'/'onto'/'in'/'into' noun		-> Enter
	* 'down'/'d//' noun				-> Enter
	* 'to' noun						-> JumpTo
	* 'to' 'conclusion'/'conclusions'		-> JumpToSilly
	* 'out' 						-> Exit
	* 'off'/'out' noun				-> Exit
	* 'across' noun					-> JumpOver;

Extend only 'cross' replace
	* noun						-> Cross
	* 'over' noun					-> Cross;

Extend 'read' first 
	* legible                        		-> Read;

Extend 'climb'
	* 'out' noun					-> ClimbOut
	* 'down'/'d//' noun				-> Climb
	* 'on'/'onto' noun				-> Climb;

Extend 'turn' last
	* noun 'right'/'clockwise'			-> Turn
	* noun 'left'/'counterclockwise'		-> Untie
	* noun 'counter' 'clockwise'			-> Untie
	* noun 'to' 'the' 'right'			-> Turn
	* noun 'to' 'the' 'left'			-> Untie
;

Extend only 'unscrew'
	* noun 						-> Untie
	* noun 'with' noun				-> TurnWith
;

Verb 'untie' 'detach' 'unfasten' 'unfix' 'unravel'
	* noun                           		-> Untie
	* noun 'from' noun				-> Untie
	* noun 'with' noun				-> TurnWith;

Extend 'put'
	* held 'under' noun				-> PutUnder;

Verb 'make'
	* noun						-> Make;

Verb meta 'gnusto' 'rezrov' 'blorb' 'nitfol' 'frotz' 'gondar' 
	'krebf' 'zifmia' 'cleesh' 'vaxum' 'exex' 'ozmoo' 'melbor' 
	'filfre' 'izyuk' 'guncho' 'caskly' 'kulcad' 
	*							-> OldMagic
	* noun						-> OldMagic;

Verb meta 'xyzzy' 'plugh' 'y2'
	*							-> Xyzzy;

[ NotHeldCrowbar;
	if ( location == DrainageTrench && noun in surfaceGrate ) rtrue;
	rfalse;
];

Verb 'pry' 'prise'
	* noun 'with' noun = NotHeldCrowbar		-> Pry
	* noun 'with' held				-> Pry
	* 'open' noun 'with' held			-> Pry
	* noun 'open' 'with' held			-> Pry;

Extend 'turn'
	* noun 'with' held				-> TurnWith
	* noun 'to' number				-> SetTo;

Verb 'flip' 
	* noun						-> Flip
	* noun 'on'						-> Switchon
	* noun 'off'					-> Switchoff
	* 'on' noun						-> Switchon
	* 'off' noun					-> Switchoff
	* noun 'with' held				-> TurnWith;

Extend 'set' replace
	* noun						-> Set
	* noun 'to' number				-> SetTo
	* noun 'with' held 				-> TurnWith;

Verb 'roll' 'fold'
	* noun						-> Close
	* 'up' noun						-> Close
	* noun 'up'						-> Close;

Verb 'unroll' 'unfold'
	* noun						-> Open;

Verb 'zip'
	* noun						-> Zip
	* 'open' noun					-> Open
	* noun 'open'					-> Open
	* 'closed'/'shut'/'up' noun			-> Close
	* noun 'closed'/'shut'/'up'			-> Close;

Verb 'unzip'
	* noun						-> Open;

Extend 'stand'
	* 'in' noun						-> Enter;

Verb 'fall' 'plummet'
	* 							-> Fall
	* 'down'						-> Fall
	* 'down' noun					-> Enter
	* 'off' noun					-> FallOff
	* 'out' 'of' noun					-> FallOff;

Verb 'point' 
	* noun						-> Aim
	* 'at' noun						-> Point
	* held 'at' noun					-> AimAt
	* held 'in'/'down'/'into' noun		-> AimAt;

Verb 'aim' 
	* held 'at' noun					-> AimAt
	* held 'in'/'down'/'into' noun		-> AimAt;

Extend only 'shine' replace
	* held						-> Aim
	* held 'at' noun					-> AimAt
	* held 'in'/'down'/'into' noun		-> AimAt
	* held 'under' noun				-> AimAt
	* held 'behind' noun				-> AimAt;

Extend 'pull'
	* noun 'with' held				-> PullWith
	* noun 'down' 'with' held			-> PullWith;

Verb 'hook' 'tug' 
	* noun 'with' held				-> PullWith;

Verb 'flick' 'snap' 'swat'
	* held 'at' noun					-> Swat
	* noun 'with' held				-> Swat reverse;

Verb 'why'
	*							-> Why
	* 'thanks'						-> Thanks
	* 'thank' 'you'					-> Thanks;

Verb 'thank'
	* 'you'						-> Thanks
	* 'you' 'very' 'much'				-> ThanksVery;

Verb 'thanks'
	*							-> Thanks
	* 'a' 'lot'						-> Sarcastic;

Verb 'huh' 'hunh' 'gee'
	*							-> Huh;

[ GrrSub;
	"Aw. Sorry. ";
];

Verb 'wtf' 'wha' 'ugh' 'bah' 'grr' 'rar' 'argh' 'grrr' 'boo' 'blah' 'bleah' 'geez'
	*							-> Grr;

Verb 'kick'
	* noun						-> Kick;

Verb 'mackerel' 
	* 							-> BrenBarn
;

Verb 'zut' 
	* 'alors'						-> BrenBarn
;

Verb 'nice' 'cool' 'wow' 'yay' 'hooray'
	*							-> Wow;

Verb 'hee' 'ha'
	*							-> Giggle
	* 'hee'/'ha'					-> Giggle
	* 'hee'/'ha' 'hee'/'ha'				-> Giggle;

Verb 'hah' 'haw' 'har'
	* 							-> HarHar
	* 'haw'/'har' 					-> HarHar;

Extend 'take' last
	* 'nap'						-> Sleep
	* 'a' 'nap'						-> Sleep
	* 'a' 'whiz'/'piss'/'pee'			-> Strong;

Verb 'piss' 'pee' 'winkle' 'wee-wee' 'whiz'
	* 							-> Strong
	* 'in'/'on' noun					-> Strong;

Verb 'flush'
	* 							-> Flush
	* noun						-> Flush;

Extend only 'sit' 
	* 'at' noun						-> SitAt;

Verb meta 'froof'
	* 							-> Froof;

Extend 'wave'
	* 'at'/'to' creature				-> WaveTo;

Verb 'shoot' 'fire'
	* noun						-> Shoot
	* creature 						-> Shoot
	* creature 'with' noun				-> Shoot
	* noun 'at' creature 				-> Shoot reverse
	* creature 'in' noun				-> Shoot;

Verb 'headbutt' 'head' 'butt'
	* creature 						-> HeadButt
	* 'butt' creature					-> HeadButt
	* creature 'with' 'head'			-> HeadButt
	* 'heads' 'with' creature			-> HeadButt;

[ HoldBreathSub;
	"You hold your breath for half a minute or so, then let it out again. ";
];

Extend only 'hold'
	* 'breath'						-> HoldBreath
	* 'my' 'breath' 					-> HoldBreath
	* 'on'/'onto' noun				-> Hold
;

[ HangUpSub;
	<<PutOn noun second>>;
];

Verb 'hang'
	* 'on'/'onto' noun				-> Hold
	* 'up' noun 'on'/'upon' noun			-> HangUp
	* noun 'on'/'upon' noun				-> HangUp
	* noun 'up' 'on'/'upon' noun			-> HangUp
;

Extend 'attack'
	* creature 'with' noun				-> AttackWith
	* noun 'with' noun				-> AttackWith;

Verb meta 'blizzo'
	* 							-> Blizzo;

Verb meta 'presto'
	* 'lifto'/'blizzo'				-> Blizzo2;

Verb meta 'help'
	*							-> Hint;

Verb meta 'hint' 'hints'
	*							-> Hint;

Verb meta 'credits'
	*							-> Credits;

Verb meta 'about'
	*							-> About;

Verb 'dunk'
	* noun 						-> Dunk
	* noun 'in'/'under' noun			-> Dunk reverse;

Verb 'wash' = 'clean';

Verb 'dry'
	* 'off' 						-> Dry  ! Off
	* noun						-> Dry
	* noun 'off' 					-> Dry
	* 'off' 'with' noun				-> Dry  ! OffWith
	* noun 'with' noun				-> Dry  ! With
	* noun 'off' 'with' noun			-> Dry; ! With;

[ DrySub; 
	if ( towel notin player ) {
		if ( IndirectlyContains( location, towel ) ) {
			if ( location == masterBathroom && towel hasnt moved ) 
				print "(first taking a towel)^";
			else
				print "(first taking the towel)^";
			move towel to player;
			"You dry off with the towel. Ahhh. ";
		}
		"You'll need a towel. ";
	}
	"You dry off with the towel. Ahhh. ";
];

[ ShakeSub;
	if ( noun has static || noun has scenery )
		<<Push noun>>;
	"You give ", (the) noun, " a good-ol' shake. ";
];

Verb 'shake' 'rattle'
	* noun						-> Shake;

[ SlideSub; 
	"You won't really be able to slide down ", (ThatOrThose) noun,
	" very easily. ";
];

Verb 'slide' 
	* 'down' noun					-> Slide
	* 'off' noun 					-> Exit
	* noun 'in'/'thru'/'through' noun		-> Swipe reverse
;

[ SwipeSub;
	"That doesn't do anything. ";
];

Verb 'swipe'
	* noun 'in'/'thru'/'through' noun		-> Swipe reverse
;

Verb 'spray'
	* noun 'on'/'at' noun				-> Spray
	* noun 'with' noun				-> Spray reverse
;

[ SpraySub; 
	if ( noun has pluralname ) print "Those aren't";
	else print "That isn't";
	" something you can spray. ";
];

Extend 'cut'
	* noun 'with' noun				-> CutWith reverse;

[ CutWithSub;
	"You can't cut anything with ", (ThatOrThose) noun, ". ";
];

Verb 'scramble' = 'go';

[ SneezeSub;
	"Sneezing is an involuntary reaction. You can't make yourself
	do it. ";
];
[ SneezeAtSub;
	print (ThatOrThose) noun, (isorare) noun, " nothing to sneeze at. ";
];

Verb 'sneeze'
	*							-> Sneeze
	* 'at' noun						-> SneezeAt
	* 'on' noun						-> Sneeze;

[ SpreadElbowsSub;
	"Arms: akimbo. ";
];
[ SpreadSub;
	print (ThatOrThose) noun;
	if ( noun has pluralname ) print " aren't ";
	else print " isn't ";
	"something you can spread. ";
];

Verb 'spread'
	* 'elbow'/'elbows'/'arms'			-> SpreadElbows
	* 'my' 'elbow'/'elbows'/'arms'		-> SpreadElbows
	* noun						-> Spread;

[ NoKeyLockable;
	if ( noun provides with_key ) rfalse;
	rtrue;
];

[ DefaultLockTest i count;
	if ( noun hasnt lockable ) rfalse;
	
	objectloop ( i in player ) {
		if ( i has is_key ) {
			count++;
			assumed_key = i;
		}
	}
	if ( count == 0 ) {
		"You don't have any keys. ";
	}
	if ( count == 1 ) rtrue; 
	rfalse;
];

[ NoKeyLockSub;
	if ( ObjectIsUntouchable(noun) ) return;
	if ( noun hasnt lockable ) return L__M(##Lock,1,noun);
	if ( noun has locked ) return L__M(##Lock,2,noun);
	if ( noun has open ) return L__M(##Lock,3,noun);
	if ( second ~= 0 ) {
		print "(";
		if ( second hasnt is_key ) {
			if ( second has pluralname ) print "Those aren't ";
			else print "That isn't ";
			print "a key, but you ";
		}
		else print "You ";
		print "don't need a key to lock ", (the) noun, ".)^";
	}
	give noun locked;
	if ( AfterRoutines() == 1 ) rtrue;
	if ( keep_silent == 1 ) rtrue;
	L__M(##Lock,5,noun);
];

[ DefaultLockSub;
	if ( assumed_key == 0 ) return;
	print "(with ", (the) assumed_key, ")^";
	<Lock noun assumed_key>;
	assumed_key = 0;
	rtrue;
];

Extend 'lock' first 
	* noun = NoKeyLockable				-> NoKeyLock
	* noun = NoKeyLockable 'with' held 		-> NoKeyLock
	* noun = DefaultLockTest 			-> DefaultLock;

[ NoKeyUnlockSub;
	if ( ObjectIsUntouchable(noun) ) return;
	if ( noun hasnt lockable ) return L__M(##Unlock,1,noun);
	if ( noun hasnt locked ) return L__M(##Unlock,2,noun);
	if ( second ~= 0 ) {
		print "(";
		if ( second hasnt is_key ) {
			if ( second has pluralname ) print "Those aren't ";
			else print "That isn't ";
			print "a key, but you ";
		}
		else print "You ";
		print "don't need a key to unlock ", (the) noun, ".)^";
	}
	give noun ~locked;
	if ( AfterRoutines() == 1 ) rtrue;
	if ( keep_silent == 1 ) rtrue;
	L__M(##Unlock,4,noun);
];

[ DefaultUnlockSub;
	if ( assumed_key == 0 ) return;
	print "(trying ", (the) assumed_key, ")^";
	<<Unlock noun assumed_key>>;
];

Extend 'unlock' first 
	* noun = NoKeyLockable				-> NoKeyUnlock
	* noun = NoKeyLockable 'with' held 		-> NoKeyUnlock
	* noun = DefaultLockTest 			-> DefaultUnlock;

[ GlatzSub i;
	print "Objects in player: ^";
	objectloop( i in player ) {
		print "   ", (name) i, "^";
	}
];

Verb 'glatz'
	*							-> Glatz;

Verb 'off'
	*							-> Exit;

[ TellTimeSub;
	if ( local_time == 0 )
		"You're not really sure what time it is. ";
	print_ret "Local time is ", (numberToTime) local_time, ". ";
];

Verb 'time'
	*							-> TellTime;
!	* number						-> TellTime;

Extend 'push' last
	* multi						-> Push;

[ PeelSub; "I don't know how to peel that. "; ];

Extend 'peel' replace
	* noun						-> Peel
	* 'off' worn					-> Disrobe
	* 'off' noun					-> Peel;

[ ScratchSub; 
	"You ", (address) verb_word, (the) noun, ", to little efficacy. ";
];

[ ScratchWithSub; 
	"You ", (address) verb_word, (the) noun, " with ", (the) second, 
	", to little efficacy. ";
];

Verb 'scratch' 'scrape' 
	* noun						-> Scratch
	* noun 'with' noun				-> ScratchWith
	* 'parrot' 						-> Swat;

[ PlaySub;
	"You allow yourself a few moments to cavort and gambol. ";
];

Verb 'play' 'cavort' 'gambol'
	* 							-> Play
	* noun						-> Play
	* 'with' noun					-> Play;

[ DiagnoseSub;
	"You are in good health. ";
];

Verb 'diagnose' 'diagnos' 'diag'
	* 							-> Diagnose;

[ BrushSub;
	"You brush ", (the) noun, ". ";
];
[ BrushWithSub;
	"There's not much point to brushing ", (the) noun, " with ", (thatOrThose) second, ". ";
];

Verb 'brush'
	* noun						-> Brush
	* noun 'with' noun				-> BrushWith
;

Extend 'go' last
	* 'up'/'down'/'u//'/'d//' noun		-> Climb
;

[ TypeOnSub;
	if ( noun has pluralname ) print "Those aren't ";
	else print "That isn't ";
	"something you can type on. ";
];

Verb 'type'
	* number 'on' noun				-> TypeOn reverse
!	* special 'on' noun				-> TypeOn reverse
;

[ KnockSub; 
	"You ", (address) verb_word, " ", (the) noun, ", to no effect. ";
];

Verb 'knock' 'rap' 'pound'
	* noun						-> Knock
	* 'on' noun						-> Knock
;

Verb 'spin' = 'turn';

!EOF
1 Like

I’ll point out a few other formatting tools the forum offers: Scrollable Content and Hide Details.

The code block creates a scrollable window for long text by default, but you can make any content scrollable in a window so readers don’t have to mouse wheel past a building’s height of text.

Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

Clicking Insert Scrollable Content will insert a div macro and you can put the long content in between.
<div data-theme-scrollable="true"> [content goes here] </div>

I also really like “Hide Details” as you can use it for spoilers or tangent material or a large amount of material you want to make optionally visible.

[details="Summary"]
This text will be hidden
[/details]

“Summary” is the shown text that when clicked will reveal the hidden excerpt.

Summary

This text will be hidden

It's great for spoilers...

Rosebud is a sled!

Only click if you're a Lorem Ipsum fan

Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.

2 Likes

I didn’t know about that scrollable content thing. Very useful!

3 Likes

I’ve made a more extensive General post about text formatting.

2 Likes
(12:11pm 04-04-05)
[Edit] I had an idea over the weekend that if time machines could be combined
into jumps that are multiples (A * B), could you somehow flip the 
equation so that it's 1/(A * B)? Reverse the polarity of the neutron
flow, say? So that instead of 125 years, you go 1/125th of a year, 
which is about 3 days. I was thinking this in conjunction as I was
wondering how Quest 4 was going to work.

However, instead of imagining going back 25 years to a wintertime scene,
I imagined going forward 25 years, to where **there's a seafood restaurant**
on the lake, as well as a lot of other suburbanizing development. Certainly
more houses on the lake. Possibly the rail station entrance is underwater
because they made the lake higher to serve more tourists and boats and
who knows what.
[EDIT]
Obviously, this calls for the player putting something into the time 
capsule and then retrieving it later from the restaurant.

The seafood restaurant made me think, when I was rebooting with Speed-IF Purp * (Speed-IF Without Number), “Haven’t I already thought of this scene?” The location, yes.

Oh yeah. There is a lot of code from 20 years ago, of a sequel to my time travel game, First Things First.

(*the code I posted without formatting was called purp.inf)

Rob

Master Bedroom. Year: 1993 Moves: 0

Got some version of NTTL running. Took a screenshot.

Rob

4 Likes

Those first two lines are immediately intriguing.

[ HelpSub;
	boldface( "No Time to Lose" );
	print " is a sequel to the text adventure game ", (boldface) "First Things First",
	". The story picks up the next day after an assumed winning conclusion of ",
	(boldface) "FTF", ", and the game trusts that the main character knows and 
	remembers everything he just finished doing the night before. Players who 
	have not experienced the first game, and who therefore do not come in 
	with the same ready knowledge as the PC, will likely find one or two things 
	confusing at first. However, the game has been peppered with occasional 
	reminders of the previous installment of the story, ones that may be useful 
	for both new and returning players.^^
	
	Remember to examine everything, and make liberal use of your ability to 
	search. When in doubt, revisit places; sometimes, you will find something 
	new in a place you thought you had already scoured. It is possible to lose 
	or destroy items that you will need later on, so before you do anything 
	irrevocable, remember to save your game. Don't be reckless, and the game 
	will try to play fair.^^";
	
!	print "Use the FULLSCORE (FULL) command to keep track of how far 
!		along you are in the story. ";
	
!	print "The EXITS (XITS) command will remind you of which
!		directions are open to you.^^
	
!	print "This game is free, but if you would like to make a donation in 
!	support of it, please visit http://jrwdigitalmedia.com/ftf/nttl/ 
!	and use the PayPal link to do so. And feel free to drop me 
!	an email at jrw@jrwdigitalmedia.com.^^";
	
!	print "Use the SCRIPT command to save a text file of your play session
!		to send to the author. Zip and email to: nttl at jrwdigitalmedia.com.
!		Please don't go overboard: one transcript per person is probably 
!		plenty.^^";
	
	print "This work of interactive fiction is copyright 2004 by J. Robinson Wheeler,
		all rights reserved. Credit goes to Graham Nelson for Inform, to Andrew 
		Plotkin for Glulx Inform, and to John Cater for infglk.^^";
	
	print_ret "Thank you for playing ", (boldface) "No Time to Lose", ". Good luck! ";
];
1 Like

You probably just made a typo, but just in case the typo is in the game and not your post, and the first game takes place in 1993: The status line in your screenshot says 1994.

1 Like
Start of a transcript of
No Time To Lose
A text adventure by J. Robinson Wheeler
Version Alpha 8.00 Release 1 / Serial number 051110 / Inform v6.21(G0.36) Library 6/10 SD
Interpreter version 0.5.4 / VM 3.1.2 / Library serial number 000710(bp)

>listen
You strain to hear something else going on, but all is quiet. 

>get clothes
(first getting out of bed)
You put your feet on the floor, kicking something heavy. It's the manual for the time machine. You were going to look through it again when you got up today, in case it made any more sense.

The time machine, you think again, as the smell of ozone makes one last pass through your nostrils before dispersing. Either the machine that you left sitting in your basement -- a basement which you didn't even know you had, until recently -- which you didn't have, until you -- 

Someone's activated it. Is it gone? What about the one in the clearing? And what was it you got up to do, again? 

>get manual
You pick up the time machine manual by the spine. It flops open to a technical chapter you never looked at before. 

>read it
The page in question has to do with the calibration for the dial, the machine's base-point settings, and the ability to make more discrete jumps than ten or twenty years at a time. Hey, the in-between years. Those might be interesting to visit.

If you open the compartment on the back of the machine and use a screwdriver to remove the plate, you can access the calibration controls in question. 

There is a sidebar on this page, marked with a red alert symbol.

>i
You are carrying:
  the time machine manual

You are wearing:
  some dirty clothes

>get a screwd
You can't see any such thing.

>oops screwdriver
You can't see any such thing.

>x red alert symbol
The sidebar stresses the importance of a stabilizing element, in the form of a microchip-laden card (see Appendix D for schematics), which under no circumstances should be tampered with or removed. Without it, the machine is unable to make controlled time jumps; where you end up is anyone's guess, and returning to the time you started from is nearly impossible, owing to something called Pilader's Drift. (See also: Footnote 1, "Eddies in the Space-Time Continuum.")

>appendix
That's not a verb I recognize.

>footnote
I didn't understand that number.

>footnote D
I didn't understand that number.

>appendix D
That's not a verb I recognize.

>Footnote 1
[1] Is he, then? (See also: Footnote 2, "Gratuitous references to other people's jokes.")

But seriously:

Dr. Ashley Pilader (1964-?), a theoretician who served as a consultant on the fabrication of the prototype time machine (ca. 2018-2022), first postulated the later-proven instability drift in her 2011 paper, "Navigating the Topology of Time." Later research proved that stabilization was mathematically possible, and through her involvement on the time machine prototype, a stabilizing element was successfully engineered and in place when the first trials took place on May 23, 2021.

You lift your head from the page, something nagging at you about the dates you see listed throughout the manual. Unless you're mistaken (and at this point, you are willing to allow for the possibility), the date today is April 30, 1994. The last time jump you made, when you saw the future of your own house as a museum dedicated to the invention of the time machine, was only twenty years ahead, but that is too soon to be reconciled with the dates in the manual.

You can think of two reasons to explain the discrepancy. One is that time machines were eventually used to anachronously create the museum, or the last jump you made was, somehow, a lot farther ahead than twenty years. Perhaps even a hundred.

>note 2note 2

[2] Those responsible have been sacked. 

>get up
But you aren't in anything at the moment.

>take a shower
You can't see any such thing.

>l

Master bedroom
The shades are drawn, making it hard to guess what time of day it is. Your bedroom is normally not quite as dishevelled as this, but then again, neither are you. The sheets of your bed are tangled and rumpled. A large dresser that used to sit against the wall in the corner of the room has been scraped aside, and it now juts at an awkward angle. The master bathroom is east, and the doorway leading to the rest of the house is to the north. 

The secret door in the southeast corner of the room is ajar. 

>se

Secret passage
The secret passage is a narrow hallway, only about twelve feet long and three and a half feet wide. The walls are bare plaster and sheet rock. The door to the outside is south, and the door to the bedroom is northwest. A crudely-carved staircase leads down to a concrete chamber twenty feet underground. 

>look south
(the south door)
The door doesn't look like much from this side. There is a latch to open it from this side, and there are various exposed springs and tumblers. 

>x springs and tumblers
Which do you mean, the northwest door or the south door?

>both
Sorry, you can only have one item here. Which exactly?

>south door
You can't use multiple objects with that verb.

>shake fist at IF
You can't see any such thing.

>IF rumbles back, "You got me"
You seem to want to talk to someone, but I can't see whom.

>anyway
That's not a verb I recognize.

>*add verb "anyway" -> 'hee-hoo.' 'hup.' 'anyway, so - '
You seem to want to talk to someone, but I can't see whom.

>transcript
Transcripting is already on.

>yay
Why thank you. 

>s

South of house
The ground slopes down slightly here, and the wall of the house looms an extra story high because of it. There is a tiny window high in the wall, about 30 feet up. There is a rope dangling from the window, and a tire is tied to its bottom end. A little path made by you on your many daily walks leads southwest into the woods. You can walk around your house to the northwest and northeast. The secret door is open to the north. 

A beautiful, leafy tree is growing here next to the house, right where you always thought it should. 

>x rope
Oh yeah, is that still here? That's hilarious. You left the rope and the tire dangling from the attic window after shimmying down. It's still tied to a pipe up there, if you recall correctly. Seems like you did that years ago, instead of just last night. Then again, you did do things last night that technically were years ago, so. 

>x tree
It's still a whopper! If you did nothing else right last night, you at least planted this. It looks especially pretty in the late-morning light. 

>shake tree
You give the tree a good-ol' shake. 

>climb it
You shimmy up the branches. You're getting pretty good at this by now.

Mid-way up tree
You are mid-way up the tree, which extends up another 15 feet. A strong branch here extends horizontally from the trunk. You can climb even farther up from here, or back down to the ground.

>extend
That's not a verb I recognize.

>funny, you said it twie
You seem to want to talk to someone, but I can't see whom.

>never mind.
That's not a verb I recognize.

>(grumble)
That's not a verb I recognize.

>grumble
That's not a verb I recognize.

>mutter
That's not a verb I recognize.

>shout
I didn't understand that sentence.

>shout boo yarls berg
(to yourself)
There is no reply.

>go branch
That's not something you can enter.

>climb the branch.
It's sturdy, but you'd rather not take the foolish risk of putting your whole weight on it. 

>hm.
That's not a verb I recognize.

>l

Mid-way up tree
You are mid-way up the tree, which extends up another 15 feet. A strong branch here extends horizontally from the trunk. You can climb even farther up from here, or back down to the ground.

>x branch
It's a long, sturdy branch. In the daylight, you can see the abrasions in the bark where the tire swing used to be tied to it. 

>x abrasiojns
You can't see any such thing.

>x abrasions
It's a long, sturdy branch. In the daylight, you can see the abrasions in the bark where the tire swing used to be tied to it. 

>u

Treetop
You're as high in the tree as your weight will let you climb. The view from here is incredible. The window in the side of the house is right in front of you to the north. 

>x view
The sun is starting to climb high in the sky, and seems to be boiling off an early morning cloud cover. It's going to be a magnificent day. From here, you can see the big rock to the southwest, and the clearing a little ways beyond it. You can't quite tell what's in the clearing from here. Looking more to the northeast, you see people bustling about the shopping village. 

>look southwest
To the southwest you see the big rock and the clearing beyond it. Beyond that, you see the cement drainage trench that runs southeast to northwest, passing just beyond your property line. 

>d

Mid-way up tree
You are mid-way up the tree, which extends up another 15 feet. A strong branch here extends horizontally from the trunk. You can climb even farther up from here, or back down to the ground.

>d

South of house
The ground slopes down slightly here, and the wall of the house looms an extra story high because of it. There is a tiny window high in the wall, about 30 feet up. There is a rope dangling from the window, and a tire is tied to its bottom end. A little path made by you on your many daily walks leads southwest into the woods. You can walk around your house to the northwest and northeast. The secret door is open to the north. 

A beautiful, leafy tree is growing here next to the house, right where you always thought it should. 

>sw

Path in the woods
This little spot is one of your favorite places to sit and think. A well-trod path winds through a natural grove of cedar and live oak trees. That timeless landmark, the large rock, juts up out of the ground here, forcing the path to curve around it. The path leads northeast to your house, and the clearing is visible to the southwest. 

You pause as your ears catch a noise coming from the clearing, a sort of scrambling movement that's hard to define. 

>listen
You're pretty sure there's somebody in the clearing. 

>sw
As you enter the clearing, someone takes off running through the trees to the south.

Clearing
The woods part in a marvelous natural clearing here. Late-morning light streams prettily through the canopy of spring leaves above. The ground is hard and flat and clean. Your footpath leaves the clearing to the northeast, heading back to the house. Just through the trees to the south, you see the cement drainage trench. 

Aww, man. The old wheelbarrow has been unceremoniously dumped off to the side, spilling its contents on the ground. Strewn around it you see: your car key, your ATM card, the divining rod, three library books that really ought to be returned (especially since you stole two of them from the deposit slot), a crowbar and a shovel. 

The time machine is still here, but it looks like it's been tampered with: the compartment is open, and a panel inside that looks like it's been jimmied open. That screwdriver you carted around last night is lying underneath it, instead of with the rest of your stuff. 

>s

Drainage trench
You're in a wide cement trench with gently sloping walls that seems to go for miles in a northwest/southeast orientation, providing run-off drainage for this area of town. A rusty, corrugated pipe, with a mouth wide enough to climb into, juts out of the east side of the slope. To the north, you see the edge of the woods that surround the clearing. 

A hinged metal grate lies in the middle of a slab of concrete, sunk into the ground. 

Just as you arrive, you see someone's head just disappearing into the grate. Before you can reach it, the escaping figure bangs the grate shut, and you hear a fumbling clatter of metal on metal from below. 

[Your score has just gone up by two points.]

>dang
That's not a verb I recognize.

>save
Ok.

>script off

End of transcript.
Start of a transcript of
No Time To Lose
A text adventure by J. Robinson Wheeler
Version Alpha 8.00 Release 1 / Serial number 051110 / Inform v6.21(G0.36) Library 6/10 SD
Interpreter version 0.5.4 / VM 3.1.2 / Library serial number 000710(bp)

>script off

End of transcript.
Start of a transcript of
No Time To Lose
A text adventure by J. Robinson Wheeler
Version Alpha 8.00 Release 1 / Serial number 051110 / Inform v6.21(G0.36) Library 6/10 SD
Interpreter version 0.5.4 / VM 3.1.2 / Library serial number 000710(bp)

>Can't find where is saving to. Directory.
That's not a verb I recognize.

>script off

End of transcript.
1 Like

No apologies. I’m using this to make an update site.


Outside behindMotelFence "Outside a woooden fence"
	with 
	description [;
		"You're standing on the outside of a tall, wooden privacy fence.
		Behind you to the west, you see the drainage trench. The fence 
		stretches north and south from here, surrounding a building you
		can't quite make out from here. ";
	],
	d_to incongruous_hole,
	w_to DrainageTrenchSE,
;

Object -> wooden_fence "tall wooden fence"
	with name 'tall' 'wooden' 'wood' 'privacy' 'fence',
	description "It's about eight feet high and made of slatboard cedar. ",
	before [;
		Search: "Through the slats in the fence, you see a parking lot
			and a motel. ";
		Climb: "Ow, you get splinters! [BUG - not implemented yet] ";
	],
	has scenery
;

Object -> incongruous_hole "hole in the ground"
	with name 'hole' 'incongruous',
	description "It leads down. ",
	describe [;
		"^An incongruous hole in the ground leads down. ";
	],
	door_dir d_to,
	door_to RailStationThree,
	has static enterable door open
;


The motel is closer to the restaurant I'm looking for. You know, the one that reminded me of the speed-IF I called Purple. Had to do with a seafood bucket. Imagine a willful NPC with 8 legs and is trying to get out. While you are trying to get in. 

>X bucket
ReservoirOneSE "Southeast corner of Reservoir 1"
	with
	description "Rising imposingly above your head is the sharp corner of the
		massive reservoir tank. You can walk north back along the short eastern 
		side of the tank, or west along the broad southern side. An opening into the
		pipework is visible to the southeast. ",
	w_to ReservoirOneS,
	n_to ReservoirOneNE,
	se_to PipeMaze12,
	look_w "To the west, you see the broad southern side of the reservoir
		tank stretching off for several dozen yards. You see something 
		that might be a door, far off in the middle of the southern side. ",
	look_n "To the north, you see the short eastern side of the reservoir
		tank, and its northeast corner. ",
	look_se "To the southeast, you see an opening that leads into the pipeworks. ",
;

Outside OutsidePlantExit "North side of plant"
	with
	description "You're standing on an expanse of white concrete on the north
		side of the water treatment plant. A chain-link fence runs around the
		grounds, preventing passage to the west and the north. A lone door is
		the only feature in the water-stained concrete wall that towers over
		you. Water vapor floats up in wispy clouds from giant pipes that 
		stick up from the top of the plant. ",
	w_to "The fence blocks your way. ",

Monorail! Monorail! Monorail! *

Object -> -> yellowed_train_map "yellowed train map"
	with name 'yellowed' 'yellow' 'yellowing' 'peeling' 'corner' 'corners' 'map'
		'train',
	description [;
		print "It's a yellowed map depicting the monorail lines. There is
		a maze of differently-labelled tracks, and six numbered destinations,
		including ";
		switch ( location ) {
			default: "where you are now. [BUG - location switch missing]";
		}
	],
	before [;
		Take: if ( self hasnt moved ) <<Peel self>>;
		Peel: if ( self has moved ) {
				"The map is already peeled from the wall. ";
			}
			give self moved;
			give self ~scenery;
			move self to player;
			"You peel the yellowed map from the wall in one
			piece. Nice work. [BUG - no peeling puzzle] ";
		Read: self.print_out(); rtrue;
		Consult: 
			if ( second ofclass RailStation ) {
				print "You look up ", (name) second, " on the map. ";
				switch( second ) {
					RailStationZero: "It says ~You are here,~ and it's
						located on the southern tip of the map. ";
					RailStationOne: "It's located on the western edge
						of the map. ";
					RailStationTwo: "It's located in the northeastern
						corner of the map. ";
					RailStationThree: "It's located in the southeastern
						corner of the map. ";
					RailStationFour: "It's located in the northern
						tip of the map. ";
					RailStationFive: "It's located in the southwestern
						corner of the map. "; 
				}
			} 
	],
	print_out [;
		print "                4        2   ^";
		print "                |  _____/    ^";
		print "          ______| /          ^";
		print "         /       @@92           ^";
		print "   1____/_______/ @@92__        ^";
		print "        @@92________/    @@92      ^";
		print "        /       |      @@92     ^";
		print "       /        |       3    ^";
		print "      5         0            ^";
	],
	add_to_scope RailStationOne RailStationTwo RailStationThree RailStationFour
		RailStationFive,
	has scored legible
;

Object monorail_interior "monorail car"
	with name 'monorail' 'car' 'door',
	description "[BUG - shouldn't print]",
	inside_description 
		"The interior of the monorail car is plush and comfy, with seating in
		the middle for six, and a control station at either end. ",
	react_before [;
		Open: <<Open self>>;
		Close: <<Close self>>;
	],
	after [;
		Exit: move monorail_car to location;
			remove self;
			print "You exit the monorail car.^";
			PlayerTo( location );
			rtrue;
	],
	has enterable openable open scenery
;


* I can't escape the writer of the monorail simpsons episode. Neither can you. I just mentioned him. 



Rob




A noise wakes you up. A noise and a vibration from below. And the unmistakable smell of ozone.

It wasn't a dream. But apparently, the story isn't over yet.




No Time To Lose
A text adventure by J. Robinson Wheeler
Version Alpha 8.00 Release 1 / Serial number 051110 / Inform v6.21(G0.36) Library 6/10 SD
First-time players should type HELP. For special information about this release, type ABOUT.

Master bedroom
The shades are drawn, making it hard to guess what time of day it is. Time. Time machine...

You sit up on the rumpled folds of your bed, where you collapsed in a heap late last night without even getting undressed. A sour taste coats your tongue -- you didn't brush, either. It was a long night; days long, years long, depending on how you look at it. You want a shower, fresh clothes, and a cup of coffee. The coffee's in the kitchen to the north, the shower is east, and clean clothes are in your dresser.

The secret door in the southeast corner of the room is ajar. That's where the noise came from. 

>x folds
You can't see any such thing.

>get up
You put your feet on the floor, kicking something heavy. It's the manual for the time machine. You were going to look through it again when you got up today, in case it made any more sense.

The time machine, you think again, as the smell of ozone makes one last pass through your nostrils before dispersing. Either the machine that you left sitting in your basement -- a basement which you didn't even know you had, until recently -- which you didn't have, until you -- 

Someone's activated it. Is it gone? What about the one in the clearing? 

>yawn
That's not a verb I recognize.

>stretch
That's not a verb I recognize.

>take a shower
You can't see any such thing.

>in
You can't go that way.

>e

Master bathroom
This bathroom looks like it has been used as a place to party, in the vernacular. Various paraphernalia having to do with drug abuse is in evidence, such as little plastic baggies, discarded needles, and the like. It is a shocking and somewhat depressing sight, to say the least.

No, wait -- what? That was the future, and that's gone now. You squeeze your eyes shut and open them again, and the bathroom looks like it always has, with clean fixtures, a luxurious shower, and a spotless tile floor draped with a fluffy bath mat. 

The shower stall stands invitingly to the east. There's a rack for towels on the shower door. A fluffy pink towel hangs from it. 

>take a shower
Shouldn't you get out of those grubby clothes first? 

>get out of clothes
You can't see any such thing.

>strip
That's not a verb I recognize.

>i
You are carrying nothing. 

You are wearing:
  some dirty clothes

>drop cltohes
You can't see any such thing.

>drop all
(the dirty clothes)
(first removing the dirty clothes)
Ah, that's better. You pop your dirty clothes into the hamper. 

>take a shower
Mmmmmmm. You take a long, refreshing shower, and pop back out again, feeling much better. 

>sing
Your singing is terrific!

>x self
You've got no clothes on, but you feel better having had a shower. 

>i
You are naked and empty-handed. 

>w

Master bedroom
The shades are drawn, making it hard to guess what time of day it is. Your bedroom is normally not quite as dishevelled as this, but then again, neither are you. The sheets of your bed are tangled and rumpled. A large dresser that used to sit against the wall in the corner of the room has been scraped aside, and it now juts at an awkward angle. The master bathroom is east, and the doorway leading to the rest of the house is to the north. 

The secret door in the southeast corner of the room is ajar. 

You can also see the time machine manual here.

>n

Downstairs hallway
The hallway is just a few paces long, connecting the foyer to the north to the master bedroom to the south. An open doorway leads west to your living room. 

Along the walls hangs a collection of your favorite family photographs. 

>d
You can't go that way.

>x photos
There are various pictures of family members and vacation trips: Your grandfather, Joe; your parents on their wedding day; your mother and Aunt Ruth on the beach. 

>d
You can't go that way.

>w

Living room
This is sort of your watching-tv-and-eating-pizza area, as evidenced by the sofa, the tv set, and the stacks and stacks of pizza boxes that you rationalize as being earmarked for a future trip to a recycling bin. The computer room is to the north, and the hallway is to the east. 

>x stacks
Man, you've really let these pile up. This is only from the last six months or so, too. You sure do eat a lot of pizza. Maybe you ought to learn to cook one of these days. 

>turn off
What do you want to turn off?

>tv
That's already off.

>turn tv on
You switch the tv set on.

>x tv
There's some random bunch of nothing on tv right now. 
The tv set is currently switched on.

>[FILL IN BLANK]
That's not a verb I recognize.

>e

Downstairs hallway
The hallway is just a few paces long, connecting the foyer to the north to the master bedroom to the south. An open doorway leads west to your living room. 

Along the walls hangs a collection of your favorite family photographs. 

>n

Foyer
The carpeting in other rooms of the house gives way here to polished floor tiles. The front door, much friendlier on the inside looking out than the reverse, is east. A staircase leads from here to the second floor, and your bedroom is back to the south through a short hallway. Open doorways lead north and west. 

>x front door
It's solid wood, a real beauty, with the best lock money can buy. You've now found out how good a barrier to entry it can be. The door is currently closed and locked. 

>open it
(first unlocking the door)
You unlock the front door.
You open the front door.

>go through the door
You brazenly traipse right on outside. Good thing you don't have any nosy neighbors.

Front of house
The front of your house is bathed in warm, late-morning sunshine, and light breeze wafts in from your driveway to the northeast. A few landscaping stones lie along a small path that leads northwest and southwest. The sturdy front door enters the house to the west. 

You see your front doormat here. 

>script off

End of transcript.

I found an NPC file called Polly, for my StoryManager module. But she was not for the Asgard game, she was written for "Colours", much earlier. 


Rob

Class Script
with
current_script NULL,
last_script NULL,
next_script holding_pattern,
number 0,
each_turn [; rfalse; ],
PlayScript [; rtrue; ],
;

Script holding_pattern “holding pattern”
with
PlayScript [ wait_time; if ( self hasnt general ) rtrue;
give self ~general;
wait_time = Polly.number - 1;
Polly.number = 0;

	if ( wait_time == 0 or 1 )
		"~Now,~ says Polly. ~What was it that you were just asking about?~ ";
	
	print "^~Oh!~ Polly says. ~Wasn't there something you were going to ask
	me about";
	
	if ( wait_time > 60 ) ", ages ago?~";
	
	switch( wait_time ) {
		2 to 5: print " just now";
		6 to 20: print " a little while ago";
		21 to 40: print " a few minutes ago";
		41 to 60: print ", five or ten minutes ago";
	}
	"?~";
],

;

Script wait_to_greet “wait to greet”
with
next_script introductions,
PlayScript [;
self.number++;
switch( self.number ) {
1: "^~Oh! Hello there. My name is Polly. What’s yours?~ she says. ";
3: "^~Do you speak English? What’s your name?~ she asks again. ";
5: "^~So, you still haven’t told me your name,~ she says sternly. ";
6: give self done; self.next_script.number = 3;
"^Fine, be that way,~ says Polly.^
~I’m Colin,~ you finally blurt out. ";
}
rtrue;
],
;

Script introductions “introductions”
with
next_script what_you_remember,
PlayScript [;
self.number++;
switch( self.number ) {
1: "^~Hello Colin. It’s nice to meet you.~ ";
2: "^Polly stares at you with curiosity. ";
3: "^Polly says, ~You aren’t so much like the other people here,
are you?~^^
~Neither are you,~ you say. ";
4: "^~Where are you from?~ Polly asks.^
~London,~ you say. ~Where are you from?~ ";
5: "^~Dover,~ she says.^
~Really? I didn’t think anyone actually lived in Dover.
I thought people just visited there on holiday.~ ";
6: give self done;
"^Polly laughs. ~Don’t be silly. Of course people live there.
Actually, I’m not from Dover proper. Just a little village
to the west of it, but it’s near as.~ ";
}
],
;

Script what_you_remember “what you remember”
with
next_script dreams,
PlayScript [;
self.number++;
switch( self.number ) {
1: "^Polly peers around. ~Do you remember how you got here, Colin?~^
~Not so much, no,~ you admit. ";
2: "^~What’s the last thing you remember?~ Polly asks.^
~Well,~ you say, searching your memory, which seems to be obscured by
a thick curtain of haze. ~I really can’t recall.~ ";
3: give self done;
"^~Me neither! Isn’t it curious, though!~ She chews her lip again, and the
wheels in her head begin to spin. ";
}
rtrue;
],
;

Script dreams “dreams”
with
name ‘dreams’,
next_script coins,
PlayScript [;
self.number++;
switch( self.number ) {
1: "^Suddenly, Polly reaches out and pinches you.^
~Ow!~ you say. ~That was rude of you.~ ";
2: "^~I’m sorry,~ she says, giggling. ~I was thinking how this was so very like
a dream, only you don’t seem to be as dreamlike as everything else. I wanted
to see if you were real.~^
~Of course I’m real!~ you say, rubbing the red mark she left on your arm.
~Besides, you’re supposed to pinch yourself to determine if you’re dreaming,
not somebody else.~ ";
3: “^~Oh, but I know I’m not dreaming, silly,~ she says. ~I’m wide awake.~^
~How do you know?~ you ask.”;
4: give self done;
"^~Because I dream in black and white. Don’t you?~^
~I dream in colour, I think. Although perhaps not as vividly as all
this.~ ";
}
rtrue;
],
;

Script coins “coins”
with
! next_script travel_to_blackRoom,
PlayScript [;
self.number++;
switch( self.number ) {
1: "^~Exactly!~ ";
2: if ( location ofclass colourRoom )
print_ret "^Polly runs a hand along the slick ", (SayColour) location, " walls. ";
"^Polly gnaws on the tips one of her pigtails. ";
3: print “^~I think it’s all a game of some sort. Did you notice the coins?~^”;
if ( blackCoin in player ) "~I seem to be holding this black one,~ you say. ";
"~I was holding a black one at one point,~ you say. ";
4: if ( location == redRoom ) {
if ( brownCoin hasnt moved || brownCoin in location )
print "^~And here’s a brown one,~ she says, pointing. ";
else
print "^~And there was a brown one here,~ she says.^
~Yes, I took it up,~ you say.^
She taps her foot and plays with one of her pigtails. ";
}
else {
print "^~And there was a brown one in the red room,~ she says, tapping
her foot and playing with one of her pigtails. ";
}
"~Have you explored much?~^
~A bit,~ you say. ";
5: print "^~I’ve seen three other coloured rooms like this one, and then all sorts of
curious places in between. I saw two other coloured coins, orange and grey.
I was going to say that none of the coins actually match the coloured rooms
directly, but ";
if ( blackCoin in player ) print “your black coin does.~^”;
else print “the black coin does.~^”;
if ( blackCoin has general )
"~I tried putting it into the slot in the black room, but nothing happened.~ ";
else {
self.number = 7;
“~I suppose I could try putting it into the slot in the black room to
see what happens.~”;
}
6: "^~Really? Can I see?~^
~I suppose so.~ ";
7: give self done;
"^~Let’s go, then.~ ";
8: self.number = 6;
"^~Oh, you haven’t thought to try it? Let’s!~ says Polly.^
~Why not?~ you say. ";
}
rtrue;
],
;

Script Dover “Dover”
with
name ‘dover’ ‘home’,
next_script chalk,
PlayScript [;
self.number++;
switch( self.number ) {
1: "~Tell me about Dover,~ you say.^
~Oh,~ says Polly. ~Well, let’s see.~ ";
2: “^Polly says, ~From the top of the white cliffs on a clear day, you can see the coast of
France, 21 miles away across the Channel. Dover is justly famous for its imposing white cliffs,
which buttress the end of the North Downs, but Dover’s real importance lies in the fact that
it is and historically has been Britain’s gateway to Europe, and Europe’s gateway to Britain.~”;
3: “^Polly says, ~In 55 BC, Julius Caesar landed near there with a force of about 6000 men,
in the first wave of Roman Invasion.~”;
4: “^Polly says, ~The town is overlooked and dominated by the sprawling late Norman
fortification which sits atop Castle Hill.~”;
5: give self done;
“^Polly says, ~Dover Castle is the earliest English castle which has fortifications
arranged concentrically.~”;
}
rtrue;
],
;

Script chalk “chalk”
with
name ‘chalk’,
! next_script ,
PlayScript [;
self.number++;
switch( self.number ) {
1: “~Why are the white cliffs of Dover white?~ you ask.^
~That’s an interesting question,~ says Polly. ~I believe they’re made of
chalk. The whole region has a chalk layer just under the topsoil.~”;
2: give self done; “~Really? Chalk, like in school?~ you say. ~How very interesting.~^
~Is it?~ Polly asks. ~I never thought much about it before.~”;
3: self.number = 0; self.PlayScript();
}
rtrue;
],
;

Script template “template”
with
! next_script ,
PlayScript [;
self.number++;
switch( self.number ) {
}
rtrue;
],
;