Constant Story "LISTLESS";
Constant Headline "^An Useless Utility for Programmers^\
by Robert M. Dickau. Type HELP to see the instructions.^";
Global list_style = 0;
Include "Parser";
Include "VerbLib";
Object Cell "Cell 22"
with description "This is Cell 22, your home for the last several years.",
cant_go "Oh, that would take too much effort.",
has light;
!
! The objects
!
Object hopechest "hope chest" Cell
with name "box" "toychest" "hopechest" "hope" "chest",
initial "Your hope chest is here.",
before [;
Examine, Search:
print "A sturdy wooden box in which you keep all your worldly belongings. \
Inside it ";
writelistfrom(child(self), list_style); ! the important part
".";
Take: "It's perfect just where it is."; ],
has open container;
Object jar "glass jar" hopechest
with name "glass" "jar",
has transparent openable container;
Object cricket "cricket" jar
with name "cricket" "bug",
description "It's been dead a long time, I fear.",
after [; Eat: "Not bad, for a bug."; ],
has edible;
Object ghost "ghost" hopechest
with name "ghost",
description "The Inform game you never finished, come to haunt you.",
has concealed;
Object book "The Joy of Lurking" hopechest
with name "joy" "of" "lurking" "book",
short_name [;
style underline; print "The Joy of Lurking"; style roman; ! cute trick
rtrue;
],
before [;
Examine: "It's been a long time since you've read anything, and it \
seems you don't remember how."; ],
has proper;
Object manual "~The Inform Designer's Manual~" hopechest
with name "inform" "designer^s" "manual",
description "The document that put you here, all those years ago.",
has proper;
Object rock "chunk of plutonium" hopechest
with name "rock" "chunk" "of" "plutonium",
description "A heavy chunk of plutonium, with which you one day hope to \
conquer the world.^^At least you think it's plutonium.",
has light;
Object rod "black rod" hopechest
with name "black" "rod" "star",
description "A thin black rod with a little star on top.",
before [;
Wave: "You imagine you see a trail of sparks follow the star as you \
wave the rod around."; ];
[ Initialise;
location = Cell; list_style = ISARE_BIT + TERSE_BIT + ENGLISH_BIT;
print "^^^^^All this being cooped up is making you...^^";
];
Include "Grammar";
Class style_class
with name "bit", number 0,
before [;
Set:
if (list_style & self.number == 0)
{list_style = list_style + self.number;
print_ret (The) noun, " is now set.";}
else print_ret (The) noun, " is already set.";
UnSet:
if (list_style & self.number ~= 0)
{list_style = list_style - self.number;
print_ret (The) noun, " is now unset.";}
else print_ret (The) noun, " is already unset."; ];
[ StyleType i;
if (scope_stage==1) rfalse;
if (scope_stage==2) { objectloop(i in style_holder) PlaceInScope(i); rtrue; }
"That's not a bit I recognize.";
];
Object style_holder "Style holder";
Nearby s1 "newline_bit" class style_class, with name "newline", number newline_bit;
Nearby s2 "indent_bit" class style_class, with name "indent", number indent_bit;
Nearby s3 "fullinv_bit" class style_class, with name "fullinv", number fullinv_bit;
Nearby s4 "english_bit" class style_class, with name "english", number english_bit;
Nearby s5 "recurse_bit" class style_class, with name "recurse", number recurse_bit;
Nearby s6 "always_bit" class style_class, with name "always", number always_bit;
Nearby s7 "terse_bit" class style_class, with name "terse", number terse_bit;
Nearby s8 "partinv_bit" class style_class, with name "partinv", number partinv_bit;
Nearby s9 "defart_bit" class style_class, with name "defart", number defart_bit;
Nearby s11 "isare_bit" class style_class, with name "isare", number isare_bit;
Nearby s12 "conceal_bit" class style_class, with name "conceal", number conceal_bit;
Nearby s13 "noarticle_bit" class style_class, with name "noarticle", number noarticle_bit;
Extend "set" first * scope=StyleType -> Set;
[ UnSetSub; "That's not something you can unset."; ];
Verb "unset" * scope=StyleType -> UnSet;
[ ListSub i;
objectloop(i in style_holder) {
print (The) i, " is ";
if (list_style & i.number == 0) print "unset.^"; else print "set.^"; } ];
Verb "list" "style" * -> List;
[ HelpSub; Banner();
print "^ This demonstration shows the various effects that can be achieved \
by setting different style bits inside the WriteListFrom function. Type \
EXAMINE CHEST to see the type of list the current settings produce (the words \
~Inside it~ and the final period are not provided by WriteListFrom).^^ ";
print "A bit can be set by typing, for example, SET NEWLINE to set the newline_bit; \
and a bit can be unset by typing UNSET NEWLINE. Typing LIST \
lists the available bits and whether each is set or unset.^^ ";
print "Notice that many of the effects will be unpleasant.^"; ];