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