Smell restrictions (TADS 3 example)
From IFWiki
#charset "us-ascii" #include <adv3.h> #include <en_us.h> versionInfo: GameID name = 'Smell restrictions (TADS 3 example)' byline = 'by David Welbourn' version = '1.0' ; street: Room 'Street' "You are in a street. The sewer is below you. " down = sewer ; + flower: Thing 'flower' 'flower' "It's just a nice flower. You don't know what type. " smellDesc = "It smells wonderful. " ; + spacesuit: Wearable 'spacesuit/suit' 'spacesuit' "Spacesuits are wonderful things, but they make EVERYONE look fat. " smellDesc = "You smell nothing unusual about the spacesuit. " beforeAction() { if (gActionIs(Smell) || gActionIs(SmellImplicit)) { if (!self.isWornBy(gActor)) return; if (gDobj == gActor || gDobj == self) return; "You can't smell anything while wearing the spacesuit."; exitAction; } } ; sewer: Room 'Sewer' "You are in a sewer. The street is above you. " up = street ; + sewage: Immovable 'sewage' 'sewage' "Horrible smelly sewage is everywhere in the sewer. " isMassNoun = true /* want "some sewage" instead of "a sewage" */ isListed = true /* otherwise it isn't visible in the room */ ; ++ SimpleOdor desc = "It reeks. " beforeAction() { if (gActionIs(Smell)) { if (spacesuit.isWornBy(gActor)) return; if (gDobj == sewage) return; "The disgusting reek of the sewage overwhelms your nose. You can't smell anything else. "; exitAction; } } ; me: Actor location = street /* my initial location is the street */ ; /* The rest is the code is mostly the same as in the standard sample T3 game with comments removed. */ main(args) { mainCommon(args, nil); } mainRestore(args, restoreFile) { mainCommon(args, restoreFile); } mainCommon(args, restoreFile) { "<title><<versionInfo.name>></title>"; if (restoreFile == nil) { gPlayerChar = me; } else { "Restoring saved game...\n"; local succ = RestoreAction.startupRestore(restoreFile); "\b"; if (!succ) return; } runGame(restoreFile == nil); "<.p>Thanks for playing!\b"; }