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; 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 and a sink in here.", cant_go "You are stuck here for the duration of the game.", has light ; Object -> Sink "Sink" with name 'sink', description "The sink is for washing your paddies once you have answered the call of Ma Nature!", before [; stand,sit: "You really don't want to waste your time doing that foolish stunt!";], has supporter enterable static ; 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 [; enter,stand,sit: "You are a real nut case that you are !"; piss: if (self has pissed) "The urinal isn't big enough for you to do that twice in a row. Better flush it."; if (self hasnt pissed && player notin Toilet) {give self pissed; "You take an unnaturally long piss in the urinal.";}; if (self hasnt pissed && Player in Toilet) "You can't do that while sitting on the toilet!"; 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 ; 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 [; Piss: if (player notin toilet && noun == toilet || noun == 0) "YOu have PEESSED ALL OVER DE FLOWH"; give self pissed; "You take an unnaturally long piss in the toilet."; shit: if (player notin Toilet && noun == toilet) "You were supposed to sit on the Toilet first!^ You've shit all over the bathroom floor!"; if (player in Toilet && noun ==0 || noun == 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.";}; stand: "You CAN'T STAND 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 ; [FlushSub; "How the hell can you flush a sink?";]; [PissSub; if (player notin Toilet && noun == Sink) "You're a bigger pig than Rosie O'Donnell!"; if (noun == 0) "You were supposed to use the Toilet or the Urinal first!^ You've pissed all over the bathrooom floor!";]; [ShitSub; if (noun ==0 && player notin Toilet) "You've shit all over the bathroom floor!"; if ( player notin Toilet && noun == Urinal || noun == Sink) "You're a bigger pig than Rosie O'Donnell!"; if (player in Toilet && noun == Urinal || noun == Sink) "It's impossible to do that while sitting on the toilet.";]; [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 * 'in' noun -> Piss; verb "shit" "crap" "defecate" * -> Shit * 'in' noun -> Shit; verb "flush" * noun -> Flush;