blob: 3be5ecc3522e852d79356afecbe3364e95f48b25 [file] [log] [blame]
Zesstra953f9972017-02-18 15:37:36 +01001
MG Mud User88f12472016-06-24 23:31:02 +02002QueryArticle()
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 varargs string QueryArticle(int casus, int dem, int force);
MG Mud User88f12472016-06-24 23:31:02 +020010
MG Mud User88f12472016-06-24 23:31:02 +020011
Zesstra953f9972017-02-18 15:37:36 +010012DEFINIERT IN
13============
MG Mud User88f12472016-06-24 23:31:02 +020014
Zesstra953f9972017-02-18 15:37:36 +010015 /std/thing/language.c
MG Mud User88f12472016-06-24 23:31:02 +020016
MG Mud User88f12472016-06-24 23:31:02 +020017
Zesstra953f9972017-02-18 15:37:36 +010018ARGUMENTE
19=========
MG Mud User88f12472016-06-24 23:31:02 +020020
Zesstra953f9972017-02-18 15:37:36 +010021 casus
22 Der Fall, in dem der Artikel gewuenscht wird.
23 (Konstanten aus /sys/thing/language.h: WER, WEM, WESSEN, WEN.)
MG Mud User88f12472016-06-24 23:31:02 +020024
Zesstra953f9972017-02-18 15:37:36 +010025 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!
MG Mud User88f12472016-06-24 23:31:02 +020030
Zesstra953f9972017-02-18 15:37:36 +010031 force
32 Falls ungleich Null, so wird auf jeden Fall ein Artikel
33 zurueckgegeben, trotz P_ARTICLE == 0.
MG Mud User88f12472016-06-24 23:31:02 +020034
MG Mud User88f12472016-06-24 23:31:02 +020035
Zesstra953f9972017-02-18 15:37:36 +010036BESCHREIBUNG
37============
MG Mud User88f12472016-06-24 23:31:02 +020038
Zesstra953f9972017-02-18 15:37:36 +010039 Diese Funktion gibt einen zum Geschlecht des Objektes passenden Artikel
40 zurueck, der in den passenden Fall dekliniert wird.
MG Mud User88f12472016-06-24 23:31:02 +020041
Zesstra953f9972017-02-18 15:37:36 +010042 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()
MG Mud User88f12472016-06-24 23:31:02 +0200117
1189. Jun 2016, Gloinson