Popis předmětů

Po identifikátoru spade a třídě Thing následují vlastnosti vocabWords (robustní lopata) a name (lopata). Za nimy je nastavení vlastnosti gender (*3). Na konci definice objektu jsou zadány další pády pro název objektu gcName a pro slovník parseru gcVocab.

spade: Thing 'robustní lopata' 'lopata' *3
    "Je to robustní lopata s širokou železnou čepelí a dřevěnou násadou. "  

    iobjFor(DigWith)
    {
        verify() {}
        check() {}
    }   
    
    gcName = 'lopaty, lopatě, lopatu, lopatě, lopatou'
    gcVocab = 'lopaty/lopatě/lopatu/lopato/lopatou'
;

Mluvnický rod

Vlastnost gender

Určuje mluvnický rod objektu. V původní anglické knihovně k tomu sloužily vlastnosti isHim a isHer a jimy se určoval rod u živých objektů. Všechny neživé v angličtině jsou prostě a jednoduše "it". V češtině jsou rody rozděleny i neživým objektům a tak se musejí nastavovat skoro všem objektům. Proto je v české knihovně nová vlastnost gender s číselně zakódovaným významem.

A aby bylo nastavení rodu ještě stručnější, jsou upravené šablony pro zadávání objektů tak, že číselně zakódovaný rod se u nich dá nastavit pomocí hvězdičky a čísla umístěné mezi název objektu a jeho popisek, jak je naznačeno v příkladu výše. Zadáním *3 u definice lopaty říkáme, že lopata je rodu ženského.

gendermluvnický rod
1mužský životný
2mužský neživotný
3ženský
4střední

Různé rody synonym pro jeden objekt

Za ohlášení problému děkuji Tekketovi

Zajímavá zapeklitost češtiny je, že objekt má často synonyma v jiném rodu, než je definován. To se v tuto chvíli projeví ve zprávě u některých akcí. […] Praktický příklad výše zmíněného (objekt lze referovat jako chata/dům/budova - a klidně by se dalo třeba stavení:)

>udeř dům
Na ni nemůžeš zaútočit.

K tomuto účelu je k dispozici vlastnost changeGender, pomocí níž se zadá podřetězec, který když je obsažen v zadaném slově, tak se změní výchozí rod objektu na uvedený:

+ Enterable -> (outsideCottage.in) 'hezká hezký malá malý chata/dům/budova' 'hezká malá chata' *3
    "Je to přesně ten typ hezké malé chaty, o které si lidé z města nechávají zdát. Kolem
    dveří rostou růže a světlo do chaty vniká oknem, s čerstvě natřeným rámem na zeleno. "
    
    changeGender = 'dům:2, dom:2' // dům na rozdíl od chaty a budovy je rod mužský

    gcName = 'hezké malé chaty, hezké malé chatě, hezkou malou chatu, hezké malé
        chatě, hezkou malou chatou'
    gcVocab = 'hezkému hezkém hezkým malé malou malého malému malém malým chaty/
        chatě/chatu/chato/chatou/domu/dome/domem/budovy/budově/budovu/budovo/
        budovou'
;

Název objektu

Vlastnost name

Pojmenovává objekt v prvním pádu. Další pády se zadávají vlastnostmi nameKohoCeho, nameKomuCemu, nameKohoCo, nameKomCem a nameKymCim. Všechny tyto vlastnosti do zdrojového kódu přidá podle prvního pádu automatický generátor.

Vlastnost vocabWords

Představuje slovník, na který hra reaguje, když čte vstup od hráče. Inicializace vocabWords funguje stejně, jako v angličtině. Autor by měl zadat tvar v prvním pádě a ostatní pády se doplní níže pomocí vlastnosti gcVocab.

Skloňování

V angličtině se zadává jen jeden název objektu a místo skloňování se upravuje stavba věty. Čeština oproti tomu má sedm pádů a v různých situacích jsou potřeba ve větách názvy objektů v různý pádech. Mnoho českých textových her na to hřeší a zjednodušuje si situaci tím, že používá čtvrtý pád ve výstupu ("Sebral jsi lopatu") i očekává na vstupu (">prozkoumej lopatu").

V TADS takovéto kompromisy dělat nejde, i kdybychom chtěli. Knihovní hlášky jsou tak variabilní, že formulovat je všechny v jediném pádu vůbec nejde. Proto je u každého objektu nutné vyjmenovat všechny pády pro název objektu i pro slovník parseru.

Ve vzdálenější budoucnosti by mohl vzniknout nějaký nástroj, který se skloňováním pomůže. S něčím experimentuji, ale k robustnímu řešení to má zatím hodně daleko.

Vlastnost gcName

Definuje skloňování názvu objektu. Je tak doplňkovou vlastností k vlastnosti name. Zatímco do name se zadáná jen první pád, do gcName zadáme druhý, třetí, čtvrtý, šestý a sedmý pád oddělené čárkou.

Vlastnost gcVocab

Definuje ostatní pády pro slovník parseru. Formát zadávání je zcela shodný s vlastností vocabWords, prostě se do něj zadají ostatní pády kromě prvního.