Constant Story "The Visitor";
Constant Headline "^A Chat^
Copyright (c) 2000 by Peter Polkinghorne.^";
Include "Parser";
! Different way of finishing - not so much dead or won
[DeathMessage;
print "Game Over";
];
! A bit of library intervention - to render score
Object LibraryMessages
with before
[; Score: if (deadflag) switch (Gladys.friend)
{ -1: "You are Gladys's enemy.";
0: "You are Gladys's acquaintance.";
1: "You are Gladys's friend.";
default: "Gladys is in a muddle!";
}
else "That is not important, but friendship is.";
];
! We have some afterword - does NOT work as deadflag 3 - bother!
Constant AMUSING_PROVIDED;
[amusing;
"Thanks for playing.^
Gladys has multiple responses for most topics,
and some notion of what has been said.^
The idea for the portrait came from the many elderly
ladies I met doing voluntary work, and some of my
Great Aunts. I hope I have done them justice.^^
Peter Polkinghorne.";
];
Include "Verblib";
! Simple room
Object Room "Gladys's Room"
with description
"A dull institutional room, with a bed with bedside
cupboard and chair. A couple of photos decorate the
cupboard. A window is on the north wall.^
There is an open door to the south.",
cant_go "~Where do you think you are going?~ asks Gladys.",
s_to
[;
deadflag = 3;
switch (Gladys.friend) {
-1: "As you leave, Gladys mutters to herself ~Good riddance!.~";
0: "As you leave, Gladys says ~Bye dear.~";
1: "As you leave, Gladys says ~Bye dear, come again soon.~";
default: "As you leave, Gladys says ~I just don't know?~";
}
]
has light;
! Bit of scenery - all described by Gladys
Object -> Bed "Gladys's Bed"
with name "Bed",
description
"~Oh that~ says Gladys, ~its not too bad for sleeping in.~",
has scenery;
Object -> Chair "Gladys's Chair"
with name "Chair",
description
"~It may be plain~ says Gladys, ~but its comfortable.~",
has scenery;
Object -> Cupboard "Gladys's Cupboard"
with name "Cupboard",
description
"~Thats got all I have left, in it.~ says Gladys.",
has scenery;
Object -> Photos "Gladys's Photos"
with name "Photos" "Snaps" "Photographs" "Photo" "Photograph" "Snap",
description
"~Thats me and my family~ says Gladys",
! get to know the family
before
[; take: gladys.&known-->6 = 1;
gladys.&known-->7 = 1;
gladys.&known-->8 = 1;
gladys.&known-->9 = 1;
gladys.&known-->10 = 1;
"You pick up the two photos. Gladys points to the
first, a faded black and white wedding photo,
~Thats me and Harold on our wedding, nearly 50 years ago.~,
the second is a family group in colour, Gladys and Harold
as Grandparents, with as Gladys points out, ~Jane, our
only daughter, and Iain her husband, and our two grandchildren
Roderick and Isobel.~ You put the photos back.";
],
has scenery;
Object -> Window "Gladys's Window"
with name "Window",
description
"~Is it still raining?~ asks Gladys.",
! deal with looking through the window
before
[ ;
search: "You see the rain pouring down over grey London
suburbia. ~Going to be dark soon.~ remarks Gladys.";
],
has scenery;
Object -> SDoor "Gladys's Door"
with name "Door",
description
"~Thats the way out, dear.~ says Gladys.",
! keep that door open
before
[; open: "~Its already open, dear.~ exclaims Gladys.";
close: "~No, leave it open, please.~ asks Gladys.";
],
has scenery;
! The main actor and purpose of the exhibit
Object -> Gladys "Gladys Harding"
with name "Gladys" "Mrs" "Harding" "old" "lady" "woman",
! the bits that make up Gladys
add_to_scope Face Hands Clothes Shoes,
describe
"Gladys is sitting in the chair.",
description
"She is a small elderly lady with a nice smile.",
! some variables to represent the state of Gladys
friend, ! -1 enemy, 0 acquaintance, 1 friend
life
[;
kiss: self.friend = 1;
"Gladys responds ~Oh you going now, bye dear~^";
! get rid of unpleasant person
attack: deadflag = 3;
self.friend = -1;
"Gladys alarmed, presses a button you have not noticed.
A member of staff quickly arrives and hustles you off
the premises.
The police are told and you will never see Gladys again.";
! deal with other easy bits
wakeother: "Gladys says ~I'm not asleep!~";
! Note nothing to show or give or throw (makes life easier)
! Here simple representation of memory:
! asked - array indexed by topic of how many times asked
! known - array indexed by topic of whether player expected to know
! - this allows variation in response and topic flow
! - ask about A find out B - if ask about B out of turn respond
! differently
ask: self.friend = 1;
switch (second)
{
! topic 0
'home', 'nursing':
(self.&asked-->0)++;
switch (self.&asked-->0) {
1: self.&known-->1 = 1;
"~Its alright, but not like my old bungalow.~
says Gladys regretfully.";
2: "~You know what I miss?~ asks Gladys impishly,
~Men! We're practically all ladies here!~";
default: "~I really don't want to talk about the home
any more.~ says Gladys wearily.";
}
! topic 1
'bungalow':
(self.&asked-->1)++;
if ( self.&known-->1 )
switch (self.&asked-->1) {
1: "~We lived there for years, ever since
the war. They were happy days.~ smiles Gladys";
2: "~It was near Eastcote, the Harrow side.
Very good for the tube, but quiet.
Yes it was a good place to be.~
reminisces Gladys.";
default: "~Where do you live ...~ wonders
Gladys";
}
else
"~Eh what?~ asks Gladys";
! topic 2
'self', 'visitor', 'player':
(self.&asked-->2)++;
switch (self.&asked-->2) {
1: "~Its very kind of you to bring me back,
I really enjoyed the tea party.~
says Gladys.";
2: "~You know I glad there are young people like
you?~ smiles Gladys,
~Can't believe all you see on the telly.~";
default: "~I am the one you should be talking about,
stuck here all by myself, not
you, who can go gadding about anytime
you like!~ says Gladys crossly.";
}
! topic 3
'weather', 'rain', 'cloud':
(self.&asked-->3)++;
switch (self.&asked-->3) {
1: "Gladys responds ~Hasn't it been wet?
I think it has rained every day this week.~";
2: self.&known-->4 = 1;
"~All this damp isn't good for my joints~,
moans Gladys,
~I got the rheumatics, you see.~";
3: "Gladys answers ~Still bound to get better,
have you heard the forecast? I think
it said it would clear up.~";
default: "~Well can't talk about the weather all
day, you know, much too english!~
twinkles Gladys.";
}
! topic 4
'rheumatics', 'joints':
(self.&asked-->4)++;
if ( self.&known-->4 )
"~Thanks for asking, but they are not
too bad, really. I get some physio
for them.~ responds Gladys.";
else
"~You been asking the staff?~ asks Gladys
suspiciously.";
! topic 5
'party', 'trip', 'tea':
(self.&asked-->5)++;
switch (self.&asked-->5) {
1: "~It was wonderful to go out and have
a good natter.~ Gladys enthuses,
~I haven't seen some of my friends for over
a year.~";
2: "~And we had some nice music and a good
tea - proper with sandwiches, cake and
all that.~ says Gladys.
~Its my annual outing now, all I have
to look forward to.~";
3: "Gladys answers ~Yes, it was a nice party,
the day centre is warm and all the balloons
livened it up.~";
default: "~Oh well, a year till the next one,
I hope you will be taking me?~
Gladys enquires.";
}
! topic 6
'harold', 'husband':
(self.&asked-->6)++;
if ( self.&known-->6 )
switch (self.&asked-->6) {
1: "~Harold, I met him at the end of
the war, the second you know. He worked
at the Kodak factory in Harrow.~ says Gladys.";
2: "~He was a kind man, he loved Jane
and the grandchildren, always telling them
stories. Keen gardener too ...~ remarks
Gladys.";
3: "~He died not long after retiring,
lung cancer, he had always been a pipe
smoker, we didn't know in those days
... still he didn't suffer much.~ muses
Gladys.";
default: "~I still miss him you know.~ says
Gladys simply";
}
else
"~Sorry?~ asks Gladys";
! topic 7
'jane', 'daughter':
(self.&asked-->7)++;
if ( self.&known-->7 )
switch (self.&asked-->7) {
1: "~Jane was the apple of my eye, you
know. I suppose it was being the only child.
We did want more, but never happened.~
says Gladys.";
2: "~She was quite clever and went to
college, secretarial training. It was at
her first and only job she met Iain.~ Gladys
says.";
3: "~Well after they were married,
Iain was promoted and went back to Scotland,
where she and the children have lived ever
since.~ say Gladys with a hint of sadness.";
default: "~I still get the odd phone call
and of course birthday and christmas cards
from her and the family.~
says Gladys quietly.";
}
else
"~Who?~ asks Gladys.";
! topic 8
'iain', 'son-in-law':
(self.&asked-->8)++;
if ( self.&known-->8 )
switch (self.&asked-->8) {
1: "~He's a nice enough chap, quite
a catch for Jane, although I always found
him a bit reserved.~ says Gladys.";
2: "~He has done well in the bank,
in the head office in Edinburgh I think.~
remarks Gladys.";
default: "~I wish he'd let Jane come
here sometimes.~ says Gladys resignedly.";
}
else
"~Pardon?~ asks Gladys.";
! topic 9
'roderick', 'grandson':
(self.&asked-->9)++;
if ( self.&known-->9 )
switch (self.&asked-->9) {
1: "~He was my first grandchild,
I was so excited. Spent a whole month
in Edinburgh helping Jane. Not sure
Iain really approved ...~ sighs Gladys.";
2: "~He went to University you know,
working with computers and whatnot.
He's now working in america, doing really
well Jane says.~ says Gladys with pride.";
default: "~He's a good lad, but I wish
he'd write more often.~ says Gladys.";
}
else
"~Ummm?~ murmurs Gladys.";
! topic 10
'isobel', 'granddaughter':
(self.&asked-->10)++;
if ( self.&known-->10 )
switch (self.&asked-->10) {
1: "~I was so glad when Isobel came along,
a little sister for Rodderick. Harold wasn't
well when she was born and I didn't see so
much of her as Roderick.~ says Gladys.";
2: "~She's just done her A levels,
and is hoping to go to University. I do
hope she comes to London.~ says Gladys with
feeling.";
default: "~She's a pretty girl, so like
her mother.~ says Gladys with pride.";
}
else
"~Sorry?~ asks Gladys.";
! topic 11
'family', 'hardings', 'children':
(self.&asked-->11)++;
if ( self.&known-->7 )
! player knows basics of family
switch (self.&asked-->11) {
2: "~We never been teribly close family,
I suppose it being that Harold and I were
only children. Also our parents died youngish.~
says Gladys.";
default: "~Still they keep in touch
a bit, you know.~ says
Gladys resignedly.";
}
else
! give initial lowdown.
self.&known-->6 = 1;
self.&known-->7 = 1;
self.&known-->8 = 1;
self.&known-->9 = 1;
self.&known-->10 = 1;
"~Well there's Harold, my husband, and we had Jane,
my only daughter, and she married Iain, and they had
Roderick and Isobel, my lovely grandchildren~ remarks Gladys.";
! topic 12
'london', 'acton', 'harrow', 'eastcote':
(self.&asked-->12)++;
switch (self.&asked-->12) {
1: "Gladys replies ~I've lived in London all my
life. Not in the same place mind you.
I was born and brought up in Acton.~";
2: "~We were glad to move out from Acton,~
says Gladys,
~Eastcote was practically countryside,
much cleaner air.~";
3: "Gladys answers ~You know something,
I never been to the British Museum.
Still I did see a lot of lovely shows
in the West End.~";
default: "~Are you a Londoner? You don't
sound it, but you can't tell these days.~
smiles Gladys.";
}
}
! unknown - put player off
switch (random(5)) {
1: "~What are you going on about?~ wonders Gladys.";
2: "~Sorry what were you saying?~ asks Gladys.";
3: "Gladys does not respond at all, but blows her nose.";
4: "~Err can't really say ...~ mumbles Gladys.";
5: "Gladys ignores you and turns to look out the Window.";
}
! not too interested in Tell, Answer & Order
tell: "~Really, how interesting ...~ says Gladys, but
you can tell she is not really interested.";
answer: "~You don't say~ responds Gladys";
order: "~Leave me be!~ snaps Gladys";
],
! make gladys a bit active - longer term ask questions
each_turn
[i;
i = random(20);
switch (i) {
1: "Gladys coughs alarmingly";
2: "Gladys looks towards the door.";
3: "Gladys glances at the window.";
3: "Gladys smiles at you.";
}
],
has animate female proper
;
! Give Gladys some component parts to allow player examination
!
! First set up a class:
Class GladysBits
with
before
[ ;
take, search, smell, taste, touch: "Gladys looks at you in bewilderment.";
],
has scenery proper;
GladysBits Face "Gladys's face"
with name "face" "eyes" "glasses" "gladys^s",
description "Old and wrinkled with two bright eyes looking
attentively at you through glasses.";
GladysBits Hands "Gladys's hands"
with name "hands" "hand" "finger" "ring" "gladys^s",
description
[ ;
! now know about husband
gladys.&known-->6 = 1;
"Bony with bent fingers, you can just see a wedding
ring on the left hand.";
];
GladysBits Clothes "Gladys's clothes"
with name "clothes" "dress" "cardigan" "orange" "fawn" "gladys^s",
description "Gladys wears an orange check dress with a fawn cardigan.
Both have seen better days, but are clean and in good
repair.";
GladysBits Shoes "Gladys's shoes"
with name "shoes" "feet" "black" "shoe" "foot" "gladys^s",
description "Gladys wears a pair of black shoes in need of a polish.";
[ Initialise;
location = Room;
notify_mode = 0;
"^^^^^You have just brought Gladys back to the Nursing Home.
^^~Won't you have a chat, dear~ says Gladys as she settles down
in her chair.^^^^";
];
! add in a simple meta about and help type words
[ AboutSub; "This game is written for the Spring 2000 IF Art Show.^
It is submitted for the portrait section and is my first game.^^
The aim is to have a chat with Gladys and be her friend.^^
The idea for the portrait came from the many elderly
ladies I met doing voluntary work, and some of my
Great Aunts. I hope I have done them justice.^^
Peter Polkinghorne, North Harrow, Middlesex, England^
peter.polkinghorne@@64brunel.ac.uk";
];
[ HelpSub; "This game is basicly standard Inform.^
To chat with Gladys, type:^^
ask Gladys about TOPIC^
where TOPIC is a suitable word.^^
Gladys has multiple responses for most topics,
and some notion of what has been said.^^
In case of difficulty contact:
peter.polkinghorne@@64brunel.ac.uk";
];
Verb meta "about" "info" "credits" * -> About;
Verb meta "help" "hint" * -> Help;