blob: 52367036e320e8e041542fb7d376212399000f60 [file] [log] [blame]
Zesstra953f9972017-02-18 15:37:36 +01001
MG Mud User88f12472016-06-24 23:31:02 +02002AddDetail()
Zesstra953f9972017-02-18 15:37:36 +01003***********
MG Mud User88f12472016-06-24 23:31:02 +02004
MG Mud User88f12472016-06-24 23:31:02 +02005
Zesstra953f9972017-02-18 15:37:36 +01006FUNKTION
7========
MG Mud User88f12472016-06-24 23:31:02 +02008
Zesstra953f9972017-02-18 15:37:36 +01009 void AddDetail(string|string* keys,
10 string|string*|mapping|closure desc);
MG Mud User88f12472016-06-24 23:31:02 +020011
MG Mud User88f12472016-06-24 23:31:02 +020012
Zesstra953f9972017-02-18 15:37:36 +010013DEFINIERT IN
14============
MG Mud User88f12472016-06-24 23:31:02 +020015
Zesstra953f9972017-02-18 15:37:36 +010016 /std/thing/description.c
MG Mud User88f12472016-06-24 23:31:02 +020017
MG Mud User88f12472016-06-24 23:31:02 +020018
Zesstra953f9972017-02-18 15:37:36 +010019ARGUMENTE
20=========
MG Mud User88f12472016-06-24 23:31:02 +020021
Zesstra953f9972017-02-18 15:37:36 +010022 keys
23 String oder Array von Strings mit den Namen der Details.
24 desc
25 String, Mapping, String-Array oder Closure mit/zur Beschreibung.
MG Mud User88f12472016-06-24 23:31:02 +020026
MG Mud User88f12472016-06-24 23:31:02 +020027
Zesstra953f9972017-02-18 15:37:36 +010028BESCHREIBUNG
29============
MG Mud User88f12472016-06-24 23:31:02 +020030
Zesstra953f9972017-02-18 15:37:36 +010031 Die Beschreibung der Details <keys> wird gesetzt. Wie die Details
32 bei der Untersuchung aussehen, haengt im wesentlichen vom Typ der
33 Beschreibung <desc> ab:
34 <desc> ist ein String.
35 Beim Untersuchen wird dieser String zurueckgegeben.
36 <desc> ist ein String-Array.
37 Beim Untersuchen wird zufaellig einer der Strings zurueckgegeben.
38 <desc> ist ein Mapping.
39 Das Mapping muss folgenden Aufbau haben:
40 ([0: "Defaulttext",
41 "rasse1": "r1text", ...]).
MG Mud User88f12472016-06-24 23:31:02 +020042
Zesstra16b2a152020-04-12 12:40:29 +020043 Die Rassenstrings muessen hierbei klein geschrieben werden, anders
44 als in P_RACE und P_REAL_RACE.
45
46 Falls fuer die Rasse des Spielers, der das Detail untersucht, ein
Zesstra953f9972017-02-18 15:37:36 +010047 Eintrag im Mapping existiert, wird der entsprechende Text
48 zurueckgegeben, ansonsten der Defaulttext. Auf diese Weise sind
Zesstra16b2a152020-04-12 12:40:29 +020049 rassenabhaengige Details moeglich.
Zesstra953f9972017-02-18 15:37:36 +010050 <desc> ist eine Closure.
51 In diesem Fall wird die Closure ausgefuehrt und das Ergebnis
52 zurueckgegeben. Die Closure bekommt dabei den Namen des Details
53 als Parameter uebergeben.
MG Mud User88f12472016-06-24 23:31:02 +020054
Zesstra953f9972017-02-18 15:37:36 +010055 Fuer Details koennen Forscherpunkte eingetragen werden.
MG Mud User88f12472016-06-24 23:31:02 +020056
MG Mud User88f12472016-06-24 23:31:02 +020057
Zesstra953f9972017-02-18 15:37:36 +010058BEISPIELE
59=========
60
61 Ein schlichtes Detail:
62
63 AddDetail(({"sofa","couch"}), "Eine kleine Couch.\n");
64
65 Laengere Details sollten hierbei nicht per Hand umgebrochen werden,
66 sondern man kann hierzu die Funktion break_string() nutzen:
67
68 AddDetail("detail", break_string(
69 "Du wolltest es ja nicht anders, jetzt musst Du Dir dieses "
70 "fuerchterlich lange Detail durchlesen!!!", 78));
71
72 Noetige Zeilenumbrueche bei Zeilenlaengen groesser 77 werden so
73 automatisch generiert.
74 Ein rassenabhaengiges Detail:
75
76 AddDetail(({"bett","bettchen"}),
Zesstra16b2a152020-04-12 12:40:29 +020077 ([0 :"Ein kleines Bett.\n", // Der Defaulttext
78 "zwerg": // Die Rasse klein schreiben
Zesstra953f9972017-02-18 15:37:36 +010079 "Das Bett laedt geradezu zu einem Nickerchen ein.\n"]));
80
81 Und nun ein Detail mit Closure (diese Version ersetzt das Verhalten
82 von AddSpecialDetail).
83
84 int hebel_betaetigt;
85 ...
86 string hebel(string str); // Funktion bekannt machen (Prototyping)
87 ...
88 AddDetail(({"hebel","schalter"}), #'hebel);
89 ...
90 string hebel(string key) {
91 if(hebel_betaetigt)
92 return "Der "+capitalize(key)+" steht auf EIN.\n";
93 else
94 return "Der "+capitalize(key)+" steht auf AUS.\n";
95 }
96
97 Man erhaelt verschiedene Ergebnisse beim Untersuchen, je nachdem
98 ob das Flag hebel_betaetigt gesetzt ist oder nicht.
99
100
101SIEHE AUCH
102==========
103
104 Setzen: AddReadDetail(), AddSmells(), AddSounds(),
105 AddTouchDetail()
106 Loeschen: RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
107 RemoveSounds(), RemoveTouchDetail()
108 Daten: P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS,
109 P_TOUCH_DETAILS, P_SPECIAL_DETAILS
110 Veraltet: AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
111 Sonstiges: GetDetail(), break_string()
MG Mud User88f12472016-06-24 23:31:02 +0200112
Zesstra16b2a152020-04-12 12:40:29 +020011311.04.2020, Arathorn