! ----------------------------------------------------------------------------
! PluralObj - an Inform library to allow plural nouns. For example, a pair of
! gloves, some adverts, or a pile of magazines. Give an object the
! attribute 'pluralobj' and the correct messages will appear.
!
! #include it just before VerbLib.
! (c) Andrew Clover, 1995, but freely usable. Release 2.
! Compatible with Inform 5.5, library 5/12
! ----------------------------------------------------------------------------
! NB. This library provides LibraryMessages in order to change the library
! responses to plural-aware ones. If you want to provide your own library
! messages, call the LibraryMessages object LibraryMessages2.
! This library gives you some commands to use instead of just printing 'it' or
! such like. They are itthey, itthem, doesntdont, isntarent, thatthose,
! thisthese (lower case initials); ittheyc, itstheyrec, thatthosec,
! thisthesec, thatstheyre, thattheyc (upper case). Also verbsuf, which just
! prints 's' for singular-form verbs. The commands also print the correct
! pronoun for animates. One parameter is necessary, an object number to check
! for pluralobj. With anything else, your printing commands will have to check
! for the pluralobj flag themselves.
attribute pluralobj;
object LibraryMessages "lm"
with before [ i;
#IFDEF LibraryMessages2;
i=runroutines(LibraryMessages2,before);
if (i~=0)
return i;
#ENDIF;
i=action; ! pointless statements to stop a compiler warning
i=action; ! 'unused variable' appearing if lm2 object absent
Take:
if (lm_n==5)
{
print "You already have ";
thatthose(noun);
".";
}
if (lm_n==6)
{
thatthosec(noun);
print " seem";
verbsuf(noun);
" to belong to ";
defart(lm_o);
".";
}
if (lm_n==7)
{
thatthosec(noun);
print " seem";
verbsuf(noun);
" to be a part of ";
defart(lm_o);
".";
}
if (lm_n==8)
{
thatthosec(noun);
print " ";
isntarent(noun);
" available.";
}
if (lm_n==10)
{
thatstheyrec(noun);
" hardly portable.";
}
if (lm_n==11)
{
thatstheyrec(noun);
" fixed in place.";
}
Drop:
if (lm_n==2)
{
print "You haven't got ";
thatthose(noun);
".";
}
Remove:
if (lm_n==1)
{
ittheyc(second);
print " ";
if (second has pluralobj)
print " are";
else
print " is";
" unfortunately closed.";
}
if (lm_n==2)
{
print "But ";
itthey(noun);
print " ";
isntarent(noun);
" there now.";
}
PutOn:
if (lm_n==5)
{
print "(first taking ";
itthem(noun);
" off)^";
}
Insert:
if (lm_n==1)
{
print "You need to be holding ";
itthem(noun);
print " before you can put ";
itthem(noun);
" into something else.";
}
if (lm_n==2)
{
thattheyc(second);
" can't contain things.";
}
if (lm_n==3)
{
print "Alas, ";
itthey(second);
if (second has pluralobj)
print " are";
else
print " is";
" closed.";
}
if (lm_n==4)
{
print "You'll need to take ";
itthem(second);
" off first.";
}
if (lm_n==6)
{
print "(first taking ";
itthem(noun);
" off)^";
}
Transfer:
if (lm_n==1)
{
thatthose(noun);
print " ";
isntarent(noun);
" in your possession.";
}
if (lm_n==2)
{
print "First pick ";
itthem(noun);
" up.";
}
Enter:
if (lm_n==2)
{
thatstheyrec(noun);
" not something you can enter.";
}
Search:
if (lm_n==5)
{
print "You can't see inside, since ";
itthey(noun);
if (noun has pluralobj)
print " are";
else
print " is";
" closed.";
}
if (lm_n==6)
{
cdefart(lm_o);
if (second has pluralobj)
print " are";
else
print " is";
" closed.";
}
Unlock:
if (lm_n==1)
{
thattheyc(noun);
print " ";
doesntdont(noun);
" seem to be something you can unlock.";
}
if (lm_n==2)
{
itstheyrec(noun);
" unlocked at the moment.";
}
if (lm_n==3)
{
thatthosec(second);
print " ";
doesntdont(second);
" seem to fit the lock.";
}
Lock:
if (lm_n==1)
{
thattheyc(noun);
print " ";
doesntdont(noun);
" seem to be something you can lock.";
}
if (lm_n==2)
{
itstheyrec(noun);
" locked at the moment.";
}
if (lm_n==3)
{
print "First you'll have to close ";
itthem(noun);
".";
}
if (lm_n==4)
{
thatthose(second);
print " ";
doesntdont(second);
" seem to fit the lock.";
}
SwitchOn:
if (lm_n==1)
{
thatstheyrec(noun);
" not something you can switch.";
}
if (lm_n==2)
{
thatstheyrec(noun);
" already on.";
}
SwitchOff:
if (lm_n==1)
{
thatstheyrec(noun);
" not something you can switch.";
}
if (lm_n==2)
{
thatstheyrec(noun);
" already off.";
}
Open:
if (lm_n==1)
{
thatstheyrec(noun);
" not something you can open.";
}
if (lm_n==2)
{
ittheyc(noun);
print " seem";
verbsuf(noun);
" to be locked.";
}
if (lm_n==3)
{
itstheyrec(noun);
" already open.";
}
Close:
if (lm_n==1)
{
thatstheyrec(noun);
" not something you can close.";
}
if (lm_n==2)
{
itstheyrec(noun);
" already closed.";
}
Disrobe:
if (lm_n==1)
{
print "You're not wearing ";
thatthose(noun);
".";
}
Wear:
if (lm_n==1)
{
print "You can't wear ";
thatthose(noun);
"!";
}
if (lm_n==2)
{
print "You're not holding ";
itthem(noun);
".";
}
if (lm_n==3)
{
print "You're already wearing ";
thatthose(noun);
"!";
}
Eat:
if (lm_n==1);
{
thatstheyrec(noun);
" plainly inedible.";
}
Cut:
print "Cutting ";
thatthose(noun);
" would achieve little.";
Blow:
print "You can't usefully blow ";
thatthose(noun);
".";
Set:
print "No, you can't set ";
thatthose(noun);
".";
SetTo:
print "No, you can't set ";
thatthose(noun);
" to anything.";
Wave:
if (lm_n==1)
{
print "But you aren't holding ";
thatthose(noun);
".";
}
Push, Pull, Turn:
if (lm_n==1)
{
itstheyrec(noun);
" fixed in place.";
}
];
[ itthey i;
if (i has pluralobj)
print "they";
else
{
if (i has animate)
{
if (i has female)
print "she";
else
print "he";
}
else
print "it";
}
];
[ thattheyc i;
if (i has pluralobj)
print "They";
else
{
if (i has animate)
{
if (i has female)
print "She";
else
print "He";
}
else
print "That";
}
];
[ itthem i;
if (i has pluralobj)
print "them";
else
{
if (i has animate)
{
if (i has female)
print "her";
else
print "him";
}
else
print "it";
}
];
[ ittheyc i;
if (i has pluralobj)
print "They";
else
{
if (i has animate)
{
if (i has female)
print "She";
else
print "He";
}
else
print "It";
}
];
[ itstheyrec i;
if (i has pluralobj)
print "They're";
else
{
if (i has animate)
{
if (i has female)
print "She's";
else
print "He's";
}
else
print "It's";
}
];
[ thatstheyrec i;
if (i has pluralobj)
print "They're";
else
{
if (i has animate)
{
if (i has female)
print "She's";
else
print "He's";
}
else
print "That's";
}
];
[ doesntdont i;
if (i hasnt pluralobj)
print "doesn't";
else
print "don't";
];
[ isntarent i;
if (i hasnt pluralobj)
print "isn't";
else
print "aren't";
];
[ thatthose i;
if (i hasnt pluralobj)
print "that";
else
print "those";
];
[ thatthosec i;
if (i hasnt pluralobj)
print "That";
else
print "Those";
];
[ thisthese i;
if (i hasnt pluralobj)
print "this";
else
print "these";
];
[ thisthesec i;
if (i hasnt pluralobj)
print "This";
else
print "These";
];