blob: 5682f0004db022b9a0103adc0c672b46c7303528 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001AddSmells()
2
3FUNKTION:
4 void AddSmells(string|string* keys, string|string*|mapping|closure desc);
5
6DEFINIERT IN:
7 /std/thing/description.c
8
9ARGUMENTE:
10 keys
11 String oder Array von Strings mit den Namen der Details.
12 desc
13 String, Mapping, String-Array oder Closure mit/zur Beschreibung.
14
15BESCHREIBUNG:
16 Diese Funktion entspricht dem AddDetail() fuer Standarddetails, nur
17 koennen hiermit Gerueche realisiert werden:
18 Die Beschreibung der Details <keys> wird gesetzt. Wie die Details
19 bei der Untersuchung aussehen, haengt im wesentlichen vom Typ der
20 Beschreibung <desc> ab:
21 <desc> ist ein String.
22 Beim Untersuchen wird dieser String zurueckgegeben.
23 <desc> ist ein String-Array.
24 Beim Untersuchen wird zufaellig einer der Strings zurueckgegeben.
25 <desc> ist ein Mapping.
26 Das Mapping muss folgenden Aufbau haben:
27 ([0: "Defaulttext",
28 "rasse1": "r1text", ...]).
29
30 Falls fuer die Rasse des das Detail untersuchenden Spielers ein
31 Eintrag im Mapping existiert, wird der entsprechende Text
32 zurueckgegeben, ansonsten der Defaulttext. Auf diese Weise sind
33 rassenabhaengige Details moeglich. Siehe auch die Beispiele.
34 <desc> ist eine Closure.
35 In diesem Fall wird die Closure ausgefuehrt und das Ergebnis
36 zurueckgegeben. Die Closure bekommt dabei den Namen des Details
37 als Parameter uebergeben.
38
39 Fuer Geruchsdetails koennen Forscherpunkte eingetragen werden.
40
41 Gerueche koennen allgemein einen Raum oder Objekt zugeordnet werden:
42 dafuer muss man als <key> SENSE_DEFAULT uebergeben.
43
44 Spielerkommandos: "riech", "rieche", "schnupper", "schnuppere"
45
46BEISPIELE:
47 Ein kleines Beispiel fuer rassenabhaengige Gerueche mit Closures:
48 string strafe(string key);
49 ...
50 AddSmells(SENSE_DEFAULT,
51 "Der Geruch von Knoblauch ist ueberwaeltigend!\n");
52 AddSmells(({"knoblauch","geruch"}),
53 ([0: "Puhh, das stinkt!\n",
54 "vampir": #'strafe]));
55 ...
56 string strafe(string key) {
57 this_player()->reduce_hit_points(100);
58 return "Der Knoblauch schmerzt dich furchtbar!\n";
59 }
60
61SIEHE AUCH:
62 Setzen: AddDetail(), AddReadDetail(), AddSounds(),
63 AddTouchDetail()
64 Loeschen: RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
65 RemoveSounds(), RemoveTouchDetail()
66 Daten: P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
67 Veraltet: AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
68 Sonstiges: GetDetail(), break_string()
69
7020.01.2015, Zesstra
71