idee
----

KOMMANDO:
    idee <text>
    idee <objekt>:<text>

ARGUMENTE:

    <text>
        Eine Mitteilung
    <objekt>
        Ein Objekt, das neben Dir liegt oder in Deinem Inventar ist.
        Dein aktueller Raum kann mit "hier" oder "raum" angegeben werden.

BESCHREIBUNG:
    Speichert eine Mitteilung ueber eine Idee, wie man das Spiel verbessern
    oder verschoenern kann. Beispiele waeren weitere Details in Raeumen oder
    an Objekten; Vorschlaege zur Verbesserung der Syntax an bestimmten
    Stellen; Ideen, wie man das Ambiente eines Raumes noch verbessern kann.
    Die Magier werden versuchen, alle Mitteilungen in die Tat umzusetzen,
    soweit sie ihnen sinnvoll erscheinen :)

    Wenn Du einen Tippfehler gefunden hast, so kannst Du den Verantwortlichen
    mit diesem Befehl davon unterrichten.
    Alle Vorschlaege sind *herzlich willkommen*; zoegere also nicht, wenn Du
    eine gute Idee hast!

    Wenn Du eine Idee fuer ein bestimmten Objekt oder NPC hast, kannst Du
    dieses/diesen hinter einem Doppelpunkt angeben, damit der fuer das Objekt
    verantwortliche Magier die Meldung bekommt.
    Wenn das Objekt nicht zu finden ist, wird die ganze Eingabe als
    Meldung aufgefasst.

BEMERKUNG:
    Der Befehl 'idee' bezieht sich bei Nichtangabe eines Bezugsobjektes
    auf das letzte betrachtete Objekt. Hast Du also ein Objekt untersucht,
    dann wird die Meldung fuer diese Objekt abgegeben. Hast Du aber den
    Raum untersucht oder 'schau' eingegeben, wird die Meldung fuer Deinen
    momentanen Raum abgesetzt.

SIEHE AUCH:
    bug, syntaxhinweis, typo, detail, bezugsobjekt

Letzte Aenderung: 12.06.2019, Zesstra
