
replace userinit: function
{
    "\bPoor Uncle Foggy.  He was the best guardian any kid could ever ask for.  
    	After your parents died in that freak waterbed accident, Uncle Foggy practically 
    	raised you and your twin sister Winnie.  You grew up in his home full of wacky 
    	inventions - practical jokes for all occasions.  Uncle Foggy was a prankster, no 
    	two ways about it.  It's only been a couple of years since you and Winnie left for 
    	college.  Since then you've spoken far too infrequently.  When you last spoke, Uncle 
    	Foggy rambled on and on about some ultimate practical joke, but you had a class on 
    	gallinaceous theology to get to.
    	\b
    	You and Winnie pull in to Foggywood Estate in your beaten-up 
    	coupe.  The white picket gate swings quietly 
    	shut behind you as you kill the engine.  Unfortunately your relatives, the Barnevelders 
    	from Rhode Island, have also just arrived.  Uncle Orpington and Aunt Lamona are just 
    	climbing out of their gleaming black sedan, while your cousin 'Red' sits in his ridiculous 
    	monster truck and leans on the horn, which blares an ear splitting rendition of 
    	'La Cucharacha.'
	\b
	Not a very auspicious way to kick off the reading of Uncle Foggy's will, is it?
    \b";
    version.sdesc;
    "\b";
    Me.location := global.start;          // move player to initial location
    global.start.lookAround( true );      // show player where he is
    global.start.isseen := true;          // note that we've seen the room
    notify(global, #events, 0);
}

replace version: object
  sdesc = "\(Foggywood Hijinx\) Release 2\n
				(Type \"about\" for more information)\n
				Copyright (c) 1998 by TextFeather, Inc.  All rights reserved.\n
				Created for Adam Cadre's Chicken Comp and Lucian Smith's Mini-Comp.\n
				Developed with TADS, the Text Adventure Development System.\n"
;

replace global: object
  start = outside
  turnsofar = 0                          // no turns have transpired so far
  score = 0                          // no points have been accumulated yet
  maxscore = 10                                   // maximum possible score
  verbose = true                        // we are currently in VERBOSE mode
  lamplist = []            // list of all known light providers in the game
  mystatus = 0
  ischicken = nil
  rapped = nil
  tvon = 0
	beakyou = "You can only carry one thing at a time in your beak.  "

	b1 = nil //helpers are on buffalo
	b2 = nil //bellows is in place
	b3 = nil //straw is attached to bellows
	b4 = nil //straw is attached to balloon
	b5 = nil //balloon is in knot
	b6 = nil //balloon is full
	b7 = nil //everything in place
	b8 = nil //balloon is attached to bellows

	btot = {
		if (global.b7) return( 7 );
		else if (!b1 and !b2) return( 0 );
		else if (b1 and !b2) return( 1 );
		else if (!b1 and b2) return( 2 );
		else if (b1 and b2 and b3 and b8) return( 11 );
		else if (b1 and b2 and !b3 and !b7 and !b8) return( 3 );
		else if (b1 and b2 and b3 and !b4) return( 4 );
		else if (b1 and b2 and b3 and b4 and !b5) return( 5 );
		else if (b1 and b2 and b3 and b4 and b5 and !b6) return( 6 );
		else if (b1 and b2 and b3 and b4 and b5 and b6) return( 7 );
		else if (b1 and b8 and !b6) return( 8 );
	}

	//0 = !b1 + !b2 nothing
	//1 = b1 + !b2 helper in place
	//2 = b2 + !b1 bellows in place (+any other condition), but not helper
	//3 = b2 + b1 + !b3 + !b7 + !b8 bellows and helper in place, no balloon or straw 
	//4 = b1 + b2 + b3 + !b4 bellows connected to straw, no balloon
	//5 = b1 + b2 + b3 + b4 + !b5 bellows to straw to balloon
	//6 = b1 + b2 + b3 + b4 + b5 + !b6 bellows to straw to balloon in knot
	//7 = b1 + b2 + b3 + b4 + b5 + b6 bellows to straw to full balloon in knot
	//8 = b1 + b7 + !b6 helper in place + balloon on bellows 
	
	chickens = [
		'Uncle Orpington'
		'Aunt Lamona'
		'Mr. Dorkings'
		'Cousin Red'
	]
	recipelist = {
		//if (rand(3) = 1) 
			say(self.recipemsg[rand( length(self.recipemsg) )]); 
	}
	recipemsg = [
		'\b"Once we\'re done with our coq au vin," says Julia Childs, "we\'ll move on to a 
			lovely chicken divan recipe."  '
		'\b"Thanks for tuning in," says Julia Childs. "I know you\'ll just LOVE our all day long 
			chicken recipe-athon!"  '
		'\bOn the television, Julia Childs mercilessly pounds the carcass of some poor 
			disemboweled fowl with a - gulp - meat tenderizer.  '
		'\b"You know," says Julia as she strips the flesh off some poor dead bird, "the thing 
			I like about these Purdue chickens is how nice and easily the skins slide off.  I guess 
				it\'s true what they say.  It really DOES take a tough man to make a tender 
				chicken."  Julia\'s audience laughs politely.  '
		'\b"I\'ve never tasted human flesh," says Julia, "but I hear it tastes just like 
			Chicken!  Doesn\'t THAT make you want to pat your tummies and say 
			yummy yummy, viewers?"  '
		'\bOn the television, Julia Childs is busy shoving her entire forearm up some poor 
			chicken\'s posterior.  How humiliating!  '
		'\bThe terrible pounding resumes briefly as Mrs. Faverolles makes another attempt 
			at the door.  '
		'\bA gutteral French accent beyond the door can only be Mrs. Faverolles cursing 
			Dorkings for chasing her out of the study during her program.  '
		'\b"I once killed a chicken just to watch it die," says Julia Childs.  '
		'\bOn the television, Julia Childs is hacking the limbs off some unfortunate fowl with 
			a butcher\'s knife the size of Bayonne, New Jersey.  '
		'\bOn the television, Julia Childs coughs up a mouthful of feathers.  "Oh, dear!" she 
			exlaims.  "Excuse me!"  '
		'\bOn the television, Julia Childs cracks an egg into a bowl, whips it into a light batter, 
			and then drops eviscerated chicken parts into it.  "Well," says Julia, "I guess that 
				answers the question of which came first!"  '
		'\bOn the television, Julia Childs invites an audience member up to assist her.  The 
			volunteer hesitates at reaching into the chicken\'s cavity, prompting Julia to ask 
			"What\'re you... chicken?"  Julia laughs hysterically at her own joke, accompanied 
			by a smattering of applause from the audience.  '
		'\bOn the television, an audience member asks Julia if she uses free range chickens.  
			"Free range!" she shouts cheerfully.  "Gas range is more like it!"  '
		'\bOn the television, Julia Childs leans out into her audience and asks conspiratorially, 
			"Do you folks know why the chicken crossed the road?"  After a moment she answers, 
			"Because it was hauled across in a butcher\'s cart, of course!"  Her joke is met by 
			silence from the audience, prompting her to respond cheerily with "Well!  THAT joke 
			sure laid an egg!"  '
		'\bOn the television, Julia Childs sneaks a sip of sherry from a bottle beneath the 
			counter.  You hear the word \'cirrhosis\' shouted from among the audience, to which 
			Julia responds "Oh, pish tosh.  There\'s nothing wrong with MY liver that a little 
			CHICKEN liver won\'t cure!"  '
		'\b"Later today," says Julia Childs, "we\'ll be demonstrating how to perform emergency 
			liver transplant surgery on your house pets using chicken liver!"  '
		'\b"Later on the program," says Julia Childs, "I\'ll show you how to feed a family of 
			four even if your man is bringing home chicken feed!"  '
		'\bOn the television, Julia Childs drops one of the hens she is preparing.  "Oh, too bad," 
			she says, "Looks like that little chicky flew the coop!"  '
		'\b"On next week\'s program," says Julia Childs, "I\'ll be showing you how to make 
			chicken-fried chicken!"  '
		'\bThe formerly dour Mr. Dorkings makes for a peculiar sight as he rebounds off your 
			uncle\'s desk, leaving a trail of black feathers.  '
		'\bAunt Lamona and Uncle Orpington - at least you \(think\) they\'re Aunt Lamona and 
			Uncle Orpington - slam into each other at full tilt and knock each other onto the floor.  '
		'\bRed - at least you \(think\) it\'s Red - clambers up onto the sofa and crows at the 
			top of his scrawny little lungs.  '
		'\bCousin Red mistakenly runs into Aunt Lamona - she raises a great squawk and 
			pecks Red viciously in return.  '
		'\bUncle Orpington pecks at the carpet as if looking for worms.  '
		'\bUncle Orpington pulls a long strand of fiber from the carpet.  Cousin Red 
			jealously tries to snatch it away, and a tug-of-war ensues.  '
	]
	/*'\bWinnie calmly follows you about the room, observing your actions with interest.  '
	'\bWinnie, following closely, cocks her head quizzically at your actions.  '*/
  events = {
		switch(global.turnsofar) {
			case 1:
				"\bThe Barnevelders glare haughtily at you and Winnie as you all wait for 
					admittance to Uncle Foggy's house.  Not a word passes between the two 
					factions.  So far as you know, the Barnevelders have never even visited 
					Foggywood before.  ";
				break;
			case 2:
				"\bNone too soon, the front door is opened, revealing Mr. Dorkings, Uncle Foggy's 
					solicitor.  A dour man in black who rarely smiles, you've never quite trusted 
					Dorkings.  
				\b\"Mm,\" is all Dorkings has to say in greeting.  \"You've all arrived.  Good.  
					We can begin right away.  Please follow me.\" 
				";
				executor.moveInto( outside );
				break;
			case 3:
				"\bYou and your relatives dutifully troop into the house after Dorkings.  \b";
					foyer.lookAround( true );
					"\b\"We will be adjourning in the study for the reading of... \"  He breaks off in 
					mid-sentence and cocks his head towards the study.  You listen carefully, and 
					hear what sounds like polite applause.  Dorkings turns back to all of you and says, 
					\"Mm.  Please wait here while I ensure that all is in readiness,\" before 
					disappearing into the study.
					\bOdd, you think.  Knowing Dorkings, he would have checked and double checked 
					everything long before your arrival.
				";
				Me.moveInto( foyer ); sister.moveInto( foyer ); executor.moveInto( study );
				red.moveInto( foyer ); orp.moveInto( foyer ); aunt.moveInto( foyer );
				break;
			case 4:
				"\bAfter a brief moment you hear rising voices.  Well, one voice anyway.  
					Dorkings' tone never rises or falls, but the other voice sounds like...
					\bMrs. Faverolles, the cook, storms out of the study, slamming the door 
					against the wall. You can see from her complexion that she's at full 
					broil.  Ignoring your party, she whirls around and hurls a string of 
					incomprehensible French epithets towards the study, waving a sauce spattered 
					spoon in one hammy fist.  Her other hand clenches a saucepan full of some rich 
					burgundy sauce.
				";
				cook.moveInto( foyer );
				break;
			case 5:
				"\bMrs.  Faverolles storms off toward the kitchen, still raging.  Once the noise of 
					her passage has quieted, Dorkings gestures your party into the study.  
					\bYou and your relatives shuffle inside and take seats at opposite sides of the room.  
					You and Winnie fill out the love seat, while the Barnevelders perch like chicken 
					hawks on the matching sofa.  \b";
					study.lookAround( true );
					"\bYou notice that an integrated television/video 
					player has been set up on Uncle Foggy's desk, about where Uncle Foggy would be 
					if he were presiding.
				";
				Me.moveInto( loveseat ); sister.moveInto( loveseat ); cook.moveInto( nil );
				red.moveInto( couch ); orp.moveInto( couch ); aunt.moveInto( couch );
				break;
			case 6:
				"\b  
				\"Just a moment more.  Mm,\" says Dorkings, as he turns to the television.  
					Your mind wanders, and you find yourself focusing on the Buffalo-On-A-Spring 
					(pat. pending) mounted 
					on the wall behind Uncle Foggy's desk.  It was one of Uncle Foggy's funniest 
					inventions, a terrific source of amusement.  Well, for everyone but the unlucky 
					victims, anyway.
				";
				break;
			case 7:
				"\b\"Mm, here we are.\"  Dorkings steps aside as the television springs to life.  
					And there on the screen, real as life but only half as dead, is Uncle Foggy.  
					\b\"Greetin's, family,\" begins your deceased uncle.  \"Ah suppose, Ah say, 
					Ah suppose you're all wondering why Ah've gathered you here today.\" Uncle 
					Foggy pauses for an expectant moment, while the Barnevelders glare 
					dispassionately.  Winnie rolls her eyes, though at Uncle Foggy or the 
					Barnevelders, you're not sure.  \"Haw haw!  It's a joke, son! 
					Ah made a funny!  Get it?  Ah'm too fast for you!  Gotta keep up, son!\"
				";
				foggy.moveInto( study );
				global.tvon := 1;
				break;
			case 8:
				"\b
				\"As you all know, Ah've made, Ah say, Ah've made a bunch of dough - that's 
					SAWbucks, boy - off my inventions.  Now Ah've gotta figure out who gets it.\"  
					Uncle Foggy stares out of the screen for a moment before continuing.  \"Well 
					Ah won't do it, y'hear!  Never was any good at this family stuff, and Ah'm not 
					going to start playing favorites now.  Instead, Ah'm leavin' it, Ah say, Ah'm 
					leavin' it up to you all!\"  You and Winnie and the Barnevelders exchange 
					quizzical glances, but no one speaks.  
				";
				break;
			case 9:
				"\bUncle Foggy rolls on.  \"What Ah propose, Ah say what Ah PROPOSE is a 
					challenge.  And the ones who best know me and my ways, well, they're gonna 
					come out ahead.\"

				\bUncle Orpington leaps angrily to his feet and shouts, \"What new foolishness 
					is this!\"  Aunt Lamona spears him with a withering glance, and he reluctantly 
					reseats himself.

				\b\"Now Orpy, by now Ah expect you're gettin' pretty riled up,\" says Uncle 
					Foggy with frightening prescience.  \"Well them's the breaks!  The breaks, Ah 
					say!  Maybe if you'd ever taken favor on my work, things'd be different now.\"
				";
				break;
			case 10:
				"\b\"Contest goes like, Ah say, contest goes like this!  Ah've scattered ten of my 
					inventions around, Ah say, all 'round my estate.  Dorkings here will give you all 
					a list.  The one o' you who finds the most number of things on the list gets it, Ah 
					say gets it ALL!  The house, the money, and most importantly... Dorkings?  Ain't 
					you ready yet, suh?\"

					\b\"Ah, mm.  Yes.\"  Dorkings retrieves a black shammy sack from the desk 
					and loosens the cord binding it shut.  Reaching inside, he pulls out a matte black 
					pyramidal object with a small switch at its apex.  You jerk instinctively as 
					Dorkings fumbles with the strange object.  Everything slows as you watch it 
					tumble to the ground with inexplicable dread.  It lands on the shag rug with a 
					faint but sickening 'click.'

					\bSuddenly the world seems larger.  You look to Winnie for help only to find... 
					a chicken!  Staring back at you is a perfectly normal white crested hen!  You look 
					around.  Oh, no.  Where once stood Mr. Dorkings and your relations, now you see 
					only chickens.  A long moment of stunned silence follows, as the room's occupants 
					glance around nervously at each other.

					\bThe silence is broken by Uncle Foggy's booming voice.  \"You got it yet 
					Dorkings? Good.  Now, what you got here is my latest invention.  The ultimate, 
					Ah say, the ULTIMATE practical joke!  Great at parties!  It'll make a million, 
					if my name isn't Fogarth Barnevelder!  And the one of you all to bring back the 
					most items on my list, gets it!  And that's, Ah say, that's IT!  Dorkings, you can 
					stop this consarned thing any time now.  My, Ah say, my job here is done.\"

					\bAs the implications of the situation sink in, there is a sudden tidal swell of 
					panic.  Someone - Aunt Lamona?  Cousin Red? - leaps from their perch and sets 
					up a dreadful squawking.  Soon, the room is full of squawking, screaching birds 
					running in panicked circles, feathers flying everywhere.
				";
				gag.moveInto( studyfloor );
				foggy.moveInto( nil );
				global.ischicken := true;
				sister.moveInto(studyfloor);
				orp.moveInto(studyfloor);
				aunt.moveInto(studyfloor);
				red.moveInto(studyfloor);
				executor.moveInto(studyfloor);
				addword(sister, &noun, 'chicken');
				addword(sister, &noun, 'hen');
				addword(aunt, &noun, 'chicken');
				addword(aunt, &noun, 'hen');
				addword(executor, &noun, 'chicken');
				addword(executor, &noun, 'rooster');
				addword(orp, &noun, 'chicken');
				addword(orp, &noun, 'rooster');
				addword(red, &noun, 'chicken');
				addword(red, &noun, 'rooster');
				addword(barnevelders, &noun, 'chickens');
				addword(barnevelders, &noun, 'roosters');
				addword(barnevelders, &noun, 'hens');
				break;
			case 11:
				"\bThe cacophany is broken by a sudden click as loud as the hammer of a revolver.  
					Uncle Foggy's tape rolls to a stop and automatically starts rewinding.  With the 
					tape's feed gone, the television reverts to receiving broadcast signal.  All eyes 
					focus on the television as a recognizeable human figure appears, a woman in an 
					apron standing behind a counter covered with neatly placed cooking utensils.

					\b\"Thank you, Charles,\" says Julia Childs.  \"Now that our burgundy sauce is 
					chilling and the hen's organs have been removed, we can proceed to stewing the 
					guts and gizzards.\"  Suddenly your attention is drawn to a furious pounding at 
					the study door.  Oh no - it must be the cook wanting to watch her program!

					\b\"SQUAWK!\"  The panic renews with increased fury as your crazed relatives 
					hurl themselves in shrieking clouds of feathers at every surface in the room.
					Well, it looks like its up to you and Winnie to figure out how to reverse Uncle 
					Foggy's joke.
				";
				julia.moveInto( study );
				global.tvon := 2;
				notify(global, #recipelist, 0);
				break;
			case 666:
				"\bYou die and go to hell.
				\b* * *\b
				Too  bad!  ";
				quit();
				break;
			default:
				break;
		}
	}
  noverb = {
	return( global.verbmsg[rand( length(global.verbmsg) )]);
  }
	verbmsg = [
		'You can\'t do that, you dumb cluck!  You\'re a chicken!  '
	]
	thanks = "\b\bThank you for playing \(Foggywood Hijinx\), a TextFeather release.  
		On-line registration for TextFeather products will be available at 
		http://www.textfeather.com on or before June 30, 1998.  Thanks for your patience!  "
;

/*
-outside:thing;
*/

outside: room
	sdesc = "\(Front Lawn\)"
	ldesc = 	{
		"Uncle Foggy's front lawn teeters just on the border of ill-kempt, though no one 
			specific flaw draws attention.  The three vehicles parked on the lawn fail to aid its 
			appearance.  Uncle Foggy's home, Foggywood Manor, lies to the north, while the gate 
			through which you entered rests back to the south.  Though you can't see it over the 
			hedges, you know that beyond the gate and across the road lies the ramshackle cabin 
			that Uncle Foggy called his lab.  ";
		if (!global.ischicken) 
			"\bThe Barnevelders are here, standing by the front door with you and Winnie.  ";
		else 
			"\bWinnie is here with you, eagerly waiting for your next move.  ";
	}
	north = {
		if (global.ischicken) {
			"There's no getting back through the window, even if you wanted to.  You can still 
				hear Mrs. Faverolles chasing your squawking relatives and screaming French 
				invectives.  ";
			return(nil);
		}
	}
	south = {
		if (global.ischicken) {
			if (global.triedgate) 
				"Not with that fox hanging around out there!  You're going to have to find another 
				way to cross that road.  ";
			else
				"You head for the swinging gate, left conveniently ajar, and squeeze through to the 
					other side.  It looks like an easy trip across the road to Uncle Foggie's lab.  But 
					just as you're about to set foot on the road, a streak of copper catches your eye.  
					It's a fox!  You turn tail and run back through the gate, just in time to bump into 
					Winnie coming out.  The two of you rebound off each other, confusing your sense 
					of direction.  With a growing sense of urgency you rush at the gate again, and 
					manage to squeeze through just as a sharp claw swipes at your tail feathers.  
					The gate bangs shut behind you, startling the fox away for the moment.  Then it 
					slowly creaks open again. ";
				global.triedgate := true;
		}
		else {
			"But you just got here!  Wouldn't you like to at least hear the reading of the will first?  ";
		}
		return( nil );
	}
;

outsidewindow: fixeditem
	verDoOpen(a) = {
		if (!global.ischicken) 
			"Though you and Winnie used to crawl through that window often, the spirit of the day 
			has got you too melancholy to think about it.  ";
		else 
			"You'll never get the window open again from this side.  ";
	}
	location = outside
	adjective = 'study'
	noun = 'window'
	sdesc = "window"
	ldesc = "It's a plain, white-framed, four-panel window that looks in on Uncle Foggy's study.  "
	verDoLookthru(a) = {
		if (!global.ischicken) "The interior of Uncle Foggy's study is dimly lit, 
			and reveals little to your bright adjusted eyes.  ";
		else "You can't see much through the shut window, but you can still hear the 
			horrible massacre within.  ";
	}
;

house: fixeditem
	sdesc = "mansion"
	ldesc = "Uncle Foggy's lovely Tudor mansion sprawls to the north.  Atop the front 
		arch spins a creaky old weather vane.  A glance at the window leading in to Uncle 
		Foggy's study fills you with nostalgic reverence.  "
	noun = 'house' 'manor' 'mansion' 'home' 'foggywood'
	location = outside
;

vane: fixeditem
	sdesc = "weather vane"
	ldesc = "A creaky old iron weather vane in the shape of a rooster points vaguely northward. "
	adjective = 'creaky' 'old' 'weathervane' 'weather'
	noun = 'vane' 'weathervane'
	location = outside
;

frontdoor: fixeditem
	sdesc = "front door"
	ldesc = "Uncle Foggy's door is painted a simple eggshell white, adorned with a wrought-iron 
		knocker in the shape of a crowing cock.  "
	adjective = 'front'
	noun = 'door'
	verDoOpen(a) = {}
	doOpen(a) = { "You raise the chicken knocker and rap lightly on the door. "; 
		global.rapped := true; }
	verDoKnock(a) = {self.verDoOpen(a);}
	doKnock(a) = {self.doOpen(a);}
	location = outside
;

knocker: fixeditem
	sdesc = "knocker"
	ldesc = "It's a wrought-iron knocker in the shape of a crowing cock.  "
	adjective = 'wrought' 'iron'
	noun = 'knocker'
	verDoPull(a) = { frontdoor.verDoOpen(a); }
	doPull(a) = { frontdoor.doOpen(a); }
	verDoKnock(a) = { frontdoor.verDoOpen(a); }
	doKnock(a) = { frontdoor.doOpen(a); }
	location = frontdoor
;

coupe: vehicle
	isListed = nil
	sdesc = "coupe"
	ldesc = "Your car is a beaten-up, anonymous-looking two door coupe.  It reminds you of 
		one of Uncle Foggy's favorite jokes:  Why has a chicken coop got only two doors?  
		Because if it had four it'd be a chicken sedan!  "
	adjective = 'mine' 'our' 'my'
	noun = 'car' 'coupe' 'vehicle'
	location = outside
	verDoBoard( a ) = {}
	doBoard( a ) = {
		if (!global.ischicken)
			"You just got out of it.  There's nothing inside that you need.  ";
		else 
			"Unfortunately the doors are locked.  Well, not locked, exactly, since the locks don't 
				work anymore.  Certainly chicken-proof, anyway.  ";
	}
	verDoDrive(a) = {"It would help if you were inside it first.  ";}
	verDoSteal(a) = { "Stealing your own car would be silly.  "; }
;

limo:  vehicle
	isListed = nil
	sdesc = "Oldsmobuick"
	ldesc = "Your Uncle Orpington's Oldsmobuick is a beetle black sedan of late vintage.  
		It looks big and mean, fit for running down small animals and old ladies on the highway.  "
	adjective = 'black' 'uncle' 'orpington\'s'
	noun = 'sedan' 'car' 'vehicle' 'Oldsmobuick'
	location = outside
	verDoBoard( a ) = {}
	doBoard( a ) = {
		if (!global.ischicken)
			"Your Uncle Orpington favors you with a foul glance.  ";
		else 
			"Uncle Orpington's steam roller is more suitable to running chickens down than 
				passengering them.  ";
	}
	verDoDrive(a) = {"It would help if you were inside it first.  ";}
	verDoSteal(a) = { "You consider stealing Uncle Orpington's car.  Then you consider 
		how bad the food is at the local prison.  You just \(hate\) powdered eggs.  "; }
;

truck: vehicle
	isListed = nil
	adjective = 'cousin' 'red\'s' 'monster'
	noun = 'truck' 'monster' 'vehicle' 'stairs' 'ladder' 'steps'
	sdesc = "monster truck"
	ldesc = {
		if (self.location=outside) {
			if (Me.location=outside)
				"Your cousin Red's monster truck is a masterpiece of modern automotive 
				engineering.  Its brightly colored chassis hovers nearly five feet off the ground, 
				suspended by enormous black tires big enough to feed an entire tribe of African 
				pygmies through three rainy seasons.  A galvanized metal stair extends down from 
				the driver's side door, without which tiny Red could never have tamed the monster.  
				Apparently Red left the roof at home, as the cab is open to the air.  Red has 
				obnoxiously parked the truck facing forward right in front of the gate, which 
				forced you to drive around him when you entered.  ";
			else 
				"The gas pedal, ignition key, and gear stick all promise interesting avenues of 
				investigation.  
				\bWinnie is here with you, eagerly waiting for your next move.  ";
			if (key.turned) "\bThe monster truck rumbles ominously.  ";
		}
		else 
			"It's a good thing Cousin Red's not here to see his truck.  It's a wreck, filled with 
			fallen debris from its collision with Uncle Foggy's lab.  ";
		}
	location = outside
	stealmsg = "Your Cousin Red sees you aiming for his ride and simpers at you, 
		\"Hey, don't even think about it.\"  "
	stealmsg2 = "YEAH!  YEAH!  DRIVE!  LET'S TAKE THIS MONSTER TO \(VEGAAAAS\)!  "
	doSynonym( 'Board' ) = 'Climb' 'Enter'
	doBoard( a ) = {
		if (!global.ischicken) self.stealmsg;
		else if (self.location = lab) 
			"It's too full of debris to reenter.  ";
		else {
			"Followed by Winnie, you hop up the metal steps and flutter over the door into the cab 
				of Red's truck.  It is with incredible relief that you find Red's car keys hanging 
				from the ignition.  You've never driven a truck like this - let alone while wearing 
				a chicken's body - but the ignition, gear stick and gas pedal look like a good place 
				to start.  ";
	        Me.moveInto( self );
	        sister.moveInto( self );
		}
	}
	verDoUnboard(a) = {
		if(Me.location<>self) "You're not in the monster truck.  ";
		else 
			"Winnie grabs your tailfeathers with her beak, as if to say \"C'mon, 
			let's get this show on the road!\"  ";
	}
	down = self.verDoUnboard( Me )
	out = self.verDoUnboard( Me )
	verDoSteal(a) = {
		if (!global.ischicken) self.stealmsg;
		else self.stealmsg2;
	}
	verDoDrive(a) = {
		if (!Me.isIn(self)) {
			if (!global.ischicken) self.stealmsg;
			else self.stealmsg2;
		}
		else if (!key.turned)
			"It's not going far without the ignition switched on.  ";
		else if (!stick.shifted)
			"It's not going far in neutral.  ";
		else { 
			self.stealmsg2; 
			"\b(It might help if you were a bit more specific in your actions.)  "; 
		}
	}
;

key: fixeditem
	turned = nil
	doSynonym( 'Turn' ) = 'Switch' 'Turnon'
	verDoTurn(a)={}
	doTurn(a) = {
		if (self.turned) 
			"Winnie pecks you lightly as if to say \"C'mon... let's blow this coop!\"";
		else {
			"You turn the keys with your beak, and the monster truck roars to life!";
			self.turned := true;
		}
	}
	adjective = 'ignition' 'rabbit\'s' 'rabbit'
	noun = 'key' 'keys' 'ignition' 'foot'
	sdesc = "keys"
	ldesc = "Thankfully, Cousin Red has left his keys in the ignition.  A lucky rabbit's foot 
		dangles from the keychain.  You wonder if the rabbit was still alive when Red cut it off.  "
	location = truck
;

stick: fixeditem
	shifted = nil
	doSynonym( 'Push' ) = 'Move' 'Pull' 'Turn' 'Switch' 'Press'
	verDoPush(a)={}
	doPush(a) = {
		if (!key.turned)
			"It would help if you turned on the ignition first.  ";
		else if (self.shifted) 
			"Winnie pecks you lightly as if to say \"C'mon... let's blow this coop!\"";
		else {
			"You and Winnie together both jump on the gear shift, your combined weight just 
			barely enough to slide it into gear.  ";
			self.shifted := true;
		}
	}
	adjective = 'stick' 'gear'
	noun = 'shift' 'stick' 'gears' 'gear'
	sdesc = "gear shift"
	ldesc = "Cousin Red's gear shift has an eight-ball mounted on the knob.  "
	location = truck
;

pedal: fixeditem
	doSynonym( 'Push' ) = 'Move' 'Jump' 'Stand' 'Standon' 'Press'
	verDoPush(a)={}
	doPush(a) = {
		if (!key.turned)
			"It would help if you turned on the ignition first.  ";
		else if (!stick.shifted) 
			"It would help if you put the truck in gear first.  ";
		else {
			"Fearing that even your combined weight may not be enough, you and Winnie 
			jump together onto the gas pedal.  The truck lurches into motion!  
			Rear wheels pealing, it bursts forward, crashing through the front gate   
			\(and across the road, baby!\) 
			At the far side, the truck hits a deep pothole that jolts you and Winnie 
			into the air, giving you a perfect view as the 
			truck slams into one sagging wall of Uncle Foggy's ramshackle lab.  The impact 
			flattens you into the windshield, as debris from the crumbling 
			wall crashes down upon you.
			\b
			When the dust finally settles, you and Winnie clamber dizzily out of the truck.  
			Uncle Foggy's lab is a shambles.  Shelves have collapsed, spilling their contents 
			everywhere.  The entire structure looks as though it may fall down at any moment.  
			But there, posted on a relatively stable section of wall, is a diagram outlining 
			the process of Uncle Foggy's Super Funky Chickenizer (pat. pending).  
			Below it, on a sturdy bench, is a small white pyramid - clearly the mate to the 
			device that got you into this mess.
			";
			truck.moveInto(lab);
			Me.moveInto(lab);
			sister.moveInto(lab);
		}
	}
	adjective = 'gas'
	noun = 'pedal'
	sdesc = "gas pedal"
	ldesc = "Press it and go \(vroom\).  "
	location = truck
;

horn: fixeditem
	location = truck
	noun = 'horn'
	sdesc = "horn"
	ldesc = "The horn on cousin Red's truck is so loud that when it sounds, 
	God fearing Christians kneel in prayer and wait to be swept up into the sky.  "
	verDoPush(a) = {
		"The horn blares out an ear-splitting version of 'La Cucaracha.'  ";
	}
	doSynonym( 'Push' ) = 'Play' 'Press'
;

playVerb: deepverb
	sdesc = "play"
	verb = 'play'
	doAction = 'Play'
;

/*
-lab:thing
;*/

lab: room
	sdesc = "Uncle Foggy's Lab"
	ldesc = "Uncle Foggy's lab is a complete wreck as the result of your recent 
		mishap with Cousin Red's truck.  Debris is scattered everywhere.  Posted on 
		one wall, like a vision from heaven, is a diagram outlining the process of 
		Uncle Foggy's Super Funky Chickenizer (pat. pending).  Beneath it is a sturdy 
		bench on which rests a white pyramidal device.  "
	noexit = "You'll never climb out of this wreck in your chicken form.  "
;

bench: chairitem
	sdesc = "bench"
	ldesc = "It's a sturdy lab bench that survived the recent disaster.  Resting on it 
		is a white pyramidal device.  "
	adjective = 'sturdy' 'work'
	noun = 'bench'
	location = lab
    outOfPrep = "off of"
    statusPrep = "on"
    doUnboard(a) = {
    	"You hop down off the bench, still in your chicken form.  ";
    	Me.moveInto(lab);
    }
	down = self.doUnboard( Me )
;

magag: fixeditem
	adjective = 'white' 'matte' 'pyramidal' 'ultimate' 'practical' 'super' 'funky'
	noun = 'pyramid' 'joke' 'invention' 'antidote' 'device' 'humanizer'
	ldesc = "This must be the reversion device for Uncle Foggy's 
		Super Funky Chickenizer (pat. pending).  It's a white matte pyramid 
		with a small switch at its apex.  "
	sdesc = "Super Funky Humanizer (pat. pending)"
	verDoTake(a) = {
		"Whatever it's made of, it's too big and heavy for you to carry in your beak.  ";
	}
	location = bench
;

toggle2: fixeditem	
	location = magag
	noun = 'switch' 'toggle'
	sdesc = "switch"
	ldesc = "It works flip-flop!  "
	doSynonym( 'Flip' ) = 'Turn' 'Push' 'Pull' 'Kick' 'Scratch' 'Peck' 'Press'
	verDoFlip(a) = {
		if (Me.location=lab)
			"You can't reach the device from the lab floor.  ";
	}
	doFlip(a) = {
		"The switch flips over with a hollow 'click'... and suddenly, the world seems smaller.
			\b\b\b
			[Hit any key to continue.]
		";
		Me.moveInto( diningroom );
		sister.moveInto( diningroom );
		inputkey();
		clearscreen();
		
		"Much later, you and Winnie sit down to a sumptuous dinner prepared by Mrs. Faverolles.  
		You're both able to laugh over the day's events from the comfortable safety of Uncle 
		Foggy's expansive dining room. 
		\b\t\"What a day!\" you exclaim to Winnie between mouthfuls.
		\n\t\"I know,\" she says, sipping a glass of wine.  \"I thought we would \(never\) 
			find a way to revert to our old selves.\"
		\n\t\"Too bad about the Barnevelders missing their chance to participate in the 
			scavenger hunt.\"
		\n\t\"Oh, yes,\" nods Winnie.
		\n\t\"So.  How are you finding the chicken?\" you ask, changing the subject.
		\n\t\"Mm, it's a big stringy for my tastes.\" says Winnie, chewing a mouthful of food.
		\n\t\"Really?  Mine's quite tender.\"
		\n\t\"Well, you know what they say,\" says Winnie.
		\n\t\"What's that?\" you inquire.
		\b\t\"\(It's all relative!\)\"

		\b\t* * *\b
		Congratulations!  You have won \(Foggywood Hijinx\)!  
		\b\bThank you for playing \(Foggywood Hijinx\), a TextFeather 
		release.  On-line registration for TextFeather products will be available at 
		http://www.textfeather.com on or before June 30, 1998.  
		Thanks for your patience!  
		";
		quit();
	}
;

diningroom: room
	sdesc = "dining room"
	ldesc = "Uncle Foggy's dining room is beautifully furnished.  "
;

debris: fixeditem
	sdesc = "debris"
	ldesc = "The remains of what was once Uncle Foggy's lab.  Unidentifiable 
	ruins are scattered everywhere.  "
	location = lab
	noun = 'debris' 'mess' 'junk' 'stuff'
;

diagram: fixeditem
	ldesc = "It seems to outline the process of Uncle Foggy's Super Funky Chickenizer 
		(pat. pending). "
	location = lab
	noun = 'diagram'
	sdesc = "diagram"
;

cars: fixeditem
	location = outside
	noun = 'cars' 'vehicles'
	sdesc = "cars"
	ldesc = "Your worn out coupe looks pretty shoddy compared to the gleaming lustre of 
		the Barnevelder's massive sedan, to say nothing of Red's gargantuan, brilliantly 
		painted truck.  "
	verDoSteal(a) = { self.specify; }
	verDoDrive(a) = { self.specify; }
	verDoBoard(a) = { self.specify; }
	specify = "You should specify which one you're referring to: your coupe, Uncle 
		Orpington's sedan, or Cousin Red's truck.  "
	isListed = nil
	isplural = true
;

gate: fixeditem
	sdesc = "gate"
	ldesc = "It's a simple picket fence gate that spans a gap between tall hedges on either side.  
		The gate opens wide enough to permit vehicles to pass through.  Currently it's slightly ajar.  "
	adjective = 'white' 'picket'
	noun = 'gate' 'fence'
	verdoOpen(a)={}
	doOpen(a) = {
		if(!global.ischicken)
			"You just arrived.  No need to open the gate now.  ";
		else
			"The gate is too heavy for you to push open, though you could squeeze through the gap.  ";
	}
	location = outside
;

hedges: fixeditem
	sdesc = "hedges"
	ldesc = "Eight foot high hedges border the property on all sides.  Uncle Foggy was a bit 
		on the reclusive side.  "
	noun = 'hedge' 'hedges'
	location = outside
;

fakelab: intangible
	errmsg = self.ldesc
	sdesc = "fox"
	ldesc = "You can't see Uncle Foggy's lab from the yard, 
		but you know it's just across the road beyond the gate.  "
	adjective = 'uncle' 'foggy\'s'
	noun = 'lab'
;

fox: intangible
	errmsg = "You can't see the fox, but you know it's still out there.  "
	sdesc = "fox"
	ldesc = "It's little more than an occasional coppery streak beyond the gate.  "
	adjective = 'copper' 'coppery'
	noun = 'fox' 'streak'
;

/*
-foyer:thing;
*/

foyer: room
	sdesc = "\(Foyer\)"
	ldesc = {
		"Uncle Foggy's foyer is tastefully decorated, even if the blue hen wallpaper does 
			seem a bit queer.  Passages from the foyer lead off in many directions, but your only 
			business here today is in the study to the east.  The walls are adorned with glossy photos 
			taken around Uncle Foggy's favorite travel destination.  Nailed to a chest-high post is a 
			stuffed bird, eternally caught in its morning salutation to the sun.  ";
		if (!global.ischicken) "\bThe Barnevelders are here, 
			waiting to be admitted into the study with you and Winnie.  ";
	}
	south = {
		"While standing in the same room as the Barnevelders \(is\) enough to send you 
			screaming out the front door, right now you'd rather bide your time until you've heard 
			the reading of the will.  ";
		return(nil);
	}
	east = {
		"Though you feel as if you should have free run of the place, right now you'll have to 
			wait until Mr. Dorkings allows you to enter.  ";
		return(nil);
	}
	north = {
		"It saddens you to think that, after today, you may never visit Uncle Foggy's home again.  
			But for now you'll just have to wait for the reading of the will.  ";
		return(nil);
	}
	west = self.north
	nw = self.north
	up = self.north
	ne = self.north
;

photos: fixeditem
	sdesc = "photographs"
	ldesc = "Lush photos of the Sun Pyramid taken around Chi-chen Itza.  Uncle Foggy claimed 
		to have held great admiration for the builders of the pyramid.  "
	noun = 'photo' 'photos' 'photographs' 'photograph' 'picture' 'pictures'
	location = foyer
;

wallpaper: fixeditem
	noun = 'wallpaper' 'paper' 'hens'
	adjective = 'wall'
	sdesc = "wallpaper"
	ldesc = "A cheery chicken-and-egg motif!"
	location = foyer
;

studydoor: fixeditem
	location = foyer
	sdesc = "study"
	ldesc = "Uncle Foggy's study lies to the east, though you can't see much from here.  "
	noun = 'study'
	verDoBoard(a) = {
		if (global.turnsofar=4)
			"";
		else "You'll have to wait until Dorkings invites you inside.  ";
	}
;

rooster: fixeditem
	adjective = 'stuffed'
	noun = 'bantam' 'post' 'perch' 'bird'
	sdesc = "stuffed bantam"
	ldesc = "The famous Norwegian Blue Bantam.  No wonder they call it blue - it really does 
		look a bit down in the beak.  Perhaps it's pinin' for the fjords?  No, clearly it has 
		shuffled off this mortal coil.  After all, the only reason it's even sitting on that perch is 
		that it's been nailed there.  "
	location = foyer
;

/*
-study: thing;
*/

study: room
	sdesc = "\(Study\)"
	ldesc = {
		"Light from the outside streams in through the closed window, illuminating 
			Uncle Foggy's comfortably cluttered study.  It's full of interesting odds and 
			ends, not the least of which is the trophy mounted on the wall above the desk.  
			Many were the times that you and Winnie would climb the bookshelves in search 
			of written treasure, and then spread out by the fireplace with your latest finds.  For 
			more dexterous pleasures, there was the carton of assorted works in progress Uncle 
			Foggy usually kept beneath his desk.  If nothing else appealed, sneaking 
			maraschino cherries from the bar was always good for a few giggles.  ";
		if (!global.ischicken) "\bThe Barnevelders are here, seated on the couch across from 
			you and Winnie, while Mr. Dorkings stands beside the desk.  ";
		else "\bThe room is filled with chickens, running in crazy circles and bounding off 
			the furniture and each other.  Resting off to one side of the room is Uncle Foggy's 
			ultimate practical joke.  ";
		}
	noun = 'study'
	west = {
		if (!global.ischicken)
			"It would be disrespectful to go wondering through the mansion during the reading 
				of Uncle Foggy's will.  ";
		else self.pharoah;
	}
	pharoah = "The Pharoahs built their pyramids on the labor of thousands of slaves, each tied into 
			harnesses and pulling inhuman weight.  This game hates to break it to you, but frankly, 
			you're no Pharoah, and the Barnevelders ain't Jewish.  That door is \(massive\).  
			Perhaps you'd have more luck with the window.  "
	escape = {
			"You flounce through the window, Winnie close behind.  You've just reached the outside 
				sill when behind you, a thunderous din begins at the 
				door.  The door cracks open to reveal the terrible figure of Mrs. Faverolles!  
				She stands beneath the lintel brandishing the mucous-white corpse of a dead fowl 
				in one hand and a great cleaver in the other.  All is still as she and your relatives 
				regard each other with silent amazement.  The tableau is broken as Julia Childs 
				show cuts to a commercial and an announcer's voice screams \"FUNNY CAR AND 
				MONSTER TRUCK RALLY SUNDAY SUNDAY \(SUNDAAAAY\)!!!\"  Mrs. Faverolles 
				slams the door behind her and wades into the room swinging her bloody cleaver to 
				the sound of manic laughter on the television.  The feathers fly as your relatives  
				carom around the room like chickens with their heads cut off.  You and Winnie watch 
				in horror until the Super-Bendy Balloon-Animal Balloon (pat. pending) beneath the 
				window finally bursts, sending the window speeding 
				shut and throwing the two of you from your perch on the sill.  You flutter to the 
				ground, no worse for wear.  \b";
	}	
	south = {
		if (global.b7)	{
			self.escape;
			unnotify(global, #recipelist);
			fox.moveInto( outside );
			sister.moveInto( outside );
			return( outside );
		}
		else if (global.ischicken)
			window.twins;
		else	
			"Crawling through the window just doesn't appeal 
			like it once did when you and Winnie were kids.  ";
	}
;

studydoor2: fixeditem
	ldesc = "The door to Uncle Foggy's study is a great heavy slab of carven oak.  "
	noun = 'door'
	adjective = 'study' 'oak'
	location = studyfloor
	sdesc = "study door"
	verDoOpen(a) = { study.pharoah; }
;

studyfloor: chairitem
	location = study
	sdesc = "floor"
	noun = 'floor' 'rug' 'carpet'
	ldesc = "The shag carpeting makes you hungry for wriggling invertebrates.  "
	verDoUnboard(a) = { 
		"You hop into the air, but alas, gravity's cruel pull drags you down once more."; 
	}
	doUnboard(a) = {self.verDoUnboard(a);}
	verDoBoard(a) = {	if (Me.location=self) "You're already on the floor.  "; }
	doBoard(a) = {
		"You hop down to the floor.  ";
		Me.moveInto( self );
	}
	south = { return(study.south); }
	west = { return(study.west); }
	up = { 
		"You flap your wings edgily, glancing from desk to sill to shelves to bar, 
			looking for something to hop up onto.  ";
	}
	reachable = [ self self.contents orp aunt red executor sister foggy julia 
		desk windowsill couch loveseat deskchair bar shelves]
    outOfPrep = "off of"
    statusPrep = "on"
    mount = "down"
    noexit = {
    	"The obvious exit is the study door, to the west, but there's no chance of 
    		getting that open now.  The southern window looks promising, though.  ";
    }
;

desk: chairitem
	sdesc = "desk"
	ldesc = "Uncle Foggy's desk is a great monolith of mahogany, with drawers of all sizes 
		and shapes on virtually every face.  Even though Uncle Foggy did most of his work in 
		his lab, the desk's surface is still scarred from his constant tinkering.  
		As you know, Uncle Foggy usually kept a carton of assorted parts 
		beneath the desk for idle moments.  
		Sitting on the center of the desk is a television set.  At one corner, you see 
		Uncle Foggy's Super-Bendy Balloon-Animal Balloon Dispenser (pat. pending).  
		\bYour eye is inevitably drawn to the massive 
		Buffalo-On-A-Spring (pat. pending) hanging heavily far up on on the wall overhead
		which, as you know, is activated by a hidden button on the desk.  "
	noun = 'desk'
	location = study
	reachable = [ self orp aunt red executor sister foggy julia self.contents studyfloor deskchair]
    verDoLookunder(actor) = {}
    doLookunder(actor) = {
    	"You don't see anything of interest besides Uncle Foggy's box of junk.  ";
	}
    ischair = nil
    outOfPrep = "off of"
    statusPrep = "on"
	down = self.doUnboard( Me )
	mount = { if (Me.location=studyfloor or Me.location=deskchair) "up"; else "down"; }
;

drawers: fixeditem
	location = desk
	noun = 'drawer' 'drawers'
	sdesc = "drawers"
	ldesc = "Drawers of all sizes and shape fill Uncle Foggy's desk.  "
	verDoLookin(a)={self.verDoOpen(a);}
	verDoOpen(a)={
		if (!global.ischicken) 
			"You feel that now is not the time to go rifling through Uncle Foggy's desk.  ";
		else 
			"Your new body hasn't got the power to open the heavy wooden drawers.  ";
	}
;

tv: fixeditem
	noun = 'tv' 'vcr' 'television'
	sdesc = "television"
	ldesc = {
		"A standard twenty-seven inch screen housed in molded black plastic with an 
			integrated video player.  ";
		switch(global.tvon) {
			case 0:
				"It's switched off at the moment.  ";
				break;
			case 1:
				"The screen shows a closeup of Uncle Foggy, looking big as life and only half as dead.  ";
				break;
			case 2:
				"The screen shows Julia Childs performing barbaric ritual desecrations to the 
					corpses of murdered chickens.  ";
				break;
		}
	}
	verDoTurnoff(a) = {
		if (!global.ischicken) {
			if (global.tvon = 0) "It's not on.  ";
			else "That would be no way to respect Uncle Foggy's memory.  ";
		}
		else "As much as you would love to end Ms. Childs' depredations, the 
			television seems to be chicken-proof.  ";
	}
	verDoTurnon(a) = {
		if (global.tvon = 0) "Dorkings seems to have things under control.  ";
		else "It's already on.  ";
	}
	doSynonym( 'Push' ) = 'Move'
	verDoPush(a) = {
		"The television towers over you like the monolith from 2001.  
		My god... it's full of stars!  ";
	}
	location = desk
;

dispenser: fixeditem
	sdesc = "Super-Bendy Balloon-Animal Balloon Dispenser (pat. pending)"
	ldesc = {
		"Uncle Foggy often liked to make elaborate balloon animals for favored visitors, 
			and the Super-Bendy Balloon-Animal Balloon Dispenser (pat. pending) is another of 
			his inventions.  It's in the shape of a small elephant statuette with raised trunk.  
			Super-Bendy Balloon-Animal Balloons (pat. pending) are dispensed from the 
			elephant's open mouth.  Yank out one and another takes its place.  ";
		if (balloon.location<>self) 
			"Sadly, it has dispensed its last Super-Bendy Balloon-Animal Balloon (pat. pending).  ";
	}
	doSynonym( 'Push' ) = 'Move'
	verDoPush(a) = {
		"You put your nose (such as it is) to the grindstone (such as it is) and try to shove the 
		dispenser across the desk, but it's just too heavy for you.  ";
	}
	adjective = 'balloon' 'elephant' 'super-bendy' 'super' 'bendy' 'balloon-animal' 'animal'
	noun = 'dispenser' 'elephant' 'statuette' 
	location = desk
	verDoTake(a) = {
		if (!global.ischicken) "You're not in the mood to play with balloons just now, though you 
			suspect that Uncle Foggy would've approved of the notion.  ";
		else "The dispenser is too heavy for you to move in your current state.  ";
	}
;

balloon: item
	sdesc = "Super-Bendy Balloon-Animal Balloon (pat. pending)"
	ldesc = {
		"\^<<balloon.thedesc>>, a long, thin balloon of the variety used to make 
			balloon animals, is another of Uncle Foggy's inventions.  
			Uncle Foggy was endlessly fond of making balloon animals for guests, but 
			equally frustrated at their short life-span and tendancy to burst.  So he 
			took vulcanization a step further with Uncle Foggy's Foggyized Super-Bendy 
			Balloon-Animal Balloon Rubber (pat. pending)!  ";
		if (global.b8)
			"\bCurrently, <<self.thedesc>> is stretched over the tube of the bellows.  ";
		if (global.b4)
			"Currently, <<self.thedesc>> stretched over one end of <<straw.thedesc>>";
		if (global.b5 and !global.b6) "and jammed into the knot in the windowframe.  ";
		else if (global.b5 and global.b6) "and holding open the window frame.  "; 
		if (global.b4 and !global.b5) ".  ";
	}
	adjective = 'super' 'bendy' 'balloon' 'animal'
	noun = 'balloon'
	location = dispenser
	isListed = {
		if(self.location = dispenser) return( nil );
		else return( true );
	}
	verIoRemoveFrom(a)={self.verIoDetachFrom(a);}
	ioRemoveFrom(a,d)={self.ioDetachFrom(a,d);}
	verDoRemoveFrom(a,i)={self.verDoDetachFrom(a,i);}
	verIoDetachFrom(a)={
	}
	ioDetachFrom(a,d)={
		if (d=straw or d=knot) balloon.doTake(a);
		else d.verDoDetachFrom(a,self);
	}
	verDoDetachFrom(a,i)={
		if((i<>bellows and i<>straw and i<>knot) or (i=bellows and !global.b8)
			or (i=straw and !global.b4) or (i=knot and !global.b5))
			"\^<<self.thedesc>> isn't attached to <<i.thedesc>>.  ";
		else if (i=straw or i=knot)
			"Winnie sees you trying to pull the <<straw.sdesc>> from the <<i.thedesc>> 
			and pecks you on the ankle as if to say, \"Don't undo that - 
			we've got to get out of here!\"";
	}
	verDoAttachTo(a,i)={
		if (self.location<>Me and i.location<>Me) {
			"You're not carrying <<self.thedesc>>";
			if (i=straw) " or <<i.thedesc>> ";
			".  ";
		}
		else self.verIoAttachTo(a);
	}
	verIoAttachTo(a)={
		if (global.b8 or global.b4) "\^<<balloon.thedesc>> is already attached to the 
		<<global.b8 ? "bellows" : "Rainbow Wacky Straw (pat. pending)" >>.  ";
	}
	ioAttachTo(a,d)={
		if (d=bellows or d=knot or d=straw) {
			d.ioAttachTo(a,self);
		}
		else 
			"You're unable to attach <<balloon.thedesc>> to <<d.thedesc>>.  ";
	}
	verDoPutOn( a,i ) = {
		if (i=bellows or i=straw)
			self.verDoAttachTo(a,i);
		else pass verDoPutOn;
	}
	doPutOn(a,i) = {
		if (i=bellows or i=straw)
			self.verDoAttachTo(a,i);
		else pass verDoPutOn;
	}
    verIoPutIn( actor ) = {}
    ioPutIn( a,d ) =
    {
    	if (d=straw or d=bellows) {
			outhide(true);
			self.verIoAttachTo(a);
			if (outhide(nil))
				self.verIoAttachTo(a);
			else
				self.ioAttachTo(a,d);
    	}
        else {
			outhide(true);
				d.verDoPutIn( a, self );
			if (outhide(nil))
				d.verDoPutIn( a, self );
			else
				d.doPutIn( a, self );
		}
    }
	doDrop(a) = {
		if (global.b4) {
			"\^<<balloon.thedesc>>, attached to one end of 
			<<straw.thedesc>>, slides to the floor of the study.  ";
			balloon.moveInto( studyfloor );
			straw.moveInto( studyfloor );
		}
		else pass doDrop;
	}
	doSynonym( 'Take' ) = 'Unwear' 'Detach'
	doTake(a) = {
		if (!global.ischicken) pass doTake;
		else {
			if (length(Me.contents)>0) global.beakyou;
			else if (global.b5) {
				"You tug at <<balloon.thedesc>>, 
				trying to pull it from beneath the window frame.  
				Winnie, following you closely, flaps with agitation, as if to say, 
				\"Don't be a bird brain!  We've got to get out of here!\".  ";
			}
			else if (global.b4) {
				"You snatch <<balloon.thedesc>> and attached <<straw.sdesc>> up in your beak like a 
				long, fat-headed worm.  ";
				balloon.moveInto( Me );
				self.moveInto( Me );
			}
			else if (global.b8) {
				"You grab the <<balloon.thedesc>> and yank it off the tube of the bellows.  ";
				balloon.moveInto( Me );
				global.b8 := nil;
			}
			else {
				self.taken;
				self.moveInto( Me );
			}
		}
	}
	taken = {
		if (self.location=dispenser) "You grab hold of the long, stringy <<balloon.sdesc>> 
			with your beak and pull until it flaps 
			free of the Super-Bendy Balloon-Animal Balloon Dispenser (pat. pending).  
			You discover that it is the last one in the dispenser, something that leaves 
			you with a queer sense of melancholy.  ";
		else "You snatch <<balloon.thedesc>> up in your beak like a tasty worm.  ";
	}
	verDoBreak(a)={
		if (global.b6)
			"Winnie shakes her head furiously at you as if to say \"Don't even think about it, 
			buster!  \(I'm\) not going on tonight's menu!\"  ";
		else 
			"You can't pop it until it's inflated.  ";
	}
	verDoInflate(a) = {
		if (global.b7) "It's already as inflated as it's going to get.  ";
		else if ((global.b8) or (global.b3 and global.b4)) 
			"You don't have the muscle power to squeeze the bellows.  
			You'll have to find another way.  ";
		else "You have no lips and you must blow.  ";
	}
;

deskchair: chairitem
	sdesc = "desk chair"
	ldesc = "It's Uncle Foggy's chair, a comfortable, broad bottomed seat with a carved beech 
		frame.  "
	adjective = 'desk'
	noun = 'chair'
	location = study
	reachable = [ self orp aunt red executor sister foggy julia self.contents studyfloor desk]
	down = self.doUnboard( Me )
	mount = { if (Me.location=studyfloor) "up"; else "down"; }
;

gag: fixeditem
	adjective = 'black' 'matte' 'pyramidal' 'ultimate' 'practical' 'super' 'funky'
	noun = 'pyramid' 'joke' 'invention' 'device' 'chickenizer'
	ldesc = "Uncle Foggy's Super Funky Chickenizer (pat. pending) is a matte black pyramid 
		with a small switch at its apex.  You dearly hope Uncle Foggy left his development 
		notes, or a reversion device, in his lab across the road.  "
	sdesc = "Super Funky Chickenizer (pat. pending)"
	verDoTake(a) = {
		"Whatever it's made of, it's too big and heavy for you to carry in your beak.  ";
	}
	location = nil
;

toggle: fixeditem	
	location = gag
	noun = 'switch' 'toggle'
	sdesc = "switch"
	ldesc = "It works flip-flop!  "
	doSynonym( 'Flip' ) = 'Turn' 'Push' 'Pull' 'Kick' 'Scratch' 'Peck' 'Press'
	verDoFlip(a) = {
		"The switch flips over with a hollow 'click' but nothing happens.  For the first time in 
			your life, you curse Uncle Foggy's sense of humor.  You realize there's only one 
			hope.  You have to get outside the house, and across the road to Uncle Foggy's lab.  
			There, you're sure to find some way to reverse the effects of this prank.  ";
	}
;

buffalo: chairitem
	sdesc = "Buffalo-On-A-Spring (pat. pending)"
	ldesc = {
		"The Buffalo-On-A-Spring (pat. pending) is an enormous, furry buffalo head 
		with thick horns mounted as far apart as a broad man's shoulders.
		As you know, it rests on a tightly coiled spring, and 
		launches forward at the touch of a button hidden on the desk.  Uncle Foggy 
		favored using the device on unsolicited salesmen and IRS auditors.  He would seat them 
		before the desk, wait until they were deeply engrossed in business, and 
		then... \(SPROI-OI-OING\)!  The huge head would lunge towards 
		them at high velocity while Uncle Foggy screamed, \"It's still alive!  Run!  For the 
		love of God, \(RUN\)!\"  Then he'd cackle hysterically as they tripped over 
		themselves in their rush for the door.  Needless to say, victims of this prank 
		rarely returned.  ";
		if (global.b1)
			"\bMounted on the trophy's horns are <<helper.thedesc>>.  ";
	}
	adjective = 'buffalo' 'head' 'buffalo' 'on' 'a' 'trophy'
	noun = 'buffalo' 'head' 'spring' 'Buffalo-On-A-Spring' 'tropy' 'mount'
	location = study
	doSynonym( 'Board' ) = 'Climb' 'Jump'
    outOfPrep = "off of"
    statusPrep = "on"
	reachable = [ self orp aunt red executor sister foggy julia self.contents studyfloor shelves desk deskchair ]
	down = self.doUnboard( Me )
	verIoAttachTo(a)={}
	ioAttachTo(a,d)={
		if (d<>helper) "There's nothing on <<self.thedesc>> to which to attach <<d.thedesc>>.  ";
		else {
			self.ioPutOn(a,d);
		}
	}
	verIoPutOn(a)={}
	ioPutOn(a,d)={
		if (d<>helper) {
			"\^<<d.thedesc>> slides off the <<self.thedesc>>, landing on the study floor.  ";
			d.moveInto( studyfloor );
		}
		else 
			"There's no good surface on the head itself, but you might be able to mount 
			<<d.thedesc>> on the trophy's horns.  ";
	}
	roomDrop( o ) = {
		"\^<<o.thedesc>> slides off the <<self.thedesc>> and falls to the study floor below. ";
		o.moveInto( studyfloor );
	}
;

horns: fixeditem
	sdesc = "buffalo's horns"
	ldesc = "The horns are as thick as a grown man's arms, and even sprout like 
		raised arms from the buffalo's broad, massive head.  "
	location = buffalo
	adjective = 'buffalo\'s'
	noun = 'horn' 'horns'
	verIoAttachTo(a)={}
	ioAttachTo(a,d)={self.ioPutOn(a,d);}
	verIoPutOn(a)={}
	ioPutOn(a,d)={
		if (d<>helper) {
			"\^<<d.thedesc>> slides off the <<self.thedesc>>, landing on the study floor.  ";
			d.moveInto( studyfloor );
		}
		else {
			"With Winnie's help, you mount the <<helper.thedesc>> on the horns of the <<buffalo.thedesc>>.  ";
			helper.moveInto( horns );
			global.b1 := true;
		}
	}
	doSynonym( 'Board' ) = 'Climb' 'Jump'
	verDoBoard(a)={ "You're already as close to the ceiling as you care to be.  "; }
;

button: buttonitem
	sdesc = "hidden button"
	ldesc = {
		if (Me.location<>desk)
			"It's hidden out of sight, but you know it's there on the desk.  ";
		else "It's effectively disguised as a knot in the wood of the desk.  ";
	}
	adjective = 'hidden'
	noun = 'button'
	location = desk
	doSynonym( 'Push' ) = 'Peck' 'Kick' 'Press'
	verDoPush(a) = {}
	doPush(a) = {
		//"\b\("; say(global.btot); "\)\b"; 
		switch(global.btot) {
			case 0:
				//No elements in place
				self.z1;   ".  ";   self.z0;   self.z4;   self.z6;   ".  ";   self.z3;   ".  ";   self.z8;   ".  ";
				break;
			case 1:
				//Only helper in place
				self.z1;   self.z2;   self.z3;   self.z9;   self.z0;   self.z10;   self.z8;   self.z11;
				break;
			case 2:
				//Bellows in place (+ and other condition), but not helper
				self.z1;   ".  ";   self.z3;   self.z12;   self.z0;   self.z5;   self.z6;   ".  ";   
				self.z8;   ".  ";
				break;
			case 3:
				//Helper + bellows, but no balloon or straw
				self.z1;   self.z2;   self.z0;   self.z5;   self.z6;   " ";   self.z13;   
				self.z14;   ".  ";   self.z8;   self.z11;   self.z15;
				break;
			case 4:
				//Helper + bellows connected to straw, no balloon
				self.z1;   self.z2;   self.z0;   self.z5;   self.z6;   self.z13;   self.z14;   
				self.z16;   
				if (helper.location = Me) {
					self.z23;
					straw.moveInto( studyfloor );
				}	
				else self.z17;   
				self.z8;   self.z11;   self.z15;
				break;
			case 5:
				//Helper + bellows + straw + balloon
				self.z1;   self.z2;   self.z0;   self.z5;   self.z6;   self.z13;   self.z14;
				self.z16;   self.z18;   self.z19;   self.z22;   self.z8;   self.z11;   self.z15;
				balloon.moveInto( studyfloor );
				global.b4 := nil;
				break;
			case 6:
				//Helper + bellows + straw + balloon in knot
				self.z1;   self.z2;   self.z0;   self.z5;   self.z6;   self.z13;   self.z14;   
				self.z16;   self.z18;   self.z19;   self.z20;   self.z21;   self.z8;   self.z11;   self.z15;
				global.b6 := true;
				global.b7 := true;
				sister.moveInto( windowsill );
				break;
			case 7:
				//Helper + bellows + straw + full balloon in knot
				"Winnie sees you reaching for the button and raises a frantic squawk, as 
				if to say \"C'mon, you dumb cluck!  We don't have much time before the 
				window closes again!\"  In addition, the furious pounding at the door reminds 
				you of your fate if Mrs. Faverolles catches you in your current state!";
				break;
			case 8:
				//Helper + bellows + balloon
				self.z1;   self.z2;   self.z0;   self.z5;   self.z6;   self.z13;   self.z14;   
				self.z18;   self.z19;   self.z22;   self.z8;   self.z11;   self.z15;
				balloon.moveInto( studyfloor );
				global.b8 := nil;
				break;
			default:
				"No numbers matched.  ";
				break;
		}
	}
	z0 = { say(global.chickens[rand(length(global.chickens))]); }
	z1 = "The Buffalo-On-A-Spring (pat. pending) zooms off the wall with a resounding 
		\(SPROI-OI-OING\)"
	z2 = ", the Hedge Helpers (pat. pending) bouncing crazily behind.  "
	z3 = "The trophy jerks to a sudden stop about three feet off the ground, in front of the desk"
	z4 = ", standing in the center of the room, "
	z5 = ", standing near the bellows, "
	z6 = "leaps with bulging eyes from the path of the charging trophy"
	z7 = "looks up to see the huge trophy head bearing down and leaps out of its path"
	z8 = "A moment later, the head snaps back to the wall"
	z9 = ", while the Hedge Helpers (pat. pending) snap forward and down, reaching nearly 
		to the floor.  "
	z10 = ", standing on the spot, receives a powerful goosing from the Hedge Helpers 
		(pat. pending) and leaps face first into a nearby piece of furniture.  "
	z11 = ", the Hedge Helpers (pat. pending) whipping insanely behind.  "
	z12 = ", and just above the bellows lying in the middle of the room.  "
	z13 =  " just in time to avoid the whipping Hedge Helpers (pat. pending), which 
		latch onto the bellows and give it a good solid squeeze. "
	z14 = "The bellows \(BOOFS\) as the air is forced out of it"
	z15 = " The bellows slowly returns to its original position as air rushes back into it."
	z16 = " and through <<straw.thedesc>>"
	z17 = ", which whips wildly back and forth for a moment before falling still again.  "
	z18 = ", then into the attached <<balloon.sdesc>>, which"
	z19 = " fills with air"
	z20 = ", slowly raising the window a scant chicken's height as it swells.  "
	z21 = "Winnie, seeing your intent, hops onto the windowsill and steps on the mouth of 
		<<balloon.thedesc>> to prevent the air escaping it.  "
	z22 = ", but then launches free and sputters across the study before falling to the ground.  "
	z23 = ", which tears itself loose from your grip and whips wildly back and forth for a 
		moment before falling still again.  "
;

windowsill: chairitem
	sdesc = "windowsill"
	adjective = 'window'
	noun = 'sill'
	ldesc = {
		if (!global.ischicken) "It's a narrow ledge beneath the window.  ";
		else "It's a ledge beneath the window, easily broad enough for you to stand 
			on in your current form.  ";
	}
	location = study
	doSynonym( 'Board' ) = 'Climb' 'Jump'
	verIoPutOn(a) = {}
	ioPutOn(a,d) = {
		if (d=balloon or d=straw) {
			"Good thinking, but perhaps a more direct approach would help.  ";
		}
		else "You don't need to put anything on the sill.  ";
	}
    outOfPrep = "off of"
    statusPrep = "on"
	reachable = [ self orp aunt red executor sister foggy julia self.contents studyfloor ]
	down = self.doUnboard( Me )
	south = { return(study.south); }
;

window: fixeditem
	sdesc = "window pane"
	ldesc = {
		"A plain, white-framed, four-panel window that looks out on the front lawn.  
			There's a small knot, about the diameter of your fingertip ";
			if (global.ischicken) " (the kind you used to have) ";
			" at the base of the frame where it meets the sill.  ";
		if (global.b6) 
			"\bThe inflated <<balloon.sdesc>> has raised it just about high enough for you 
			to consider escaping, though you don't know how long that will last.  ";
		else if (global.b5)
			"\bCrammed into the knot is a <<balloon.sdesc>> at the end of <<straw.adesc>>.  ";
	}
	adjective = 'window'
	noun = 'window' 'glass' 'pane' 'panel' 'frame'
	location = windowsill
	verDoLookthru(a) = { 
		"Through the bright sunshine streaming in, you see the parked vehicles in 
			Uncle Foggy's front yard, and beyond them, the gate leading to the road.  "; 
	}
	verDoOpen(a) = {
		if (!global.ischicken) 
			"You're afraid to disturb the solemn occasion with such a mundane act.  ";
		else if (global.b7) 
			"It's already open, held up by the inflated balloon.  ";
		else self.twins;
	}
	twins = "It's far too heavy too open by chicken power alone, so you motion 
		Winnie over, slam your chicken-twin power-rings together and squawk, 
		\"Chicken-Twin Power \(ACTIVATE\)!\"  \bOr not.  \b(Hint: that's the puzzle, doofus.)"
	verDoBoard(a)={self.verDoGothru(a);}
	verDoUnboard(a)={self.verDoGothru(a);}
	verDoGothru(a) = { 
		if (!global.ischicken) 
			"Crawling through the window just doesn't appeal 
			like it once did when you and Winnie were kids.  ";
		else if (!global.b7)
			self.twins;
	}
	doGothru(a) = { 
			study.escape;
			unnotify(global, #recipelist);
			fox.moveInto( outside );
			Me.moveInto( outside );
			sister.moveInto( outside );
			outside.lookAround( true );
	}
;

knot: fixeditem, container
	sdesc = "knot"
	ldesc = {
		"It's a small knot just at the very bottom of the frame, about large enough to 
		allow a pencil or a pinky finger between the frame and the sill.  ";
		if (global.b6) 
			"The inflated <<balloon.sdesc>> you inserted in 
			the knot has raised the window just about high enough for you to consider escaping.  ";
		else if (global.b5)
			"Crammed into the knot is a <<balloon.sdesc>> at the end of <<straw.adesc>>.  ";
	}
	noun = 'knot' 'hole'
	isqcontainer = true
	location = windowsill
	verIoPutIn(a) = {self.verIoAttachTo(a);}
	ioPutIn(a,d) = {self.ioAttachTo(a,d);}
	verIoRemoveFrom(a)={self.verIoDetachFrom(a);}
	ioRemoveFrom(a,d)={self.ioDetachFrom(a,d);}
	verIoDetachFrom(a)={
	}
	ioDetachFrom(a,d)={
		if (d=balloon) balloon.doTake(a);
		else d.verDoDetachFrom(a,self);
	}
	verIoAttachTo(a)={
		if (global.b5) "The knot already contains a <<balloon.sdesc>>.  ";
	}
	ioAttachTo(a,d)={
		if (d<>balloon and d<>straw) "You can't get <<d.thedesc>> into the knot.  ";
		else if ((d=balloon or d=straw) and global.b4) {
			"You cram the balloon-covered end of <<straw.thedesc>> 
				into the knot, then, gripping it with your beak, shove <<balloon.thedesc>> 
				as far into the knot as you can.  ";
			global.b5 := true;
			balloon.moveInto( knot );
			if (global.b3)
				straw.moveInto( studyfloor );
			windowsill.reachable := windowsill.reachable + [straw];
		}
		else if (d=balloon) {
			"You try to cram <<balloon.thedesc>> into 
			the knot, but your current anatomical facilities lack any method (i.e. fingers) 
			of pushing things into deep, narrow holes, being rather more suited to pulling 
			things out of deep, narrow holes.  ";
		}
		else if (d=straw) {
			"You slide one end of <<straw.thedesc>> into the knot in 
			the frame.  Unfortunately, it's a loose fit, and <<straw.thedesc>> slides out.  ";
		}
	}
;

fireplace: fixeditem
	sdesc = "fireplace"
	ldesc = {
		"You and Winnie used to spend many cold days bundled up by the charming old 
		brick fireplace, with good books and hot chocolate, the latter preferably drunken 
		through one of Uncle Foggy's Wacky Rainbow Straws (pat. pending).  Standing to one 
		side of the fireplace is an assortment of brass pokers";
		if (!global.b2)
			" and an old bellows";
		".  ";
	}
	noun = 'fireplace'
	location = studyfloor
	doSynonym( 'Board' ) = 'Climb' 'Enter'
	verDoBoard(a) = {
		if (!global.ischicken)
			"Though you and Winnie often tried to climb the sooty chimney, the idea no longer 
			holds much interest for you.  ";
		else 
			"You try to hop from brick to brick up the chimney shaft, but find too few good 
			toe holds, and flop back down to the study floor.  ";
	}
	verDoPutIn(a,i) = {
		"You're not in the mood for pyromania today.  ";
	}
;

pokers: fixeditem
	sdesc = "pokers"
	ldesc = {
		"A variety of brass implements for tending fires stands upright by the fireplace.  ";
		if (!global.b2)
			"Among them stands an old bellows.  ";
	}
	noun = 'pokers' 'poker'
	location = studyfloor
;

bellows: item
	sdesc = "bellows"
	ldesc = {
		"It's an ordinary bellows, ";
		if (!global.b2)
			"standing on end among the pokers by the fireplace";
		else "lying in the middle of the room in front of Uncle Foggy's desk";
		".  Two bits of tapered wood 
		are joined by an accordion-like sleeve.  Pulling the handle out fills it with air; 
		squeezing them together expels the air.  You and Winnie used to use enjoy using this 
		particular bellows to inflate Uncle Foggy's Super-Bendy Balloon-Animal Balloons 
		(pat. pending).  ";
		if (global.b3) "\bAttached to the tube of the bellows is one of Uncle Foggy's 
			Rainbow Wacky Straws (pat. pending).  ";
		else if (global.b8) "\bAttached to the tube of the bellows is one of Uncle Foggy's 
			Super-Bendy Balloon-Animal Balloons (pat. pending).  ";
	}
	doSynonym( 'Squeeze' ) = 'Inflate' 'Deflate'
	verDoSqueeze(a)={
		if (!global.ischicken)
			"Though you and Winnie used to have fun inflating balloons with it, 
				now is not the time.  ";
		else
			"As a chicken, you don't have the muscle (or the hands, for that matter) 
				to squeeze the bellows.  Oh, if only you had hands again!  ";
	}
	noun = 'bellows' 'tube' 'handle'
	location = studyfloor
	isListed = {
		if(!global.b2) return( nil );
		else return( true );
	}
	doSynonym( 'Move' ) = 'Push' 'Take' 'Pull' 'Turn'
	verDoMove(a) = {}
	doMove(a) = {
		if (!global.ischicken)
			"Though blowing up Uncle Foggy's Super-Bendy Balloon-Animal Balloons (pat. pending) 
				with the bellows used to provide you and Winnie hours 
				of amusement, you just don't have the heart for it given the current circumstances.  ";
		else {
			if (!global.b2) {
				"Realizing that you can't use the bellows in its current position, you try to 
					topple it from its upright position by the fireplace.  It budges, but just barely.  
					Winnie, comprehending your efforts, lends a beak to assist.  Working together, 
					you manage to pull the bellows down to the ground and drag it to the center of 
					the room.  ";
				global.b2 := true;
			}
			else "Winnie gives you a light peck as if to say \"Don't be a little chicken shit.
				I'm not helping you move \(that\) again.\"  ";
		}
	}
	verIoRemoveFrom(a)={self.verIoDetachFrom(a);}
	ioRemoveFrom(a,d)={self.ioDetachFrom(a,d);}
	verIoDetachFrom(a)={
	}
	ioDetachFrom(a,d)={
		if (d=balloon) balloon.doTake(a);
		else d.verDoDetachFrom(a,self);
	}
	verDoAttachTo(a,i)={self.verIoAttachTo(a);}
	verIoAttachTo(a)={
		if (!global.b2)
			"The bellows is standing vertically on its handles, putting the tube 
			slightly out of easy reach.  ";
		else if (global.b3 or global.b8) 
			"The <<global.b3 ? "Rainbow Wacky Straw (pat. pending)" : 
			"Super-Bendy Balloon-Animal Balloon (pat. pending)" >> 
			is already attached to the bellows.  ";
	}
	ioAttachTo(a,d)={
		if (d=straw) {
			"You hold the straw firmly in beak and cram it as far into the tube of the bellows 
			as it will go.  The straw fits snugly inside the tube, forming a solid connection.  ";
			global.b3 := true;
			if (global.b5)
				straw.moveInto( studyfloor );
		}
		else if (d=balloon) {
			"You slide the mouth of <<balloon.thedesc>> over the tube of the bellows.  ";
			balloon.moveInto(bellows);
			global.b8 := true;
		}
		else "You can't attach <<d.thedesc>> to the bellows.  ";
	}
    verIoPutIn( actor ) = {}
    ioPutIn( a,d ) =
    {
    	if (d=straw) {
			outhide(true);
			self.verIoAttachTo(a);
			if (outhide(nil))
				self.verIoAttachTo(a);
			else
				self.ioAttachTo(a,d);
    	}
        else {
			outhide(true);
				d.verDoPutIn( a, self );
			if (outhide(nil))
				d.verDoPutIn( a, self );
			else
				d.doPutIn( a, self );
		}
    }
    verIoPutOn( actor ) = {}
    ioPutOn( a,d ) =
    {
    	if (d=balloon) {
			outhide(true);
			self.verIoAttachTo(a);
			if (outhide(nil))
				self.verIoAttachTo(a);
			else
				self.ioAttachTo(a,d);
    	}
        else {
			outhide(true);
				d.verDoPutOn( a, self );
			if (outhide(nil))
				d.verDoPutOn( a, self );
			else
				d.doPutOn( a, self );
		}
    }
;

helper: item
	sdesc = "Hedge Helpers (pat. pending)"
	adesc = self.thedesc
	ldesc = {
		"The Hedge Helpers (pat. pending) extend a gardener's reach while trimming 
		tall hedges.  They clamp on to the shoulders at one end, and end in a pair of  
		articulated rubber hands at the other.  The hands operate a second pair of shears, 
		mimicking the operator's own hands, doubling both his reach and his efficiency.  
		\bThe Hedge Helpers (pat. pending) are another of Uncle Foggy's inventions.  
		Being the recluse he was, he liked his hedges TALL.  ";
		if (global.b1) "Currently, they're dangling from the horns of the 
			Buffalo-On-A-Spring (pat. pending) on the wall above the desk.  ";
	}
	adjective = 'hedge'
	noun = 'helper' 'helpers'
	location = box
	verDoExtend(a)={
		"They were meant to be worn on human shoulders. It's unlikely that you could 
			extend them in your current form. ";
	}
	verDoWear(a)={"\^<<self.thedesc>> weren't designed to mount on small fowl.  ";}
	verDoPutOn(a,i)={
		if (isclass(i,Actor)) self.verDoWear(a);
	}
	verDoAttachTo(a,i) = {
		if (i=buffalo) "You might have better luck attaching it to the trophy's horns.  ";
		else if (i<>horns) "There's no good way to mount it to <<i.thedesc>>.  ";
		else if (isclass(i,Actor)) self.verDoWear(a);
	}
	doTake(a) = {
		if (length(Me.contents)>0) "You can only carry one thing at a time in your beak.  ";
		else if (global.b1) 
			"Winnie sees you headed on a course to pull down the Hedge Helpers (pat. pending) 
			and starts up an agitated flapping, as if to say \"Don't even think about it, egg 
			head.  We've got to get out of here!\"";
		else {
			"You snatch an end of the Hedge Helpers (pat. pending) up in your beak.  Though 
			quite bulky, they're light enough that you can drag them around single... er... beakedly.  ";
			helper.moveInto( Me );
		}
	}
;

box: fixeditem, openable
	sdesc = "carton"
	ldesc = {
		"The greasy, worn carton was Uncle Foggy's hobby box - full of spare bits and 
			pieces and small works in progress.  ";
		if(self.isopen) {
			if (length(self.contents)>1) {
				"Uncle Foggy's box contains ";
				listcont( self ); ". ";
			}
		}
		else "The grubby flaps are closed, hiding whatever stray parts Uncle Foggy left behind.  ";
	}
	noun = 'carton' 'box'
	location = studyfloor
	isopen = nil
;

parts: fixeditem
	location = box
	sdesc = "miscellaneous parts and pieces"
	adesc = self.thedesc
	adjective = 'crack' 'monkey'
	noun = 'parts' 'pieces' 'crack' 'crackpipe' 'pipe' 'butler' 'corn' 
	ldesc = {
		"The greasy box contains an amazing jumble of parts and pieces of things Uncle 
		Foggy was working on.  ";
		if (helper.location = box)
			"The only thing among them that looks to be of any immediate use is the set of 
			Hedge Helpers (pat. pending).  ";
	}
	verDoTake(a) = {"You don't see anything of any use in there.  ";}		
;

bar: chairitem
	sdesc = "bar"
	ldesc = {
		"Though not a habitual drinker, Uncle Foggy always kept a stocked bar.  As kids, you 
			and Winnie often had fun sneaking olives and maraschino cherries.  However, it 
			looks like all of the condiments, along with the booze and glasses, have been 
			locked away.  ";
		if (straw.location = bar)
			"\bLying on the surface of the bar is one of Uncle Foggy's Rainbow Wacky Straws 
				(pat. pending).  ";
	}
	noun = 'bar'
	location = study
	reachable = [ self orp aunt red executor sister foggy julia self.contents studyfloor]
    ischair = nil
    outOfPrep = "off of"
    statusPrep = "on"
	down = self.doUnboard( Me )
	verDoOpen(a)={ 
		"It's been locked up, presumably by Mr. Dorkings to prevent the help from helping themselves.  ";
	}
;

straw: item
	sdesc = "Rainbow Wacky Straw (pat. pending)"
	ldesc = {
		"Another of Uncle Foggy's inventions, <<straw.thedesc>> 
		was developed with you and Winnie in mind.  It's a ludicrously long flexible straw that 
		randomly changes the color of liquids that pass through it.  You and Winnie used to 
		enjoy drinking Shirley Temples from across the room, watching as <<straw.thedesc>> 
		turned the drink from cherry cola red to lime rickey green to tang orange.  ";
		if (global.b3) "\bOne end of <<straw.thedesc>> is inserted into the bellows";
		if (global.b3 and global.b4) ", while the other "; 
		if (global.b3 and !global.b4) ".  ";
		if (global.b4 and !global.b3) "\bOne end of <<straw.thedesc>> ";
		if (global.b4) "is inserted into <<balloon.thedesc>>";
		if (global.b5) " and crammed into the knot in the window";
		if (global.b4 or global.b5) ".  ";
	}
	adjective = 'rainbow' 'wacky'
	noun = 'straw'
	location = bar
	isListed = {
		if(self.location = bar) return( nil );
		else return( true );
	}
	verIoRemoveFrom(a)={self.verIoDetachFrom(a);}
	ioRemoveFrom(a,d)={self.ioDetachFrom(a,d);}
	verDoRemoveFrom(a,i)={self.verDoDetachFrom(a,i);}
	verIoDetachFrom(a)={
	}
	ioDetachFrom(a,d)={
		if (d=balloon) balloon.doTake(a);
		else d.verDoDetachFrom(a,self);
	}
	verDoDetachFrom(a,i)={
		if((i<>bellows and i<>balloon and i<>knot) or (i=bellows and !global.b3)
			or (i=balloon and !global.b4) or (i=knot and !global.b5))
			"\^<<self.thedesc>> isn't attached to <<i.thedesc>>.  ";
		else if (i=bellows or i=straw or i=knot)
			"Winnie sees you trying to pull the <<straw.sdesc>> from the <<i.thedesc>> 
			and pecks you on the ankle as if to say, \"Don't undo that - 
			we've got to get out of here!\"";
	}
	verDoAttachTo(a,i)={
		if (self.location<>Me and i.location<>Me) {
			"You're not carrying <<self.thedesc>>";
			if (i=balloon) " or <<i.thedesc>>";
			".  ";
		}
		else self.verIoAttachTo(a);
	}
	verIoAttachTo(a)={
		if (global.b3 and global.b5)
			"\^<<straw.thedesc>> is already attached to the bellows 
			at one end and <<balloon.thedesc>> at the other.  ";
	}
	ioAttachTo(a,d)={
		if (d= bellows or d=knot) 
			d.ioAttachTo(a,self);
		else if (d=balloon) {
			"You slide the mouth of <<balloon.thedesc>> over 
				<<straw.thedesc>>.  ";
			global.b4 := true;
			if (straw.location = Me or balloon.location = Me) {
				balloon.moveInto( Me ); 
				straw.moveInto( Me );
			}
		}
		else "You're unable to attach <<straw.thedesc>> to <<d.thedesc>>.  ";
	}
    verIoPutOn( actor ) = {}
    ioPutOn( a,d ) =
    {
    	if (d=balloon) {
			outhide(true);
			self.verIoAttachTo(a);
			if (outhide(nil))
				self.verIoAttachTo(a);
			else
				self.ioAttachTo(a,d);
    	}
        else {
			outhide(true);
				d.verDoPutOn( a, self );
			if (outhide(nil))
				d.verDoPutOn( a, self );
			else
				d.doPutOn( a, self );
		}
    }
	verDoPutIn( a,i ) = {
		if (i=bellows or i=balloon)
			self.verDoAttachTo(a,i);
		else pass verDoPutIn;
	}
	doPutIn(a,i) = {
		if (i=bellows or i=balloon)
			self.verDoAttachTo(a,i);
		else pass verDoPutIn;
	}
	doDrop(a)={
		"\^<<straw.thedesc>> slides ";
		if (Me.location.location and Me.location<>studyfloor) 
			"off <<Me.location.thedesc>> ";
		"to the study floor.  ";
		straw.moveInto(studyfloor);
		if (global.b4 and !global.b5)
			balloon.moveInto(studyfloor);
	}
	doSynonym( 'Take' ) = 'Unwear' 'Detach'
	doTake(a) = {
		if (!global.ischicken) pass doTake;
		else {
			if (length(Me.contents)>0) global.beakyou;
			else if (!global.b4) {
				self.taken;
				straw.moveInto( Me );
			}
			else if (global.b4 and !global.b5) {
				"You snatch <<straw.thedesc>> and attached 
				<<balloon.sdesc>> up in your beak like a 
				long, fat-headed worm.  ";
				self.moveInto( Me );
				balloon.moveInto( Me );
			}
			else if (global.b3 and global.b5) {
				"You tug at <<balloon.thedesc>>, 
				attempting to dislodge it from the bellows or the knot.
				Winnie, following you closely, flaps with agitation, as if to say, 
				\"Don't be a bird brain!  We've got to get out of here!\".  ";
			}
			else {
				self.taken;
				self.moveInto( Me );
			}
		}
	}
	taken = "You snatch <<straw.thedesc>> up in your beak like 
		a long wriggly worm.  "
;

shelves: chairitem
	sdesc = "shelves"
	ldesc = "Tall wooden shelves tower over Uncle Foggy's desk on either side, drawing 
		attention to the Buffalo-On-A-Spring (pat. pending), mounted prominently on the wall 
		between them.  The shelves are crammed with books of all ages and subjects, though 
		there's probably little on them that hasn't been read by you or Winnie.  "
	adjective = 'book'
	noun = 'shelf' 'shelves' 'bookshelves' 'bookshelf'
	location = study
	doSynonym( 'Board' ) = 'Climb' 'Jump'
    outOfPrep = "off of"
    statusPrep = "on"
	reachable = [ self orp aunt red executor sister foggy julia self.contents studyfloor buffalo desk deskchair]
	mount = { if (Me.location=studyfloor) "up"; else "down"; }
	down = self.doUnboard( Me )
	verDoBoard(a) = {}
	doBoard(a) = {
		if (!global.ischicken)
			"Maybe when you were kids, but you and Winnie are far too big for that now.  ";
		else {
			if (helper.location = Me) {
				"With one of the light-weight Hedge Helper (pat. pending) hands clutched in your 
					beak, you attempt to 
					climb the tall bookshelf, without much progress.  Winnie, seeing your plan, 
					beaks down on the other hand and mounts alongside you.  Between you both, 
					you're able, slowly, laboriously, to climb the bookshelves with the Hedge 
					Helpers (pat. pending).  At last you reach the top, even with the 
					Buffalo-On-A-Spring (pat. pending).  ";
				Me.moveInto(shelves);
			}
			else 
				"You slowly, laboriously climb the bookshelf, one shelf at a time, claw over 
					beak over claw.  Eventually you reach the top.  You look around and find yourself 
					at a level with the Buffalo-On-A-Spring (pat. pending).  ";
				Me.moveInto(shelves);
		}
	}
;

books: fixeditem
	sdesc = "books"
	ldesc = "The shelves are packed with numerous books in a wide variety of subjects.  
		Between you and Winnie, you've probably read most of them.  "
	noun = 'book' 'books'
	doSynonym( 'Take' ) = 'Read' 'Search'
	verDoTake(a) = {
		if (!global.ischicken) "Now's not the time to be browsing Uncle Foggy's library.  ";
		else "Oh no!  You seem to have lost your ability to read!  All the writing on the books' 
			spines looks like chicken scratch!  ";
	}
	location = shelves
;

loveseat: chairitem
	location = study
	adjective = 'love'
	noun = 'loveseat' 'seat'
	sdesc = "love seat"
	reachable = [ self orp aunt red executor sister foggy julia self.contents studyfloor]
	ldesc = "The love seat is upholstered in plush, overstuffed, Corinthian leather.
		Quien es mas macho?  "
	noexit = "It would be disrespectful to go wandering before the reading is over.  "
	verDoUnboard(a) = { if (!global.ischicken) self.noexit; }
	roomAction( actor, v, d, prep, io ) = {
		if ((v=standVerb or v=outVerb or v=standVerb) and !global.ischicken) { self.noexit; exit; }
		else pass roomAction;
	}
	down = {
		if (global.ischicken) self.doUnboard( Me );
		else self.noexit;
	}
;

couch: chairitem
	sdesc = "couch"
	ldesc = "The sofa is a comfortably worn leather affair, part of a matched set with 
		the loveseat.  "
	noun = 'couch' 'sofa'
	location = study
    outOfPrep = "off of"
    statusPrep = "on"
	reachable = [ self orp aunt red executor sister foggy julia self.contents studyfloor]
	down = self.doUnboard( Me )
;

vocabulary: thing
	noun = 'chicken' 'chickens'
	location = nil
;

/*
-actors:thing;
*/

executor: Actor
	isListed = nil
	adjective = 'Mr.'
	noun = 'dorkings' 'executor'
	sdesc = "Mr. Dorkings"
	ldesc = { if (!global.ischicken) self.hdesc; else self.cdesc; }
	hdesc = "Dorkings was Uncle Foggy's solicitor.  A dour man in black who rarely smiles, 
		you've never quite trusted him.  "
	cdesc = "Dorkings was a dour looking man in black.  Now he's a dour looking black chicken.  
		And those beady eyes don't make him look any more trustworthy.  "
	havow = "Mr. Dorkings looks at you with disapproving eyes.  You know he's never liked 
		you and Winnie.  "
	location = foyer
	verDoFollow( a ) = {
		if (!global.ischicken and Me.location=outside)
			"";
		else pass doFollow;
	}
	actorAction( v, d, p, i ) = { if (!global.ischicken) self.hignore; else self.cignore; exit; }
;

foggy: fixeditem
	isListed = nil
	adjective = 'uncle'
	noun = 'fogarth' 'foggy' 'Barnevelder'
	sdesc = "Uncle Foggy"
	ldesc = "The closeup image of Uncle Foggy's face on the television floats just about 
		where it would be if he were still sitting at his desk, creating an eerie warping of reality.  "
	//cdesc = self.hdesc
	location = nil
	disavow = "Your grief must be getting to you.  Get a grip.  
		Uncle Foggy is just an image on the television.  "
;

red: Actor
	isListed = nil
	adjective = 'cousin'
	noun = 'Reginald' 'Red' 'Reggie' 'Barnevelder'
	sdesc = "Red"
	ldesc = { if (!global.ischicken) self.hdesc; else self.cdesc; }
	hdesc = "Your cousin Reginald 'Red' Barnevelder is a scrawny red-headed jerk.  Ever since 
		you were children, he's always lorded it over you and Winnie.  "
	cdesc = "Cousin Red was a scrawny, red-headed human.  Now he's a scrawny, thin-necked 
		rooster with a floppy red comb.  "
    havow = "\"HAH hah!  We're going to get everything, and you're going to get nothing! 
    	So don't try sucking up to me, 'cause it won't work!\""
	location = outside
	actorAction( v, d, p, i ) = { if (!global.ischicken) self.hignore; else self.cignore; exit; }
;

orp: Actor
	isListed = nil
	adjective = 'uncle' 'Mr.'
	noun = 'Orpington' 'Barnevelder'
	sdesc = "Uncle Orpington"
	ldesc = { if (!global.ischicken) self.hdesc; else self.cdesc; }
	hdesc = "Your Uncle Orpington is a big, blustery man prone to sudden outbursts and 
		disapproving tirades.  The only time you can recall ever seeing him happy was while 
		reminiscing about some of Uncle Foggy's failed experiments.  "
	cdesc = "Uncle Orpington makes for a big, bullish rooster, the cock of the walk.  "
    havow = "Uncle Orpington snorts in apparent disgust.  \"You gold-digging 
    	little brats.  You'll get nothing.\"  "
	location = outside
	actorAction( v, d, p, i ) = { if (!global.ischicken) self.hignore; else self.cignore; exit; }
;

aunt: Actor
	isListed = nil
	adjective = 'aunt' 'Mrs.'
	noun = 'Lamona' 'Barnevelder'
	sdesc = "Aunt Lamona"
	ldesc = { if (!global.ischicken) self.hdesc; else self.cdesc; }
	hdesc = "Your Aunt Lamona wears a high collar and a pinched expression over a plain 
		woolen dress.  She's always held your side of the family at a distance with her 
		snobbishly aristocratic values.  "
	cdesc = "Aunt Lamona makes for a stringy looking hen.  You're willing to bet she's all 
		gristle.  "
    havow = "Aunt Lamona sniffs at you and looks away haughtily.  She's never had any 
    	use for your side of the family, and Uncle Foggy's death hasn't changed that.  "
	location = outside
	actorAction( v, d, p, i ) = { if (!global.ischicken) self.hignore; else self.cignore; exit; }
;

barnevelders: Actor, floatingItem
	isplural = true
	noun = 'barnevelders'
	sdesc = "the Barnevelders"
	ldesc = { if (!global.ischicken) self.hdesc; else self.cdesc; }
	hdesc = "The Rhode Island Barnevelders are a pompous, arrogant looking group.  "
	cdesc = "The Rhode Island Barnevelders make for a panicky looking group of chickens.  "
	locationOK = true
	location = {return(orp.location);}
    havow = "\^<<self.sdesc>> look at you with a cumulative sneer that suggests they 
    	have nothing to say to you.  "
    cavow = "\^<<self.sdesc>> have even less to say to you now than they did before.  "
	actorAction( v, d, p, i ) = { if (!global.ischicken) self.hignore; else self.cignore; exit; }
;

sister: Actor
	isListed = nil
	adjective = 'twin' 'sister'
	noun = 'sister' 'Winnie' 'Wyandotte'
	sdesc = "Winnie"
	ldesc = { if (!global.ischicken) self.hdesc; else self.cdesc; }
	hdesc = "Your sister Wyandotte 'Winnie' Langshan has been your steady companion since 
		birth.  The two of you have never been separated, and share an almost psychic bond.  "
	cdesc = "Though outwardly Winnie looks like a coquettish young hen, you can still sense 
		the calm intelligence and wry humor beneath that feathered skin.  "
	location = outside
	actorAction( v, d, p, i ) = { if (!global.ischicken) self.hignore; else self.cignore; exit; }
	hignore = "<<self.sdesc>> spares you a sympathetic glance, but she's lost in her own thoughts right now.  "
	cignore = "You let out an unintelligible squawk, failing to communicate your order.  "
    havow = "\^<<self.sdesc>> glances at you with a sympathetic smile, but fails to say 
    	anything.  She's lost in her own memories of Uncle Foggy, as you know all too well.  "
    cavow = "\^<<self.sdesc>> is unable to speak, but you nonetheless sense the warm 
    	intelligence behind those beady eyes.  "
;

julia: fixeditem
	isListed = nil
	adjective = 'Julia'
	noun = 'Childs' 'Julia'
	sdesc = "Julia Childs"
	ldesc = "Julia Childs chirps cheerfully as she performs unspeakable mutilations to deceased fowl.  "
	//cdesc = self.hdesc
	location = nil
	disavow = "Get real.  Julia Childs is just an image on the television.  "
;

cook: Actor
	isListed = nil
	adjective = 'Mrs.'
	noun = 'Faverolles' 'cook'
	sdesc = "Mrs. Faverolles"
	ldesc = "Mrs. Faverolles is a short, squat, troll-like woman stuffed into a tightly fitted 
		white chef's uniform.  Mrs. Faverolles is notorious for her mercurial temper, which 
		often leads to screaming paroxysms of incomprehensible French.  "
	cdesc = self.hdesc
	location = study
	actorAction( v, d, p, i ) = { if (!global.ischicken) self.hignore; else self.cignore; exit; }
;

saucepan: fixeditem
	location = cook
	adjective = 'sauce'
	noun = 'sauce' 'pan' 'saucepan'
	sdesc = "sauce pan"
	ldesc = "It's full of some rich, burgundy colored sauce.  "
;

spoon: fixeditem
	location = cook
	noun = 'spoon'
	sdesc = "spoon"
	ldesc = "A wooden spoon, apparently used for stirring sauce.  "
;

/*
-objects:thing;
*/

replace scoreStatus: function( ) {
	//setscore( cvtstr(global.score) + ' out of 14' );
	setscore ('');
}

replace terminate: function
{
	"Thank you for playing the demo version of \(Foggywood Hijinx\), a
	TextFeather release.  On-line registration for TextFeather products
	will be available at http://www.textfeather.com on or before
	June 30, 1998.  Thanks for your patience!";
}

class intangible: fixeditem
	errmsg = "You can't do that with <<self.thedesc>>.  "
	doverbs = [ inspectVerb ]
	dobjGen(a, v, i, p) = {
		if (find(self.doverbs,v) = nil) {
			self.errmsg;
			exit;
		}
	}
	iobjGen(a, v, d, p) = { 
		self.dobjGen(a, v, d, p); 
	}
;


modify Me
	ldesc = {
		if (!global.ischicken) "You look about the same as always.  ";
		else "You make a tasty looking chicken.  ";
	}
;

modify thing
	verDoSmell(a) = "You smell nothing unusual.  "
	verDoListen(a) = "You hear nothing unusual.  "
	verDoPeck(a) = {
		if (!global.ischicken) "Uncle Foggy's death must be getting to you worse than you realized.  ";
		else "You dart forward and give <<self.thedesc>> a frustrated little peck.  ";
	}
	verDoKick(a) = {
		if (!global.ischicken) "Uncle Foggy's death must be getting to you worse than you realized.  ";
		else "You dart forward and give <<self.thedesc>> a frustrated little kick.  ";
	}
	verDoSteal(a) = {
		if (!global.ischicken) "Please try to control yourself until AFTER the reading of the will.  ";
		else "You don't make a very good cat, er, chicken burglar.  ";
	}
;

modify Actor
	thedesc = self.sdesc
	adesc = self.sdesc
	ldesc = { if (!global.ischicken) self.hdesc; else self.cdesc; }
	hdesc = "A human being."
	cdesc = "A chicken."
	verDoTalk( a ) = {self.disavow;}
    disavow = { 
    	if (!global.ischicken) self.havow;
    	else self.cavow;
    }
	havow = "Apparently, \^<<self.sdesc>> has nothing to say to you.  "
    cavow = { "\^<<self.sdesc>> the chicken has even less to say to you than 
    	<<self.sdesc>> the human being.  "; }
	hignore = "<<self.sdesc>> sneers at you unpleasantly.  "
	cignore = "You let out an unintelligible squawk, failing to communicate your order.  "
    verIoSayTo( actor ) = {}
	ioSayTo( actor, v ) = { self.disavow; }
    verDoAttack(a) = { "Tempting, but not helpful.  "; }
    verDoKick(a) = { self.verDoAttack(a); }
    verDoPeck(a) = { self.verDoAttack(a); }
    verDoEat(a) = {
    	if (!global.ischicken)
    		"Uncle Foggy didn't raise you to be a cannibal.  ";
    	else
    		"Mmm, tastes just like chicken.  ";
    }
;

modify room
	hverbs = [ askVerb sayVerb tellVerb yellVerb helloVerb ]
	cverbs = [ peckVerb squawkVerb flapVerb ]
	roomAction( actor, v, d, prep, io ) = {
		if (global.ischicken and find(self.hverbs,v)<>nil) {
			"You squawk something unintelligible.  
				It's no wonder Winnie always tells you to shut your beak!";
			exit;
		}
		else if (!global.ischicken and find(self.cverbs,v)<>nil) {
			"Don't be a dumb cluck.  What do you think you are, a chicken?  ";
			exit;
		}
		else {
			pass roomAction;
		}
	}
;

towardPrep: Prep
    preposition = 'toward' 'towards'
    sdesc = "toward"
;

modify basicStrObj
	verDoSayTo( actor, io ) = {}
	verDoSay( actor ) = {}
	doSay( actor ) = {
		"You say \"";say( self.value ); "\".  ";
	}
;

/*
-verbs:thing;
*/

xyzzyverb: sysverb
  verb = 'xyzzy'
  sdesc = "xyzzy"
  action(actor) = {
		if (global.ischicken)
			"\bWith a mighty 'psquaAWK', you squeeze out an egg!  Sadly it lands on the hard 
			cold ground, where it meets an untimely demise.  ";
		else
			"A hollow voice says, \"Hey, didn't I see you on the MUD last night?\"";
		abort;
  }
;

aboutVerb: sysverb
	verb = 'about'
	sdesc = "about"
	action(a) = {
			"TextFeather is pleased to present \(Foggywood Hijinx\) a game hen, by Ivan Cockrum.
			\b
			About the author:
			\b
			Ivan \"Henny\" Cockrum grew up on a chicken ranch in northern Montana.  As a young 
			boy, Ivan spent so much time around poultry that for a long time he thought he \(was\) 
			a chicken.  That is, until the Great Thanksgiving Day Beheading of '57, which provided a 
			dramatic lesson in applied Darwinism to innocent young Ivan.  Now, Ivan is a chicken 
			rancher himself and a 
			fanatical proponent of game hens, which is why he proudly presents this game of 
			\(Foggywood Hijinx\).
			\b
			Please direct comments or questions to ivan@cockrumville.com.
			\b
			\(Foggywood Hijinx\) was beta tested and catered by 
			Chad Hernandez, Christopher Huang, Christopher Klimas, and Dan Shiovitz.
			\b
			About TextFeather:
			\b
			TextFeather, Inc. is a partnership of chicken ranchers formed for the
			purpose of providing quality works of interactive game hen to
			a worldwide community of players, hobbyists, and
			chicken fetishists.  Help support our efforts to keep interactive
			game hens alive! 
		";
		abort;
	}
	doAction = 'About'
;

/*hintVerb: deepverb
	verb = 'hint' 'help' 'hints'
	sdesc = "hint"
	action(a) = {
		"Hints are available with the full registered version of \(Foggywood Hijinx\).  
		Type REGISTER for additional information.  ";
	}
;
*/
regsterVerb: deepverb
	verb = 'register'
	sdesc = "register"
	action(a) = {
		"On-line registration for TextFeather products will be available 
		at http://www.textfeather.com on or before June 30, 1998.  Thanks for your patience!  ";
	}
;

smellVerb: deepverb
	verb = 'smell' 'sniff'
	sdesc = "smell"
        action(actor) =
	{
		if (global.ischicken)
		  "Your incredible chicken sense of smell detects nothing unusual.  ";
		else
			"You smell nothing out of the ordinary.";
	}
	doAction = 'Smell'
;

listenVerb: deepverb
	verb = 'listen'
	sdesc = "listen"
        action(actor) =
	{
		if (global.ischicken)
		  "Your super-keen chicken hearing detects nothing unusual.  ";
		else
			"You hear nothing out of the ordinary.";
	}
	doAction = 'Listen'
;

knockVerb: deepverb
	verb = 'knock'
	sdesc = "knock"
	doAction = 'Knock'
;

squawkVerb: deepverb
	verb = 'squawk' 'peep' 'cheep' 'chirp' 'crow'
	sdesc = "squawk"
	action(actor) = {
		"You rear back, flap your wings, and let loose with a loud \(PSQUAWK\)!  ";
	}
;

flapVerb: deepverb
	verb = 'flap' 'fly'
	sdesc = "flap"
	action(actor) = {
		"You flap your wings furiously.  The feathers fly, but sadly, you don't.  ";
	}
;

goBehindVerb: deepverb
    verb = 'go behind'
    sdesc = "go behind"
    doAction = 'Gobehind'
;

goThruVerb: deepverb
    verb = 'go through' 'go thru'
    sdesc = "go through"
    doAction = 'Gothru'
;

goUnderVerb: deepverb
    verb = 'go under' 'go beneath'
    sdesc = "go under"
    doAction = 'Gounder'
;

kickVerb: deepverb
	verb = 'kick' 'claw' 'scratch'
	sdesc = "kick"
	doAction = 'Kick'
;

peckVerb: deepverb
	verb = 'peck'
	sdesc = "peck"
	doAction = 'Peck'
;

driveVerb: deepverb
	verb = 'drive'
	sdesc = "drive"
	doAction = 'Drive'
;

stealVerb: deepverb
	verb = 'steal'
	sdesc = "steal"
	doAction = 'Steal'
;

squeezeVerb: deepverb
	verb = 'squeeze'
	sdesc = "squeeze"
	doAction = 'Squeeze'
;

inflateVerb: deepverb
	verb = 'inflate' 'blow up'
	sdesc = "inflate"
	doAction = 'Inflate'
;

deflateVerb: deepverb
	verb = 'deflate'
	sdesc = "deflate"
	doAction = 'Deflate'
;

pressVerb: deepverb
	verb = 'press'
	sdesc = "press"
	doAction = 'Press'
;

extendVerb: deepverb
	verb = 'extend'
	sdesc = "extend"
	doAction = 'Extend'
;

modify sayVerb
	ioAction( toPrep ) = 'SayTo'
;

setupVerb: deepverb
	verb='setup'
	sdesc = "setup"
	action(a) = {
		global.turnsofar:=11;
		julia.moveInto(study);
		Me.moveInto(studyfloor);
		sister.moveInto(studyfloor);
		orp.moveInto(studyfloor);
		aunt.moveInto(studyfloor);
		red.moveInto(studyfloor);
		executor.moveInto(studyfloor);
		global.ischicken:=true;
		global.tvon:=2;
		addword(sister, &noun, 'chicken');
		addword(sister, &noun, 'hen');
		addword(aunt, &noun, 'chicken');
		addword(aunt, &noun, 'hen');
		addword(executor, &noun, 'chicken');
		addword(executor, &noun, 'rooster');
		addword(orp, &noun, 'chicken');
		addword(orp, &noun, 'rooster');
		addword(red, &noun, 'chicken');
		addword(red, &noun, 'rooster');
		addword(barnevelders, &noun, 'chickens');
		addword(barnevelders, &noun, 'roosters');
		addword(barnevelders, &noun, 'hens');
		straw.moveInto( studyfloor );
		balloon.moveInto( studyfloor );
		global.b2 := true;
		helper.moveInto( studyfloor );
		box.isopen := true;
		"Yeah, baby!  ";
	}
;

endgameVerb: deepverb
	verb='endgame'
	sdesc = "endgame"
	action(a) = {
		global.turnsofar:=11;
		julia.moveInto(study);
		Me.moveInto(outside);
		sister.moveInto(outside);
		orp.moveInto(studyfloor);
		aunt.moveInto(studyfloor);
		red.moveInto(studyfloor);
		executor.moveInto(studyfloor);
		global.ischicken:=true;
		addword(sister, &noun, 'chicken');
		addword(sister, &noun, 'hen');
		global.b7 := true;
		"Yeah, baby!";
	}
;

chickenVerb: sysverb
	verb = 'chicken'
	sdesc = "chicken"
	action(a) = {
		"Bart: Fat kids, skinny kids, kids who climb on  rocks...
		\nBart: Smart kids, dumb kids...
		\nMilhouse: ...even kids with chicken pox...
		\nBart: ...love hot dogs, \(armor\) hot dogs!  
		\nBart: They're the \(dogs\)... kids love to \(muuunch!\)
		\nLisa: Doesn't this family know any songs that AREN'T television commercals?
		\n(Pause.)
		\nSimpsons family (minus Lisa): I feel like chicken tonight, like chicken tonght, like 
			chicken tonight!
		  ";
		abort;
	}
;	

hypnotizeVerb: sysverb
	verb = 'hypnotize'
	sdesc = "hypnotize"
	action(a) = {
		"Bart: Remember that hypnotist we saw to help us resolve our family issues?
		\nHomer: How can I forget!  Five years later, and I \(still\) think I'm a chicken.
		\nHomer: I'm a chicken, Marge!
		\nMarge: I know.
		";
		abort;
	}
;

/* 
-foggyhints: thing;
*/

helpVerb: sysverb
	verb = 'help' 'hint' 'hints'
	action(actor) = {
		self.helpme( actor );
		abort;
	}
	listhints = {
		local i, tot, list;
		list := allhints.myhints;
		tot := length( list );
		clearscreen();
		for (i := 1 ; i <= tot ; ++i) {
			"\("; say( i ); ")\) "; list[i].sdesc; "\n";
		}
		"\b";
		"------------------------------\n";
		"\b";
	}
	helpme( actor ) = {
		local list, tot, cnt, i;
		list := allhints.myhints;
		tot := length( list );
		self.listhints;
		while ( 1 ) {
			local resp, j;
			if(not j) {
				"\nEnter a number from 1 to "; say(tot); ", or (E)xit: >"; 
			}
			else {
				"\nEnter a number from 1 to "; say(tot); ", or (E)xit: >"; 
			}
			j := true;
			resp := lower(input());
			if (resp = 'e' or resp = 'exit') {
				clearscreen();
				Me.location.lookAround(true);
				abort;
			}
			resp := cvtnum( resp );
			if (resp < 1 or resp > tot)
				continue;
			clearscreen();
			"\("; list[resp].sdesc; "\)";
			while( 1 ) {
				local num, cnt, subresp;
				num := length(list[resp].myhints);
				if (cnt = -1) { cnt := nil; break; }
				if (cnt = nil) cnt := 1;
				"\b"; say(cnt); "/"; say(num); ": "; say( list[resp].myhints[cnt] ); "\b";
				while( 1 ) {
					if(not j) {
						if (cnt < num)
							"\nType (N)ext, or (E)xit: >"; 
						else
							"\nNo more hints!  Type (E)xit: >"; 
					}
					else {
						if (cnt < num)
							"\nType (N)ext, or (E)xit: >"; 
						else
							"\nNo more hints!  Type (E)xit: >"; 
					}
					j := true;
					subresp := lower(input());
					if (cnt < num) {
						if (subresp = 'n' or subresp = 'next') {
							++cnt;
							break;
						}
					}
					if (subresp = 'e' or subresp = 'exit') {
						self.listhints;
						cnt := -1;
						break;
					}
				}
			}
		}	
	}
;

class hintitem: thing
;

class hintlist: thing
;

allhints: hintlist
	sdesc = "Hints"
	myhints = [
		hint1 hint2 hint3 hint4 hint5 hint6 hint7 hint8 hint9 hint10 hint11
		hint12 hint13 hint14 
	]
;

hint1: hintitem
	sdesc="How do I reverse Uncle Foggy's practical joke?"
	hintsseen = 0
	myhints = [
		'Have you tried using the Super Funky Chickenizer (pat. pending)?'
		'Too bad it doesn\'t do anything.'
		'Maybe you can find something in Uncle Foggy\'s lab, across the road.'
	]
;

hint2: hintitem
	sdesc="What do I do with the Super Funky Chickenizer (pat. pending)?"
	hintsseen = 0
	myhints = [
		'Have you tried flipping the switch?'
		'Doesn\'t do anything, does it?'
		'Looks like you\'ll have to find some other way to reverse the process.'
	]
;

hint3: hintitem
	sdesc="What do I do with the Hedge Helpers (pat. pending)?"
	hintsseen = 0
	myhints = [
		'Maybe cutting Uncle Foggy\'s hedges would help you deal with your grief.'
		'No?'
		'Then you might try attaching them to something.'
		'Something about as broad as a man\'s shoulders.'
		'Something like the buffalo\'s horns.'
	]
;

hint4: hintitem
	sdesc="What do I do with the Super-Bendy Balloon-Animal Balloon (pat. pending)?"
	hintsseen = 0
	myhints = [
		'Make balloon animals, of course!'
		'Or maybe you can attach it to something useful.'
		'Like the bellows.'
		'Or the straw.'
		'Then use it to raise the window.'
		'By putting it in the knot.'
		'And inflating it.'
	]
;

hint5: hintitem
	sdesc="What do I do with the bellows?"
	hintsseen = 0
	myhints = [
		'You could stoke up a nice hot fire.'
		'Or maybe use it to inflate something.'
		'Like the balloon.'
		'Though attaching the balloon directly to the bellows doesn\'t do much good.'
		'A go-between might help.'
		'Like the straw.'
	]
;

hint6: hintitem
	sdesc="What do I do with the knot in the window?"
	hintsseen = 0
	myhints = [
		'If you had a lever, maybe you could use it to raise the window.'
		'You don\'t have a lever, but maybe you could put something else in the knot.'
		'Like an uninflated balloon.'
		'Attached to a straw.'
	]
;

hint7: hintitem
	sdesc="Where's that secret button?"
	hintsseen = 0
	myhints = [
		'You\'ll know it when you see it.'
		'Just get on the desk to press it.'
	]
;

hint8: hintitem
	sdesc="What do I do with the Buffalo-On-A-Spring (pat. pending)?"
	hintsseen = 0
	myhints = [
		'Hmm, it stops at a point above the middle of the room.'
		'Perhaps you could extend its reach.'
		'By attaching something to it.'
		'Or its horns.'
		'Something like the Hedge Helpers.'
	]
;

hint9: hintitem
	sdesc="How do I get the window open?"
	hintsseen = 0
	myhints = [
		'That\'s the big trick, isn\'t it?'
		'You\'ll need to use a combination of objects found in the room.'
		'You\'ll need the bellows.'
		'And the Super-Bendy Balloon-Animal Balloon.'
		'And the Rainbow Wacky Straw.'
		'And the Hedge Helpers.'
		'And the Buffalo-On-A-Spring.'
		'And of course the knot in the window.'
	]
;

hint10: hintitem
	sdesc="How do I get across the road?"
	hintsseen = 0
	myhints = [
		'That fox is fast.'
		'But he can\'t stop a \(raging monster truck\).'
	]
;

hint11: hintitem
	sdesc="How do I start up the monster truck?"
	hintsseen = 0
	myhints = [
		'Just like you would start up any car.'
		'Turn the key.'
		'Put it in gear.'
		'Push the pedal and watch out!'
	]
;

hint12: hintitem
	sdesc="How can I shut up Julia Childs?"
	hintsseen = 0
	myhints = [
		'Try turning off the television.'
		'No?'
		'Maybe you could call the tv station and ask them to change the program.'
		'Oh yeah, no phone.'
		'And you\'re a chicken, anyway.'
		'Looks like you\'ll have to suffer through her program.  Get over it.'
	]
;

hint13: hintitem
	sdesc="How do I get Santa's skeleton out of the chimney?"
	hintsseen = 0
	myhints = [
		'Try using the Hedge Helpers (pat. pending).'
		'Hedge Helpers (pat. pending) didn\'t help?'
		'I\'m not surprised.'
		'There is no skeleton in the chimney!'
	]
;

hint14: hintitem
	sdesc="How do I raise Uncle Foggy from the dead?"
	hintsseen = 0
	myhints = [
		'Have you found Uncle Foggy\'s Zombie-O-Rama (pat. pending)?'
		'You\'ll find it hidden beneath the hidden trap door.'
		'You know, the one beneath the carpet.'
		'Oh, waitaminute.'
		'There is no trap door.'
		'Sorry, wrong game!'
	]
;

/*
hint?: hintitem
	sdesc = ""
	hintsseen = 0
	myhints = [
	]
;
*/
                                                                                            R                                foggy.t   TEXTR*ch       TEXTR*ch                 ac                                                                                                                                       * t      -replace userinit: function   6  Mreplace version: object  z  replace global: object   G  G-outside:thing;  G  G
outside: room  O  Ooutsidewindow: fixeditem   R  Rhouse: fixeditem   T  T vane: fixeditem  U   Ufrontdoor: fixeditem   V  Vknocker: fixeditem   X  X coupe: vehicle   [$  [2limo:  vehicle   ^b  ^ptruck: vehicle   i  ikey: fixeditem   l  l&stick: fixeditem   n  npedal: fixeditem   t  thorn: fixeditem  vP  vbplayVerb: deepverb   v  v-lab:thing   v  v	lab: room  x  xbench: chairitem   z'  z7magag: fixeditem   |'  |:toggle2: fixeditem	    diningroom: room   [  ldebris: fixeditem  (  :diagram: fixeditem     cars: fixeditem    gate: fixeditem    hedges: fixeditem    fakelab: intangible    fox: intangible    
-foyer:thing;    foyer: room    photos: fixeditem    wallpaper: fixeditem   x  studydoor: fixeditem     rooster: fixeditem   O  ]-study: thing;   b  mstudy: room    studydoor2: fixeditem  s  studyfloor: chairitem    desk: chairitem  J  \drawers: fixeditem     
tv: fixeditem  C  Wdispenser: fixeditem   /  <
balloon: item  ɀ  ɔdeskchair: chairitem     gag: fixeditem   8  Jtoggle: fixeditem	   g  ybuffalo: chairitem     horns: fixeditem     button: buttonitem     windowsill: chairitem    window: fixeditem    knot: fixeditem, container     fireplace: fixeditem  y pokers: fixeditem r 
bellows: item A M
helper: item  { box: fixeditem, openable  K [parts: fixeditem  h vbar: chairitem   }  straw: item 0 0shelves: chairitem  7 7books: fixeditem  9 9loveseat: chairitem <J <Zcouch: chairitem  = =vocabulary: thing = =-actors:thing;  = >
executor: Actor A
 Afoggy: fixeditem  B Bred: Actor  E Eorp: Actor  H Haunt: Actor K K!barnevelders: Actor, floatingItem N\ Ni
sister: Actor R Rjulia: fixeditem  T T!cook: Actor U Vsaucepan: fixeditem V Vspoon: fixeditem  W7 WF-objects:thing; WK Wl!replace scoreStatus: function( )  W Wreplace terminate: function X Xclass intangible: fixeditem Y Y	modify Me Z] Zi
modify thing  ] ]"
modify Actor  a amodify room c ctowardPrep: Prep  cQ ccmodify basicStrObj  c c
-verbs:thing; c dxyzzyverb: sysverb  eE eWaboutVerb: sysverb  k  kregsterVerb: deepverb k lsmellVerb: deepverb l mlistenVerb: deepverb  m nknockVerb: deepverb n? nSsquawkVerb: deepverb  n oflapVerb: deepverb  o ogoBehindVerb: deepverb  o pgoThruVerb: deepverb  pj pgoUnderVerb: deepverb p pkickVerb: deepverb  q/ qApeckVerb: deepverb  qw qdriveVerb: deepverb q qstealVerb: deepverb r r$squeezeVerb: deepverb rc rxinflateVerb: deepverb r rdeflateVerb: deepverb s s(pressVerb: deepverb sa suextendVerb: deepverb  s smodify sayVerb  s ssetupVerb: deepverb w wendgameVerb: deepverb yd yxchickenVerb: sysverb  { {hypnotizeVerb: sysverb    H 	Geneva   @@      
  < '< '%  3  3      R*ch     H H    (FG(    H H    (    d       '              h                                   Monaco                                                                                                                                                                                                                                                          	   	Helvetica                                                                                                                                                                                                                                                      Confidential                                                                                                                                                                                                                                                                                 H                                                                                                               R r&
    R MPSR  BBST   *          .       z r{                        

