mainOutputStream: OutputStream
| [Previous] [Main] [Next] |
function objDesc(obj)
|
{
|
obj.desc;
|
}
|
class SpecialThing : Thing
|
specialMessage = nil
|
showSpecialMessage
|
{
|
if(!mainOutputStream.watchForOutput({: specialMessage }))
|
"There's nothing special about <<theName>>.<.p> ";
|
}
|
;
|
|
specialBall: SpecialThing 'ball' 'ball'
|
specialMessage = "It's a special ball.<.p>"
|
;
|
|
specialStick: SpecialThing 'stick' 'stick'
|
;
|
|
class SpecialThing : Thing
|
specialMessage = nil
|
showSpecialMessage
|
{
|
local val;
|
local hasDisplayed = mainOutputStream.watchForOutput( {: val = specialMessage } );
|
if(!hasDisplayed)
|
switch(dataType(val))
|
{
|
case TypeSString:
|
case TypeInt: "<<val>><.p>"; break;
|
case TypeTrue: "True<.p>"; break;
|
default: "Nothing to report. ";
|
|
}
|
}
|
;
|
|
specialBall: SpecialThing 'ball' 'ball'
|
specialMessage = "It's a special ball.<.p>"
|
;
|
|
specialStick: SpecialThing 'stick' 'stick'
|
specialMessage = 'It\'s a stick. '
|
;
|
|
specialNumber: SpecialThing 'number' 'number'
|
specialMessage = 532
|
;
|
|
DefineIAction(Bar)
|
execAction()
|
{
|
specialBall.showSpecialMessage;
|
specialStick.showSpecialMessage;
|
specialNumber.showSpecialMessage;
|
}
|
;
|
|
VerbRule(Bar)
|
'bar'
|
:BarAction
|
;
|
specialBall: SpecialThing 'ball' 'ball'
|
specialMessage
|
{
|
if(fooVal < 2)
|
"It's an ordinary ball. ";
|
else if(fooVal == 2)
|
"It's a special ball.<.p>";
|
else if(fooVal > 10)
|
"It's a very special ball. ";
|
return 'It\'s a moderately special ball. ';
|
}
|
fooVal = 4
|
;
|