!'Vindaloo' !Copyright (c) 1996 !By Adam G Crutchlow !***Translated by Karl Schaan !This is just a little game created whilst I was learning Inform. !I put it in the archives for the hell of it. Switches v5; !Constant DEBUG; Constant Story "'Vindaloo'"; Constant Headline "^Une Recette de Cuisine Interactive.^Copyright 1996 by Adam G Crutchlow.^"; Constant max_score 18; Constant max_carried 4; Global chicken_status=0; Global choppedo=0; Global choppedt=0; Include "Parser"; Include "Verblib"; Include "Adname"; ! ROOMS Object alley_1 "Ruelle" with description "Vous êtes dans une ruelle sale. Un grand tas de déchêts vous empêche de continuer vers le nord.",s_to alley_2, n_to "Vous n'arrivez pas à franchir le tas de déchets.", has light; Nearby rubbish "tas de déchêts" with description "Il y a tellement de déchêts que vous ne voyez pas comment passer.", name "dechets" "tas" "ruelle", before [; search: if (hat hasnt general) { give hat general; move hat to player; "Vous fouillez en profondeur le tas de déchêts et découvrez un chapeau que quelqu'un vient juste de mettre au rebut. Il a l'air relativement neuf."; } ], has scenery; Object alley_2 "Ruelle" with description "La ruelle s'étend au nord de votre arrière-cour, laquelle se trouve à l'ouest.", n_to alley_1, sw_to back_garden, has light; Object back_garden "Votre arrière-cour" with description "L'arrière-cour ne semble pas aussi ordonnée et rangée qu'elle devrait l'être. Vous pensez à la ranger, un jour. L'endroit est envahi de mauvaises herbes. Au bout du jardin se trouve la sortie vers la ruelle, derrière votre maison.", ne_to alley_2, s_to kitchen, has light; Nearby weeds "mauvaises herbes" with description "Votre jardin est complétement envahi par les mauvaises herbes.", name "herbes" "plantes" "jardin", !***article "some", before [; Search: if (self hasnt general) { give self general; move onion to player; score=score+1; "En écartant les mauvaises herbes, vous découvrez un oignon. Vous aviez oublié que vous l'aviez planté là."; } ], has scenery; Object bathroom "Petite Salle de Bains" with description "C'est votre petite salle de bains. Elle contient tous les objets habituels.", initial "Ah, la salle de bains. Vous feriez mieux de vous rappeler cet endroit. Il se peut que vous ayez besoin de le retrouver très rapidement après ce vindaloo.", s_to bedroom, has light; Object kitchen "Cuisine" with description "C'est la cuisine. Elle est sale comme le reste de la maison. Au nord vous pouvez voir la porte de service, qui mène dans le jardin. Dans un coin de la pièce se trouve votre cuisinière. Il y a un tiroir au-dessus de l'évier. Au centre de la pièce il y a une grande table carrée. Sur le mur, au-dessus du tiroir se trouve une étagère imposante. Près de la porte se trouve l'évier.", s_to hall, n_to back_door, has light; Nearby stove "cuisinière" with description [; if (self has on) "Votre vieille cuisinière sur laquelle vous avez fait un nombre incalculable de curries est allumée et prête à être utilisée. Vous pouvez voir une flamme sortir du brûleur."; "Ahh oui beaucoup de curries ont été préparés sur cette cuisinière; vous prévoyez d'utiliser une fois de plus votre vieille cuisinière."; ], name "cuisiniere" "cuiseur", before [; switchon: if (self has on) "La cuisinière est déjà allumée."; if (pan in self) { if (onion in pan && tomatoes in pan && chicken in pan && spices in pan) { deadflag=2; score=score+3; "Vous allumez la cuisinière et votre repas commence à cuire. Bientôt vous apprécierez votre vindaloo tant attendu ."; } "Vous n'avez pas tous les ingrédients dans votre casserole."; } give self on; move flames to stove; "Dès que vous tournez le bouton, les flammes apparaissent."; switchoff: if (self hasnt on) "La cuisinière est déjà éteinte."; else { remove flames; give self ~on; "Vous éteignez la cuisinière, et les flammes disparaissent."; } ], has scenery switchable supporter; Nearby drawer "tiroir" with description "Ce tiroir contient tout ce dont vous avez besoin dans une cuisine.", name "tiroir", before [; open: if (self hasnt open) "Le tiroir est coincé."; unlock: if (second==crowbar) { if (self hasnt open) {if (self hasnt general) { score=score+2; give self general; } give self open; "Vous parvenez à ouvrir le tiroir avec le pied-de-biche."; } "Il est déjà ouvert."; } ], has openable ~open container scenery; Nearby kitchen_table "table de la cuisine" class adnc, with description "C'est une grande table carrée, parfaite pour cuisiner.", name "table", adname 'de la cuisine', has scenery supporter; Nearby cupboard "étagère" with description "Votre étagère pour y ranger pots et casseroles.", name "etagere", has scenery container openable ~open; Nearby sink "évier" with description "C'est seulement un évier avec un robinet.", name "evier", has scenery container open; Nearby tap "robinet" with description "Un robinet pour avoir de l'eau, rien d'inhabituel.", name "robinet", before [; switchon: if (self has on) "Le robinet est déjà ouvert."; else { move water to sink; give self on; "L'eau du robinet remplit l'évier."; } switchoff: if (self hasnt on) "Le robinet est déjà fermé."; else { remove water; give self ~on; "Vous fermez le robinet, et l'eau s'écoule dans le trou.";} ], has scenery switchable; Nearby back_door "porte de service" class adnc, with description "La porte séparant la cuisine du jardin.", name "porte", adname 'de service', door_to back_garden, door_dir n_to, has scenery door openable ~open; Object closet "Armoire" with description "L'armoire contenant toutes vos habits et vos affaires.", e_to bedroom, has light; Nearby clothes "habits" with description "Votre collection entière d'habits. Il semble que vous n'avez rien jeté depuis longtemps. Il y a toute sorte d'habits intéressants.", name "habits" "vetements" "armoire" "choses", before [; search: if (self hasnt general) { give self general; move scarf to location; "Vous sortez toutes vos affaires pour chercher quelque chose d'intéressant, et vous voyez votre écharpe favorite dans un coin de l'armoire."; } ], has scenery; Object bedroom "Chambre à Coucher" with description "Vous êtes dans votre chambre. Il y a un lit et une table de chevet. Votre armoire est contre le mur, à l'ouest. Au nord se trouve la salle de bains.", w_to closet, n_to bathroom, e_to hall, has light; Nearby bed "lit" with description "C'est votre lit, mou et confortable.", name "lit", before [; search: if (self hasnt general) { give self general; move coin to player; "Vous retournez complètement le lit, sachant qu'il est facile que des choses s'y soient perdues. Ah ha qu'est-ce que c'est? Vous trouvez une vieille pièce de 10F."; } ], has container enterable open static; Nearby bedside_table "table de chevet" class adnc, with description "Votre table de chevet est un meuble bon marché venant d'un magasin du coin. Chaque fois que vous posez quelque chose dessus vous pensez qu'elle va s'effondrer, mais pour l'instant ce n'est pas encore arrivé.", name "table", adname 'de chevet', has static supporter; Object hall "Le Hall" with description "Vous êtes au centre de votre maison. La porte d'entrée se trouve au sud. Il y a d'autres pièces dans les autres directions.", w_to bedroom, n_to kitchen, s_to front_door, has light; Nearby hall_table "table du hall" class adnc, with description "C'est une table. Il y a des choses dessus.", name "table", adname 'du hall', before [; examine, search: if (self hasnt general) { give self general; move key to player; score=score+1; "Vous trouvez une clé sur la table."; } ], has static supporter; Object front_door "porte d'entrée" class adnc, with description "C'est la porte d'entrée de votre maison.", name "porte", adname 'entrée', before [; examine: if (front_door has locked) "La porte est verrouillée, donc si vous n'avez pas de clé c'est la fin du chemin pour vous."; ], door_to [; if (location==house_front) return hall; return house_front; ], door_dir [; if (location==house_front) return n_to; return s_to; ], with_key key, found_in house_front hall, has scenery door openable lockable ~locked ~open; Object garage "Garage" with description "Dans votre garage il y a de nombreux objets et des ordures qui trainent de partout, rien d'extraordinaire et de particulièrement intéressant.", name "garage", e_to house_front, has light; Object house_front "Devant la maison" with description "Vous êtes devant votre maison, qui se trouve au nord. Une route s'étend vers le sud. Votre garage est à l'ouest.", n_to front_door, s_to road, w_to garage, initial [; if (front_door has open) { give front_door ~open locked; "Une rafale de vent claque la porte d'entrée de votre maison"; } ], has light; Object shop "Epicerie Indienne" with description "C'est une petite épicerie indienne remplie d'étagères contenant des produits exotiques.", s_to more_road, before [; Take: if (noun==shelves || noun==spices) "Raj dit : Si vous avez besoin de quelque chose vous devriez l'acheter."; Drop: "Raj dit : Veuillez ne rien jeter sur mon plancher SVP."; Buy: if (coin in player) { if (noun==spices) { move spices to player; move coin to patel; score=score+2; "Raj dit : Merci, bon appétit. (il vous tend quelques épices)"; } "Vous y réfléchissez à deux fois et décidez de ne pas en acheter."; } "Vous n'avez pas d'argent."; ], has light; Nearby shelves "étagères" class adnc, with description "Les étagères sont chargées de toute sorte de produits alimentaires indiens. Vous ne devriez pas avoir de problèmes à trouver ce que vous recherchez.", name "etageres" "etagere" "nourriture" "curry" "naan" "riz" "vindaloo" "pates", adname 'indienne' 'produits' 'exotique', !***article "many", has static; Nearby patel "Raj" with description "Raj est votre voisin et le seul commerçant du quartier.", name "raj", life [; ask: switch(second) {'curry', 'repas', 'nourriture', 'épices', 'vindaloo': "Raj dit : J'ai de nombreuses épices à vendre. Je suis sûr que ce sont celles dont vous avez besoin."; 'prix', 'argent', 'pièce' : "Raj dit : Tout à 10F aujourd'hui."; } "Raj dit : Désolé, J'en sais rien."; tell, answer: switch(noun) {'bonjour', 'salut': "Raj dit : Bonjour à vous."; 'aurevoir', 'ciao': "Raj dit : Au revoir. N'hésitez pas à revenir."; } "Raj dit : Si vous avez besoin d'aide n'hésitez pas à me demander."; ], has animate proper ~female; Object building_site "Chantier" with description "Des tas de briques et d'ordures, de partout.", e_to road_bend, se_to fruit_n_veg, has light; Nearby junk "ordures" with description "Il pourrait y avoir quelque chose à l'intérieur.", name "ordures" "sable" "briques" "tas" "chantier", before [; search: if (self hasnt general) { give self general; move crowbar to player; "Vous donnez un coup de pieds dans ce qui traine et découvrez un pied de biche."; } ], has scenery; Object road_bend "Virage" with description "La route tourne vers le sud.", w_to building_site, e_to road_west, s_to fruit_n_veg, has light; Object road_west "Route" with description "La route se dirige à l'est ou à l'ouest selon d'où vous venez. ", w_to road_bend, e_to road, before [; if (chicken_status==0) if (random(2)==1) move chicken to location; ], has light; Object road "Route" with description "Vous êtes sur la route, devant votre maison. Elle s'étend d'est en ouest.", w_to road_west, e_to road_east, n_to house_front, s_to park_1, before [; if (chicken_status==0) if (random(2)==1) move chicken to location; ], has light; Object road_east "Route" with description "Une autre portion de la route est/ouest.", w_to road, e_to more_road, s_to park_2, before [; if (chicken_status==0) if (random(2)==1) move chicken to location; ], has light; Object more_road "Route devant le magasin" with description "Au nord vous pouvez voir un petit magasin. A l'est il y a des travaux d'aménagement de la route.", n_to shop, w_to road_east, e_to road_works, has light; Object road_works "Travaux" with description "Beaucoups de travaux ici. Vous ne pouvez pas aller plus loin dans cette direction.", w_to more_road, has light; Object fruit_n_veg "Etal de fruits et légumes" with description "C'est ce bon vieux Bill et son étal de fruits et légumes, il est là par tous les temps. Il vend les meilleurs articles du coin.", before [; buy: if (coin in player) { if (noun==tomatoes) { if (bill has general) "Bill dit : Désolé mon gars, je viens de vous donner les dernières."; else {move tomatoes to player; score=score+1; move coin to bill; "Bill dit : Avant que tu partes fiston. (il vous tend quelques tomates)"; } } "Vous y réfléchissez à deux fois et décidez de ne pas en acheter."; } "Vous n'avez pas d'argent."; take: if (noun==stall || noun==tomatoes) "Bill dit : C'est pas gratuit, tu sais. Si tu en veux, tu paies."; drop: "Bill dit : Oi! ne jètes rien par terre."; ], n_to road_bend, nw_to building_site, has light; Nearby stall "étal de fruits et légumes" with description "Sur l'étal il y a toute sorte de fruits et légumes. Tout le monde vient pour Bill.", name "etal" "fruits" "legumes" "pommes" "chou" "carottes" "oignons" "patates", has static; Nearby bill "Bill" with description "Vous voyez ce bon vieux Bill. Il est là quel que soit le temps pour vendre les meilleurs fruits et légumes du coin", name "bill", life [; answer: if (hat notin bill) "Bill dit : Un voyou m'a volé mon nouveau chapeau."; "Bill dit : Ah, qu'il est bon de retrouver mon chapeau."; give: if (noun==scarf && hat notin bill) "Bill dit : C'est pas le même que mon chapeau. Merci quand même."; if (noun==hat) { if (coin notin bill) { move tomatoes to player; score=score+2; give self general; move hat to bill; "Bill dit : Ah, merci vous avez retrouvé mon chapeau. Tenez mes dernières tomates en guise de récompense."; } move apples to player; move hat to bill; "Bill dit : Ah, merci vous avez retrouvé mon chapeau. Tenez mes dernières pommes en guise de récompense."; } ], has animate proper ~female; Object park_1 "Le Parc" with description "Vous êtes dans un magnifique parc verdoyant. Le chant silencieux des oiseaux est tout ce que l'on peut entendre.", n_to road, e_to park_2, has light; Object park_2 "Le Parc" with description "Ce parc est le lieu que vous préférez. Vous venez souvent ici uniquement pour vous relaxer et observer le monde.", n_to road_east, w_to park_1, has light; Object park_3 "parc" with description "Le parc est verdoyant, la pelouse magnifique.", name "parc" "terre" "sol" "herbe" "pelouse", found_in park_1 park_2, before [; dig: if (spade in player) if (self hasnt general) { give self general; move worm to location; score=score+1; "Alors que vous creusez le sol avec votre pelle un gros ver émerge et s'agite."; } ], has scenery; ! ITEMS Object key "clé de la porte d'entrée" class adnc, with description "C'est la clé de votre porte d'entrée.", name "cle", adname 'porte' 'entrée'; Object onion "oignon" with description [; if (choppedo==1) "Vous voyez un oignon finement émincé."; "Un oignon blanc."; ], name "oignon", !***article [; if (choppedo==1) print "a chopped"; else print "an"; ], before [; cut: if (choppedo==1) "Il est déjà émincé."; if (knife notin player) "Vous n'avez rien pour l'émincer."; if (player notin kitchen) "Vous devriez essayer dans un endroit adéquat."; else { choppedo=1; score=score+1; "Vous émincez finement l'oignon."; } ], has edible; Object chicken "poulet" with description [; if (chicken_status==4) "C'est un poulet mort, plumé et découpé."; if (chicken_status==3) "C'est un poulet mort et plumé."; if (chicken_status==2) "C'est un poulet mort."; "Le poulet court de partout."; ], !***article [; if (chicken_status==4) print "some chopped"; !***if (chicken_status==3) print "a plucked"; !***if (chicken_status==2) print "a dead"; !***if (chicken_status<=1) print "a"; ], name "poulet", before [; Take: if (chicken_status<=1) "Vous essayez d'attraper le poulet, sans succès."; Attack: if (chicken_status>=2) "Le poulet est déjà mort"; if (player notin kitchen) "Ce n'est pas le lieu pour tuer un poulet."; else { chicken_status=2; score=score+1; give chicken ~animate; "Vous saisissez la tête du poulet et la tordez. Le poulet est mort maintenant ."; } cut: if (chicken_status==4) "Le poulet est déjà découpé."; if (knife notin player) "Vous n'avez rien pour découper le poulet."; if (player notin kitchen) "Vous pensez que ce n'est pas le bon endroit pour essayer ça."; if (chicken_status==3) { chicken_status=4; score=score+1; "Vous découpez le poulet en cubes et jetez les os."; } if (chicken_status==2) "Vous ne pouvez découper le poulet avec toutes ces plumes."; "Vous poursuivez sauvagement le poulet, en agitant votre couteau furieusement, mais il n'y a pas moyen d'attraper le poulet."; ], life [; answer: "Cot! Cot!"; Give: if (noun==worm) { remove worm; score=score+1; chicken_status=1; "Le poulet picore le ver apr morceaux, il est heureux. Il semble vous suivre."; } ], has animate; Object worm "ver de terre" class adnc, with description "Un gros ver de terre bien juteux. Il s'agite dans tous les sens.", name "ver", adname 'gros' 'juteux' 'terre', before [; eat: remove self; "Le ver s'enroule sur lui-même dans votre bouche alors que vous commencez à macher. Alors que vous vous préparer à l'avaler, vous vous sentez un peu mal à l'aise. Un passant vous regarde de manière étrange."; ], has edible; Object spade "pelle" garage with description "Une solide pelle, utile pour creuser.", name "pelle", initial "Une pelle est là, contre le mur."; Object hat "chapeau" class adnc, with description "Un chapeau de tissu.", name "chapeau", adname 'de tissu', has clothing; Object ball "balle rouge" park_2 class adnc, with description "C'est une balle rouge toute neuve. Un enfant a dû la perdre.", name "balle", adname 'rouge'; Object tomatoes "tomates" with description [; if (choppedt==1) "Vous voyez des tomates coupées."; "Ce sont des tomates juteuses."; ], !***article [; if (choppedt==1) print "some chopped"; !***else print "some"; ], name "tomates" "tomate", before [; cut: if (choppedt==1) "Elles sont déjà coupées."; if (knife notin player) "Vous n'avez rien pour les couper."; if (player notin kitchen) "Vous devriez essayer dans un endroit approprié."; else { choppedt=1; score=score+1; "Vous coupez les tomates en petits morceaux."; } ], has edible; Object scarf "écharpe" class adnc, with description "C'est votre vieille écharpe de laine bleue. Vous l'avez porté pendant onze hivers froids.", Initial "Une écharpe est pliée dans le coin de l'armoire.", name "echarpe", adname 'vieille' 'bleue' 'laine', has clothing; Object crowbar "pied de biche" with description "C'est une lourde barre d'acier coudée à une extrémité. Vous pensez que vous pourriez vraiment faire du grabuge avec.", name "pied" "biche" "barre"; Object knife "couteau aiguisé" drawer class adnc, with description "En voyant comment est aiguisé ce couteau, vous pensez qu'il vaudrait mieux compter ses doigts après l'avoir utilisé.", name "couteau", adname 'eguise'; Object pan "sauteuse" cupboard class adnc, with description "C'est une grande sauteuse ordinaire.", name "sauteuse", adname 'grande', before [; receive: if (noun==onion && choppedo==1) {move onion to pan; "Vous mettez les oignons émincés dans la sauteuse."; } if (noun==tomatoes && choppedt==1) {move tomatoes to pan; "Vous mettez les tomates coupées dans la sauteuse."; } if (noun==chicken && chicken_status==4) {move chicken to pan; "Vous mettez les morceaux de poulet dans la sauteuse."; } if (noun==spices) {move spices to pan; "Vous mettez les épices dans la sauteuse."; } "Vous n'avez pas besoin de rajouter ça dans la sauteuse."; puton: if (second==stove or flames) if (stove has on) { if (onion in self && tomatoes in self && chicken in self && spices in self) { deadflag=2; score=score+3; "Vous placez la sauteuse sur les flammes et bientôt votre repas est prêt. Ahh rien ne vaut un bon vindaloo."; } "Vous n'avez pas tous les ingredients dans la sauteuse, vous décidez donc de ne pas faire cela."; } ], has container open; Object coin "pièce de 10F" with description "C'est une vieille pièce de monnaie datée de 1987.", name "piece"; Object spices "épices" with description "Ce sont les épices dont vous avez besoin pour le vindaloo déjà mixées par Raj lui-même.", name "epices", !***article "some", before [; eat: remove spices; "Houuuu! Houuuu! Les épices sont vraiment fortes. Vous souhaiteriez ne pas les avoir mangées."; ], has edible; Object cone "balise de chantier" road_works class adnc, with description "C'est une balise de chantier.", initial "Une balise de chantier est là, au milieu de la route.", name "balise", adname 'de chantier', has clothing; Object apples "pommes" with description "Quelques unes des meilleures pommes de Bill.", !***article "some", name "pommes" "pomme", has edible; Object water "eau" class adnc, with description "L'eau est froide et humide.", name "eau" "h2o", adname 'robinet' 'froide', before [; drink: "Ahhh, l'eau est fraîche."; take: "L'eau s'écoule entre vos doigts"; ], has static proper; Object flames "flamme" with description "Les flammes brillent et dansent.", name "flamme" "flammes" "feu" "bruleur", before [; take: "Dans votre tentative futile de prendre les flammes vous arrivez seulement à vous brûler les doigts."; ], has proper scenery; [ NewRoom; if (chicken_status==1) { move chicken to location; "Le poulet vous suit."; } ]; [ InScope i; if (location==shop) { objectloop (i near player) PlaceInScope(spices); } if (location==fruit_n_veg) { objectloop (i near player) PlaceInScope(tomatoes); } rfalse; ]; [ Initialise; location = bed; "^^Vous vous réveillez dans votre lit et décidez qu'aujourd'hui vous vous sentez prêt à faire votre fameux curry vindaloo. Vous en salivez d'avance.^"; ]; Include "FrenchG"; [ ExitsSub; if (location ~= thedark) { print "Sorties apparentes : "; if (location.n_to ~= 0) print "nord "; if (location.nw_to ~= 0) print "nordouest "; if (location.ne_to ~= 0) print "nordest "; if (location.w_to ~= 0) print "ouest "; if (location.e_to ~= 0) print "est "; if (location.s_to ~= 0) print "sud "; if (location.sw_to ~= 0) print "sudouest "; if (location.se_to ~= 0) print "sudest "; if (location.u_to ~= 0) print "haut "; if (location.d_to ~= 0) print "bas "; if (location.in_to ~= 0) print "dedans "; if (location.out_to ~= 0) print "dehors "; print "^"; } else print "Il fait sombre et vous ne voyez rien.^"; ]; [ PluckChickenSub; if (noun==chicken) { if (chicken_status==4) "Le poulet a déjà été plumé et découpé."; if (chicken_status==3) "Le poulet a déjà été plumé."; if (player notin kitchen) "Ce n'est pas l'endroit pour plumer un poulet."; if (chicken_status==2) { chicken_status=3; score=score+1; "Vous plumez le poulet."; } if (chicken_status==1) "Vous essayez de retirer les plumes de l'oiseau mais il vous picore et lutte fièrement."; } "Vous ne pouvez pas plumer cela."; ]; Verb "sorties" * -> Exits; Verb "plumer" * noun -> PluckChicken; end;