blob: 3ce78d9220d8716450cec47d2d7315057c073e51 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001AddDetail()
Zesstra953f9972017-02-18 15:37:36 +01002***********
MG Mud User88f12472016-06-24 23:31:02 +02003
MG Mud User88f12472016-06-24 23:31:02 +02004
Zesstra953f9972017-02-18 15:37:36 +01005FUNKTION
6========
MG Mud User88f12472016-06-24 23:31:02 +02007
Zesstra953f9972017-02-18 15:37:36 +01008 void AddDetail(string|string* keys,
9 string|string*|mapping|closure desc);
MG Mud User88f12472016-06-24 23:31:02 +020010
MG Mud User88f12472016-06-24 23:31:02 +020011
Zesstra953f9972017-02-18 15:37:36 +010012DEFINIERT IN
13============
MG Mud User88f12472016-06-24 23:31:02 +020014
Zesstra953f9972017-02-18 15:37:36 +010015 /std/thing/description.c
MG Mud User88f12472016-06-24 23:31:02 +020016
MG Mud User88f12472016-06-24 23:31:02 +020017
Zesstra953f9972017-02-18 15:37:36 +010018ARGUMENTE
19=========
MG Mud User88f12472016-06-24 23:31:02 +020020
Zesstra953f9972017-02-18 15:37:36 +010021 keys
22 String oder Array von Strings mit den Namen der Details.
23 desc
24 String, Mapping, String-Array oder Closure mit/zur Beschreibung.
MG Mud User88f12472016-06-24 23:31:02 +020025
MG Mud User88f12472016-06-24 23:31:02 +020026
Zesstra953f9972017-02-18 15:37:36 +010027BESCHREIBUNG
28============
MG Mud User88f12472016-06-24 23:31:02 +020029
Zesstra953f9972017-02-18 15:37:36 +010030 Die Beschreibung der Details <keys> wird gesetzt. Wie die Details
31 bei der Untersuchung aussehen, haengt im wesentlichen vom Typ der
32 Beschreibung <desc> ab:
33 <desc> ist ein String.
34 Beim Untersuchen wird dieser String zurueckgegeben.
35 <desc> ist ein String-Array.
36 Beim Untersuchen wird zufaellig einer der Strings zurueckgegeben.
37 <desc> ist ein Mapping.
38 Das Mapping muss folgenden Aufbau haben:
39 ([0: "Defaulttext",
40 "rasse1": "r1text", ...]).
MG Mud User88f12472016-06-24 23:31:02 +020041
Zesstra16b2a152020-04-12 12:40:29 +020042 Die Rassenstrings muessen hierbei klein geschrieben werden, anders
43 als in P_RACE und P_REAL_RACE.
44
45 Falls fuer die Rasse des Spielers, der das Detail untersucht, ein
Zesstra953f9972017-02-18 15:37:36 +010046 Eintrag im Mapping existiert, wird der entsprechende Text
47 zurueckgegeben, ansonsten der Defaulttext. Auf diese Weise sind
Zesstra16b2a152020-04-12 12:40:29 +020048 rassenabhaengige Details moeglich.
Zesstra953f9972017-02-18 15:37:36 +010049 <desc> ist eine Closure.
50 In diesem Fall wird die Closure ausgefuehrt und das Ergebnis
51 zurueckgegeben. Die Closure bekommt dabei den Namen des Details
52 als Parameter uebergeben.
MG Mud User88f12472016-06-24 23:31:02 +020053
Zesstra953f9972017-02-18 15:37:36 +010054 Fuer Details koennen Forscherpunkte eingetragen werden.
MG Mud User88f12472016-06-24 23:31:02 +020055
MG Mud User88f12472016-06-24 23:31:02 +020056
Zesstra953f9972017-02-18 15:37:36 +010057BEISPIELE
58=========
59
60 Ein schlichtes Detail:
61
62 AddDetail(({"sofa","couch"}), "Eine kleine Couch.\n");
63
64 Laengere Details sollten hierbei nicht per Hand umgebrochen werden,
65 sondern man kann hierzu die Funktion break_string() nutzen:
66
67 AddDetail("detail", break_string(
68 "Du wolltest es ja nicht anders, jetzt musst Du Dir dieses "
69 "fuerchterlich lange Detail durchlesen!!!", 78));
70
71 Noetige Zeilenumbrueche bei Zeilenlaengen groesser 77 werden so
72 automatisch generiert.
73 Ein rassenabhaengiges Detail:
74
75 AddDetail(({"bett","bettchen"}),
Zesstra16b2a152020-04-12 12:40:29 +020076 ([0 :"Ein kleines Bett.\n", // Der Defaulttext
77 "zwerg": // Die Rasse klein schreiben
Zesstra953f9972017-02-18 15:37:36 +010078 "Das Bett laedt geradezu zu einem Nickerchen ein.\n"]));
79
80 Und nun ein Detail mit Closure (diese Version ersetzt das Verhalten
81 von AddSpecialDetail).
82
83 int hebel_betaetigt;
84 ...
85 string hebel(string str); // Funktion bekannt machen (Prototyping)
86 ...
87 AddDetail(({"hebel","schalter"}), #'hebel);
88 ...
89 string hebel(string key) {
90 if(hebel_betaetigt)
91 return "Der "+capitalize(key)+" steht auf EIN.\n";
92 else
93 return "Der "+capitalize(key)+" steht auf AUS.\n";
94 }
95
96 Man erhaelt verschiedene Ergebnisse beim Untersuchen, je nachdem
97 ob das Flag hebel_betaetigt gesetzt ist oder nicht.
98
99
100SIEHE AUCH
101==========
102
103 Setzen: AddReadDetail(), AddSmells(), AddSounds(),
104 AddTouchDetail()
105 Loeschen: RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
106 RemoveSounds(), RemoveTouchDetail()
107 Daten: P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS,
108 P_TOUCH_DETAILS, P_SPECIAL_DETAILS
109 Veraltet: AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
110 Sonstiges: GetDetail(), break_string()
MG Mud User88f12472016-06-24 23:31:02 +0200111
Zesstra16b2a152020-04-12 12:40:29 +020011211.04.2020, Arathorn