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