blob: 2a18dc7b41df6125dc0bae910e8342be16cb4a9e [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001FUNKTION:
2 varargs string replace_personal(string str, mixed *obs [, int caps]);
3
4DEFINIERT IN:
5 /secure/simul_efun.c
6
7ARGUMENTE:
8 str - zu bearbeitender String
9 obs - Liste von Objekt1, Objekt2, ..., Objekt9
10 (Objekte oder Strings)
11 caps - 1 fuer Grossschreibung des Ersetzten nach Satzenden (.,?,!,")
12 0 sonst
13
14BESCHREIBUNG:
15 Ersetzt in Strings
16 @WERx, @WESSENx, @WEMx, @WENx durch
17 Objectx->name(<casus>, 1);
18 @WERUx, @WESSENUx, @WEMUx, @WENUx durch
19 Objectx->name(<casus>);
20 @WERQPx, @WESSENQPx, @WEMQPx, @WENQPx durch
21 Objectx->QueryPronoun(<casus>);
22 @WERQAx, @WESSENQAx, @WEMQAx, @WENQAx durch
23 Objectx->QueryArticle(<casus>, 1, 1);
24 @WERQPPGNx, @WESSENQPPGNx, @WEMQPPGNx, @WENQPPGNx durch
25 Objectx->QueryPossPronoun(<gender>, <casus>, <number>);
26 oder den entsprechenden String bei "Objektx".
27
28BEMERKUNGEN:
29 x steht fuer die Position des Objekts/Strings in *obs, beginnend bei 1.
30
31 Besonderheiten beim Possessivpronomen (@WERQPPGNx):
32 G muss durch das Geschlecht (M, F oder N) und N durch den Numerus (S
33 oder P) ersetzt werden.
34 Alle Angaben, auch der CASUS, beziehen sich dabei auf das Objekt, welches
35 besessen wird, nicht auf den Besitzer! Dieser ist bereits durch x
36 bestimmt.
37
38RUeCKGABEWERT:
39 durchersetzter String
40
41Beispiele:
42
43 replace_personal("@WER1", ({find_player("gloinson")}))
44 == "Gloinson"
45
46 replace_personal("@WEMQP1", ({find_player("gloinson")}))
47 == "ihm"
48
49 // unbestimmter und bestimmter Artikel:
50 replace_personal("@WER1 zueckt @WENU2 und verhaut @WEN3.",
51 ({find_player("gloinson"),
52 find_object("/obj/mpa"),
53 find_object("/obj/wanderer")}))
54 == "Gloinson zueckt eine Zeitung und verhaut den Wanderer."
55
56 // Beim Possessivpronomen beziehen sich WEN, F und P (Akkusativ,
57 // Femininum, Plural) auf die Taschen, nicht auf Kessa:
58 replace_personal("@WER1 steckt @WESSEN2 Turnschuhe in @WENQPPFP1 "
59 "Taschen.",
60 ({find_player("kessa"),
61 find_player("gloinson")}))
62 == "Kessa steckt Gloinsons Turnschuhe in ihre Taschen."
63
64 // Ein Beispiel mit laengerem *obs:
65 replace_personal("@WER1 zieht @WENQPPMP1 neuen Turnschuhe an. @WER2 ist "
66 "so beeindruckt, dass @WERQP2 @WEMQP1 @WENU3 auf die "
67 "@WEN4 haut und die Schuhe in @WEMQPPFS2 Tasche "
68 "verschwinden laesst. @WERU5 schaut zu und kichert "
69 "irre. Wenn das @WER6 gesehen haette!",
70 ({find_player("gloinson"),
71 find_player("kessa"),
72 find_object("/obj/mpa"),
73 "Birne",
74 find_object("/obj/wanderer"),
75 find_netdead("jof")}),1)
76 == "Gloinson zieht seine neuen Turnschuhe an. Kessa ist so beeindruckt, "
77 "dass sie ihm eine Zeitung auf die Birne haut und die Schuhe in ihrer "
78 "Tasche verschwinden laesst. Ein Wanderer schaut zu und kichert "
79 "irre. Wenn das Jof gesehen haette!"
80
81SIEHE AUCH:
82 AddCmd(L)
83
8405. September 2015, Arathorn