blob: ea10b3d37898844fe98e70358238737c5dae46f5 [file] [log] [blame]
SYNOPSIS
object environment();
object environment(object obj);
object environment(string obj);
ARGUMENTE:
obj
Objekt oder Pfad-String eines Objektes dessen Umgebungsobjekt
gesucht ist
BESCHREIBUNG:
Es wird das Objekt bestimmt, in dem sich obj aufhaelt.
Wird obj nicht angegeben, so wird this_object() als Objekt angenommen.
Zerstoerte Objekte haben kein Environment.
BEMERKUNGEN:
- Blueprints, wie zum Beispiel Raeume haben oft kein environment(). Man
sollte daher ueberpruefen, ob ein environment() existiert, wenn man
darin oder darauf eine Funktion aufrufen will.
BEISPIELE:
// In der Variable "raum" steht der Raum, in dem sich der Spieler derzeit
// aufhaelt - das kann auch 0 sein!
raum = environment(this_player());
// Dieses Objekt hat noch kein environment, da es eben erst geclont
// wurde. Ergo steht in env eine 0.
obj = clone_object("/std/thing");
env = environment(obj);
// alle Methoden die auf Environment arbeiten, sollten das vorher
// pruefen - insbesondere tell_room()
if(this_player() && environment(this_player()) &&
objectp(o=present("schild",environment(this_player()))) {
write("Du klebst Deine Plakette auf "+o->name(WEN)+".\n");
tell_room(environment(this_player()), break_string(
this_player()->Name(WER)+" pappt einen Aufkleber auf "+
o->name(WEN)+".",78),
({this_player()}));
}
// wenn Dinge sehr offensichtlich in Leuten kaputtgehen wird es
// komplexer (man kann das natuerlich noch weiter schachteln oder
// ueber all_environment() versuchen zu loesen
if(environment()) {
object ee;
ee=environment(environment());
if(living(environment())) {
tell_object(environment(),Name(WER)+" zerfaellt.\n");
if(ee)
tell_room(ee,
environment()->Name(WESSEN)+" "+name(RAW)+" zerfaellt.\n",
({environment()}));
} else if(ee && living(ee))
if(environment()->QueryProp(P_TRANSPARENT))
tell_object(ee, Name(WER)+" zerfaellt in Deine"+
(environment()->QueryProp(P_PLURAL)?"n":
(environment()->QueryProp(P_GENDER)==FEMALE?"r":"m"))+
environment()->name(RAW)+".\n");
} else tell_room(environment(),Name(WER)+" zerfaellt.\n");
}
SIEHE AUCH:
first_inventory(E), next_inventory(E), all_inventory(E)
all_environment(E)
20. Sep. 2002 Gloinson@MG