blob: cd1e73e73b2dcf1b7e8ede92a98478b3a3062a9f [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001QueryArticle()
Zesstra953f9972017-02-18 15:37:36 +01002**************
MG Mud User88f12472016-06-24 23:31:02 +02003
MG Mud User88f12472016-06-24 23:31:02 +02004
Zesstra953f9972017-02-18 15:37:36 +01005FUNKTION
6========
MG Mud User88f12472016-06-24 23:31:02 +02007
Zesstra953f9972017-02-18 15:37:36 +01008 varargs string QueryArticle(int casus, int dem, int force);
MG Mud User88f12472016-06-24 23:31:02 +02009
MG Mud User88f12472016-06-24 23:31:02 +020010
Zesstra953f9972017-02-18 15:37:36 +010011DEFINIERT IN
12============
MG Mud User88f12472016-06-24 23:31:02 +020013
Zesstra953f9972017-02-18 15:37:36 +010014 /std/thing/language.c
MG Mud User88f12472016-06-24 23:31:02 +020015
MG Mud User88f12472016-06-24 23:31:02 +020016
Zesstra953f9972017-02-18 15:37:36 +010017ARGUMENTE
18=========
MG Mud User88f12472016-06-24 23:31:02 +020019
Zesstra953f9972017-02-18 15:37:36 +010020 casus
21 Der Fall, in dem der Artikel gewuenscht wird.
22 (Konstanten aus /sys/thing/language.h: WER, WEM, WESSEN, WEN.)
MG Mud User88f12472016-06-24 23:31:02 +020023
Zesstra953f9972017-02-18 15:37:36 +010024 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!
MG Mud User88f12472016-06-24 23:31:02 +020029
Zesstra953f9972017-02-18 15:37:36 +010030 force
31 Falls ungleich Null, so wird auf jeden Fall ein Artikel
32 zurueckgegeben, trotz P_ARTICLE == 0.
MG Mud User88f12472016-06-24 23:31:02 +020033
MG Mud User88f12472016-06-24 23:31:02 +020034
Zesstra953f9972017-02-18 15:37:36 +010035BESCHREIBUNG
36============
MG Mud User88f12472016-06-24 23:31:02 +020037
Zesstra953f9972017-02-18 15:37:36 +010038 Diese Funktion gibt einen zum Geschlecht des Objektes passenden Artikel
39 zurueck, der in den passenden Fall dekliniert wird.
MG Mud User88f12472016-06-24 23:31:02 +020040
Zesstra953f9972017-02-18 15:37:36 +010041 Das Herausfinden des passenden Artikels bei 'dem' = 2 bezieht sich auf
42 Situationen, in denen mehrere gleichnamige Objekte im selben Environment
Arathorn613fc5a2019-10-06 21:27:06 +020043 sind. Man 'nimmt' dann z.B. nicht "den Stamm" sondern "einen Stamm".
Zesstra953f9972017-02-18 15:37:36 +010044
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
48
49BEMERKUNGEN
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
64
65RUeCKGABEWERT
66=============
67
68 * gewuenschter Artikel als String plus Leerzeichen (!) ODER
69 * Leerstring
70
71
72BEISPIELE
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
Arathorn613fc5a2019-10-06 21:27:06 +020084 // "X gibt Dir Y. [Er|Sie|Es] prueft [den|die|das] ..."
Zesstra953f9972017-02-18 15:37:36 +010085 // 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 ...
Arathorn613fc5a2019-10-06 21:27:06 +0200101 ob->move(environment(), M_PUT); // vorher machen!
Zesstra953f9972017-02-18 15:37:36 +0100102 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
107
108SIEHE AUCH
109==========
110
111 Aehnlich: SuggestArticle(), query_c_article(), query_g_suffix()
112 Sonstiges: QueryOwn(), QueryDu(),
113 QueryPronoun(), QueryPossPronoun()
114 DeclAdj()
115 name()
MG Mud User88f12472016-06-24 23:31:02 +0200116
1179. Jun 2016, Gloinson