id()

FUNKTION:
     varargs int id(string str, int lvl);

DEFINIERT IN:
     /std/thing/description.c
     /std/player/base.c

ARGUMENTE:
     string str
          String, auf den getestet werden soll.
     int lvl
          In /std/player/base.c benutzt. Wenn der Spieler unsichtbar ist
          und lvl kleiner ist als sein Level, wird 0 zurueckgegeben.

BESCHREIBUNG:
     Es wird geprueft, ob sich das Objekt mit str ansprechen laesst. Dazu
     wird str mit dem Inhalt der Property P_IDS verglichen. Falls
     P_ADJECTIVES gesetzt ist, werden auch alle Adjektivkombinationen mit
     den Bezeichnern geprueft.

     Besondere Bedeutung hat diese Funktion bei Mengenobjekten: Anhand von
     str wird vermerkt, welche Menge des Objektes angesprochen wird. Es
     werden dabei mehrere Faelle unterschieden:
     o str ist einer der mit AddId() angegebener Bezeichner. In diesem
       Fall ist die angesprochene Menge die Gesamtmenge.
     o str ist einer der mit AddSingularId() angegebenen Bezeichner. Die
       angesprochene Menge ist in diesem Fall 1.
     o str ist einer der mit AddPluralId() angegebenen Bezeichner. Die
       angesprochene Menge ist in diesem Fall . die Gesamtmenge.
     o Hat str die Form "<n> <id>", wobei <n>=1 und <id> eine SingularId
       oder 1 < <n> <= der Gesamtmenge und <id> eine PluralId, so ist die
       angesprochene Menge = <n>.
     Wie gesagt, gilt dies einzig und allein bei Mengenobjekten!

RUeCKGABEWERT:
     1, wenn sich das Objekt von str angesprochen fuehlt, ansonsten 0.

BEISPIELE:
     Angenommen, ein Objekt habe folgende Bezeichner:

     AddId( "murmel" );
     AddAdjective( "runde" );

     Dann liefern die angegebenen id()-Aufrufe folgende Ergebnisse:

     id( "murmel" );         => 1
     id( "runde murmel" );   => 1
     id( "kleine murmel" );  => 0
     id( "runder ball" );    => 0
     id( "runde murmel 2" ); => 1, wenn dies die zweite Murmel in der
                                   gleichen Umgebung ist, ansonsten 0

     Bei einem Haufen von 100 Muenzen haette man zB.:

     AddId( "geld" );
     AddSingularId( "muenze" );
     AddPluralId( "muenzen" );

     Nach fuehlen sich nach den folgenden id()-Aufrufen folgende Anzahlen
     angesprochen:

     id( "geld" );       => 100 Muenzen
     id( "muenze" );     => 1 Muenze
     id( "muenzen" );    => 100 Muenzen
     id( "1 muenze" );   => 1 Muenze
     id( "42 muenzen" ); => 42 Muenzen

     id() liefert in all diesen Faellen 1 zurueck.

SIEHE AUCH:
     AddId(), AddAdjective(), AddSingularId(), AddPluralId(), present(),
     match_ids(), /std/thing/description.c, /std/unit.c

6. Sep 2012 Gloinson