Ein Shadow dient dazu, bestimmte Funktionen eines Objekts (zeitweise) zu ueberlagern. Dazu wird der Shadow "ueber" das Objekt "gelegt". Wird nun die Funktion aufgerufen, so wird die Funktion des Shadows statt die des Objekts verwendet. Der Shadow wird mit der Funktion int init_shadow(object victim [, int arg ] ) uebergeworfen. Vorsicht, einen Shadow darf man nicht mit zz zerstoert werden, das wird an das geshadowte Objekt weitergeleitet! Wie mach ich nun einen Shadow, der den Geruch eines Spielers fuer 5 Minuten veraendert? --------------------- snip ------------------------------------------------ inherit "/i/shadow"; void setup_shadow(object opfer) { init_shadow(opfer); // Shadow ueberwerfen write("Du stinkst nach Knoblauch!"); call_out("ende",300); // Fuer das Ende sorgen } string query_smell() // Den query_smell ueberlagern { return wrap(Der(query_shadow_owner())+" stinkt entsetzlich nach " "Knoblauch."); } void ende() { write("Dein Knoblauchgestank hat nachgelassen.\n"); remove_shadow(this_object()); // und nicht remove() !!! } --------------------- snip ------------------------------------------------ Nun muss man eigentlich nur noch setup_shadow(player); aufrufen, und schon stinkt der Gute...