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