1
0
Fork 0
inform6_examination/library-glulx/Russian.h

1159 lines
46 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

! ===========================================================================
!
! RUSSIAN: Language Definition File for Inform 6
!
! Copyright (C) Grankin Andrey 2002, Gayev Denis 2003-2004
! Vsevolod Zubarev 2010-2018
!
! Based on:
! English Release 6/11 Serial number 040227
!
! ---------------------------------------------------------------------------
System_file;
! ---------------------------------------------------------------------------
! Часть I. Введение
! ---------------------------------------------------------------------------
Constant LanguageVersion = "@<<Информ@>>: Русская версия Glulx v0.9.0, 2018-08-09";
!
! Unluckily, there is no conditional operator in Inform.
! So, we'll use this instead:
!
[ IIF c x y; ! (с)? (x) : (y)
if (c) return x;
return y;
];
!
! Компас
!
Class CompassDirection
with number 0,
description [;
if (location provides compass_look && location.compass_look(self)) rtrue;
if (self.compass_look()) rtrue;
L__M(##Look, 7, self);
],
compass_look false,
has scenery male; ! male by default
Object Compass "компас/" has concealed male;
IFNDEF WITHOUT_DIRECTIONS;
CompassDirection -> n_obj "север/"
with name 'n//' 'с//' 'север',
door_dir n_to;
CompassDirection -> s_obj "юг/"
with name 's//' 'ю//' 'юг',
door_dir s_to;
CompassDirection -> e_obj "восток/"
with name 'e//' 'в//' 'восток',
door_dir e_to;
CompassDirection -> w_obj "запад/"
with name 'w//' 'з//' 'запад',
door_dir w_to;
CompassDirection -> ne_obj "северо-восток/"
with name 'ne' 'св' 'северовосток' 'северо-восток',
door_dir ne_to;
CompassDirection -> nw_obj "северо-запад/"
with name 'nw' 'сз' 'северозапад' 'северо-запад',
door_dir nw_to;
CompassDirection -> se_obj "юго-восток/"
with name 'se' 'юв' 'юговосток' 'юго-восток',
door_dir se_to;
CompassDirection -> sw_obj "юго-запад/"
with name 'sw' 'юз' 'югозапад' 'юго-запад',
door_dir sw_to;
CompassDirection -> u_obj "верх/"
with name 'u//' 'вв' 'верх' 'вверх' 'наверх' 'потолок',
door_dir u_to;
CompassDirection -> d_obj "низ/"
with name 'd//' 'вн' 'низ' 'вниз' 'пол' 'земля',
door_dir d_to;
ENDIF;
CompassDirection -> out_obj "выход/"
with name 'выход' 'наружу',
door_dir out_to;
CompassDirection -> in_obj "вход/"
with name 'вход' 'внутрь',
door_dir in_to;
! Языково-специфичная инициализация
[ LanguageInitialise;
give thedark female ~male ~neuter; ! (т.к. "темнота")
];
! ---------------------------------------------------------------------------
! Часть II. Словарь
! ---------------------------------------------------------------------------
Constant AGAIN1__WD = 'g//';
Constant AGAIN2__WD = 'опять';
Constant AGAIN3__WD = 'снова';
Constant OOPS1__WD = 'o//';
Constant OOPS2__WD = 'ой';
Constant OOPS3__WD = 'ох';
Constant UNDO1__WD = 'u//';
Constant UNDO2__WD = 'отмена';
Constant UNDO3__WD = 'откат';
Constant ALL1__WD = 'все';
Constant ALL2__WD = 'всю';
Constant ALL3__WD = 'всех';
Constant ALL4__WD = 'весь';
Constant ALL5__WD = 'оба';
Constant AND1__WD = 'и//';
Constant AND2__WD = 'и//';
Constant AND3__WD = 'плюс';
Constant BUT1__WD = 'кроме';
Constant BUT2__WD = 'без';
Constant BUT3__WD = 'минус';
Constant ME1__WD = 'я//';
Constant ME2__WD = 'меня';
Constant ME3__WD = 'мне';
Constant ME4__WD = 'мной';
Constant ME5__WD = 'себя';
Constant ME6__WD = 'себе';
Constant ME7__WD = 'собой';
Constant OF1__WD = './/';
Constant OF2__WD = './/';
Constant OF3__WD = './/';
Constant OF4__WD = './/';
Constant OTHER1__WD = 'другой'; ! NB: окончания прилагательных!
Constant OTHER2__WD = 'иной';
Constant OTHER3__WD = 'прочий';
Constant THEN1__WD = 'затем';
Constant THEN2__WD = 'потом';
Constant THEN3__WD = 'после';
Constant YES1__WD = 'y//';
Constant YES2__WD = 'д//';
Constant YES3__WD = 'да';
Constant NO1__WD = 'n//';
Constant NO2__WD = 'н//';
Constant NO3__WD = 'нет';
Constant AMUSING__WD = 'интерес';
Constant FULLSCORE1__WD = 'полн';
Constant FULLSCORE2__WD = 'полнсчет';
Constant QUIT1__WD = 'q//';
Constant QUIT2__WD = 'конец';
Constant RESTART__WD = 'начало';
Constant RESTART2__WD = 'перезапуск';
Constant RESTORE__WD = 'загр';
Constant RESTORE2__WD = 'загрузить';
! Местоимения и дескрипторы
Array LanguagePronouns table
! word possible GNAs connected
! to follow: to:
! i
! s p s p
! mfnmfnmfnmfn
'его' $$101000101000 NULL
'ему' $$101000101000 NULL
'им' $$101111101000 NULL
'ее' $$010000010000 NULL
'ей' $$010000010000 NULL
'их' $$000111000111 NULL
'ими' $$000111000111 NULL
'него' $$101000101000 NULL
'нем' $$101000101000 NULL
'ним' $$101000101000 NULL
'нее' $$010000010000 NULL
'ней' $$010000010000 NULL
'них' $$000111000111 NULL
;
Array LanguageDescriptors table
! word possible GNAs descriptor connected
! to follow: type: to:
! i
! s p s p
! mfnmfnmfnmfn
'мой' $$100000100000 POSSESS_PK 0
'мою' $$010000010000 POSSESS_PK 0
'мое' $$001000001000 POSSESS_PK 0
'мои' $$000111000111 POSSESS_PK 0
'моего' $$100000000000 POSSESS_PK 0
'моих' $$000111000000 POSSESS_PK 0
'этот' $$100000100000 POSSESS_PK 0
'эту' $$010000010000 POSSESS_PK 0
'это' $$001000001000 POSSESS_PK 0
'эти' $$000111000111 POSSESS_PK 0
'этого' $$100000000000 POSSESS_PK 0
'этих' $$000111000000 POSSESS_PK 0
'тот' $$100000100000 POSSESS_PK 1
'ту' $$010000010000 POSSESS_PK 1
'то' $$001000001000 POSSESS_PK 1
'те' $$000111000111 POSSESS_PK 1
'того' $$100000000000 POSSESS_PK 1
'тех' $$000111000000 POSSESS_PK 1
'его' $$101000101000 POSSESS_PK 'его'
'ее' $$010000010000 POSSESS_PK 'ее'
'их' $$000111000111 POSSESS_PK 'их'
;
! Числительные
! NB: другие формы (троих, четверых, пятерых)????
Array LanguageNumbers table
'один' 1
'одна' 1
'одно' 1
'два' 2
'две' 2
'три' 3
'четыре' 4
'пять' 5
'шесть' 6
'семь' 7
'восемь' 8
'девять' 9
'десять' 10
'одиннадцать' 11
'двенадцать' 12
'тринадцать' 13
'четырнадцать' 14
'пятнадцать' 15
'шестнадцать' 16
'семнадцать' 17
'восемнадцать' 18
'девятнадцать' 19
'двадцать' 20
;
! ---------------------------------------------------------------------------
! Часть III. Перевод
! ---------------------------------------------------------------------------
[ LanguageToInformese
i;
glk_buffer_to_lower_case_uni(buffer, INPUT_BUFFER_LEN, buffer-->0);
for (i=1: i <= buffer-->0: i++) {
if (buffer-->i == 'ё') {
buffer-->i = 'е';
}
}
];
! ---------------------------------------------------------------------------
! Часть IV. Вывод
! ---------------------------------------------------------------------------
Include "RusMCE";
! "может"/"могут"
[ MorM obj;
if (obj has pluralname) {
print "могут";
} else {
print "может";
}
];
Constant LanguageAnimateGender = male;
Constant LanguageInanimateGender = neuter;
! Артикли.
! Как хорошо, что в русском их нет! :)
Constant LanguageContractionForms = 1;
[ LanguageContraction;
return 0;
];
Array LanguageArticles -->
! Cdef Def Indef
"" "" ""
"" "" "";
! a i
! s p s p
! m f n m f n m f n m f n
Array LanguageGNAsToArticles --> 0 0 0 0 0 0 0 0 0 0 0 0;
! Вывести полное описание для компасного направления
! (как наречие!)
[ LanguageDirection d;
switch (d)
{ n_to: print "на север";
s_to: print "на юг";
e_to: print "на восток";
w_to: print "на запад";
ne_to: print "на северо-восток";
nw_to: print "на северо-запад";
se_to: print "на юго-восток";
sw_to: print "на юго-запад";
u_to: print "вверх";
d_to: print "вниз";
in_to: print "внутрь";
out_to: print "наружу";
default: return RunTimeError(9,d);
}
];
! Вывести полное название произвольного числа
[ LanguageNumber n;
! (ноль)
if (n==0) { print "ноль"; rfalse; }
! (отрицательное)
if (n<0) { print "минус "; n=-n; }
if (n>=1000) { print (LanguageNumber) n/1000, " тысяч";
NEnd (n/1000, 'а//', 'и//', 0);
n=n%1000; if (n ~= 0) print " "; }
if (n==0) rfalse;
switch(n)
{ 1: print "один"; ! NB: одна, одно...
2: print "два"; ! NB: две...
3: print "три";
4: print "четыре";
5: print "пять";
6: print "шесть";
7: print "семь";
8: print "восемь";
9: print "девять";
10: print "десять";
11: print "одиннадцать";
12: print "двенадцать";
13: print "тринадцать";
14: print "четырнадцать";
15: print "пятнадцать";
16: print "шестнадцать";
17: print "семнадцать";
18: print "восемнадцать";
19: print "девятнадцать";
20 to 99:
switch(n/10)
{ 2: print "двадцать";
3: print "тридцать";
4: print "сорок";
5: print "пятьдесят";
6: print "шестьдесят";
7: print "семьдесят";
8: print "восемьдесят";
9: print "девяносто";
}
if (n%10 ~= 0) print " ", (LanguageNumber) n%10;
100 to 999:
switch(n/100)
{ 1: print "сто";
2: print "двести";
3: print "триста";
4: print "четыреста";
5: print "пятьсот";
6: print "шестьсот";
7: print "семьсот";
8: print "восемьсот";
9: print "девятьсот";
}
if (n%100 ~= 0) print " ", (LanguageNumber) n%100;
}
];
! Окончание числительных (согласованное с 'val')
[ NEnd val eI eII eV;
switch (val % 100) {
11 to 19: if (eV) print (address) eV; return;
}
switch (val % 10) {
1: if (eI) print (address) eI;
2 to 4: if (eII) print (address) eII;
default: if (eV) print (address) eV;
}
];
! Время дня
[ LanguageTimeOfDay hours mins i;
i=hours;
if (i<10) print " ";
print i, ":", mins/10, mins%10;
];
#ifdef DEBUG;
[ LanguageVerbIsDebugging w;
return w == 'мета!';
];
#Endif;
[ LanguageVerbLikesAdverb w;
w = w;
rfalse; ! NB ???
];
[ LanguageVerbMayBeName w;
w = w;
rfalse; ! NB ??????
];
Constant NKEY__TX = "N = вниз";
Constant PKEY__TX = "P = вверх";
Constant QKEY1__TX = " Q = возврат";
Constant QKEY2__TX = "Q = возврат";
Constant RKEY__TX = "ENTER = выбор";
Constant NKEY1__KY = 'n';
Constant NKEY2__KY = 'т';
Constant PKEY1__KY = 'p';
Constant PKEY2__KY = 'з';
Constant QKEY1__KY = 'q';
Constant QKEY2__KY = 'й';
Constant SCORE__TX = "Счёт: ";
Constant MOVES__TX = "Ходы: ";
Constant TIME__TX = "Время: ";
Constant CANTGO__TX = "Ты не можешь пойти туда.";
Constant YOURSELF__TX = "ты";
Constant YOU__TX = "Ты";
Constant FORMER__TX = "ты (ранее)";
Constant DARKNESS__TX = "В темноте";
Constant THOSET__TX = "эти объекты";
Constant THAT__TX = "этот объект";
Constant OR__TX = " или ";
Constant NOTHING__TX = "ничего";
Constant IS__TX = " находится";
Constant ARE__TX = " находятся";
Constant IS2__TX = "находится ";
Constant ARE2__TX = "находятся ";
Constant AND__TX = " и ";
Constant WHOM__TX = "кто ";
Constant WHICH__TX = "где ";
Constant COMMA__TX = ", ";
! Cимвольный идентификатор для грамматической категории
[ ocLabel ocID;
switch (ocID) {
ocSM: print "Ед.ч./М.р.";
ocSF: print "Ед.ч./Ж.р.";
ocSN: print "Ед.ч./С.р.";
ocPL: print "Мн.ч.";
};
];
! Cимвольный идентификатор для падежа
[ csLabel csID;
switch (csID) {
csNom: print "И.п."; ! (Именительный Падеж)
csGen: print "Р.п."; ! (Родительный Падеж)
csDat: print "Д.п."; ! (Дательный Падеж)
csAcc: print "В.п."; ! (Винительный Падеж)
csIns: print "Т.п."; ! (Творительный Падеж)
csPre: print "П.п."; ! (Предложный Падеж)
};
];
! - Именительный падеж
[ cNom obj; CCase (obj, csNom, false); ];
! - Родительный падеж
[ cGen obj; CCase (obj, csGen, false); ];
! - Дательный падеж
[ cDat obj; CCase (obj, csDat, false); ];
! - Винительный падеж
[ cAcc obj; CCase (obj, csAcc, false); ];
! - Творительный падеж
[ cIns obj; CCase (obj, csIns, false); ];
! - Предложный падеж
[ cPre obj; CCase (obj, csPre, false); ];
! (то же, но с заглавной буквы)
[ CCNom obj; CCase (obj, csNom, true); ];
[ CCGen obj; CCase (obj, csGen, true); ];
[ CCDat obj; CCase (obj, csDat, true); ];
[ CCAcc obj; CCase (obj, csAcc, true); ];
[ CCIns obj; CCase (obj, csIns, true); ];
[ CCPre obj; CCase (obj, csPre, true); ];
! DeclineSub: принудительно склоняет 'noun' по всем падежам
[ DeclineSub
csID;
print "Объект @<<";
CCase (noun, csOff, false); ! (вне падежа)
print "@>> (";
style bold; ocLabel (objID (noun)); style roman;
print "):^^";
for (csID = csNom: csID <= csPre: ++ csID) {
style bold; csLabel (csID); style roman;
print ": ";
CCase (noun, csID, true);
print "^";
}
];
! Вывести текущий счет
[ PScore val;
print val, " очк";
NEnd (val, 'о//', 'а//', 'ов');
];
! Вывести текущее количество ходов
[ PTurns val;
print val, " ход";
NEnd (val, 0, 'а//', 'ов');
];
[ LanguageLM n x1;
Prompt: print "^>";
Miscellany:
switch (n)
{ 1: "(ограничиваясь первыми 16 объектами)^";
2: "Но делать ничего не надо!";
3: print " Вы проиграли ";
4: print " Вы выиграли ";
5: print "^Вы хотите вернуться в НАЧАЛО игры, ЗАГРузить сохранённую игру";
#IFDEF DEATH_MENTION_UNDO;
print ", сделать ОТКАТ последнего хода, ";
#ENDIF;
if (TASKS_PROVIDED==0)
print ", получить полный СЧЁТ по игре";
if (deadflag==2 && AMUSING_PROVIDED==0)
print ", получить некоторые ИНТЕРЕСные подсказки";
" или закончить (КОНЕЦ) игру?";
6: "[Интерпретатор не поддерживает отмену хода.]";
7: "[Отменить ход не удалось.]";
8: "Нужен один из перечисленных ответов.";
9: "^Теперь здесь непроглядная тьма!";
10: "Простите?";
11: "[Нельзя отменить то, что не сделано!]";
12: "[Нельзя отменить два хода подряд!]";
13: "[Предыдущий ход отменён.]";
14: "Это невозможно исправить.";
15: "Исправить это нельзя.";
16: "Команда @<<ой@>> исправляет только одно слово.";
17: "Кромешная тьма — не видно ни зги!";
18: print "ты";
19: "Ты выглядишь как обычно.";
20: "Чтобы повторить команду @<<жаба, прыг@>>,
введите @<<опять@>> (но не @<<жаба, опять@>>).";
21: "Это вряд ли можно повторить.";
22: "Команда не может начинаться с запятой.";
23: "Непонятно, к кому ты обращаешься.";
24: "Бессмысленно говорить с ", (cIns) x1, ".";
25: "Чтобы обратиться к собеседнику,
введите @<<собеседник, привет@>>.";
26: print "(сначала взяв ";
if(not_holding == player) "себя)";
print (cAcc) not_holding; ")";
27: "Эта команда непонятна.";
28: print "Из команды понятно только: ";
29: "Это число непонятно.";
30: "Этого предмета здесь нет.";
31: "Похоже, надо сказать что-то ещё!";
32: "Этого предмета у тебя нет.";
33: "С этим действием не допускается много объектов.";
34: "Множественные объекты допустимы только один раз.";
35: "Непонятно, к чему относится @<<", (address) pronoun_word, "@>>.";
36: "Вы исключили нечто не включённое!";
37: "Действие применимо только к одушевлённым объектам.";
38: "Этот глагол непонятен.";
39: "Упоминать это в игре нет необходимости.";
40: "В данный момент отсутствует @<<",
(address) pronoun_word, "@>> (", (cNom) pronoun_obj, ").";
41: "Конец команды непонятен.";
42: if (x1==0) print "Ни одного из них нет";
else print "Только ", (number) x1, " из них есть";
" в наличии.";
43: "Действий нет!";
44: "Нет совсем ничего подходящего.";
45: print "Что имеется в виду: ";
46: print "Что имеется в виду: ";
47: "Но здесь доступен только один предмет. Какой именно?";
48: print "К кому вы хотите";
if (actor~=player) {
print ", чтобы ", (cNom) actor, " применил", (VPEnd) actor;
} else {
print " применить";
}
print " команду @<<"; PrintCommand(); print "@>>?^";
49: print "К чему вы хотите";
if (actor~=player) {
print ", чтобы ", (cNom) actor, " применил", (VPEnd) actor;
} else {
print " применить";
}
print " команду @<<"; PrintCommand(); print "@>>?^";
50: print "Ваш счёт ";
if (x1 > 0) print "увеличился";
else { x1 = -x1; print "уменьшился"; }
print " на ", (PScore) x1;
51: "(Произошло что-то, что укоротило ваш список команд.)";
52: "^Введите число от 1 до ", x1,
", 0 для перевывода или нажмите ENTER.";
53: "^[Нажмите ПРОБЕЛ.]";
54: "[Комментарий записан.]";
55: "[Комментарий не записан.]";
56: print ".^";
57: print "?^";
}
ListMiscellany:
switch(n)
{ 1: print " (свет", (V2bEnd) x1, ")";
2: print " (закрыт", (SAEnd) x1, ")";
3: print " (свет", (V2bEnd) x1, " и закрыт", (SAEnd) x1, ")";
4: print " (пуст", (SAEnd) x1, ")";
5: print " (свет", (V2bEnd) x1, " и пуст", (SAEnd) x1, ")";
6: print " (закрыт", (SAEnd) x1, " и пуст", (SAEnd) x1, ")";
7: print " (свет", (V2bEnd) x1, ", закрыт", (SAEnd) x1, " и пуст", (SAEnd) x1, ")";
8: print " (свет", (V2bEnd) x1, " и надет", (SAEnd) x1;
9: print " (свет", (V2bEnd) x1;
10: print " (надет", (SAEnd) x1;
11: print " (";
12: print "открыт", (SAEnd) x1;
13: print "открыт", (SAEnd) x1, " и пуст", (SAEnd) x1;
14: print "закрыт", (SAEnd) x1;
15: print "закрыт", (SAEnd) x1, " и заперт", (SAEnd) x1;
16: print " и пуст", (SAEnd) x1;
17: print " (пуст", (SAEnd) x1, ")";
18: print " содерж", (V2aEnd) x1, " ";
19: print " (на ";
20: print ", над ";
21: print " (";
22: print ", внутри ";
}
Pronouns: switch(n)
{ 1: print "В данный момент: ";
2: print "означает ";
3: print "отсутствует";
4: "местоимения не определены.";
5: ".";
}
Order: print_ret (CCNom) x1, " явно не собира", (V1bEnd) x1, "ся тебя слушать.";
Quit: switch (n)
{ 1: print "Ответьте @<<да@>> или @<<нет@>>.";
2: print "Вы хотите покинуть игру? ";
}
Restart: switch(n)
{ 1: print "Вы хотите перезапустить игру? ";
2: "Перезапустить игру не удалось.";
}
Restore: switch(n)
{ 1: "Восстановить игру не удалось.";
2: "Игра восстановлена.";
}
Save: switch(n)
{ 1: "Сохранить игру не удалось.";
2: "Игра сохранена.";
}
Verify: switch(n)
{ 1: "Файл игры проверен успешно.";
2: "Файл игры не прошёл проверку и может быть повреждён.";
}
ScriptOn: switch(n)
{ 1: "Режим транскрипта уже включён.";
2: "Включение транскрипта:";
3: "Включить транскрипт не удалось.";
}
ScriptOff: switch(n)
{ 1: "Режим транскрипта уже выключен.";
2: "^Выключение транскрипта.";
3: "Выключить транскрипт не удалось.";
}
NotifyOn: "Извещения о счёте включены.";
NotifyOff: "Извещения о счёте выключены.";
Places: switch (n) {
1: print "Посещённые места: ";
2: print ".^";
}
Objects: switch(n)
{ 1: "Найденные предметы:^";
2: "отсутствуют.";
3: print " (на себе)";
4: print " (у тебя)";
5: print " (у кого-то ещё)";
6: print " (в @<<", (cNom) x1, "@>>)";
7: print "", (cPre) x1, ")";
8: print " (внутри ", (cGen) x1, ")";
9: print " (на ", (cPre) x1, ")";
10: print " (нигде нет)";
}
Score: switch (n) {
1: print (string) IIF (deadflag, "В эту попытку", "К этому моменту"),
" вы набрали ", (PScore) score,
" (из ", MAX_SCORE, " возможных) за ", (PTurns) turns;
2: "В этой игре счёт не предусмотрен.";
}
FullScore: switch(n)
{ 1: "Полный счёт состо", (string) IIF (deadflag, "ял", "ит"), " из:^";
2: "за найденные предметы";
3: "за посещённые места";
4: "всего (из ", MAX_SCORE, " возможных)";
}
Inv: switch(n)
{ 1: "У тебя с собой ничего нет.";
2: print "У тебя с собой есть";
3: print ":^";
4: print ".^";
}
Take: switch(n)
{ 1: print "Ты берёшь ", (cAcc) noun ;
!if (noun has female) print "её";
!else if (noun has pluralname) print "их";
!else print "его";
".";
2: "Ты всегда есть у себя.";
3: print_ret (CCDat) x1, " это вряд ли понравится.";
4: "Сначала тебе необходимо покинуть ", (cAcc) x1, ".";
5: print_ret (CCNom) x1, " у тебя уже есть.";
6: print_ret (CCNom) noun, " явно принадлеж", (V2aEnd) noun, " ",
(cDat) x1, ".";
7: print_ret (CCNom) noun, " явно явля", (V1bEnd) noun, "ся частью ",
(cGen) x1, ".";
8: print_ret (CCNom) x1, " недосягаем", (SAEnd) x1, ".";
9: print_ret (CCNom) x1, " закрыт", (SAEnd) x1, ".";
10: print_ret (CCAcc) x1, " невозможно взять.";
11: print_ret (CCNom) x1, " жёстко закреплен", (SAEnd) x1, ".";
12: "У тебя с собой слишком много вещей.";
13: "(укладывая ", (cAcc) x1, " внутрь ", (cGen) SACK_OBJECT,
", чтобы освободить место)";
}
Drop: switch(n)
{ 1: print_ret "У тебя нет ", (cGen) x1, ".";
2: print_ret (CCNom) x1, " не у тебя.";
3: "(сначала сняв ", (cAcc) x1, " с себя)";
4: print_ret "Брошен", (SAEnd) x1, ".";
}
Remove: switch(n)
{ 1: print_ret (CCNom) x1, " закрыт", (SAEnd) x1, ".";
2: print_ret (CCNom) x1, " не наход", (V2bEnd) x1, "ся ",
(string) IIF (second has supporter, "на ", "в "), (cPre) second, ".";
3: print_ret (CCNom) x1, (string) IIF (second has supporter, " поднят", " извлечен"), (SAEnd) x1,
(string) IIF (second has supporter, " c ", " из "), (cGen) second, ".";
}
PutOn: switch(n)
{ 1: "Сначала тебе нужно взять ", (cAcc) x1, " в руки.";
2: "Невозможно положить что-либо на себя.";
3: "Класть что-либо на ", (cAcc) x1, " бессмысленно.";
4: "У тебя не хватит ловкости.";
5: "(сначала сняв ", (cAcc) x1, " с себя)^";
6: "Больше нет места на ", (cPre) x1, ".";
7: "Ты кладёшь всё на ", (cAcc) second, ".";
8: "Ты кладёшь ", (cAcc) x1, " на ", (cAcc) second, ".";
}
Insert: switch(n)
{ 1: "Сначала тебе нужно взять ", (cAcc) x1, " в руки.";
2: print_ret (CCNom) x1, " не ", (MorM) x1, " что-либо содержать.";
3: print_ret (CCNom) x1, " закрыт", (SAEnd) x1, ".";
4: "Сперва тебе нужно снять ", (cAcc) x1, " с себя.";
5: "Невозможно вложить что-либо внутрь себя.";
6: "(сначала сняв ", (cAcc) x1, " с себя)^";
7: "Больше нет места в ", (cPre) x1, ".";
8: "Ты кладёшь всё в ", (cAcc) second, ".";
9: "Ты кладёшь ", (cAcc) x1, " в ", (cAcc) second, ".";
}
EmptyT: switch(n)
{ 1: print_ret (CCNom) x1, " не ", (MorM) x1, " что-либо содержать.";
2: print_ret (CCNom) x1, " закрыт", (SAEnd) x1, ".";
3: print_ret (CCNom) x1, " уже пуст", (SAEnd) x1, ".";
4: "То есть оставить все как есть?";
}
Give: switch(n)
{ 1: "У тебя нет ", (cGen) x1, " с собой.";
2: print_ret (CCNom) x1, " и так у тебя есть.";
3: print_ret (CCAcc) x1, " это не заинтересовало.";
}
Show: switch(n)
{ 1: "У тебя нет ", (cGen) x1, " с собой.";
2: print_ret (CCAcc) x1, " это не впечатлило.";
}
Enter: switch(n)
{ 1: "Но ты уже ", (string) IIF (x1 has supporter, "на ", "в "),
(cPre) x1, ".";
2: "Но на/в ", (cAcc) x1,
" невозможно войти, встать, сесть или лечь.";
3: print_ret (CCNom) x1, " закрыт", (SAEnd) x1,
", и ты не можешь войти туда.";
4: "Ты не можешь войти в то, что у тебя в руках.";
5: "Ты ", (string) IIF (x1 has supporter, "влезаешь на ", "залезаешь в "),
(cAcc) x1, ".";
6: "(", (string) IIF (x1 has supporter, "слезая с ",
IIF (x1 has container, "вылезая из ", "выходя из ")),
(cGen) x1, ")^";
7: "(", (string) IIF (x1 has supporter, "залезая на ",
IIF (x1 has container, "влезая в ", "входя в ")),
(cAcc) x1, ")^";
}
GetOff: "Но ты не находишься ", (string) IIF (x1 has supporter, "на ", "в "), (cPre) x1, ".";
Exit: switch(n)
{ 1: "Но ты сейчас не находишься в/на чём-либо.";
2: print_ret (CCNom) x1, " закрыт", (SAEnd) x1,
", и ты не можешь выйти.";
3: "Ты ", (string) IIF (x1 has supporter, "слезаешь с ", "выходишь из "),
(cGen) x1, ".";
4: "Но ты сейчас не ", (string) IIF (x1 has supporter, "на ", "в "),
(cPre) x1, ".";
}
VagueGo: "Идти можно только в некотором направлении.";
Go: switch(n)
{ 1: "Сперва тебе нужно ",
(string) IIF (x1 has supporter, "встать с ", "выйти из "),
(cGen) x1, ".";
2: "Этот путь недоступен.";
3: "Ты не можешь подняться по ", (cDat) x1, ".";
4: "Ты не можешь спуститься по ", (cDat) x1, ".";
5: print_ret (CCNom) x1, " меша", (V1bEnd) x1, " тебе пройти.";
6: print_ret (CCNom) x1, " никуда не вед", (V1aEnd) x1, ".";
}
LMode1: " сейчас в @<<нормальном@>> режиме^
(длинные описания для новых мест, краткие для старых).";
LMode2: " сейчас в @<<длинном@>> режиме^(всегда длинные описания мест).";
LMode3: " сейчас в @<<кратком@>> режиме^(всегда краткие описания мест).";
Look: switch(n)
{ 1: print " (на ", (cPre) x1, ")";
2: print "", (cPre) x1, ")";
3: print " (как ";
CCase(x1, csNom, false, true);
print ")";
4: print "^На ", (cPre) x1;
WriteListFromCase (child(x1),
ENGLISH_BIT + RECURSE_BIT + PARTINV_BIT
+ TERSE_BIT + ISARE_BIT + CONCEAL_BIT, csNom);
".";
5, 6:
if (x1~=location)
print (string) IIF (x1 has supporter, "^На ", "^В "), (cPre) x1;
else print "^Здесь";
if (n==5) print " также";
WriteListFromCase (child(x1),
ENGLISH_BIT + WORKFLAG_BIT + RECURSE_BIT + ISARE_BIT
+ PARTINV_BIT + TERSE_BIT + CONCEAL_BIT, csNom);
".";
7: "В этом направлении не видно ничего примечательного.";
}
Examine: switch(n)
{ 1: "ТЕМНОТА (сущ., ж.р.): полное отсутствие света.";
2: "Ничего особенного в ", (cPre) x1, " ты не видишь.";
3: print_ret (CCNom) x1, " сейчас ",
(string) IIF (x1 has on, "в", "вы"), "ключен", (SAEnd) x1, ".";
}
LookUnder: switch(n)
{ 1: "Здесь слишком темно для поисков.";
2: "Ты не находишь под ", (cIns) noun, " ничего интересного.";
}
Search: switch(n)
{ 1: "Здесь слишком темно для поисков.";
2: "На ", (cPre) x1, " ничего нет.";
3: print "На ", (cPre) x1;
WriteListFromCase (child(x1),
TERSE_BIT + ENGLISH_BIT + ISARE_BIT + CONCEAL_BIT, csNom);
".";
4: "Ты не находишь в ", (cPre) noun, " ничего интересного.";
5: print_ret (CCNom) x1, " закрыт", (SAEnd) x1,
", и ты не можешь заглянуть внутрь.";
6: "В ", (cPre) x1, " ничего нет.";
7: print "В ", (cPre) x1;
WriteListFromCase (child(x1),
TERSE_BIT + ENGLISH_BIT + ISARE_BIT + CONCEAL_BIT, csNom);
".";
}
Lock: switch(n)
{ 1: print_ret (CCAcc) x1, " невозможно запереть.";
2: print_ret (CCNom) x1, " уже заперт", (SAEnd) x1, ".";
3: "Сначала необходимо закрыть ", (cAcc) x1, ".";
4: print_ret (CCNom) x1, " не подход", (V2bEnd) x1, " к замку.";
5: "Ты запираешь ", (cAcc) x1, ".";
}
Unlock: switch(n)
{ 1: print_ret (CCAcc) x1, " невозможно отпереть.";
2: print_ret (CCNom) x1, " не заперт", (SAEnd) x1, ".";
3: print_ret (CCNom) x1, " не подход", (V2bEnd) x1, " к замку.";
4: "Ты отпираешь ", (cAcc) x1, ".";
}
SwitchOn: switch(n)
{ 1: print_ret (CCAcc) x1, " невозможно включить.";
2: print_ret (CCNom) x1, " уже включён", (SAEnd) x1, ".";
3: "Ты включаешь ", (cAcc) x1, ".";
}
SwitchOff: switch(n)
{ 1: print_ret (CCAcc) x1, " невозможно выключить.";
2: print_ret (CCNom) x1, " уже выключен", (SAEnd) x1, ".";
3: "Ты выключаешь ", (cAcc) x1, ".";
}
Open: switch(n)
{ 1: print_ret (CCAcc) x1, " невозможно открыть.";
2: "Похоже, что ", (cNom) x1, " заперт", (SAEnd) x1, ".";
3: print_ret (CCNom) x1, " уже открыт", (SAEnd) x1, ".";
4: print "Ты открываешь ", (cAcc) x1, ". Внутри";
if (WriteListFromCase (child(x1),
ISARE_BIT+ ENGLISH_BIT + TERSE_BIT + CONCEAL_BIT, csNom) == 0)
"... пустота.";
".";
5: "Ты открываешь ", (cAcc) x1, ".";
}
Close: switch(n)
{ 1: print_ret (CCAcc) x1, " невозможно закрыть.";
2: print_ret (CCNom) x1, " уже закрыт", (SAEnd) x1, ".";
3: "Ты закрываешь ", (cAcc) x1, ".";
}
Wear: switch(n)
{ 1: "Надеть ", (cAcc) x1, " на себя невозможно.";
2: "У тебя нет ", (cGen) x1, " с собой.";
3: print_ret (CCNom) x1, " уже на тебе.";
4: "Ты надеваешь ", (cAcc) x1, " на себя.";
}
Disrobe: switch(n)
{ 1: print_ret (CCNom) x1, " не на тебе.";
2: "Ты снимаешь ", (cAcc) x1, " с себя.";
}
Eat: switch(n)
{ 1: print_ret (CCNom) x1, " явно не год", (V2bEnd) x1, "ся в пищу.";
2: "Ты съедаешь ", (cAcc) x1, ". Вполне съедобно.";
}
Yes, No: "Вопрос был риторическим.";
Burn: print "Поджигать ", (cAcc) x1;
if (second ~= 0) print " ", (cIns) second;
" бессмысленно.";
Pray: "То ли Бога нет, то ли Он не услышал твои молитвы.";
Wake: "Поверь, это не сон, а явь.";
WakeOther: "Будить ", (cAcc) x1, " не стоит.";
Kiss: "Будет лучше сосредоточиться на игре.";
Think: "Отличная идея.";
Smell: "Никакого необычного запаха нет.";
Listen: "Никаких необычных звуков нет.";
Taste: "Никакого необычного вкуса нет.";
Touch: switch(n)
{ 1: "Не стоит давать волю рукам.";
2: "Никаких необычных ощущений нет.";
3: "Если тебе очень хочется.";
}
Dig:
if (noun == 0) {
"Копать здесь бессмысленно.";
}
print "Копать ", (cAcc) x1;
if (second ~= 0) print " ", (cIns) second;
" бессмысленно.";
Cut: "Резать ", (cAcc) x1, " бессмысленно.";
Jump: "Ты глупо подпрыгиваешь на месте.";
JumpOver: "Прыгать через ", (cAcc) x1, " бессмысленно.";
Tie: print "Привязывать ", (cAcc) x1;
if (second ~= 0) print " к ", (cDat) second;
" бессмысленно.";
Drink: "Выпить ", (cAcc) x1, " невозможно.";
Fill: "Наполнять ", (cAcc) x1, " бессмысленно.";
Sorry: "О, не нужно извинений.";
Strong: "Настоящие квестеры так не выражаются.";
Mild: "Точно.";
Attack: "Сила есть — ума не надо?";
Swim: "Для этого здесь недостаточно воды.";
Swing: "Качать ", (cAcc) x1, " бессмысленно.";
Blow: "Дуть в ", (cAcc) x1, " бессмысленно.";
Rub: "Тереть ", (cAcc) x1, " бессмысленно.";
Set: "Невозможно установить ", (cAcc) x1, ".";
SetTo: "Невозможно установить ", (cAcc) x1, " на что-либо.";
WaveHands: "Ты глупо машешь руками.";
Wave: switch(n)
{ 1: "Сперва надо взять ", (cAcc) x1, ".";
2: "Ты глупо машешь ", (cIns) x1, ".";
}
Pull, Push, Turn:
switch(n)
{ 1: print_ret (CCAcc) x1, " трудно сдвинуть с места.";
2: print_ret (CCAcc) x1, " двигать невозможно.";
3: "Ничего не произошло.";
4: print_ret (CCDat) x1, " это вряд ли понравится.";
}
PushDir: switch(n)
{ 1: "Передвигать это нет смысла.";
2: "Двигать можно только в определённом направлении.";
3: "Двигать в этом направлении невозможно.";
}
Squeeze: switch(n)
{ 1: "Не стоит давать волю рукам.";
2: "Сжимать ", (cAcc) x1, " бессмысленно.";
}
ThrowAt: switch(n)
{ 1: "Бросать ", (cAcc) noun, " в ", (cAcc) second, " бесполезно.";
2: "У тебя не хватает решимости бросить ", (cAcc) noun, " в ", (cAcc) second,
".";
}
Tell: switch(n)
{ 1: "Беседы с собой — занятие нездоровое.";
2:
if (noun has female) {
"Твоя собеседница никак не отреагировала.";
}
"Твой собеседник никак не отреагировал.";
}
Answer, Ask: "Ответа не последовало.";
Buy: print_ret (CCNom) x1, " не прода", (V1bEnd) x1, "ся.";
Sing: "С твоим слухом и голосом этого лучше не делать.";
Climb: "Забираться на ", (cAcc) x1, " бессмысленно.";
Wait: "Проходит немного времени.";
Sleep: "Сейчас тебя не клонит ко сну.";
Consult: "Ты не находишь в ", (cPre) x1, " ничего подходящего.";
CommandsOff: switch (n) {
1: "[Запись команд выключена.]";
#Ifdef TARGET_GLULX;
2: "[Запись команд уже выключена.]";
#Endif; ! TARGET_
}
CommandsOn: switch (n) {
1: "[Запись команд включена.]";
#Ifdef TARGET_GLULX;
2: "[Воспроизведение записи.]";
3: "[Запись команд уже включена.]";
4: "[Запись команд невозможна!]";
#Endif; ! TARGET_
}
CommandsRead: switch (n) {
1: "[Воспроизведение записи.]";
#Ifdef TARGET_GLULX;
2: "[Воспроизведение уже включено.]";
3: "[Воспроизведение невозможно. Включена запись.]";
4: "[Воспроизведение невозможно.]";
5: "[Возпроизведение закончено.]";
#Endif; ! TARGET_
}
];
! ==============================================================================
Constant LIBRARY_RUSSIAN;
! ==============================================================================