! _Shade_ ! Special source-code edition ! Copyright 2000-2002 Andrew Plotkin ! http://www.eblong.com/zarf/if.html ! This source code is provided for personal, educational use only. ! See README file for details. Class FloorSand with name 'sable' 'sable', ! will be adjusted later short_name [; print "sable sur le sol ", (string) self.self_word, ""; !print " ['", (address) (self.&name)-->0, ! "' '", (address) (self.&name)-->1, "']"; rtrue; ], parse_name [ wd gotsand num lastwd alt1 alt2 addr; addr = self.&name; alt1 = addr-->0; alt2 = addr-->1; wd = NextWord(); while (WordInProperty(wd, self.self_name, name) || wd == 'sable' or 'sur' or 'dans' or 'du' or 'sol' or alt1 or alt2) { if (wd == 'sable' or alt1 or alt2) gotsand = true; lastwd = wd; num++; wd = NextWord(); } if (~~gotsand) return 0; if (num > 0 && lastwd == 'sur' or 'dans') return num-1; return num; ], article "du", number 0, partinvent [; switch (self.number) { 0: print "[BUG] pas de sable"; 1: print "quelques grains de sable"; 2: print "une traînée de sable"; 3: print "du sable"; 4: print "une petite couche de sable"; 5: print "une grosse épaisseur de sable"; 6: print "deux centimètres de sable"; 7: print "plusieurs centimètres de sable"; 8: print "du sable à la hauteur de votre cheville"; default: print "des collines de sable"; } rtrue; ], description [; switch (self.number) { 0: "[BUG] Pas de sable ici"; 1: "Il y a quelques grains de sable sur le sol ", (string) self.self_word, "."; 2: "Une traînée de sable est sur le sol ", (string) self.self_word, "."; 3: "Du sable s'est répandu sur le sol ", (string) self.self_word, "."; 4: "Il y a une petite couche de sable sur le sol ", (string) self.self_word, "."; 5: "Il y a une grosse épaisseur de sable sur le sol ", (string) self.self_word, "."; 6: "Il y a deux centimètres de sable sur le sol ", (string) self.self_word, "."; 7: "Il y a plusieurs centimètres de sable sur le sol ", (string) self.self_word, "."; 8: "Le sable sur le sol ", (string) self.self_word, "est à la hauteur de votre cheville."; default: "Le sable occupe tout le volume ", (string) self.self_word, "."; } ], before [; Take: if (OIU(self)) rtrue; switch (self.number) { 0, 1, 2: print "Vous collectez une pincée de sable"; default: print "Vous prenez une pincée de sable"; } ". Il vous coule entre les doigts ; c'est du sable."; BlowOn: if (OIU(self)) rtrue; "Quelques grains de sable s'éloignent en roulant."; Push, Pull: if (OIU(self)) rtrue; print "Vous poussez un peu de sable avec votre pied."; if (self.number <= 4) print " Il gratte de façon désagréable contre le sol."; new_line; rtrue; Insert: if (OIU(self)) rtrue; if (second ~= glass) "Ça ne retiendra pas du sable."; if (glass notin player) "Vous n'avez pas le verre avec vous."; if (sand in glass) "Le verre est déjà plein."; move sand to glass; PronounNotice(sand); if (self.number <= 2) print "Vous grappillez assez de sable pour remplir le verre."; else print "Vous remplissez le verre de sable."; if (water in glass) { remove water; print " L'eau dans le verre se trouble en se mélangeant au sable; puis elle semble perdre du terrain, et le sable finit par être aussi sec que celui à vos pieds. Étrange."; } new_line; rtrue; Drink, Taste: if (OIU(self)) rtrue; "Vous ne pouvez pas boire du sable."; Dig: if (OIU(self)) rtrue; switch (self.number) { 0 to 3: "Il n'y a pas vraiment assez de sable ici pour creuser."; 4 to 6: "Vous raclez le sable jusqu'à ce que le sol apparaisse. Ça n'était même pas une couche uniforme au début, bien sûr."; 7, 8: "Vous raclez le sable jusqu'à ce qu'un peu de sol apparaisse. Mais le sable se remet à couler dès que vous vous arrêtez."; default: "Vous ne parvenez pas à retrouver le sol."; } Find: "On peut difficilement le rater."; ], receive_sand [; <>; ], receive_water [; <>; ], has static; [ BumpSand obj newval addr; if (~~(obj ofclass FloorSand)) { switch (obj) { kitchen: obj = kitchensand; bathroom: obj = bathroomsand; shower: obj = showersand; Apartment: obj = livingsand; default: print_ret "[BUG] BumpSand(", (name) obj, ")"; } } if (obj notin obj.self_obj) { move obj to obj.self_obj; obj.self_obj.sand_obj = obj; } if (newval == 0) { obj.number++; } else { if (obj.number < newval) obj.number = newval; } addr = obj.&name; addr-->1 = 'sable'; switch (obj.number) { 0: addr-->0 = 'buggy'; 1: addr-->0 = 'grains'; 2: addr-->0 = 'trainee'; 3: addr-->0 = 'du'; 4: addr-->0 = 'petite'; addr-->1 = 'couche'; 5: addr-->0 = 'grosse'; addr-->1 = 'epaisseur'; 6: addr-->0 = 'deux'; addr-->1 = 'centimetres//p'; 7: addr-->0 = 'quelques'; addr-->1 = 'centimetres//p'; 8: addr-->0 = 'hauteur'; addr-->1 = 'cheville'; default: addr-->0 = 'collines//p'; addr-->1 = 'colline'; } !if (obj.number == 1 or 6 or 7 || obj.number > 8) {give obj pluralname;} else {give obj ~pluralname;} ! ajouté trad, mais enlevé après tout ]; FloorSand kitchensand with self_obj kitchen, self_name kitchen, self_word "de la cuisine"; FloorSand bathroomsand with self_obj bathroom, self_name bathroom, self_word "de la salle de bain"; FloorSand livingsand with self_obj Apartment, self_name apartmentproxy, self_word "du salon"; FloorSand showersand with self_obj shower, self_name shower, self_word "de la douche"; Class SandQuantity with description "Le sable est blanc et pur.", before [; Take: if (OIU(self)) rtrue; print "Vous prenez une pincée de sable"; if (self has female) {print " de la ";} else { print "du ";} print_ret "", (string) self.self_name, ", et vous le laissez couler entre vos doigts."; BlowOn: if (OIU(self)) rtrue; "Quelques grains de sable s'éloignent en roulant."; Drink, Taste, Eat: if (OIU(self)) rtrue; "Vous ne pouvez pas boire du sable."; Drop: if (~~IndirectlyContains(player, self)) "Vous n'avez pas cela avec vous."; "Un peu de sable s'échappe, mais la plupart du sable semble être solidement tassé."; Dig: if (OIU(self)) rtrue; "De ce que vous en savez, il n'y a que du sable sous vos pieds."; ], has scenery; SandQuantity jarsand "pot rempli de sable" with name 'pot' 'rempli' 'de' 'du' 'sable', self_name "pot", before [; Empty, EmptyT: <>; ]; SandQuantity boxsand "boîte remplie de sable" with name 'boite' 'remplie' 'de' 'du' 'sable', self_name "boîte", before [; Empty, EmptyT: <>; ] has female; Class SinkSand class SandQuantity, with short_name [; print "sable dans ", (string) self.self_name; rtrue; ], parse_name [ wd gotsand num lastwd; wd = NextWord(); while (wd == self.self_word or 'évier' || wd == 'sable' or 'sur' or 'dans') { if (wd == 'sable') gotsand = true; lastwd = wd; num++; wd = NextWord(); } if (~~gotsand) return 0; if (num > 0 && lastwd == 'sur' or 'dans') return num-1; return num; ], article "le", before [; Insert: if (OIU(self)) rtrue; if (second ~= glass) "Ça ne retiendra pas du sable."; if (glass notin player) "Vous n'avez pas le verre avec vous."; if (sand in glass) "Le verre est déjà plein."; move sand to glass; PronounNotice(sand); print "Vous remplissez le verre de sable."; if (water in glass) { remove water; print " L'eau dans le verre se trouble en se mélangeant au sable; puis elle semble perdre du terrain, et le sable finit par être aussi sec que celui dans l'évier. Étrange."; } new_line; rtrue; EmptyT: <>; ], receive_water "Vous versez l'eau dans l'évier, où elle s'infiltre dans le sable.", receive_sand "Vous ajoutez votre sable au fardeau de l'évier."; SinkSand kitchensinksand with self_word 'de la cuisine', self_name "l'évier de la cuisine"; SinkSand bathsinksand with self_word 'de la salle de bain', self_name "l'évier de la salle de bains"; SandQuantity sand "verre rempli de sable" with name 'verre' 'rempli' 'de' 'du' 'sable', self_name "verre", before [ ix jx; Drop: if (~~IndirectlyContains(player, self)) "Vous n'avez pas cela avec vous."; remove self; ix = FindFloorZone(player); if (ix) jx = ix.sand_obj; if (jx && jx.number >= 3) "Le sable coule sur le sol et s'y perd."; if (jx) { if (jx.number < 2) BumpSand(jx); } else { if (ix) BumpSand(ix); } "Le sable s'éparpille sur le sol."; EmptyT: <>; Insert, PutOn: if (~~IndirectlyContains(player, self)) "Vous n'avez pas cela avec vous."; if (second provides receive_sand) { if (OIU(second)) rtrue; ix = second.receive_sand(); if (ix) { if (ix ~= 2) remove self; rtrue; } } if (second == d_obj) <>; "Le sable ne lui fera pas du bien."; ];