Constant Story "The Bathroom"; Constant Headline "^An Exercise in Enterables and Supporters ^All Rights Given Away ^In the public domain for the Inform community^^"; Constant Debug; Replace SmellSub; Include "Parser"; Include "Verblib"; Include ">Toilet.h"; attribute flushed; attribute crapped; attribute pissed; [Initialise; Banner(); location = BathRm; lookmode = 2; print "^You are in a very immaculate bathroom. There is a sink, a urinal, and a toilet in here. The place looks like its been cleaned recently and the stench of previous users' body wastes is thankfully absent.^^"; return 2;]; Object BathRm "Bathroom" with description "Depending upon your sex you have reached the proper bathroom.^ There is a toilet a sink a bathtub and a urinal in here.", cant_go "You are stuck here for the duration of the game.", has light ; Object -> Toilet "Toilet" with name 'toilet' 'john' 'shitter' 'crapper' 'commode' 'loo', description "A standard handy dandy toilet. You are very familiar with its operation.", before [; smell: if (self has crapped or pissed) "GAAAACCCCK You nearly heave your guts from the smell!"; if (self hasnt crapped or pissed) "",(The)noun, " smells like April freshness since it was last flushed."; Piss: if (player notin toilet && noun == toilet || noun == 0) "You have pissed all over the floor!"; give self pissed; "You take an unnaturally long piss in the toilet."; pisson: if (player in BathTub) "You can't do that while in the bathtub."; if (player notin BathTub) "You are a bigger pig than Rosie O'Donnell!"; shiton: if (player in BathTub) "You can't do that while in the bathtub."; if (player in Toilet) "You need to rephrase that to SHIT IN TOILET"; if (player notin Toilet) "You were supposed to sit on the Toilet first!^ You've shit all over the bathroom floor!"; shit: if (player notin Toilet && noun == toilet) "You need to sit on the toilet before you do that."; if (player notin Toilet && noun == 0) "You've just shit all over the floor!"; if (player in Toilet) {give self crapped; "You take a real good shit in the toilet.";}; sit: if (player in Toilet) "But you're already sitting on it!"; else {move player to Toilet; "You sit your sorry humungous ass down on the toilet.";}; flush: if (self hasnt crapped && self hasnt pissed) "There's nothing in the toilet to flush but water^ and you don't want to waste it!"; if (self has crapped || self has pissed) {give self flushed; give self ~crapped; give self ~pissed; "You flush the toilet and all's right with the world once again.";};], has enterable supporter static ; Object -> Sink "Sink" with name 'sink', description "The sink is for washing your paddies once you have answered the call of Ma Nature!", before [; shit,shiton: if (player notin toilet) "You're a bigger pig than Rosie O'Donnell!"; if( player in Toilet) "You can't do that while sitting on the toilet!"; piss,pisson: if (player notin toilet) "You're a bigger pig than Rosie O'Donnell!"; if (player in Toilet) "You can't do that while sitting on the toilet!";], has supporter enterable static ; Object -> Bathtub "BathTub" with name 'bath' 'tub' 'bathtub', description "A very fancy bath tub which must have cost way over $1.", before [; sit: if (player notin self) move player to self; "You sit in the bathtub."; shit,shiton: if (player notin toilet || player in self) "You're a bigger pig than Rosie O'Donnell!"; if( player in Toilet) "You can't do that while sitting on the toilet!"; piss,pisson: if (player notin toilet || player in self) "You're a bigger pig than Rosie O'Donnell!"; if (player in Toilet) "You can't do that while sitting on the toilet!";], has static enterable supporter ; Object -> Urinal "Urinal" with name 'urinal', with article "a", description "This device is for members of the male sex who don't want to waste time pissing in the toilet.", before [; smell: if (self has crapped or pissed) "GAAAACCCCK You nearly heave your guts from the smell!"; if (self hasnt crapped or pissed) "",(The)noun, " smells like April freshness since it was last flushed."; enter: "You're a real nut case that you are !"; shit,shiton: if (player in toilet) "You can't do that while sitting on the toilet!"; if (player notin Toilet) "You're a bigger pig than Rosie O'Donnell!"; pisson: if (player notin Toilet) "You're supposed to PISS IN the urinal NOT ON it!"; if (player in Toilet) "You can't do that while sitting on the toilet!"; piss: if (Player in Toilet) "You can't do that while sitting on the toilet!"; if (self has pissed) "Better flush the urinal before you use it again!"; if (self hasnt pissed && player notin Toilet) {give self pissed; "You take an unnaturally long piss in the urinal.";}; flush: if (self hasnt pissed) "The urinal has nothing but water in it."; if (self has pissed) {give self ~pissed; "You flush the urinal and all is right with the world once again.";};], has static enterable supporter ; [FlushSub; "How the hell can you flush a sink?";]; [PissSub; if (player notin Toilet && noun == Sink or BathTub) "You're a bigger pig than Rosie O'Donnell!"; if (player notin Toilet && noun == 0) "Where do you want to " ,(address)verb_word, "?";]; [PissOnsub; "You can't " ,(address)verb_word, " on that!";]; [ShitSub; if (player notin Toilet && noun ==0 ) "Where do you want to ",(address)verb_word,"?"; if ( player notin Toilet && noun == Urinal or Sink or Bathtub) "You're a bigger pig than Rosie O'Donnell!"; if (player in Toilet && noun == Urinal or Sink or BathTub) "It's impossible to do that while sitting on the toilet.";]; [ShitOnSub; "You can't " ,(address)verb_word, " on that!";]; [SmellSub; "" ,(The)noun," has no smell.";]; [StandSub; "You can't stand on that!";]; [SitSub; "You can't sit on that!";]; [LieSub; "You can't lie on that!";]; verb "piss" "pee" "urinate" * -> Piss * 'on' noun -> PissOn * 'in' noun -> Piss; verb "shit" "poop" "crap" "defecate" * -> Shit * 'on' noun -> ShitOn * 'in' noun -> Shit; verb "flush" * noun -> Flush;