MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | SYNOPSIS |
| 2 | object environment(); |
| 3 | object environment(object obj); |
| 4 | object environment(string obj); |
| 5 | |
| 6 | ARGUMENTE: |
| 7 | obj |
| 8 | Objekt oder Pfad-String eines Objektes dessen Umgebungsobjekt |
| 9 | gesucht ist |
| 10 | |
| 11 | BESCHREIBUNG: |
| 12 | Es wird das Objekt bestimmt, in dem sich obj aufhaelt. |
| 13 | Wird obj nicht angegeben, so wird this_object() als Objekt angenommen. |
| 14 | |
| 15 | Zerstoerte Objekte haben kein Environment. |
| 16 | |
| 17 | BEMERKUNGEN: |
| 18 | - Blueprints, wie zum Beispiel Raeume haben oft kein environment(). Man |
| 19 | sollte daher ueberpruefen, ob ein environment() existiert, wenn man |
| 20 | darin oder darauf eine Funktion aufrufen will. |
| 21 | |
| 22 | BEISPIELE: |
| 23 | // In der Variable "raum" steht der Raum, in dem sich der Spieler derzeit |
| 24 | // aufhaelt - das kann auch 0 sein! |
| 25 | raum = environment(this_player()); |
| 26 | |
| 27 | // Dieses Objekt hat noch kein environment, da es eben erst geclont |
| 28 | // wurde. Ergo steht in env eine 0. |
| 29 | obj = clone_object("/std/thing"); |
| 30 | env = environment(obj); |
| 31 | |
| 32 | // alle Methoden die auf Environment arbeiten, sollten das vorher |
| 33 | // pruefen - insbesondere tell_room() |
| 34 | if(this_player() && environment(this_player()) && |
| 35 | objectp(o=present("schild",environment(this_player()))) { |
| 36 | |
| 37 | write("Du klebst Deine Plakette auf "+o->name(WEN)+".\n"); |
| 38 | tell_room(environment(this_player()), break_string( |
| 39 | this_player()->Name(WER)+" pappt einen Aufkleber auf "+ |
| 40 | o->name(WEN)+".",78), |
| 41 | ({this_player()})); |
| 42 | } |
| 43 | |
| 44 | // wenn Dinge sehr offensichtlich in Leuten kaputtgehen wird es |
| 45 | // komplexer (man kann das natuerlich noch weiter schachteln oder |
| 46 | // ueber all_environment() versuchen zu loesen |
| 47 | if(environment()) { |
| 48 | object ee; |
| 49 | ee=environment(environment()); |
| 50 | if(living(environment())) { |
| 51 | tell_object(environment(),Name(WER)+" zerfaellt.\n"); |
| 52 | if(ee) |
| 53 | tell_room(ee, |
| 54 | environment()->Name(WESSEN)+" "+name(RAW)+" zerfaellt.\n", |
| 55 | ({environment()})); |
| 56 | } else if(ee && living(ee)) |
| 57 | if(environment()->QueryProp(P_TRANSPARENT)) |
| 58 | tell_object(ee, Name(WER)+" zerfaellt in Deine"+ |
| 59 | (environment()->QueryProp(P_PLURAL)?"n": |
| 60 | (environment()->QueryProp(P_GENDER)==FEMALE?"r":"m"))+ |
| 61 | environment()->name(RAW)+".\n"); |
| 62 | } else tell_room(environment(),Name(WER)+" zerfaellt.\n"); |
| 63 | } |
| 64 | |
| 65 | SIEHE AUCH: |
| 66 | first_inventory(E), next_inventory(E), all_inventory(E) |
| 67 | all_environment(E) |
| 68 | |
| 69 | 20. Sep. 2002 Gloinson@MG |