FUNKTION:
varargs int id(string str, int lvl)
IMPLEMENTIERT:
/std/thing/description.c
/std/player/description.c
ARGUMENTE:
str - Schluesselwort, welches das Ding (moeglicherweise)
identifiziert
lvl - P_LEVEL des Untersuchers (wichtig fuer Unsichtbare, optional)
BESCHREIBUNG:
Wenn die komplexe in 'str' uebergebene Zeichenfolge das Objekt
identifiziert, so wird 1 zurueckgeliefert - sonst 0.
Zur Bestimmung des Passend wird auf die in P_IDS (via AddId(L))
abgelegten IDs zurueckgegriffen. Diese werden ggf alle jeweils mit
den in P_ADJECTIVES gespeicherten Adjektiven kombiniert.
Zusaetzlich ist die Syntax '<id des dings> <nummer>' erlaubt.
Hier wird das <nummer>te Objekt, welches sich auf '<id des dings>'
angesprochen fuehlt, zurueckgeliefert. Hierbei werden jedoch nur
Dinge in derselben Umgebung wie das Objekt, in dem id() aufgerufen
wurde beruecksichtigt. "untersuche schwert 3"
Ist das Objekt in einem Spieler, so ist zusaetzlich dazu noch ein
Ansprechen mit 'Inventarnummern' moeglich. Anzeigen kann man sich
diese Nummern via "inv -n". Ansprechen tut man die Objekte dann
mit 'i<nummer>' also zB "untersuche i5".
Ist das Objekt unsichtbar (normales Objekt, P_PLURAL (und obsoletes
P_SHORT) auf Null), so wird trotzdem die Identitaet geprueft. Dies
ermoeglicht unsichtbare aber anfassbare Objekte zu schreiben.
Soll so ein Ding komplett 'unfassbar' sein, muss zusaetzlich noch
P_INVIS gesetzt werden.
Im Spielerobjekt hat diese Funktion einige Besonderheiten:
* ist str "ich", "mich", "mir" oder "mein" und TP gleich dem
Spieler, so wird 1 zurueckgeliefert ('unt mich')
* Ist das Objekt P_INVIS, so wird nur dann 1 geliefert, wenn
'lvl' groesser als P_LEVEL des Spielerobjekts ist (Magier werden
auf diese Art nicht 'fassbar').
* Die IDs von P_FROG werden beruecksichtigt
* Als Geist wird auch "geist von <name>" als ID erlaubt
RÜCKGABEWERT:
1 (komplexe Beschreibung passt) oder 0 (passt nicht).
BEMERKUNG:
Diese Funktion wird auch vom Driver (beim Abarbeiten von present(E))
benutzt, siehe auch id(A).
BEISPIEL:
int tritt(string wen) {
...
if (pl->id(wen, TP->QueryProp(P_LEVEL))) return do_kick();
return 0;
}
SIEHE AUCH:
present(E), id(A)
|