| 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"); |
| } |