blob: 104c0cdafa4d7012666f428440fac1687bb914e3 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001AddTouchDetail()
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 AddTouchDetail(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============
29
30 Diese Funktion entspricht dem AddDetail() fuer Standarddetails, nur
31 koennen hiermit (ab)tastbare bzw. fuehlbare Details realisiert werden:
32 Die Beschreibung der Details <keys> wird gesetzt. Wie die Details
33 beim (Ab)Tasten aussehen, haengt im wesentlichen vom Typ der
34 Beschreibung <desc> ab:
35 <desc> ist ein String.
36 Beim Untersuchen wird dieser String zurueckgegeben.
37 <desc> ist ein String-Array.
38 Beim Untersuchen wird zufaellig einer der Strings zurueckgegeben.
39 <desc> ist ein Mapping.
40 Das Mapping muss folgenden Aufbau haben:
41 ([0: "Defaulttext",
42 "rasse1": "r1text", ...]).
43
44 Falls fuer die Rasse des das Detail untersuchenden Spielers ein
45 Eintrag im Mapping existiert, wird der entsprechende Text
46 zurueckgegeben, ansonsten der Defaulttext. Auf diese Weise sind
47 rassenabhaengige Details moeglich. Siehe auch die Beispiele.
48 <desc> ist eine Closure.
49 In diesem Fall wird die Closure ausgefuehrt und das Ergebnis
50 zurueckgegeben. Die Closure bekommt dabei den Namen des Details
51 als Parameter uebergeben.
52
53 Fuer fuehlbare Details koennen Forscherpunkte eingetragen werden.
54
55 Fuehlbare Details koennen allgemein einen Raum oder Objekt zugeordnet
56 werden: dafuer muss man als <key> SENSE_DEFAULT uebergeben.
57
58 Spielerkommandos: "taste"
59
60
61BEISPIELE
62=========
63
64 Ein kleines Beispiel fuer rassenabhaengige, fuehlbare Details mit Closures:
65 string strafe(string key);
66 ...
67 AddTouchDetail(SENSE_DEFAULT, "Du fuehlst einige Knollen\n");
68 AddTouchDetail(({"knollen"}),
69 ([0: "Sie fuehlen sich an wie Knoblauchknollen. "
70 "Riech doch mal daran.\n",
71 "vampir": #'strafe]));
72
73 string strafe(string key) {
74 this_player()->reduce_hit_points(100);
75 return "Au! Das waren ja Knoblauchknollen!\n";
76 }
77
78
79SIEHE AUCH
80==========
81
82 Setzen: AddDetail(), AddReadDetail(), AddSmells(), AddSounds()
83 Loeschen: RemoveDetail(), RemoveReadDetail(), RemoveSmells(),
84 RemoveSounds(), RemoveTouchDetail()
85 Daten: P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS
86 Veraltet: AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
87 Sonstiges: GetDetail(), break_string()
MG Mud User88f12472016-06-24 23:31:02 +020088
8920.01.2015, Zesstra