|
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
|
| ;
|