blob: 40765202a7ee55ecf6a7f18e2c079f27081c9b02 [file] [log] [blame]
Zesstra18626972017-01-31 10:38:27 +01001QueryArticle()
2==============
3
4FUNKTION
5--------
6::
7
8 varargs string QueryArticle(int casus, int dem, int force);
9
10DEFINIERT IN
11------------
12::
13
14 /std/thing/language.c
15
16ARGUMENTE
17---------
18::
19
20 casus
21 Der Fall, in dem der Artikel gewuenscht wird.
22 (Konstanten aus /sys/thing/language.h: WER, WEM, WESSEN, WEN.)
23
24 dem
25 Wird ein bestimmter oder ein unbestimmter Artikel verlangt?
26 + dem = 0: Unbestimmter Artikel!
27 + dem = 1: Bestimmter Artikel!
28 + dem = 2: Finde selbst heraus, welcher Artikel passt!
29
30 force
31 Falls ungleich Null, so wird auf jeden Fall ein Artikel
32 zurueckgegeben, trotz P_ARTICLE == 0.
33
34BESCHREIBUNG
35------------
36::
37
38 Diese Funktion gibt einen zum Geschlecht des Objektes passenden Artikel
39 zurueck, der in den passenden Fall dekliniert wird.
40
41 Das Herausfinden des passenden Artikels bei 'dem' = 2 bezieht sich auf
42 Situationen, in denen mehrere gleichnamige Objekte im selben Environment
43 sind. Man 'nimmt' dann zB nicht "den Stamm" sondern "einen Stamm".
44
45 Ist P_ARTICLE = 0, so wird ein Leerstring zurueckgegeben, es sei denn,
46 man uebergibt in dem Argument 'force' einen Wert ungleich Null.
47
48BEMERKUNGEN
49-----------
50::
51
52 Achtung: bei gueltigem Artikel wird ein Leerzeichen angehaengt!
53
54 Name()/name() nutzen bereits QueryArticle(), wenn P_ARTICLE gesetzt
55 ist. Deshalb muss man sich "Eines Orks" nicht selbst aus dem
56 QueryArticle() und dem Namen zusammenbasteln, wenn mehrere Orks
57 im Raum herumstehen und man eine Nachricht wie:
58 "Du haust den Ork." und folgend
59 "[Des|Eines] Orks Nase schwillt an."
60 haben moechte:
61 "Du haust "+ork->name(WEN, 1)+". "
62 ork->Name(WESSEN, 2)+" Nase schwillt an."
63
64RUeCKGABEWERT
65-------------
66::
67
68 * gewuenschter Artikel als String plus Leerzeichen (!) ODER
69 * Leerstring
70
71BEISPIELE
72---------
73::
74
75 // "X haut Y auf die Nase. [Der|Die|Das] ist nicht beeindruckt."
76 // Man will:
77 // * auf jeden Fall einen Artikel, auch wenn kein P_ARTICLE gesetzt ist
78 // * nur den bestimmten Artikel
79 send_room(this_object(),
80 pl1->Name(WER)+" haut "+pl2->name(WEM)+" auf die Nase. "+
81 capitalize(pl2->QueryArticle(WER, 1, 1))+"ist nicht beeindruckt.",
82 MT_LOOK|MT_LISTEN, 0, 0, ({pl1, pl2}));
83
84 // "X gibt dir Y. [Er|Sie|Es] prueft [den|die|das] ..."
85 // Man will:
86 // * auf jeden Fall einen Artikel, auch wenn kein P_ARTICLE gesetzt ist
87 // * nur den bestimmten Artikel
88 send_room(this_object(),
89 pl1->Name(WER)+" gibt "+pl2->name(WEM)+" "+obj->name(WER)+". "+
90 capitalize(pl2->QueryPronoun(WER))+" prueft "+
91 ob->QueryArticle(WEN, 1, 1)+"...",
92 MT_LOOK|MT_LISTEN, 0, 0, ({pl1, pl2}));
93
94 // "Dir faellt X auf den Kopf. Du siehst [die|den|das|eine|einen|eines "
95 // "auf dem Boden liegen. [Sie|Er|Es] sieht blutig aus. Aua. Ist das "
96 // "von dir?"
97 // Man will:
98 // * auf jeden Fall einen Artikel, auch wenn kein P_ARTICLE gesetzt ist
99 // * bestimmte/unbestimmte Artikel, wenn bereits gleiche Gegenstaende
100 // (zB Kokosnuesse) auf dem Boden liegen ...
101 ob->move(environment(), M_NOCHECK); // vorher machen!
102 pl->ReceiveMsg(
103 "Dir faellt "+ob->name(WER, 0)+" auf den Kopf. Du siehst "+
104 ob->QueryArticle(WEN, 2, 1)+" auf dem Boden liegen. "+
105 capitalize(ob->QueryPronoun(WER))+" sieht blutig ...
106
107SIEHE AUCH
108----------
109::
110
111 Aehnlich: SuggestArticle(), query_c_article(), query_g_suffix()
112 Sonstiges: QueryOwn(), QueryDu(),
113 QueryPronoun(), QueryPossPronoun()
114 DeclAdj()
115 name()
116
1179. Jun 2016, Gloinson
118