Constant Story "Peanuts"; Constant Headline "^A small exercise to see how properties^ can replace attributes.^ In the public domain 12/19/2003^ from Al the Game Designer^^^"; Release 2; Serial "000001"; CONSTANT MANUAL_PRONOUNS; CONSTANT DEBUG; Include "Parser"; Include "VerbLib"; [Initialise; Banner(); location = PlainRoom; move WPitch to PlainRoom; move Shaker to PlainRoom; move PeaJar to PlainRoom; move Dtable to PlainRoom; lookmode =2; print"^You are in a plain non-descript room wth a table, a jar of unsalted peanuts, a pitcher with an infinite supply of water, and a salt shaker with an infinite supply of salt.^"; return 2;]; Class Room has light ; Room PlainRoom "Plain Room" with description "You are in a plain non descript room.", cant_go "You are stuck here till you quit the game.", has light ; Object DTable "Dining Table" with name 'dining' 'table' , describe [; "There is a table here.";], description "A very large and well built table made for dining.", has static supporter ; Object Shaker "Salt Shaker" with name 'shaker', description "A magical salt shaker.", describe [; "There is a salt shaker here. (on the table)";], has container open ; Object TableSalt "Table Salt" Shaker with name 'salt' 'seasoning' 'condiment', article 'some', description "a bunch of table salt.", before [; pour: if (second==0) "What do you want to pour the salt on?"; if (second ~=Peanuts) "What! and waste good salt?"; if (Peanuts.salted == true) "You've already over-salted the damn things as it is!"; if (second == Peanuts && Peanuts.salted ~=true) {Peanuts.salted = true; "You have now salted the peanuts.";};], has edible static ; Object WPitch "Pitcher" with name 'pitcher', description "Just a pitcher filled with an infinite amount of water.", describe [; "This is a pitcher of water here. (on the table)";], before [; receive: "Nothing goes in the pitcher except water.";] has container open ; Object Water "Water" WPitch with name 'water', article 'some', description " Water for washing the peanuts", before [; drink: "That water is for washing the peanuts only!"; pour: if (second ==0) "What do you want to puor the water on?"; if (second ~=Peanuts) "What? and waste some good washing water on that?"; if (Peanuts.salted ==false) "The peanuts are already washed!"; if (Peanuts.salted == true) {Peanuts.salted = false; "You pour water over the salted peanuts they have now become plain again.";};], has edible static ; Object PeaJar "Peanut Jar" with name 'jar', describe [; "There is a jar of peanuts here. (on the table)";], has container transparent openable ; Object Peanuts "Peanuts" PeaJar with name 'peanuts' 'nuts', article 'some', description [; if (self.salted == false) "A bunch of unsalted peanuts."; if (self.salted == true) "A bunch of salted peanuts.";], before [; eat,taste: if (self.salted == false) "You pop a few of the peanuts into your mouth.^ UGH!! You spit them out. Way way too plain for your delicate palate."; if (self.salted == true) "You pop a few of the peanuts into your mouth.^ YUM YUM!! They've been salted to just the right degree."; salt: if (self.salted == true) "You've already over-salted the damn things as it is!"; if (self.salted == false) if (PeaJar hasnt open) "How the hell can you salt nuts when the jar aint open?"; if (Peanuts notin player) "You haven't got the nuts."; self.salted = true; "You pour salt over the plain peanuts they have now become salted."; pour: if (self in DTable) "The jar is empty!"; if (second == DTable && PeaJar has open) {move self to DTable; "You pour the plain nuts on the table.";}; if (second == WPitch or Shaker) "Don't be reedickyoulouse!"; if (second == DTable && PeaJar hasnt open) "The jar ain't open!"; if (second == PeaJar && PeaJar has open) {move Peanuts to peajar; "You re-pour the peanuts back into the jar.";}; wash: if (self.salted == false) "They've already been washed!"; if (PeaJar hasnt open) "How the hell can you wash the nuts when the jar aint open?"; if (self.salted ==true) {self.salted = false; "You wash the salt off the peanuts.";};], salted false, has edible pluralname ; Include "Grammar"; [WashSub; "You can't wash that!";]; [PourSub; "You can't pour that!";]; [SaltSub; "You can't salt that.";]; verb 'salt' * noun -> Salt * noun 'with' noun -> Salt; verb 'pour' * noun -> Pour * noun 'over' noun -> Pour * noun 'on' noun -> Pour * noun 'in' noun -> Pour; verb 'wash' 'water' * noun -> Wash * noun 'with' noun -> Wash;