| |
| QueryArticle() |
| ************** |
| |
| |
| FUNKTION |
| ======== |
| |
| varargs string QueryArticle(int casus, int dem, int force); |
| |
| |
| DEFINIERT IN |
| ============ |
| |
| /std/thing/language.c |
| |
| |
| ARGUMENTE |
| ========= |
| |
| casus |
| Der Fall, in dem der Artikel gewuenscht wird. |
| (Konstanten aus /sys/thing/language.h: WER, WEM, WESSEN, WEN.) |
| |
| dem |
| Wird ein bestimmter oder ein unbestimmter Artikel verlangt? |
| + dem = 0: Unbestimmter Artikel! |
| + dem = 1: Bestimmter Artikel! |
| + dem = 2: Finde selbst heraus, welcher Artikel passt! |
| |
| force |
| Falls ungleich Null, so wird auf jeden Fall ein Artikel |
| zurueckgegeben, trotz P_ARTICLE == 0. |
| |
| |
| BESCHREIBUNG |
| ============ |
| |
| Diese Funktion gibt einen zum Geschlecht des Objektes passenden Artikel |
| zurueck, der in den passenden Fall dekliniert wird. |
| |
| Das Herausfinden des passenden Artikels bei 'dem' = 2 bezieht sich auf |
| Situationen, in denen mehrere gleichnamige Objekte im selben Environment |
| sind. Man 'nimmt' dann z.B. nicht "den Stamm" sondern "einen Stamm". |
| |
| Ist P_ARTICLE = 0, so wird ein Leerstring zurueckgegeben, es sei denn, |
| man uebergibt in dem Argument 'force' einen Wert ungleich Null. |
| |
| |
| BEMERKUNGEN |
| =========== |
| |
| Achtung: bei gueltigem Artikel wird ein Leerzeichen angehaengt! |
| |
| Name()/name() nutzen bereits QueryArticle(), wenn P_ARTICLE gesetzt |
| ist. Deshalb muss man sich "Eines Orks" nicht selbst aus dem |
| QueryArticle() und dem Namen zusammenbasteln, wenn mehrere Orks |
| im Raum herumstehen und man eine Nachricht wie: |
| "Du haust den Ork." und folgend |
| "[Des|Eines] Orks Nase schwillt an." |
| haben moechte: |
| "Du haust "+ork->name(WEN, 1)+". " |
| ork->Name(WESSEN, 2)+" Nase schwillt an." |
| |
| |
| RUeCKGABEWERT |
| ============= |
| |
| * gewuenschter Artikel als String plus Leerzeichen (!) ODER |
| * Leerstring |
| |
| |
| BEISPIELE |
| ========= |
| |
| // "X haut Y auf die Nase. [Der|Die|Das] ist nicht beeindruckt." |
| // Man will: |
| // * auf jeden Fall einen Artikel, auch wenn kein P_ARTICLE gesetzt ist |
| // * nur den bestimmten Artikel |
| send_room(this_object(), |
| pl1->Name(WER)+" haut "+pl2->name(WEM)+" auf die Nase. "+ |
| capitalize(pl2->QueryArticle(WER, 1, 1))+"ist nicht beeindruckt.", |
| MT_LOOK|MT_LISTEN, 0, 0, ({pl1, pl2})); |
| |
| // "X gibt Dir Y. [Er|Sie|Es] prueft [den|die|das] ..." |
| // Man will: |
| // * auf jeden Fall einen Artikel, auch wenn kein P_ARTICLE gesetzt ist |
| // * nur den bestimmten Artikel |
| send_room(this_object(), |
| pl1->Name(WER)+" gibt "+pl2->name(WEM)+" "+obj->name(WER)+". "+ |
| capitalize(pl2->QueryPronoun(WER))+" prueft "+ |
| ob->QueryArticle(WEN, 1, 1)+"...", |
| MT_LOOK|MT_LISTEN, 0, 0, ({pl1, pl2})); |
| |
| // "Dir faellt X auf den Kopf. Du siehst [die|den|das|eine|einen|eines " |
| // "auf dem Boden liegen. [Sie|Er|Es] sieht blutig aus. Aua. Ist das " |
| // "von dir?" |
| // Man will: |
| // * auf jeden Fall einen Artikel, auch wenn kein P_ARTICLE gesetzt ist |
| // * bestimmte/unbestimmte Artikel, wenn bereits gleiche Gegenstaende |
| // (zB Kokosnuesse) auf dem Boden liegen ... |
| ob->move(environment(), M_PUT); // vorher machen! |
| pl->ReceiveMsg( |
| "Dir faellt "+ob->name(WER, 0)+" auf den Kopf. Du siehst "+ |
| ob->QueryArticle(WEN, 2, 1)+" auf dem Boden liegen. "+ |
| capitalize(ob->QueryPronoun(WER))+" sieht blutig ... |
| |
| |
| SIEHE AUCH |
| ========== |
| |
| Aehnlich: SuggestArticle(), query_c_article(), query_g_suffix() |
| Sonstiges: QueryOwn(), QueryDu(), |
| QueryPronoun(), QueryPossPronoun() |
| DeclAdj() |
| name() |
| |
| 9. Jun 2016, Gloinson |