diff --git a/TRANSLATION b/TRANSLATION --- a/TRANSLATION +++ b/TRANSLATION @@ -1,15 +1,25 @@ En. Instructions for Translators +Copy the language file from which you are going to translate, name it with the target language code. +Add the language code and it's name into "locale.lua" to "lang_list" variable. + 1. Curly braces ({}) are used to denote clickable text. There are two variants of usage {text} and {tag|text}, in the first case, just translate the text within the braces; in the second case, please keep the part before "|" character as is. I recommend putting articles inside the braces if they are not separated from the noun by other words. Important: If important links are removed or tags are misspelled, the game will break, so please check after translating. 2. Variables are marked by "%" character on both sides. Put them to the place accordingly to the language rules, but pay attention to the comments. Sometimes they pass text in specific case, so you may need to mind word ordering. 3. Names of objects and locations should be written as titles (follow your language rules, ex. Title Case in English) (these keys are usually named *_disp). 4. "^" character denotes line break. Usually should be kept at the same place in the translation. You may want to split lines in terminal_locale to be no longer than 63 characters. 5. Keys, ending in "disp2" are always in nominative case and are lower-case, "disp3" -- accusative case, lower-case. If an article is needed, keep it as part of the translation. +After the translation is complete, send it to us in any reasonable way (for example, use inbox@silverwing.one email). Take note that we may not be able to properly check the translation, but we will check that the game works with it before releasing it. + Ru. Инструкции для переводчиков +Скопируйте файл языка, с которого вы планируете переводить игру, назовите его кодом целевого языка. +Добавьте код и название языка в "locale.lua" в переменную "lang_list". + 1. Фигурные скобки ({}) используются для обозначения активного текста. Есть два варианта их использования: {текст} и {tag|текст}, в первом случае просто переведите фрагмент текста внутри скобок; во-втором, часть до символа "|" следует оставить как есть. Артикли рекомендуется оставлять внутри скобок, если они не отделены об существительного другими словами. Важно! При отсутствии необходимых ссылок или неправильных тегах, игра может стать неработоспособной, поэтому проверяйте игру после перевода. 2. Знаками "%" выделены переменные. Вставляйте их на подходящее место с учетом правил языка, однако учтите дополнительные комментарии -- возможно вам придется построить предложение определенным образом. 3. Названия объектов и локаций следует записывать как заголовки (следуйте правилам языка, например Title Case на английском) (обычно эти ключи названы *_disp). 4. Символ ^ используется для указания переноса строки. Как правило, вам следует оставлять его на том же месте в переводе. Вам потребуется разделять строки в terminal_locale чтобы они были не длиннее 63 символов. -5. Ключи, оканчивающиеся на "disp2" всегда именительный падеж, нижний регистр, "disp3" -- винительный падеж, нижний регистр. Если со словом должен использовать артикль -- добавьте его в перевод. +5. Ключи, оканчивающиеся на "disp2" всегда именительный падеж, нижний регистр, "disp3" -- винительный падеж, нижний регистр. Если со словом должен использоваться артикль -- добавьте его в перевод. + +После завершения перевода отправьте его нам любым удобным способом (например используйте почту inbox@silverwing.one). Обратите внимание, что мы можем не иметь возможности подтвердить качество перевода, но перед выпуском, мы убедимся что игра работает с ним. diff --git a/computer_parts.lua b/computer_parts.lua --- a/computer_parts.lua +++ b/computer_parts.lua @@ -10,12 +10,12 @@ function motherboard(cpu, ram, slots, st slots = slots; ptype = 'motherboard'; part = true; - disp = translate(parts_locale, 'motherboard_title', {model=name}); + disp = translate("parts_locale", 'motherboard_title', {model=name}); dsc = function(s) - return '{' .. translate_now(parts_locale, 'motherboard_title', {model=name}) .. '}^' + return '{' .. translate_now("parts_locale", 'motherboard_title', {model=name}) .. '}^' end; - inv = translate(parts_locale, 'motherboard_inv_from_' .. src, {model=name}); - tak = translate(parts_locale, 'motherboard_tak', {model=name}); + inv = translate("parts_locale", 'motherboard_inv_from_' .. src, {model=name}); + tak = translate("parts_locale", 'motherboard_tak', {model=name}); }; end; @@ -40,16 +40,16 @@ function cpu(slot, speed, status, src, n status = status; name = name; slot = slot; - disp = translate(parts_locale, 'cpu_title', {model=name}); + disp = translate("parts_locale", 'cpu_title', {model=name}); speed = speed; status = status; ptype = 'cpu'; part = true; dsc = function(s) - return '{' .. translate_now(parts_locale, 'cpu_title', {model=name}) .. '}^' + return '{' .. translate_now("parts_locale", 'cpu_title', {model=name}) .. '}^' end; - inv = translate(parts_locale, 'cpu_inv_from_' .. src, {model=name}); - tak = translate(parts_locale, 'cpu_tak', {model=name}); + inv = translate("parts_locale", 'cpu_inv_from_' .. src, {model=name}); + tak = translate("parts_locale", 'cpu_tak', {model=name}); }; end; @@ -71,15 +71,15 @@ function ram(slot, size, status, dsc, na name = name; slot = slot; ptype = 'ram'; - disp = translate(parts_locale, 'ram_title', {model=name}); + disp = translate("parts_locale", 'ram_title', {model=name}); status = status; size = size; part = true; dsc = function(s) - return '{' .. translate_now(parts_locale, 'ram_title', {model=name}) .. '}^' + return '{' .. translate_now("parts_locale", 'ram_title', {model=name}) .. '}^' end; - inv = translate(parts_locale, 'ram_inv_from_' .. dsc, {model=name}); - tak = translate(parts_locale, 'ram_tak', {model=name}); + inv = translate("parts_locale", 'ram_inv_from_' .. dsc, {model=name}); + tak = translate("parts_locale", 'ram_tak', {model=name}); }; end; @@ -123,12 +123,12 @@ obj { slot = 'ISB'; part = true; visual = 1; - disp = translate(parts_locale, 'videocard_title', {model='TVA-RX1'}); + disp = translate("parts_locale", 'videocard_title', {model='TVA-RX1'}); dsc = function(s) - return '{' .. translate_now(parts_locale, 'videocard_title', {model='TVA-RX1'}) .. '}^'; + return '{' .. translate_now("parts_locale", 'videocard_title', {model='TVA-RX1'}) .. '}^'; end; - inv = translate(parts_locale, 'videocard_inv_from_computer', {model='TVA-RX1'}); - tak = translate(parts_locale, 'videocard_tak', {model='TVA-RX1'}); + inv = translate("parts_locale", 'videocard_inv_from_computer', {model='TVA-RX1'}); + tak = translate("parts_locale", 'videocard_tak', {model='TVA-RX1'}); } obj { @@ -139,12 +139,12 @@ obj { slot = 'ISB'; part = true; visual = 1; - disp = translate(parts_locale, 'videocard_title', {model='TVA-RX2'}); + disp = translate("parts_locale", 'videocard_title', {model='TVA-RX2'}); dsc = function(s) - return '{' .. translate_now(parts_locale, 'videocard_title', {model='TVA-RX2'}) .. '}^'; + return '{' .. translate_now("parts_locale", 'videocard_title', {model='TVA-RX2'}) .. '}^'; end; - inv = translate(parts_locale, 'videocard_inv_from_box', {model='TVA-RX2'}); - tak = translate(parts_locale, 'videocard_tak', {model='TVA-RX2'}); + inv = translate("parts_locale", 'videocard_inv_from_box', {model='TVA-RX2'}); + tak = translate("parts_locale", 'videocard_tak', {model='TVA-RX2'}); } obj { @@ -155,12 +155,12 @@ obj { slot = 'ISB'; part = true; visual = 2; - disp = translate(parts_locale, 'videocard_title', {model='GVA-RX2'}); + disp = translate("parts_locale", 'videocard_title', {model='GVA-RX2'}); dsc = function(s) - return '{' .. translate_now(parts_locale, 'videocard_title', {model='GVA-RX2'}) .. '}^'; + return '{' .. translate_now("parts_locale", 'videocard_title', {model='GVA-RX2'}) .. '}^'; end; - inv = translate(parts_locale, 'videocard_inv_from_box', {model='GVA-RX2'}); - tak = translate(parts_locale, 'videocard_tak', {model='GVA-RX2'}); + inv = translate("parts_locale", 'videocard_inv_from_box', {model='GVA-RX2'}); + tak = translate("parts_locale", 'videocard_tak', {model='GVA-RX2'}); } obj { @@ -171,12 +171,12 @@ obj { slot = 'ISB'; part = true; visual = 2; - disp = translate(parts_locale, 'videocard_title', {model='GVA-RX4'}); + disp = translate("parts_locale", 'videocard_title', {model='GVA-RX4'}); dsc = function(s) - return '{' .. translate_now(parts_locale, 'videocard_title', {model='GVA-RX4'}) .. '}^'; + return '{' .. translate_now("parts_locale", 'videocard_title', {model='GVA-RX4'}) .. '}^'; end; - inv = translate(parts_locale, 'videocard_inv_from_box', {model='GVA-RX4'}); - tak = translate(parts_locale, 'videocard_tak', {model='GVA-RX4'}); + inv = translate("parts_locale", 'videocard_inv_from_box', {model='GVA-RX4'}); + tak = translate("parts_locale", 'videocard_tak', {model='GVA-RX4'}); } obj { @@ -187,12 +187,12 @@ obj { slot = 'ISB'; part = true; visual = 3; - disp = translate(parts_locale, 'network_adapter_title', {model='FNA-100-10Mb/s'}); + disp = translate("parts_locale", 'network_adapter_title', {model='FNA-100-10Mb/s'}); dsc = function(s) - return '{' .. translate_now(parts_locale, 'network_adapter_title', {model='FNA-100-10Mb/s'}) .. '}^'; + return '{' .. translate_now("parts_locale", 'network_adapter_title', {model='FNA-100-10Mb/s'}) .. '}^'; end; - inv = translate(parts_locale, 'network_adapter_inv_from_computer', {model='FNA-100-10Mb/s'}); - tak = translate(parts_locale, 'network_adapter_tak', {model='FNA-100-10Mb/s'}); + inv = translate("parts_locale", 'network_adapter_inv_from_computer', {model='FNA-100-10Mb/s'}); + tak = translate("parts_locale", 'network_adapter_tak', {model='FNA-100-10Mb/s'}); } obj { @@ -203,12 +203,12 @@ obj { slot = 'ISB'; part = true; visual = 3; - disp = translate(parts_locale, 'network_adapter_title', {model='FNA-200-20Mb/s'}); + disp = translate("parts_locale", 'network_adapter_title', {model='FNA-200-20Mb/s'}); dsc = function(s) - return '{' .. translate_now(parts_locale, 'network_adapter_title', {model='FNA-200-20Mb/s'}) .. '}^'; + return '{' .. translate_now("parts_locale", 'network_adapter_title', {model='FNA-200-20Mb/s'}) .. '}^'; end; - inv = translate(parts_locale, 'network_adapter_inv_from_box', {model='FNA-200-20Mb/s'}); - tak = translate(parts_locale, 'network_adapter_tak', {model='FNA-200-20Mb/s'}); + inv = translate("parts_locale", 'network_adapter_inv_from_box', {model='FNA-200-20Mb/s'}); + tak = translate("parts_locale", 'network_adapter_tak', {model='FNA-200-20Mb/s'}); } obj { @@ -219,12 +219,12 @@ obj { slot = 'ISB'; part = true; visual = 3; - disp = translate(parts_locale, 'network_adapter_title', {model='FNA-100-10Mb/s'}); + disp = translate("parts_locale", 'network_adapter_title', {model='FNA-100-10Mb/s'}); dsc = function(s) - return '{' .. translate_now(parts_locale, 'network_adapter_title', {model='FNA-100-10Mb/s'}) .. '}^'; + return '{' .. translate_now("parts_locale", 'network_adapter_title', {model='FNA-100-10Mb/s'}) .. '}^'; end; - inv = translate(parts_locale, 'network_adapter_inv_from_box', {model='FNA-100-10Mb/s'}); - tak = translate(parts_locale, 'network_adapter_tak', {model='FNA-100-10Mb/s'}); + inv = translate("parts_locale", 'network_adapter_inv_from_box', {model='FNA-100-10Mb/s'}); + tak = translate("parts_locale", 'network_adapter_tak', {model='FNA-100-10Mb/s'}); } obj { @@ -235,12 +235,12 @@ obj { slot = 'ISB'; part = true; visual = 3; - disp = translate(parts_locale, 'network_adapter_title', {model='FNA-50-5Mb/s'}); + disp = translate("parts_locale", 'network_adapter_title', {model='FNA-50-5Mb/s'}); dsc = function(s) - return '{' .. translate_now(parts_locale, 'network_adapter_title', {model='FNA-50-5Mb/s'}) .. '}^'; + return '{' .. translate_now("parts_locale", 'network_adapter_title', {model='FNA-50-5Mb/s'}) .. '}^'; end; - inv = translate(parts_locale, 'network_adapter_inv_from_box', {model='FNA-50-5Mb/s'}); - tak = translate(parts_locale, 'network_adapter_tak', {model='FNA-50-5Mb/s'}); + inv = translate("parts_locale", 'network_adapter_inv_from_box', {model='FNA-50-5Mb/s'}); + tak = translate("parts_locale", 'network_adapter_tak', {model='FNA-50-5Mb/s'}); } obj { @@ -251,12 +251,12 @@ obj { slot = 'ISB'; part = true; visual = 4; - disp = translate(parts_locale, 'keyboard_controller_title', {model='KBC-S'}); + disp = translate("parts_locale", 'keyboard_controller_title', {model='KBC-S'}); dsc = function(s) - return '{' .. translate_now(parts_locale, 'keyboard_controller_title', {model='KBC-S'}) .. '}^'; + return '{' .. translate_now("parts_locale", 'keyboard_controller_title', {model='KBC-S'}) .. '}^'; end; - inv = translate(parts_locale, 'keyboard_controller_inv_from_computer', {model='KBC-S'}); - tak = translate(parts_locale, 'keyboard_controller_tak', {model='KBC-S'}); + inv = translate("parts_locale", 'keyboard_controller_inv_from_computer', {model='KBC-S'}); + tak = translate("parts_locale", 'keyboard_controller_tak', {model='KBC-S'}); } obj { @@ -267,12 +267,12 @@ obj { slot = 'ISB'; part = true; visual = 4; - disp = translate(parts_locale, 'keyboard_controller_title', {model='KBC-S'}); + disp = translate("parts_locale", 'keyboard_controller_title', {model='KBC-S'}); dsc = function(s) - return '{' .. translate_now(parts_locale, 'keyboard_controller_title', {model='KBC-S'}) .. '}^'; + return '{' .. translate_now("parts_locale", 'keyboard_controller_title', {model='KBC-S'}) .. '}^'; end; - inv = translate(parts_locale, 'keyboard_controller_inv_from_box', {model='KBC-S'}); - tak = translate(parts_locale, 'keyboard_controller_tak', {model='KBC-S'}); + inv = translate("parts_locale", 'keyboard_controller_inv_from_box', {model='KBC-S'}); + tak = translate("parts_locale", 'keyboard_controller_tak', {model='KBC-S'}); } obj { @@ -283,12 +283,12 @@ obj { slot = 'ISB'; part = true; visual = 4; - disp = translate(parts_locale, 'keyboard_controller_title', {model='KBC-R'}); + disp = translate("parts_locale", 'keyboard_controller_title', {model='KBC-R'}); dsc = function(s) - return '{' .. translate_now(parts_locale, 'keyboard_controller_title', {model='KBC-R'}) .. '}^'; + return '{' .. translate_now("parts_locale", 'keyboard_controller_title', {model='KBC-R'}) .. '}^'; end; - inv = translate(parts_locale, 'keyboard_controller_inv_from_box', {model='KBC-R'}); - tak = translate(parts_locale, 'keyboard_controller_tak', {model='KBC-R'}); + inv = translate("parts_locale", 'keyboard_controller_inv_from_box', {model='KBC-R'}); + tak = translate("parts_locale", 'keyboard_controller_tak', {model='KBC-R'}); } obj { @@ -299,10 +299,10 @@ obj { slot = 'ISB'; part = true; visual = 4; - disp = translate(parts_locale, 'keyboard_controller_title', {model='KBC-P'}); + disp = translate("parts_locale", 'keyboard_controller_title', {model='KBC-P'}); dsc = function(s) - return '{' .. translate_now(parts_locale, 'keyboard_controller_title', {model='KBC-P'}) .. '}^'; + return '{' .. translate_now("parts_locale", 'keyboard_controller_title', {model='KBC-P'}) .. '}^'; end; - inv = translate(parts_locale, 'keyboard_controller_inv_from_box', {model='KBC-P'}); - tak = translate(parts_locale, 'keyboard_controller_tak', {model='KBC-P'}); + inv = translate("parts_locale", 'keyboard_controller_inv_from_box', {model='KBC-P'}); + tak = translate("parts_locale", 'keyboard_controller_tak', {model='KBC-P'}); } diff --git a/ending.lua b/ending.lua --- a/ending.lua +++ b/ending.lua @@ -121,7 +121,7 @@ function ending_room(s) s.noautosave = true; s.notitle = true; if not s.disp then - s.disp = translate(ending_locale, 'game_end'); + s.disp = translate("ending_locale", 'game_end'); end; return room(s); @@ -135,7 +135,7 @@ room { nam = 'ending_left'; nofollow = true; theme = 'ending_outside'; - disp = translate(ending_locale, 'game_end'); + disp = translate("ending_locale", 'game_end'); noinv = true; notitle = true; nosave = true; @@ -183,13 +183,13 @@ room { onenter = function(s) s.state = s.state + 1; if s.state == 1 then - p(translate_now(ending_locale, 'left_state_1')); + p(translate_now("ending_locale", 'left_state_1')); return false; elseif s.state == 2 then - p(translate_now(ending_locale, 'left_state_2')); + p(translate_now("ending_locale", 'left_state_2')); return false; elseif s.state == 3 then - p(translate_now(ending_locale, 'left_state_3')); + p(translate_now("ending_locale", 'left_state_3')); return false; end; @@ -205,13 +205,13 @@ room { fading.enabled = false; end; dsc = function(s) - p(translate_now(ending_locale, 'left_part_1')); + p(translate_now("ending_locale", 'left_part_1')); if solarscale_with_me then - p(translate_now(ending_locale, 'left_part_1_solarscale')); + p(translate_now("ending_locale", 'left_part_1_solarscale')); end; end; way = { - path {translate(common_locale, 'continue'), 'ending_left_2'}; + path {translate("common_locale", 'continue'), 'ending_left_2'}; }; } @@ -227,7 +227,7 @@ room { return 'ending_outside'; end; end; - disp = translate(ending_locale, 'game_end'); + disp = translate("ending_locale", 'game_end'); noinv = true; notitle = true; themeInit = function(s) @@ -240,16 +240,16 @@ room { animation_set(false); end; dsc = function(s) - pn(translate_now(ending_locale, 'left_part_2')); + pn(translate_now("ending_locale", 'left_part_2')); if solarscale_with_me then - pn(translate_now(ending_locale, 'solarscale_lost')); + pn(translate_now("ending_locale", 'solarscale_lost')); end; if irradiated then - p(translate_now(ending_locale, 'irradiated')); + p(translate_now("ending_locale", 'irradiated')); end; end; way = { - path {translate(common_locale, 'continue'), function(s) + path {translate("common_locale", 'continue'), function(s) if irradiated then _'ending_credits'.etype = 'leftbw'; else @@ -266,7 +266,7 @@ 2. Destroying the tower room { nam = 'ending_formatted'; - disp = translate(ending_locale, 'game_end'); + disp = translate("ending_locale", 'game_end'); theme = 'ending_outside'; nofollow = true; noinv = true; @@ -290,13 +290,13 @@ room { end; dsc = function(s) if solarscale_with_me then - p(translate_now(ending_locale, 'formatted_solarscale')); + p(translate_now("ending_locale", 'formatted_solarscale')); else - p(translate_now(ending_locale, 'formatted_alone')); + p(translate_now("ending_locale", 'formatted_alone')); end; end; way = { - path {translate(common_locale, 'continue'), 'ending_formatted_2'}; + path {translate("common_locale", 'continue'), 'ending_formatted_2'}; }; } @@ -312,7 +312,7 @@ room { end; nosave = true; noautosave = true; - disp = translate(ending_locale, 'game_end'); + disp = translate("ending_locale", 'game_end'); noinv = true; notitle = true; themeInit = function(s) @@ -323,16 +323,16 @@ room { end; end; dsc = function(s) - pn(translate_now(ending_locale, 'formatted_2')); + pn(translate_now("ending_locale", 'formatted_2')); if solarscale_with_me then - pn(translate_now(ending_locale, 'solarscale_lost')); + pn(translate_now("ending_locale", 'solarscale_lost')); end; if irradiated then - p(translate_now(ending_locale, 'irradiated')); + p(translate_now("ending_locale", 'irradiated')); end; end; way = { - path {translate(common_locale, 'continue'), function(s) + path {translate("common_locale", 'continue'), function(s) if irradiated then _'ending_credits'.etype = 'formatbw'; else @@ -352,7 +352,7 @@ 3. True ending stage 1 ending_room { nam = 'ending_dissolving_tower_solarscale'; theme = 'ending_outside'; - dsc = translate(ending_locale, 'ending_dissolving_tower_solarscale'); + dsc = translate("ending_locale", 'ending_dissolving_tower_solarscale'); onenter = function(s) enableSmoke('images/endings/crater_edge/tower_solarscale.png', 1); end; @@ -390,22 +390,22 @@ ending_room { fading.enabled = false; end; way = { - path {translate(common_locale, 'continue'), 'ending_solarscale_flies_away'}; + path {translate("common_locale", 'continue'), 'ending_solarscale_flies_away'}; }; } room { nam = 'ending_solarscale_pre'; theme = 'tower'; - disp = translate(tower_locale, 'tower_level_4_room_2_disp'); + disp = translate("tower_locale", 'tower_level_4_room_2_disp'); nofollow = true; noinv = true; nosave = true; noautosave = true; pic = 'images/tower_level_4_room_2_light.png'; - dsc = translate(ending_locale, 'ending_solarscale_pre'); + dsc = translate("ending_locale", 'ending_solarscale_pre'); way = { - path {translate(common_locale, 'continue'), 'ending_solarscale_dlg'}; + path {translate("common_locale", 'continue'), 'ending_solarscale_dlg'}; }; } @@ -414,11 +414,11 @@ local solarscale_convince = function(s) if _'ending_solarscale_dlg'.weight >= 5 then walk('ending_solarscale_stays'); elseif _'ending_solarscale_dlg'.weight >= 3 then - return translate_now(ending_locale, "true_solarscale_convince_level_3"); + return translate_now("ending_locale", "true_solarscale_convince_level_3"); elseif _'ending_solarscale_dlg'.weight >= 2 then - return translate_now(ending_locale, "true_solarscale_convince_level_2"); + return translate_now("ending_locale", "true_solarscale_convince_level_2"); elseif _'ending_solarscale_dlg'.weight == 1 then - return translate_now(ending_locale, "true_solarscale_convince_level_1"); + return translate_now("ending_locale", "true_solarscale_convince_level_1"); end; end; @@ -428,32 +428,32 @@ dlg { nofollow = true; theme = 'tower'; noinv = true; - disp = translate(solarscale_locale, 'disp'); + disp = translate("solarscale_locale", 'disp'); nosave = true; noautosave = true; pic = 'images/tower_level_4_room_2_light.png;images/characters/solarscale_tower_dusk.png'; - enter = translate(ending_locale, 'true_solarscale_dlg_enter'); + enter = translate("ending_locale", 'true_solarscale_dlg_enter'); phr = { - {translate(ending_locale, "true_solarscale_dlg_1"), function(s) + {translate("ending_locale", "true_solarscale_dlg_1"), function(s) walk('ending_solarscale_leaving_hold'); end}; - {translate(ending_locale, "true_solarscale_dlg_2"), translate(ending_locale, "true_solarscale_dlg_2_response"), next='#convince'}; - {translate(ending_locale, "true_solarscale_dlg_end"), function(s) + {translate("ending_locale", "true_solarscale_dlg_2"), translate("ending_locale", "true_solarscale_dlg_2_response"), next='#convince'}; + {translate("ending_locale", "true_solarscale_dlg_end"), function(s) walk('ending_solarscale_leaving_farewell'); end}; {false, '#convince', - {translate(ending_locale, "true_solarscale_dlg_1"), function(s) + {translate("ending_locale", "true_solarscale_dlg_1"), function(s) walk('ending_solarscale_leaving_hold'); end}; - {cond=function(s) return _'ending_solarscale_dlg'.weight > 0 end; translate(ending_locale, "true_solarscale_dlg_end"), function(s) + {cond=function(s) return _'ending_solarscale_dlg'.weight > 0 end; translate("ending_locale", "true_solarscale_dlg_end"), function(s) walk('ending_solarscale_leaving_farewell') end}; - {translate(ending_locale, "true_solarscale_dlg_3"), solarscale_convince}, - {cond=function(s) return _'solarscale_ally'.after_discussed end; translate(ending_locale, "true_solarscale_dlg_4"), solarscale_convince}, - {cond=function(s) return had_tea and tea_answer_1 == 1 and tea_answer_2 == 1 and tea_answer_3 == 1 end; translate(ending_locale, "true_solarscale_dlg_5"), solarscale_convince}, - {cond=function(s) return solarscale_tower end; translate(ending_locale, "true_solarscale_dlg_6"), solarscale_convince}, - {cond=function(s) return solarscale_helps < 2 end; translate(ending_locale, "true_solarscale_dlg_7"), solarscale_convince}; - {cond=function(s) return solarscale_glade_visited end; translate(ending_locale, "true_solarscale_dlg_8"), solarscale_convince}; + {translate("ending_locale", "true_solarscale_dlg_3"), solarscale_convince}, + {cond=function(s) return _'solarscale_ally'.after_discussed end; translate("ending_locale", "true_solarscale_dlg_4"), solarscale_convince}, + {cond=function(s) return had_tea and tea_answer_1 == 1 and tea_answer_2 == 1 and tea_answer_3 == 1 end; translate("ending_locale", "true_solarscale_dlg_5"), solarscale_convince}, + {cond=function(s) return solarscale_tower end; translate("ending_locale", "true_solarscale_dlg_6"), solarscale_convince}, + {cond=function(s) return solarscale_helps < 2 end; translate("ending_locale", "true_solarscale_dlg_7"), solarscale_convince}; + {cond=function(s) return solarscale_glade_visited end; translate("ending_locale", "true_solarscale_dlg_8"), solarscale_convince}; }; }; } @@ -465,11 +465,11 @@ room { nosave = true; noautosave = true; noinv = true; - disp = translate(solarscale_locale, 'disp'); + disp = translate("solarscale_locale", 'disp'); pic = 'images/tower_level_4_room_2_light.png;images/characters/solarscale_tower_dusk.png'; - decor = translate(ending_locale, "true_solarscale_convince_level_4"); + decor = translate("ending_locale", "true_solarscale_convince_level_4"); way = { - path {translate(common_locale, 'continue'), 'ending_solarscale_stays_part_2'}; + path {translate("common_locale", 'continue'), 'ending_solarscale_stays_part_2'}; }; }; @@ -479,10 +479,10 @@ room { nofollow = true; theme = 'ending_outside'; noinv = true; - disp = translate(ending_locale, 'game_end'); + disp = translate("ending_locale", 'game_end'); nosave = true; noautosave = true; - dsc = translate(ending_locale, 'true_solarscale_stays'); + dsc = translate("ending_locale", 'true_solarscale_stays'); onenter = function(s) solarscale_stays = true; enableSmoke('images/endings/crater_edge/crater_edge.png', 1); @@ -522,7 +522,7 @@ room { fading.enabled = false; end; way = { - path {translate(common_locale, 'continue'), 'ending_welcome'}; + path {translate("common_locale", 'continue'), 'ending_welcome'}; }; }; @@ -533,11 +533,11 @@ room { nosave = true; noautosave = true; noinv = true; - disp = translate(tower_locale, 'tower_level_4_room_2_disp'); + disp = translate("tower_locale", 'tower_level_4_room_2_disp'); pic = 'images/tower_level_4_room_2_light.png'; - decor = translate(ending_locale, "true_solarscale_dlg_end_response"); + decor = translate("ending_locale", "true_solarscale_dlg_end_response"); way = { - path {translate(common_locale, 'continue'), 'ending_solarscale_leaving_part_2'}; + path {translate("common_locale", 'continue'), 'ending_solarscale_leaving_part_2'}; }; }; @@ -549,10 +549,10 @@ room { noautosave = true; noinv = true; pic = 'images/tower_level_4_room_2_light.png'; - disp = translate(tower_locale, 'tower_level_4_room_2_disp'); - decor = translate(ending_locale, "true_solarscale_dlg_1_response"); + disp = translate("tower_locale", 'tower_level_4_room_2_disp'); + decor = translate("ending_locale", "true_solarscale_dlg_1_response"); way = { - path {translate(common_locale, 'continue'), 'ending_solarscale_leaving_part_2'}; + path {translate("common_locale", 'continue'), 'ending_solarscale_leaving_part_2'}; }; }; @@ -561,7 +561,7 @@ room { notitle = true; nofollow = true; noinv = true; - disp = translate(ending_locale, 'game_end'); + disp = translate("ending_locale", 'game_end'); theme = 'ending_outside'; nosave = true; noautosave = true; @@ -640,9 +640,9 @@ room { fading.enabled = false; end; pic = 'images/tower_level_4_room_2_light.png'; - decor = translate(ending_locale, 'true_solarscale_leaving'); + decor = translate("ending_locale", 'true_solarscale_leaving'); way = { - path {translate(common_locale, 'continue'), 'ending_dissolving_tower_solarscale_alt'}; + path {translate("common_locale", 'continue'), 'ending_dissolving_tower_solarscale_alt'}; }; } @@ -655,7 +655,7 @@ room { notitle = true; nosave = true; noautosave = true; - disp = translate(ending_locale, 'game_end'); + disp = translate("ending_locale", 'game_end'); themeInit = function(s) local scale = diretheme.get_scale(); local width, height = diretheme.get_scaled_screen(); @@ -686,9 +686,9 @@ room { }, true); timer:set(25); end; - dsc = translate(ending_locale, 'ending_dissolving_tower_solarscale_alt'); + dsc = translate("ending_locale", 'ending_dissolving_tower_solarscale_alt'); way = { - path {translate(common_locale, 'continue'), 'ending_solarscale_flies_away'}; + path {translate("common_locale", 'continue'), 'ending_solarscale_flies_away'}; }; }; @@ -701,7 +701,7 @@ room { notitle = true; nosave = true; noautosave = true; - disp = translate(ending_locale, 'game_end'); + disp = translate("ending_locale", 'game_end'); themeInit = function(s) local scale = diretheme.get_scale(); local width, height = diretheme.get_scaled_screen(); @@ -772,9 +772,9 @@ room { }; }, true); end; - dsc = translate(ending_locale, 'true_solarscale_outside_part_2'); + dsc = translate("ending_locale", 'true_solarscale_outside_part_2'); way = { - path {translate(common_locale, 'continue'), 'ending_welcome'}; + path {translate("common_locale", 'continue'), 'ending_welcome'}; }; } @@ -870,9 +870,9 @@ ending_room { spr = nil; -- remove reference timer:set(25); end; - dsc = translate(ending_locale, 'ending_welcome'); + dsc = translate("ending_locale", 'ending_welcome'); way = { - path {translate(common_locale, 'continue'), function(s) + path {translate("common_locale", 'continue'), function(s) if solarscale_stays then return 'ending_solarscale_flight'; else @@ -1003,9 +1003,9 @@ ending_room { }); timer:set(25); end; - dsc = translate(ending_locale, 'ending_solarscale_flight'); + dsc = translate("ending_locale", 'ending_solarscale_flight'); way = { - path {translate(common_locale, 'continue'), 'ending_space_1'}; + path {translate("common_locale", 'continue'), 'ending_space_1'}; }; } @@ -1022,15 +1022,15 @@ ending_room { end; dsc = function(s) if solarscale_stays then - pr(translate_now(ending_locale, 'true_step_1_solarscale')); + pr(translate_now("ending_locale", 'true_step_1_solarscale')); else - pr(translate_now(ending_locale, 'true_step_1_alone')); + pr(translate_now("ending_locale", 'true_step_1_alone')); end; pn(); - pr(translate_now(ending_locale, 'true_step_1')); + pr(translate_now("ending_locale", 'true_step_1')); end; way = { - path {translate(common_locale, 'continue'), function(s) + path {translate("common_locale", 'continue'), function(s) if irradiated then return 'ending_space_2_irradiated'; else @@ -1042,7 +1042,7 @@ ending_room { room { nam = 'ending_space_2'; - disp = translate(ending_locale, 'game_end'); + disp = translate("ending_locale", 'game_end'); noinv = true; notitle = true; nofollow = true; @@ -1059,13 +1059,13 @@ room { end; dsc = function(s) if solarscale_stays then - return translate_now(ending_locale, 'true_step_2_solarscale'); + return translate_now("ending_locale", 'true_step_2_solarscale'); else - return translate_now(ending_locale, 'true_step_2_alone'); + return translate_now("ending_locale", 'true_step_2_alone'); end; end; way = { - path {translate(common_locale, 'continue'), function(s) + path {translate("common_locale", 'continue'), function(s) if solarscale_stays then _'ending_credits'.etype = 'main_solarscale'; else @@ -1078,7 +1078,7 @@ room { room { nam = 'ending_space_2_irradiated'; - disp = translate(ending_locale, 'game_end'); + disp = translate("ending_locale", 'game_end'); noinv = true; notitle = true; nofollow = true; @@ -1088,9 +1088,9 @@ room { themeInit = function(s) show_ending('bwt', 'images/endings/space_bw.png'); end; - dsc = translate(ending_locale, 'true_step_2_irradiated'); + dsc = translate("ending_locale", 'true_step_2_irradiated'); way = { - path {translate(common_locale, 'continue'), function(s) + path {translate("common_locale", 'continue'), function(s) _'ending_credits'.etype = 'bwm'; return 'ending_credits'; end}; @@ -1099,7 +1099,7 @@ room { room { nam = 'ending_credits'; - disp = translate(ending_locale, 'thank_you_for_playing'); + disp = translate("ending_locale", 'thank_you_for_playing'); noinv = true; nofollow = true; nosave = true; @@ -1147,17 +1147,17 @@ room { fmt.para = true; end; decor = function(s) - return translate_now(menu_locale, 'credits_author') .. ': Khaelenmore Thaal^' .. - translate_now(menu_locale, 'credits_art') .. ': Sabra Naikomy^' .. - translate_now(menu_locale, 'credits_music') .. ': Khaelenmore Thaal^' .. - translate_now(menu_locale, 'credits_engine') .. ': INSTEAD ' .. translate_now(menu_locale, 'credits_engine_author') .. ' {$link https://github.com/instead-hub/instead/}^' .. - translate_now(menu_locale, 'credits_sounds') .. ': {$link https://freesound.org/} CC-0^' .. - translate_now(menu_locale, 'credits_fonts') .. ': VileR {$link https://int10h.org/oldschool-pc-fonts/} CC-BY-SA 4.0^^' .. - translate_now(menu_locale, 'credits_closed_beta') .. ': ' .. closed_beta_participants.. '^^'.. - translate_now(menu_locale, 'credits_thanks'); + return translate_now("menu_locale", 'credits_author') .. ': Khaelenmore Thaal^' .. + translate_now("menu_locale", 'credits_art') .. ': Sabra Naikomy^' .. + translate_now("menu_locale", 'credits_music') .. ': Khaelenmore Thaal^' .. + translate_now("menu_locale", 'credits_engine') .. ': INSTEAD ' .. translate_now("menu_locale", 'credits_engine_author') .. ' {$link https://github.com/instead-hub/instead/}^' .. + translate_now("menu_locale", 'credits_sounds') .. ': {$link https://freesound.org/} CC-0^' .. + translate_now("menu_locale", 'credits_fonts') .. ': VileR {$link https://int10h.org/oldschool-pc-fonts/} CC-BY-SA 4.0^^' .. + translate_now("menu_locale", 'credits_closed_beta') .. ': ' .. closed_beta_participants.. '^^'.. + translate_now("menu_locale", 'credits_thanks'); end; way = { - path {translate(ending_locale, 'show_menu'), 'reset'}; + path {translate("ending_locale", 'show_menu'), 'reset'}; }; } diff --git a/forest.lua b/forest.lua --- a/forest.lua +++ b/forest.lua @@ -37,38 +37,38 @@ global { obj { nam = 'raspberry_pie'; - disp = translate(forest_locale, 'raspberry_pie'); - inv = translate(forest_locale, 'raspberry_pie_inv'); + disp = translate("forest_locale", 'raspberry_pie'); + inv = translate("forest_locale", 'raspberry_pie_inv'); } obj { nam = 'flower'; - disp =translate(forest_locale, 'flower'); - inv = translate(forest_locale, 'flower_inv'); + disp =translate("forest_locale", 'flower'); + inv = translate("forest_locale", 'flower_inv'); } obj { nam = 'lock'; - disp = translate(forest_locale, 'lock'); - disp2 = translate(forest_locale, 'lock_disp2'); - disp3 = translate(forest_locale, 'lock_disp3'); - inv = translate(forest_locale, 'lock_inv'); + disp = translate("forest_locale", 'lock'); + disp2 = translate("forest_locale", 'lock_disp2'); + disp3 = translate("forest_locale", 'lock_disp3'); + inv = translate("forest_locale", 'lock_inv'); } obj { nam = 'old_map'; - disp = translate(forest_locale, 'old_map_disp'); - disp2 = translate(forest_locale, 'old_map_disp2'); - disp3 = translate(forest_locale, 'old_map_disp3'); + disp = translate("forest_locale", 'old_map_disp'); + disp2 = translate("forest_locale", 'old_map_disp2'); + disp3 = translate("forest_locale", 'old_map_disp3'); inv = function(s) + p(translate_now("forest_locale", 'old_map_inv');); if village_visited then + p(translate_now("forest_locale", 'old_map_inv_visited')); if _('fly_west_from_village'):disabled() then - return translate_now(forest_locale, 'old_map_inv_visited'); - else - return translate_now(forest_locale, 'old_map_inv_visited_2'); + p(translate_now("forest_locale", 'old_map_inv_visited_village')); end; else - return translate_now(forest_locale, 'old_map_inv_not_visited'); + p(translate_now("forest_locale", 'old_map_inv_not_visited')); end; end; } @@ -76,12 +76,12 @@ obj { room { nam = 'above_forest'; pic = 'images/above_forest.png'; - disp = translate(forest_locale, 'above_forest'); + disp = translate("forest_locale", 'above_forest'); theme = 'main'; decor = function(s) - p(translate_now(forest_locale, 'above_forest_decor')); + p(translate_now("forest_locale", 'above_forest_decor')); if not village_visited then - p(translate_now(forest_locale, 'above_forest_decor_village')); + p(translate_now("forest_locale", 'above_forest_decor_village')); end; end; enter = function(s) @@ -92,40 +92,40 @@ room { stop_menu(); end; if here():from()^'forest_glade' then - pr(translate_now(forest_locale, 'above_forest_enter')); + pr(translate_now("forest_locale", 'above_forest_enter')); end; snd.music('sound/bgm_forest.ogg'); end; way = { - path {"#down", translate(forest_locale, 'transition_land'), 'forest_glade'}:disable(); - path {"#north", translate(forest_locale, 'transition_north_along_road'), 'above_near_village'}; + path {"#down", translate("forest_locale", 'transition_land'), 'forest_glade'}:disable(); + path {"#north", translate("forest_locale", 'transition_north_along_road'), 'above_near_village'}; } }:with { obj { nam = '#thicket'; - act = translate(forest_locale, 'above_forest_thicket_act'); + act = translate("forest_locale", 'above_forest_thicket_act'); }; obj { nam = '#road'; act = function(s) - pr(translate_now(forest_locale, 'above_forest_road_act')); + pr(translate_now("forest_locale", 'above_forest_road_act')); if not village_visited then - pr(translate_now(forest_locale, 'above_forest_road_act_village')); + pr(translate_now("forest_locale", 'above_forest_road_act_village')); end; end; }; obj { nam = '#powerlines'; - act = translate(forest_locale, 'above_forest_powerlines_act'); + act = translate("forest_locale", 'above_forest_powerlines_act'); }; obj { nam = '#glade'; act = function(s) - pr(translate_now(forest_locale, 'above_forest_glade_act')); + pr(translate_now("forest_locale", 'above_forest_glade_act')); if _'#down':disabled() then _'#down':enable(); - pr(translate_now(forest_locale, 'above_forest_glade_act_first')); + pr(translate_now("forest_locale", 'above_forest_glade_act_first')); end; end; }; @@ -144,27 +144,27 @@ room { return 'images/forest_glade.png;images/forest_glade_flower.png@269,201'; end; end; - disp = translate(forest_locale, 'forest_glade'); + disp = translate("forest_locale", 'forest_glade'); theme = 'main'; - onenter = translate(forest_locale, 'forest_glade_enter'); - decor = translate(forest_locale, 'forest_glade_decor'); + onenter = translate("forest_locale", 'forest_glade_enter'); + decor = translate("forest_locale", 'forest_glade_decor'); way = { - path {'#up', translate(forest_locale, 'transition_fly'), 'above_forest'}; + path {'#up', translate("forest_locale", 'transition_fly'), 'above_forest'}; } }: with { obj { nam = '#thicket'; - act = translate(forest_locale, 'forest_glade_thicket'); + act = translate("forest_locale", 'forest_glade_thicket'); }; obj { nam = '#birds'; - act = translate(forest_locale, 'forest_glade_birds'); + act = translate("forest_locale", 'forest_glade_birds'); }; obj { nam = '#grass'; act = function(s) _'#flowers':enable(); - return translate_now(forest_locale, 'forest_glade_grass'); + return translate_now("forest_locale", 'forest_glade_grass'); end; }; obj { @@ -174,9 +174,9 @@ room { if s.state == 0 then take('flower'); s.state = 1; - return translate_now(forest_locale, 'forest_glade_flowers_first'); + return translate_now("forest_locale", 'forest_glade_flowers_first'); else - return translate_now(forest_locale, 'forest_glade_flowers'); + return translate_now("forest_locale", 'forest_glade_flowers'); end; end; }:disable(); @@ -184,36 +184,36 @@ room { room { nam = 'above_near_village'; - disp = translate(forest_locale, 'above_near_village'); + disp = translate("forest_locale", 'near_village'); pic = 'images/above_near_village.png'; theme = 'main'; onenter = function(s) if here()^'near_village' then - return translate_now(forest_locale, 'above_near_village_enter'); + return translate_now("forest_locale", 'above_near_village_enter'); end; end; - decor = translate(forest_locale, 'above_near_village_decor'); + decor = translate("forest_locale", 'above_near_village_decor'); way = { - path {"#south", translate(forest_locale, 'transition_south_along_road'), 'above_forest'}; - path {"#down", translate(forest_locale, 'transition_land'), 'near_village'}; - path {"#north", translate(forest_locale, 'transition_north_to_the_village'), 'above_village'}; + path {"#south", translate("forest_locale", 'transition_south_along_road'), 'above_forest'}; + path {"#down", translate("forest_locale", 'transition_land'), 'near_village'}; + path {"#north", translate("forest_locale", 'transition_north_to_the_village'), 'above_village'}; } }: with { obj { nam = '#road'; - act = translate(forest_locale, 'above_near_village_road'); + act = translate("forest_locale", 'above_near_village_road'); }; obj { nam = '#thicket'; - act = translate(forest_locale, 'above_near_village_thicket'); + act = translate("forest_locale", 'above_near_village_thicket'); }; obj { nam = '#village'; act = function(s) - pr(translate_now(forest_locale, 'above_near_village_village')); + pr(translate_now("forest_locale", 'above_near_village_village')); if not village_visited then village_visited = true; - pr(translate_now(forest_locale, 'village_unvisited')); + pr(translate_now("forest_locale", 'village_unvisited')); end; end; }; @@ -226,30 +226,30 @@ room { room { nam = 'above_village'; pic = 'images/above_village.png'; - disp = translate(forest_locale, 'above_village'); + disp = translate("forest_locale", 'above_village'); theme = 'main'; - decor = translate(forest_locale, 'above_village_decor'); + decor = translate("forest_locale", 'above_village_decor'); way = { - path {"#south", translate(forest_locale, 'transition_south_along_road'), 'above_near_village'}; - path {"#down", translate(forest_locale, 'transition_land'), 'village_no_way'}; - path {"fly_west_from_village", translate(forest_locale, 'transition_west'), 'above_west'}:disable(); + path {"#south", translate("forest_locale", 'transition_south_along_road'), 'above_near_village'}; + path {"#down", translate("forest_locale", 'transition_land'), 'village_no_way'}; + path {"fly_west_from_village", translate("forest_locale", 'transition_west'), 'above_west'}:disable(); } }: with { obj { nam = '#thicket'; - act = translate(forest_locale, 'above_village_thicket'); + act = translate("forest_locale", 'above_village_thicket'); }; obj { nam = '#road'; - act = translate(forest_locale, 'above_village_road'); + act = translate("forest_locale", 'above_village_road'); }; obj { nam = '#village'; act = function(s) - pr(translate_now(forest_locale, 'above_village_village')); + pr(translate_now("forest_locale", 'above_village_village')); if not village_visited then village_visited = true; - pr(translate_now(forest_locale, 'village_unvisited')); + pr(translate_now("forest_locale", 'village_unvisited')); end; end; }; @@ -261,61 +261,61 @@ room { obj { nam = 'sun'; - act = translate(forest_locale, 'sun'); + act = translate("forest_locale", 'sun'); }; obj { nam = 'sun_transformed'; - act = translate(forest_locale, 'sun_transformed'); + act = translate("forest_locale", 'sun_transformed'); }; obj { nam = 'clouds'; - act = translate(forest_locale, 'clouds'); + act = translate("forest_locale", 'clouds'); }; obj { nam = 'wind'; - act = translate(forest_locale, 'wind'); + act = translate("forest_locale", 'wind'); }; obj { nam = 'mountains'; - act = translate(forest_locale, 'mountains'); + act = translate("forest_locale", 'mountains'); }; room { nam = 'above_west'; - disp = translate(forest_locale, 'above_west'); + disp = translate("forest_locale", 'above_west'); pic = 'images/above_west.png'; theme = 'main'; - decor = translate(forest_locale, 'above_west_decor'); + decor = translate("forest_locale", 'above_west_decor'); way = { - path {"#east", translate(forest_locale, 'transition_east_to_the_village'), 'above_village'}; - path {"#west", translate(forest_locale, 'transition_west_to_the_crater'), 'above_crater'}:disable(); + path {"#east", translate("forest_locale", 'transition_east_to_the_village'), 'above_village'}; + path {"#west", translate("forest_locale", 'transition_west_to_the_crater'), 'above_crater'}:disable(); } }: with { obj { nam = '#village'; - act = translate(forest_locale, 'above_west_village'); + act = translate("forest_locale", 'above_west_village'); }; obj { nam = '#mountains'; - act = translate(forest_locale, 'above_west_mountains'); + act = translate("forest_locale", 'above_west_mountains'); }; obj { nam = '#mountaintops'; - act = translate(forest_locale, 'above_west_mountaintops'); + act = translate("forest_locale", 'above_west_mountaintops'); }; obj { nam = '#mountainslopes'; - act = translate(forest_locale, 'above_west_mountainslopes'); + act = translate("forest_locale", 'above_west_mountainslopes'); }; obj { nam = '#crater'; act = function(s) _'#west':enable(); - return translate_now(forest_locale, 'above_west_crater'); + return translate_now("forest_locale", 'above_west_crater'); end; }; 'clouds'; @@ -328,33 +328,33 @@ room { theme = 'main'; onenter = function(s) if here()^'inside_crater_glade' then - p(translate_now(forest_locale, 'above_crater_enter')); + p(translate_now("forest_locale", 'above_crater_enter')); end; end; - disp = translate(forest_locale, 'above_crater'); - decor = translate(forest_locale, 'above_crater_decor'); + disp = translate("forest_locale", 'above_crater'); + decor = translate("forest_locale", 'above_crater_decor'); way = { - path {"#east", translate(forest_locale, 'transition_east'), 'above_west'}; - path {"#down", translate(forest_locale, 'transition_land'), 'inside_crater_glade'}:disable(); + path {"#east", translate("forest_locale", 'transition_east'), 'above_west'}; + path {"#down", translate("forest_locale", 'transition_land'), 'inside_crater_glade'}:disable(); } }: with { obj { nam = '#crater'; - act = translate(forest_locale, 'above_crater_crater'); + act = translate("forest_locale", 'above_crater_crater'); }; obj { nam = '#tower'; - act = translate(forest_locale, 'above_crater_tower'); + act = translate("forest_locale", 'above_crater_tower'); }; obj { nam = '#trees'; - act = translate(forest_locale, 'above_crater_trees'); + act = translate("forest_locale", 'above_crater_trees'); }; obj { nam = '#glade'; act = function(s) _'#down':enable(); - return translate_now(forest_locale, 'above_crater_glade'); + return translate_now("forest_locale", 'above_crater_glade'); end; }; 'wind'; @@ -366,9 +366,9 @@ room { nam = 'village_no_way'; onenter = function(s) if solarscale_with_me then - p(translate_now(forest_locale, 'village_no_way_solarscale')); + p(translate_now("forest_locale", 'village_no_way_solarscale')); else - p(translate_now(forest_locale, 'village_no_way_alone')); + p(translate_now("forest_locale", 'village_no_way_alone')); end; return false; end; @@ -376,35 +376,35 @@ room { room { nam = 'near_village'; - disp = translate(forest_locale, 'near_village'); + disp = translate("forest_locale", 'near_village'); pic = 'images/near_village.png'; theme = 'main'; onenter = function(s) if here()^'above_near_village' then - p(translate_now(forest_locale, 'near_village_enter')); + p(translate_now("forest_locale", 'near_village_enter')); end; end; - decor = translate(forest_locale, 'near_village_decor'); + decor = translate("forest_locale", 'near_village_decor'); way = { - path {"#up", translate(forest_locale, 'transition_fly'), 'above_near_village'}; - path {"#north", translate(forest_locale, 'transition_north_to_the_village'), 'village_south'}; + path {"#up", translate("forest_locale", 'transition_fly'), 'above_near_village'}; + path {"#north", translate("forest_locale", 'transition_north_to_the_village'), 'village_south'}; } }: with { obj { nam = '#road'; - act = translate(forest_locale, 'near_village_road'); + act = translate("forest_locale", 'near_village_road'); }; obj { nam = '#forest'; - act = translate(forest_locale, 'near_village_forest'); + act = translate("forest_locale", 'near_village_forest'); }; obj { nam = '#village'; act = function(s) - p(translate_now(forest_locale, 'near_village_village')); + p(translate_now("forest_locale", 'near_village_village')); if not village_visited then village_visited = true; - p(translate_now(forest_locale, 'village_unvisited')); + p(translate_now("forest_locale", 'village_unvisited')); end; end; }; @@ -414,44 +414,44 @@ room { room { nam = 'village_south'; - disp = translate(forest_locale, 'village_south'); + disp = translate("forest_locale", 'village_south'); pic='images/village_south.png'; theme = 'main'; enter = function(s) if not village_visited then village_visited = true; - p(translate_now(forest_locale, 'village_unvisited')); + p(translate_now("forest_locale", 'village_unvisited')); end; end; nofollow = function(s) if here():from()^'near_village' then - return translate_now(forest_locale, 'village_south_follow'); + return translate_now("solarscale_locale", 'follow_refuse') .. ' ' ..translate_now("solarscale_locale", 'follow_refuse_village'); else return true; end; end; - decor = translate(forest_locale, 'village_south_decor'); + decor = translate("forest_locale", 'village_south_decor'); way = { - path {'#south', translate(forest_locale, 'transition_south_to_the_forest'), 'near_village'}; - path {'#in', translate(forest_locale, 'transition_inside_hut'), 'foresters_hut'}; - path {'#north', translate(forest_locale, 'transition_north_to_the_townhall'), 'village_center'}; + path {'#south', translate("forest_locale", 'transition_south_to_the_forest'), 'near_village'}; + path {'#in', translate("forest_locale", 'transition_inside_hut'), 'foresters_hut'}; + path {'#north', translate("forest_locale", 'transition_north_to_the_townhall'), 'village_center'}; }; }:with { obj { nam = '#road'; - act = translate(forest_locale, 'village_south_road'); + act = translate("forest_locale", 'village_south_road'); }; obj { nam = '#village'; - act = translate(forest_locale, 'village_south_village'); + act = translate("forest_locale", 'village_south_village'); }; obj { nam = '#foresters_car'; - act = translate(forest_locale, 'village_south_car'); + act = translate("forest_locale", 'village_south_car'); }; obj { nam = '#foresters_hut_out'; - act = translate(forest_locale, 'village_south_hut'); + act = translate("forest_locale", 'village_south_hut'); }; 'sun_transformed'; 'clouds'; @@ -469,91 +469,91 @@ room { end; theme = 'main'; nofollow = true; - disp = translate(forest_locale, 'foresters_hut'); + disp = translate("forest_locale", 'foresters_hut'); enter = function(s) if s.state == 0 then s.state = 1; - return translate_now(forest_locale, 'foresters_hut_enter'); + return translate_now("forest_locale", 'foresters_hut_enter'); end; end; - decor = translate(forest_locale, 'foresters_hut_decor'); + decor = translate("forest_locale", 'foresters_hut_decor'); way = { - path {'#out', translate(forest_locale, 'transition_out'), 'village_south'}; + path {'#out', translate("forest_locale", 'transition_out'), 'village_south'}; } }:with { obj { nam = '#sofa'; - act = translate(forest_locale, 'foresters_hut_sofa'); + act = translate("forest_locale", 'foresters_hut_sofa'); }; obj { nam = '#cupboard'; - act = translate(forest_locale, 'foresters_hut_cupboard'); + act = translate("forest_locale", 'foresters_hut_cupboard'); }; obj { nam = '#table'; - act = translate(forest_locale, 'foresters_hut_table'); + act = translate("forest_locale", 'foresters_hut_table'); }; obj { nam = '#chairs'; - act = translate(forest_locale, 'foresters_hut_chairs'); + act = translate("forest_locale", 'foresters_hut_chairs'); }; obj { nam = '#radio'; - act = translate(forest_locale, 'foresters_hut_radio'); + act = translate("forest_locale", 'foresters_hut_radio'); }; obj { bought = false; nam = 'forester'; - dsc = translate(forest_locale, 'foresters_hut_forester'); + dsc = translate("forest_locale", 'foresters_hut_forester'); act = function(s) walkin('forester_dlg'); end; used = function(s, o) if o^'raspberry_pie' then - return translate_now(forest_locale, 'foresters_hut_forester_pie'); + return translate_now("forest_locale", 'foresters_hut_forester_pie'); else - return translate_now(forest_locale, 'foresters_hut_not_interested'); + return translate_now("forest_locale", 'foresters_hut_not_interested'); end; end; }; obj { nam = 'rope'; - disp = translate(forest_locale, 'foresters_hut_rope_disp'); - dsc = translate(forest_locale, 'foresters_hut_rope'); + disp = translate("forest_locale", 'foresters_hut_rope_disp'); + dsc = translate("forest_locale", 'foresters_hut_rope'); act = function(s) if _('forester').bought then - p(translate_now(forest_locale, 'foresters_hut_rope_taken')); + p(translate_now("forest_locale", 'foresters_hut_rope_taken')); take('rope') else - p(translate_now(forest_locale, 'foresters_hut_rope_not_taken')); + p(translate_now("forest_locale", 'foresters_hut_rope_not_taken')); end; end; - inv = translate(forest_locale, 'foresters_hut_rope_inv'); + inv = translate("forest_locale", 'foresters_hut_rope_inv'); }; } dlg { nam = 'forester_dlg'; - disp = translate(forest_locale, 'forester_dlg_disp'); + disp = translate("forest_locale", 'forester_dlg_disp'); theme = 'main'; pic = 'images/characters/forester.png'; - enter = translate(forest_locale, 'forester_dlg_enter'); + enter = translate("forest_locale", 'forester_dlg_enter'); phr = { - {translate(forest_locale, 'common_dlg_greet'), translate(forest_locale, 'forester_dlg_greet_response'), - {translate(forest_locale, 'common_dlg_places'), translate(forest_locale, 'forester_dlg_places_response')}; + {translate("forest_locale", 'common_dlg_greet'), translate("forest_locale", 'forester_dlg_greet_response'), + {translate("forest_locale", 'common_dlg_places'), translate("forest_locale", 'forester_dlg_places_response')}; }, - {cond=function(s) return where('rope') and where('rope')^'foresters_hut' and not _('forester').bought end, translate(forest_locale, 'forester_dlg_rope'), function(s) - p(translate_now(forest_locale, 'forester_dlg_rope_response')); + {cond=function(s) return where('rope') and where('rope')^'foresters_hut' and not _('forester').bought end, translate("forest_locale", 'forester_dlg_rope'), function(s) + p(translate_now("forest_locale", 'forester_dlg_rope_response')); raspberry_pie_status = 1; end}, - {cond=function(s) return have 'raspberry_pie' end, translate(forest_locale, 'forester_dlg_pie'), function(s) + {cond=function(s) return have 'raspberry_pie' end, translate("forest_locale", 'forester_dlg_pie'), function(s) remove('raspberry_pie', pl); - p(translate_now(forest_locale, 'forester_dlg_pie_response')); + p(translate_now("forest_locale", 'forester_dlg_pie_response')); raspberry_pie_status = 2; _('forester').bought = 1; end}, - {true, translate(forest_locale, 'forester_dlg_farewell'), function(s) - p(translate_now(forest_locale, 'forester_dlg_farewell_response')); + {true, translate("forest_locale", 'common_dlg_bye'), function(s) + p(translate_now("forest_locale", 'forester_dlg_farewell_response')); walkout(); end} } @@ -564,51 +564,51 @@ room { nofollow = true; pic = 'images/village_center.png'; theme = 'main'; - disp = translate(forest_locale, 'village_center'); + disp = translate("forest_locale", 'village_center'); decor = function(s) - p(translate_now(forest_locale, 'village_center_decor')); - p(translate_now(forest_locale, 'village_all_decor')); + p(translate_now("forest_locale", 'village_center_decor')); + p(translate_now("forest_locale", 'village_all_decor')); end; way = { - path {translate(forest_locale, 'transition_south_to_hut'), 'village_south'}; - path {'#down', translate(forest_locale, 'transition_inside_well'), 'inside_well'}:disable(); - path {translate(forest_locale, 'transition_inside_town_hall'), 'townhall'}; - path {translate(forest_locale, 'transition_inside_tavern'), 'tavern'}; - path {translate(forest_locale, 'transition_north_to_library'), 'village_north'}; + path {translate("forest_locale", 'transition_south_to_hut'), 'village_south'}; + path {'#down', translate("forest_locale", 'transition_inside_well'), 'inside_well'}:disable(); + path {translate("forest_locale", 'transition_inside_town_hall'), 'townhall'}; + path {translate("forest_locale", 'transition_inside_tavern'), 'tavern'}; + path {translate("forest_locale", 'transition_north_to_library'), 'village_north'}; }; }: with { obj { nam = '#townhall'; - act = translate(forest_locale, 'village_center_townhall'); + act = translate("forest_locale", 'village_center_townhall'); }; obj { nam = '#music'; - act = translate(forest_locale, 'village_center_music'); + act = translate("forest_locale", 'village_center_music'); }; obj { nam = '#tavern'; - act = translate(forest_locale, 'village_center_tavern'); + act = translate("forest_locale", 'village_center_tavern'); }; obj { nam = '#library'; - act = translate(forest_locale, 'village_center_library'); + act = translate("forest_locale", 'village_center_library'); }; obj { known = false; nam = 'village_well'; dsc = function(s) - p(translate_now(forest_locale, 'village_well_dsc')); + p(translate_now("forest_locale", 'village_well_dsc')); if _('inside_well').state then - p(translate_now(forest_locale, 'village_well_dsc_rope')); + p(translate_now("forest_locale", 'village_well_dsc_rope')); end; end; act = function(s) if s.known then _'#down':enable(); - p(translate_now(forest_locale, 'village_well_act_key')); + p(translate_now("forest_locale", 'village_well_act_key')); else - p(translate_now(forest_locale, 'village_well_act')); + p(translate_now("forest_locale", 'village_well_act')); end; end; used = function(s, o) @@ -616,7 +616,7 @@ room { _'#down':enable(); _('inside_well').state = true; remove('rope', pl); - p(translate_now(forest_locale, 'village_well_used')); + p(translate_now("forest_locale", 'village_well_used')); else return false; end; @@ -625,23 +625,23 @@ room { obj { nam = 'maid'; dsc = function(s) - p(translate_now(forest_locale, 'village_maid_dsc')); + p(translate_now("forest_locale", 'village_maid_dsc')); if _('maid_dlg').flower then - p(translate_now(forest_locale, 'village_maid_flower')); + p(translate_now("forest_locale", 'village_maid_flower')); end; end; act = function(s) if _('maid_dlg').flower and (raspberry_pie_status == 0 or raspberry_pie_status == 2) then - return translate_now(forest_locale, 'village_maid_act'); + return translate_now("forest_locale", 'maid_dlg_enter') .. ' ' .. translate_now("forest_locale", 'village_maid_act_no_dlg'); else walkin('maid_dlg'); end; end; used = function(s, o) if o^'flower' then - return translate_now(forest_locale, 'village_maid_used_flower'); + return translate_now("forest_locale", 'village_maid_used_flower'); else - return translate_now(forest_locale, 'village_maid_used_other'); + return translate_now("forest_locale", 'village_maid_used_other'); end; end; }; @@ -651,7 +651,7 @@ room { dlg { nam = 'maid_dlg'; - disp = translate(forest_locale, 'maid_dlg'); + disp = translate("forest_locale", 'maid_dlg'); theme = 'main'; pic = function(s) if s.flower then @@ -665,86 +665,88 @@ dlg { work_asked = false; pie_asked = false; enter = function(s) + p(translate_now("forest_locale", 'maid_dlg_enter')); if _('maid_dlg').flower then - return translate_now(forest_locale, 'maid_dlg_enter_flower'); + p(translate_now("forest_locale", 'maid_dlg_enter_with_flower')); + p(translate_now("forest_locale", 'village_maid_flower')); else - return translate_now(forest_locale, 'maid_dlg_enter_no_flower'); + p(translate_now("forest_locale", 'maid_dlg_enter_no_flower')); end; end; phr = { - {cond=function(s) return not _('maid_dlg').flower end, translate(forest_locale, 'common_dlg_greet'), translate(forest_locale, 'maid_dlg_greet_response'), - {translate(forest_locale, 'common_dlg_places'), translate(forest_locale, 'maid_dlg_places_response'), - {translate(forest_locale, 'maid_dlg_places_like'), translate(forest_locale, 'maid_dlg_places_like_response'), only=true, + {cond=function(s) return not _('maid_dlg').flower end, translate("forest_locale", 'common_dlg_greet'), translate("forest_locale", 'maid_dlg_greet_response'), + {translate("forest_locale", 'common_dlg_places'), translate("forest_locale", 'maid_dlg_places_response'), + {translate("forest_locale", 'maid_dlg_places_like'), translate("forest_locale", 'maid_dlg_places_like_response'), only=true, { cond=function(s) return have 'flower' end, - translate(forest_locale, 'maid_dlg_flower'), + translate("forest_locale", 'maid_dlg_flower'), function(s) _('maid_dlg').flower = 1; remove('flower', pl); - p(translate_now(forest_locale, 'maid_dlg_flower_response')); + p(translate_now("forest_locale", 'maid_dlg_flower_response')); end }; { - translate(forest_locale, 'maid_dlg_silent'), - translate(forest_locale, 'maid_dlg_silent_response') + translate("common_locale", 'dlg_keep_silent'), + translate("forest_locale", 'maid_dlg_silent_response') } }; }; }; - {cond=function(s) return not _('maid_dlg').work_asked end, translate(forest_locale, 'maid_dlg_tavern'), function(s) + {cond=function(s) return not _('maid_dlg').work_asked end, translate("forest_locale", 'maid_dlg_tavern'), function(s) _('maid_dlg').work_asked = true; - return translate_now(forest_locale, 'maid_dlg_tavern_response'); + return translate_now("forest_locale", 'maid_dlg_tavern_response'); end}; { cond=function(s) return _('maid_dlg').pie_asked and have 'flower' end, - translate(forest_locale, 'maid_dlg_flower'), + translate("forest_locale", 'maid_dlg_flower'), function(s) _('maid_dlg').flower = 1; remove('flower', pl); raspberry_pie_status = 2; take 'raspberry_pie' - p(translate_now(forest_locale, 'maid_dlg_pie_response')); + p(translate_now("forest_locale", 'maid_dlg_pie_response')); end }; { cond=function(s) return _('maid_dlg').work_asked and not _('maid_dlg').pie_asked and _('maid_dlg').flower and raspberry_pie_status == 1; end; - translate(forest_locale, 'maid_dlg_pie'), + translate("forest_locale", 'maid_dlg_pie'), function(s) raspberry_pie_status = 2; take 'raspberry_pie' - p(translate_now(forest_locale, 'maid_dlg_pie_response')); + p(translate_now("forest_locale", 'maid_dlg_pie_response')); end; }; { cond=function(s) return _('maid_dlg').work_asked and not _('maid_dlg').pie_asked and not _('maid_dlg').flower and raspberry_pie_status == 1; end; - translate(forest_locale, 'maid_dlg_pie'), - translate(forest_locale, 'maid_dlg_pie_fail_response'), only=true, + translate("forest_locale", 'maid_dlg_pie'), + translate("forest_locale", 'maid_dlg_pie_fail_response'), only=true, { - translate(forest_locale, 'maid_dlg_no_money'), function(s) + translate("forest_locale", 'maid_dlg_no_money'), function(s) _('maid_dlg').pie_asked = 1; - p(translate_now(forest_locale, 'maid_dlg_no_money_response')); + p(translate_now("forest_locale", 'maid_dlg_no_money_response')); end, only=true, { cond=function(s) return have 'flower' end, - translate(forest_locale, 'maid_dlg_flower'), + translate("forest_locale", 'maid_dlg_flower'), function(s) _('maid_dlg').flower = 1; remove('flower', pl); raspberry_pie_status = 2; take('raspberry_pie'); - p(translate_now(forest_locale, 'maid_dlg_pie_response')); + p(translate_now("forest_locale", 'maid_dlg_pie_response')); end }; - {translate(forest_locale, 'maid_dlg_flower_agree'), translate(forest_locale, 'maid_dlg_flower_agree_response')}; - {translate(forest_locale, 'maid_dlg_flower_think'), translate(forest_locale, 'maid_dlg_flower_think_response')}; + {translate("forest_locale", 'maid_dlg_flower_agree'), translate("forest_locale", 'maid_dlg_flower_agree_response')}; + {translate("forest_locale", 'maid_dlg_flower_think'), translate("forest_locale", 'maid_dlg_flower_think_response')}; }, { - translate(forest_locale, 'maid_dlg_pie_ask'), translate(forest_locale, 'maid_dlg_pie_ask_response') + translate("forest_locale", 'maid_dlg_pie_ask'), translate("forest_locale", 'maid_dlg_pie_ask_response') } }; { - translate(forest_locale, 'maid_dlg_bye'), function(s) - p(translate_now(forest_locale, 'maid_dlg_bye_response')); + translate("forest_locale", 'maid_dlg_bye'), function(s) + p(translate_now("forest_locale", 'maid_dlg_bye_response')); walkout(); end } @@ -760,41 +762,41 @@ room { return 'images/tavern.png;images/tavern_pie.png@181,124'; end; end; - disp = translate(forest_locale, 'tavern'); + disp = translate("forest_locale", 'tavern'); theme = 'main'; nofollow = true; - decor = translate(forest_locale, 'tavern_decor'); + decor = translate("forest_locale", 'tavern_decor'); way = { - path {'#outside', translate(forest_locale, 'transition_out'), 'village_center'}; + path {'#outside', translate("forest_locale", 'transition_out'), 'village_center'}; }; }: with { obj { nam = '#windows'; - act = translate(forest_locale, 'tavern_windows'); + act = translate("forest_locale", 'tavern_windows'); }; obj { nam = '#tables'; - act = translate(forest_locale, 'tavern_tables'); + act = translate("forest_locale", 'tavern_tables'); }; obj { nam = '#walls'; - act = translate(forest_locale, 'tavern_walls'); + act = translate("forest_locale", 'tavern_walls'); }; obj { nam = '#lights'; - act = translate(forest_locale, 'tavern_lights'); + act = translate("forest_locale", 'tavern_lights'); }; obj { nam = '#fireplace'; - act = translate(forest_locale, 'tavern_fireplace'); + act = translate("forest_locale", 'tavern_fireplace'); }; obj { nam = '#cauldron'; - act = translate(forest_locale, 'tavern_cauldron'); + act = translate("forest_locale", 'tavern_cauldron'); }; obj { nam = 'tavernkeeper'; - dsc = translate(forest_locale, 'tavern_keeper'); + dsc = translate("forest_locale", 'tavern_keeper'); act = function(s) walkin 'tavernkeeper_dlg' end; @@ -804,20 +806,20 @@ room { dlg { nam = 'tavernkeeper_dlg'; noinv = true; - title = translate(forest_locale, 'tavernkeeper_dlg'); + title = translate("forest_locale", 'tavernkeeper_dlg'); pic = 'images/characters/tavernkeeper.png'; theme = 'main'; - enter = translate(forest_locale, 'tavernkeeper_dlg_enter'); + enter = translate("forest_locale", 'tavernkeeper_dlg_enter'); phr = { - {translate(forest_locale, 'common_dlg_greet'), translate(forest_locale, 'tavernkeeper_dlg_greet_response'), - {translate(forest_locale, 'tavernkeeper_dlg_money'), translate(forest_locale, 'tavernkeeper_dlg_money_response')}; - {translate(forest_locale, 'common_dlg_places'), translate(forest_locale, 'tavernkeeper_dlg_places_response')}; + {translate("forest_locale", 'common_dlg_greet'), translate("forest_locale", 'tavernkeeper_dlg_greet_response'), + {translate("forest_locale", 'tavernkeeper_dlg_money'), translate("forest_locale", 'tavernkeeper_dlg_money_response')}; + {translate("forest_locale", 'common_dlg_places'), translate("forest_locale", 'tavernkeeper_dlg_places_response')}; }; - {cond=function(s) return raspberry_pie_status == 1; end, translate(forest_locale, 'tavernkeeper_dlg_pie'), translate(forest_locale, 'tavernkeeper_dlg_pie_response'), - {translate(forest_locale, 'tavernkeeper_dlg_pie_2'), translate(forest_locale, 'tavernkeeper_dlg_pie_response_2')} + {cond=function(s) return raspberry_pie_status == 1; end, translate("forest_locale", 'tavernkeeper_dlg_pie'), translate("forest_locale", 'tavernkeeper_dlg_pie_response'), + {translate("forest_locale", 'tavernkeeper_dlg_pie_2'), translate("forest_locale", 'tavernkeeper_dlg_pie_response_2')} }; - {true, translate(forest_locale, 'tavernkeeper_dlg_bye'), function(s) - p(translate_now(forest_locale, 'tavernkeeper_dlg_bye_response')); + {true, translate("forest_locale", 'common_dlg_bye'), function(s) + p(translate_now("forest_locale", 'tavernkeeper_dlg_bye_response')); walkout(); end}; }; @@ -827,52 +829,52 @@ room { nam = 'townhall'; pic='images/townhall.png'; theme = 'main'; - title = translate(forest_locale, 'townhall'); + title = translate("forest_locale", 'townhall'); nofollow = true; - decor = translate(forest_locale, 'townhall_decor'); + decor = translate("forest_locale", 'townhall_decor'); onexit = function(s) if have 'oil' then - p(translate_now(forest_locale, 'townhall_onexit')); + p(translate_now("forest_locale", 'townhall_onexit')); return false; end; end; way = { - path {'#out', translate(forest_locale, 'transition_out'), 'village_center'}; + path {'#out', translate("forest_locale", 'transition_out'), 'village_center'}; }; }: with { obj { nam = '#ceiling'; - act = translate(forest_locale, 'townhall_ceiling'); + act = translate("forest_locale", 'townhall_ceiling'); }; obj { nam = '#chandelier'; - act = translate(forest_locale, 'townhall_chandelier'); + act = translate("forest_locale", 'townhall_chandelier'); }; obj { nam = '#curtains'; - act = translate(forest_locale, 'townhall_curtains'); + act = translate("forest_locale", 'townhall_curtains'); }; obj { nam = '#table'; - act = translate(forest_locale, 'townhall_table'); + act = translate("forest_locale", 'townhall_table'); }; obj { nam = '#chairs'; - act = translate(forest_locale, 'townhall_chairs'); + act = translate("forest_locale", 'townhall_chairs'); }; obj { nam = '#head'; - act = translate(forest_locale, 'townhall_head'); + act = translate("forest_locale", 'townhall_head'); }; obj { flask = true; nam = 'cabinet'; - dsc = translate(forest_locale, 'townhall_cabinet'); + dsc = translate("forest_locale", 'townhall_cabinet'); act = function(s) if s.flask then - return translate_now(forest_locale, 'townhall_cabinet_act_oil'); + return translate_now("forest_locale", 'townhall_cabinet_act_oil'); else - return translate_now(forest_locale, 'townhall_cabinet_act'); + return translate_now("forest_locale", 'townhall_cabinet_act'); end; end; used = function(s, o) @@ -880,30 +882,30 @@ room { s.flask = true; remove(o, pl); put(o, 'townhall'); - return translate_now(forest_locale, 'townhall_cabinet_used_oil'); + return translate_now("forest_locale", 'townhall_cabinet_used_oil'); end; end; }:with { obj { nam = 'records'; - act = translate(forest_locale, 'townhall_cabinet_records'); + act = translate("forest_locale", 'townhall_cabinet_records'); }; obj { nam = 'parts'; - act = translate(forest_locale, 'townhall_cabinet_parts'); + act = translate("forest_locale", 'townhall_cabinet_parts'); }; obj { nam = 'oil'; - disp = translate(forest_locale, 'townhall_cabinet_oil'); + disp = translate("forest_locale", 'townhall_cabinet_oil'); tak = function(s) _('cabinet').flask = false; - return translate_now(forest_locale, 'townhall_cabinet_oil_tak'); + return translate_now("forest_locale", 'townhall_cabinet_oil_tak'); end; - inv = translate(forest_locale, 'townhall_cabinet_oil_inv'); + inv = translate("forest_locale", 'townhall_cabinet_oil_inv'); }; obj { nam = 'record_player'; - act = translate(forest_locale, 'townhall_cabinet_record_player'); + act = translate("forest_locale", 'townhall_cabinet_record_player'); }; }; } @@ -914,23 +916,23 @@ room { nam = 'inside_well'; theme = 'tower'; pic = 'images/oldwell.png'; - disp = translate(forest_locale, 'inside_well'); + disp = translate("forest_locale", 'inside_well'); onenter = function(s) if not s.state then - p(translate_now(forest_locale, 'inside_well_enter')); + p(translate_now("forest_locale", 'inside_well_enter')); return false; end; end; - decor = translate(forest_locale, 'inside_well_decor'); + decor = translate("forest_locale", 'inside_well_decor'); way = { - path {translate(forest_locale, 'transition_up'), 'village_center'}; + path {translate("forest_locale", 'transition_up'), 'village_center'}; } }:with { obj { nam = 'loose_rock'; - dsc = translate(forest_locale, 'inside_well_loose_rock'); + dsc = translate("forest_locale", 'inside_well_loose_rock'); act = function(s) - p(translate_now(forest_locale, 'inside_well_loose_rock_act')); + p(translate_now("forest_locale", 'inside_well_loose_rock_act')); take('hidden_key'); s:disable(); end; @@ -939,46 +941,46 @@ room { obj { nam = 'hidden_key'; - disp = translate(forest_locale, 'hidden_key_disp'); - disp2 = translate(forest_locale, 'hidden_key_disp2'); - disp3 = translate(forest_locale, 'hidden_key_disp3'); - inv = translate(forest_locale, 'hidden_key_inv'); + disp = translate("forest_locale", 'hidden_key_disp'); + disp2 = translate("forest_locale", 'hidden_key_disp2'); + disp3 = translate("forest_locale", 'hidden_key_disp3'); + inv = translate("forest_locale", 'hidden_key_inv'); } room { nam = 'village_north'; pic = 'images/village_north.png'; - disp = translate(forest_locale, 'village_north'); + disp = translate("forest_locale", 'village_north'); theme = 'main'; nofollow = true; decor = function(s) - p(translate_now(forest_locale, 'village_north_decor')); - p(translate_now(forest_locale, 'village_all_decor')); + p(translate_now("forest_locale", 'village_north_decor')); + p(translate_now("forest_locale", 'village_all_decor')); end; way = { - path {'#south', translate(forest_locale, 'transition_south_to_town_hall'), 'village_center'}; - path {'#in', translate(forest_locale, 'transition_inside_library'), 'library'}; + path {'#south', translate("forest_locale", 'transition_south_to_town_hall'), 'village_center'}; + path {'#in', translate("forest_locale", 'transition_inside_library'), 'library'}; }; }: with { obj { nam = '#village'; - act = translate(forest_locale, 'village_north_village'); + act = translate("forest_locale", 'village_north_village'); }; obj { nam = '#road'; - act = translate(forest_locale, 'village_north_road'); + act = translate("forest_locale", 'village_north_road'); }; obj { nam = '#forest'; - act = translate(forest_locale, 'village_north_forest'); + act = translate("forest_locale", 'village_north_forest'); }; obj { nam = '#library'; - act = translate(forest_locale, 'village_north_library'); + act = translate("forest_locale", 'village_north_library'); }; obj { nam = '#mountains'; - act = translate(forest_locale, 'village_north_mountains'); + act = translate("forest_locale", 'village_north_mountains'); }; 'sun_transformed'; 'clouds'; @@ -987,53 +989,53 @@ room { room { nam = 'library'; pic = 'images/library.png'; - disp = translate(forest_locale, 'library'); + disp = translate("forest_locale", 'library'); theme = 'main'; nofollow = true; - decor = translate(forest_locale, 'library_decor'); + decor = translate("forest_locale", 'library_decor'); way = { - path {'#out', translate(forest_locale, 'transition_out'), 'village_north'}; - path {'library_hidden_path', translate(forest_locale, 'transition_to_hidden_room'), 'library_hidden_room'}:disable(); + path {'#out', translate("forest_locale", 'transition_out'), 'village_north'}; + path {'library_hidden_path', translate("forest_locale", 'transition_to_hidden_room'), 'library_hidden_room'}:disable(); }; }:with { obj { nam = 'librarian'; - dsc = translate(forest_locale, 'library_librarian'); + dsc = translate("forest_locale", 'library_librarian'); act = function(s) walkin 'librarian_dlg' end; used = function(s, o) if o^'box' then - return translate_now(forest_locale, 'library_librarian_used_box'); + return translate_now("forest_locale", 'library_librarian_used_box'); else - return translate_now(forest_locale, 'library_librarian_used_other'); + return translate_now("forest_locale", 'library_librarian_used_other'); end; end; }; obj { nam = '#tables'; - act = translate(forest_locale, 'library_tables'); + act = translate("forest_locale", 'library_tables'); }; obj { nam = '#chairs'; - act = translate(forest_locale, 'library_chairs'); + act = translate("forest_locale", 'library_chairs'); }; obj { nam = '#lamps'; - act = translate(forest_locale, 'library_lamps'); + act = translate("forest_locale", 'library_lamps'); }; obj { nam = '#windows'; - act = translate(forest_locale, 'library_windows'); + act = translate("forest_locale", 'library_windows'); }; obj { state = 0; nam = 'library_shelves'; act = function(s) if s.state == 0 then - p(translate_now(forest_locale, 'library_shelves_act_first')); + p(translate_now("forest_locale", 'library_shelves_act_first')); else - p(translate_now(forest_locale, 'library_shelves_act')); + p(translate_now("forest_locale", 'library_shelves_act')); end; end; }, @@ -1041,7 +1043,7 @@ room { nam = 'library_the_shelf'; act = function(s) if _'library_shelves'.state == 0 then - p(translate_now(forest_locale, 'library_the_shelf_act', {word=library_word})); + p(translate_now("forest_locale", 'library_the_shelf_act', {word=library_word})); end; _'library_shelves'.state = 1; walkin('library_shelf_puzzle'); @@ -1058,12 +1060,12 @@ room { room { nam = 'library_notice_inside'; pic = 'images/library.png'; - disp = translate(forest_locale, 'library'); + disp = translate("forest_locale", 'library'); theme = 'main'; nofollow = true; - decor = translate(forest_locale, 'library_notice_inside_decor'); + decor = translate("forest_locale", 'library_notice_inside_decor'); way = { - path {translate(common_locale, 'back'), 'library'}; + path {translate("common_locale", 'back'), 'library'}; }; } @@ -1073,25 +1075,25 @@ dlg { pic = 'images/characters/librarian.png'; theme = 'main'; noinv = true; - title = translate(forest_locale, 'librarian_dlg'); + title = translate("forest_locale", 'librarian_dlg'); enter = function(s) seen_ring_librarian = true; - return translate_now(forest_locale, 'librarian_dlg_enter'); + return translate_now("forest_locale", 'librarian_dlg_enter'); end; phr = { - {translate(forest_locale, 'common_dlg_greet'), translate(forest_locale, 'librarian_dlg_greet_response'), - {translate(forest_locale, 'common_dlg_places'), translate(forest_locale, 'librarian_dlg_places_response'), - {translate(forest_locale, 'librarian_dlg_library'), translate(forest_locale, 'librarian_dlg_library_response')}; - {translate(forest_locale, 'librarian_dlg_library_old'), translate(forest_locale, 'librarian_dlg_library_old_response')}; + {translate("forest_locale", 'common_dlg_greet'), translate("forest_locale", 'librarian_dlg_greet_response'), + {translate("forest_locale", 'common_dlg_places'), translate("forest_locale", 'librarian_dlg_places_response'), + {translate("forest_locale", 'librarian_dlg_library'), translate("forest_locale", 'librarian_dlg_library_response')}; + {translate("forest_locale", 'librarian_dlg_library_old'), translate("forest_locale", 'librarian_dlg_library_old_response')}; }, - {translate(forest_locale, 'librarian_dlg_ring'), translate(forest_locale, 'librarian_dlg_ring_response')} + {translate("forest_locale", 'librarian_dlg_ring'), translate("forest_locale", 'librarian_dlg_ring_response')} }, - {cond=function(s) return seen_ring_box; end, translate(forest_locale, 'librarian_dlg_ring_look'), function(s) + {cond=function(s) return seen_ring_box; end, translate("forest_locale", 'librarian_dlg_ring_look'), function(s) _('village_well').known = 1; - return translate_now(forest_locale, 'librarian_dlg_ring_look_response'); + return translate_now("forest_locale", 'librarian_dlg_ring_look_response'); end}; - {true, translate(forest_locale, 'librarian_dlg_bye'), function(s) - p(translate_now(forest_locale, 'librarian_dlg_bye_response')); + {true, translate("forest_locale", 'common_dlg_bye'), function(s) + p(translate_now("forest_locale", 'librarian_dlg_bye_response')); walkout(); end} } @@ -1101,10 +1103,12 @@ function book(number) return obj { book = number; nam = 'book_' .. tostring(number); - disp = translate(forest_locale, 'library_shelf_book_disp', {number=number}); - dsc = translate(forest_locale, 'library_shelf_book_dsc', {number=number}); - tak = translate(forest_locale, 'library_shelf_book_tak'); - inv = translate(forest_locale, 'library_shelf_book_inv'); + disp = translate("forest_locale", 'library_shelf_book_disp', {number=number}); + dsc = function(s) + return '{"' .. translate_now("forest_locale", 'library_shelf_book_disp', {number=number}) .. '"}'; + end; + tak = translate("forest_locale", 'library_shelf_book_tak'); + inv = translate("forest_locale", 'library_shelf_book_inv'); used = function(s, o) if o.book and where(s)^'shelf' then local t = _'shelf'.obj; @@ -1118,14 +1122,14 @@ function book(number) remove(o, pl); _'shelf'.obj:add(o, idx); - p(translate_now(forest_locale, 'library_shelf_puzzle_used_book')); + p(translate_now("forest_locale", 'library_shelf_puzzle_used_book')); if #t == 9 then for i = 1, 9 do if library_book_map[t[i].book] ~= i then return; end; end; - p(translate_now(forest_locale, 'library_shelf_puzzle_used_book_success')); + p(translate_now("forest_locale", 'library_shelf_puzzle_used_book_success')); disable 'library_shelves' enable 'library_hidden_path' walkout() @@ -1140,11 +1144,11 @@ end; room { nam = 'library_shelf_puzzle'; nofollow = true; - disp = translate(forest_locale, 'library'); + disp = translate("forest_locale", 'library'); theme = 'main'; onexit = function(s) if have('book_1') or have('book_2') or have('book_3') or have('book_4') or have('book_5') or have('book_6') or have('book_7') or have('book_8')or have('book_9') then - p(translate_now(forest_locale, 'leave_books_message')); + p(translate_now("forest_locale", 'leave_books_message')); return false; end; end; @@ -1156,7 +1160,7 @@ room { return pic; end; way = { - path {'#back', translate(forest_locale, 'transition_away_from_bookstand'), 'library'}; + path {'#back', translate("forest_locale", 'transition_away_from_bookstand'), 'library'}; }; }:with { obj { @@ -1164,21 +1168,21 @@ room { dsc = function(s) local count = #s.obj; if count > 1 then - p(translate_now(forest_locale, 'library_shelf_puzzle_shelf_multiple')); + p(translate_now("forest_locale", 'library_shelf_puzzle_shelf_multiple')); elseif count == 1 then - p(translate_now(forest_locale, 'library_shelf_puzzle_shelf_single')); + p(translate_now("forest_locale", 'library_shelf_puzzle_shelf_single')); else - p(translate_now(forest_locale, 'library_shelf_puzzle_shelf_none')); + p(translate_now("forest_locale", 'library_shelf_puzzle_shelf_none')); end; end; act = function(s) - return translate_now(forest_locale, 'library_shelf_puzzle_shelf_act', {word=library_word}); + return translate_now("forest_locale", 'library_shelf_puzzle_shelf_act', {word=library_word}); end; used = function(s, o) if o.book then remove(o, pl); _'shelf'.obj:add(o); - p(translate_now(forest_locale, 'library_shelf_puzzle_used_book')); + p(translate_now("forest_locale", 'library_shelf_puzzle_used_book')); if #s.obj == 9 then for i = 1, 9 do @@ -1186,7 +1190,7 @@ room { return; end; end; - p(translate_now(forest_locale, 'library_shelf_puzzle_used_book_success')); + p(translate_now("forest_locale", 'library_shelf_puzzle_used_book_success')); disable 'library_shelves' enable 'library_hidden_path' walkout() @@ -1217,41 +1221,41 @@ room { return 'images/library_hidden_room.png'; end; end; - disp = translate(forest_locale, 'library_hidden_room'); + disp = translate("forest_locale", 'library_hidden_room'); theme = 'main'; nofollow = true; - decor = translate(forest_locale, 'library_hidden_room_decor'); + decor = translate("forest_locale", 'library_hidden_room_decor'); way = { - path {translate(forest_locale, 'transition_to_main_hall'), 'library'}; + path {translate("forest_locale", 'transition_to_main_hall'), 'library'}; }; }:with { obj { nam = '#table'; - act = translate(forest_locale, 'library_hidden_room_table'); + act = translate("forest_locale", 'library_hidden_room_table'); }; obj { oiled = false; opened = false; lock_taken = false; nam = 'box'; - disp = translate(forest_locale, 'box_disp'); - disp2 = translate(forest_locale, 'box_disp2'); - disp3 = translate(forest_locale, 'box_disp3'); - dsc = translate(forest_locale, 'box_dsc'); - tak = translate(forest_locale, 'box_tak'); + disp = translate("forest_locale", 'box_disp'); + disp2 = translate("forest_locale", 'box_disp2'); + disp3 = translate("forest_locale", 'box_disp3'); + dsc = translate("forest_locale", 'box_dsc'); + tak = translate("forest_locale", 'box_tak'); inv = function(s) seen_ring_box = true; if s.lock_taken then - p(translate_now(forest_locale, 'box_inv_without_lock')); + p(translate_now("forest_locale", 'box_inv_without_lock')); elseif s.opened then s.lock_taken = true; - p(translate_now(forest_locale, 'box_inv_take_lock')); + p(translate_now("forest_locale", 'box_inv_take_lock')); take('lock'); remove('box', pl); else - p(translate_now(forest_locale, 'box_inv')); + p(translate_now("forest_locale", 'box_inv')); if seen_ring_librarian then - p(translate_now(forest_locale, 'box_inv_known')); + p(translate_now("forest_locale", 'box_inv_known')); end; end; end; @@ -1260,16 +1264,16 @@ room { if s.oiled then s.opened = true; take('map'); - p(translate_now(forest_locale, 'box_used_key_success')); + p(translate_now("forest_locale", 'box_used_key_success')); else - p(translate_now(forest_locale, 'box_used_key_failed')); + p(translate_now("forest_locale", 'box_used_key_failed')); end; elseif o^'oil' then if not s.oiled then s.oiled = true; - p(translate_now(forest_locale, 'box_used_key_oil')); + p(translate_now("forest_locale", 'box_used_key_oil')); else - p(translate_now(forest_locale, 'box_used_key_oil2')); + p(translate_now("forest_locale", 'box_used_key_oil2')); end; end; end; @@ -1278,11 +1282,11 @@ room { obj { nam = 'map'; - disp = translate(forest_locale, 'map_disp'); - disp2 = translate(forest_locale, 'map_disp2'); - disp3 = translate(forest_locale, 'map_disp3'); + disp = translate("forest_locale", 'map_disp'); + disp2 = translate("forest_locale", 'map_disp2'); + disp3 = translate("forest_locale", 'map_disp3'); inv = function(s) - p(translate_now(forest_locale, 'map_inv')); + p(translate_now("forest_locale", 'map_inv')); _('fly_west_from_village'):enable(); end; } @@ -1290,42 +1294,42 @@ obj { room { nam = 'inside_crater_glade'; pic = 'images/inside_crater_glade.png'; - disp = translate(forest_locale, 'inside_crater_glade'); + disp = translate("forest_locale", 'inside_crater_glade'); theme = 'main'; onenter = function(s) if here()^'above_crater' then - p(translate_now(forest_locale, 'inside_crater_glade_on_enter')); + p(translate_now("forest_locale", 'inside_crater_glade_on_enter')); end; end; - decor = translate(forest_locale, 'inside_crater_glade_decor'); + decor = translate("forest_locale", 'inside_crater_glade_decor'); way = { - path {translate(forest_locale, 'transition_fly'), "above_crater"}; - path {translate(forest_locale, 'transition_along_the_path'), "inside_crater_path"}; + path {translate("forest_locale", 'transition_fly'), "above_crater"}; + path {translate("forest_locale", 'transition_along_the_path'), "inside_crater_path"}; } }: with { obj { nam = '#forest'; - act = translate(forest_locale, 'inside_crater_glade_forest'); + act = translate("forest_locale", 'inside_crater_glade_forest'); }; obj { nam = '#oak'; - act = translate(forest_locale, 'inside_crater_glade_oak'); + act = translate("forest_locale", 'inside_crater_glade_oak'); }; obj { nam = '#grass'; - act = translate(forest_locale, 'inside_crater_glade_grass'); + act = translate("forest_locale", 'inside_crater_glade_grass'); }; obj { nam = '#path'; - act = translate(forest_locale, 'inside_crater_glade_path'); + act = translate("forest_locale", 'inside_crater_glade_path'); }; obj { nam = '#tower'; - act = translate(forest_locale, 'inside_crater_glade_tower'); + act = translate("forest_locale", 'inside_crater_glade_tower'); }; obj { nam = '#crater'; - act = translate(forest_locale, 'inside_crater_glade_crater'); + act = translate("forest_locale", 'inside_crater_glade_crater'); }; } @@ -1338,46 +1342,46 @@ room { end; return p; end; - disp = translate(forest_locale, 'inside_crater_path'); + disp = translate("forest_locale", 'inside_crater_path'); theme = 'main'; - decor = translate(forest_locale, 'inside_crater_path_decor'); + decor = translate("forest_locale", 'inside_crater_path_decor'); exit = function(s, t) if t^'crater_near_tower' and seen('solarscale', s) then remove('solarscale', where('solarscale')); - p(translate_now(forest_locale, 'inside_crater_path_exit')); + p(translate_now("forest_locale", 'inside_crater_path_exit')); end; end; way = { - path {translate(forest_locale, 'transition_to_glade'), "inside_crater_glade"}; - path {translate(forest_locale, 'transition_to_tower'), "crater_near_tower"}; + path {translate("forest_locale", 'transition_to_glade'), "inside_crater_glade"}; + path {translate("forest_locale", 'transition_to_tower'), "crater_near_tower"}; }; }: with { obj { nam = '#grass'; - act = translate(forest_locale, 'inside_crater_path_grass'); + act = translate("forest_locale", 'inside_crater_path_grass'); }; obj { nam = '#crater'; - act = translate(forest_locale, 'inside_crater_path_crater') + act = translate("forest_locale", 'inside_crater_path_crater') }; obj { nam = '#trees'; - act = translate(forest_locale, 'inside_crater_path_trees') + act = translate("forest_locale", 'inside_crater_path_trees') }; obj { nam = '#tower'; - act = translate(forest_locale, 'inside_crater_path_tower') + act = translate("forest_locale", 'inside_crater_path_tower') }; obj { nam = '#stump'; dsc = function(s) if seen('solarscale', here()) then - p(translate_now(forest_locale, 'inside_crater_path_stump_with_solarscale')); + p(translate_now("forest_locale", 'inside_crater_path_stump_with_solarscale')); else - p(translate_now(forest_locale, 'inside_crater_path_stump')); + p(translate_now("forest_locale", 'inside_crater_path_stump')); end; end; - act = translate(forest_locale, 'inside_crater_path_stump_act'); + act = translate("forest_locale", 'inside_crater_path_stump_act'); }; obj { nam = 'solarscale'; @@ -1389,55 +1393,55 @@ room { dlg { nam = 'solarscale_dlg'; - disp = translate(solarscale_locale, 'disp'); + disp = translate("solarscale_locale", 'disp'); theme = 'main'; pic = 'images/inside_crater_path.png;images/characters/solarscale.png'; - enter = translate(solarscale_locale, 'first_dlg_enter'); + enter = translate("solarscale_locale", 'first_dlg_enter'); convince = 0; open_q45 = false; phr = { - {only=true, '#q1', translate(solarscale_locale, 'first_dlg_dragon'), translate(solarscale_locale, 'first_dlg_dragon_response'), - {translate(solarscale_locale, 'first_dlg_dragon_admit'), function(s) + {only=true, '#q1', translate("solarscale_locale", 'first_dlg_dragon'), translate("solarscale_locale", 'first_dlg_dragon_response'), + {translate("solarscale_locale", 'first_dlg_dragon_admit'), function(s) _('solarscale_dlg').convince = _('solarscale_dlg').convince + 1; - return translate_now(solarscale_locale, 'first_dlg_dragon_admit_response'); + return translate_now("solarscale_locale", 'first_dlg_dragon_admit_response'); end}; - {translate(solarscale_locale, 'first_dlg_dragon_question'), translate(solarscale_locale, 'first_dlg_dragon_question_response')}; - {translate(solarscale_locale, 'first_dlg_dragon_decline'), function(s) + {translate("solarscale_locale", 'first_dlg_dragon_question'), translate("solarscale_locale", 'first_dlg_dragon_question_response')}; + {translate("solarscale_locale", 'first_dlg_dragon_decline'), function(s) _('solarscale_dlg').convince = _('solarscale_dlg').convince - 1; - return translate_now(solarscale_locale, 'first_dlg_dragon_decline_response'); + return translate_now("solarscale_locale", 'first_dlg_dragon_decline_response'); end}; }; - {only=true, '#q2', translate(solarscale_locale, 'first_dlg_about_map'), function(s) + {only=true, '#q2', translate("solarscale_locale", 'first_dlg_about_map'), function(s) _('solarscale_dlg').convince = _('solarscale_dlg').convince + 1; _('solarscale_ally').tower_know_discussed = true; - return translate_now(solarscale_locale, 'first_dlg_about_map_response'); + return translate_now("solarscale_locale", 'first_dlg_about_map_response'); end, - {translate(solarscale_locale, 'first_dlg_about_map_1'), translate(solarscale_locale, 'first_dlg_about_map_1_response')}; - {translate(solarscale_locale, 'first_dlg_about_map_2'), translate(solarscale_locale, 'first_dlg_about_map_1_response')}; - {translate(solarscale_locale, 'first_dlg_about_map_3'), function(s) + {translate("solarscale_locale", 'first_dlg_about_map_1'), translate("solarscale_locale", 'first_dlg_about_map_1_response')}; + {translate("solarscale_locale", 'first_dlg_about_map_2'), translate("solarscale_locale", 'first_dlg_about_map_1_response')}; + {translate("solarscale_locale", 'first_dlg_about_map_3'), function(s) disable('#q3'); _('solarscale_dlg').open_q45 = true; - return translate_now(solarscale_locale, 'first_dlg_about_map_3_response'); + return translate_now("solarscale_locale", 'first_dlg_about_map_3_response'); end}; }; - {'#q3', translate(solarscale_locale, 'first_dlg_unusual'), function(s) + {'#q3', translate("solarscale_locale", 'first_dlg_unusual'), function(s) _('solarscale_dlg').open_q45 = true; - return translate_now(solarscale_locale, 'first_dlg_unusual_response'); + return translate_now("solarscale_locale", 'first_dlg_unusual_response'); end}; - {cond=function(s) return _('solarscale_dlg').open_q45 end, '#q4', translate(solarscale_locale, 'first_dlg_tower'), translate(solarscale_locale, 'first_dlg_tower_response')}; - {cond=function(s) return _('solarscale_dlg').open_q45 end, '#q5', translate(solarscale_locale, 'first_dlg_tower_join'), function(s) + {cond=function(s) return _('solarscale_dlg').open_q45 end, '#q4', translate("solarscale_locale", 'first_dlg_tower'), translate("solarscale_locale", 'first_dlg_tower_response')}; + {cond=function(s) return _('solarscale_dlg').open_q45 end, '#q5', translate("solarscale_locale", 'first_dlg_tower_join'), function(s) if _('solarscale_dlg').convince >= 3 then walkout(); solarscale_with_me = true; remove('solarscale', where('solarscale')); put('solarscale_ally', here()); lifeon(_'solarscale_ally'); - return translate_now(solarscale_locale, 'first_dlg_tower_join_response_success_1'); + return translate_now("solarscale_locale", 'first_dlg_tower_join_response_success_1'); else - return translate_now(solarscale_locale, 'first_dlg_tower_join_response_fail'); + return translate_now("solarscale_locale", 'first_dlg_tower_join_response_fail'); end; end; - {translate(solarscale_locale, 'first_dlg_tower_join_1'), function(s) + {translate("solarscale_locale", 'first_dlg_tower_join_1'), function(s) _('solarscale_dlg').convince = _('solarscale_dlg').convince + 1; if _('solarscale_dlg').convince >= 3 then walkout(); @@ -1445,13 +1449,13 @@ dlg { remove('solarscale', where('solarscale')); put('solarscale_ally', here()); lifeon(_'solarscale_ally'); - return translate_now(solarscale_locale, 'first_dlg_tower_join_response_success_1'); + return translate_now("solarscale_locale", 'first_dlg_tower_join_response_success_1'); else - return translate_now(solarscale_locale, 'first_dlg_tower_join_response_fail_1'); + return translate_now("solarscale_locale", 'first_dlg_tower_join_response_fail_1'); end; end;}; - {translate(solarscale_locale, 'first_dlg_tower_join_2'), translate(solarscale_locale, 'first_dlg_tower_join_response_2')}; - {translate(solarscale_locale, 'first_dlg_tower_join_3'), function(s) + {translate("solarscale_locale", 'first_dlg_tower_join_2'), translate("solarscale_locale", 'first_dlg_tower_join_response_2')}; + {translate("solarscale_locale", 'first_dlg_tower_join_3'), function(s) _('solarscale_dlg').convince = _('solarscale_dlg').convince + 1; if _('solarscale_dlg').convince >= 3 then walkout(); @@ -1459,27 +1463,27 @@ dlg { remove('solarscale', where('solarscale')); put('solarscale_ally', here()); lifeon(_'solarscale_ally'); - return translate_now(solarscale_locale, 'first_dlg_tower_join_response_success_3'); + return translate_now("solarscale_locale", 'first_dlg_tower_join_response_success_3'); else - return translate_now(solarscale_locale, 'first_dlg_tower_join_response_fail_3'); + return translate_now("solarscale_locale", 'first_dlg_tower_join_response_fail_3'); end; end;}; - {translate(solarscale_locale, 'first_dlg_tower_bye_thanks'), function(s) + {translate("solarscale_locale", 'first_dlg_tower_bye_thanks'), function(s) walkout(); remove('solarscale', where('solarscale')); - return translate_now(solarscale_locale, 'first_dlg_tower_bye_response'); + return translate_now("solarscale_locale", 'first_dlg_tower_bye_response'); end}; }; {'#q6', function(s) if not closed('#q3') then - return translate_now(solarscale_locale, 'first_dlg_tower_bye_no_time'); + return translate_now("solarscale_locale", 'first_dlg_tower_bye_no_time'); else - return translate_now(solarscale_locale, 'first_dlg_tower_bye_thanks'); + return translate_now("solarscale_locale", 'first_dlg_tower_bye_thanks'); end; end, function(s) walkout(); remove('solarscale', where('solarscale')); - return translate_now(solarscale_locale, 'first_dlg_tower_bye_response'); + return translate_now("solarscale_locale", 'first_dlg_tower_bye_response'); end}; } } @@ -1487,31 +1491,31 @@ dlg { room { nam = 'crater_near_tower'; pic = 'images/crater_near_tower.png'; - disp = translate(forest_locale, 'crater_near_tower'); + disp = translate("forest_locale", 'crater_near_tower'); theme = 'main'; - decor = translate(forest_locale, 'crater_near_tower_decor'); + decor = translate("forest_locale", 'crater_near_tower_decor'); enter = function(s) tower_seen = true; end; way = { - path {translate(forest_locale, 'transition_along_the_path'), "inside_crater_path"}; - path {translate(forest_locale, 'transition_inside_tower'), "tower_level_1"}; + path {translate("forest_locale", 'transition_along_the_path'), "inside_crater_path"}; + path {translate("forest_locale", 'transition_inside_tower'), "tower_level_1"}; }; }:with { obj { nam = '#tower'; - act = translate(forest_locale, 'crater_near_tower_tower'); + act = translate("forest_locale", 'crater_near_tower_tower'); }; obj { nam = '#grass'; - act = translate(forest_locale, 'crater_near_tower_grass'); + act = translate("forest_locale", 'crater_near_tower_grass'); }; obj { nam = '#trees'; - act = translate(forest_locale, 'crater_near_tower_trees'); + act = translate("forest_locale", 'crater_near_tower_trees'); }; obj { nam = '#sun'; - act = translate(forest_locale, 'crater_near_tower_sun'); + act = translate("forest_locale", 'crater_near_tower_sun'); }; } diff --git a/images/title/about.png b/images/title/about.png new file mode 100644 index 0000000000000000000000000000000000000000..54c976119bae2a9ec05c9030fcef933748f1c3d0 GIT binary patch literal 2791 zc$@*}3K;c?P)PxjQmR-kwqP;bg%ptpnC=wb5ZQEQEj$K7}QR^}+ZL zSjfdVS0DCj<3kSq1B?&52NQBhAc9~BI1UKQIeDCT?J=?w$;!@*qmR*`NXnsAt?KTo z?&_YZ)<`=)5R7K3tE#)6e&4FMtEx}!v%gP)x_0AEk;QdoLHBN7FRZM-!b-x2@wc~r zZ7n~KertKz(rdPkx(e2Gj$r_*2DFMVBY?9%2`O_fi|3W0-5dDF(_yfD|yAfCya}i!QI#+@U^n=q%sY zHkmGmoo7){ItTK&!kAQt;|Svl>Slgl+vJ1tNa%l|qkz&WkOIcnZ1I8A-zyqM0p3Z5 zQ3qU-l3)}n8cJtC$}j=}kd5Y^@&dbr(T0mw<>gv(d3k_Kk_n7(2xN@`%CrEtP&xrJ z3S*4{rr873Kz3pDB|{el#->bR6luz|s4)#RGs`MrgPo9tY)93mx=-3wJ|$U4fS;Go1fL(){;NFR zmZi)EWERUPpNuI;UEn%H!c~h|KSC~{%nW2+7~yc1&(m5nQzg49Uc$5Kq=Ql@FO->p z)WsQ1V3f6VFvZEWbm68fipEprypw(_Lb~#8Xzn0p{F<#0n4;~)?@3_hfzlYrq&TC{ zUQaK-@cha=VV5#He8gbzdxIT3`mOdSyK<*$vlVjNRki`B(NCEjPO%rj8U-^iltw@% z!MNAs-zfsbXr(=R0|?3^Txla!@F-fN3 zxATnWx4$qvGMIUwOa)R0qYlKE4c{Gmo?pQk4lQA$xfg@43!`}*ih{ASTn|2%X2)Yd z3K(UjfoTe5B9N*9Od5!?Ja147qzq#k1kjl9jE?m z%{aX&m~#gfb14PN7?5EY`+X2Gvxr&Lg)u!p6Bun;z9@{sU7IKynEuFI1!brYDKAwO zY8S+d3YVRxPJmHW2Ujpg>!P~}Y`a}qDj4g}*0g=d)cg$lm_Vpc8Cb|DjJ7SJkg5Tq zzq?ka!x$aq)}OqwR<25EFy@ho#T0Q&*;4jF7)Dnh3Uy%&!ze$uSGmh9{kc5K1LJCa zoypRuQT}OQ?jL|DpzM?TjB-L<#-_?rY4~BlSXr(I7Oylr4hb;222oW`7R$I=Uk7Ll zOyR!IG0feC3UJ`E?=DpM>e2#?qO2A6nNB(8B*Lib@97%+xWOn(ZtpAx zXvXUe`jK}RDm?zvAAFa6@3wC$0lvC)!B6dNYb|A3rLyR#pL*zEOoB8j(}BiGgfXf# zI7{a}JZ~_VTKS zPb`c&S1mqA)lR)8OQTGdMq@DEU8o$wc=Jl^xY#mS8Opm0l^B$wpuBQDl1+oL+H8fu z3r4<{p*YDfCbhrJhsrVnS{OmIE?YneXf0(Ln5NLWg0b3ch5jnbb*jx)>_XdyqBJ{x zqG5!?kY2Qn<^L1iv<5~<*eJl%eXA-pSsFF!YubWQxLg@Pm5P8-lp{BE{n=Uwfa46K z&}w}>6l<2PVqO>_WnK3Dn^(B{wSJ%jewpr6l zr2rAg1tS=26p#od1S4=4Fq%#tO;Q)e`2V(GRJmx#4La;#F0 zLCwrhG0k3VEsd-^quMTv$#v3|mjy;S?FZ!%_CYz@#}%sf)R3T6p#ibgr9%U%ufOFC9~}`Qm4SEa)C!3@Ya=?1f%YH z%DYj_(aRHdV{2+`!U#FHQpp14%={E{^s>aRlTDS1T9ltfX$$z}4M0uOrKMF}1Jg|e zOxr{T(iM!*#%5EdP|83GnQoZbRcA=HkfLo}zzA*b4`~8r$s3HF%;Ll6xhvdNar*ef zNlNEEdiHjM)q_tY!xDW0^SeL(r7al2!iJ?+zy5|VE`JUXgAxc9iT%0ZTgCc|2H(9| zjpcKCM8C0-tact-{?L_WQf*Ibo0rvPes=lOz(NYi+vM1?j6!X{h2j3qD_kWWr<7ML zf^Xs*jcvYrvuX^VN~&0AmKbQ#F`}Vt%xKC|k7${uH(j1A>0ht7V z08svX)G+GOB!Mb!ro5K1r{xa{qhL*pdAzJH`{j?u^T`9Fd~9iUoHGZZArXiC{kPv9 zpI6Jt1D)xEz<3nKv_=e$5T97s&H}6 z_j;~i1P8B{gTsN&7neWh)#6HUGFkh2Di~#TGK?~4@BS5j{ww#!Okq?3rGrtnk}`}N z>&e$&WnH6k2_rZH62efbl+?JY-^FKP9ghOW=DQW;iPx2W|13jG`8N*1y zJJB#IfYau!fsra}D4hW*zz8rPTdNz=AJ`>~HbS&4FV_;vO8}fUZvz+s4#+JZI9nv2 z9YX0@&k+(Bw|s5-9LBcl2kfu){TgZ4(QOuG4CC04Sa(}K`CB=}?A_Z=hVZNp`v@=w zLEPQX%){7((V8rSl|(#@Di8q(z=pKt11J(GEqh9cGC2O0y>s3a$z;}XF*2|WAGS0EzN^%a}d6*0I7me zFdn3GDIm6CqW z50hxkKMm#ITH9=Uw)7pH#GM*b7`^F9a+ALP60OyZL`H^G)ej@(il-oup*nnjshFj5oAc!Jd;=&A02AEF)L)W^YHhYBbGcL17sGb7eJi-pBz4;YgEa_d zQYejp)WX=`PYj?S28}-5!yp8}K-}410RR+ERoG|xT_--RD|NFCS(Gi4DTM zfYy40Y`QQ`_DzJrOaf&jkV+U8Ah!OqO16)d$o6vumRD(=1c-u>qa`JfJd9Bg0Nn{=@Pcw_gRArB;ge~kGy|aB$=PmV zec=(=Uc4wxF9S1rA{{sME^wKYZGpB@5ox>Q<23=G!RTOwC zseokr4Z&m`*$615{dxvt^$^%@0)4%}bP3*c$rwbPOkq4K5a~suvZLE!ObQ=B0IW40 z8>grB9R!m#-OvV;_S&D+p}V6K0#bmn(FCU3Z9xkl^2%Y1&d&tKH1Gu#gpqnj6U7D- zkU}YhY+gMd1|u)N zzT-F`@4`51M=o5uiHBc(K|=QIz1x@rdCGU{vyVw)j4M55lu>bX)OS5pFzO%;%Cw_# z5@8G~3eJ(@MRK#G{fxuI_Dp?IC$6i^GE${qQ}~=xj7Gf{RiwnG`}QRb|@@ zkx5}xm7ivCxm#g$rC>-mff3+(*|Ya<<9h$6`1QNL0`A<$=!fqC7=Q-|P^JYDI36(C z8e-`t7-h<$Y!!?TzJ7?Sfq`*hlGoK+H}K%=hwwM*Sif_h#Q4$xywQ?!T*;P>62|?- zB@{MGsLemX{^HV!g;5o%>F1!**i{@JL~(d91mnWBn;jT$-3T2Qx>IxY)(u<-@svL8 z>~NkENarbC_hchstoorJ+65FR8OGx9ptAn?wxi550#L#TD5k+uPYFQjDd`oUGulMX zV66JW-~QrKCNPeaW==GWKxarVSjSN?>O3Qra$dG+_?8)^yMlPxf{}(?0YZtgfRUEN zS9GoMSODNS!${?C)P=ETzVnh4Mj&EdHXpua9UXv-Q&Ip;K?LkQMm18JK_OzeLiQtP z38SkrO>A=AX5^t{AOeYC1Pm4m&_M}wdf+Z#G<|qfryR!ccUv$@Lo|>WMj*x{uj?NX zDCsyQdpr$feg!{P$&W#ePF@1uEQRLM@JiCF&0*Brq$)2CjC@*eYzXMiAIyOE4i`CP=|(FhOe+$%A|5~80Gtdijy{!rrnpY1tXAPp@1k)35fTIr?48uTZ6!SBQ&SRCX7JBrBvcTIXZcXoXnHD zn?;qfnv@?$Q4{#N1wf6`MWvPf28N3W7}p60q$?PK6pKxnLdgS3Wx8NyuI>=;A=!Lv z2QUIDmvlCP(ila2M3*{apt)>*?~JSfBWm*R4@V-))>G3 z(Wm&`?>_*55R?GeB(c_4%K(VitS(nW`MiGSv{89+p1I2wU8siy$t(wcbE=xoQlbOtP`gIAfr?V`xR$c%mte9l3UJ ziF*gwB1I}7bpTKR`OilUqbiLKRC+Nb_KYt`haw18v0TRLQ?mAVVIUltlEBCxJ5ri~ zS1AJk8;AVjFP}SkwVac89SR+tsdoS%1Y=aCQ@Mmuw%rAcLD+(xtXM8<%M^~)z!(&T zGYyacP^^fH&$@yUaQN~~9!jb>6%WW^1i*moY8W}tbTF90D9b|yBkv`77;DHyY-iE@}j-(@pEH%yV8Mx4`Hg_YnCwX)Rxf`O4U(eU;sO{nsQ$#e+i5` z&884SO%(@5l?|pa%JQJf0!F~GhoqXjdzIK z8KdmCb&kby8Q*^M4c6A5Wdb9R5s&~0-{a@T@b)`DhrdFW`wcdhBlRM@lyEM0${I!> zLm+_;lp!Pbv%52r%UoH*2xJT-04Hyu&*es0!w3NX2lm%b!Sgn#)Bpeg07*qoM6N<$ Eg0c@G)Bpeg diff --git a/images/title/load.png b/images/title/load.png new file mode 100644 index 0000000000000000000000000000000000000000..7c14b4fb4b1228b2d23e6629fd07983a6ba78520 GIT binary patch literal 2919 zc$@)e3z+nYP)Px=AxT6*RCt{2olR^T#~Fqn(MyRUWy)Gvl4ZAP1jsSaI*8i@m0ch}3nW3)9NS)c z)7^j$MiIj(VDw_x2OkU=z53Quk8NGl&DoI?w{~R|Xkn+24z=T7INy+Bv*g)I{-5EvSZ)Y zp;t}mH)?fyyR(VZ#hv#?t?rxNs~$<#G41k1-kHrF0BZkxX78)_j`7>;7gB*T6(9wS zIv_#^#Xxx6sI`AG*x*afnYtzguPK(bIK0;C(pMz%secM4Dg*@4lL44oU8 zIHe1tNMqECG_n=@ccWfR49eJtePkHrlK{(A_Z~{e!o&$)S7l?rG#n8xB z$ZpJY`NH+shlFCakbW@cbEi@p-ia%C@ygFjaRHZbCOZRPeFMxZI3=tnNS`Wmw@pD2{E0O<##7}M%LJj&YUDqw*SH;nE` zI;@LMs~@LQJHaTYm4TGg$Ob1aC?f;uhEa9$-#Yqz02@e%x6c;DDwfN$T8;iqgV9~K zYCKW^DIXIzl#zlOFBn^0g-OEr^!dMh(|2HOmQLCA-Z6%8LMgYm*+(paPG}3M3*&Il zF%0v&Wa?#yg^Z$dc{Y}OIdvGylBN>1hStix?*YfAt$jCG7g9yZr(SlwWTg;EPh zKNzE+uj!6{UoPNO6^>SG|HCMRr_*x#?PSw z4Z~{pm33=6;Yha$K)rhyaDo{I%9cQS!RQ6z^I8dj!F&#YeE073rM1n~Ciprq>enGH z80Qve?CtTPViS-8Mp>=E)P>R)NL2vS3Pf3h`J5+^GK{StfcAvZeL*EzhosJ5hEJvO zA*(+;+;faZPZysqtN?Iwu%Jw@0yBuE^aQfWGG_W&S+8n=2r#>{2EdQs7$>vY<8aj- z7=zWp&#UOF6?k6q0#c|Yn7QMy)vyEER!}PM)YvfAmT2^J0sU+nA)BTKDXR33hSt&AYj&w27nSuhszc)%8Cl2+hyyh9bi<|At@N$ zb@93g;)KsF6^xHxR9d=hFX{F%0f+mxEusrJZ0@DUGtdV7xnh zkDIQ6@r?ZC=EZB=oxVruWrgYaY3jM-7>zuG`JCstQe4_g80Qve=&F6mXJ6cBZgJ+o z!sz9y#kN~f>Sgv9G5d>6Fy4M}XBWnc*P4z~-pf9J)v}a;9qfo%9ziUn*eVz`*DwF{I~iUmfs$90)*tjEUAQX(Cu~5Lxi`Q%@Rna$CQ0iJmh;JHI2S)!oB^|)1Tr`A-5du8q z`F!!qIWIlOx za9+Q5koDT=Fee8KbT!HhnC}ACiX=iZi~xW7>)#^52r(>Jdj9IieDuM408LN=Y-e7F zj6tdL2(YZ?SI?H3^6A^T;#w)loV$*k3NooSQ(IH(=rN0 zehb6Ri`O_$^Ejpa#3EQGer3JNSI?HT;ZsR9)){0B)bAM4P;ty?3Q`YunYtHUnEyie zzdG9My-%Jf0mKF)#JK3aYC?vX5e(KU{jJo-Sl@~l=t)n|XH)!U7NvW*=6o5EJ0BLMlZ(?g0>->2q25?WVjYF}& z$xDXvXQ#)kW!u0peNEL6egFsnBI%mI^y1#5NULSOT| z)i5y1$BqvbF^d+EVjS`>fB60Wd9|Dz=$!rbAV3q0tr}e@Nf=eXCjp}yHn$}+2Tb2G z9mo2>=$3#p3XlLtM&97_nMb_yrnRn9QZPaSua<+|K!1mv3MelaWh*JexVGy51gXlpx|Jl1kPwjIgib$BbQ6vZlve3`X{l%~B?=qCy zb0`B2?;P!|c{XO0{!}ZaVHsQ1Kdy5$2TbnY|2xkYms5ceQUVgJKxbt181KA!n$Ksf zyEdYetSb>^c9f3Nh7nQ(5_X|<>(J`cw5rfi0HqBhqzoij?z^M?p|oKH_&;v9`+DvL RDzg9p002ovPDHLkV1goPgQ@@k diff --git a/images/title/quit.png b/images/title/quit.png new file mode 100644 index 0000000000000000000000000000000000000000..224590e651766b796201018df5e301e07e55f8fd GIT binary patch literal 2802 zc$@+93Jvv%P)Px2W|13jG`8N*1y zJJB#IfYau!fsra}D4hW*zz8rPTdNz=AJ`>~HbS&4FV_;vO8}fUZvz+s4#+JZI9nv2 z9YX0@&k+(Bw|s5-9LBcl2kfu){TgZ4(QOuG4CC04Sa(}K`CB=}?A_Z=hVZNp`v@=w zLEPQX%){7((V8rSl|(#@Di8q(z=pKt11J(GEqh9cGC2O0y>s3a$z;}XF*2|WAGS0EzN^%a}d6*0I7me zFdn3GDIm6CqW z50hxkKMm#ITH9=Uw)7pH#GM*b7`^F9a+ALP60OyZL`H^G)ej@(il-oup*nnjshFj5oAc!Jd;=&A02AEF)L)W^YHhYBbGcL17sGb7eJi-pBz4;YgEa_d zQYejp)WX=`PYj?S28}-5!yp8}K-}410RR+ERoG|xT_--RD|NFCS(Gi4DTM zfYy40Y`QQ`_DzJrOaf&jkV+U8Ah!OqO16)d$o6vumRD(=1c-u>qa`JfJd9Bg0Nn{=@Pcw_gRArB;ge~kGy|aB$=PmV zec=(=Uc4wxF9S1rA{{sME^wKYZGpB@5ox>Q<23=G!RTOwC zseokr4Z&m`*$615{dxvt^$^%@0)4%}bP3*c$rwbPOkq4K5a~suvZLE!ObQ=B0IW40 z8>grB9R!m#-OvV;_S&D+p}V6K0#bmn(FCU3Z9xkl^2%Y1&d&tKH1Gu#gpqnj6U7D- zkU}YhY+gMd1|u)N zzT-F`@4`51M=o5uiHBc(K|=QIz1x@rdCGU{vyVw)j4M55lu>bX)OS5pFzO%;%Cw_# z5@8G~3eJ(@MRK#G{fxuI_Dp?IC$6i^GE${qQ}~=xj7Gf{RiwnG`}QRb|@@ zkx5}xm7ivCxm#g$rC>-mff3+(*|Ya<<9h$6`1QNL0`A<$=!fqC7=Q-|P^JYDI36(C z8e-`t7-h<$Y!!?TzJ7?Sfq`*hlGoK+H}K%=hwwM*Sif_h#Q4$xywQ?!T*;P>62|?- zB@{MGsLemX{^HV!g;5o%>F1!**i{@JL~(d91mnWBn;jT$-3T2Qx>IxY)(u<-@svL8 z>~NkENarbC_hchstoorJ+65FR8OGx9ptAn?wxi550#L#TD5k+uPYFQjDd`oUGulMX zV66JW-~QrKCNPeaW==GWKxarVSjSN?>O3Qra$dG+_?8)^yMlPxf{}(?0YZtgfRUEN zS9GoMSODNS!${?C)P=ETzVnh4Mj&EdHXpua9UXv-Q&Ip;K?LkQMm18JK_OzeLiQtP z38SkrO>A=AX5^t{AOeYC1Pm4m&_M}wdf+Z#G<|qfryR!ccUv$@Lo|>WMj*x{uj?NX zDCsyQdpr$feg!{P$&W#ePF@1uEQRLM@JiCF&0*Brq$)2CjC@*eYzXMiAIyOE4i`CP=|(FhOe+$%A|5~80Gtdijy{!rrnpY1tXAPp@1k)35fTIr?48uTZ6!SBQ&SRCX7JBrBvcTIXZcXoXnHD zn?;qfnv@?$Q4{#N1wf6`MWvPf28N3W7}p60q$?PK6pKxnLdgS3Wx8NyuI>=;A=!Lv z2QUIDmvlCP(ila2M3*{apt)>*?~JSfBWm*R4@V-))>G3 z(Wm&`?>_*55R?GeB(c_4%K(VitS(nW`MiGSv{89+p1I2wU8siy$t(wcbE=xoQlbOtP`gIAfr?V`xR$c%mte9l3UJ ziF*gwB1I}7bpTKR`OilUqbiLKRC+Nb_KYt`haw18v0TRLQ?mAVVIUltlEBCxJ5ri~ zS1AJk8;AVjFP}SkwVac89SR+tsdoS%1Y=aCQ@Mmuw%rAcLD+(xtXM8<%M^~)z!(&T zGYyacP^^fH&$@yUaQN~~9!jb>6%WW^1i*moY8W}tbTF90D9b|yBkv`77;DHyY-iE@}j-(@pEH%yV8Mx4`Hg_YnCwX)Rxf`O4U(eU;sO{nsQ$#e+i5` z&884SO%(@5l?|pa%JQJf0!F~GhoqXjdzIK z8KdmCb&kby8Q*^M4c6A5Wdb9R5s&~0-{a@T@b)`DhrdFW`wcdhBlRM@lyEM0${I!> zLm+_;lp!Pbv%52r%UoH*2xJT-04Hyu&*es0!w3NX2lm%b!Sgn#)Bpeg07*qoM6N<$ Eg0c@G)Bpeg diff --git a/images/title/save.png b/images/title/save.png new file mode 100644 index 0000000000000000000000000000000000000000..2041ab858031c35f074faba58a363018a16106eb GIT binary patch literal 2860 zc$@(&3)A$8P)Px<=1D|BRCt{2onL4i#~sH%7b}+3)2*+TPLc)H;e;BS;1)MAIDRU$l+ZquV(3#a z^u>liU*dN^_&t3z$d9&PjVY93`e0gUT^sDC;6T(=ZY{^Pr0C!2bh3O($n{}wR&#SR zyR&<ij1cvn;MJ2fBV~CbO~zGAjum#vi`_ zF28;M*G}>~NYP0?F15vcw@q-SJY@jRb1^e0b6I)F^PgPg`p5oB?NDjix6O82`mK7M z{NP|Jwy1e;)$5_@O?ISdW7cJf{D&EC+5R;fgeWbuAkhVHe0%))?h5kS>&| z0I9;b${LgSC#D1Pb%#*}PKCv_Y+)2>MmfwXYr*zW4yOjC^KKs*M)@Sb57pfYcb&l4 zsnYOpNhQN*0uczkAVj@h|9HlEmylBr83yAdM>Ff*an*P+kgw%dCDC3V7B_- zw)|Z}nYdA73*&L`D0#~4P+_HBG2|9c3-zZ?^6AT0ly`jB`*HC7QT5N-<3;^<+R#Y^ zWE{^ZpUewOkov&&hD4{h81*BRCX}&(ObR3Hj`De2{bwvA`^sJ-vYBLpQYa~uv4Ax7 zGupr?>lvR~8`z0V-A!?%_NU5u>-M=Q(^e+iTxgn8fIq%d22<3%*dGRF5-6>K4C`kU zYUDiLEBpw6dA?u_k35sX{v9eDr0Dd1vafVCHdy3qUXf?A2m~N*Y<&a3q5MGbUHlG{oHi|W+XhqlS)9A7L-~OK zO7QCyV0p6!z=^^ruzQ~=gP8=%NFYrxnn3(~^M!9rVFZ99j0btG)GKZ9^l zuFo-D8sfNjJlM8EHGmNy*YE*V8$c?UworxwscXPQfhem~7%>7V!x#kt^d^kz1(jC$ zX`lP-`kZm!bZLl2&f`R3iWRCnocEnl`S8J(bYWn|@svg&RTvxOS>CK!fe0|awgbRV z%VmZcZVAqA)YP2vQ97RTL!a{^Z0yowFzc3-)5^^fN6T7)Amoa!dRuu zF~ALovidNF=Vb$9C*bL%!Z=+TvOYF0n4pKUrAFkbs(B`xP5o>^gx-KrXG0n=s&<$z z0N3!T(!uy_`Bf|^!3?H&1}?x9p$xuQw&`fOhlu<^-Q8)V+!(a@9RF!RGLs#K@9Y$4AaF!1r zq*NGTj6w30x&7o0UsaX^7@_GQWhf`SBIn9yI8hMKEo)jYnG`}HQ)RopUo({*2BWF` zq%GZEhA}OvA>9T>kXqT-FU|1bwac76bCz54_c>QSR=Iq;kZ&u5uk zpK}7^bZMyPU^Inl@m*CXwoQ0NCcI)Bj5CjJ7-0m>lbV|st^}S^GTlz`DwiYp+@Xd9&k z<3jyu%V&0dE>jqVhm<7)uvcM(-7Y<~j-y}<^Nd2ql`Cw+x6Y`rD@c|r7)8jH0n{mN z7)2R65cdm=LQB<3OJB3xcu5K)M9j;U!?&)X1AafH0MHghNDiZVf2Z?As&s#H8esHN zKclX^H0~K?CA{fD9p@48GLA1crfHA6ZVbgEcEf}-##!>d94WlkZLvk1)#w0HR zrRb*=!_&Z@Um^EZ%6(9$%Y#gEv~4bptfT`+qm%`VY71JIf45;&_o<3X+sJtVZ0Z1A za0esAoCX^QN}2jF|nCodM-@);Q!Zri3)oH2KOwJPqQ+9xj-_{lrp4Lqcf zyiATO&nV<%(R-7pR8L}gv&P-e=B?qgRh&N1uwz6;xfs!8YlB)|oC{88XViaT`(I6X zMI(?~ERtuEtB>z+V8$N>D0L%&Y=G3k2n0a(B8&ny88j0NwlIbruY*zck}`}nX&F78blz3AGfmGZ zlh=__j(0sarfRbXA)v*EM=0000< KMNUMnLSTXmvs<|U diff --git a/images/title/settings.png b/images/title/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..e63432a5e310d4e230b6173eaf20094b0cbfa545 GIT binary patch literal 2903 zc$@)O3#jyoP)Px=5lKWrRCt{2olk62$sNbPPV4}R?dGqYCbR@3yof?owrES#OVtBZRBD2Rw1;g^ zds~T952&hg;?zS=D{C+{0v^ z=e;*GZ{G9Fvy;BBWXblMH#2_o@$WbDn|bpRZM55nPzx6qqbx3#2Hm}PEwZwbk(C4j z=S^$8B_ZK6BG7*)9T)4Q1zx?g@ z0D#K&pySxa8*lo}dJ_k;hm6$4o%d$FDNQe`hsiodT^`MQI72?y-tO4P3aJ);{r(>! zfie;xDU2#00x^tHm$zAO!omUjbG`B!v!_NJX`+JCIFJh$7jg5}Rn!s(9N+gljIuiH zMHpA=JKXQOT?@U5z1V}fG)*5hpMhs*OBM}Ro z8yKBZg^{KinCWnpx}s7t!7To|!1ia-P){WDl=Kxs0C zo42lN4+&|tkTMvL&kRHs-qAI95#=Y6F5paA$FML`S8c61^Dtp42mF($i3cP7(ewwo zwHIMrsqYA1I@D_z-RH1rX&&@DYmH0<+`M&F+YFo*AVn~;l?O=UQb2UWNb{z7vSslk zDw_rD@z)kC9MBG(Nc{k#U-|C5bVJ#-%XY)a`|&@1cMJd-&`{}yQPnDzD@~$6s60^f8QHsgzwvwSZG24k(@NJ)&ix z6WT(m!Z>?s1Sb!*QQ01JSjcWvuIR}p7Lm+40>Jq*!}j}se6hhjUzeo}1!NG*c>c^V zl1XBSAAR#yDgPL_{t$K5bkz@)NhkvY85BkUHjs32#lQa}cdM~_uh~;09uQfHpri^5 zWgs9$aYh-8Jbk_r&6+_`xG9L-@l-Z%*|8`jDqn}rO%oVPt&{^y+V=Fg49qZ4Dg!Bt zGg7rvNnAKh1{lTFB*w;p9~|t2N-Eof$PaF7?N7!sr*fs~aNEmULjVA)28@jZiFVtD z)eUA?D3ySe!Prg_cT7QCZY3R+o=7EZ2!T%MXR}fV036I`?f3MvOl(?H>gPH{Q8uep zq--eLi3F?~`M$nJrrl;wkQKe}B+2-I1v3nkzCem#6oFWNOe&h4Bo!@8CG5OvFPk3t zVi?uy5EYD1N}WD_x{&t(NnvE=2c{~NQXqK)7(WnMWhXO2AXymwAOQLkM)x1eWF1WX zeilBS(uF(#GRUb}3A}tz1^{G^jdRoUzzkw3g+RJtY!4<-UwfkjA^^O3N^JXkKR=4$ zjMG)eFb1oG%&Vx%4?K}XKvMaFnc4!{JN7`<4@&M#4TW)eYY3JFU=Wy_+5)ByDT64J zDvZ4Xk^X5!_2_pP!@>s;02`%>a(dd{ZZK^=cELP1(*aX9qvHW`;o>50{`GfQZY5#W zc0q)?MO0M`qkn!XFm?lCG*8uM0rq%B-x<|Q*wy$|T@~(G-YOF^o*tyI@i%lWd=nO(@D( zRY58Z{C~jsq-5C^FI~t35*ST`$SWs^Wvs4~Ytjvv)O{C*wsHN&V*tA@`}&PX_~^rv zSZ*aTdm`h2G7N~UR_Z%Ao{=w1-;Xfz`g@`V-)k_kV%s~20h&FLAt50U{{D4;iMZ^$ z_pV_9Wa;@wAD$$sT~G$8R1o!g)b~1ypaT1@rz4QXr z^|}osuxlY%D0358T%JD+oXFVomOLvN7D6gfW9xL0VPO=N-%W72Utu&Qw@X)n5nx8y zckf-p{DF`0)1S@Z_RGPl~9n*KvF41>Q+*VQietNsHo2y3|V;pOh@DB89I$E#pba+P5%@Ts3{~ zRyXy^O=OXq$a-MBe&bOG#yeL$=XqvomhN1^Jcy;V2Rn?Vq|(`Mj1tCjrRllQCZO2Q zFybG6kdizMMwMLK-RKFtYK({RkuA4C#pm zGEz4!fDw?~2CD)ktpu-9Dsf0%Fw*!Qd~Ocw6^y+Ic(di1aMSFdg>7rvwF?6y;B#NL zACy4HTGC3Xx^i91sM3YJZ@7YYk$VMWl!KQj`iyQE>B8(VFaio21q6jsMY@(zsl?4< z7`>l$!N_ybKzJB|05^HfUm{S_I3-=429PD~Y^;(s=ZDW8!SR^^&%HFP!i;KT80B>m zl@|m?Hf=UPg7zSPwT~_sfdE^nh%BX5>)b!X_A6Pj+wiS&1{Nk1!^l78R*V}!I`a`URq-|>gMxe|6AyuIK&RE*>W4`?7!_XCu6`hXGP9t+{9EsKz z&c90lEUtEj9qt*JJGbw51tXwg!_xUnALG*H3jpAO5&-7%Z-K-B?mr}>>^DzqcvfEV z~f-I^XXl~-!)8{z-i}#3yoasDQl5Ufu(=t+Z{S*e-=$qWJNY-y; zCo`z8y}`5ciZXmW@nW4pVxY2f{H8-q$ZrZxrZCq+^;%604+)R43nc*g+;mWB*<+kt zC3OA9BYTxl6w(P}b-gakYopQdyt);y%pe}Xoi+@N0~;IMSGD>rjvhP0&Bqjsfab@7 z&^{%=tUljWaW!cN&{Y6(H#oJb8;u5r(`jrp8aO&TZRh0&2t8j0qpW;UeqkkoC#-dJ z=Qpt7+>I=k8%4GHZLm7#Mv*S$kPi6slVN`W_CSl}#ZvsX)Y;H@I%Z*CQbet=J(OaLaohB@h z05EanyC@bPVs7p<0CO+`1|BU3bOt(?E?>aQ2W9)m1nukbU}V+LFtVUkpTBY*W9y&@ zBM&GMjI5PpVcclQuRqVax@8hZzz~pt6H19ibhex2t)`Z z(1FsefoA;NntoK&Fai++2|(LpY-5>M)Gz|T{{R6R&+88;5rzN&002ovPDHLkV1oCf BK0^Qi diff --git a/images/title/start.png b/images/title/start.png new file mode 100644 index 0000000000000000000000000000000000000000..2041ab858031c35f074faba58a363018a16106eb GIT binary patch literal 2860 zc$@(&3)A$8P)Px<=1D|BRCt{2onL4i#~sH%7b}+3)2*+TPLc)H;e;BS;1)MAIDRU$l+ZquV(3#a z^u>liU*dN^_&t3z$d9&PjVY93`e0gUT^sDC;6T(=ZY{^Pr0C!2bh3O($n{}wR&#SR zyR&<ij1cvn;MJ2fBV~CbO~zGAjum#vi`_ zF28;M*G}>~NYP0?F15vcw@q-SJY@jRb1^e0b6I)F^PgPg`p5oB?NDjix6O82`mK7M z{NP|Jwy1e;)$5_@O?ISdW7cJf{D&EC+5R;fgeWbuAkhVHe0%))?h5kS>&| z0I9;b${LgSC#D1Pb%#*}PKCv_Y+)2>MmfwXYr*zW4yOjC^KKs*M)@Sb57pfYcb&l4 zsnYOpNhQN*0uczkAVj@h|9HlEmylBr83yAdM>Ff*an*P+kgw%dCDC3V7B_- zw)|Z}nYdA73*&L`D0#~4P+_HBG2|9c3-zZ?^6AT0ly`jB`*HC7QT5N-<3;^<+R#Y^ zWE{^ZpUewOkov&&hD4{h81*BRCX}&(ObR3Hj`De2{bwvA`^sJ-vYBLpQYa~uv4Ax7 zGupr?>lvR~8`z0V-A!?%_NU5u>-M=Q(^e+iTxgn8fIq%d22<3%*dGRF5-6>K4C`kU zYUDiLEBpw6dA?u_k35sX{v9eDr0Dd1vafVCHdy3qUXf?A2m~N*Y<&a3q5MGbUHlG{oHi|W+XhqlS)9A7L-~OK zO7QCyV0p6!z=^^ruzQ~=gP8=%NFYrxnn3(~^M!9rVFZ99j0btG)GKZ9^l zuFo-D8sfNjJlM8EHGmNy*YE*V8$c?UworxwscXPQfhem~7%>7V!x#kt^d^kz1(jC$ zX`lP-`kZm!bZLl2&f`R3iWRCnocEnl`S8J(bYWn|@svg&RTvxOS>CK!fe0|awgbRV z%VmZcZVAqA)YP2vQ97RTL!a{^Z0yowFzc3-)5^^fN6T7)Amoa!dRuu zF~ALovidNF=Vb$9C*bL%!Z=+TvOYF0n4pKUrAFkbs(B`xP5o>^gx-KrXG0n=s&<$z z0N3!T(!uy_`Bf|^!3?H&1}?x9p$xuQw&`fOhlu<^-Q8)V+!(a@9RF!RGLs#K@9Y$4AaF!1r zq*NGTj6w30x&7o0UsaX^7@_GQWhf`SBIn9yI8hMKEo)jYnG`}HQ)RopUo({*2BWF` zq%GZEhA}OvA>9T>kXqT-FU|1bwac76bCz54_c>QSR=Iq;kZ&u5uk zpK}7^bZMyPU^Inl@m*CXwoQ0NCcI)Bj5CjJ7-0m>lbV|st^}S^GTlz`DwiYp+@Xd9&k z<3jyu%V&0dE>jqVhm<7)uvcM(-7Y<~j-y}<^Nd2ql`Cw+x6Y`rD@c|r7)8jH0n{mN z7)2R65cdm=LQB<3OJB3xcu5K)M9j;U!?&)X1AafH0MHghNDiZVf2Z?As&s#H8esHN zKclX^H0~K?CA{fD9p@48GLA1crfHA6ZVbgEcEf}-##!>d94WlkZLvk1)#w0HR zrRb*=!_&Z@Um^EZ%6(9$%Y#gEv~4bptfT`+qm%`VY71JIf45;&_o<3X+sJtVZ0Z1A za0esAoCX^QN}2jF|nCodM-@);Q!Zri3)oH2KOwJPqQ+9xj-_{lrp4Lqcf zyiATO&nV<%(R-7pR8L}gv&P-e=B?qgRh&N1uwz6;xfs!8YlB)|oC{88XViaT`(I6X zMI(?~ERtuEtB>z+V8$N>D0L%&Y=G3k2n0a(B8&ny88j0NwlIbruY*zck}`}nX&F78blz3AGfmGZ zlh=__j(0sarfRbXA)v*EM=0000< KMNUMnLSTXmvs<|U diff --git a/images/title/tutorial.png b/images/title/tutorial.png new file mode 100644 index 0000000000000000000000000000000000000000..7c14b4fb4b1228b2d23e6629fd07983a6ba78520 GIT binary patch literal 2919 zc$@)e3z+nYP)Px=AxT6*RCt{2olR^T#~Fqn(MyRUWy)Gvl4ZAP1jsSaI*8i@m0ch}3nW3)9NS)c z)7^j$MiIj(VDw_x2OkU=z53Quk8NGl&DoI?w{~R|Xkn+24z=T7INy+Bv*g)I{-5EvSZ)Y zp;t}mH)?fyyR(VZ#hv#?t?rxNs~$<#G41k1-kHrF0BZkxX78)_j`7>;7gB*T6(9wS zIv_#^#Xxx6sI`AG*x*afnYtzguPK(bIK0;C(pMz%secM4Dg*@4lL44oU8 zIHe1tNMqECG_n=@ccWfR49eJtePkHrlK{(A_Z~{e!o&$)S7l?rG#n8xB z$ZpJY`NH+shlFCakbW@cbEi@p-ia%C@ygFjaRHZbCOZRPeFMxZI3=tnNS`Wmw@pD2{E0O<##7}M%LJj&YUDqw*SH;nE` zI;@LMs~@LQJHaTYm4TGg$Ob1aC?f;uhEa9$-#Yqz02@e%x6c;DDwfN$T8;iqgV9~K zYCKW^DIXIzl#zlOFBn^0g-OEr^!dMh(|2HOmQLCA-Z6%8LMgYm*+(paPG}3M3*&Il zF%0v&Wa?#yg^Z$dc{Y}OIdvGylBN>1hStix?*YfAt$jCG7g9yZr(SlwWTg;EPh zKNzE+uj!6{UoPNO6^>SG|HCMRr_*x#?PSw z4Z~{pm33=6;Yha$K)rhyaDo{I%9cQS!RQ6z^I8dj!F&#YeE073rM1n~Ciprq>enGH z80Qve?CtTPViS-8Mp>=E)P>R)NL2vS3Pf3h`J5+^GK{StfcAvZeL*EzhosJ5hEJvO zA*(+;+;faZPZysqtN?Iwu%Jw@0yBuE^aQfWGG_W&S+8n=2r#>{2EdQs7$>vY<8aj- z7=zWp&#UOF6?k6q0#c|Yn7QMy)vyEER!}PM)YvfAmT2^J0sU+nA)BTKDXR33hSt&AYj&w27nSuhszc)%8Cl2+hyyh9bi<|At@N$ zb@93g;)KsF6^xHxR9d=hFX{F%0f+mxEusrJZ0@DUGtdV7xnh zkDIQ6@r?ZC=EZB=oxVruWrgYaY3jM-7>zuG`JCstQe4_g80Qve=&F6mXJ6cBZgJ+o z!sz9y#kN~f>Sgv9G5d>6Fy4M}XBWnc*P4z~-pf9J)v}a;9qfo%9ziUn*eVz`*DwF{I~iUmfs$90)*tjEUAQX(Cu~5Lxi`Q%@Rna$CQ0iJmh;JHI2S)!oB^|)1Tr`A-5du8q z`F!!qIWIlOx za9+Q5koDT=Fee8KbT!HhnC}ACiX=iZi~xW7>)#^52r(>Jdj9IieDuM408LN=Y-e7F zj6tdL2(YZ?SI?H3^6A^T;#w)loV$*k3NooSQ(IH(=rN0 zehb6Ri`O_$^Ejpa#3EQGer3JNSI?HT;ZsR9)){0B)bAM4P;ty?3Q`YunYtHUnEyie zzdG9My-%Jf0mKF)#JK3aYC?vX5e(KU{jJo-Sl@~l=t)n|XH)!U7NvW*=6o5EJ0BLMlZ(?g0>->2q25?WVjYF}& z$xDXvXQ#)kW!u0peNEL6egFsnBI%mI^y1#5NULSOT| z)i5y1$BqvbF^d+EVjS`>fB60Wd9|Dz=$!rbAV3q0tr}e@Nf=eXCjp}yHn$}+2Tb2G z9mo2>=$3#p3XlLtM&97_nMb_yrnRn9QZPaSua<+|K!1mv3MelaWh*JexVGy51gXlpx|Jl1kPwjIgib$BbQ6vZlve3`X{l%~B?=qCy zb0`B2?;P!|c{XO0{!}ZaVHsQ1Kdy5$2TbnY|2xkYms5ceQUVgJKxbt181KA!n$Ksf zyEdYetSb>^c9f3Nh7nQ(5_X|<>(J`cw5rfi0HqBhqzoij?z^M?p|oKH_&;v9`+DvL RDzg9p002ovPDHLkV1goPgQ@@k diff --git a/lib/link.lua b/lib/link.lua --- a/lib/link.lua +++ b/lib/link.lua @@ -13,7 +13,7 @@ obj { if not instead.clipboard or instead.clipboard() ~= w then std.pr ('{@link ', w, '|', w, '}') else - std.pr(fmt.u (w) ..' [' .. translate_now(link_locale, 'copied') .. ']') + std.pr(fmt.u (w) ..' [' .. translate_now("link_locale", 'copied') .. ']') end end; } diff --git a/lib/locale.lua b/lib/locale.lua --- a/lib/locale.lua +++ b/lib/locale.lua @@ -1,4 +1,3 @@ - local language = '' local lang_map = { @@ -7,7 +6,16 @@ local lang_map = { ['uk'] = 'ru' } -function translate_now(table, key, subst) +local lang_list = { + {'en', 'English'}, + {'ru', 'Русский'}, +} + +local default_locale = {}; + +local locale = {}; + +function translate_now(domain, key, subst) local lang = language if lang == '' then if lang_map[LANG] then @@ -17,11 +25,13 @@ function translate_now(table, key, subst end; end; local val = key; + local table = locale[domain]; + local default_table = default_locale[domain]; if table[key] ~= nil then - if table[key][lang] ~= nil then - val = table[key][lang]; - elseif table[key]['en'] ~= nil then - val = table[key]['en']; + if table[key] ~= nil then + val = table[key]; + elseif default_table[key] ~= nil then + val = default_table[key] end; end @@ -31,13 +41,12 @@ function translate_now(table, key, subst end; end; - --dprint(key, val); return val end; -function translate(table, key, subst) +function translate(domain, key, subst) return function() - return translate_now(table, key, subst); + return translate_now(domain, key, subst); end; end; @@ -45,8 +54,18 @@ function set_language(lng) language = lng; prefs.language = lng; prefs:store(); + + dofile('translation/' .. get_language() .. '.lua'); end; +obj { + nam = '@set_language'; + act = function(s, w) + set_language(w); + walk(here()) + end; +} + function get_language_saved() return language; end; @@ -57,17 +76,33 @@ function get_language() elseif lang_map[LANG] then return lang_map[LANG]; else - return 'en'; + return lang_list[1][1]; end; end; +function get_default_language() + return lang_list[1][1]; +end; + +function get_language_list() + return lang_list; +end; + +function set_locale_data(data) + locale = data; +end; + std.mod_init(function() + dofile('translation/' .. get_language_list()[1][1] .. '.lua'); + default_locale = locale; prefs:load(); if prefs.language then language = prefs.language; else prefs.language = ''; end; + + dofile('translation/' .. get_language() .. '.lua'); end) diff --git a/main3.lua b/main3.lua --- a/main3.lua +++ b/main3.lua @@ -16,7 +16,6 @@ require "lib/dire/theme" require "lib/locale" require "lib/fading" require "lib/smoke" -include "translation" declare({ closed_beta_participants = 'arbtttrn6, De@th K!d, Fehatt, Lesha Pak, Łukasz Sawicki, Niko Flang, Oleg Bosh, Terracon, Андрей Лобанов'; @@ -27,15 +26,15 @@ fmt.filter = function(r) local utf8 = (std.ref 'game'.codepage == 'UTF-8' or std.ref 'game'.codepage == 'utf-8') if utf8 then - r = r:gsub('"([^"]*)"', translate_now(common_locale, 'quotes')); + r = r:gsub('"([^"]*)"', translate_now("common_locale", 'quotes')); end; return r; end; -game.act = translate(main_locale, 'empty_act'); +game.act = translate('main_locale', 'empty_act'); game.use = function(s) - return translate_now(main_locale, random_phrase({ + return translate_now('main_locale', random_phrase({ 'empty_use_1', 'empty_use_2', 'empty_use_3', @@ -43,7 +42,7 @@ game.use = function(s) 'empty_use_5' })); end; -game.inv = translate(main_locale, 'empty_inv'); +game.inv = translate("main_locale", 'empty_inv'); instead.notitle = function() return here().notitle; @@ -170,7 +169,11 @@ function get_sprite(path, transparent) local s = diretheme.get_scale(); if not menu_sprites[path] then - menu_sprites[path] = pixels.new(path):scale(s, s):sprite(); + if s ~= 1 then + menu_sprites[path] = pixels.new(path):scale(s, s):sprite(); + else + menu_sprites[path] = sprite.new(path); + end; if transparent then menu_sprites[path]:colorkey(transparent); end; @@ -179,6 +182,28 @@ function get_sprite(path, transparent) return menu_sprites[path]; end; +function get_button(button_name) + local path = 'images/title/' .. button_name .. '.' .. get_language() .. '.png'; + if menu_sprites[path] then + return menu_sprites[path]; + end; + + local sprite = nil; + + --Check if file exists(only used here, so not moved to function) + local f = io.open(path, 'r'); + if f then + f:close(); + sprite = get_sprite(path, 'fuchsia') + end; + + if not sprite then + local path = 'images/title/' .. button_name .. '.' .. get_default_language() .. '.png'; + sprite = get_sprite(path, 'fuchsia'); + end; + return sprite +end; + function stop_menu() D {'bgframe'}; D {'background'}; @@ -272,7 +297,7 @@ function init_menu(with_text, buttons) D { buttons[1], 'img', - get_sprite('images/title/' .. buttons[1] .. '.' .. get_language() .. '.png', 'fuchsia'), + get_button(buttons[1]), x=ox + 398 * scale, y=oy + (btop + button_dy) * scale, click=true, @@ -283,7 +308,7 @@ function init_menu(with_text, buttons) D { buttons[1], 'img', - get_sprite('images/title/' .. buttons[1] .. '.' .. get_language() .. '.png', 'fuchsia'), + get_button(buttons[1]), x=ox + (157 + button_dx) * scale, y=oy + (btop + button_dy) * scale, click=true, @@ -293,8 +318,8 @@ function init_menu(with_text, buttons) D { buttons[2], 'img', - get_sprite('images/title/' .. buttons[2] .. '.' .. get_language() .. '.png', 'fuchsia'), - x=ox + 398 * scale, + get_button(buttons[2]), + x=ox + 398 * scale, y=oy + (btop + button_dy) * scale, click=true, background=true, @@ -303,7 +328,7 @@ function init_menu(with_text, buttons) D { buttons[3], 'img', - get_sprite('images/title/' .. buttons[3] .. '.' .. get_language() .. '.png', 'fuchsia'), + get_button(buttons[3]), x=ox + (639 - button_dx) * scale, y=oy + (btop + button_dy) * scale, click=true, @@ -317,7 +342,7 @@ function init_menu(with_text, buttons) D { buttons[4], 'img', - get_sprite('images/title/' .. buttons[4] .. '.' .. get_language() .. '.png', 'fuchsia'), + get_button(buttons[4]), x=ox + (278 + button_dx / 2) * scale, y=oy + (btop + button_dy) * scale, click=true, @@ -328,7 +353,7 @@ function init_menu(with_text, buttons) D { buttons[5], 'img', - get_sprite('images/title/' .. buttons[5] .. '.' .. get_language() .. '.png', 'fuchsia'), + get_button(buttons[5]), x=ox + (519 - button_dx / 2) * scale, y=oy + (btop + button_dy) * scale, click=true, @@ -483,7 +508,7 @@ room { end; return false; end; - decor = translate(menu_locale, 'intro'); + decor = translate("menu_locale", 'intro'); } room { @@ -519,14 +544,14 @@ room { return false; end; decor = function(s) - return translate_now(menu_locale, 'credits_author') .. ': Khaelenmore Thaal^' .. - translate_now(menu_locale, 'credits_art') .. ': Sabra Naikomy^' .. - translate_now(menu_locale, 'credits_music') .. ': Khaelenmore Thaal^' .. - translate_now(menu_locale, 'credits_engine') .. ': INSTEAD ' .. translate_now(menu_locale, 'credits_engine_author') .. ' {$link https://github.com/instead-hub/instead/}^' .. - translate_now(menu_locale, 'credits_sounds') .. ': {$link https://freesound.org/} CC-0^' .. - translate_now(menu_locale, 'credits_fonts') .. ': VileR {$link https://int10h.org/oldschool-pc-fonts/} CC-BY-SA 4.0^^' .. - translate_now(menu_locale, 'credits_closed_beta') .. ': ' .. closed_beta_participants .. '^^'.. - translate_now(menu_locale, 'credits_thanks'); + return translate_now("menu_locale", 'credits_author') .. ': Khaelenmore Thaal^' .. + translate_now("menu_locale", 'credits_art') .. ': Sabra Naikomy^' .. + translate_now("menu_locale", 'credits_music') .. ': Khaelenmore Thaal^' .. + translate_now("menu_locale", 'credits_engine') .. ': INSTEAD ' .. translate_now("menu_locale", 'credits_engine_author') .. ' {$link https://github.com/instead-hub/instead/}^' .. + translate_now("menu_locale", 'credits_sounds') .. ': {$link https://freesound.org/} CC-0^' .. + translate_now("menu_locale", 'credits_fonts') .. ': VileR {$link https://int10h.org/oldschool-pc-fonts/} CC-BY-SA 4.0^^' .. + translate_now("menu_locale", 'credits_closed_beta') .. ': ' .. closed_beta_participants .. '^^'.. + translate_now("menu_locale", 'credits_thanks'); end; } @@ -573,7 +598,7 @@ room { obj { nam = '#system_settings'; dsc = function(s) - return fmt.c(fmt.b('{[' .. translate_now(menu_locale, 'system_settings') .. ']}^^')); + return fmt.c(fmt.b('{[' .. translate_now("menu_locale", 'system_settings') .. ']}^^')); end; act = function(s) instead.menu('settings'); @@ -582,30 +607,25 @@ room { obj { nam = '#language'; dsc = function(s) - local l = translate_now(menu_locale, 'auto_option'); + local l = translate_now("menu_locale", 'auto_option'); - pn(fmt.c(fmt.b(translate_now(menu_locale, 'language')))); + pn(fmt.c(fmt.b(translate_now("menu_locale", 'language')))); - local t = ''; + local t; if get_language_saved() == '' then - t = t .. l .. ' | '; + t = l; else - t = t .. '{#l_auto|'.. l .. '} | '; + t = '{#l_auto|'.. l .. '}'; end; - - if get_language_saved() == 'ru' then - t = t .. 'Русский | '; - else - t = t .. '{#l_ru|Русский} | '; - end; - - if get_language_saved() == 'en' then - t = t .. 'English'; - else - t = t .. '{#l_en|English}'; - end; + for i, language in ipairs(get_language_list()) do + if get_language_saved() == language[1] then + t = t .. ' | ' .. language[2]; + else + t = t .. ' | ' .. '{@set_language ' .. language[1] .. '|' .. language[2] .. '}'; + end; + end; pn(fmt.c(t) .. '^') end; @@ -617,27 +637,13 @@ room { walk(here()); end; }; - obj { - nam = '#l_en'; - act = function(s) - set_language('en'); - walk(here()); - end; - }; - obj { - nam = '#l_ru'; - act = function(s) - set_language('ru'); - walk(here()); - end; - }; }; obj { nam = '#graphics_scale'; dsc = function(s) local graphic_scale = get_graphic_scale(); - pn(fmt.c(fmt.b(translate_now(menu_locale, 'graphic_scale')) .. ' {[' .. translate_now(menu_locale, 'auto_option') .. ']}')) + pn(fmt.c(fmt.b(translate_now("menu_locale", 'graphic_scale')) .. ' {[' .. translate_now("menu_locale", 'auto_option') .. ']}')) local t = ''; @@ -647,7 +653,7 @@ room { t = t .. '<< '; end; - local l = translate_now(menu_locale, 'auto_option') .. ' (' .. tostring(graphic_scale * 100) .. '%)'; + local l = translate_now("menu_locale", 'auto_option') .. ' (' .. tostring(graphic_scale * 100) .. '%)'; if prefs.graphic_scale then @@ -724,7 +730,7 @@ room { dsc = function(s) local cursor_scale = get_cursor_scale(); - pn(fmt.c(fmt.b(translate_now(menu_locale, 'cursor_scale')) .. ' {[' .. translate_now(menu_locale, 'auto_option') .. ']}')) + pn(fmt.c(fmt.b(translate_now("menu_locale", 'cursor_scale')) .. ' {[' .. translate_now("menu_locale", 'auto_option') .. ']}')) local t = ''; @@ -734,7 +740,7 @@ room { t = t .. '<< '; end; - local l = translate_now(menu_locale, 'auto_option') .. ' (' .. tostring(cursor_scale * 100) .. '%)'; + local l = translate_now("menu_locale", 'auto_option') .. ' (' .. tostring(cursor_scale * 100) .. '%)'; if prefs.cursor_scale then l = tostring(cursor_scale * 100) .. '%'; @@ -811,7 +817,7 @@ room { local graphic_scale = get_graphic_scale(); local font_scale = get_font_scale(); - pn(fmt.c(fmt.b(translate_now(menu_locale, 'font_scale')) .. ' {[' .. translate_now(menu_locale, 'auto_option') .. ']}')); + pn(fmt.c(fmt.b(translate_now("menu_locale", 'font_scale')) .. ' {[' .. translate_now("menu_locale", 'auto_option') .. ']}')); local t = ''; @@ -824,7 +830,7 @@ room { if prefs.font_scale then t = t .. tostring(font_scale) .. '%'; else - t = t .. translate_now(menu_locale, 'auto_option') .. ' (' .. tostring(font_scale) .. '%)'; + t = t .. translate_now("menu_locale", 'auto_option') .. ' (' .. tostring(font_scale) .. '%)'; end; @@ -871,7 +877,7 @@ room { local graphic_scale = get_graphic_scale(); local font_scale = get_inventory_font_scale(); - pn(fmt.c(fmt.b(translate_now(menu_locale, 'inventory_scale')) .. ' {[' .. translate_now(menu_locale, 'auto_option') .. ']}')); + pn(fmt.c(fmt.b(translate_now("menu_locale", 'inventory_scale')) .. ' {[' .. translate_now("menu_locale", 'auto_option') .. ']}')); local t = ''; @@ -884,7 +890,7 @@ room { if prefs.inventory_scale then t = t .. tostring(font_scale) .. '%'; else - t = t .. translate_now(menu_locale, 'auto_option') .. ' (' .. tostring(font_scale) .. '%)'; + t = t .. translate_now("menu_locale", 'auto_option') .. ' (' .. tostring(font_scale) .. '%)'; end; @@ -928,7 +934,7 @@ room { obj { nam = '#text_width'; dsc = function(s) - pn(fmt.c(fmt.b(translate_now(menu_locale, 'text_width')))); + pn(fmt.c(fmt.b(translate_now("menu_locale", 'text_width')))); local t = ''; if prefs.text_width > 40 then t = t .. '{#fw_less|<<} '; @@ -986,21 +992,21 @@ room { obj { nam = '#text_alignment'; dsc = function(s) - pn(fmt.c(fmt.b(translate_now(menu_locale, 'text_alignment')))); + pn(fmt.c(fmt.b(translate_now("menu_locale", 'text_alignment')))); local t = ''; if prefs.text_alignment == 1 then - t = t .. translate_now(menu_locale, 'text_alignment_justify') .. ' | '; + t = t .. translate_now("menu_locale", 'text_alignment_justify') .. ' | '; else - t = t .. '{#align_just|' .. translate_now(menu_locale, 'text_alignment_justify') .. '} | '; + t = t .. '{#align_just|' .. translate_now("menu_locale", 'text_alignment_justify') .. '} | '; end; if prefs.text_alignment == 2 then - t = t .. translate_now(menu_locale, 'text_alignment_left'); + t = t .. translate_now("menu_locale", 'text_alignment_left'); else - t = t .. '{#align_left|' .. translate_now(menu_locale, 'text_alignment_left') .. '}'; + t = t .. '{#align_left|' .. translate_now("menu_locale", 'text_alignment_left') .. '}'; end; pn(fmt.c(t) .. '^'); end; @@ -1029,21 +1035,21 @@ room { obj { nam = '#padding'; dsc = function(s) - pn(fmt.c(fmt.b(translate_now(menu_locale, 'padding')))); + pn(fmt.c(fmt.b(translate_now("menu_locale", 'padding')))); local t = ''; if prefs.text_padding == 1 then - t = t .. translate_now(menu_locale, 'normal') .. ' | '; + t = t .. translate_now("menu_locale", 'normal') .. ' | '; else - t = t .. '{#pad_norm|' .. translate_now(menu_locale, 'normal') .. '} | '; + t = t .. '{#pad_norm|' .. translate_now("menu_locale", 'normal') .. '} | '; end; if prefs.text_padding == 2 then - t = t .. translate_now(menu_locale, 'extended'); + t = t .. translate_now("menu_locale", 'extended'); else - t = t .. '{#pad_large|' .. translate_now(menu_locale, 'extended') .. '}'; + t = t .. '{#pad_large|' .. translate_now("menu_locale", 'extended') .. '}'; end; pn(fmt.c(t) .. '^'); end; @@ -1072,21 +1078,21 @@ room { obj { nam = '#interval'; dsc = function(s) - pn(fmt.c(fmt.b(translate_now(menu_locale, 'interval')))); + pn(fmt.c(fmt.b(translate_now("menu_locale", 'interval')))); local t = ''; if prefs.text_interval == 1 then - t = t .. translate_now(menu_locale, 'normal') .. ' | '; + t = t .. translate_now("menu_locale", 'normal') .. ' | '; else - t = t .. '{#int_norm|' .. translate_now(menu_locale, 'normal') .. '} | '; + t = t .. '{#int_norm|' .. translate_now("menu_locale", 'normal') .. '} | '; end; if prefs.text_interval == 2 then - t = t .. translate_now(menu_locale, 'extended'); + t = t .. translate_now("menu_locale", 'extended'); else - t = t .. '{#int_large|' .. translate_now(menu_locale, 'extended') .. '}'; + t = t .. '{#int_large|' .. translate_now("menu_locale", 'extended') .. '}'; end; pn(fmt.c(t) .. '^'); end; @@ -1115,13 +1121,13 @@ room { obj { nam = '#textinput'; dsc = function(s) - pn(fmt.c(fmt.b(translate_now(menu_locale, 'use_text_input')))); + pn(fmt.c(fmt.b(translate_now("menu_locale", 'use_text_input')))); local t = ''; if prefs.text_input then - t = '{#ti_disable|' .. translate_now(menu_locale, 'disable') .. '} | ' .. translate_now(menu_locale, 'enable'); + t = '{#ti_disable|' .. translate_now("menu_locale", 'disable') .. '} | ' .. translate_now("menu_locale", 'enable'); else - t = translate_now(menu_locale, 'disable') .. ' | {#ti_enable|' .. translate_now(menu_locale, 'enable') .. '}'; + t = translate_now("menu_locale", 'disable') .. ' | {#ti_enable|' .. translate_now("menu_locale", 'enable') .. '}'; end; pn(fmt.c(t) .. '^'); @@ -1153,13 +1159,13 @@ room { theme = 'black'; noinv = true; nam = 'resolution_warning'; - title = translate(menu_locale, 'warning'); - decor = translate(menu_locale, 'resolution_warning'); + title = translate("menu_locale", 'warning'); + decor = translate("menu_locale", 'resolution_warning'); onenter = stop_menu; }: with { obj { nam = '#sysset'; - dsc = function(s) return '{' .. translate_now(menu_locale, 'system_settings') .. '}'; end; + dsc = function(s) return '{' .. translate_now("menu_locale", 'system_settings') .. '}'; end; act = function(s) instead.menu(); end; @@ -1173,13 +1179,13 @@ room { theme = 'black'; noinv = true; nam = 'theme_warning'; - title = translate(menu_locale, 'warning'); - decor = translate(menu_locale, 'theme_warning'); + title = translate("menu_locale", 'warning'); + decor = translate("menu_locale", 'theme_warning'); onenter = stop_menu; }: with { obj { nam = '#sysset'; - dsc = function(s) return '{' .. translate_now(menu_locale, 'system_settings') .. '}'; end; + dsc = function(s) return '{' .. translate_now("menu_locale", 'system_settings') .. '}'; end; act = function(s) instead.menu(); end; diff --git a/solarscale.lua b/solarscale.lua --- a/solarscale.lua +++ b/solarscale.lua @@ -20,32 +20,32 @@ obj { nofollowloc = false; dsc = function(s) if here()^'above_forest' or here()^'above_near_village' or here()^'above_village' or here()^'above_crater' or here()^'above_west' then - return translate_now(solarscale_locale, 'solarscale_ally_outside'); + return translate_now("solarscale_locale", 'solarscale_ally_outside'); elseif here()^'forest_glade' then - return translate_now(solarscale_locale, 'solarscale_ally_glade'); + return translate_now("solarscale_locale", 'solarscale_ally_glade'); elseif here()^'crater_near_tower' then - return translate_now(solarscale_locale, 'solarscale_ally_near_tower'); + return translate_now("solarscale_locale", 'solarscale_ally_near_tower'); elseif here()^'tower_level_2' then - return translate_now(solarscale_locale, 'solarscale_ally_tower_level_2'); + return translate_now("solarscale_locale", 'solarscale_ally_tower_level_2'); elseif here()^'tower_level_3' then - return translate_now(solarscale_locale, 'solarscale_ally_tower_level_3'); + return translate_now("solarscale_locale", 'solarscale_ally_tower_level_3'); elseif here()^'tower_level_4' then - return translate_now(solarscale_locale, 'solarscale_ally_tower_level_4'); + return translate_now("solarscale_locale", 'solarscale_ally_tower_level_4'); elseif here()^'tower_level_4_room_2' then - return translate_now(solarscale_locale, 'solarscale_ally_tower_level_4_room_2'); + return translate_now("solarscale_locale", 'solarscale_ally_tower_level_4_room_2'); elseif here()^'tower_level_3_room_2' then if here().light then - return translate_now(solarscale_locale, 'solarscale_ally_tower_level_3_room_2_lit'); + return translate_now("solarscale_locale", 'solarscale_ally_tower_level_3_room_2_lit'); else - return translate_now(solarscale_locale, 'solarscale_ally_tower_level_3_room_2_dark'); + return translate_now("solarscale_locale", 'solarscale_ally_tower_level_3_room_2_dark'); end; elseif here()^'tower_level_2_room_2' then - return translate_now(solarscale_locale, 'solarscale_ally_tower_level_2_room_2'); + return translate_now("solarscale_locale", 'solarscale_ally_tower_level_2_room_2'); elseif here()^'tower_level_1_room_2' then - return translate_now(solarscale_locale, 'solarscale_ally_tower_level_1_room_2'); + return translate_now("solarscale_locale", 'solarscale_ally_tower_level_1_room_2'); end; - return translate_now(solarscale_locale, 'solarscale_ally_follows'); + return translate_now("solarscale_locale", 'solarscale_ally_follows'); end; act = function(s) walkin('solarscale_ally_dlg'); @@ -56,44 +56,44 @@ obj { if (here() ~= where('solarscale_ally')) then if here()^'crater_near_tower' then - p(translate_now(solarscale_locale, 'solarscale_ally_near_tower_life')); + p(translate_now("solarscale_locale", 'solarscale_ally_near_tower_life')); elseif here()^'above_forest' and not solarscale_glade_visited then - p(translate_now(solarscale_locale, 'solarscale_ally_glade_suggestion')); + p(translate_now("solarscale_locale", 'solarscale_ally_glade_suggestion')); elseif here()^'forest_glade' and not solarscale_glade_visited then solarscale_glade_visited = true; - p(translate_now(solarscale_locale, 'solarscale_ally_glade_life')); + p(translate_now("solarscale_locale", 'solarscale_ally_glade_life')); elseif here()^'tower_level_1' and not s.level_1_visited then s.level_1_visited = true; - p(translate_now(solarscale_locale, 'solarscale_ally_tower_level_1_life')); + p(translate_now("solarscale_locale", 'solarscale_ally_tower_level_1_life')); elseif here()^'tower_level_2' and not s.level_2_visited then s.level_2_visited = true; - p(translate_now(solarscale_locale, 'solarscale_ally_tower_level_2_life')); + p(translate_now("solarscale_locale", 'solarscale_ally_tower_level_2_life')); elseif here()^'tower_level_3' and not s.level_3_visited then s.level_3_visited = true; - p(translate_now(solarscale_locale, 'solarscale_ally_tower_level_3_life')); + p(translate_now("solarscale_locale", 'solarscale_ally_tower_level_3_life')); elseif here()^'tower_level_4' and not s.level_4_visited then s.level_4_visited = true; - p(translate_now(solarscale_locale, 'solarscale_ally_tower_level_4_life')); + p(translate_now("solarscale_locale", 'solarscale_ally_tower_level_4_life')); elseif here()^'tower_level_4_room_2' and not s.level_4_2_visited then s.level_4_2_visited = true; - p(translate_now(solarscale_locale, 'solarscale_ally_tower_level_4_room_2_life')); + p(translate_now("solarscale_locale", 'solarscale_ally_tower_level_4_room_2_life')); elseif here()^'tower_level_3_room_2' and not s.level_3_2_visited then s.level_3_2_visited = true; - p(translate_now(solarscale_locale, 'solarscale_ally_tower_level_3_room_2_life')); + p(translate_now("solarscale_locale", 'solarscale_ally_tower_level_3_room_2_life')); elseif here()^'tower_level_2_room_2' and not s.level_2_2_visited then s.level_2_2_visited = true; - p(translate_now(solarscale_locale, 'solarscale_ally_tower_level_2_room_2_life')); + p(translate_now("solarscale_locale", 'solarscale_ally_tower_level_2_room_2_life')); elseif here()^'tower_level_1_room_2' and not s.level_1_2_visited then s.level_1_2_visited = true; - p(translate_now(solarscale_locale, 'solarscale_ally_tower_level_1_room_2_life')); + p(translate_now("solarscale_locale", 'solarscale_ally_tower_level_1_room_2_life')); elseif here()^'above_forest' and where('solarscale_ally') and where('solarscale_ally')^'forest_glade' then - p(translate_now(solarscale_locale, 'solarscale_ally_glade_left')); + p(translate_now("solarscale_locale", 'solarscale_ally_glade_left')); elseif where('solarscale_ally') and where('solarscale_ally')^'inside_crater_glade' and here()^'above_crater' and not s.crater_left then s.crater_left = true; - p(translate_now(solarscale_locale, 'solarscale_ally_above_crater_life')); + p(translate_now("solarscale_locale", 'solarscale_ally_above_crater_life')); else - p(translate_now(solarscale_locale, 'solarscale_ally_follow_life')); + p(translate_now("solarscale_locale", 'solarscale_ally_follow_life')); end; remove('solarscale_ally', where('solarscale_ally')); put('solarscale_ally', where(pl)); @@ -113,12 +113,12 @@ obj { end; end; end; - used = translate(solarscale_locale, 'solarscale_used'); + used = translate("solarscale_locale", 'solarscale_used'); } dlg { nam = 'solarscale_ally_dlg'; - disp = translate(solarscale_locale, 'disp'); + disp = translate("solarscale_locale", 'disp'); pic = function(s) local pic = std.call(from(), 'pic'); local spic = 'images/characters/solarscale.png'; @@ -140,129 +140,129 @@ dlg { local ss = _'solarscale_ally' local from = here():from(); if from^'above_forest' and not solarscale_glade_visited then - return translate_now(solarscale_locale, 'solarscale_ally_glade_suggestion'); + return translate_now("solarscale_locale", 'solarscale_ally_glade_suggestion'); elseif (from^'above_crater' or from^'above_near_village' or from^'above_village' or from^'above_west' or from^'near_village') and not solarscale_glade_visited and not ss.crater_left_discussed then - return translate_now(solarscale_locale, 'solarscale_ally_dlg_above_crater_enter'); + return translate_now("solarscale_locale", 'solarscale_ally_dlg_above_crater_enter'); elseif from^'above_forest' or from^'above_crater' or from^'inside_crater_path' or from ^'inside_crater_glade' or from^'above_west' then - return translate_now(solarscale_locale, 'solarscale_ally_dlg_enter_back_to_tower_' .. tostring(rnd(3))); + return translate_now("solarscale_locale", 'solarscale_ally_dlg_enter_back_to_tower_' .. tostring(rnd(3))); elseif ss.level_1_visited and not ss.tower_discussed then push(); --Add root phrase to the tree push('#about_tower_1'); ss.tower_discussed = true; - return translate_now(solarscale_locale, 'solarscale_ally_tower_first_enter'); + return translate_now("solarscale_locale", 'solarscale_ally_tower_first_enter'); elseif from^'tower_level_4_room_2' then - local phrase = translate_now(solarscale_locale, 'solarscale_ally_terminal'); + local phrase = translate_now("solarscale_locale", 'solarscale_ally_terminal'); if power_on then if pc_status ~= 'fail' then - phrase = phrase .. ' ' .. translate_now(solarscale_locale, 'solarscale_ally_terminal_try'); + phrase = phrase .. ' ' .. translate_now("solarscale_locale", 'solarscale_ally_terminal_try'); end; end; return phrase; elseif from^'tower_level_3_room_2' then if not from.light then - return translate_now(solarscale_locale, 'solarscale_ally_level_3_2'); + return translate_now("solarscale_locale", 'solarscale_ally_level_3_2'); end; elseif from^'crater_near_tower' then - return translate_now(solarscale_locale, 'solarscale_ally_near_tower'); + return translate_now("solarscale_locale", 'solarscale_ally_near_tower'); elseif from^'forest_glade' then - return translate_now(solarscale_locale, 'solarscale_ally_glade_enter'); + return string.gsub(translate_now("solarscale_locale", 'solarscale_ally_glade'), '[{}]', '') .. ' ' .. translate_now("solarscale_locale", 'solarscale_ally_glade_enter'); elseif from^'above_village' then - return translate_now(solarscale_locale, 'solarscale_ally_above_village'); + return translate_now("solarscale_locale", 'solarscale_ally_above_village'); else - return translate_now(solarscale_locale, 'solarscale_dlg_enter_generic_' .. tostring(rnd(3))); + return translate_now("solarscale_locale", 'solarscale_dlg_enter_generic_' .. tostring(rnd(3))); end; end; phr = { - {cond=function(s) return not solarscale_glade_visited and here():from()^'above_forest' end, translate(solarscale_locale, 'solarscale_ally_glade_question'), translate(solarscale_locale, 'solarscale_ally_glade_answer')}; - {'#above_crater_1', cond=function(s) return (from()^'above_crater' or from()^'above_near_village' or from()^'above_village' or from()^'above_west' or from()^'near_village') and not solarscale_glade_visited and not _'solarscale_ally'.crater_left_discussed end, translate(solarscale_locale, 'solarscale_ally_dlg_above_crater_1'), function(s) + {cond=function(s) return not solarscale_glade_visited and here():from()^'above_forest' end, translate("solarscale_locale", 'solarscale_ally_glade_question'), translate("solarscale_locale", 'solarscale_ally_glade_answer')}; + {'#above_crater_1', cond=function(s) return (from()^'above_crater' or from()^'above_near_village' or from()^'above_village' or from()^'above_west' or from()^'near_village') and not solarscale_glade_visited and not _'solarscale_ally'.crater_left_discussed end, translate("solarscale_locale", 'solarscale_ally_dlg_above_crater_1'), function(s) close('#above_crater_1'); close('#above_crater_2'); close('#above_crater_3'); - return translate_now(solarscale_locale, 'solarscale_ally_dlg_above_crater_1_response') + return translate_now("solarscale_locale", 'solarscale_ally_dlg_above_crater_1_response') end;}; - {'#above_crater_2', cond=function(s) return (from()^'above_crater' or from()^'above_near_village' or from()^'above_village' or from()^'above_west' or from()^'near_village') and not solarscale_glade_visited and not _'solarscale_ally'.crater_left_discussed and tower_seen end, translate(solarscale_locale, 'solarscale_ally_dlg_above_crater_2'), function(s) + {'#above_crater_2', cond=function(s) return (from()^'above_crater' or from()^'above_near_village' or from()^'above_village' or from()^'above_west' or from()^'near_village') and not solarscale_glade_visited and not _'solarscale_ally'.crater_left_discussed and tower_seen end, translate("solarscale_locale", 'solarscale_ally_dlg_above_crater_2'), function(s) close('#above_crater_1'); close('#above_crater_2'); close('#above_crater_3'); - return translate_now(solarscale_locale, 'solarscale_ally_dlg_above_crater_2_response'); + return translate_now("solarscale_locale", 'solarscale_ally_dlg_above_crater_2_response'); end;}; - {'#above_crater_3', cond=function(s) return (from()^'above_crater' or from()^'above_near_village' or from()^'above_village' or from()^'above_west' or from()^'near_village') and not solarscale_glade_visited and not _('solarscale_ally').crater_left_discussed and not tower_seen end, translate(solarscale_locale, 'solarscale_ally_dlg_above_crater_3'), function(s) + {'#above_crater_3', cond=function(s) return (from()^'above_crater' or from()^'above_near_village' or from()^'above_village' or from()^'above_west' or from()^'near_village') and not solarscale_glade_visited and not _('solarscale_ally').crater_left_discussed and not tower_seen end, translate("solarscale_locale", 'solarscale_ally_dlg_above_crater_3'), function(s) close('#above_crater_1'); close('#above_crater_2'); close('#above_crater_3'); - return translate_now(solarscale_locale, 'solarscale_ally_dlg_above_crater_3_response') + return translate_now("solarscale_locale", 'solarscale_ally_dlg_above_crater_3_response') end;}; - {cond = function(s) return not _('solarscale_ally').tower_know_discussed end; translate(solarscale_locale, 'solarscale_ally_dlg_know_tower'), function(s) + {cond = function(s) return not _('solarscale_ally').tower_know_discussed end; translate("solarscale_locale", 'solarscale_ally_dlg_know_tower'), function(s) _('solarscale_ally').tower_know_discussed = true; if tower_seen then - return translate_now(solarscale_locale, 'solarscale_ally_dlg_know_tower_response_visited'); + return translate_now("solarscale_locale", 'solarscale_ally_dlg_know_tower_response_visited'); else - return translate_now(solarscale_locale, 'solarscale_ally_dlg_know_tower_response_not_visited'); + return translate_now("solarscale_locale", 'solarscale_ally_dlg_know_tower_response_not_visited'); end; end, only=true, - {translate(solarscale_locale, 'solarscale_ally_dlg_know_tower_1'), translate(solarscale_locale, 'solarscale_ally_dlg_know_tower_1_response')}, - {translate(solarscale_locale, 'solarscale_ally_dlg_know_tower_2'), translate(solarscale_locale, 'solarscale_ally_dlg_know_tower_2_response')}, + {translate("solarscale_locale", 'solarscale_ally_dlg_know_tower_1'), translate("solarscale_locale", 'solarscale_ally_dlg_know_tower_1_response')}, + {translate("common_locale", 'dlg_keep_silent'), translate("solarscale_locale", 'solarscale_ally_dlg_know_tower_2_response')}, }; {false, '#about_tower_1', only=true, - {translate(solarscale_locale, 'solarscale_ally_dlg_about_tower_1_1'), translate(solarscale_locale, 'solarscale_nods_in_agreement')}; - {translate(solarscale_locale, 'solarscale_ally_dlg_about_tower_1_2'), translate(solarscale_locale, 'solarscale_nods_in_agreement')}; - {translate(solarscale_locale, 'solarscale_ally_dlg_about_tower_1_3'), translate(solarscale_locale, 'solarscale_nods_in_agreement')}; - {translate(solarscale_locale, 'solarscale_ally_dlg_about_tower_1_4'), translate(solarscale_locale, 'solarscale_nods_in_agreement')}; + {translate("solarscale_locale", 'solarscale_ally_dlg_about_tower_1_1'), translate("solarscale_locale", 'solarscale_nods_in_agreement')}; + {translate("solarscale_locale", 'solarscale_ally_dlg_about_tower_1_2'), translate("solarscale_locale", 'solarscale_nods_in_agreement')}; + {translate("solarscale_locale", 'solarscale_ally_dlg_about_tower_1_3'), translate("solarscale_locale", 'solarscale_nods_in_agreement')}; + {translate("solarscale_locale", 'solarscale_ally_dlg_about_tower_1_4'), translate("solarscale_locale", 'solarscale_nods_in_agreement')}; }; - {cond=function(s) return _'solarscale_ally'.tower_discussed and not _'solarscale_ally'.after_discussed end, only=true, translate(solarscale_locale, 'solarscale_ally_dlg_after_tower'), function(s) + {cond=function(s) return _'solarscale_ally'.tower_discussed and not _'solarscale_ally'.after_discussed end, only=true, translate("solarscale_locale", 'solarscale_ally_dlg_after_tower'), function(s) _'solarscale_ally'.after_discussed = true; - return translate_now(solarscale_locale, 'solarscale_ally_dlg_after_tower_response') + return translate_now("solarscale_locale", 'solarscale_ally_dlg_after_tower_response') end, - {translate(solarscale_locale, 'solarscale_ally_dlg_after_tower_1'), translate(solarscale_locale, 'solarscale_ally_dlg_after_tower_1_response')}; - {translate(solarscale_locale, 'solarscale_don_t_know'), translate(solarscale_locale, 'solarscale_ally_dlg_after_tower_2_response')}; - {cond=function(s) return tower_accept_level >= 2 end, translate(solarscale_locale, 'solarscale_ally_dlg_after_tower_3'), translate(solarscale_locale, 'solarscale_ally_dlg_after_tower_3_response')}; + {translate("solarscale_locale", 'solarscale_ally_dlg_after_tower_1'), translate("solarscale_locale", 'solarscale_ally_dlg_after_tower_1_response')}; + {translate("solarscale_locale", 'solarscale_don_t_know'), translate("solarscale_locale", 'solarscale_ally_dlg_after_tower_2_response')}; + {cond=function(s) return tower_accept_level >= 2 end, translate("solarscale_locale", 'solarscale_ally_dlg_after_tower_3'), translate("solarscale_locale", 'solarscale_ally_dlg_after_tower_3_response')}; }; - {cond=function(s) return tower_accept_level >= 3 and not _'solarscale_ally'.connection_discussed end, translate(solarscale_locale, 'solarscale_ally_dlg_connection'), translate(solarscale_locale, 'solarscale_ally_dlg_connection_response'), only=true; - {translate(solarscale_locale, 'solarscale_ally_dlg_connection_1'), function(s) + {cond=function(s) return tower_accept_level >= 3 and not _'solarscale_ally'.connection_discussed end, translate("solarscale_locale", 'solarscale_ally_dlg_connection'), translate("solarscale_locale", 'solarscale_ally_dlg_connection_response'), only=true; + {translate("solarscale_locale", 'solarscale_ally_dlg_connection_1'), function(s) _'solarscale_ally'.connection_discussed = true; - return translate_now(solarscale_locale, 'solarscale_ally_dlg_connection_1_response'); + return translate_now("solarscale_locale", 'solarscale_ally_dlg_connection_1_response'); end, only=true; - {translate(solarscale_locale, 'solarscale_ally_dlg_connection_1_1'), translate(solarscale_locale, 'solarscale_ally_dlg_connection_1_1_response')}; - {translate(solarscale_locale, 'solarscale_ally_dlg_connection_1_2'), translate(solarscale_locale, 'solarscale_ally_dlg_connection_1_2_response')}; - {translate(solarscale_locale, 'solarscale_ally_dlg_connection_1_3'), translate(solarscale_locale, 'solarscale_ally_dlg_connection_1_3_response')}; + {translate("solarscale_locale", 'solarscale_ally_dlg_connection_1_1'), translate("solarscale_locale", 'solarscale_ally_dlg_connection_1_1_response')}; + {translate("solarscale_locale", 'solarscale_ally_dlg_connection_1_2'), translate("solarscale_locale", 'solarscale_ally_dlg_connection_1_2_response')}; + {translate("solarscale_locale", 'solarscale_ally_dlg_connection_1_3'), translate("solarscale_locale", 'solarscale_ally_dlg_connection_1_3_response')}; }; - {translate(solarscale_locale, 'solarscale_ally_dlg_connection_2'), translate(solarscale_locale, 'solarscale_ally_dlg_connection_2_response')}; + {translate("solarscale_locale", 'solarscale_ally_dlg_connection_2'), translate("solarscale_locale", 'solarscale_ally_dlg_connection_2_response')}; }; - {cond=function(s) return here():from()^'tower_level_1' and not have('tower_box') and not _('tower_level_1').keys_taken and not have('tower_level_2_key') and _('level_1_up'):disabled() end, translate(solarscale_locale, 'solarscale_ally_dlg_level_1_1'), translate(solarscale_locale, 'solarscale_ally_dlg_level_1_1_response')}; - {cond=function(s) return here():from()^'tower_level_1' and have('tower_box') and not _('tower_level_1').keys_taken and _('level_1_up'):disabled() end, translate(solarscale_locale, 'solarscale_do_you_have_any_ideas'), translate(solarscale_locale, 'solarscale_ally_dlg_level_1_2_response'), + {cond=function(s) return here():from()^'tower_level_1' and not have('tower_box') and not _('tower_level_1').keys_taken and not have('tower_level_2_key') and _('level_1_up'):disabled() end, translate("solarscale_locale", 'solarscale_ally_dlg_level_1_1'), translate("solarscale_locale", 'solarscale_ally_dlg_level_1_1_response')}; + {cond=function(s) return here():from()^'tower_level_1' and have('tower_box') and not _('tower_level_1').keys_taken and _('level_1_up'):disabled() end, translate("solarscale_locale", 'solarscale_do_you_have_any_ideas'), translate("solarscale_locale", 'solarscale_ally_dlg_level_1_2_response'), only=true; - {function(s) return '[' .. translate_now(solarscale_locale, 'solarscale_pass_box') .. '] ' .. translate_now(solarscale_locale, 'solarscale_accept_help') end, translate(solarscale_locale, 'solarscale_ally_dlg_level_1_2_agree_response')}; - {translate(solarscale_locale, 'solarscale_ally_dlg_not_now'), translate(solarscale_locale, 'solarscale_ally_dlg_not_now_response')}; + {function(s) return '[' .. translate_now("solarscale_locale", 'solarscale_pass_box') .. '] ' .. translate_now("solarscale_locale", 'solarscale_accept_help') end, translate("solarscale_locale", 'solarscale_ally_dlg_level_1_2_agree_response')}; + {translate("solarscale_locale", 'solarscale_ally_dlg_not_now'), translate("solarscale_locale", 'solarscale_nods_silently')}; }; - {cond=function(s) return here():from()^'tower_level_1' and not have('tower_box') and _('tower_level_1').keys_taken and not have('tower_level_2_key') and _('level_1_up'):disabled() end, translate(solarscale_locale, 'solarscale_do_you_have_any_ideas'), translate(solarscale_locale, 'solarscale_ally_dlg_level_1_3_response'), + {cond=function(s) return here():from()^'tower_level_1' and not have('tower_box') and _('tower_level_1').keys_taken and not have('tower_level_2_key') and _('level_1_up'):disabled() end, translate("solarscale_locale", 'solarscale_do_you_have_any_ideas'), translate("solarscale_locale", 'solarscale_ally_dlg_level_1_3_response'), only=true; - {translate(solarscale_locale, 'solarscale_ally_dlg_level_1_3_1'), translate(solarscale_locale, 'solarscale_ally_dlg_level_1_3_1_or_2_response')}; - {translate(solarscale_locale, 'solarscale_ally_dlg_level_1_3_2'), translate(solarscale_locale, 'solarscale_ally_dlg_level_1_3_1_or_2_response')}; - {translate(solarscale_locale, 'solarscale_ally_dlg_level_1_3_3'), translate(solarscale_locale, 'solarscale_ally_dlg_level_1_3_3_response')}; + {translate("solarscale_locale", 'solarscale_ally_dlg_level_1_3_1'), translate("solarscale_locale", 'solarscale_ally_dlg_level_1_3_1_or_2_response')}; + {translate("solarscale_locale", 'solarscale_ally_dlg_level_1_3_2'), translate("solarscale_locale", 'solarscale_ally_dlg_level_1_3_1_or_2_response')}; + {translate("solarscale_locale", 'solarscale_ally_dlg_level_1_3_3'), translate("solarscale_locale", 'solarscale_ally_dlg_level_1_3_3_response')}; }; - {cond=function(s) return here():from()^'tower_level_1' and have('tower_box') and _('tower_level_1').keys_taken and not have('tower_level_2_key') and _('level_1_up'):disabled() end, translate(solarscale_locale, 'solarscale_do_you_have_any_ideas'), translate(solarscale_locale, 'solarscale_ally_dlg_level_1_4_response'), + {cond=function(s) return here():from()^'tower_level_1' and have('tower_box') and _('tower_level_1').keys_taken and not have('tower_level_2_key') and _('level_1_up'):disabled() end, translate("solarscale_locale", 'solarscale_do_you_have_any_ideas'), translate("solarscale_locale", 'solarscale_ally_dlg_level_1_4_response'), only=true; - {function(s) return '[' .. translate_now(solarscale_locale, 'solarscale_pass_items_level_1') .. '] ' .. translate_now(solarscale_locale, 'solarscale_accept_help') end, function(s) + {function(s) return '[' .. translate_now("solarscale_locale", 'solarscale_pass_items_level_1') .. '] ' .. translate_now("solarscale_locale", 'solarscale_accept_help') end, function(s) if solarscale_helps > 0 then open('#level1_agree'); open('#level1_disagree'); close('#level1_no_help'); - return translate_now(solarscale_locale, 'solarscale_ally_dlg_level_1_4_1_response'); + return translate_now("solarscale_locale", 'solarscale_ally_dlg_level_1_4_1_response') .. ' ' .. translate_now("solarscale_locale", 'solarscale_ally_dlg_level_1_4_1_response_positive'); else close('#level1_agree'); close('#level1_disagree'); open('#level1_no_help'); - return translate_now(solarscale_locale, 'solarscale_ally_dlg_level_1_4_1_response_negative'); + return translate_now("solarscale_locale", 'solarscale_ally_dlg_level_1_4_1_response') .. ' ' .. translate_now("solarscale_locale", 'solarscale_ally_dlg_level_1_4_1_response_negative'); end; end, only=true; - {'#level1_agree', translate(solarscale_locale, 'solarscale_accept_help'), function(s) + {'#level1_agree', translate("solarscale_locale", 'solarscale_accept_help'), function(s) remove('tower_box', pl); remove('tower_hint_1', pl); remove('tower_key_0', pl); @@ -271,30 +271,30 @@ dlg { remove('tower_key_3', pl); take('tower_level_2_key'); solarscale_helps = solarscale_helps - 1; - return translate_now(solarscale_locale, 'solarscale_ally_dlg_level_1_4_1_1_response'); + return translate_now("solarscale_locale", 'solarscale_ally_dlg_level_1_4_1_1_response'); end}; - {'#level1_disagree', translate(solarscale_locale, 'solarscale_ally_reject_help'), translate(solarscale_locale, 'solarscale_ally_dlg_level_1_4_1_no_help_response')}; - {'#level1_no_help', translate(solarscale_locale, 'solarscale_ally_no_help'), translate(solarscale_locale, 'solarscale_ally_dlg_level_1_4_1_no_help_response')}; + {'#level1_disagree', translate("solarscale_locale", 'solarscale_ally_reject_help'), translate("solarscale_locale", 'solarscale_ally_dlg_level_1_4_1_no_help_response')}; + {'#level1_no_help', translate("solarscale_locale", 'solarscale_ally_no_help'), translate("solarscale_locale", 'solarscale_ally_dlg_level_1_4_1_no_help_response')}; }; - {translate(solarscale_locale, 'solarscale_ally_dlg_not_now'), translate(solarscale_locale, 'solarscale_ally_dlg_not_now_response')}; + {translate("solarscale_locale", 'solarscale_ally_dlg_not_now'), translate("solarscale_locale", 'solarscale_nods_silently')}; }; - {cond=function(s) return here():from()^'tower_level_2' end, translate(solarscale_locale, 'solarscale_ally_dlg_level_2_1'), translate(solarscale_locale, 'solarscale_ally_dlg_level_2_1_response'), - {translate(solarscale_locale, 'solarscale_ally_dlg_level_2_1_1'), translate(solarscale_locale, 'solarscale_ally_dlg_level_2_1_1_response')}; + {cond=function(s) return here():from()^'tower_level_2' end, translate("solarscale_locale", 'solarscale_ally_dlg_level_2_1'), translate("solarscale_locale", 'solarscale_ally_dlg_level_2_1_response'), + {translate("solarscale_locale", 'solarscale_ally_dlg_level_2_1_1'), translate("solarscale_locale", 'solarscale_ally_dlg_level_2_1_1_response')}; }; - {cond=function(s) return here():from()^'tower_level_3' and _('level_3_up'):disabled() end, translate(solarscale_locale, 'solarscale_ally_dlg_level_3_1'), function(s) + {cond=function(s) return here():from()^'tower_level_3' and _('level_3_up'):disabled() end, translate("solarscale_locale", 'solarscale_ally_dlg_level_3_1'), function(s) if solarscale_helps > 0 then open('#level3_agree'); open('#level3_disagree'); close('#level3_no_help'); - return translate_now(solarscale_locale, 'solarscale_ally_dlg_level_3_1_response'); + return translate_now("solarscale_locale", 'solarscale_ally_dlg_level_3_1_response'); else close('#level3_agree'); close('#level3_disagree'); open('#level3_no_help'); - return translate_now(solarscale_locale, 'solarscale_ally_dlg_level_3_1_response_negative'); + return translate_now("solarscale_locale", 'solarscale_ally_dlg_level_3_1_response_negative'); end; end, only=true, - {"#level3_agree", translate(solarscale_locale, 'solarscale_accept_help'), function(s) + {"#level3_agree", translate("solarscale_locale", 'solarscale_accept_help'), function(s) remove('figure_wolf', pl); remove('figure_tiger', pl); remove('figure_lion', pl); @@ -303,27 +303,27 @@ dlg { _('tower_level_3_table').solved = true; _('level_3_up'):enable(); solarscale_helps = solarscale_helps - 1; - return translate_now(solarscale_locale, 'solarscale_ally_dlg_level_3_1_1_response'); + return translate_now("solarscale_locale", 'solarscale_ally_dlg_level_3_1_1_response'); end}; - {"#level3_disagree", translate(solarscale_locale, 'solarscale_let_me_try'), translate(solarscale_locale, 'solarscale_nods_silently')}; - {"#level3_no_help", translate(solarscale_locale, 'solarscale_let_me_try_2'), translate(solarscale_locale, 'solarscale_nods_silently')}; + {"#level3_disagree", translate("solarscale_locale", 'solarscale_let_me_try'), translate("solarscale_locale", 'solarscale_nods_silently')}; + {"#level3_no_help", translate("solarscale_locale", 'solarscale_let_me_try_2'), translate("solarscale_locale", 'solarscale_nods_silently')}; }; - {cond=function(s) return here():from()^'tower_level_4' and _('level_4_next_room'):disabled() end, translate(solarscale_locale, 'solarscale_do_you_have_any_ideas'), function(s) + {cond=function(s) return here():from()^'tower_level_4' and _('level_4_next_room'):disabled() end, translate("solarscale_locale", 'solarscale_do_you_have_any_ideas'), function(s) if solarscale_helps > 0 then open('#level4_agree'); open('#level4_disagree'); close('#level4_no_help'); - return translate_now(solarscale_locale, 'solarscale_ally_dlg_level_4_1_response'); + return translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_1_response'); else close('#level4_agree'); close('#level4_disagree'); open('#level4_no_help'); - return translate_now(solarscale_locale, 'solarscale_ally_dlg_level_4_1_response_negative'); + return translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_1_response_negative'); end; end, only=true, - {"#level4_agree", translate(solarscale_locale, 'solarscale_ally_dlg_level_4_1_1'), function(s) + {"#level4_agree", translate("solarscale_locale", 'solarscale_ally_dlg_level_4_1_1'), function(s) candles_solved = true; _('level_3_up'):enable(); solarscale_helps = solarscale_helps - 1; @@ -339,70 +339,70 @@ dlg { _('level_4_next_room'):enable(); - return translate_now(solarscale_locale, 'solarscale_ally_dlg_level_4_1_1_response'); + return translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_1_1_response'); end}; - {"#level4_disagree", translate(solarscale_locale, 'solarscale_let_me_try'), translate(solarscale_locale, 'solarscale_nods_silently')}; - {"#level4_no_help", translate(solarscale_locale, 'solarscale_let_me_try_2'), translate(solarscale_locale, 'solarscale_nods_silently')}; + {"#level4_disagree", translate("solarscale_locale", 'solarscale_let_me_try'), translate("solarscale_locale", 'solarscale_nods_silently')}; + {"#level4_no_help", translate("solarscale_locale", 'solarscale_let_me_try_2'), translate("solarscale_locale", 'solarscale_nods_silently')}; }; - {cond=function(s) return here():from()^'tower_level_4_room_2' and power_on and pc_status ~= 'fail' end, translate(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1'), function(s) - p(translate_now(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_response_turnon')); + {cond=function(s) return here():from()^'tower_level_4_room_2' and power_on and pc_status ~= 'fail' end, translate("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1'), function(s) + p(translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_response_turnon')); local rval = _('system_unit'):check(true); close('#tl4r2a'); close('#tl4r2b'); - + if rval == 'motherboard' then - p(translate_now(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_response_motherboard')); + p(translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_response_issue', {broken=translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_response_motherboard')})); open('#tl4r2b'); return; elseif rval == 'cpu' then - p(translate_now(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_response_cpu')); + p(translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_response_issue', {broken=translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_response_cpu')})); open('#tl4r2b'); return; elseif rval == 'ram' then - p(translate_now(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_response_ram')); + p(translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_response_issue', {broken=translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_response_ram')})); open('#tl4r2b'); return; elseif rval == 'video' then - p(translate_now(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_response_video')); + p(translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_response_issue', {broken=translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_response_video')})); open('#tl4r2b'); return; elseif rval == 'keyboard' then - p(translate_now(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_response_keyboard')); + p(translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_response_issue', {broken=translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_response_keyboard')})); open('#tl4r2b'); return; elseif rval == 'network' then - p(translate_now(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_response_network')); + p(translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_response_issue', {broken=translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_response_network')})); open('#tl4r2b'); return; end; open('#tl4r2a'); - p(translate_now(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_response_fixed')); + p(translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_response_fixed')); end, { - '#tl4r2a', translate(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_1'), + '#tl4r2a', translate("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_1'), function(s) walkin('terminal'); end; }, - {'#tl4r2b', translate(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_2'), function(s) + {'#tl4r2b', translate("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_2'), function(s) if have('part_box') then if solarscale_helps > 0 then open('#tl4r2cfa'); open('#tl4r2cfb'); close('#tl4r2cfc'); close('#tl4r2cfd'); - return translate_now(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_2_response'); + return translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_2_response'); else close('#tl4r2cfa'); close('#tl4r2cfb'); close('#tl4r2cfc'); open('#tl4r2cfd'); - return translate_now(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_2_response_negative'); + return translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_2_response_negative'); end; else if solarscale_helps > 0 then @@ -410,17 +410,17 @@ dlg { close('#tl4r2cfb'); close('#tl4r2cfd'); open('#tl4r2cfc'); - return translate_now(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_2_response_no_parts'); + return translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_2_response_no_parts'); else close('#tl4r2cfa'); close('#tl4r2cfb'); close('#tl4r2cfc'); open('#tl4r2cfd'); - return translate_now(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_2_response_negative'); + return translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_2_response_negative'); end; end; end, only=true, - {'#tl4r2cfa', translate(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_2_1'), function(s) + {'#tl4r2cfa', translate("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_2_1'), function(s) walkout(); local motherboard = lookup('#motherboard', _'system_unit'); local cpu= lookup('#cpu', _'system_unit'); @@ -485,37 +485,37 @@ dlg { lookup('#computer', 'tower_level_4_room_2').assembled = true; - return translate_now(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_2_1_response'); + return translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_2_1_response'); end}, - {'#tl4r2cfb', translate(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_2_2'), function(s) + {'#tl4r2cfb', translate("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_2_2'), function(s) walkout(); - return translate_now(solarscale_locale, 'solarscale_nods_silently'); + return translate_now("solarscale_locale", 'solarscale_nods_silently'); end}, - {'#tl4r2cfc', translate(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_2_3'), translate(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_2_3_response')}, - {'#tl4r2cfd', translate(solarscale_locale, 'solarscale_ally_dlg_end'), function(s) + {'#tl4r2cfc', translate("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_2_3'), translate("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_2_3_response')}, + {'#tl4r2cfd', translate("solarscale_locale", 'solarscale_ally_dlg_end'), function(s) walkout(); end} }; { - '#tl4r2c', translate(solarscale_locale, 'solarscale_ally_dlg_end'), + '#tl4r2c', translate("solarscale_locale", 'solarscale_ally_dlg_end'), function(s) walkout(); end; }}; - {cond=function(s) return here():from()^'tower_level_4_room_2' and pc_status == 'fail'; end, translate(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_2'), function(s) + {cond=function(s) return here():from()^'tower_level_4_room_2' and pc_status == 'fail'; end, translate("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_2'), function(s) if have('part_box') then if solarscale_helps > 0 then open('#tl4r2fa'); open('#tl4r2fb'); close('#tl4r2fc'); close('#tl4r2fd'); - return translate_now(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_2_response'); + return translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_2_response'); else close('#tl4r2fa'); close('#tl4r2fb'); close('#tl4r2fc'); open('#tl4r2fd'); - return translate_now(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_2_response_negative'); + return translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_2_response_negative'); end; else if solarscale_helps > 0 then @@ -523,17 +523,17 @@ dlg { close('#tl4r2fb'); close('#tl4r2fd'); open('#tl4r2fc'); - return translate_now(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_2_response_no_parts'); + return translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_2_response_no_parts'); else close('#tl4r2fa'); close('#tl4r2fb'); close('#tl4r2fc'); open('#tl4r2fd'); - return translate_now(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_2_response_negative'); + return translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_2_response_negative'); end; end; end, only=true, - {'#tl4r2fa', translate(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_2_1'), function(s) + {'#tl4r2fa', translate("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_2_1'), function(s) walkout(); local motherboard = lookup('#motherboard', _'system_unit'); local cpu= lookup('#cpu', _'system_unit'); @@ -598,48 +598,48 @@ dlg { lookup('#computer', 'tower_level_4_room_2').assembled = true; - return translate_now(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_2_1_response'); + return translate_now("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_2_1_response'); end}, - {'#tl4r2fb', translate(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_2_2'), function(s) + {'#tl4r2fb', translate("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_2_2'), function(s) walkout(); - return translate_now(solarscale_locale, 'solarscale_nods_silently'); + return translate_now("solarscale_locale", 'solarscale_nods_silently'); end}, - {'#tl4r2fc', translate(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_2_3'), translate(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_1_2_3_response')}, - {'#tl4r2fd', translate(solarscale_locale, 'solarscale_ally_dlg_end'), function(s) + {'#tl4r2fc', translate("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_2_3'), translate("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_1_2_3_response')}, + {'#tl4r2fd', translate("solarscale_locale", 'solarscale_ally_dlg_end'), function(s) walkout(); end} }; - {cond=function(s) return here():from()^'tower_level_4_room_2' and not power_on end, translate(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_3'), translate(solarscale_locale, 'solarscale_ally_dlg_level_4_room_2_3_response')}; + {cond=function(s) return here():from()^'tower_level_4_room_2' and not power_on end, translate("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_3'), translate("solarscale_locale", 'solarscale_ally_dlg_level_4_room_2_3_response')}; - {cond=function(s) return here():from()^'tower_level_3_room_2' and not _'tower_level_3_room_2'.light end, translate(solarscale_locale, 'solarscale_ally_dlg_light'), function(s) + {cond=function(s) return here():from()^'tower_level_3_room_2' and not _'tower_level_3_room_2'.light end, translate("solarscale_locale", 'solarscale_ally_dlg_light'), function(s) if solarscale_helps > 0 then open('#level32_agree'); open('#level32_disagree'); close('#level32_no_help'); - return translate_now(solarscale_locale, 'solarscale_ally_dlg_light_response') + return translate_now("solarscale_locale", 'solarscale_ally_dlg_light_response') else close('#level32_agree'); close('#level32_disagree'); open('#level32_no_help'); - return translate_now(solarscale_locale, 'solarscale_ally_dlg_light_response_negative') + return translate_now("solarscale_locale", 'solarscale_ally_dlg_light_response_negative') end; end, only=true, - {'#level32_agree', translate(solarscale_locale, 'solarscale_ally_dlg_light_agree'), function(s) + {'#level32_agree', translate("solarscale_locale", 'solarscale_ally_dlg_light_agree'), function(s) _'tower_level_3_room_2'.light = true; lookup('#door', 'tower_level_3_room_2'):enable(); lookup('#shelves', 'tower_level_3_room_2'):enable(); _'level_3_room_2_down':enable() lookup('#darkness', 'tower_level_3_room_2'):disable(); - return translate_now(solarscale_locale, 'solarscale_ally_dlg_light_agree_response') + return translate_now("solarscale_locale", 'solarscale_ally_dlg_light_agree_response') end}, - {'#level32_disagree', translate(solarscale_locale, 'solarscale_let_me_try'), translate(solarscale_locale, 'solarscale_nods_silently')}, - {'#level32_no_help', translate(solarscale_locale, 'solarscale_let_me_try_2'), translate(solarscale_locale, 'solarscale_nods_silently')}, + {'#level32_disagree', translate("solarscale_locale", 'solarscale_let_me_try'), translate("solarscale_locale", 'solarscale_nods_silently')}, + {'#level32_no_help', translate("solarscale_locale", 'solarscale_let_me_try_2'), translate("solarscale_locale", 'solarscale_nods_silently')}, }; - {cond=function(s) return here():from()^'tower_level_1_room_2' and _'solarscale_ally'.tea_found and not _'solarscale_ally'.tea_asked end, translate(solarscale_locale, 'solarscale_ally_ask_tea'), function(s) + {cond=function(s) return here():from()^'tower_level_1_room_2' and _'solarscale_ally'.tea_found and not _'solarscale_ally'.tea_asked end, translate("solarscale_locale", 'solarscale_ally_ask_tea'), function(s) _'solarscale_ally'.tea_asked = true; - return translate_now(solarscale_locale, 'solarscale_ally_ask_tea_response') + return translate_now("solarscale_locale", 'solarscale_ally_ask_tea_response') end}; - {translate(solarscale_locale, 'solarscale_ally_dlg_end'), function(s) walkout(); end}; + {translate("solarscale_locale", 'solarscale_ally_dlg_end'), function(s) walkout(); end}; }; } @@ -647,7 +647,7 @@ dlg { other_dragons = false; repeat_question = false; nam = 'solarscale_tea_dlg'; - disp = translate(solarscale_locale, 'disp'); + disp = translate("solarscale_locale", 'disp'); pic = function(s) local pic = std.call(from(), 'pic'); local spic = 'images/characters/solarscale.png'; @@ -665,101 +665,101 @@ dlg { theme = function(s) return here():from().theme; end; - enter = translate(solarscale_locale, 'tea_start'); + enter = translate("solarscale_locale", 'tea_start'); phr = { - {translate(solarscale_locale, 'solarscale_don_t_know'), function(s) + {translate("solarscale_locale", 'solarscale_don_t_know'), function(s) tea_answer_1 = 2; if tower_accept_level == 3 then - return translate_now(solarscale_locale, 'tea_q1_response_1_tower_accepts'); + return translate_now("solarscale_locale", 'tea_q1_response_1_tower_accepts'); else - return translate_now(solarscale_locale, 'tea_q1_response_1'); + return translate_now("solarscale_locale", 'tea_q1_response_1'); end; end, next='#question2'}; - {translate(solarscale_locale, 'tea_q1_darkness'), function(s) + {translate("solarscale_locale", 'tea_q1_darkness'), function(s) if tower_accept_level == 3 then - return translate_now(solarscale_locale, 'tea_q1_response_1_tower_accepts'); + return translate_now("solarscale_locale", 'tea_q1_response_1_tower_accepts'); else - return translate_now(solarscale_locale, 'tea_q1_response_1'); + return translate_now("solarscale_locale", 'tea_q1_response_1'); end; end, next='#question2'}; - {translate(solarscale_locale, 'tea_q1_dragons'), function(s) + {translate("solarscale_locale", 'tea_q1_dragons'), function(s) tea_answer_1 = 1; _'solarscale_tea_dlg'.other_dragons = true; - return translate_now(solarscale_locale, 'tea_q1_response_dragons'); + return translate_now("solarscale_locale", 'tea_q1_response_dragons'); end, next='#question2'}; - {cond=function(s) return tower_accept_level == 3 end, translate(solarscale_locale, 'tea_q1_i'), function(s) + {cond=function(s) return tower_accept_level == 3 end, translate("solarscale_locale", 'tea_q1_i'), function(s) tea_answer_1 = 1; - return translate_now(solarscale_locale, 'tea_q1_response_i'); + return translate_now("solarscale_locale", 'tea_q1_response_i'); end, next='#question2'}; only=true; {false, '#question2', - {translate(solarscale_locale, 'solarscale_don_t_know'), function(s) + {translate("solarscale_locale", 'solarscale_don_t_know'), function(s) tea_answer_2 = 2; - local r = translate_now(solarscale_locale, 'tea_q2_r1'); + local r = translate_now("solarscale_locale", 'tea_q2_r1'); if _'solarscale_tea_dlg'.other_dragons then - return r .. translate_now(solarscale_locale, 'tea_q2_other_dragons_1'); + return r .. translate_now("solarscale_locale", 'tea_q2_other_dragons_1'); else - return r .. translate_now(solarscale_locale, 'tea_q2_other_dragons_2'); + return r .. translate_now("solarscale_locale", 'tea_q2_other_dragons_2'); end; end, next='#question3'}; - {translate(solarscale_locale, 'tea_q2_me'), function(s) - local r = translate_now(solarscale_locale, 'tea_q2_r2'); + {translate("solarscale_locale", 'tea_q2_me'), function(s) + local r = translate_now("solarscale_locale", 'tea_q2_r2'); if _'solarscale_tea_dlg'.other_dragons then - return r .. translate_now(solarscale_locale, 'tea_q2_other_dragons_1'); + return r .. translate_now("solarscale_locale", 'tea_q2_other_dragons_1'); else - return r .. translate_now(solarscale_locale, 'tea_q2_other_dragons_2'); + return r .. translate_now("solarscale_locale", 'tea_q2_other_dragons_2'); end; end, next='#question3'}; - {translate(solarscale_locale, 'tea_q2_us'), function(s) + {translate("solarscale_locale", 'tea_q2_us'), function(s) tea_answer_2 = 1; - local r = translate_now(solarscale_locale, 'tea_q2_r3'); + local r = translate_now("solarscale_locale", 'tea_q2_r3'); if _'solarscale_tea_dlg'.other_dragons then - return r .. translate_now(solarscale_locale, 'tea_q2_other_dragons_1'); + return r .. translate_now("solarscale_locale", 'tea_q2_other_dragons_1'); else - return r .. translate_now(solarscale_locale, 'tea_q2_other_dragons_2'); + return r .. translate_now("solarscale_locale", 'tea_q2_other_dragons_2'); end; end, next='#question3'}; - {translate(solarscale_locale, 'tea_q2_itself'), function(s) - local r = translate_now(solarscale_locale, 'tea_q2_r1'); + {translate("solarscale_locale", 'tea_q2_itself'), function(s) + local r = translate_now("solarscale_locale", 'tea_q2_r1'); if _'solarscale_tea_dlg'.other_dragons then - return r .. translate_now(solarscale_locale, 'tea_q2_other_dragons_1'); + return r .. translate_now("solarscale_locale", 'tea_q2_other_dragons_1'); else - return r .. translate_now(solarscale_locale, 'tea_q2_other_dragons_2'); + return r .. translate_now("solarscale_locale", 'tea_q2_other_dragons_2'); end; end, next='#question3'}; only=true }; {false, '#question3', - {translate(solarscale_locale, 'tea_q3_know_nothing'), function(s) + {translate("solarscale_locale", 'tea_q3_know_nothing'), function(s) walkout(); - return translate_now(solarscale_locale, 'tea_q3_r1') .. '^' .. translate_now(solarscale_locale, 'tea_end'); + return translate_now("solarscale_locale", 'tea_q3_r1') .. '^' .. translate_now("solarscale_locale", 'tea_end'); end}; - {translate(solarscale_locale, 'tea_q3_thought_alone'), function(s) + {translate("solarscale_locale", 'tea_q3_thought_alone'), function(s) tea_answer_3 = 1; walkout(); - return translate_now(solarscale_locale, 'tea_q3_r1') .. '^' .. translate_now(solarscale_locale, 'tea_end'); + return translate_now("solarscale_locale", 'tea_q3_r1') .. '^' .. translate_now("solarscale_locale", 'tea_end'); end}; - {translate(solarscale_locale, 'tea_q3_alone'), function(s) + {translate("solarscale_locale", 'tea_q3_alone'), function(s) tea_answer_3 = 1; walkout(); - return translate_now(solarscale_locale, 'tea_q3_r1') .. '^' .. translate_now(solarscale_locale, 'tea_end'); + return translate_now("solarscale_locale", 'tea_q3_r1') .. '^' .. translate_now("solarscale_locale", 'tea_end'); end}; - {translate(solarscale_locale, 'tea_q3_exist'), function(s) + {translate("solarscale_locale", 'tea_q3_exist'), function(s) tea_answer_3 = 1; walkout(); - return translate_now(solarscale_locale, 'tea_q3_r2') .. '^' .. translate_now(solarscale_locale, 'tea_end'); + return translate_now("solarscale_locale", 'tea_q3_r2') .. '^' .. translate_now("solarscale_locale", 'tea_end'); end}; - {cond=function(s) return not _'solarscale_tea_dlg'.repeat_question end; translate(solarscale_locale, 'solarscale_don_t_know'), function(s) + {cond=function(s) return not _'solarscale_tea_dlg'.repeat_question end; translate("solarscale_locale", 'solarscale_don_t_know'), function(s) _'solarscale_tea_dlg'.repeat_question = true; - return translate_now(solarscale_locale, 'tea_q3_r_try_again'); + return translate_now("solarscale_locale", 'tea_q3_r_try_again'); end}; - {cond=function(s) return _'solarscale_tea_dlg'.repeat_question end; translate(solarscale_locale, 'tea_q3_don_t_know_final'); function(s) + {cond=function(s) return _'solarscale_tea_dlg'.repeat_question end; translate("solarscale_locale", 'tea_q3_don_t_know_final'); function(s) tea_answer_3 = 2; walkout(); if tea_answer_1 == 2 and tea_answer_2 == 2 then - return translate_now(solarscale_locale, 'tea_q3_r_don_t_know'); + return translate_now("solarscale_locale", 'tea_q3_r_don_t_know'); else - return translate_now(solarscale_locale, 'solarscale_nods_silently') .. '^' .. translate_now(solarscale_locale, 'tea_end'); + return translate_now("solarscale_locale", 'solarscale_nods_silently') .. '^' .. translate_now("solarscale_locale", 'tea_end'); end; end}; } diff --git a/terminal.lua b/terminal.lua --- a/terminal.lua +++ b/terminal.lua @@ -307,11 +307,11 @@ room { if s.status == 'command' then return s.path .. '>' .. s.entry .. '_'; elseif s.status == 'crypt' or s.status == 'connect' then - return translate_now(computer_locale, 'query_password') .. entry .. '_'; + return translate_now("terminal_locale", 'query_password') .. entry .. '_'; elseif s.status == 'format' then - return translate_now(computer_locale, 'query_type_yes') .. entry .. '_'; + return translate_now("terminal_locale", 'query_type_yes') .. entry .. '_'; elseif s.status == 'wait_format' then - return translate_now(computer_locale, 'query_formatting') .. " " .. tostring(s.format_percent) .. '%'; + return translate_now("terminal_locale", 'query_formatting') .. " " .. tostring(s.format_percent) .. '%'; elseif s.status == 'format_done' then end; return ''; @@ -320,12 +320,12 @@ room { command_preprocessor = function(s, command) if s.status == 'crypt' then s.status = 'command'; - s:push(translate_now(computer_locale, 'query_password') .. command); + s:push(translate_now("terminal_locale", 'query_password') .. command); if command == password1 then s:push(password2); s:push(''); else - s:push(translate_now(computer_locale, 'invalid_password')); + s:push(translate_now("terminal_locale", 'invalid_password')); s:push(''); end; s.entry = ''; @@ -333,7 +333,7 @@ room { elseif s.status == 'connect' then s.entry = ''; s.status = 'command'; - s:push(translate_now(computer_locale, 'query_password') .. command); + s:push(translate_now("terminal_locale", 'query_password') .. command); if command == password2 then if irradiated then snd.music('sound/bgm_ending_space_irradiated.ogg'); @@ -347,20 +347,20 @@ room { end; else - s:push(translate_now(computer_locale, 'invalid_password_2')); + s:push(translate_now("terminal_locale", 'invalid_password_2')); end; return true; elseif s.status == 'format' then s.status = 'format'; s.entry = ''; - s:push(translate_now(computer_locale, 'query_type_yes') .. command); + s:push(translate_now("terminal_locale", 'query_type_yes') .. command); --s:push("Type 'Yes' to confirm:" .. command); if command:lower() == 'yes' then s.status = 'wait_format'; timer:set(25); else - s:push(translate_now(computer_locale, 'operation_cancelled')); + s:push(translate_now("terminal_locale", 'operation_cancelled')); s.status = 'command'; end; @@ -378,12 +378,12 @@ room { d:replace_line(s:query_formatter(s.path, s.entry)); else s.status = 'format_done'; - s:push(translate_now(computer_locale, 'formatting_complete')); + s:push(translate_now("terminal_locale", 'formatting_complete')); end; return false; elseif s.status == 'format_done' then if s.format_percent < 120 then - s:push(translate_now(computer_locale, 'critical_failure')); + s:push(translate_now("terminal_locale", 'critical_failure')); end; s.format_percent = s.format_percent + 1; @@ -421,11 +421,11 @@ room { s.history = {}; s:process_directory_structure(s.directory_structure['C:']); - s:push(translate_now(computer_locale, 'starting_tower')); + s:push(translate_now("terminal_locale", 'tower_os_line_1')); s:push(''); - s:push(translate_now(computer_locale, 'tower_version')); + s:push(translate_now("terminal_locale", 'tower_os_line_2')); s:push(''); - s:push(translate_now(computer_locale, 'type_help')); + s:push(translate_now("terminal_locale", 'tower_os_line_3')); s:push(''); s:makekeyboard(); @@ -819,17 +819,17 @@ room { ['DOCS'] = { ['PASSWORD.TXT'] = function(s, command, args) if command == 'PRINT.COM' then - s:push(translate_now(computer_locale, 'binary_data')); + s:push(translate_now("terminal_locale", 'binary_data')); else - s:push(translate_now(computer_locale, 'bad_command')); + s:push(translate_now("terminal_locale", 'bad_command')); end; end; ['CRYPT.COM'] = function(s, command, args) if command == 'PRINT.COM' then - s:push(translate_now(computer_locale, 'binary_data')); + s:push(translate_now("terminal_locale", 'binary_data')); elseif command == '' then if not args then - s:push(translate_now(computer_locale, 'crypt_usage')); + s:push(translate_now("terminal_locale", 'crypt_usage')); else local new_args = {}; for i in string.gmatch(args, "%S+") do @@ -839,10 +839,10 @@ room { end; if #new_args > 2 then - s:push(translate_now(computer_locale, 'crypt_usage')); + s:push(translate_now("terminal_locale", 'crypt_usage')); return elseif #new_args < 2 then - s:push(translate_now(computer_locale, 'crypt_key_unset')); + s:push(translate_now("terminal_locale", 'crypt_key_unset')); return; end; local name, path; @@ -851,15 +851,15 @@ room { if name ~= nil and path == 'C:\\DOCS\\PASSWORD.TXT' then name, path = s:walk_directory(new_args[2], true); if name ~= nil and path == 'C:\\DOCS\\KEY.TXT' then - s:push(translate_now(computer_locale, 'crypt_key_locked')); + s:push(translate_now("terminal_locale", 'crypt_key_locked')); s.status = 'crypt'; return true; else - s:push(translate_now(computer_locale, 'crypt_invalid_key')); + s:push(translate_now("terminal_locale", 'crypt_invalid_key')); end; else - s:push(translate_now(computer_locale, 'crypt_unencrypted')); + s:push(translate_now("terminal_locale", 'crypt_unencrypted')); end; end; end; @@ -872,21 +872,21 @@ room { s:push('HARDWARE=FALSE'); s:push(';KEY=KEY.TXT'); else - s:push(translate_now(computer_locale, 'bad_command')); + s:push(translate_now("terminal_locale", 'bad_command')); end; end; ['KEY.TXT'] = function(s, command, args) if command == 'PRINT.COM' then - s:push(translate_now(computer_locale, 'binary_data')); + s:push(translate_now("terminal_locale", 'binary_data')); else - s:push(translate_now(computer_locale, 'bad_command')); + s:push(translate_now("terminal_locale", 'bad_command')); end; end; }, ['SYSTEM'] = { ['CONNECT.EXE'] = function(s, command, args) if command == 'PRINT.COM' then - s:push(translate_now(computer_locale, 'binary_data')); + s:push(translate_now("terminal_locale", 'binary_data')); elseif command == '' then s.status = 'connect'; return true; @@ -894,46 +894,46 @@ room { end; ['FORMAT.COM'] = function(s, command, args) if command == 'PRINT.COM' then - s:push(translate_now(computer_locale, 'binary_data')); + s:push(translate_now("terminal_locale", 'binary_data')); elseif command == '' then if args and args:lower() == 'c:' then s.status = 'format'; return true; elseif args and string.match(args, "^[A-z]:$") == args then - s:push(translate_now(computer_locale, 'format_invalid_device')); + s:push(translate_now("terminal_locale", 'format_invalid_device')); else - s:push(translate_now(computer_locale, 'format_usage')); + s:push(translate_now("terminal_locale", 'format_usage')); end; end; end; ['HELP.COM'] = function(s, command, args) if command == 'PRINT.COM' then - s:push(translate_now(computer_locale, 'binary_data')); + s:push(translate_now("terminal_locale", 'binary_data')); elseif command == '' then - s:push(translate_now(computer_locale, 'help_cd')); - s:push(translate_now(computer_locale, 'help_dir')); - s:push(translate_now(computer_locale, 'help_disk')); - s:push(translate_now(computer_locale, 'help_connect')); - s:push(translate_now(computer_locale, 'help_format')); - s:push(translate_now(computer_locale, 'help_help')); - s:push(translate_now(computer_locale, 'help_print')); - s:push(translate_now(computer_locale, 'help_exit')); - s:push(translate_now(computer_locale, 'help_com_exe')); + s:push(translate_now("terminal_locale", 'help_cd')); + s:push(translate_now("terminal_locale", 'help_dir')); + s:push(translate_now("terminal_locale", 'help_disk')); + s:push(translate_now("terminal_locale", 'help_connect')); + s:push(translate_now("terminal_locale", 'help_format')); + s:push(translate_now("terminal_locale", 'help_help')); + s:push(translate_now("terminal_locale", 'help_print')); + s:push(translate_now("terminal_locale", 'help_exit')); + s:push(translate_now("terminal_locale", 'help_com_exe')); end; end; ['PRINT.COM'] = function(s, command, args) if command == 'PRINT.COM' then - s:push(translate_now(computer_locale, 'binary_data')); + s:push(translate_now("terminal_locale", 'binary_data')); elseif command == '' then if args then local cmd = s:walk_directory(args:upper(), true); if type(cmd) == 'function' then cmd(s, 'PRINT.COM', '') else - s:push(translate_now(computer_locale, 'print_no_file')); + s:push(translate_now("terminal_locale", 'print_no_file')); end; else - s:push(translate_now(computer_locale, 'print_usage')); + s:push(translate_now("terminal_locale", 'print_usage')); end; end; end; @@ -941,9 +941,9 @@ room { ['AUTOEXEC.BAT'] = function(s, command, args) if command == 'PRINT.COM' then s:push('SET PATH=C:\\SYSTEM'); - s:push(translate_now(computer_locale, 'connect_comment')); + s:push(translate_now("terminal_locale", 'connect_comment')); elseif command == '' then - s:push(translate_now(computer_locale, 'bad_command')); + s:push(translate_now("terminal_locale", 'bad_command')); end; end; ['CONFIG.SYS'] = function(s, command, args) @@ -956,21 +956,21 @@ room { s:push('DEVICE=C:\\SYSTEM\\EMM386.EXE'); s:push('DEVICE=C:\\SYSTEM\\TOWER.SYS'); elseif command == '' then - s:push(translate_now(computer_locale, 'bad_command')); + s:push(translate_now("terminal_locale", 'bad_command')); end; end; ['COMMAND.COM'] = function(s, command, args) if command == 'PRINT.COM' then - s:push(translate_now(computer_locale, 'binary_data')); + s:push(translate_now("terminal_locale", 'binary_data')); elseif command == '' then - s:push(translate_now(computer_locale, 'command_already_started')); + s:push(translate_now("terminal_locale", 'command_already_started')); end; end; ['HELLO.TXT'] = function(s, command, args) if command == 'PRINT.COM' then - s:push(translate_now(computer_locale, 'hello_txt')); + s:push(translate_now("terminal_locale", 'hello_txt')); elseif command == '' then - s:push(translate_now(computer_locale, 'bad_command')); + s:push(translate_now("terminal_locale", 'bad_command')); end; end; } @@ -1056,26 +1056,26 @@ room { if type(dir) == 'table' then s.path = path .. '\\'; else - s:push(translate_now(computer_locale, 'cd_invalid_directory', {path=args})); + s:push(translate_now("terminal_locale", 'cd_invalid_directory', {path=args})); end; else - s:push(translate_now(computer_locale, 'cd_usage')); + s:push(translate_now("terminal_locale", 'cd_usage')); end; elseif command == 'ver' then - s:push(translate_now(terminal_locale, 'tower_os_line_2')); + s:push(translate_now("terminal_locale", 'tower_os_line_2')); elseif command == 'exit' then walk('tower_level_4_room_2'); return true; elseif command == 'rm' and args and #args >= 2 and (args == '-rf . /' or args == '-rf /') then - s:push(translate_now(terminal_locale, random_phrase({'unix_line_3', 'unix_line_4'}))); + s:push(translate_now("terminal_locale", random_phrase({'unix_line_3', 'unix_line_4'}))); elseif command == 'sudo' or command == 'su' or command == 'ls' or command == 'rm' then - s:push(translate_now(terminal_locale, random_phrase({'unix_line_1', 'unix_line_2'}))); + s:push(translate_now("terminal_locale", random_phrase({'unix_line_1', 'unix_line_2'}))); elseif command == 'cat' then - s:push(translate_now(terminal_locale, random_phrase({'cat_line_1', 'cat_line_2', 'cat_line_3'}))); + s:push(translate_now("terminal_locale", random_phrase({'cat_line_1', 'cat_line_2', 'cat_line_3'}))); elseif command == 'more' or command == 'less' then - s:push(translate_now(terminal_locale, 'more_line_1')); + s:push(translate_now("terminal_locale", 'more_line_1')); elseif command == 'head' or command == 'tail' then - s:push(translate_now(terminal_locale, random_phrase({'head_line_1', 'head_line_2'}))); + s:push(translate_now("terminal_locale", random_phrase({'head_line_1', 'head_line_2'}))); elseif command == 'echo' then if args then s:push(args); @@ -1094,14 +1094,14 @@ room { if (s.directory_structure[command]) then s.path = command:upper() .. '\\'; else - s:push(translate_now(computer_locale, 'format_invalid_device')); + s:push(translate_now("terminal_locale", 'format_invalid_device')); end; else local cmd = s:walk_directory(command:upper()) if type(cmd) == 'function' then r = cmd(s, '', args); else - s:push(translate_now(computer_locale, 'bad_command')); + s:push(translate_now("terminal_locale", 'bad_command')); end; end; if not r then diff --git a/tower.lua b/tower.lua --- a/tower.lua +++ b/tower.lua @@ -4,53 +4,53 @@ obj { nam = 'tower_key_0'; value = 1; color = 'red'; - disp = translate(tower_locale, 'tower_red_key_disp'); - disp2 = translate(tower_locale, 'tower_red_key_disp2'); - disp3 = translate(tower_locale, 'tower_red_key_disp3'); - inv = translate(tower_locale, 'tower_red_key_inv'); + disp = translate("tower_locale", 'tower_red_key_disp'); + disp2 = translate("tower_locale", 'tower_red_key_disp2'); + disp3 = translate("tower_locale", 'tower_red_key_disp3'); + inv = translate("tower_locale", 'tower_red_key_inv'); } obj { nam = 'tower_key_1'; value = 2; color = 'gold'; - disp = translate(tower_locale, 'tower_gold_key_disp'); - disp2 = translate(tower_locale, 'tower_gold_key_disp2'); - disp3 = translate(tower_locale, 'tower_gold_key_disp3'); - inv = translate(tower_locale, 'tower_gold_key_inv'); + disp = translate("tower_locale", 'tower_gold_key_disp'); + disp2 = translate("tower_locale", 'tower_gold_key_disp2'); + disp3 = translate("tower_locale", 'tower_gold_key_disp3'); + inv = translate("tower_locale", 'tower_gold_key_inv'); } obj { nam = 'tower_key_2'; value = 3; color = 'blue'; - disp = translate(tower_locale, 'tower_blue_key_disp'); - disp2 = translate(tower_locale, 'tower_blue_key_disp2'); - disp3 = translate(tower_locale, 'tower_blue_key_disp3'); - inv = translate(tower_locale, 'tower_blue_key_inv'); + disp = translate("tower_locale", 'tower_blue_key_disp'); + disp2 = translate("tower_locale", 'tower_blue_key_disp2'); + disp3 = translate("tower_locale", 'tower_blue_key_disp3'); + inv = translate("tower_locale", 'tower_blue_key_inv'); } obj { nam = 'tower_key_3'; value = 4; color = 'green'; - disp = translate(tower_locale, 'tower_green_key_disp'); - disp2 = translate(tower_locale, 'tower_green_key_disp2'); - disp3 = translate(tower_locale, 'tower_green_key_disp3'); - inv = translate(tower_locale, 'tower_green_key_inv'); + disp = translate("tower_locale", 'tower_green_key_disp'); + disp2 = translate("tower_locale", 'tower_green_key_disp2'); + disp3 = translate("tower_locale", 'tower_green_key_disp3'); + inv = translate("tower_locale", 'tower_green_key_inv'); } obj { nam = 'tower_level_2_key'; - disp = translate(tower_locale, 'tower_level_2_key_disp'); - inv = translate(tower_locale, 'tower_level_2_key_dsc'); + disp = translate("tower_locale", 'tower_level_2_key_disp'); + inv = translate("tower_locale", 'tower_level_2_key_dsc'); } obj { nam = 'tower_hint_1'; - disp = translate(tower_locale, 'tower_hint_1_disp'); + disp = translate("tower_locale", 'tower_hint_1_disp'); inv = function(s) - return translate_now(tower_locale, 'tower_hint_1_inv', {target=level_1_target}); + return translate_now("tower_locale", 'tower_hint_1_inv', {target=level_1_target}); end; } @@ -58,9 +58,9 @@ obj { nam = 'tower_walls'; act = function(s) if tower_accept_level == 0 then - return translate_now(tower_locale, 'tower_accept_1_walls'); + return translate_now("tower_locale", 'tower_accept_1_walls'); elseif tower_accept_level == 1 then - return translate_now(tower_locale, 'tower_accept_2_walls'); + return translate_now("tower_locale", 'tower_accept_2_walls'); elseif tower_accept_level == 2 then tower_accept_level = 3; if solarscale_with_me then @@ -69,7 +69,7 @@ obj { walkin('tower_walls_dlg_alone'); end; elseif tower_accept_level == 3 then - return translate_now(tower_locale, 'tower_accept_3_walls'); + return translate_now("tower_locale", 'tower_accept_3_walls'); end; end; }; @@ -83,22 +83,24 @@ dlg { pic = function(s) return _'solarscale_ally_dlg':pic(); end; - enter = translate(tower_locale, 'walls_dlg_enter_solarscale'); + enter = function(s) + return translate("tower_locale", 'walls_dlg_enter') .. ' ' .. translate("tower_locale", 'walls_dlg_enter_solarscale'); + end; phr = { only=true; - {translate(tower_locale, 'walls_dlg_p1'), translate(tower_locale, 'walls_dlg_p1_r'), next='#second'}; - {translate(tower_locale, 'walls_dlg_p2'), translate(tower_locale, 'walls_dlg_p2_r'), next='#second'}; + {translate("tower_locale", 'walls_dlg_p1'), translate("tower_locale", 'walls_dlg_p1_r'), next='#second'}; + {translate("tower_locale", 'walls_dlg_p2'), translate("tower_locale", 'walls_dlg_p2_r'), next='#second'}; {false, '#second', - {translate(tower_locale, 'walls_dlg_p3'), function(s) + {translate("tower_locale", 'walls_dlg_p3'), function(s) solarscale_tower = true; - return translate_now(tower_locale, 'walls_dlg_p3_r'); + return translate_now("tower_locale", 'walls_dlg_p3_r'); end}; - {translate(tower_locale, 'walls_dlg_p4'), function(s) - p(translate_now(tower_locale, 'walls_dlg_p4_r')); + {translate("tower_locale", 'walls_dlg_p4'), function(s) + p(translate_now("tower_locale", 'walls_dlg_p4_r')); walkout(); end}; - {translate(tower_locale, 'walls_dlg_p5'), function(s) - p(translate_now(tower_locale, 'walls_dlg_p5_r')); + {translate("tower_locale", 'walls_dlg_p5'), function(s) + p(translate_now("tower_locale", 'walls_dlg_p5_r')); walkout(); end}; }; @@ -114,35 +116,35 @@ dlg { pic = function(s) return std.call(from(), 'pic'); end; - enter = translate(tower_locale, 'walls_dlg_enter_alone'); + enter = translate("tower_locale", 'walls_dlg_enter'); phr = { - {translate(tower_locale, 'walls_dlg_p6'), translate(tower_locale, 'walls_dlg_p6_r')}; - {translate(tower_locale, 'walls_dlg_p4'), translate(tower_locale, 'walls_dlg_p4_r')}; - {translate(tower_locale, 'walls_dlg_p5'), function(s) p(translate_now(tower_locale, 'walls_dlg_p5_r')); walkout(); end;}; + {translate("tower_locale", 'walls_dlg_p6'), translate("tower_locale", 'walls_dlg_p6_r')}; + {translate("tower_locale", 'walls_dlg_p4'), translate("tower_locale", 'walls_dlg_p4_r')}; + {translate("tower_locale", 'walls_dlg_p5'), function(s) p(translate_now("tower_locale", 'walls_dlg_p5_r')); walkout(); end;}; }; }; obj { nam = 'flask'; - disp = translate(tower_locale, 'flask_disp'); - disp2 = translate(tower_locale, 'flask_disp2'); - disp3 = translate(tower_locale, 'flask_disp3'); - inv = translate(tower_locale, 'flask_inv'); + disp = translate("tower_locale", 'flask_disp'); + disp2 = translate("tower_locale", 'flask_disp2'); + disp3 = translate("tower_locale", 'flask_disp3'); + inv = translate("tower_locale", 'flask_inv'); } obj { nam = 'potion_open'; - disp = translate(tower_locale, 'potion_open_disp'); - disp2 = translate(tower_locale, 'potion_open_disp2'); - disp3 = translate(tower_locale, 'potion_open_disp3'); - inv = translate(tower_locale, 'potion_open_inv'); + disp = translate("tower_locale", 'potion_open_disp'); + disp2 = translate("tower_locale", 'potion_open_disp2'); + disp3 = translate("tower_locale", 'potion_open_disp3'); + inv = translate("tower_locale", 'potion_open_inv'); } obj { nam = 'potion_light'; - disp = translate(tower_locale, 'potion_light_disp'); - disp2 = translate(tower_locale, 'potion_light_disp2'); - disp3 = translate(tower_locale, 'potion_light_disp3'); + disp = translate("tower_locale", 'potion_light_disp'); + disp2 = translate("tower_locale", 'potion_light_disp2'); + disp3 = translate("tower_locale", 'potion_light_disp3'); inv = function(s) if here()^'tower_level_3_room_2' then remove('potion_light', pl); @@ -151,54 +153,54 @@ obj { _'#shelves':enable(); _'level_3_room_2_down':enable() _'#darkness':disable(); - return translate_now(tower_locale, 'potion_light_inv_used'); + return translate_now("tower_locale", 'potion_light_inv_used'); else - return translate_now(tower_locale, 'potion_light_inv'); + return translate_now("tower_locale", 'potion_light_inv'); end; end; } obj { nam = 'candle'; - disp = translate(tower_locale, 'candle_disp'); - disp2 = translate(tower_locale, 'candle_disp2'); - disp3 = translate(tower_locale, 'candle_disp3'); - inv = translate(tower_locale, 'candle_inv'); + disp = translate("tower_locale", 'candle_disp'); + disp2 = translate("tower_locale", 'candle_disp2'); + disp3 = translate("tower_locale", 'candle_disp3'); + inv = translate("tower_locale", 'candle_inv'); } obj { nam = 'potion_enrichment'; - disp = translate(tower_locale, 'potion_enrichment_disp'); - disp2 = translate(tower_locale, 'potion_enrichment_disp2'); - disp3 = translate(tower_locale, 'potion_enrichment_disp3'); - inv = translate(tower_locale, 'potion_enrichment_inv'); + disp = translate("tower_locale", 'potion_enrichment_disp'); + disp2 = translate("tower_locale", 'potion_enrichment_disp2'); + disp3 = translate("tower_locale", 'potion_enrichment_disp3'); + inv = translate("tower_locale", 'potion_enrichment_inv'); } obj { nam = 'emerald'; - disp = translate(tower_locale, 'emerald_disp'); - disp2 = translate(tower_locale, 'emerald_disp2'); - disp3 = translate(tower_locale, 'emerald_disp3'); - inv = translate(tower_locale, 'emerald_inv'); + disp = translate("tower_locale", 'emerald_disp'); + disp2 = translate("tower_locale", 'emerald_disp2'); + disp3 = translate("tower_locale", 'emerald_disp3'); + inv = translate("tower_locale", 'emerald_inv'); } obj { nam = 'password_note'; - disp = translate(tower_locale, 'password_note_disp'); - disp2 = translate(tower_locale, 'password_note_disp2'); - disp3 = translate(tower_locale, 'password_note_disp3'); + disp = translate("tower_locale", 'password_note_disp'); + disp2 = translate("tower_locale", 'password_note_disp2'); + disp3 = translate("tower_locale", 'password_note_disp3'); inv = function(s) - return translate_now(tower_locale, 'password_note_inv', {password=password1}); + return translate_now("tower_locale", 'password_note_inv', {password=password1}); end; } obj { nam = 'tool_box'; - dsc = translate(tower_locale, 'tool_box_dsc'); - disp = translate(tower_locale, 'tool_box_disp'); - disp2 = translate(tower_locale, 'tool_box_disp2'); - disp3 = translate(tower_locale, 'tool_box_disp3'); - inv = translate(tower_locale, 'tool_box_inv'); + dsc = translate("tower_locale", 'tool_box_dsc'); + disp = translate("tower_locale", 'tool_box_disp'); + disp2 = translate("tower_locale", 'tool_box_disp2'); + disp3 = translate("tower_locale", 'tool_box_disp3'); + inv = translate("tower_locale", 'tool_box_inv'); }; obj { @@ -206,76 +208,77 @@ obj { nam = 'kettle'; disp = function(s) if s.state == 0 then - return translate_now(tower_locale, 'kettle_disp'); + return translate_now("tower_locale", 'kettle_disp'); elseif s.state == 1 then - return translate_now(tower_locale, 'kettle_disp_water'); + return translate_now("tower_locale", 'kettle_disp_water'); elseif s.state == 2 then - return translate_now(tower_locale, 'kettle_disp_hot_water'); + return translate_now("tower_locale", 'kettle_disp_hot_water'); end; end; - disp2 = translate(tower_locale, 'kettle_disp2'); - disp3 = translate(tower_locale, 'kettle_disp3'); + disp2 = translate("tower_locale", 'kettle_disp2'); + disp3 = translate("tower_locale", 'kettle_disp3'); inv = function(s) + p(translate_now("tower_locale", 'kettle_inv');); if s.state == 0 then - return translate_now(tower_locale, 'kettle_inv'); + p(translate_now("tower_locale", 'kettle_inv_empty')); elseif s.state == 1 then - return translate_now(tower_locale, 'kettle_inv_water'); + p(translate_now("tower_locale", 'kettle_inv_water')); elseif s.state == 2 then - return translate_now(tower_locale, 'kettle_inv_hot_water'); + p(translate_now("tower_locale", 'kettle_inv_hot_water')); end; end; - dsc = translate(tower_locale, 'kettle_dsc'); + dsc = translate("tower_locale", 'kettle_dsc'); tak = function(s) if not _'solarscale_ally'.tea_asked then - p(translate_now(tower_locale, 'kettle_tak_no')); + p(translate_now("tower_locale", 'kettle_tak_no')); return false; else - return translate_now(tower_locale, 'kettle_tak'); + return translate_now("tower_locale", 'kettle_tak'); end; end; } obj { nam = 'teabox'; - disp = translate(tower_locale, 'teabox_disp'); - inv = translate(tower_locale, 'teabox_inv'); + disp = translate("tower_locale", 'teabox_disp'); + inv = translate("tower_locale", 'teabox_inv'); }; obj { state = 0; -- 0 - empty, 1 -- has tea leaves, 2 -- has tea nam = 'teapot'; - disp = translate_now(tower_locale, 'teapot_disp'); + disp = translate_now("tower_locale", 'teapot_disp'); inv = function(s) if s.state == 0 then - return translate_now(tower_locale, 'teapot_inv_empty'); + return translate_now("tower_locale", 'teapot_inv_empty'); elseif s.state == 1 then - return translate_now(tower_locale, 'teapot_inv_leaves'); + return translate_now("tower_locale", 'teapot_inv_leaves'); elseif s.state == 2 then - return translate_now(tower_locale, 'teapot_inv_tea'); + return translate_now("tower_locale", 'teapot_inv_tea'); end; end; used = function(s, o) if o ^ 'kettle' then if o.state == 0 then - return translate_now(tower_locale, 'teapot_used_empty_kettle'); + return translate_now("tower_locale", 'teapot_used_empty_kettle'); elseif o.state == 1 then - return translate_now(tower_locale, 'teapot_used_cold_water'); + return translate_now("tower_locale", 'teapot_used_cold_water'); elseif s.state == 0 then - return translate_now(tower_locale, 'teapot_used_no_tea'); + return translate_now("tower_locale", 'teapot_used_no_tea'); elseif s.state == 2 then - return translate_now(tower_locale, 'teapot_used_already'); + return translate_now("tower_locale", 'teapot_used_already'); else s.state = 2; - return translate_now(tower_locale, 'teapot_used_filled'); + return translate_now("tower_locale", 'teapot_used_filled'); end; elseif o ^ 'teabox' then if s.state == 1 then - return translate_now(tower_locale, 'teapot_used_already_tea'); + return translate_now("tower_locale", 'teapot_used_already_tea'); elseif s.state == 2 then - return translate_now(tower_locale, 'teapot_used_already'); + return translate_now("tower_locale", 'teapot_used_already'); else s.state = 1; - return translate_now(tower_locale, 'teapot_used_tea_added'); + return translate_now("tower_locale", 'teapot_used_tea_added'); end; else return false; @@ -286,21 +289,21 @@ obj { obj { state = 0; nam = 'cups'; - disp = translate(tower_locale, 'cups_disp'); - inv = translate(tower_locale, 'cups_inv_act'); - dsc = translate(tower_locale, 'cups_dsc'); - act = translate(tower_locale, 'cups_inv_act'); + disp = translate("tower_locale", 'cups_disp'); + inv = translate("tower_locale", 'cups_inv_act'); + dsc = translate("tower_locale", 'cups_dsc'); + act = translate("tower_locale", 'cups_inv_act'); used = function(s, o) if s.state ~= 0 then - return translate_now(tower_locale, 'cups_no_need') + return translate_now("tower_locale", 'cups_no_need') end; if o ^ 'kettle' then - return translate_now(tower_locale, 'cups_kettle'); + return translate_now("tower_locale", 'cups_kettle'); elseif o ^ 'teapot' then if o.state == 2 then if have(s, pl) then - return translate_now(tower_locale, 'cups_should_be_placed'); + return translate_now("tower_locale", 'cups_should_be_placed'); else remove('cups', here()); remove('teapot', me()); @@ -310,7 +313,7 @@ obj { walkin('solarscale_tea_dlg'); end; else - return translate_now(tower_locale, 'cups_no_tea'); + return translate_now("tower_locale", 'cups_no_tea'); end; else return false; @@ -323,12 +326,12 @@ room { theme = 'tower'; nam = 'tower_level_1'; pic = 'images/tower_level_1.png'; - disp = translate(tower_locale, 'tower_level_1_disp'); - decor = translate(tower_locale, 'tower_level_1_decor'); + disp = translate("tower_locale", 'tower_level_1_disp'); + decor = translate("tower_locale", 'tower_level_1_decor'); way = { - path {translate(tower_locale, 'transition_leave'), "ending_left"}; - path {"level_1_next_room", translate(tower_locale, 'transition_room'), "tower_level_1_room_2"}:disable(); - path {"level_1_up", translate(tower_locale, 'transition_upstairs'), "tower_level_2"}:disable(); + path {translate("tower_locale", 'transition_leave'), "ending_left"}; + path {"level_1_next_room", translate("tower_locale", 'transition_room'), "tower_level_1_room_2"}:disable(); + path {"level_1_up", translate("tower_locale", 'transition_upstairs'), "tower_level_2"}:disable(); }; enter = function(s) snd.music('sound/bgm_tower.ogg'); @@ -338,16 +341,16 @@ room { 'tower_walls', obj { nam = '#ceiling'; - act = translate(tower_locale, 'tower_level_1_ceiling'); + act = translate("tower_locale", 'tower_level_1_ceiling'); }; obj { state = 0; nam = '#tables'; act = function(s) - p(translate_now(tower_locale, 'tower_level_1_tables')); + p(translate_now("tower_locale", 'tower_level_1_tables')); if s.state == 0 then s.state = 1; - p(translate_now(tower_locale, 'tower_level_1_tables_box')); + p(translate_now("tower_locale", 'tower_level_1_tables_box')); _'tower_box':enable(); end; end; @@ -356,20 +359,20 @@ room { state = 0; nam = '#candelabra'; act = function(s) - p(translate_now(tower_locale, 'tower_level_1_candelabra')); + p(translate_now("tower_locale", 'tower_level_1_candelabra')); if s.state == 0 then s.state = 1; - p(translate_now(tower_locale, 'tower_level_1_candelabra_keys')); + p(translate_now("tower_locale", 'tower_level_1_candelabra_keys')); _'#keys':enable(); else if not candle_taken then s.state = 2; take('candle'); candle_taken = true; - p(translate_now(tower_locale, 'tower_level_1_candelabra_candle_taken')); + p(translate_now("tower_locale", 'tower_candelabra_candle_taken')); else if s.state == 2 then - p(translate_now(tower_locale, 'tower_level_1_candelabra_candle_missing')); + p(translate_now("tower_locale", 'tower_candelabra_candle_missing')); end; end; end; @@ -378,11 +381,11 @@ room { }; obj { nam = '#chairs'; - act = translate(tower_locale, 'tower_level_1_chairs'); + act = translate("tower_locale", 'tower_level_1_chairs'); }; obj { nam = '#keys'; - dsc = translate(tower_locale, 'tower_level_1_keys'); + dsc = translate("tower_locale", 'tower_level_1_keys'); act = function(s) here().keys_taken = true; take('tower_key_0'); @@ -390,20 +393,20 @@ room { take('tower_key_2'); take('tower_key_3'); remove('#keys', here()); - return translate_now(tower_locale, 'tower_level_1_keys_take'); + return translate_now("tower_locale", 'tower_level_1_keys_take'); end; }:disable(); obj { nam = 'tower_box'; - disp = translate(tower_locale, 'tower_level_1_box_disp'); - dsc = translate(tower_locale, 'tower_level_1_box_dsc'); + disp = translate("tower_locale", 'tower_level_1_box_disp'); + dsc = translate("tower_locale", 'tower_level_1_box_dsc'); tak = function(s) take('tower_hint_1'); - return translate_now(tower_locale, 'tower_level_1_box_tak'); + return translate_now("tower_locale", 'tower_level_1_box_tak'); end; inv = function(s) if here()^'inside_box' then - return translate_now(tower_locale, 'tower_level_1_box_inv'); + return translate_now("tower_locale", 'tower_level_1_box_inv'); end; walkin('inside_box'); end; @@ -413,26 +416,26 @@ room { nam = '#tower_1_door'; dsc = function(s) if s.state then - return translate_now(tower_locale, 'tower_level_1_door_open'); + return translate_now("tower_locale", 'tower_level_1_door_open'); else - return translate_now(tower_locale, 'tower_level_1_door_closed'); + return translate_now("tower_locale", 'tower_level_1_door_closed'); end; end; act = function(s) if s.state then - return translate_now(tower_locale, 'tower_level_1_door_act_open'); + return translate_now("tower_locale", 'tower_level_1_door_act_open'); else - return translate_now(tower_locale, 'tower_level_1_door_act_closed'); + return translate_now("tower_locale", 'tower_level_1_door_act_closed'); end; end; used = function(s, o) if o^'hidden_key' or o^'tower_key_0' or o^'tower_key_1' or o^'tower_key_2' or o^'tower_key_3' then - return translate_now(tower_locale, 'tower_level_1_door_use_wrong_key'); + return translate_now("common_locale", 'key_does_not_fit'); elseif o^'tower_level_2_key' then remove('tower_level_2_key', pl); s.state = true; enable('level_1_up'); - return translate_now(tower_locale, 'tower_level_1_door_use_correct_key'); + return translate_now("tower_locale", 'tower_level_1_door_use_correct_key'); end; return false; @@ -440,26 +443,26 @@ room { }:with { obj { nam = '#stairwell'; - act = translate(tower_locale, 'tower_level_1_stairwell'); + act = translate("tower_locale", 'tower_level_1_stairwell'); } }; obj { nam = '#tower_1_kitchen_door'; - dsc = translate(tower_locale, 'tower_level_1_kitchen_door'); + dsc = translate("tower_locale", 'tower_level_1_kitchen_door'); act = function(s) if not _'level_1_next_room':disabled() then - return translate_now(tower_locale, 'tower_level_1_kitchen_door_act_open'); + return translate_now("tower_locale", 'tower_level_1_kitchen_door_act_open'); else - return translate_now(tower_locale, 'tower_level_1_kitchen_door_act_closed'); + return translate_now("tower_locale", 'tower_level_1_kitchen_door_act_closed'); end; end; used = function(s, o) if o^'tower_level_2_key' or o^'tower_key_0' or o^'tower_key_1' or o^'tower_key_2' or o^'tower_key_3' or o^'hidden_key' then - return translate_now(tower_locale, 'tower_level_1_kitchen_door_used_key'); + return translate_now("tower_locale", 'tower_level_1_kitchen_door_used_key'); end; if o^'potion_open' then - return translate_now(tower_locale, 'tower_level_1_kitchen_door_used_potion'); + return translate_now("tower_locale", 'tower_level_1_kitchen_door_used_potion'); end; return false; @@ -469,7 +472,7 @@ room { room { nam = 'inside_box'; - disp = translate(tower_locale, 'tower_level_1_box_disp'); + disp = translate("tower_locale", 'tower_level_1_box_disp'); theme = 'tower'; nofollow = true; pic = function(s) @@ -548,12 +551,12 @@ room { return s:value() == level_1_target; end; decor = function(s) - return translate_now(tower_locale, 'inside_box_decor', { + return translate_now("tower_locale", 'inside_box_decor', { numbers = s:value() }); end; way = { - path {translate(common_locale, 'back'), 'tower_level_1'}; + path {translate("common_locale", 'back'), 'tower_level_1'}; }; }:with { obj { @@ -562,23 +565,23 @@ room { key = false; dsc = function(s) if s.key then - return translate_now(tower_locale, 'inside_box_keyhole_1_key', { + return translate_now("tower_locale", 'inside_box_keyhole_1_key', { key = s.key.disp2 }) .. '^'; else - return translate_now(tower_locale, 'inside_box_keyhole_1_empty') .. '^'; + return translate_now("tower_locale", 'inside_box_keyhole_1_empty') .. '^'; end; end; used = function(s, o) if o^'tower_key_0' or o^'tower_key_1' or o^'tower_key_2' or o^'tower_key_3' then if s.key then - return translate_now(tower_locale, 'inside_box_keyhole_used_has_key'); + return translate_now("tower_locale", 'inside_box_keyhole_used_has_key'); end; s.key = o; remove(o, pl); pl:need_scene(true); - p(translate_now(tower_locale, 'inside_box_keyhole_used_insert_key', { + p(translate_now("tower_locale", 'inside_box_keyhole_used_insert_key', { key = o.disp3 })); @@ -586,7 +589,7 @@ room { remove('tower_box', pl); remove('tower_hint_1', pl); take('tower_level_2_key'); - p(translate_now(tower_locale, 'inside_box_keyhole_used_open')); + p(translate_now("tower_locale", 'inside_box_keyhole_used_open')); walk('tower_level_1'); end; else @@ -599,11 +602,11 @@ room { local key = s.key; take(key); s.key = false; - return translate_now(tower_locale, 'inside_box_keyhole_act_key', { + return translate_now("tower_locale", 'inside_box_keyhole_act_key', { key = key.disp3 }); else - return translate_now(tower_locale, 'inside_box_keyhole_act_empty'); + return translate_now("tower_locale", 'inside_box_keyhole_act_empty'); end; end; }; @@ -613,24 +616,24 @@ room { key = false; dsc = function(s) if s.key then - return translate_now(tower_locale, 'inside_box_keyhole_2_key', { + return translate_now("tower_locale", 'inside_box_keyhole_2_key', { key = s.key.disp2 }) .. '^'; else - return translate_now(tower_locale, 'inside_box_keyhole_2_empty') .. '^'; + return translate_now("tower_locale", 'inside_box_keyhole_2_empty') .. '^'; end; end; used = function(s, o) if o^'tower_key_0' or o^'tower_key_1' or o^'tower_key_2' or o^'tower_key_3' then if s.key then - return translate_now(tower_locale, 'inside_box_keyhole_used_has_key'); + return translate_now("tower_locale", 'inside_box_keyhole_used_has_key'); end; s.key = o; remove(o, pl); pl:need_scene(true); - p(translate_now(tower_locale, 'inside_box_keyhole_used_insert_key', { + p(translate_now("tower_locale", 'inside_box_keyhole_used_insert_key', { key = o.disp3 })); @@ -638,7 +641,7 @@ room { remove('tower_box', pl); remove('tower_hint_1', pl); take('tower_level_2_key'); - p(translate_now(tower_locale, 'inside_box_keyhole_used_open')); + p(translate_now("tower_locale", 'inside_box_keyhole_used_open')); walk('tower_level_1'); end; else @@ -651,11 +654,11 @@ room { local key = s.key; take(key); s.key = false; - return translate_now(tower_locale, 'inside_box_keyhole_act_key', { + return translate_now("tower_locale", 'inside_box_keyhole_act_key', { key = key.disp3 }); else - return translate_now(tower_locale, 'inside_box_keyhole_act_empty'); + return translate_now("tower_locale", 'inside_box_keyhole_act_empty'); end; end; }; @@ -665,24 +668,24 @@ room { key = false; dsc = function(s) if s.key then - return translate_now(tower_locale, 'inside_box_keyhole_3_key', { + return translate_now("tower_locale", 'inside_box_keyhole_3_key', { key = s.key.disp2 }) .. '^'; else - return translate_now(tower_locale, 'inside_box_keyhole_3_empty') .. '^'; + return translate_now("tower_locale", 'inside_box_keyhole_3_empty') .. '^'; end; end; used = function(s, o) if o^'tower_key_0' or o^'tower_key_1' or o^'tower_key_2' or o^'tower_key_3' then if s.key then - return translate_now(tower_locale, 'inside_box_keyhole_used_has_key'); + return translate_now("tower_locale", 'inside_box_keyhole_used_has_key'); end; s.key = o; remove(o, pl); pl:need_scene(true); - p(translate_now(tower_locale, 'inside_box_keyhole_used_insert_key', { + p(translate_now("tower_locale", 'inside_box_keyhole_used_insert_key', { key = o.disp3 })); @@ -690,7 +693,7 @@ room { remove('tower_box', pl); remove('tower_hint_1', pl); take('tower_level_2_key'); - p(translate_now(tower_locale, 'inside_box_keyhole_used_open')); + p(translate_now("tower_locale", 'inside_box_keyhole_used_open')); walk('tower_level_1'); end; else @@ -703,11 +706,11 @@ room { local key = s.key; take(key); s.key = false; - return translate_now(tower_locale, 'inside_box_keyhole_act_key', { + return translate_now("tower_locale", 'inside_box_keyhole_act_key', { key = key.disp3 }); else - return translate_now(tower_locale, 'inside_box_keyhole_act_empty'); + return translate_now("tower_locale", 'inside_box_keyhole_act_empty'); end; end; }; @@ -717,23 +720,23 @@ room { key = false; dsc = function(s) if s.key then - return translate_now(tower_locale, 'inside_box_keyhole_4_key', { + return translate_now("tower_locale", 'inside_box_keyhole_4_key', { key = s.key.disp2 }) .. '^'; else - return translate_now(tower_locale, 'inside_box_keyhole_4_empty') .. '^'; + return translate_now("tower_locale", 'inside_box_keyhole_4_empty') .. '^'; end; end; used = function(s, o) if o^'tower_key_0' or o^'tower_key_1' or o^'tower_key_2' or o^'tower_key_3' then if s.key then - return translate_now(tower_locale, 'inside_box_keyhole_used_has_key'); + return translate_now("tower_locale", 'inside_box_keyhole_used_has_key'); end; s.key = o; remove(o, pl); pl:need_scene(true); - p(translate_now(tower_locale, 'inside_box_keyhole_used_insert_key', { + p(translate_now("tower_locale", 'inside_box_keyhole_used_insert_key', { key = o.disp3 })); @@ -741,7 +744,7 @@ room { remove('tower_box', pl); remove('tower_hint_1', pl); take('tower_level_2_key'); - p(translate_now(tower_locale, 'inside_box_keyhole_used_open')); + p(translate_now("tower_locale", 'inside_box_keyhole_used_open')); walk('tower_level_1'); end; @@ -755,11 +758,11 @@ room { local key = s.key; take(key); s.key = false; - return translate_now(tower_locale, 'inside_box_keyhole_act_key', { + return translate_now("tower_locale", 'inside_box_keyhole_act_key', { key = key.disp3 }); else - return translate_now(tower_locale, 'inside_box_keyhole_act_empty'); + return translate_now("tower_locale", 'inside_box_keyhole_act_empty'); end; end; }; @@ -768,13 +771,13 @@ room { room { nam = 'tower_level_2'; pic = 'images/tower_level_2_l.png'; - disp = translate(tower_locale, 'tower_level_2_disp'); + disp = translate("tower_locale", 'tower_level_2_disp'); theme = 'tower'; - decor = translate(tower_locale, 'tower_level_2_decor'); + decor = translate("tower_locale", 'tower_level_2_decor'); way = { - path {translate(tower_locale, 'transition_downstairs'), "tower_level_1"}; - path {"level_2_next_room", translate(tower_locale, 'transition_room'), "tower_level_2_room_2"}:disable(); - path {"level_2_up", translate(tower_locale, 'transition_upstairs'), "tower_level_3"}:disable(); + path {translate("tower_locale", 'transition_downstairs'), "tower_level_1"}; + path {"level_2_next_room", translate("tower_locale", 'transition_room'), "tower_level_2_room_2"}:disable(); + path {"level_2_up", translate("tower_locale", 'transition_upstairs'), "tower_level_3"}:disable(); }; }:with { 'tower_walls', @@ -782,12 +785,12 @@ room { state = 0; nam = '#tables'; act = function(s) - p(translate_now(tower_locale, 'tower_level_2_tables')); + p(translate_now("tower_locale", 'tower_level_2_tables')); if s.state == 0 then s.state = 1; _'red_catalyst':enable(); _'purple_catalyst':enable(); - p(translate_now(tower_locale, 'tower_level_2_table_vials')); + p(translate_now("tower_locale", 'tower_level_2_table_vials')); end; end; }; @@ -795,12 +798,12 @@ room { state = 0; nam = '#racks'; act = function(s) - p(translate_now(tower_locale, 'tower_level_2_racks')); + p(translate_now("tower_locale", 'tower_level_2_racks')); if s.state == 0 then s.state = 1; _'blue_catalyst':enable(); _'turquoise_catalyst':enable(); - p(translate_now(tower_locale, 'tower_level_2_rack_vials')); + p(translate_now("tower_locale", 'tower_level_2_rack_vials')); end; end; }; @@ -808,22 +811,22 @@ room { state = 0; nam = '#cabinets'; act = function(s) - p(translate_now(tower_locale, 'tower_level_2_cabinets')); + p(translate_now("tower_locale", 'tower_level_2_cabinets')); if s.state == 0 then s.state = 1; _'green_catalyst':enable(); _'yellow_catalyst':enable(); - p(translate_now(tower_locale, 'tower_level_2_cabinet_vials')); + p(translate_now("tower_locale", 'tower_level_2_cabinet_vials')); end; end; }; obj { nam = '#fire'; - act = translate(tower_locale, 'tower_level_2_fire'); + act = translate("tower_locale", 'tower_level_2_fire'); }; obj { nam = 'alchemy_book'; - dsc = translate(tower_locale, 'tower_level_2_book'); + dsc = translate("tower_locale", 'tower_level_2_book'); act = function(s) walkin('alchemy_book_dlg'); end; @@ -835,22 +838,22 @@ room { end; used = function(s, o) if o^'kettle' or o^'cups' or o^'teapot' or o^'teabox' or o.ptype then - return translate_now(tower_locale, 'tower_level_2_cannot_be_thrown') + return translate_now("tower_locale", 'tower_level_2_cannot_be_thrown') end; local cauldron = _('cauldron_inside'); if cauldron.potion then - return translate_now(tower_locale, 'tower_level_2_potion_in_the_cauldron') + return translate_now("tower_locale", 'tower_level_2_potion_in_the_cauldron') end; pl:need_scene(true); table.insert(cauldron.state, o); remove(o, pl); sounds['bubble']:play(); - p(translate_now(tower_locale, 'tower_level_2_cauldron_used', { + p(translate_now("tower_locale", 'tower_level_2_cauldron_used', { item = o.disp3 })); if cauldron:check_potion() then sounds['potion']:play(); - p(translate_now(tower_locale, 'tower_level_2_potion_ready')); + p(translate_now("tower_locale", 'tower_level_2_potion_ready')); end; end; }; @@ -859,27 +862,27 @@ room { nam = '#tower_2_door'; dsc = function(s) if s.state then - return translate_now(tower_locale, 'tower_2_door_dsc_open'); + return translate_now("tower_locale", 'tower_2_door_dsc_open'); else - return translate_now(tower_locale, 'tower_2_door_dsc_closed'); + return translate_now("tower_locale", 'tower_2_door_dsc_closed'); end; end; act = function(s) if s.state then - return translate_now(tower_locale, 'tower_2_door_act_open'); + return translate_now("tower_locale", 'tower_2_door_act_open'); else - return translate_now(tower_locale, 'tower_2_door_act_closed'); + return translate_now("tower_locale", 'tower_2_door_act_closed'); end; end; used = function(s, o) if o^'hidden_key' then - return translate_now(tower_locale, 'tower_2_door_used_key'); + return translate_now("common_locale", 'key_does_not_fit'); elseif o^'potion_open' then remove('potion_open', pl); s.state = true; enable('level_2_up'); take('flask'); - return translate_now(tower_locale, 'tower_2_door_used_potion'); + return translate_now("tower_locale", 'tower_2_door_used_potion'); else return false; end; @@ -887,62 +890,62 @@ room { }: with { obj { nam = '#stairwell'; - act = translate(tower_locale, 'tower_level_1_stairwell'); + act = translate("tower_locale", 'tower_level_1_stairwell'); } }; obj { nam = 'red_catalyst'; - dsc = translate(tower_locale, 'red_catalyst_dsc'); - disp = translate(tower_locale, 'red_catalyst_disp'); - disp2 = translate(tower_locale, 'red_catalyst_disp2'); - disp3 = translate(tower_locale, 'red_catalyst_disp3'); - tak = translate(tower_locale, 'catalyst_tak'); - inv = translate(tower_locale, 'red_catalyst_inv'); + dsc = translate("tower_locale", 'red_catalyst_dsc'); + disp = translate("tower_locale", 'red_catalyst_disp'); + disp2 = translate("tower_locale", 'red_catalyst_disp2'); + disp3 = translate("tower_locale", 'red_catalyst_disp3'); + tak = translate("tower_locale", 'catalyst_tak'); + inv = translate("tower_locale", 'red_catalyst_inv'); }:disable(); obj { nam = 'green_catalyst'; - dsc = translate(tower_locale, 'green_catalyst_dsc'); - disp = translate(tower_locale, 'green_catalyst_disp'); - disp2 = translate(tower_locale, 'green_catalyst_disp2'); - disp3 = translate(tower_locale, 'green_catalyst_disp3'); - tak = translate(tower_locale, 'catalyst_tak'); - inv = translate(tower_locale, 'green_catalyst_inv'); + dsc = translate("tower_locale", 'green_catalyst_dsc'); + disp = translate("tower_locale", 'green_catalyst_disp'); + disp2 = translate("tower_locale", 'green_catalyst_disp2'); + disp3 = translate("tower_locale", 'green_catalyst_disp3'); + tak = translate("tower_locale", 'catalyst_tak'); + inv = translate("tower_locale", 'green_catalyst_inv'); }:disable(); obj { nam = 'blue_catalyst'; - dsc = translate(tower_locale, 'blue_catalyst_dsc'); - disp = translate(tower_locale, 'blue_catalyst_disp'); - disp2 = translate(tower_locale, 'blue_catalyst_disp2'); - disp3 = translate(tower_locale, 'blue_catalyst_disp3'); - tak = translate(tower_locale, 'catalyst_tak'); - inv = translate(tower_locale, 'blue_catalyst_inv'); + dsc = translate("tower_locale", 'blue_catalyst_dsc'); + disp = translate("tower_locale", 'blue_catalyst_disp'); + disp2 = translate("tower_locale", 'blue_catalyst_disp2'); + disp3 = translate("tower_locale", 'blue_catalyst_disp3'); + tak = translate("tower_locale", 'catalyst_tak'); + inv = translate("tower_locale", 'blue_catalyst_inv'); }:disable(); obj { nam = 'purple_catalyst'; - dsc = translate(tower_locale, 'purple_catalyst_dsc'); - disp = translate(tower_locale, 'purple_catalyst_disp'); - disp2 = translate(tower_locale, 'purple_catalyst_disp2'); - disp3 = translate(tower_locale, 'purple_catalyst_disp3'); - tak = translate(tower_locale, 'catalyst_tak'); - inv = translate(tower_locale, 'purple_catalyst_inv'); + dsc = translate("tower_locale", 'purple_catalyst_dsc'); + disp = translate("tower_locale", 'purple_catalyst_disp'); + disp2 = translate("tower_locale", 'purple_catalyst_disp2'); + disp3 = translate("tower_locale", 'purple_catalyst_disp3'); + tak = translate("tower_locale", 'catalyst_tak'); + inv = translate("tower_locale", 'purple_catalyst_inv'); }:disable(); obj { nam = 'yellow_catalyst'; - dsc = translate(tower_locale, 'yellow_catalyst_dsc'); - disp = translate(tower_locale, 'yellow_catalyst_disp'); - disp2 = translate(tower_locale, 'yellow_catalyst_disp2'); - disp3 = translate(tower_locale, 'yellow_catalyst_disp3'); - tak = translate(tower_locale, 'catalyst_tak'); - inv = translate(tower_locale, 'yellow_catalyst_inv'); + dsc = translate("tower_locale", 'yellow_catalyst_dsc'); + disp = translate("tower_locale", 'yellow_catalyst_disp'); + disp2 = translate("tower_locale", 'yellow_catalyst_disp2'); + disp3 = translate("tower_locale", 'yellow_catalyst_disp3'); + tak = translate("tower_locale", 'catalyst_tak'); + inv = translate("tower_locale", 'yellow_catalyst_inv'); }:disable(); obj { nam = 'turquoise_catalyst'; - dsc = translate(tower_locale, 'turquoise_catalyst_dsc'); - disp = translate(tower_locale, 'turquoise_catalyst_disp'); - disp2 = translate(tower_locale, 'turquoise_catalyst_disp2'); - disp3 = translate(tower_locale, 'turquoise_catalyst_disp3'); - tak = translate(tower_locale, 'catalyst_tak'); - inv = translate(tower_locale, 'turquoise_catalyst_inv'); + dsc = translate("tower_locale", 'turquoise_catalyst_dsc'); + disp = translate("tower_locale", 'turquoise_catalyst_disp'); + disp2 = translate("tower_locale", 'turquoise_catalyst_disp2'); + disp3 = translate("tower_locale", 'turquoise_catalyst_disp3'); + tak = translate("tower_locale", 'catalyst_tak'); + inv = translate("tower_locale", 'turquoise_catalyst_inv'); }:disable(); } @@ -950,19 +953,19 @@ dlg { nam = 'alchemy_book_dlg'; theme = 'tower'; pic = 'images/tower_level_2_l.png'; - disp = translate(tower_locale, 'alchemy_book_dlg_disp'); - enter = translate(tower_locale, 'alchemy_book_dlg_enter'); + disp = translate("tower_locale", 'alchemy_book_dlg_disp'); + enter = translate("tower_locale", 'alchemy_book_dlg_enter'); phr = { - {always=true, translate(tower_locale, 'alchemy_book_dlg_open'), function(s) - return translate_now(tower_locale, 'alchemy_book_dlg_open_response', {catalyst=_(opening_catalyst).disp2}); + {always=true, translate("tower_locale", 'alchemy_book_dlg_open'), function(s) + return translate_now("tower_locale", 'alchemy_book_dlg_open_response', {catalyst=_(opening_catalyst).disp2}); end}; - {always=true, translate(tower_locale, 'alchemy_book_dlg_light'), function(s) - return translate_now(tower_locale, 'alchemy_book_dlg_light_response', {catalyst=_(light_catalyst).disp2}); + {always=true, translate("tower_locale", 'alchemy_book_dlg_light'), function(s) + return translate_now("tower_locale", 'alchemy_book_dlg_light_response', {catalyst=_(light_catalyst).disp2}); end}; - {always=true, translate(tower_locale, 'alchemy_book_dlg_rich'), function(s) - return translate_now(tower_locale, 'alchemy_book_dlg_rich_response', {catalyst=_(enrichment_catalyst).disp2}); + {always=true, translate("tower_locale", 'alchemy_book_dlg_rich'), function(s) + return translate_now("tower_locale", 'alchemy_book_dlg_rich_response', {catalyst=_(enrichment_catalyst).disp2}); end}; - {always=true, translate(tower_locale, 'alchemy_book_dlg_leave'), function() walkout(); end} + {always=true, translate("tower_locale", 'alchemy_book_dlg_leave'), function() walkout(); end} }; } @@ -973,7 +976,7 @@ dlg { hideinv = true; nam = 'cauldron_inside'; pic = 'images/tower_level_2_l.png'; - disp = translate(tower_locale, 'cauldron_inside_disp'); + disp = translate("tower_locale", 'cauldron_inside_disp'); check_potion = function(s) if #s.state == 3 then if has_object(s.state, 'lock') and has_object(s.state, 'hidden_key') and has_object(s.state, opening_catalyst) then @@ -994,24 +997,24 @@ dlg { if s.potion then enable('#take_potion'); disable('#take_all'); - return translate_now(tower_locale, 'cauldron_inside_enter_potion', { + return translate_now("tower_locale", 'cauldron_inside_enter_potion', { potion=std.call(s.potion, "disp2"); }); elseif #s.state == 0 then disable('#take_potion'); disable('#take_all'); - return translate_now(tower_locale, 'cauldron_inside_enter_water'); + return translate_now("tower_locale", 'cauldron_inside_enter_water'); elseif #s.state == 1 then disable('#take_potion'); enable('#take_all'); - return translate_now(tower_locale, 'cauldron_inside_enter_single_item', { + return translate_now("tower_locale", 'cauldron_inside_enter_single_item', { item=std.call(s.state[1], "disp2"); }); else disable('#take_potion'); enable('#take_all'); - local dsc = translate_now(tower_locale, 'cauldron_inside_enter_many_items') .. ' '; + local dsc = translate_now("tower_locale", 'cauldron_inside_enter_many_items') .. ' '; for i = 1, #s.state do dsc = dsc .. std.call(s.state[i], "disp2"); @@ -1023,15 +1026,15 @@ dlg { end; end; phr = { - {'#take_potion', translate(tower_locale, 'cauldron_inside_take_potion'), function(s) + {'#take_potion', translate("tower_locale", 'cauldron_inside_take_potion'), function(s) local potion = _('cauldron_inside').potion; _('cauldron_inside').state = {}; take(potion); _('cauldron_inside').potion = false; - pr(translate_now(tower_locale, 'cauldron_inside_take_potion_response')); + pr(translate_now("tower_locale", 'cauldron_inside_take_potion_response')); walkout(); end}; - {'#take_all', translate(tower_locale, 'cauldron_inside_take_items'), function(s) + {'#take_all', translate("tower_locale", 'cauldron_inside_take_items'), function(s) local state = _('cauldron_inside').state; _('cauldron_inside').state = {}; for i = 1, #state do @@ -1039,7 +1042,7 @@ dlg { end; walkout(); end}; - {always=true, translate(tower_locale, 'cauldron_inside_leave'), function(s) + {always=true, translate("tower_locale", 'cauldron_inside_leave'), function(s) walkout(); end;}; } @@ -1048,44 +1051,44 @@ dlg { room { nam = 'tower_level_3'; theme = 'tower'; - disp = translate(tower_locale, 'tower_level_3_disp'); + disp = translate("tower_locale", 'tower_level_3_disp'); pic = 'images/tower_level_3.png'; - decor = translate(tower_locale, 'tower_level_3_decor'); + decor = translate("tower_locale", 'tower_level_3_decor'); enter = function(s) if tower_accept_level < 1 then tower_accept_level = 1; end; end; way = { - path {translate(tower_locale, 'transition_downstairs'), "tower_level_2"}; - path {"level_3_next_room", translate(tower_locale, 'transition_room'), "tower_level_3_room_2"}:disable(); - path {"level_3_up", translate(tower_locale, 'transition_upstairs'), "tower_level_4"}:disable(); + path {translate("tower_locale", 'transition_downstairs'), "tower_level_2"}; + path {"level_3_next_room", translate("tower_locale", 'transition_room'), "tower_level_3_room_2"}:disable(); + path {"level_3_up", translate("tower_locale", 'transition_upstairs'), "tower_level_4"}:disable(); }; }:with { 'tower_walls', obj { nam = '#bookshelves'; - act = translate(tower_locale, 'tower_level_3_bookshelves'); + act = translate("tower_locale", 'tower_level_3_bookshelves'); }; obj { nam = '#fireplace'; - act = translate(tower_locale, 'tower_level_3_fireplace'); + act = translate("tower_locale", 'tower_level_3_fireplace'); }; obj { nam = '#rockchair'; - act = translate(tower_locale, 'tower_level_3_rockchair'); + act = translate("tower_locale", 'tower_level_3_rockchair'); }; obj { nam = 'level_3_room_2_door'; - dsc = translate(tower_locale, 'tower_level_3_hidden_door_dsc'); - act = translate(tower_locale, 'tower_level_3_hidden_door_act'); + dsc = translate("tower_locale", 'tower_level_3_hidden_door_dsc'); + act = translate("tower_locale", 'tower_level_3_hidden_door_act'); }:disable(); obj { solved = false; nam = 'tower_level_3_table'; act = function(s) if s.solved then - return translate_now(tower_locale, 'tower_level_3_table_solved'); + return translate_now("tower_locale", 'tower_level_3_table_decor') .. ' ' .. translate_now("tower_locale", 'tower_level_3_table_decor_solved'); else walkin('tower_level_3_table_in'); end; @@ -1095,22 +1098,22 @@ room { nam = '#tower_3_door'; dsc = function(s) if _'level_3_up':disabled() then - return translate_now(tower_locale, 'tower_level_3_door_dsc_locked'); + return translate_now("tower_locale", 'tower_level_3_door_dsc_locked'); else - return translate_now(tower_locale, 'tower_level_3_door_dsc_open'); + return translate_now("tower_locale", 'tower_level_3_door_dsc_open'); end; end; act = function(s) if _'level_3_up':disabled() then - return translate_now(tower_locale, 'tower_level_3_door_act_locked'); + return translate_now("tower_locale", 'tower_level_3_door_act_locked'); else - return translate_now(tower_locale, 'tower_level_3_door_act_open'); + return translate_now("tower_locale", 'tower_level_3_door_act_open'); end; end; }: with { obj { nam = '#stairwell'; - act = translate(tower_locale, 'tower_level_1_stairwell'); + act = translate("tower_locale", 'tower_level_1_stairwell'); } }; } @@ -1172,15 +1175,17 @@ room { end; theme = 'tower'; nofollow = true; - disp = translate(tower_locale, 'tower_level_3_disp'); - decor = translate(tower_locale, 'tower_level_3_table_in_decor'); + disp = translate("tower_locale", 'tower_level_3_disp'); + decor = function(s) + return translate_now("tower_locale", 'tower_level_3_table_decor') .. ' ' .. translate_now("tower_locale", 'tower_level_3_table_decor_unsolved'); + end; way = { - path {translate(common_locale, 'back'), 'tower_level_3'}; + path {translate("common_locale", 'back'), 'tower_level_3'}; }; }:with { obj { nam = '#figures'; - dsc = translate(tower_locale, 'tower_level_3_table_in_figures_dsc'); + dsc = translate("tower_locale", 'tower_level_3_table_in_figures_dsc'); act = function(s) take('figure_wolf'); take('figure_tiger'); @@ -1188,7 +1193,7 @@ room { take('figure_knight'); take('figure_tower'); s:disable(); - return translate_now(tower_locale, 'tower_level_3_table_in_figures_act'); + return translate_now("tower_locale", 'tower_level_3_table_in_figures_act'); end; }; obj { @@ -1197,12 +1202,12 @@ room { nam = '#north_west'; dsc = function(s) if s.item then - return translate_now(tower_locale, 'tower_level_3_table_deepening_dsc_full', { + return translate_now("tower_locale", 'tower_level_3_table_deepening_dsc_full', { location='NW', item=s.item.disp2 }); else - return translate_now(tower_locale, 'tower_level_3_table_deepening_dsc_empty', { + return translate_now("tower_locale", 'tower_level_3_table_deepening_dsc_empty', { location='NW' }); end; @@ -1212,21 +1217,21 @@ room { local t = s.item; take(s.item); s.item = false; - return translate_now(tower_locale, 'tower_level_3_table_deepening_act_full', { + return translate_now("tower_locale", 'tower_level_3_table_deepening_act_full', { item=t.disp3 }); else - return translate_now(tower_locale, 'tower_level_3_table_deepening_act_empty'); + return translate_now("tower_locale", 'tower_level_3_table_deepening_act_empty'); end; end; used = function(s, o) if s.item then - return translate_now(tower_locale, 'tower_level_3_table_deepening_used_full', { + return translate_now("tower_locale", 'tower_level_3_table_deepening_used_full', { item=s.item.disp2 }); elseif o^'figure_wolf' or o^'figure_lion' or o^'figure_tower' or o^'figure_knight' or o^'figure_tiger' then s.item = o; - p(translate_now(tower_locale, 'tower_level_3_table_deepening_used_fit', { + p(translate_now("tower_locale", 'tower_level_3_table_deepening_used_fit', { item=o.disp3 })); remove(o, pl); @@ -1247,7 +1252,7 @@ room { _('tower_level_3_table').solved = true; walkout(); _('level_3_up'):enable(); - p(translate_now(tower_locale, 'tower_level_3_table_deepening_used_open')); + p(translate_now("tower_locale", 'tower_level_3_table_deepening_used_open')); else return false; end; @@ -1259,12 +1264,12 @@ room { nam = '#north_east'; dsc = function(s) if s.item then - return translate_now(tower_locale, 'tower_level_3_table_deepening_dsc_full', { + return translate_now("tower_locale", 'tower_level_3_table_deepening_dsc_full', { location='NE', item=s.item.disp2 }); else - return translate_now(tower_locale, 'tower_level_3_table_deepening_dsc_empty', { + return translate_now("tower_locale", 'tower_level_3_table_deepening_dsc_empty', { location='NE' }); end; @@ -1274,21 +1279,21 @@ room { local t = s.item; take(s.item); s.item = false; - return translate_now(tower_locale, 'tower_level_3_table_deepening_act_full', { + return translate_now("tower_locale", 'tower_level_3_table_deepening_act_full', { item=t.disp3 }); else - return translate_now(tower_locale, 'tower_level_3_table_deepening_act_empty'); + return translate_now("tower_locale", 'tower_level_3_table_deepening_act_empty'); end; end; used = function(s, o) if s.item then - return translate_now(tower_locale, 'tower_level_3_table_deepening_used_full', { + return translate_now("tower_locale", 'tower_level_3_table_deepening_used_full', { item=s.item.disp2 }); elseif o^'figure_wolf' or o^'figure_lion' or o^'figure_tower' or o^'figure_knight' or o^'figure_tiger' then s.item = o; - p(translate_now(tower_locale, 'tower_level_3_table_deepening_used_fit', { + p(translate_now("tower_locale", 'tower_level_3_table_deepening_used_fit', { item=o.disp3 })); remove(o, pl); @@ -1309,7 +1314,7 @@ room { _('tower_level_3_table').solved = true; walkout(); _('level_3_up'):enable(); - p(translate_now(tower_locale, 'tower_level_3_table_deepening_used_open')); + p(translate_now("tower_locale", 'tower_level_3_table_deepening_used_open')); else return false; end; @@ -1321,11 +1326,11 @@ room { nam = '#middle'; dsc = function(s) if s.item then - return translate_now(tower_locale, 'tower_level_3_table_middle_deepening_dsc_full', { + return translate_now("tower_locale", 'tower_level_3_table_middle_deepening_dsc_full', { item=s.item.disp2 }); else - return translate_now(tower_locale, 'tower_level_3_table_middle_deepening_dsc_empty'); + return translate_now("tower_locale", 'tower_level_3_table_middle_deepening_dsc_empty'); end; end; act = function(s) @@ -1333,21 +1338,21 @@ room { local t = s.item; take(s.item); s.item = false; - return translate_now(tower_locale, 'tower_level_3_table_deepening_act_full', { + return translate_now("tower_locale", 'tower_level_3_table_deepening_act_full', { item=t.disp3 }); else - return translate_now(tower_locale, 'tower_level_3_table_deepening_act_empty'); + return translate_now("tower_locale", 'tower_level_3_table_deepening_act_empty'); end; end; used = function(s, o) if s.item then - return translate_now(tower_locale, 'tower_level_3_table_deepening_used_full', { + return translate_now("tower_locale", 'tower_level_3_table_deepening_used_full', { item=s.item.disp2 }); elseif o^'figure_wolf' or o^'figure_lion' or o^'figure_tower' or o^'figure_knight' or o^'figure_tiger' then s.item = o; - p(translate_now(tower_locale, 'tower_level_3_table_deepening_used_fit', { + p(translate_now("tower_locale", 'tower_level_3_table_deepening_used_fit', { item=o.disp3 })); remove(o, pl); @@ -1368,7 +1373,7 @@ room { _('tower_level_3_table').solved = true; walkout(); _('level_3_up'):enable(); - p(translate_now(tower_locale, 'tower_level_3_table_deepening_used_open')); + p(translate_now("tower_locale", 'tower_level_3_table_deepening_used_open')); else return false; end; @@ -1380,12 +1385,12 @@ room { nam = '#south_west'; dsc = function(s) if s.item then - return translate_now(tower_locale, 'tower_level_3_table_deepening_dsc_full', { + return translate_now("tower_locale", 'tower_level_3_table_deepening_dsc_full', { location='SW', item=s.item.disp2 }); else - return translate_now(tower_locale, 'tower_level_3_table_deepening_dsc_empty', { + return translate_now("tower_locale", 'tower_level_3_table_deepening_dsc_empty', { location='SW' }); end; @@ -1395,21 +1400,21 @@ room { local t = s.item; take(s.item); s.item = false; - return translate_now(tower_locale, 'tower_level_3_table_deepening_act_full', { + return translate_now("tower_locale", 'tower_level_3_table_deepening_act_full', { item=t.disp3 }); else - return translate_now(tower_locale, 'tower_level_3_table_deepening_act_empty'); + return translate_now("tower_locale", 'tower_level_3_table_deepening_act_empty'); end; end; used = function(s, o) if s.item then - return translate_now(tower_locale, 'tower_level_3_table_deepening_used_full', { + return translate_now("tower_locale", 'tower_level_3_table_deepening_used_full', { item=s.item.disp2 }); elseif o^'figure_wolf' or o^'figure_lion' or o^'figure_tower' or o^'figure_knight' or o^'figure_tiger' then s.item = o; - p(translate_now(tower_locale, 'tower_level_3_table_deepening_used_fit', { + p(translate_now("tower_locale", 'tower_level_3_table_deepening_used_fit', { item=o.disp3 })); remove(o, pl); @@ -1430,7 +1435,7 @@ room { _('tower_level_3_table').solved = true; walkout(); _('level_3_up'):enable(); - p(translate_now(tower_locale, 'tower_level_3_table_deepening_used_open')); + p(translate_now("tower_locale", 'tower_level_3_table_deepening_used_open')); else return false; end; @@ -1442,12 +1447,12 @@ room { nam = '#south_east'; dsc = function(s) if s.item then - return translate_now(tower_locale, 'tower_level_3_table_deepening_dsc_full', { + return translate_now("tower_locale", 'tower_level_3_table_deepening_dsc_full', { location='SE', item=s.item.disp2 }); else - return translate_now(tower_locale, 'tower_level_3_table_deepening_dsc_empty', { + return translate_now("tower_locale", 'tower_level_3_table_deepening_dsc_empty', { location='SE' }); end; @@ -1457,21 +1462,21 @@ room { local t = s.item; take(s.item); s.item = false; - return translate_now(tower_locale, 'tower_level_3_table_deepening_act_full', { + return translate_now("tower_locale", 'tower_level_3_table_deepening_act_full', { item=t.disp3 }); else - return translate_now(tower_locale, 'tower_level_3_table_deepening_act_empty'); + return translate_now("tower_locale", 'tower_level_3_table_deepening_act_empty'); end; end; used = function(s, o) if s.item then - return translate_now(tower_locale, 'tower_level_3_table_deepening_used_full', { + return translate_now("tower_locale", 'tower_level_3_table_deepening_used_full', { item=s.item.disp2 }); elseif o^'figure_wolf' or o^'figure_lion' or o^'figure_tower' or o^'figure_knight' or o^'figure_tiger' then s.item = o; - p(translate_now(tower_locale, 'tower_level_3_table_deepening_used_fit', { + p(translate_now("tower_locale", 'tower_level_3_table_deepening_used_fit', { item=o.disp3 })); remove(o, pl); @@ -1492,7 +1497,7 @@ room { _('tower_level_3_table').solved = true; walkout(); _('level_3_up'):enable(); - p(translate_now(tower_locale, 'tower_level_3_table_deepening_used_open')); + p(translate_now("tower_locale", 'tower_level_3_table_deepening_used_open')); else return false; end; @@ -1500,56 +1505,66 @@ room { }; obj { nam = '#hint'; - act = translate(tower_locale, 'tower_level_3_hint'); + act = translate("tower_locale", 'tower_level_3_hint'); } } obj { nam = 'figure_wolf'; - disp = translate(tower_locale, 'figure_wolf_disp'); - disp2 = translate(tower_locale, 'figure_wolf_disp2'); - disp3 = translate(tower_locale, 'figure_wolf_disp3'); - inv = translate(tower_locale, 'figure_wolf_inv'); + disp = translate("tower_locale", 'figure_wolf_disp'); + disp2 = translate("tower_locale", 'figure_wolf_disp2'); + disp3 = translate("tower_locale", 'figure_wolf_disp3'); + inv = function(s) + return translate_now("tower_locale", 'figure_wolf_inv') .. ' ' .. translate_now("tower_locale", 'figure_common_inv');; + end; } obj { nam = 'figure_tiger'; - disp = translate(tower_locale, 'figure_tiger_disp'); - disp2 = translate(tower_locale, 'figure_tiger_disp2'); - disp3 = translate(tower_locale, 'figure_tiger_disp3'); - inv = translate(tower_locale, 'figure_tiger_inv'); + disp = translate("tower_locale", 'figure_tiger_disp'); + disp2 = translate("tower_locale", 'figure_tiger_disp2'); + disp3 = translate("tower_locale", 'figure_tiger_disp3'); + inv = function(s) + return translate_now("tower_locale", 'figure_tiger_inv') .. ' ' .. translate_now("tower_locale", 'figure_common_inv');; + end; } obj { nam = 'figure_lion'; - disp = translate(tower_locale, 'figure_lion_disp'); - disp2 = translate(tower_locale, 'figure_lion_disp2'); - disp3 = translate(tower_locale, 'figure_lion_disp3'); - inv = translate(tower_locale, 'figure_lion_inv'); + disp = translate("tower_locale", 'figure_lion_disp'); + disp2 = translate("tower_locale", 'figure_lion_disp2'); + disp3 = translate("tower_locale", 'figure_lion_disp3'); + inv = function(s) + return translate_now("tower_locale", 'figure_lion_inv') .. ' ' .. translate_now("tower_locale", 'figure_common_inv');; + end; } obj { nam = 'figure_knight'; - disp = translate(tower_locale, 'figure_knight_disp'); - disp2 = translate(tower_locale, 'figure_knight_disp2'); - disp3 = translate(tower_locale, 'figure_knight_disp3'); - inv = translate(tower_locale, 'figure_knight_inv'); + disp = translate("tower_locale", 'figure_knight_disp'); + disp2 = translate("tower_locale", 'figure_knight_disp2'); + disp3 = translate("tower_locale", 'figure_knight_disp3'); + inv = function(s) + return translate_now("tower_locale", 'figure_knight_inv') .. ' ' .. translate_now("tower_locale", 'figure_common_inv');; + end; } obj { nam = 'figure_tower'; - disp = translate(tower_locale, 'figure_tower_disp'); - disp2 = translate(tower_locale, 'figure_tower_disp2'); - disp3 = translate(tower_locale, 'figure_tower_disp3'); - inv = translate(tower_locale, 'figure_tower_inv'); + disp = translate("tower_locale", 'figure_tower_disp'); + disp2 = translate("tower_locale", 'figure_tower_disp2'); + disp3 = translate("tower_locale", 'figure_tower_disp3'); + inv = function(s) + return translate_now("tower_locale", 'figure_tower_inv') .. ' ' .. translate_now("tower_locale", 'figure_common_inv');; + end; } room { nam = 'tower_level_4'; theme = 'tower'; - disp = translate(tower_locale, 'tower_level_4_disp'); + disp = translate("tower_locale", 'tower_level_4_disp'); pic = 'images/tower_level_4.png'; - decor = translate(tower_locale, 'tower_level_4_decor'); + decor = translate("tower_locale", 'tower_level_4_decor'); enter = function(s) if tower_accept_level < 2 then tower_accept_level = 2; @@ -1558,18 +1573,18 @@ room { snd.music('sound/bgm_tower.ogg'); end; way = { - path {translate(tower_locale, 'transition_downstairs'), "tower_level_3"}; - path {"level_4_next_room", translate(tower_locale, 'transition_room'), "tower_level_4_room_2"}:disable(); + path {translate("tower_locale", 'transition_downstairs'), "tower_level_3"}; + path {"level_4_next_room", translate("tower_locale", 'transition_room'), "tower_level_4_room_2"}:disable(); }; }: with { 'tower_walls', obj { nam = '#bed'; - act = translate(tower_locale, 'tower_level_4_bed'); + act = translate("tower_locale", 'tower_level_4_bed'); }; obj { nam = '#table'; - act = translate(tower_locale, 'tower_level_4_table'); + act = translate("tower_locale", 'tower_level_4_table'); }; obj { nam = '#candelabra'; @@ -1580,12 +1595,12 @@ room { s.state = 1; take('candle'); candle_taken = true; - return translate_now(tower_locale, 'tower_level_4_chandelier_act_take_candle'); + return translate_now("tower_locale", 'tower_candelabra_candle_taken'); else if s.state == 0 then - return translate_now(tower_locale, 'tower_level_4_chandelier_act'); + return translate_now("tower_locale", 'tower_level_4_chandelier_act'); else - return translate_now(tower_locale, 'tower_level_4_chandelier_act') .. ' ' .. translate_now(tower_locale, 'tower_level_4_chandelier_act_missing'); + return translate_now("tower_locale", 'tower_level_4_chandelier_act') .. ' ' .. translate_now("tower_locale", 'tower_candelabra_candle_missing'); end; end; else @@ -1597,16 +1612,16 @@ room { nam = '#tower_4_door'; dsc = function(s) if _'level_4_next_room':disabled() then - return translate_now(tower_locale, 'tower_level_4_door_dsc_locked'); + return translate_now("tower_locale", 'tower_level_4_door_dsc_locked'); else - return translate_now(tower_locale, 'tower_level_4_door_dsc_open'); + return translate_now("tower_locale", 'tower_level_4_door_dsc_open'); end; end; act = function(s) if _'level_4_next_room':disabled() then - return translate_now(tower_locale, 'tower_level_4_door_act_locked'); + return translate_now("tower_locale", 'tower_level_4_door_act_locked'); else - return translate_now(tower_locale, 'tower_level_4_door_act_open'); + return translate_now("tower_locale", 'tower_level_4_door_act_open'); end; end; }; @@ -1626,7 +1641,7 @@ function candle(title, note, index, note return obj { nam = 'candle_' .. note; dsc = function(s) - return '{' .. translate_now(tower_locale, title) .. '}^'; + return '{' .. translate_now("tower_locale", title) .. '}^'; end; lit = false; restore = function(s) @@ -1671,8 +1686,8 @@ function candle(title, note, index, note act = function(s) stop_sound(); sounds[note_name]:play(); - p(translate_now(tower_locale, 'tower_level_4_candle_act_lit', { - note=translate_now(note_locale, note_name) + p(translate_now("tower_locale", 'tower_level_4_candle_act_lit', { + note=translate_now("note_locale", note_name) })); s.lit = true; @@ -1691,16 +1706,16 @@ function candle(title, note, index, note _'candle_a':blow(); _'candle_b':blow(); - pn(translate_now(tower_locale, 'tower_level_4_candle_act_blow')); + pn(translate_now("tower_locale", 'tower_level_4_candle_act_blow')); local candelabra = _'tower_candelabra'; - p(translate_now(tower_locale, 'tower_level_4_candle_act_sequence')); + p(translate_now("tower_locale", 'tower_level_4_candle_act_sequence')); for i = 1, 6 do - pr(translate_now(note_locale, candelabra.notesequence[i]) .. ', '); + pr(translate_now("note_locale", candelabra.notesequence[i]) .. ', '); end; - pr(translate_now(note_locale, candelabra.notesequence[7]) .. '. '); + pr(translate_now("note_locale", candelabra.notesequence[7]) .. '. '); else here().playindex = here().playindex + 1; if here().playindex > 7 then @@ -1708,7 +1723,7 @@ function candle(title, note, index, note _('level_4_next_room'):enable(); _('tower_candelabra').timerstate = 4; - p(translate_now(tower_locale, 'tower_level_4_candle_act_open')); + p(translate_now("tower_locale", 'tower_level_4_candle_act_open')); local ns = { gusts[rnd(#gusts)]; @@ -1767,10 +1782,10 @@ room { playindex = 1; timerstate = 3; nam = 'tower_candelabra'; - disp = translate(tower_locale, 'tower_level_4_disp'); + disp = translate("tower_locale", 'tower_level_4_disp'); theme = 'tower'; nofollow = true; - dsc = translate(tower_locale, 'tower_candelabra_dsc'); + dsc = translate("tower_locale", 'tower_candelabra_dsc'); pic = 'images/candles/candles_all_kinds_bg.png'; timer = function(s) if s.timerstate == 1 then @@ -1822,12 +1837,12 @@ room { stop_sound(); play_sound(table.copy(s.notesequence), 600); - p(translate_now(tower_locale, 'tower_candelabra_enter')); + p(translate_now("tower_locale", 'tower_candelabra_enter')); for i = 1, 6 do - pr(translate_now(note_locale, s.notesequence[i]) .. ', '); + pr(translate_now("note_locale", s.notesequence[i]) .. ', '); end; - pr(translate_now(note_locale, s.notesequence[7]) .. '. '); + pr(translate_now("note_locale", s.notesequence[7]) .. '. '); end; obj = { candle('tower_candle_1', 'c', 1, 'note_c', 57, 70); @@ -1839,7 +1854,7 @@ room { candle('tower_candle_7', 'b', 7, 'note_b', 226, 70); }; way = { - path {translate(common_locale, 'back'), 'tower_level_4'}; + path {translate("common_locale", 'back'), 'tower_level_4'}; }; themeInit = function(s) timer:set(25); @@ -1861,7 +1876,7 @@ room { room { nam = 'tower_level_4_room_2'; - disp = translate(tower_locale, 'tower_level_4_room_2_disp'); + disp = translate("tower_locale", 'tower_level_4_room_2_disp'); theme = 'tower'; pic = function(s) if power_on then @@ -1873,33 +1888,33 @@ room { enter = function(s) instead.autosave(); end; - decor = translate(tower_locale, 'tower_level_4_room_2_decor'); + decor = translate("tower_locale", 'tower_level_4_room_2_decor'); way = { - path { translate(tower_locale, 'transition_door'), 'tower_level_4' }; - path { translate(tower_locale, 'transition_downstairs'), 'tower_level_3_room_2' }; + path { translate("tower_locale", 'transition_door'), 'tower_level_4' }; + path { translate("tower_locale", 'transition_downstairs'), 'tower_level_3_room_2' }; }; }: with { obj { nam = '#ladder'; - act = translate(tower_locale, 'tower_level_4_room_2_ladder'); + act = translate("tower_locale", 'tower_level_4_room_2_ladder'); }; obj { nam = '#servers'; act = function(s) if power_on then - return translate_now(tower_locale, 'tower_level_4_room_2_servers_powered'); + return translate_now("tower_locale", 'tower_level_4_room_2_servers_powered'); else - return translate_now(tower_locale, 'tower_level_4_room_2_servers'); + return translate_now("tower_locale", 'tower_level_4_room_2_servers'); end; end; }; obj { nam = '#table'; - act = translate(tower_locale, 'tower_level_4_room_2_table'); + act = translate("tower_locale", 'tower_level_4_room_2_table'); }; obj { nam = '#armchair'; - act = translate(tower_locale, 'tower_level_4_room_2_armchair'); + act = translate("tower_locale", 'tower_level_4_room_2_armchair'); }; obj { assembled = true; @@ -1909,7 +1924,7 @@ room { if power_on then return _('system_unit'):check(); else - return translate_now(tower_locale, 'tower_level_4_room_2_computer_act'); + return translate_now("tower_locale", 'tower_level_4_room_2_computer_act'); end; else walkin('system_unit'); @@ -1920,9 +1935,9 @@ room { s.assembled = not s.assembled; if s.assembled then - return translate_now(tower_locale, 'tower_level_4_room_2_computer_used_assemble'); + return translate_now("tower_locale", 'tower_level_4_room_2_computer_used_assemble'); else - return translate_now(tower_locale, 'tower_level_4_room_2_computer_used_disassemble'); + return translate_now("tower_locale", 'tower_level_4_room_2_computer_used_disassemble'); end; end; @@ -1931,7 +1946,7 @@ room { }; obj { nam = '#monitor'; - act = translate(tower_locale, 'tower_level_4_room_2_monitor'); + act = translate("tower_locale", 'tower_level_4_room_2_monitor'); }; obj { nam = '#manual'; @@ -2184,8 +2199,8 @@ room { theme = 'tower'; nam = 'system_unit'; nofollow = true; - disp = translate(tower_locale, 'system_unit_disp'); - decor = translate(tower_locale, 'system_unit_decor'); + disp = translate("tower_locale", 'system_unit_disp'); + decor = translate("tower_locale", 'system_unit_decor'); enter = function(s) local motherboard = lookup('#motherboard', _'system_unit'); local cpu = lookup('#cpu', _'system_unit'); @@ -2228,13 +2243,13 @@ room { if not motherboard.device or not motherboard.device.status then pc_status = 'fail'; if from_solarscale then - p(translate_now(tower_locale, 'system_unit_check_fail')); - p(translate_now(tower_locale, 'system_unit_check_no_sound')); + p(translate_now("tower_locale", 'system_unit_check_fail')); + p(translate_now("tower_locale", 'system_unit_check_no_sound')); return 'motherboard'; else - p(translate_now(tower_locale, 'system_unit_check_turn_on')); - p(translate_now(tower_locale, 'system_unit_check_fail')); - p(translate_now(tower_locale, 'system_unit_check_no_sound')); + p(translate_now("tower_locale", 'system_unit_check_turn_on')); + p(translate_now("tower_locale", 'system_unit_check_fail')); + p(translate_now("tower_locale", 'system_unit_check_no_sound')); return; end; end; @@ -2254,13 +2269,13 @@ room { play_sound({false, false, false, false, 'long_beep', false, 'short_beep', 'short_beep'}, 300); pc_status = 'fail'; if from_solarscale then - p(translate_now(tower_locale, 'system_unit_check_fail')); - p(translate_now(tower_locale, 'system_unit_check_1_long_2_short')); + p(translate_now("tower_locale", 'system_unit_check_fail')); + p(translate_now("tower_locale", 'system_unit_check_1_long_2_short')); return "cpu"; else - p(translate_now(tower_locale, 'system_unit_check_turn_on')); - p(translate_now(tower_locale, 'system_unit_check_fail')); - p(translate_now(tower_locale, 'system_unit_check_1_long_2_short')); + p(translate_now("tower_locale", 'system_unit_check_turn_on')); + p(translate_now("tower_locale", 'system_unit_check_fail')); + p(translate_now("tower_locale", 'system_unit_check_1_long_2_short')); return; end end; @@ -2280,13 +2295,13 @@ room { play_sound({false, false, false, false, 'short_beep', 'long_beep', false, 'long_beep'}, 300); pc_status = 'fail'; if from_solarscale then - p(translate_now(tower_locale, 'system_unit_check_fail')); - p(translate_now(tower_locale, 'system_unit_check_1_short_2_long')); + p(translate_now("tower_locale", 'system_unit_check_fail')); + p(translate_now("tower_locale", 'system_unit_check_1_short_2_long')); return "ram"; else - p(translate_now(tower_locale, 'system_unit_check_turn_on')); - p(translate_now(tower_locale, 'system_unit_check_fail')); - p(translate_now(tower_locale, 'system_unit_check_1_short_2_long')); + p(translate_now("tower_locale", 'system_unit_check_turn_on')); + p(translate_now("tower_locale", 'system_unit_check_fail')); + p(translate_now("tower_locale", 'system_unit_check_1_short_2_long')); return; end; end; @@ -2311,13 +2326,13 @@ room { play_sound({false, false, false, false, 'long_beep', false, 'short_beep', 'long_beep'}, 300); pc_status = 'fail'; if from_solarscale then - p(translate_now(tower_locale, 'system_unit_check_fail')); - p(translate_now(tower_locale, 'system_unit_check_1_long_1_short_1_long')); + p(translate_now("tower_locale", 'system_unit_check_fail')); + p(translate_now("tower_locale", 'system_unit_check_1_long_1_short_1_long')); return "video"; else - p(translate_now(tower_locale, 'system_unit_check_turn_on')); - p(translate_now(tower_locale, 'system_unit_check_fail')); - p(translate_now(tower_locale, 'system_unit_check_1_long_1_short_1_long')); + p(translate_now("tower_locale", 'system_unit_check_turn_on')); + p(translate_now("tower_locale", 'system_unit_check_fail')); + p(translate_now("tower_locale", 'system_unit_check_1_long_1_short_1_long')); return; end; end; @@ -2326,13 +2341,13 @@ room { play_sound({false, false, false, false, 'long_beep', false, 'long_beep', false, 'long_beep'}, 300); pc_status = 'fail'; if from_solarscale then - p(translate_now(tower_locale, 'system_unit_check_fail')); - p(translate_now(tower_locale, 'system_unit_check_3_long')); + p(translate_now("tower_locale", 'system_unit_check_fail')); + p(translate_now("tower_locale", 'system_unit_check_3_long')); return "keyboard"; else - p(translate_now(tower_locale, 'system_unit_check_turn_on')); - p(translate_now(tower_locale, 'system_unit_check_fail')); - p(translate_now(tower_locale, 'system_unit_check_3_long')); + p(translate_now("tower_locale", 'system_unit_check_turn_on')); + p(translate_now("tower_locale", 'system_unit_check_fail')); + p(translate_now("tower_locale", 'system_unit_check_3_long')); return; end; end; @@ -2344,7 +2359,7 @@ room { if not _('terminal_boot').network then pc_status = 'fail'; if from_solarscale then - p(translate_now(tower_locale, 'system_unit_check_network_fail')); + p(translate_now("tower_locale", 'system_unit_check_network_fail')); return 'network'; end; end; @@ -2354,7 +2369,7 @@ room { end; end; way = { - path {translate(common_locale, 'back'), 'tower_level_4_room_2'} + path {translate("common_locale", 'back'), 'tower_level_4_room_2'} } }:with { obj { @@ -2362,9 +2377,9 @@ room { device = _'cvx-rst-i3sb'; dsc = function(s) if s.device then - return '{' .. translate_now(computer_locale, 'motherboard') .. ': ' .. s.device.name .. '}^'; + return '{' .. translate_now("parts_locale", 'motherboard') .. ': ' .. s.device.name .. '}^'; else - return '{' .. translate_now(computer_locale, 'motherboard') .. ': ' .. translate_now(computer_locale, 'component_not_set') .. '}^'; + return '{' .. translate_now("parts_locale", 'motherboard') .. ': ' .. translate_now("parts_locale", 'component_not_set') .. '}^'; end; end; act = function(s) @@ -2376,10 +2391,11 @@ room { local slot4 = lookup('#slot4', _'system_unit'); if cpu.device or ram.device or slot1.device or slot2.device or slot3.device or slot4.device then - return translate_now(computer_locale, 'motherboard_not_taken'); + return translate_now("parts_locale", 'motherboard_not_taken'); end; if s.device then + local msg = std.call(_(s.device), 'tak'); take(s.device); s.device = false; @@ -2390,7 +2406,7 @@ room { slot3:disable(); slot4:disable(); pc_status = 'fail'; - return translate_now(computer_locale, 'motherboard_taken'); + return msg; end; end; @@ -2405,11 +2421,11 @@ room { local slots = { slot1, slot2, slot3, slot4 }; if cpu.device or ram.device or slot1.device or slot2.device or slot3.device or slot4.device then - return translate_now(computer_locale, 'motherboard_not_taken'); + return translate_now("parts_locale", 'motherboard_not_taken'); end; if s.device then - return translate_now(computer_locale, 'motherboard_needs_removal'); + return translate_now("parts_locale", 'motherboard_needs_removal'); end; cpu:enable(); @@ -2422,7 +2438,7 @@ room { remove(o, pl); s.device = o; pc_status = 'fail'; - return translate_now(computer_locale, 'motherboard_installed'); + return translate_now("parts_locale", 'motherboard_installed'); end; return false; @@ -2433,33 +2449,34 @@ room { device = _'mcpu70-cvx-7mhz'; dsc = function(s) if s.device then - return '{' .. translate_now(computer_locale, 'cpu') .. ': ' .. s.device.name .. '}^'; + return '{' .. translate_now("parts_locale", 'cpu') .. ': ' .. s.device.name .. '}^'; else - return '{' .. translate_now(computer_locale, 'cpu') .. ': ' .. translate_now(computer_locale, 'component_not_set') .. '}^'; + return '{' .. translate_now("parts_locale", 'cpu') .. ': ' .. translate_now("parts_locale", 'component_not_set') .. '}^'; end; end; act = function(s) if s.device then + local msg = std.call(_(s.device), 'tak'); take(s.device); s.device = false; pc_status = 'fail'; - return translate_now(computer_locale, 'cpu_taken'); + return msg; end; end; used = function(s, o) local motherboard = lookup('#motherboard', _'system_unit'); if o.part and o.ptype == 'cpu' and motherboard.device then if s.device then - return translate_now(computer_locale, 'cpu_needs_removal'); + return translate_now("parts_locale", 'cpu_needs_removal'); end; motherboard = motherboard.device; - if (motherboard.cpu == 'CVX' and (o.slot == 'CRX' or o.slot == 'CXX')) or + if (motherboard.cpu == 'CVX' and (o.slot == 'CRX' or o.slot == 'CXX')) or (motherboard.cpu == 'CRX' and o.slot == 'CXX') or (motherboard.cpu == 'CAX' and o.slot ~= 'CAX') then - return translate_now(computer_locale, 'cpu_not_fit'); + return translate_now("parts_locale", 'cpu_not_fit'); end; remove(o, pl); @@ -2469,7 +2486,7 @@ room { else pc_status = 'fail'; end; - return translate_now(computer_locale, 'cpu_installed'); + return translate_now("parts_locale", 'cpu_installed'); end; return false; end; @@ -2479,24 +2496,25 @@ room { device = _'rst-m16-16mb'; dsc = function(s) if s.device then - return '{' .. translate_now(computer_locale, 'ram') .. ': ' .. s.device.name .. '}^'; + return '{' .. translate_now("parts_locale", 'ram') .. ': ' .. s.device.name .. '}^'; else - return '{' .. translate_now(computer_locale, 'ram') .. ': ' .. translate_now(computer_locale, 'component_not_set') .. '}^'; + return '{' .. translate_now("parts_locale", 'ram') .. ': ' .. translate_now("parts_locale", 'component_not_set') .. '}^'; end; end; act = function(s) if s.device then + local msg = std.call(_(s.device), 'tak'); take(s.device); s.device = false; pc_status = 'fail'; - return translate_now(computer_locale, 'ram_taken'); + return msg; end; end; used = function(s, o) local motherboard = lookup('#motherboard', _'system_unit'); if o.part and o.ptype == 'ram' and motherboard.device then if s.device then - return translate_now(computer_locale, 'ram_needs_removal'); + return translate_now("parts_locale", 'ram_needs_removal'); end; motherboard = motherboard.device; @@ -2504,7 +2522,7 @@ room { if (motherboard.ram == 'RST' and o.slot == 'RDT') or (motherboard.ram == 'RKT' and o.slot ~= 'RKT') then - return translate_now(computer_locale, 'ram_not_fit'); + return translate_now("parts_locale", 'ram_not_fit'); end; remove(o, pl); @@ -2514,7 +2532,7 @@ room { else pc_status = 'fail'; end; - return translate_now(computer_locale, 'ram_installed'); + return translate_now("parts_locale", 'ram_installed'); end; return false; end; @@ -2524,30 +2542,31 @@ room { device = _'tva-rx1'; dsc = function(s) if s.device then - return '{' .. translate_now(computer_locale, 'slot') .. ': ' .. s.device.name .. '}^'; + return '{' .. translate_now("parts_locale", 'slot') .. ': ' .. s.device.name .. '}^'; else - return '{' .. translate_now(computer_locale, 'slot') .. ': ' .. translate_now(computer_locale, 'component_not_set') .. '}^'; + return '{' .. translate_now("parts_locale", 'slot') .. ': ' .. translate_now("parts_locale", 'component_not_set') .. '}^'; end; end; act = function(s) if s.device then + local msg = std.call(_(s.device), 'tak'); take(s.device); s.device = false; pc_status = ''; - return translate_now(computer_locale, 'device_taken'); + return msg; end; end; used = function(s, o) local motherboard = lookup('#motherboard', _'system_unit'); if o.part and (o.ptype == 'video' or o.ptype == 'network' or o.ptype == 'keyboard') and motherboard.device then if s.device then - return translate_now(computer_locale, 'device_needs_removal'); + return translate_now("parts_locale", 'device_needs_removal'); end; remove(o, pl); s.device = o; pc_status = ''; - return translate_now(computer_locale, 'device_installed'); + return translate_now("parts_locale", 'device_installed'); end; return false; end; @@ -2557,30 +2576,31 @@ room { device = _'kbc-s'; dsc = function(s) if s.device then - return '{' .. translate_now(computer_locale, 'slot') .. ': ' .. s.device.name .. '}^'; + return '{' .. translate_now("parts_locale", 'slot') .. ': ' .. s.device.name .. '}^'; else - return '{' .. translate_now(computer_locale, 'slot') .. ': ' .. translate_now(computer_locale, 'component_not_set') .. '}^'; + return '{' .. translate_now("parts_locale", 'slot') .. ': ' .. translate_now("parts_locale", 'component_not_set') .. '}^'; end; end; act = function(s) if s.device then + local msg = std.call(_(s.device), 'tak'); take(s.device); s.device = false; pc_status = ''; - return translate_now(computer_locale, 'device_taken'); + return msg; end; end; used = function(s, o) local motherboard = lookup('#motherboard', _'system_unit'); if o.part and (o.ptype == 'video' or o.ptype == 'network' or o.ptype == 'keyboard') and motherboard.device then if s.device then - return translate_now(computer_locale, 'device_needs_removal'); + return translate_now("parts_locale", 'device_needs_removal'); end; remove(o, pl); s.device = o; pc_status = ''; - return translate_now(computer_locale, 'device_installed'); + return translate_now("parts_locale", 'device_installed'); end; return false; end; @@ -2590,30 +2610,31 @@ room { device = _'fna-100-10mbs_1'; dsc = function(s) if s.device then - return '{' .. translate_now(computer_locale, 'slot') .. ': ' .. s.device.name .. '}^'; + return '{' .. translate_now("parts_locale", 'slot') .. ': ' .. s.device.name .. '}^'; else - return '{' .. translate_now(computer_locale, 'slot') .. ': ' .. translate_now(computer_locale, 'component_not_set') .. '}^'; + return '{' .. translate_now("parts_locale", 'slot') .. ': ' .. translate_now("parts_locale", 'component_not_set') .. '}^'; end; end; act = function(s) if s.device then + local msg = std.call(_(s.device), 'tak'); take(s.device); s.device = false; pc_status = ''; - return translate_now(computer_locale, 'device_taken'); + return msg; end; end; used = function(s, o) local motherboard = lookup('#motherboard', _'system_unit'); if o.part and (o.ptype == 'video' or o.ptype == 'network' or o.ptype == 'keyboard') and motherboard.device then if s.device then - return translate_now(computer_locale, 'device_needs_removal'); + return translate_now("parts_locale", 'device_needs_removal'); end; remove(o, pl); s.device = o; pc_status = ''; - return translate_now(computer_locale, 'device_installed'); + return translate_now("parts_locale", 'device_installed'); end; return false; end; @@ -2623,30 +2644,31 @@ room { device = false; dsc = function(s) if s.device then - return '{' .. translate_now(computer_locale, 'slot') .. ': ' .. s.device.name .. '}^'; + return '{' .. translate_now("parts_locale", 'slot') .. ': ' .. s.device.name .. '}^'; else - return '{' .. translate_now(computer_locale, 'slot') .. ': ' .. translate_now(computer_locale, 'component_not_set') .. '}^'; + return '{' .. translate_now("parts_locale", 'slot') .. ': ' .. translate_now("parts_locale", 'component_not_set') .. '}^'; end; end; act = function(s) if s.device then + local msg = std.call(_(s.device), 'tak'); take(s.device); s.device = false; pc_status = ''; - return translate_now(computer_locale, 'device_taken'); + return msg; end; end; used = function(s, o) local motherboard = lookup('#motherboard', _'system_unit'); if o.part and (o.ptype == 'video' or o.ptype == 'network' or o.ptype == 'keyboard') and motherboard.device then if s.device then - return translate_now(computer_locale, 'device_needs_removal'); + return translate_now("parts_locale", 'device_needs_removal'); end; remove(o, pl); s.device = o; pc_status = ''; - return translate_now(computer_locale, 'device_installed'); + return translate_now("parts_locale", 'device_installed'); end; return false; end; @@ -2656,7 +2678,7 @@ room { room { light = false; nam = 'tower_level_3_room_2'; - disp = translate(tower_locale, 'tower_level_3_room_2_disp'); + disp = translate("tower_locale", 'tower_level_3_room_2_disp'); theme = 'tower'; pic = function(s) if power_on then @@ -2669,40 +2691,40 @@ room { end; decor = function(s) if s.light then - return translate_now(tower_locale, 'tower_level_3_room_2_decor_lit'); + return translate_now("tower_locale", 'tower_level_3_room_2_decor_lit'); else - return translate_now(tower_locale, 'tower_level_3_room_2_decor_dark'); + return translate_now("tower_locale", 'tower_level_3_room_2_decor_dark'); end; end; way = { - path {translate(tower_locale, 'transition_upstairs'), 'tower_level_4_room_2'}; - path {'level_3_main_room', translate(tower_locale, 'transition_study'), 'tower_level_3'}:disable(); - path {'level_3_room_2_down', translate(tower_locale, 'transition_downstairs'), 'tower_level_2_room_2'}:disable(); + path {translate("tower_locale", 'transition_upstairs'), 'tower_level_4_room_2'}; + path {'level_3_main_room', translate("tower_locale", 'transition_study'), 'tower_level_3'}:disable(); + path {'level_3_room_2_down', translate("tower_locale", 'transition_downstairs'), 'tower_level_2_room_2'}:disable(); }; }:with { obj { nam = '#ladder'; - act = translate(tower_locale, 'tower_level_3_room_2_ladder_up'); + act = translate("tower_locale", 'tower_level_3_room_2_ladder_up'); }; obj { nam = '#ladder_down'; - act = translate(tower_locale, 'tower_level_3_room_2_ladder_down'); + act = translate("tower_locale", 'tower_level_3_room_2_ladder_down'); }; obj { nam = '#floor'; - act = translate(tower_locale, 'tower_level_3_room_2_floor'); + act = translate("tower_locale", 'tower_level_3_room_2_floor'); }; obj { nam = '#walls'; - act = translate(tower_locale, 'tower_level_3_room_2_walls'); + act = translate("tower_locale", 'tower_level_3_room_2_walls'); }; obj { nam = '#ceiling'; act = function(s) if power_on then - return translate_now(tower_locale, 'tower_level_3_room_2_ceiling_power'); + return translate_now("tower_locale", 'tower_level_3_room_2_ceiling_power'); else - return translate_now(tower_locale, 'tower_level_3_room_2_ceiling'); + return translate_now("tower_locale", 'tower_level_3_room_2_ceiling'); end; end; }; @@ -2716,21 +2738,21 @@ room { _'#shelves':enable(); _'level_3_room_2_down':enable() s:disable(); - return translate_now(tower_locale, 'tower_level_3_room_2_darkness_used_potion'); + return translate_now("tower_locale", 'potion_light_inv_used'); elseif o^'candle' then - return translate_now(tower_locale, 'tower_level_3_room_2_darkness_used_candle'); + return translate_now("tower_locale", 'tower_level_3_room_2_darkness_used_candle'); end; return false; end; - act = translate(tower_locale, 'tower_level_3_room_2_darkness'); + act = translate("tower_locale", 'tower_level_3_room_2_darkness'); }; obj { nam = '#door'; dsc = function(s) if _ 'level_3_main_room':disabled() then - return translate_now(tower_locale, 'tower_level_3_room_2_door_dsc_closed'); + return translate_now("tower_locale", 'tower_level_3_room_2_door_dsc_closed'); else - return translate_now(tower_locale, 'tower_level_3_room_2_door_dsc_opened'); + return translate_now("tower_locale", 'tower_level_3_room_2_door_dsc_opened'); end; end; act = function(s) @@ -2738,9 +2760,9 @@ room { _ 'level_3_main_room':enable(); _('level_3_next_room', 'tower_level_3'):enable(); _('level_3_room_2_door', 'tower_level_3'):enable(); - return translate_now(tower_locale, 'tower_level_3_room_2_door_act_open'); + return translate_now("tower_locale", 'tower_level_3_room_2_door_act_open'); else - return translate_now(tower_locale, 'tower_level_3_room_2_door_act_opened'); + return translate_now("tower_locale", 'tower_level_3_room_2_door_act_opened'); end; end; }:disable(); @@ -2749,15 +2771,15 @@ room { nam = '#shelves'; act = function(s) if not here().light then - return translate_now(tower_locale, 'tower_level_3_room_2_darkness'); + return translate_now("tower_locale", 'tower_level_3_room_2_darkness'); elseif s.state == 0 then s.state = 1; take('tool_box'); take('emerald'); _'part_box':enable(); - return translate_now(tower_locale, 'tower_level_3_room_2_shelves_act_first'); + return translate_now("tower_locale", 'tower_level_3_room_2_shelves_act_first'); else - return translate_now(tower_locale, 'tower_level_3_room_2_shelves_act_second'); + return translate_now("tower_locale", 'tower_level_3_room_2_shelves_act_second'); end; end; }; @@ -2774,53 +2796,54 @@ room { return 'images/tower_level_2_room_2_dark.png'; end; end; - disp = translate(tower_locale, 'tower_level_2_room_2_disp'); + disp = translate("tower_locale", 'tower_level_2_room_2_disp'); onenter = function(s) if have('protection_suit', pl) then put('protection_suit', 'tower_level_2_airlock_cabinet'); remove('protection_suit', pl); - return translate_now(tower_locale, 'tower_level_2_room_2_onenter'); + return translate_now("tower_locale", 'tower_level_2_remove_suit'); end; end; decor = function(s) + p(translate_now("tower_locale", 'tower_level_2_room_2_decor')); if power_on then - return translate_now(tower_locale, 'tower_level_2_room_2_decor_power'); + p(translate_now("tower_locale", 'tower_level_2_room_2_decor_power')); else - return translate_now(tower_locale, 'tower_level_2_room_2_decor_nopower'); + p(translate_now("tower_locale", 'tower_level_2_room_2_decor_nopower')); end; end; way = { - path {translate(tower_locale, 'transition_upstairs'), 'tower_level_3_room_2'}; - path {translate(tower_locale, 'transition_airlock'), 'tower_level_2_airlock'}; - path {'level_2_main_room', translate(tower_locale, 'transition_lab'), 'tower_level_2'}:disable(); - path {translate(tower_locale, 'transition_downstairs'), 'tower_level_1_room_2'}; + path {translate("tower_locale", 'transition_upstairs'), 'tower_level_3_room_2'}; + path {translate("tower_locale", 'transition_airlock'), 'tower_level_2_airlock'}; + path {'level_2_main_room', translate("tower_locale", 'transition_lab'), 'tower_level_2'}:disable(); + path {translate("tower_locale", 'transition_downstairs'), 'tower_level_1_room_2'}; } }:with { 'tower_walls'; obj { nam = '#floor'; - act = translate(tower_locale, 'tower_level_2_room_2_floor'); + act = translate("tower_locale", 'tower_level_2_room_2_floor'); }; obj { nam = '#ceiling'; - act = translate(tower_locale, 'tower_level_2_room_2_ceiling'); + act = translate("tower_locale", 'tower_level_2_room_2_ceiling'); }; obj { nam = '#lamps'; - act = translate(tower_locale, 'tower_level_2_room_2_lamps'); + act = translate("tower_locale", 'tower_level_2_room_2_lamps'); }; obj { nam = '#emergency_lamps'; - act = translate(tower_locale, 'tower_level_2_room_2_emergency_lamps'); + act = translate("tower_locale", 'tower_level_2_room_2_emergency_lamps'); }; obj { nam = '#reactor_door'; - dsc = translate(tower_locale, 'tower_level_2_room_2_reactor_door_dsc'); - act = translate(tower_locale, 'tower_level_2_room_2_reactor_door_act'); + dsc = translate("tower_locale", 'tower_level_2_room_2_reactor_door_dsc'); + act = translate("tower_locale", 'tower_level_2_room_2_reactor_door_act'); }; obj { nam = '#control_panel'; - dsc = translate(tower_locale, 'tower_level_2_room_2_control_panel_dsc'); + dsc = translate("tower_locale", 'tower_level_2_room_2_control_panel_dsc'); act = function(s) walkin('reactor_control_panel'); end; @@ -2829,18 +2852,18 @@ room { nam = '#next_door'; dsc = function(s) if _'level_2_main_room':disabled() then - return translate_now(tower_locale, 'tower_level_2_room_2_next_door_dsc_closed'); + return translate_now("tower_locale", 'tower_level_2_room_2_next_door_dsc_closed'); else - return translate_now(tower_locale, 'tower_level_2_room_2_next_door_dsc_open'); + return translate_now("tower_locale", 'tower_level_2_room_2_next_door_dsc_open'); end; end; act = function(s) if _'level_2_main_room':disabled() then _'level_2_main_room':enable(); _'level_2_next_room':enable(); - return translate_now(tower_locale, 'tower_level_2_room_2_next_door_act_closed'); + return translate_now("tower_locale", 'tower_level_2_room_2_next_door_act_closed'); else - return translate_now(tower_locale, 'tower_level_2_room_2_next_door_act_open'); + return translate_now("tower_locale", 'tower_level_2_room_2_next_door_act_open'); end; end; } @@ -2849,7 +2872,7 @@ room { dlg { theme = 'tower'; nam = 'reactor_control_panel'; - disp = translate(tower_locale, 'reactor_control_panel_disp'); + disp = translate("tower_locale", 'reactor_control_panel_disp'); pic = function(s) if power_on then return 'images/tower_level_2_room_2_light.png'; @@ -2857,37 +2880,37 @@ dlg { return 'images/tower_level_2_room_2_dark.png'; end; end; - enter = translate(tower_locale, 'reactor_control_panel_enter'); + enter = translate("tower_locale", 'reactor_control_panel_enter'); phr = { - {always=true, translate(tower_locale, 'reactor_control_panel_diagnostic'), function(s) - pn(translate_now(tower_locale, 'reactor_control_panel_diagnostic_resp_1')); - pn(translate_now(tower_locale, 'reactor_control_panel_diagnostic_resp_2')); - pn(translate_now(tower_locale, 'reactor_control_panel_diagnostic_resp_3')); - pn(translate_now(tower_locale, 'reactor_control_panel_diagnostic_resp_4')); + {always=true, translate("tower_locale", 'reactor_control_panel_diagnostic'), function(s) + pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_1')); + pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_2')); + pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_3')); + pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_4')); if rods_raised then - pn(translate_now(tower_locale, 'reactor_control_panel_diagnostic_resp_performance') .. ' 0%'); - pn(translate_now(tower_locale, 'reactor_control_panel_diagnostic_resp_rods_up')); + pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_performance') .. ' 0%'); + pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_rods_up')); elseif rods_enriched then - pn(translate_now(tower_locale, 'reactor_control_panel_diagnostic_resp_performance') .. ' 101%'); - pn(translate_now(tower_locale, 'reactor_control_panel_diagnostic_resp_rods_ok')); + pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_performance') .. ' 101%'); + pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_rods_ok')); else - pn(translate_now(tower_locale, 'reactor_control_panel_diagnostic_resp_performance') .. ' 1%'); - pn(translate_now(tower_locale, 'reactor_control_panel_diagnostic_resp_rods_bad')); + pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_performance') .. ' 1%'); + pn(translate_now("tower_locale", 'reactor_control_panel_diagnostic_resp_rods_bad')); end; end;}; - {cond=function(s) return not rods_raised; end; always=true; translate(tower_locale, 'reactor_control_panel_raise_rods'), function(s) + {cond=function(s) return not rods_raised; end; always=true; translate("tower_locale", 'reactor_control_panel_raise_rods'), function(s) rods_raised = true; power_on = false; - return translate_now(tower_locale, 'reactor_control_panel_rods_response') + return translate_now("tower_locale", 'reactor_control_panel_rods_response') end;}; - {cond=function(s) return rods_raised; end; always=true; translate(tower_locale, 'reactor_control_panel_lower_rods'), function(s) + {cond=function(s) return rods_raised; end; always=true; translate("tower_locale", 'reactor_control_panel_lower_rods'), function(s) rods_raised = false; - pr(translate_now(tower_locale, 'reactor_control_panel_rods_response')); + pr(translate_now("tower_locale", 'reactor_control_panel_rods_response')); if rods_enriched then power_on = true; end; end;}; - {translate(tower_locale, 'reactor_control_panel_leave'), function(s) + {translate("tower_locale", 'reactor_control_panel_leave'), function(s) walkout(); end;}; }; @@ -2903,34 +2926,34 @@ room { return 'images/tower_level_2_room_2_dark.png'; end; end; - disp = translate(tower_locale, 'tower_level_2_airlock_disp'); - decor = translate(tower_locale, 'tower_level_2_airlock_decor'); + disp = translate("tower_locale", 'tower_level_2_airlock_disp'); + decor = translate("tower_locale", 'tower_level_2_airlock_decor'); way = { - path {translate(tower_locale, 'transition_control'), 'tower_level_2_room_2'}; - path {translate(tower_locale, 'transition_reactor'), 'tower_level_2_reactor'}; + path {translate("tower_locale", 'transition_control'), 'tower_level_2_room_2'}; + path {translate("tower_locale", 'transition_reactor'), 'tower_level_2_reactor'}; }; }: with { obj { nam = '#walls'; - act = translate(tower_locale, 'tower_level_2_airlock_walls'); + act = translate("tower_locale", 'tower_level_2_airlock_walls'); }; obj { nam = '#ceiling'; - act = translate(tower_locale, 'tower_level_2_airlock_ceiling'); + act = translate("tower_locale", 'tower_level_2_airlock_ceiling'); }; obj { nam = '#lamp'; - act = translate(tower_locale, 'tower_level_2_airlock_lamp'); + act = translate("tower_locale", 'tower_level_2_airlock_lamp'); }; obj { nam = 'tower_level_2_airlock_cabinet'; - dsc = translate(tower_locale, 'tower_level_2_airlock_locker_dsc'); - act = translate(tower_locale, 'tower_level_2_airlock_locker_act'); + dsc = translate("tower_locale", 'tower_level_2_airlock_locker_dsc'); + act = translate("tower_locale", 'tower_level_2_airlock_locker_act'); used = function(s, o) if o^'protection_suit' then put('protection_suit', 'tower_level_2_airlock_cabinet'); remove('protection_suit', pl); - return translate_now(tower_locale, 'tower_level_2_airlock_locker_used'); + return translate_now("tower_locale", 'tower_level_2_remove_suit'); end; return false; @@ -2938,16 +2961,16 @@ room { }:with { obj { nam = 'protection_suit'; - disp = translate(tower_locale, 'protection_suit_disp'); - dsc = translate(tower_locale, 'protection_suit_dsc'); - tak = translate(tower_locale, 'protection_suit_tak'); + disp = translate("tower_locale", 'protection_suit_disp'); + dsc = translate("tower_locale", 'protection_suit_dsc'); + tak = translate("tower_locale", 'protection_suit_tak'); inv = function(s) if here()^'tower_level_2_reactor' then - return translate_now(tower_locale, 'protection_suit_inv_not_here'); + return translate_now("tower_locale", 'protection_suit_inv_not_here'); else put('protection_suit', here()); remove('protection_suit', pl) - return translate_now(tower_locale, 'protection_suit_inv_remove'); + return translate_now("tower_locale", 'protection_suit_inv_remove'); end; end; }; @@ -2973,51 +2996,51 @@ room { end; nofollow = function(s) if here():from()^'tower_level_2_airlock' then - return translate_now(tower_locale, 'tower_level_2_reactor_nofollow'); + return translate_now("solarscale_locale", 'follow_refuse') .. ' ' ..translate_now("solarscale_locale", 'follow_refuse_reactor'); else return true; end; end; - disp = translate(tower_locale, 'tower_level_2_reactor_disp'); + disp = translate("tower_locale", 'tower_level_2_reactor_disp'); onenter = function(s) if not have('protection_suit', pl) then if solarscale_with_me then - p(translate_now(tower_locale, 'tower_level_2_reactor_enter_solarscale')); + p(translate_now("tower_locale", 'tower_level_2_reactor_enter_solarscale')); return false; else if not irradiated then sounds['irradiated']:play(); end; irradiated = true; - return translate_now(tower_locale, 'tower_level_2_reactor_enter_alone'); + return translate_now("tower_locale", 'tower_level_2_reactor_enter_alone'); end; end; end; way = { - path {translate(tower_locale, 'transition_airlock'), 'tower_level_2_airlock'}; + path {translate("tower_locale", 'transition_airlock'), 'tower_level_2_airlock'}; }; }: with { obj { nam = '#reactor_rods'; dsc = function(s) if rods_raised then - return translate_now(tower_locale, 'tower_level_2_reactor_rods_dsc_raised'); + return translate_now("tower_locale", 'tower_level_2_reactor_rods_dsc_raised'); else - return translate_now(tower_locale, 'tower_level_2_reactor_rods_dsc_lowered'); + return translate_now("tower_locale", 'tower_level_2_reactor_rods_dsc_lowered'); end; end; act = function(s) if rods_raised then - return translate_now(tower_locale, 'tower_level_2_reactor_rods_act_raised'); + return translate_now("tower_locale", 'tower_level_2_reactor_rods_act_raised'); else - return translate_now(tower_locale, 'tower_level_2_reactor_rods_act_lowered'); + return translate_now("tower_locale", 'tower_level_2_reactor_rods_act_lowered'); end; end; used = function(s, o) if o^'potion_enrichment' and rods_raised then remove('potion_enrichment', pl); rods_enriched = true; - return translate_now(tower_locale, 'tower_level_2_reactor_rods_used'); + return translate_now("tower_locale", 'tower_level_2_reactor_rods_used'); else return false; end; @@ -3028,24 +3051,24 @@ room { room { theme = 'tower'; nam = 'tower_level_1_room_2'; - disp = translate(tower_locale, 'tower_level_1_room_2_disp'); + disp = translate("tower_locale", 'tower_level_1_room_2_disp'); pic = 'images/tower_level_1_room_2.png'; - decor = translate(tower_locale, 'tower_level_1_room_2_decor'); + decor = translate("tower_locale", 'tower_level_1_room_2_decor'); way = { - path {translate(tower_locale, 'transition_upstairs'), 'tower_level_2_room_2'}; - path {'level_1_main_room', translate(tower_locale, 'transition_dining_room'), 'tower_level_1'}:disable(); + path {translate("tower_locale", 'transition_upstairs'), 'tower_level_2_room_2'}; + path {'level_1_main_room', translate("tower_locale", 'transition_dining_room'), 'tower_level_1'}:disable(); }; }: with { obj { nam = '#kitchen_sink'; - act = translate(tower_locale, 'tower_level_1_room_2_kitchen_sink'); + act = translate("tower_locale", 'tower_level_1_room_2_kitchen_sink'); used = function(s, o) if o ^ 'kettle' then if o.state == 0 then o.state = 1; - return translate_now(tower_locale, 'tower_level_1_room_2_kitchen_sink_used_water'); + return translate_now("tower_locale", 'tower_level_1_room_2_kitchen_sink_used_water'); else - return translate_now(tower_locale, 'tower_level_1_room_2_kitchen_sink_used_full'); + return translate_now("tower_locale", 'tower_level_1_room_2_kitchen_sink_used_full'); end; else return false; @@ -3054,12 +3077,12 @@ room { }; obj { nam = '#tabletop'; - act = translate(tower_locale, 'tower_level_1_room_2_tabletop'); + act = translate("tower_locale", 'tower_level_1_room_2_tabletop'); used = function(s, o) if o^'cups' then remove('cups', me()); put('cups', here()); - return translate_now(tower_locale, 'tower_level_1_room_2_put_cups'); + return translate_now("tower_locale", 'tower_level_1_room_2_put_cups'); end; return false; @@ -3072,16 +3095,16 @@ room { if solarscale_with_me and s.state == 0 then if not _'solarscale_ally'.tea_asked then _'solarscale_ally'.tea_found = true; - return translate_now(tower_locale, 'tower_level_1_room_2_cabinets1_act_tea_ask'); + return translate_now("tower_locale", 'tower_level_1_room_2_cabinets1_act_tea_ask'); else s.state = 1; take('teabox'); take('teapot'); - return translate_now(tower_locale, 'tower_level_1_room_2_cabinets1_act_tea_and_teapot'); + return translate_now("tower_locale", 'tower_level_1_room_2_cabinets1_act_tea_and_teapot'); end; end; - return translate_now(tower_locale, 'tower_level_1_room_2_cabinets_act_empty'); + return translate_now("tower_locale", 'tower_level_1_room_2_cabinets_act_empty'); end; }; obj { @@ -3092,38 +3115,38 @@ room { if s.state == 0 then s.state = 1; take('password_note'); - return translate_now(tower_locale, 'tower_level_1_room_2_cabinets2_act_note'); + return translate_now("tower_locale", 'tower_level_1_room_2_cabinets2_act_note'); elseif _'solarscale_ally'.tea_asked then if s.state == 1 then s.state = 2; take('cups'); - return translate_now(tower_locale, 'tower_level_1_room_2_cabinets2_act_cups'); + return translate_now("tower_locale", 'tower_level_1_room_2_cabinets2_act_cups'); end; end; end; - return translate_now(tower_locale, 'tower_level_1_room_2_cabinets_act_empty'); + return translate_now("tower_locale", 'tower_level_1_room_2_cabinets_act_empty'); end; }; obj { nam = '#fridge'; - act = translate(tower_locale, 'tower_level_1_room_2_fridge'); + act = translate("tower_locale", 'tower_level_1_room_2_fridge'); }; obj { nam = '#stove'; - act = translate(tower_locale, 'tower_level_1_room_2_stove_act'); + act = translate("tower_locale", 'tower_level_1_room_2_stove_act'); used = function(s, o) if o ^ 'kettle' then if power_on then if o.state == 0 then - return translate_now(tower_locale, 'kettle_boil_empty'); + return translate_now("tower_locale", 'kettle_boil_empty'); elseif o.state == 2 then - return translate_now(tower_locale, 'tower_level_1_room_2_stove_used_hot'); + return translate_now("tower_locale", 'tower_level_1_room_2_stove_used_hot'); else o.state = 2; - return translate_now(tower_locale, 'tower_level_1_room_2_stove_used_teapot'); + return translate_now("tower_locale", 'tower_level_1_room_2_stove_used_teapot'); end; else - return translate_now(tower_locale, 'tower_level_1_room_2_stove_used_power'); + return translate_now("tower_locale", 'tower_level_1_room_2_stove_used_power'); end; else return false; @@ -3132,22 +3155,22 @@ room { }; obj { nam = 'silver_fork'; - disp = translate(tower_locale, 'silver_fork_disp'); - disp2 = translate(tower_locale, 'silver_fork_disp2'); - disp3 = translate(tower_locale, 'silver_fork_disp3'); - inv = translate(tower_locale, 'silver_fork_inv'); - dsc = translate(tower_locale, 'silver_fork_dsc'); - tak = translate(tower_locale, 'silver_fork_tak'); + disp = translate("tower_locale", 'silver_fork_disp'); + disp2 = translate("tower_locale", 'silver_fork_disp2'); + disp3 = translate("tower_locale", 'silver_fork_disp3'); + inv = translate("tower_locale", 'silver_fork_inv'); + dsc = translate("tower_locale", 'silver_fork_dsc'); + tak = translate("tower_locale", 'silver_fork_tak'); }; obj { state = 0; nam = '#door'; - dsc = translate(tower_locale, 'tower_level_1_room_2_door_dsc'); + dsc = translate("tower_locale", 'tower_level_1_room_2_door_dsc'); act = function(s) if s.state == 0 then - return translate_now(tower_locale, 'tower_level_1_room_2_door_act_locked'); + return translate_now("tower_locale", 'tower_level_1_room_2_door_act_locked'); else - return translate_now(tower_locale, 'tower_level_1_room_2_door_act_open'); + return translate_now("tower_locale", 'tower_level_1_room_2_door_act_open'); end; end; used = function(s, o) @@ -3156,7 +3179,7 @@ room { remove('kitchen_key', pl); _'level_1_main_room':enable(); _'level_1_next_room':enable(); - return translate_now(tower_locale, 'tower_level_1_room_2_door_used'); + return translate_now("tower_locale", 'tower_level_1_room_2_door_used'); else return false; end; @@ -3167,18 +3190,18 @@ room { nam = '#hook'; dsc = function(s) if s.key_taken then - return translate_now(tower_locale, 'tower_level_1_room_2_hook_dsc_empty'); + return translate_now("tower_locale", 'tower_level_1_room_2_hook_dsc_empty'); else - return translate_now(tower_locale, 'tower_level_1_room_2_hook_dsc_key'); + return translate_now("tower_locale", 'tower_level_1_room_2_hook_dsc_key'); end; end; act = function(s) if s.key_taken then - return translate_now(tower_locale, 'tower_level_1_room_2_hook_act_empty'); + return translate_now("tower_locale", 'tower_level_1_room_2_hook_act_empty'); else take('kitchen_key'); s.key_taken = true; - return translate_now(tower_locale, 'tower_level_1_room_2_hook_act_key'); + return translate_now("tower_locale", 'tower_level_1_room_2_hook_act_key'); end; end; }; @@ -3187,17 +3210,17 @@ room { obj { nam = 'kitchen_key'; - disp = translate(tower_locale, 'kitchen_key_disp'); - disp2 = translate(tower_locale, 'kitchen_key_disp2'); - disp3 = translate(tower_locale, 'kitchen_key_disp3'); - inv = translate(tower_locale, 'kitchen_key_inv'); + disp = translate("tower_locale", 'kitchen_key_disp'); + disp2 = translate("tower_locale", 'kitchen_key_disp2'); + disp3 = translate("tower_locale", 'kitchen_key_disp3'); + inv = translate("tower_locale", 'kitchen_key_inv'); }; obj { nam = 'part_box'; - disp = translate(tower_locale, 'part_box_disp'); - disp2 = translate(tower_locale, 'part_box_disp2'); - disp3 = translate(tower_locale, 'part_box_disp3'); + disp = translate("tower_locale", 'part_box_disp'); + disp2 = translate("tower_locale", 'part_box_disp2'); + disp3 = translate("tower_locale", 'part_box_disp3'); inv = function(s) walkin('part_box_inside'); end; @@ -3205,13 +3228,13 @@ obj { if o.part then remove(o, pl); put(o, 'part_box_inside'); - return translate_now(tower_locale, 'part_box_used'); + return translate_now("tower_locale", 'part_box_used'); end; return false; end; - dsc = translate(tower_locale, 'part_box_dsc'); - tak = translate(tower_locale, 'part_box_tak'); + dsc = translate("tower_locale", 'part_box_dsc'); + tak = translate("tower_locale", 'part_box_tak'); }:disable(); room { @@ -3225,10 +3248,10 @@ room { return end; end; - disp = translate(tower_locale, 'part_box_disp'); - dsc = translate(tower_locale, 'part_box_inside_dsc'); + disp = translate("tower_locale", 'part_box_disp'); + dsc = translate("tower_locale", 'part_box_inside_dsc'); way = { - path {translate(common_locale, 'back'), function(s) return here():from() end;}; + path {translate("common_locale", 'back'), function(s) return here():from() end;}; } }:with { 'cax-rkt-i2sb', @@ -3281,10 +3304,10 @@ room { end; end; nofollow = true; - disp = translate(tower_locale, 'terminal_manual_disp'); - dsc = translate(tower_locale, 'terminal_manual_dsc'); + disp = translate("tower_locale", 'terminal_manual_disp'); + dsc = translate("tower_locale", 'terminal_manual_dsc'); way = { - path {translate(common_locale, 'back'), 'tower_level_4_room_2'}; + path {translate("common_locale", 'back'), 'tower_level_4_room_2'}; } } @@ -3292,7 +3315,7 @@ room { nam = 'service_manual'; theme = 'tower'; nofollow = true; - disp = translate(tower_locale, 'service_manual_disp'); + disp = translate("tower_locale", 'service_manual_disp'); pic = function(s) if power_on then return 'images/tower_level_4_room_2_light.png'; @@ -3300,9 +3323,9 @@ room { return 'images/tower_level_4_room_2_dark.png'; end; end; - dsc = translate(tower_locale, 'service_manual_dsc'); + dsc = translate("tower_locale", 'service_manual_dsc'); way = { - path {translate(common_locale, 'back'), 'terminal_manual'}; + path {translate("common_locale", 'back'), 'terminal_manual'}; } } @@ -3317,10 +3340,10 @@ room { return 'images/tower_level_4_room_2_dark.png'; end; end; - disp = translate(tower_locale, 'troubleshooting_manual_disp'); - dsc = translate(tower_locale, 'troubleshooting_manual_dsc'); + disp = translate("tower_locale", 'troubleshooting_manual_disp'); + dsc = translate("tower_locale", 'troubleshooting_manual_dsc'); way = { - path {translate(common_locale, 'back'), 'terminal_manual'}; + path {translate("common_locale", 'back'), 'terminal_manual'}; } } @@ -3451,92 +3474,92 @@ room { end; if s.ticks == 8 then - d:insert_line(translate_now(terminal_locale, 'motherboard') .. ' : ' .. motherboard.name); + d:insert_line(translate_now("terminal_locale", 'motherboard') .. ' : ' .. motherboard.name); end; if s.ticks == 16 then - d:insert_line(translate_now(terminal_locale, 'cpu') .. ' : ' .. cpu.name .. ' @ ' .. cpu.speed .. '.0' .. translate_now(terminal_locale, 'mhz')); + d:insert_line(translate_now("terminal_locale", 'cpu') .. ' : ' .. cpu.name .. ' @ ' .. cpu.speed .. '.0' .. translate_now("terminal_locale", 'mhz')); end; if s.ticks == 24 then - d:insert_line(translate_now(terminal_locale, 'ram') .. ' : '.. ram.name); + d:insert_line(translate_now("terminal_locale", 'ram') .. ' : '.. ram.name); end; if s.ticks == 32 then - d:insert_line(tostring(s.ram) .. translate_now(terminal_locale, 'kilobytes')) + d:insert_line(tostring(s.ram) .. translate_now("terminal_locale", 'kilobytes')) end; if s.ticks == 33 then - d:replace_line(tostring(s.ram) .. translate_now(terminal_locale, 'kilobytes')) + d:replace_line(tostring(s.ram) .. translate_now("terminal_locale", 'kilobytes')) end; if s.ticks == 34 then - d:replace_line(tostring(s.ram) .. translate_now(terminal_locale, 'kilobytes')); + d:replace_line(tostring(s.ram) .. translate_now("terminal_locale", 'kilobytes')); end; if s.ticks == 40 then - d:replace_line(tostring(s.ram) .. translate_now(terminal_locale, 'kilobytes') .. ' OK'); + d:replace_line(tostring(s.ram) .. translate_now("terminal_locale", 'kilobytes') .. ' OK'); d:insert_line(' '); end; if s.ticks == 48 then - d:insert_line(translate_now(terminal_locale, 'keyboard') .. ' : '); + d:insert_line(translate_now("terminal_locale", 'keyboard') .. ' : '); end; if s.ticks == 56 then - d:replace_line(translate_now(terminal_locale, 'keyboard') .. ' : OK') + d:replace_line(translate_now("terminal_locale", 'keyboard') .. ' : OK') end; if s.ticks == 64 then - d:insert_line(translate_now(terminal_locale, 'disk') .. ' : '); + d:insert_line(translate_now("terminal_locale", 'disk') .. ' : '); end; if s.ticks == 72 then - d:replace_line(translate_now(terminal_locale, 'disk') .. ' : ' .. translate_now(terminal_locale, 'missing')); + d:replace_line(translate_now("terminal_locale", 'disk') .. ' : ' .. translate_now("terminal_locale", 'missing')); end; if s.ticks == 80 then - d:insert_line(translate_now(terminal_locale, 'network') .. ' : '); + d:insert_line(translate_now("terminal_locale", 'network') .. ' : '); end; if s.ticks == 88 then if s.network then - d:replace_line(translate_now(terminal_locale, 'network') .. ' : OK'); + d:replace_line(translate_now("terminal_locale", 'network') .. ' : OK'); else - d:replace_line(translate_now(terminal_locale, 'network') .. ' : ' .. translate_now(terminal_locale, 'missing')); + d:replace_line(translate_now("terminal_locale", 'network') .. ' : ' .. translate_now("terminal_locale", 'missing')); end; d:insert_line(' '); end; if s.ticks == 104 then - d:insert_line(translate_now(terminal_locale, 'boot_from')); + d:insert_line(translate_now("terminal_locale", 'boot_from')); end; if s.network then if s.ticks == 112 then - d:replace_line(translate_now(terminal_locale, 'boot_from') .. ' ' .. translate_now(terminal_locale, 'network_2')); + d:replace_line(translate_now("terminal_locale", 'boot_from') .. ' ' .. translate_now("terminal_locale", 'network_2')); end; if s.ticks == 120 then - d:replace_line(translate_now(terminal_locale, 'boot_from') .. ' ' .. translate_now(terminal_locale, 'network_2') .. '...'); + d:replace_line(translate_now("terminal_locale", 'boot_from') .. ' ' .. translate_now("terminal_locale", 'network_2') .. '...'); end; else if s.ticks == 112 then - d:replace_line(translate_now(terminal_locale, 'boot_from') .. ' ' .. translate_now(terminal_locale, 'no_device')); + d:replace_line(translate_now("terminal_locale", 'boot_from') .. ' ' .. translate_now("terminal_locale", 'no_device')); end; end; elseif s.ticks == 128 then d:drop_all(); - d:insert_line(translate_now(terminal_locale, 'tower_os_line_1')); + d:insert_line(translate_now("terminal_locale", 'tower_os_line_1')); d:insert_line(' '); else if s.ticks == 136 then - d:insert_line(translate_now(terminal_locale, 'tower_os_line_2')); + d:insert_line(translate_now("terminal_locale", 'tower_os_line_2')); d:insert_line(' '); end; if s.ticks == 144 then - d:insert_line(translate_now(terminal_locale, 'tower_os_line_3')); + d:insert_line(translate_now("terminal_locale", 'tower_os_line_3')); d:insert_line(' '); end; end; @@ -3645,79 +3668,79 @@ room { end; if s.ticks == 8 then - d:insert_line(translate_now(terminal_locale, 'motherboard') .. ' : ' .. motherboard.name); + d:insert_line(translate_now("terminal_locale", 'motherboard') .. ' : ' .. motherboard.name); end; if s.ticks == 16 then - d:insert_line(translate_now(terminal_locale, 'cpu') .. ' : ' .. cpu.name .. ' @ ' .. cpu.speed .. '.0' .. translate_now(terminal_locale, 'mhz')); + d:insert_line(translate_now("terminal_locale", 'cpu') .. ' : ' .. cpu.name .. ' @ ' .. cpu.speed .. '.0' .. translate_now("terminal_locale", 'mhz')); end; if s.ticks == 24 then - d:insert_line(translate_now(terminal_locale, 'ram') .. ' : '.. ram.name); + d:insert_line(translate_now("terminal_locale", 'ram') .. ' : '.. ram.name); end; if s.ticks == 32 then - d:insert_line(tostring(s.ram) .. translate_now(terminal_locale, 'kilobytes')) + d:insert_line(tostring(s.ram) .. translate_now("terminal_locale", 'kilobytes')) end; if s.ticks == 33 then - d:replace_line(tostring(s.ram) .. translate_now(terminal_locale, 'kilobytes')) + d:replace_line(tostring(s.ram) .. translate_now("terminal_locale", 'kilobytes')) end; if s.ticks == 34 then - d:replace_line(tostring(s.ram) .. translate_now(terminal_locale, 'kilobytes')); + d:replace_line(tostring(s.ram) .. translate_now("terminal_locale", 'kilobytes')); end; if s.ticks == 40 then - d:replace_line(tostring(s.ram) .. translate_now(terminal_locale, 'kilobytes') .. ' OK'); + d:replace_line(tostring(s.ram) .. translate_now("terminal_locale", 'kilobytes') .. ' OK'); d:insert_line(' '); end; if s.ticks == 48 then - d:insert_line(translate_now(terminal_locale, 'keyboard') .. ' : '); + d:insert_line(translate_now("terminal_locale", 'keyboard') .. ' : '); end; if s.ticks == 56 then - d:replace_line(translate_now(terminal_locale, 'keyboard') .. ' : OK') + d:replace_line(translate_now("terminal_locale", 'keyboard') .. ' : OK') end; if s.ticks == 64 then - d:insert_line(translate_now(terminal_locale, 'disk') .. ' : '); + d:insert_line(translate_now("terminal_locale", 'disk') .. ' : '); end; if s.ticks == 72 then - d:replace_line(translate_now(terminal_locale, 'disk') .. ' : ' .. translate_now(terminal_locale, 'missing')); + d:replace_line(translate_now("terminal_locale", 'disk') .. ' : ' .. translate_now("terminal_locale", 'missing')); end; if s.ticks == 80 then - d:insert_line(translate_now(terminal_locale, 'network') .. ' : '); + d:insert_line(translate_now("terminal_locale", 'network') .. ' : '); end; if s.ticks == 88 then if s.network then - d:replace_line(translate_now(terminal_locale, 'network') .. ' : OK'); + d:replace_line(translate_now("terminal_locale", 'network') .. ' : OK'); else - d:replace_line(translate_now(terminal_locale, 'network') .. ' : ' .. translate_now(terminal_locale, 'missing')); + d:replace_line(translate_now("terminal_locale", 'network') .. ' : ' .. translate_now("terminal_locale", 'missing')); end; d:insert_line(' '); end; if s.ticks == 104 then - d:insert_line(translate_now(terminal_locale, 'boot_from')); + d:insert_line(translate_now("terminal_locale", 'boot_from')); end; if s.ticks == 112 then - d:replace_line(translate_now(terminal_locale, 'boot_from') .. ' ' .. translate_now(terminal_locale, 'network_2')); + d:replace_line(translate_now("terminal_locale", 'boot_from') .. ' ' .. translate_now("terminal_locale", 'network_2')); end; if s.ticks == 120 then - d:replace_line(translate_now(terminal_locale, 'boot_from') .. ' ' .. translate_now(terminal_locale, 'network_2') .. '...'); + d:replace_line(translate_now("terminal_locale", 'boot_from') .. ' ' .. translate_now("terminal_locale", 'network_2') .. '...'); end; else -- pr [[No bootable medium found]]; d:drop_all(); - d:insert_line(translate_now(terminal_locale, 'no_bootable_medium_found')); + d:insert_line(translate_now("terminal_locale", 'no_bootable_medium_found')); end; end; } diff --git a/translation.lua b/translation.lua deleted file mode 100644 --- a/translation.lua +++ /dev/null @@ -1,5175 +0,0 @@ -declare { - common_locale = { - quotes = { - en = '“%1”'; - ru = '«%1»'; - }; - back = { - en = "Back"; - ru = "Назад"; - }; - continue = { - en = "Continue"; - ru = "Продолжить"; - }; - }; - link_locale = { - copied = { - en = 'Copied'; - ru = 'Скопировано'; - } - }, - main_locale = { - empty_use_1 = { - en = 'It doesn\'t work this way.'; - ru = 'Это так не работает.'; - }, - empty_use_2 = { - en = 'This doesn\'t seem right.'; - ru = 'Кажется, так не получится.'; - }, - empty_use_3 = { - en = 'I should try something else.'; - ru = 'Стоит попробовать что-то другое.'; - }, - empty_use_4 = { - en = 'This doesn\'t seem to work.'; - ru = 'Кажется, это не сработает.'; - }, - empty_use_5 = { - en = 'This doesn\'t fit here.'; - ru = 'Это здесь не подходит.'; - }, - empty_act = { - en = 'I don\'t know what to do with this.'; - ru = 'Я не знаю, что с этим сделать.'; - }, - empty_inv = { - en = 'This is an item. It exists.'; - ru = 'Это предмет. Он существует.'; - }; - }; - menu_locale = { - system_settings = { - en = "System Settings", - ru = "Системные настройки" - }, - language = { - en = "Language", - ru = "Язык" - }, - auto_option = { - en = "Auto", - ru = "Авто" - }, - graphic_scale = { - en = 'Graphics Scale'; - ru = 'Масштаб графики'; - }, - cursor_scale = { - en = 'Cursor Size'; - ru = 'Размер курсора'; - }, - font_scale = { - en = 'Font Scale'; - ru = 'Масштаб шрифта'; - }, - inventory_scale = { - en = 'Inventory Font Scale'; - ru = 'Масштаб шрифта инвентаря'; - }, - text_width = { - en = 'Text Width'; - ru = 'Ширина текста'; - }; - text_alignment = { - en = 'Text Alignment'; - ru = 'Выравнивание текста'; - }; - text_alignment_left = { - en = 'Left'; - ru = 'По левому краю'; - }; - text_alignment_justify = { - en = 'Justify'; - ru = 'По ширине'; - }; - padding = { - en = 'Padding'; - ru = 'Отступ'; - }; - interval = { - en = 'Line Interval'; - ru = 'Межстрочный интервал'; - }; - normal = { - en = 'Normal'; - ru = 'Обычный'; - }; - extended = { - en = 'Large'; - ru = 'Увеличенный'; - }; - use_text_input = { - en = 'Use Text Input'; - ru = 'Использовать текстовый ввод'; - }; - disable = { - en = 'Disable'; - ru = 'Отключить'; - }; - enable = { - en = 'Enable'; - ru = 'Включить'; - }; - resolution_warning = { - en = 'A Dragon and the Tower requires the screen resolution of at least 640x480. The game will not run properly on a lower resolution. Please ensure that your configuration is correct and your computer supports specified resolution. After that please restart or load the game from the system menu (press esc).'; - ru = 'Игра Дракон и Башня требует разрешение не менее 640х480. Игра не будет работать корректно с более низким разрешением. Пожалуйста, убедитесь, что ваши настройки корректны и ваш компьютер поддерживает данное разрешение, после чего перезапустите или загрузите игру из системного меню (нажмите esc).'; - }; - warning = { - en = 'Warning'; - ru = 'Предупреждение'; - }; - theme_warning = { - en = 'A Dragon and the Tower requires custom game themes to be enabled. It will not work without this option enabled. Please change your settings and restart or load the game.'; - ru = 'Игра Дракон и Башня требует чтобы настройка "собственные темы игр" была включена. Она не будет работать без этой настройки. Пожалуйста, измените настройки и перезапустите или загрузите игру.'; - }; - intro = { - en = [[My footsteps resonate under the arches of the ancient caverns. Irregular shadows dance in glimmering magical light. In my hand I hold a fragment of a map, carefully stored for millennia. Unwrapping the ancient scroll, I closely examine the markings on it: a forest, a mountain range, a road, and a village, marked with a cross. Finally I was able to determine its location. Time to go!^ - My body dissipates in fog and rebuilds in the human form. Quickly I walk to a small door in one of the walls. There is nothing in the room, besides a stone desk and a laptop on it -- an absolutely essential thing in this age, even for a dragon.^ - A good mapping software and a proper query can do wonders -- a couple of minutes later I fly out of my cave in my true form, spreading my wings to the wind.^ - Soon I'll find out what awaits me in this village!]]; - ru = [[Гулким эхом разносятся мои шаги под сводами древних пещер. Неровные тени пляшут в дрожащем магическом свете. В руке я держу фрагмент карты, бережно хранимый с незапамятных времен. Развернув старинный свиток, я внимательно осматриваю нанесенные на него обозначения: лес, горная цепь, дорога и отмеченная крестом деревушка. Наконец-то я смог определить где это. В путь!^ - Мое тело расплывается туманом и собирается в облике человека. Быстрым шагом я направляюсь к небольшой дверце в одной из стен. В комнате нет ничего, кроме каменного стола и стоящего на нем ноутбука -- совершенно необходимой в наше время вещи, даже для дракона.^ - Хорошая картографическая программа и правильно сформулированный запрос творят чудеса -- уже через несколько минут я вылетаю из пещеры в своем истинном обличии, расправив крылья навстречу ветру.^ - Совсем скоро я узнаю, что ждет меня в этой деревне!]]; - }; - credits_author = { - en = 'Author'; - ru = 'Автор игры'; - }; - credits_art = { - en = 'Art'; - ru = 'Графика'; - }; - credits_music = { - en = 'Music'; - ru = 'Музыка'; - }; - credits_sounds = { - en = 'Sounds'; - ru = 'Звуки'; - }; - credits_fonts = { - en = 'Fonts'; - ru = 'Шрифты'; - }; - credits_thanks = { - en = 'Thank you for playing our game!'; - ru = 'Спасибо, что играете в нашу игру!'; - }; - credits_engine = { - en = 'Engine'; - ru = 'Движок'; - }; - credits_engine_author = { - en = 'Peter Kosyh'; - ru = 'Пётр Косых'; - }; - credits_closed_beta = { - en = 'Closed Beta Testing'; - ru = 'Закрытое тестирование'; - }; - }, - terminal_locale = { - no_bootable_medium_found = { - en = 'No bootable medium found'; - ru = 'Загрузочное устройство недоступно'; - }, - motherboard = { - en = 'Motherboard'; - ru = 'Система'; - }, - mhz = { - en = 'MHz'; - ru = 'МГц'; - }, - cpu = { - en = 'CPU'; - ru = 'ЦПУ'; - }, - ram = { - en = 'RAM'; - ru = 'Память'; - }, - kilobytes = { - en = 'KB'; - ru = 'КБ'; - }, - keyboard = { - en = 'Keyboard'; - ru = 'Клавиатура'; - }, - missing = { - en = 'Not installed'; - ru = 'Отсутствует'; - }, - disk = { - en = 'HDD'; - ru = 'Диск'; - }, - network = { - en = 'Network'; - ru = 'Сеть'; - }, - boot_from = { - en = 'Boot from'; - ru = 'Загрузка с'; - }, - network_2 = { - -- accusative case - en = 'network'; - ru = 'сети'; - }, - no_device = { - en = 'none'; - ru = 'отсутствует'; - }, - tower_os_line_1 = { - en = 'Starting TOWER OS 1.0...'; - ru = 'Запуск TOWER OS 1.0...'; - }; - tower_os_line_2 = { - en = 'TOWER OS Version 1.0'; - ru = 'TOWER OS Версия 1.0'; - }; - tower_os_line_3 = { - en = "Type 'HELP' to list available commands"; - ru = "Введите 'HELP' для вывода списка доступных команд"; - }; - - -- Lines below are used when player is entering Unix commands instead of DOS ones and are kind of joke/Easter egg - unix_line_1 = { - en = "I'm not Unix"; - ru = "Я не Unix"; - }; - unix_line_2 = { - en = 'Do I look like Unix to you?'; - ru = 'Я что, похож на Unix, по-вашему?'; - }; - unix_line_3 = { - en = "Hey, what are you trying to do?"; - ru = 'Эй, вы что делаете?'; - }; - unix_line_4 = { - en = "Are you trying to say 'format c:'?"; - ru = "Возможно, вы хотели написать 'format c:'?"; - }; - -- cat command - cat_line_1 = { - en = 'Meow'; - ru = 'Мяу'; - }; - cat_line_2 = { - en = 'No cats here'; - ru = 'Здесь нет кошек'; - }; - cat_line_3 = { - en = 'There is no secret cat level'; - ru = 'Секретного кошачьего уровня не существует'; - }; - -- more and less commands - more_line_1 = { - en = 'No more no less'; - ru = 'Ни больше ни меньше'; - }; - -- head or tail commands - head_line_1 = { - en = "That's yours, not mine"; - ru = 'Это ваше, я к этому не причастен'; - }; - head_line_2 = { - en = "I don't have one, do you?"; - ru = 'У меня нету, а у вас?'; - }; - }, - tutorial_locale = { - tutorial_key = { - en = "Key"; - ru = "Ключик"; - }; - tutorial_key_inv = { - en = "A small key. The box it opens should be somewhere in the treasury."; - ru = "Небольшой ключик от шкатулки. Она должна быть где-то в сокровищнице."; - }; - tutorial_box_hint = { - en = "Use the key on the box to unlock it. Click on the key and then on the box."; - ru = "Для того чтобы открыть шкатулку ключом используйте его на шкатулке. Щелкните на ключ, а затем на шкатулку."; - }; - tutorial_key_inv_look_for_box = { - en = "Try to find the box to continue. Remember that you can inspect items repeatedly."; - ru = "Попробуйте найти шкатулку, чтобы продолжить. Помните, что вы можете повторно осматривать объекты."; - }; - tutorial_disk = { - en = "Diskette With Maps"; - ru = "Дискета с картами"; - }; - tutorial_disk_inv = { - en = "A mapping program I purchased just some days ago. It has quite advanced features compared to the previous version. I hope it will be able to help me in my search."; - ru = "Картографическая программа, приобретенная мной всего несколько дней назад. Обладает довольно продвинутыми возможностями поиска в сравнении с предыдущей версией. Я надеюсь, она поможет мне в моих поисках."; - }; - tutorial_box = { - en = "Box"; - ru = "Шкатулка"; - }; - tutorial_box_inv = { - en = "A small locked box."; - ru = "Небольшая шкатулка, запертая на замок."; - }; - tutorial_box_used = { - en = "I open the box and take a map from it."; - ru = "Я открываю шкатулку и достаю из нее карту."; - }; - tutorial_box_used_hint = { - en = "Examine the map to continue."; - ru = "Осмотрите карту, чтобы продолжить."; - }; - tutorial_map = { - en = "Map"; - ru = "Карта"; - }; - tutorial_map_inv = { - en = "An ancient map of a small plot of land. A careful cross marks some settlement. I spent centuries looking for this place with no results."; - ru = 'Старинная карта небольшого участка земли. Аккуратная отметка в виде креста указывает на какое-то поселение. Я потратил столетия на безуспешные поиски этого места.'; - }; - tutorial_map_hint_leave_treasury = { - en = "Return to the main hall and go to the study from there."; - ru = "Вернитесь в главный зал и перейдите оттуда в кабинет."; - }; - tutorial_map_hint_find_disk = { - en = "Find a floppy disk with a mapping program in the treasury."; - ru = "Найдите в сокровищнице дискету с картографической программой."; - }; - tutorial_map_hint_go_to_study = { - en = "Go to study to continue. "; - ru = "Перейдите в кабинет, чтобы продолжить."; - }; - tutorial_start = { - en = "Welcome!"; - ru = "Добро пожаловать!"; - }; - tutorial_start_decor = { - en = [[ - Welcome to the game of "A Dragon and the Tower". This section will get you acquainted with the game and teach you how to play it. ^ - The game consists of rooms, each of them has a title and a description. Besides that, a room can contain objects you can interact with. ^ - This is also a room. It is titled "Welcome!" and you are reading it's description right now. - ]]; - ru = [[ - Добро пожаловать в игру "Дракон и Башня". Этот раздел познакомит вас с игрой и научит в нее играть. ^ - Игра состоит из комнат, у каждой из которых есть название и описание. Кроме того, в комнате могут находиться объекты, с которыми вы можете взаимодействовать. ^ - Это тоже комната. Она называется "Добро пожаловать!", а описание ее вы сейчас читаете. - ]]; - }; - tutorial_start_decor_hint = { - en = 'We invite you to play a small prologue to A Dragon and the Tower. We will mark instructions and comments with the bold font. Press "Continue" to begin the prologue.'; - ru = 'Мы предлагаем вам сыграть в небольшой пролог к Дракону и Башне. Жирным шрифтом мы будем выделять инструкции и комментарии. Нажмите "Продолжить", чтобы начать пролог.'; - }; - tutorial_lair = { - en = "Lair, Main Hall"; - ru = "Логово, главный зал"; - }; - tutorial_lair_decor_1 = { - en = "My lair consists of a network of small {#caves|caves}"; - ru = "Мое логово представляет собой сеть из нескольких {#caves|пещер}"; - }; - tutorial_lair_decor_hint_caves = { - en = "Click highlighted text to inspect the caves"; - ru = "Нажмите на подсвеченный текст, чтобы осмотреть пещеры"; - }; - tutorial_lair_decor_2 = { - en = "Right now I am in the largest of them. The rough walls and tall arches of stone are filled with sunlight through an enormous {#exit|opening in the ceiling}."; - ru = "Сейчас я нахожусь в самой большой из них. Неровные стены и высокие каменные своды освещены солнцем, свет которого свободно проникает через огромное {#exit|отверстие в потолке}."; - }; - tutorial_lair_decor_hint_treasury = { - en = 'Separated from the rest of the text are transition links. Transitions "To the Treasury" and "To the Study" are available to you now. Go to the treasury to continue.'; - ru = 'Отдельно от основного текста находятся ссылки-переходы. Сейчас вам доступны переходы "В сокровищницу" и "В кабинет". Перейдите в сокровищницу, чтобы продолжить.'; - }; - tutorial_lair_decor_hint_study = { - en = "Go to the study to continue."; - ru = "Перейдите в кабинет, чтобы продолжить."; - }; - tutorial_lair_enter_start = { - en = "I awaken and open my eyes. Quickly glancing around the lair I begin transformation. My body dissipates in gray smoke and rebuilds again, taking human appearance."; - ru = "Я просыпаюсь и открываю глаза. Бегло осмотрев логово, я начинаю превращаться. Мое тело расплывается серым дымом и собирается вновь, уже в облике человека."; - }; - tutorial_lair_enter_treasury = { - en = "I have not yet finished my affairs here."; - ru = "Я еще не закончил свои дела здесь."; - }; - tutorial_lair_enter_disk = { - en = "You need to find a floppy disk with the mapping program to continue."; - ru = "Вам необходимо найти дискету с картографической программой, чтобы продолжить."; - }; - tutorial_to_treasury = { - en = "To the Treasury"; - ru = "В сокровищницу"; - }; - tutorial_to_study = { - en = "To the Study"; - ru = "В кабинет"; - }; - tutorial_to_main_hall = { - en = 'To the Main Hall'; - ru = 'В главный зал'; - }; - tutorial_to_main_menu = { - en = 'To the Main Menu'; - ru = 'В главное меню'; - }; - tutorial_to_game = { - en = 'Start the Game'; - ru = 'Начать игру'; - }; - tutorial_lair_caves_act = { - en = "I've found these caves centuries ago. I had to widen some of the passages, but overall I've kept their natural appearance."; - ru = "Я нашел эту сеть пещер несколько столетий назад. Часть проходов пришлось расширить, но в остальном я сохранил естественные их формы."; - }; - tutorial_lair_caves_act_hint = { - en = "Click on the objects to interact with them. Some of them you can take or use, others only inspect."; - ru = "Щелкайте на объекты для взаимодействия с ними. Некоторые объекты вы сможете взять с собой или использовать, другие -- только осмотреть."; - }; - tutorial_lair_exit_act = { - en = 'I made this huge opening to freely leave and return to my lair. It is, of course, not the only exit from my home.'; - ru = 'Я проделал это огромное отверстие, чтобы свободно покидать и возвращаться в свое логово. Разумеется, это не единственный выход из моего дома.'; - }; - tutorial_treasury = { - en = 'Lair, Treasury'; - ru = 'Логово, сокровищница'; - }; - tutorial_treasury_no_enter = { - en = "I have nothing to do there."; - ru = "Мне там больше нечего делать."; - }; - tutorial_treasury_decor = { - en = 'Here I keep the most precious stuff I have. Shelves with various {#items|items} are positioned along the walls. In the center of the hall there are several large {#chests|chests}.'; - ru = 'Здесь я храню самые ценные из имеющихся у меня вещей. Вдоль стен расположены стеллажи, на которых лежат различные {#items|предметы}. В центре зала стоят несколько огромных {#chests|сундуков}.'; - }; - tutorial_treasury_decor_hint_map = { - en = 'To succeed in this game you will need to carefully read texts and examine the places you visit. Try to find a map.'; - ru = 'Для достижения успеха в игре вам придется внимательно читать тексты и осматривать места, где вы находитесь. Попробуйте найти карту.'; - }; - tutorial_treasury_decor_hint_leave = { - en = 'Leave the treasury to continue.'; - ru = 'Для продолжения покиньте сокровищницу.'; - }; - tutorial_treasury_items_act= { - en = 'I glance at the shelves with all kinds of stuff: {#books|books}, {#scrolls|scrolls}, {#records|vinyl records}, {#disks|floppy disks}, {#paintings|paintings}, and lots of other things.'; - ru = 'Я бегло оглядываю стеллажи, заполненные всевозможными предметами: {#books|книгами}, {#scrolls|свитками}, {#records|виниловыми пластинками}, {#disks|дискетами}, {#paintings|картинами} и много чем еще.'; - }; - tutorial_treasury_chests_act_key = { - en = 'Upon one of the chests I find a small key. I take it.'; - ru = 'На одном из сундуков лежит небольшой ключик. Я забираю его с собой.'; - }; - tutorial_treasury_chests_act_key_hint = { - en = 'You have taken the key and it has appeared in your inventory. Examine it by clicking on it two times.'; - ru = 'Вы взяли ключик и он появился в инвентаре. Осмотрите его. Для этого щелкните по нему два раза.'; - }; - tutorial_treasury_chests_act_box = { - en = 'In one of the chests I find a small box.'; - ru = 'В одном из сундуков я нахожу небольшую шкатулку.'; - }; - tutorial_treasury_chests_act_default = { - en = 'My treasure!'; - ru = 'Мои сокровища!'; - }; - tutorial_treasury_books = { - en = 'A collection of books I gathered in centuries of my life in this world.'; - ru = 'Коллекция книг, собранная мной за сотни лет жизни в этом мире.'; - }; - tutorial_treasury_scrolls = { - en = 'Scrolls with various writings of this world. I do not have everything I would like to -- I\'ve not had the chance to get a lot of things.'; - ru = 'Свитки с различными писаниями этого мира. Их не так много, как хотелось бы -- многие вещи я не успел заполучить.'; - }; - tutorial_treasury_scrolls_no_map = { - en = 'Among them I do not see the map I look for.'; - ru = 'Интересующей меня карты я среди них не вижу.'; - }; - tutorial_treasury_records = { - en = 'A relatively recent but widespread enough invention. I have gathered a number of records most valuable to me.'; - ru = 'Относительно недавнее изобретение, однако получившее широкое распространение. Я собрал некоторое количество наиболее интересных мне записей.'; - }; - tutorial_treasury_disks = { - en = 'Standard 3.5- and 5.25-inch floppy disks with software for my laptop.'; - ru = 'Стандартные трех- и пятидюймовые дискеты с программами для моего ноутбука.'; - }; - tutorial_treasury_disks_default = { - en = 'Even being a dragon, I have to keep up to date.'; - ru = 'Даже мне, дракону, приходится идти в ногу со временем.'; - }; - tutorial_treasury_disks_found = { - en = 'I easily find the one I seek.'; - ru = 'Я легко нахожу среди них искомую.'; - }; - tutorial_treasury_disks_hint = { - en = 'Time to use the items I found. Leave the treasury to continue.'; - ru = 'Самое время использовать найденные предметы. Покиньте сокровищницу.'; - }; - tutorial_treasury_paintings = { - en = 'Mostly reproductions of works, I find most intriguing.'; - ru = 'Это в основном репродукции наиболее интересных мне работ.'; - }; - tutorial_study = { - en = 'Lair, Study'; - ru = 'Логово, кабинет'; - }; - tutorial_study_decor = { - en = 'A small round cave about three meters high and no more than three in diameter. Near the wall I have placed a desk on which {#laptop|a laptop} rests. It\'s time to find the place I seek.'; - ru = 'Небольшая круглая пещерка около трех метров высотой и не более трех в диаметре. У стены я поместил стол, на котором сейчас покоится {#laptop|ноутбук}. Настало время узнать, где же находится это место.'; - }; - tutorial_study_decor_hint = { - en = 'To complete the tutorial, use the disk with maps on a laptop. To do that, click once on the object in inventory, and then on the object in the room.'; - ru = 'Чтобы закончить обучение, используйте дискету с картами на ноутбук. Для этого нажмите один раз на предмет в инвентаре, а потом на предмет в комнате.'; - }; - tutorial_study_enter = { - en = 'I don\'t need to go there yet.'; - ru = 'Мне пока сюда не нужно.'; - }; - tutorial_study_enter_hint = { - en = 'Actions of your character will not be always successful. Carefully read the texts to understand why the game does not let you perform certain actions.'; - ru = 'Не всегда действия вашего персонажа будут успешны. Внимательно читайте тексты, чтобы понять, почему игра не позволяет вам выполнить то или иное действие.'; - }; - tutorial_study_laptop_act = { - en = 'A laptop I\'ve bought a couple of years ago. It does not have a modern optical drive and it\'s not the most powerful by current standards, but it is enough for my needs.'; - ru = 'Ноутбук, купленный мной пару лет назад. В нем нет новомодного привода для компакт-дисков, и он не очень производительный по текущим меркам, но для моих нужд его вполне хватает.'; - }; - tutorial_end = { - en = 'Congratulations!'; - ru = 'Поздравляем!'; - }; - tutorial_end_decor = { - en = 'I insert the disk and turn on the laptop. After starting the mapping program, I begin the search. A proper query can do wonders, and a few minutes later I fly out of the cave in my true form, spreading my wings to the wind.'; - ru = 'Я вставляю дискету и включаю ноутбук. Запустив картографическую программу, я начинаю поиск нужного места. Правильно сформулированный запрос творит чудеса, и уже через несколько минут я вылетаю из пещеры в своем истинном обличии, расправив крылья навстречу ветру.'; - }; - tutorial_end_decor_hint = { - en = 'Congratulations! You have completed the tutorial and are ready to start the main game. Be prepared to act and think on your own. There will be no more hints.'; - ru = 'Поздравляем! Вы успешно завершили обучение и можете начинать основную игру. Будьте готовы действовать и думать самостоятельно. Подсказок больше не будет.'; - }; - }; - forest_locale = { - raspberry_pie = { - en = 'Raspberry Pie'; - ru = 'Малиновый пирог'; - }; - raspberry_pie_inv = { - en = 'I inhale the marvelous aroma of a fresh raspberry pie. Unfortunately, I cannot eat it, but I will definitely return here one day to get a piece for myself.'; - ru = 'Я вдыхаю восхитительный аромат свежего малинового пирога. К сожалению, я не могу его съесть, но я точно вернусь сюда когда-нибудь за кусочком для себя.'; - }; - flower = { - en = 'Flower'; - ru = 'Цветок'; - }; - flower_inv = { - en = 'A small but beautiful flower with thin and long sky-blue petals.'; - ru = 'Небольшой, но очень красивый цветок с тонкими вытянутыми лепестками небесно-голубого цвета.'; - }; - lock = { - en = 'Padlock'; - ru = 'Замок'; - }; - lock_disp2 = { - en = 'the padlock'; - ru = 'замок'; - }; - lock_disp3 = { - en = 'the padlock'; - ru = 'замок'; - }; - lock_inv = { - en = 'A small metal padlock, very old and thoroughly rusted.'; - ru = 'Небольшой металлический замочек, очень старый и изрядно проржавевший.'; - }; - old_map_disp = { - en = 'Old Map'; - ru = 'Старая карта'; - }; - old_map_disp2 = { - en = 'the old map'; - ru = 'записка'; - }; - old_map_disp3 = { - en = 'the old map'; - ru = 'записку'; - }; - old_map_inv_not_visited = { - en = 'An antique map that led me here. Mountains, woods, even the road is nearly the same. The village marked with a cross should be somewhere near.'; - ru = 'Старинная карта, что привела меня в эти края. Горы, леса, даже дорога почти на том же месте. Где-то здесь должна быть и деревушка, что отмечена крестом.'; - }; - old_map_inv_visited = { - en = 'An antique map that led me here. Mountains, woods, the village marked with a cross, even the road is nearly the same. I\'m curious, what\'s so special about this village.'; - ru = 'Старинная карта, что привела меня в эти края. Горы, леса, отмеченная крестом деревушка, даже дорога почти на том же месте. Осталось понять, что в этой деревне такого особенного.'; - }; - old_map_inv_visited_2 = { - en = 'An antique map that led me here. Mountains, woods, the village marked with a cross, even the road is nearly the same.'; - ru = 'Старинная карта, что привела меня в эти края. Горы, леса, отмеченная крестом деревушка, даже дорога почти на том же месте.'; - }; - above_forest = { - en = 'Above the Forest'; - ru = 'Над лесом'; - }; - above_forest_decor = { - en = [[Occasionally flapping my wings, I soar above {#thicket|the thicket} below. To the west I see {mountains|a mountain range} extending south and north as far as I can see. An old asphalted {#road|road} writhes below like a narrow stream. Along it stretches {#powerlines|a power line}. A bit aside from the road I can see a small {#glade|glade}. The cool {wind|wind} touches my scales and the bright summer {sun|sun} seeps through the thin fleecy {clouds|clouds}.]]; - ru = [[Изредка взмахивая крыльями, я парю над раскинувшейся внизу {#thicket|чащей}. На западе я вижу {mountains|горную цепь}, протянувшуюся на юг и на север до самого горизонта. Тонкой струйкой внизу извивается старая асфальтированная {#road|дорога}. Вдоль нее тянутся линии {#powerlines|электропередач}. Чуть в стороне от дороги я могу разглядеть небольшую {#glade|полянку}. Прохладный {wind|ветерок} ласкает чешую, а яркое летнее {sun|солнце} пробивается сквозь тонкие перистые {clouds|облака}.]]; - }; - above_forest_decor_village = { - en = 'The village I seek should be somewhere nearby.'; - ru = 'Деревня, что я ищу, должна быть где-то здесь.'; - }; - above_forest_enter = { - en = 'With a quick flap of my wings I rise from the Earth and rush into the sky.'; - ru = 'Резко взмахнув крыльями, я отрываюсь от земли и устремляюсь ввысь.'; - }; - transition_land = { - en = 'Land'; - ru = 'Приземлиться'; - }; - transition_south_along_road = { - en = 'South, Along the Road'; - ru = 'На юг, вдоль дороги'; - }; - transition_north_along_road = { - en = 'North, Along the Road'; - ru = 'На север, вдоль дороги'; - }; - transition_north_to_the_village= { - en = 'North, to the Village'; - ru = 'На север, к деревне'; - }; - transition_fly = { - en = 'Take Off'; - ru = 'Взлететь'; - }; - transition_west = { - en = 'West'; - ru = 'На запад'; - }; - transition_east = { - en = 'East'; - ru = 'На восток'; - }; - transition_west_to_the_crater = { - en = 'West, to the Crater'; - ru = 'На запад, к кратеру'; - }; - transition_east_to_the_village = { - en = 'East, to the Village'; - ru = 'На восток, к деревне'; - }; - transition_south_to_the_forest = { - en = 'South, to the Forest'; - ru = 'На юг, в лес'; - }; - transition_north_to_the_townhall = { - en = 'North, to the Town Hall'; - ru = 'На север, к ратуше'; - }; - transition_inside_hut = { - en = 'Into the Hut'; - ru = 'В дом лесника'; - }; - transition_out = { - en = 'Outside'; - ru = 'На улицу'; - }; - transition_south_to_hut = { - en = 'South, to the Forester\'s Hut'; - ru = 'На юг, к дому лесника'; - }; - transition_inside_well = { - en = 'Into the Well'; - ru = 'В колодец'; - }; - transition_inside_town_hall = { - en = 'Into the Town Hall'; - ru = 'В ратушу'; - }; - transition_inside_tavern = { - en = 'Into the Tavern'; - ru = 'В трактир'; - }; - transition_north_to_library = { - en = 'North, to the Library'; - ru = 'На север, к библиотеке'; - }; - transition_south_to_town_hall = { - en = 'South, to the Town Hall'; - ru = 'На юг, к ратуше'; - }; - transition_inside_library = { - en = 'Into the Library'; - ru = 'В библиотеку'; - }; - transition_to_hidden_room = { - en = 'To the Hidden Room'; - ru = 'В потайную комнату'; - }; - transition_up = { - en = 'Up'; - ru = 'Наверх'; - }; - transition_away_from_bookstand = { - en = 'Away from the Shelf'; - ru = 'Отойти от стеллажа'; - }; - transition_to_main_hall = { - en = 'To the Main Hall'; - ru = 'В главный зал'; - }; - transition_along_the_path = { - en = 'Along the Path'; - ru = 'По тропинке'; - }; - transition_to_tower = { - en = 'To the Tower'; - ru = 'К башне'; - }; - transition_inside_tower = { - en = 'Into the Tower'; - ru = 'В башню'; - }; - transition_to_glade = { - en = 'To the Glade'; - ru = 'К поляне'; - }; - common_dlg_greet = { - en = 'Good afternoon! I am new in this village. '; - ru = 'Добрый день. Я впервые в вашей деревне.'; - }; - common_dlg_places = { - en = 'Do you know of any interesting places around here?'; - ru = 'Вы знаете какие-нибудь местные достопримечательности?'; - }; - above_forest_thicket_act = { - en = 'Ancient forests cover the land like a green blanket. The mild wind barely sways the treetops. Even here, hundreds of meters above ground, I sense a slight scent of conifer.'; - ru = 'Древние леса зеленым ковром покрывают землю. Вершины деревьев едва покачиваются от легкого ветерка. Даже здесь, на высоте нескольких сотен метров, я ощущаю легкий запах хвои.'; - }; - above_forest_road_act = { - en = 'The cracked asphalt looks like a dry riverbed. The road is deserted as if this place has been uninhabited long ago.'; - ru = 'Потрескавшийся асфальт напоминает русло засохшей реки. Дорога пустынна, словно это место давно покинуто людьми.'; - }; - above_forest_road_act_village = { - en = 'What if I find only lifeless windows of empty houses in this village?'; - ru = 'Что если меня ждут лишь безжизненные окна пустых домов?'; - }; - above_forest_powerlines_act = { - en = 'Towers are positioned along the road on equal distance from each other. Thick high-voltage cables are stretched between them.'; - ru = 'Вышки установлены вдоль дороги на равных расстояниях друг от друга, Между ними натянуты толстые высоковольтные провода.'; - }; - above_forest_glade_act = { - en = 'A small glade, covered with a patchwork of flowers and grass.'; - ru = 'Небольшая полянка, усеянная пестрым ковром из цветов и трав.'; - }; - above_forest_glade_act_first = { - en = 'A great place to take some rest.'; - ru = 'Отличное место чтобы передохнуть.'; - }; - forest_glade = { - en = 'Glade'; - ru = 'Поляна'; - }; - forest_glade_enter = { - en = 'I land on a small glade inside the forest. There is no need to hide, so I stay in my real form.'; - ru = 'Я приземляюсь на небольшой полянке в лесу. Здесь нет нужды прятаться, поэтому я остаюсь в истинном обличии.'; - }; - forest_glade_decor = { - en = 'I stand in the middle of a small glade, surrounded by a wall of {#thicket|trees}. It is calm and quiet here. I can only hear leaves rustling and {#birds|birds} singing. The mild wind barely sways the treetops. Emerald-green {#grass|grass} reaches my heels.'; - ru = 'Я стою посреди небольшой полянки, со всех сторон окруженной стеной {#thicket|леса}. Здесь тихо и спокойно. Я слышу только шелест листвы и пение {#birds|птиц}. Легкий ветерок еле заметно качает вершины {#thicket|деревьев}. Изумрудно-зеленая {#grass|трава} достигает моих пяток.'; - }; - forest_glade_thicket = { - en = 'The trees surround the glade with a solid wall like vigilant sentinels keeping watch over this place.'; - ru = 'Деревья окружают поляну сплошной стеной, словно бдительные стражи, охраняющие покой этого места.'; - }; - forest_glade_birds = { - en = 'From deep within the forest I hear a multitude of chirping birds, but I don\'t see any of them nearby.'; - ru = 'Где-то в глубине леса я слышу щебетание множества птиц, однако я не вижу ни одной поблизости.'; - }; - forest_glade_grass = { - en = 'Thick high grass covers the whole glade. It would reach average human\'s waist, but for me it barely touches the heels. Here and there I can see tiny patches of {#flowers|flowers} hidden in it.'; - ru = 'Высокая густая трава покрывает всю поляну. Человеку она была бы по пояс, но мне едва достигает пяток. Тут и там я замечаю небольшие скопления {#flowers|цветов}, скрытые в ней.'; - }; - forest_glade_flowers_first = { - en = 'Unusual flowers with elongated sky-blue petals catch my attention. They grow on the edge of the glade. I pick one and take it with me. With some magic it will never wither.'; - ru = 'Мое внимание привлекают необычные цветы с вытянутыми лепестками небесно-голубого цвета, растущие на краю поляны. Я срываю один и забираю с собой. Немного магии, и он уже никогда не завянет.'; - }; - forest_glade_flowers = { - en = 'Quite a lot of nice flowers grow here.'; - ru = 'Здесь растет немало красивых цветов.'; - }; - above_near_village = { - en = 'South of the Village'; - ru = 'К югу от деревни'; - }; - above_near_village_enter = { - en = 'A fog surrounds my body and in a moment not a nameless stranger, but a mighty dragon is standing on the road. With a flap of wings, I leave the ground far below.'; - ru = 'Мое тело окутывает туман и через мгновение на дороге уже стоит не безымянный странник, а могучий дракон. Взмахнув крыльями, я оставляю землю далеко внизу.'; - }; - above_near_village_decor = { - en = 'My wings carry me above the forest {#road|road}. I have travelled a dozen kilometers but seemingly nothing has changed at all -- a never-ending {#thicket|thicket} still lies below, and {mountains|the mountain range} still stretches far away. To the north, near the horizon I notice a small {#village|village}.'; - ru = 'Крылья несут меня над лесной {#road|дорогой}. Я пролетел с десяток километров, но, кажется, не изменилось вообще ничего -- внизу все так же расстилается бескрайняя {#thicket|чаща}, а {mountains|горная цепь} на западе продолжает тянуться вдаль. На севере, у самого горизонта, я замечаю небольшую {#village|деревушку}.'; - }; - above_near_village_road = { - en = 'The road looks long unused. The asphalt has cracked in a lot of places, and green stalks have started to grow through it.'; - ru = 'Дорога выглядит давно не используемой. Асфальт во многих местах потрескался, и сквозь него кое-где пробиваются зеленые стебельки.'; - }; - above_near_village_thicket = { - en = 'Looks like the forest is endless. The mild wind sways the treetops, raising a thick conifer scent noticeable even here, hundreds of meters above the ground.'; - ru = 'Кажется, лесу нет конца и края. Легкий ветерок колышет вершины деревьев, поднимая густой хвойный аромат, ощутимый даже здесь, на высоте нескольких сотен метров.'; - }; - above_near_village_village = { - en = 'From here I can see a tavern and a town hall in the center of the village. Around them little houses are scattered, surrounded by greenery.'; - ru = 'Отсюда я могу разглядеть трактир и ратушу в центре деревни. Вокруг них разбросаны утопающие в зелени домики.'; - }; - village_unvisited = { - en = 'The village is definitely inhabited.'; - ru = 'Деревня определенно не заброшена.'; - }; - above_village = { - en = 'Above the Village'; - ru = 'Над деревней'; - }; - above_village_decor = { - en = 'The thin fleecy {clouds|clouds} keep floating above me barely covering {sun|the sun}, and below stretches an endless sea of {#thicket|forest}, cut by {mountains|the mountain range} to the west. The old asphalted {#road|road} leads to {#village|the village} below me.'; - ru = 'Надо мной все так же проплывают тонкие перистые {clouds|облака}, едва прикрывая собой {sun|солнце}, а внизу простирается бескрайнее море {#thicket|леса}, взрезанное на западе {mountains|горной грядой}. Старая асфальтированная {#road|дорога} ведет в {#village|деревню}, расположенную подо мной.'; - }; - above_village_thicket = { - en = 'The thick conifer forest surrounds the tiny village from all sides, trying to devour it without success.'; - ru = 'Густой хвойный лес плотным кольцом обступает небольшую деревеньку со всех сторон, безуспешно пытаясь поглотить ее.'; - }; - above_village_road = { - en = 'Obviously, locals rarely use this way. The road is empty and the asphalt does not get due maintenance.'; - ru = 'Очевидно, местные жители нечасто пользуются этим путем. Дорога пустует, а асфальт не получает должного ремонта.'; - }; - above_village_village = { - en = 'From here I can see the village surrounded by greenery. A square lies in its center, with a town hall and a tavern nearby. There is a library on the north of the village.'; - ru = 'Отсюда я могу хорошо разглядеть утопающую в зелени деревню. В центре ее расстилается площадь, рядом с которой находятся ратуша и трактир. На севере деревни располагается библиотека.'; - }; - sun = { - en = 'Sun rays, seeping through the thin fleecy clouds, warm my scales pleasantly.'; - ru = 'Теплые лучи солнца приятно согревают мою чешую, пробиваясь сквозь тонкие перистые облака.'; - }; - sun_transformed = { - en = 'Warm sun rays seep through the thin fleecy clouds and fill surroundings with golden light.'; - ru = 'Теплые лучи солнца пробиваются сквозь тонкие перистые облака и заливают все вокруг золотистым светом.'; - }; - clouds = { - en = 'Pierced with sunbeams like with spears, the thin fleecy clouds slowly float above my head following aerial currents.'; - ru = 'Пронзаемые лучами солнца словно копьями, тонкие перистые облака неспешно проплывают надо мной, повинуясь воздушным течениям.'; - }; - wind = { - en = 'The light wind blows from the east, bringing a longed-for coolness. Its soft breath barely sways the treetops and makes thin clouds slowly move to the west.'; - ru = 'Легкий ветерок дует с востока, принося желанную прохладу. Его мягкое дыхание едва колышет вершины деревьев и заставляет тонкие облака медленно плыть на запад.'; - }; - mountains = { - en = 'The mountain range cuts through the forest cover to the west. Rare trees desperately cling to the rocky slopes as if trying to mend this giant wound.'; - ru = 'Горная цепь вспарывает лесной ковер к западу от меня. Редкие деревья отчаянно цепляются за каменистые склоны, словно стремясь заживить эту гигантскую рану.'; - }; - above_west = { - en = 'West of the Village'; - ru = 'К западу от деревни'; - }; - above_west_decor = { - en = '{#village|The village} is far to the east. Pointy {#mountaintops|mountain-tops} and rocky {#mountainslopes|slopes} littered with boulders pass me by, and far away to the west I see a huge {#crater|crater}. Rays from the bright summer {sun|sun}, passing through the thin fleecy {clouds|clouds}, fall upon my scale warming it.'; - ru = '{#village|Деревня} осталась далеко на востоке. Подо мной проносятся острые {#mountaintops|вершины} и каменистые {#mountainslopes|склоны}, усеянные валунами, а вдалеке на западе я вижу огромный {#crater|кратер}. Лучи яркого летнего {sun|солнца}, проникающие сквозь тонкие перистые {clouds|облака}, падают на мою чешую, согревая ее.'; - }; - above_west_village = { - en = 'From here I can still make out the biggest buildings of the village: the town hall, the tavern and the library. Barely visible smoke rises from the tavern\'s chimney, and a girl is sitting on its porch.'; - ru = 'Отсюда я все еще могу разглядеть самые большие здания деревни: ратушу, трактир и библиотеку. Из трубы трактира поднимается едва заметный дымок, а на крыльце его сидит девушка.'; - }; - above_west_mountains = { - en = 'From here I can see the mountain tops below. Few of them are high enough to touch the clouds, and only some of them are coated by the snow, shining in the sun. Most of them are no more than naked rock, to which young spruces try to cling desperately here and there.'; - ru = 'Отсюда я могу рассмотреть горные пики внизу. Немногие из них достаточно высоки, чтобы коснуться облаков, лишь часть их покрыта блестящим на солнце снегом. Большинство представляет собой не более чем голые камни, за которые тут и там отчаянно пытаются цепляться немногочисленные молодые ели.'; - }; - above_west_mountaintops = { - en = 'The mountain tops point upward like spearheads. Most of them are mere gray rocks void of any flora, but the highest of them are covered by the blindingly white snow, glittering in the bright summer sun.'; - ru = 'Вершины гор нацелены вверх, словно наконечники копий. Большая часть их -- не более чем серые камни, лишенные растительности, но самые высокие покрыты ослепительно-белым снегом, сверкающим в ярких лучах летнего солнца.'; - }; - above_west_mountainslopes = { - en = 'Steep slopes and vertical rocks look nearly lifeless. Only few trees dare to set their roots on these rocky hulks pointed to the sky.'; - ru = 'Крутые склоны и отвесные скалы кажутся практически безжизненными. Лишь немногие деревья осмеливаются пустить свои корни на этих каменных громадах, устремившихся в небеса.'; - }; - above_west_crater = { - en = 'An enormous crater is about ten kilometers in diameter. Judging by the light forest growing inside, it formed quite long ago. I see a black tower in the center of the crater.'; - ru = 'Громадный кратер, километров десять в диаметре. Судя по растущему внутри редкому леску, образовался он достаточно давно. В самом его центре я вижу черную башню.'; - }; - above_crater = { - en = 'Above the Crater'; - ru = 'Над кратером'; - }; - above_crater_enter = { - en = 'I soar into the sky, completing transformation mid-air. My mighty wings raise me above the ground.'; - ru = 'Я взмываю в небо, уже на лету заканчивая превращение. Мои могучие крылья поднимают меня над землей.'; - }; - above_crater_decor = { - en = 'I fly above an enormous {#crater|crater} lost amidst mountains. {#tower|A tower} rises in the center of the crater, but {#trees|the trees} won\'t let me land there. I notice a small {#glade|glade} just a few hundred meters from the tower.'; - ru = 'Я пролетаю над огромным {#crater|кратером}, затерянным среди гор. В центре кратера возвышается {#tower|башня}, но я не смогу там приземлиться из-за {#trees|деревьев}. Я замечаю небольшую {#glade|полянку} всего в нескольких сотнях метров от башни.'; - }; - above_crater_crater = { - en = 'A long time ago a huge meteorite has fallen here. During the time passed, the crater has overgrown with foliage, but the planet has yet to smooth this horrifying scar from its surface.'; - ru = 'Когда-то в незапамятные времена здесь упал довольно крупный метеорит. За прошедшее время кратер успел зарасти лесом, но планета все еще не загладила этот ужасный шрам на своей поверхности.'; - }; - above_crater_tower = { - en = 'The tower of black rock rises above the forest, placed in the very center of the gigantic crater. Its base is an equilateral hexagon. It stands strictly vertically, surrounded from all sides by forest, as if it is ignoring the tower\'s presence.'; - ru = 'Башня из черного камня возвышается над лесом, располагаясь в самом центре исполинского кратера. Основание ее представляет собой правильный шестиугольник. Она стоит строго вертикально, окруженная со всех сторон лесом, словно не замечающим ее присутствия.'; - }; - above_crater_trees = { - en = 'The trees grow rarely enough to allow sunbeams to reach the ground, but nevertheless it would be difficult to land here.'; - ru = 'Деревья растут достаточно редко, чтобы позволить солнечным лучам достигать земли, однако приземлиться среди них все еще проблематично.'; - }; - above_crater_glade = { - en = 'A small glade near the center of the crater. If I land here and transform, I will be able to get to the tower without any issues.'; - ru = 'Небольшая полянка совсем недалеко от центра кратера. Eсли я приземлюсь здесь и превращусь, то без труда доберусь до башни.'; - }; - village_no_way_solarscale = { - en = 'Locals would not appreciate a couple of dragons landing in the middle of their village.'; - ru = 'Местным жителям не очень понравится, если посреди их деревни вдруг приземлятся два дракона.'; - }; - village_no_way_alone = { - en = 'Locals would not appreciate a dragon landing in the middle of their village.'; - ru = 'Местным жителям не очень понравится, если посреди их деревни вдруг приземлится дракон.'; - }; - near_village = { - en = 'South of the Village'; - ru = 'К югу от деревни'; - }; - near_village_enter = { - en = 'I descend softly. As my feet touch the ground, I start transformation. My body dissipates in fog and I reappear from it as a common human. I conceal my flaming eyes with the dark glasses.'; - ru = 'Я мягко опускаюсь на землю. Едва мои ноги касаются земли, я начинаю превращаться. Тело мое расплывается туманом, который вскоре собирается в облике обычного человека. Горящие ярким огнем глаза я предусмотрительно скрываю за темными очками.'; - }; - near_village_decor = { - en = 'I stand on an old asphalted {#road|road} somewhere among the ancient {#forest|forest}. A small {#village|village} is located a few kilometers to the north. The bright summer {sun_transformed|sun} shines through {clouds|the clouds} far above.'; - ru = 'Я стою на старой асфальтовой {#road|дороге} где-то посреди древнего {#forest|леса}. В нескольких километрах к северу от меня находится небольшая {#village|деревушка}. Яркое летнее {sun_transformed|солнце} пробивается сквозь проплывающие высоко в небе {clouds|облака}.'; - }; - near_village_road = { - en = 'Gray uneven asphalt of the long forgotten road is covered with cracks.'; - ru = 'Серый неровный асфальт всеми забытой дороги иссечен многочисленными трещинами.'; - }; - near_village_forest = { - en = 'The light wind sways the treetops along the both sides of the road and spreads a thick conifer aroma.'; - ru = 'Легкий ветерок качает вершины стоящих по сторонам дороги деревьев, разнося насыщенный аромат хвойного леса.'; - }; - near_village_village = { - en = 'The well-kept log houses are surrounded by greenery. From here I can see the large buildings of the town hall and the tavern in the center of the village.'; - ru = 'Ухоженные бревенчатые домики местных жителей утопают в зелени. Отсюда я вижу стоящие в центре деревни крупные здания ратуши и трактира.'; - }; - village_south = { - en = 'The Village, South'; - ru = 'Деревня, юг'; - }; - village_south_follow = { - en = 'Solarscale refuses to follow me. "I cannot change my form, and I don\'t think locals would be happy to see me," she says and sits on the grass nearby.'; - ru = 'Соларскейл отказывается следовать за мной и со словами: "Я не могу изменять форму и не думаю, что местные жители будут рады меня видеть. Я подожду вас здесь", -- усаживается на траву неподалеку.'; - }; - village_south_decor = { - en = 'I am standing on {#road|the road} in the southern part of {#village|the village}. A forester\'s {#foresters_hut_out|hut} is located close by. An old {#foresters_car|truck} is parked near its entrance. Rays of {sun_transformed|the sun} passing through {clouds|the clouds} fill surroundings with golden light.'; - ru = 'Я стою на {#road|дороге} в южной части {#village|деревни}. Чуть поодаль расположилась {#foresters_hut_out|избушка} лесника. У входа припаркован старый {#foresters_car|пикап}. Лучи {sun_transformed|солнца}, пробивающиеся сквозь тонкие {clouds|облака}, заливают все вокруг золотистым светом.'; - }; - village_south_road = { - en = 'Walking on the old half-decayed asphalt is quite odd for me, used to the flat floor of my caves. Here and there thin stalks of young grass rise through the cracks.'; - ru = 'Мне, привыкшему к ровному полу моих пещер, очень непривычно идти по старому полуразрушенному асфальту. Тут и там сквозь трещины в нем пробиваются тонкие стебельки молодой травы.'; - }; - village_south_village = { - en = 'The neat wooden houses of the village inhabitants are surrounded by greenery. From here I can see the town hall and the tavern located in the center of the village. A thin stream of smoke rises from the tavern\'s chimney.'; - ru = 'Аккуратные деревянные домики местных жителей утопают в зелени. Отсюда я вижу расположенные в центре деревни здания ратуши и трактира. Из трубы последнего поднимается тонкая струйка дыма.'; - }; - village_south_car = { - en = 'This car must be ancient -- the model is quite old, the body has some dents and the paint is slightly touched up. The car has not a notion of rust, the mirrors and headlights are in perfect condition and the windshield is shining clean.'; - ru = 'Этому автомобилю, должно быть, не менее нескольких десятков лет -- модель очень старая, кузов местами подкрашен, кое-где видны небольшие вмятины. Однако на машине нет и следа ржавчины, зеркала и фары в полном порядке, лобовое стекло сияет чистотой.'; - }; - village_south_hut = { - en = 'A sturdy wooden hut. It has blackened from age and is slightly leaning, but it\'s still quite strong. With proper care it can hold some more decades.'; - ru = 'Крепкая деревянная изба, почерневшая от старости и слегка покосившаяся, но все еще достаточно прочная. При должном уходе она простоит еще не один десяток лет.'; - }; - foresters_hut = { - en = 'Forester\'s Hut'; - ru = 'Дом лесника'; - }; - foresters_hut_enter = { - en = 'Entering the unlit room, I barely hold from taking my glasses off and revealing my true self. After getting used to the twilight, I look around.'; - ru = 'Войдя в неосвещенное помещение, я с трудом сдерживаюсь, чтобы не снять очки и не выдать себя. Привыкнув к темноте, я осматриваюсь.'; - }; - foresters_hut_decor = { - en = 'Despite the bright sunny day outside, it is still dark inside the hut. A huge soft {#sofa|sofa} is positioned across from the entrance. In the corner I see a huge sturdy {#cupboard|cupboard}, and beside the window there is {#table|a table}, covered by an oilcloth. Several {#chairs|chairs} are standing around it. {#radio|A radio} is on the table.'; - ru = 'Несмотря на яркий солнечный день, внутри избушки лесника царит полумрак. Напротив входа расположен большой мягкий {#sofa|диван}. В углу разместился большой крепкий {#cupboard|шкаф}, а у окна стоит {#table|стол}, застеленный клеенкой, с несколькими {#chairs|стульями} вокруг. На столе стоит {#radio|радиоприемник}.'; - }; - foresters_hut_sofa = { - en = 'An ancient sofa with a faded and worn upholstery still lures with the comfort of home.'; - ru = 'Старинный диван с выцветшей и потертой обивкой все еще манит домашним уютом.'; - }; - foresters_hut_cupboard = { - en = 'Looks like this cupboard is several decades old. Its bronze handles are covered with patina and its doors are heavily cracked.'; - ru = 'Должно быть, этому шкафу не один десяток лет. Бронзовые ручки покрыты патиной, а на рассохшейся дверце я замечаю несколько глубоких трещин.'; - }; - foresters_hut_table = { - en = 'The massive oaken table is covered by a faded oilcloth with a pattern of flowers and curls.'; - ru = 'Массивный дубовый стол застелен старой выцветшей клеенкой с узором из цветочков и каких-то завитков.'; - }; - foresters_hut_chairs = { - en = 'The old wooden chairs seemingly made by a local carpenter. Simple but steady and strong, they will serve for a long time.'; - ru = 'Старые деревянные стулья, очевидно, сделанные местным мастером. Простые, но устойчивые и прочные. Такие прослужат не одно десятилетие.'; - }; - foresters_hut_radio = { - en = 'An antique radio. Manufacturing of these stopped some twenty years ago. Looks like it works perfectly still. The power is on, but volume is reduced to the minimum.'; - ru = 'Старинный радиоприемник. Такие перестали выпускать лет двадцать назад. Судя по всему, он все еще прекрасно работает. Лампочка питания горит, однако громкость выкручена в минимум.'; - }; - foresters_hut_forester = { - en = '{The forester} is sitting on the sofa, looking at me.'; - ru = 'На диване сидит {лесник}, глядя на меня.'; - }; - foresters_hut_forester_pie = { - en = 'I cannot just put the pie in his hands. I have to come and talk.'; - ru = 'Я не могу просто всучить ему пирог. Надо подойти и поговорить.'; - }; - foresters_hut_not_interested = { - en = 'This is not likely to entice him.'; - ru = 'Не думаю, что ему это интересно.'; - }; - foresters_hut_rope_disp = { - en = 'Rope'; - ru = 'Веревка'; - }; - foresters_hut_rope = { - en = 'There is {a coil of rope} on the cupboard.'; - ru = 'На шкафу лежит {моток веревки}.'; - }; - foresters_hut_rope_taken = { - en = 'I take the rope.'; - ru = 'Я забираю веревку.'; - }; - foresters_hut_rope_not_taken = { - en = 'The owner will not be happy if I take this without permission.'; - ru = 'Хозяин будет недоволен, если я возьму это без разрешения.'; - }; - foresters_hut_rope_inv = { - en = 'A coil of strong rope.'; - ru = 'Моток крепкой веревки.'; - }; - forester_dlg_disp = { - en = 'The Forester'; - ru = 'Лесник'; - }; - forester_dlg_enter = { - en = 'A bearded, shaggy man of unknown age is sitting on a sofa, piercingly looking right into my eyes. He wears a tarpaulin jacket and trousers, and seemingly has no problems with the heat.'; - ru = 'Бородатый, косматый мужчина неопределенного возраста сидит на диване, пронзительно глядя мне в глаза. Одет он в брезентовые куртку и штаны и, кажется, не испытывает никаких проблем по поводу жары.'; - }; - forester_dlg_greet_response = { - en = 'The forester quickly changes the expression -- I notice a spark of joy in his eyes, and it seems like he hides a sincere smile under his beard, "Welcome! We are always happy to see new people here!"'; - ru = 'Лесник резко меняет выражение лица -- в глазах сверкает веселая искорка и кажется, что под бородой скрывается искренняя улыбка: "Добро пожаловать, мы всегда рады гостям!"'; - }; - forester_dlg_places_response = { - en = 'The forester responds without hesitation, "It\'s said that you can\'t find such collection of books as ours in the whole world."'; - ru = 'Лесник не задумываясь отвечает: "Говорят, такого собрания книг, как в нашей библиотеке, больше нигде нет".'; - }; - forester_dlg_rope = { - en = 'Can I take your rope?'; - ru = 'Могу я взять у вас веревку?'; - }; - forester_dlg_rope_response = { - en = 'The forester thoughtfully scratches his beard and proposes, "I had a quarrel with the tavern keeper a couple of days ago. Now he refuses to sell me anything but bread and water. I would gladly exchange a coil of rope for a piece of raspberry pie."'; - ru = 'Лесник задумчиво чешет бороду и предлагает: "Мы с трактирщиком на днях повздорили, теперь он отказывается продавать мне что-либо кроме хлеба и воды. С удовольствием обменяю моток веревки на кусок малинового пирога".'; - }; - forester_dlg_pie = { - en = '[Give the raspberry pie to the forester] I have brought you the pie. Can I take the rope?'; - ru = '[Дать леснику малиновый пирог] Я принес пирог. Могу я взять веревку?'; - }; - forester_dlg_pie_response = { - en = 'The forester takes the pie from you and bites it. "Take it," he says. '; - ru = 'Лесник берет у вас пирог и, откусив от него немного, произносит: "Забирайте".'; - }; - forester_dlg_farewell = { - en = 'Farewell.'; - ru = 'До свидания.'; - }; - forester_dlg_farewell_response = { - en = '"See you," the forester says.'; - ru = 'Лесник прощается со мной: "Увидимся".'; - }; - village_all_decor = { - en = 'Bright rays of the summer {sun_transformed|sun} seep through the thin fleecy {clouds|clouds}.'; - ru = 'Сквозь тонкие перистые {clouds|облака} пробиваются яркие лучи летнего {sun_transformed|солнца}.'; - }; - village_center = { - en = 'The Village, Center'; - ru = 'Деревня, центр'; - }; - village_center_decor = { - en = 'I stand on a small square in front of {#townhall|the town hall}. On the other end of the square {#tavern|a tavern} is located. To the north I see a large single-storey {#library|building}.'; - ru = 'Я стою на небольшой площади перед деревенской {#townhall|ратушей}. В другом конце площади стоит {#tavern|трактир}. На севере я замечаю какое-то большое одноэтажное {#library|здание}.'; - }; - village_center_townhall = { - en = 'The two-storey town hall is one of the largest and oldest buildings in this village. Most of the facade is taken up by the huge windows taking up both storeys. I can hear {#music|the music} coming from the inside.'; - ru = 'Двухэтажное здание ратуши -- одно из самых крупных и старых в деревне. Большую часть фасада занимают огромные, высотой в оба этажа, окна. Изнутри здания доносится {#music|музыка}.'; - }; - village_center_music = { - en = 'I halt to listen to the music coming from the town hall. An unfamiliar melody sounds quite pleasant.'; - ru = 'Я останавливаюсь, чтобы прислушаться к доносящейся из ратуши музыке. Незнакомая мелодия звучит очень приятно.'; - }; - village_center_tavern = { - en = 'The tavern is as old and considerable as the town hall. A barely noticeable smoke is rising from its chimney.'; - ru = 'Трактир не уступает ратуше ни возрастом, ни солидностью. Из трубы здания поднимается едва заметный дымок.'; - }; - village_center_library = { - en = 'From here I can see the library\'s sign on the building.'; - ru = 'Отсюда я могу разглядеть вывеску библиотеки на здании.'; - }; - village_well_dsc = { - en = '{The well} is placed in the center of the square.'; - ru = 'В центре площади расположен {колодец}.'; - }; - village_well_dsc_rope = { - en = 'A rope going down the well is fixed by one of the protruding stones.'; - ru = 'Вокруг одного из выступающих камней закреплена веревка, уходящая вглубь колодца.'; - }; - village_well_act = { - en = 'An old dried out well.'; - ru = 'Старый высохший колодец.'; - }; - village_well_act_key = { - en = 'Looking at the well, words "the key is hidden near the water", engraved on the ring, come to my mind. The water is no longer here, but it just makes the task easier.'; - ru = 'При виде колодца, мне в голову приходят слова "ключ там, где вода", выгравированные на кольце. Пусть воды здесь уже давно нет, это лишь облегчает задачу.'; - }; - village_well_used = { - en = 'I tie the rope to a protruding stone. Using it I\'ll be able to get out of the well.'; - ru = 'Я привязываю веревку к выступающему камню. По ней я смогу выбраться из колодца.'; - }; - village_maid_dsc = { - en = 'A young {girl} is sitting on the tavern\'s porch.'; - ru = 'На крыльце трактира сидит молодая {девушка}.'; - }; - village_maid_flower = { - en = 'In her hand she holds a beautiful flower with sky-blue petals.'; - ru = 'В руке она держит красивый цветок с небесно-голубыми лепестками.'; - }; - village_maid_act = { - en = 'Long auburn hair fall on the girl\'s shoulders, her hazel eyes looking somewhere far away. Corners of her mouth are rising in a slight smile. She wears a simple blue dress. I don\'t need anything from her.'; - ru = 'Длинные каштановые волосы ниспадают на плечи девушки, карие глаза смотрят куда-то вдаль. Уголки рта приподняты в легкой улыбке. Она одета в простое голубое платье. Мне больше ничего от нее не нужно.'; - }; - village_maid_used_flower = { - en = 'It would be better to talk to her.'; - ru = 'Лучше сначала подойти и поговорить.'; - }; - village_maid_used_other = { - en = 'It\'s doubtful, she needs this.'; - ru = 'Вряд ли ей это будет интересно.'; - }; - maid_dlg = { - en = 'The Girl'; - ru = 'Девушка'; - }; - maid_dlg_enter_no_flower = { - en = 'A young girl is sitting on the tavern\'s porch. Her long auburn hair fall down on her shoulders, her hazel eyes looking somewhere far away. Corners of her mouth are rising in a slight smile. She wears a simple blue dress. When I come near, she looks at me and gives me a friendly but somewhat sad smile. Her thin pale hands lie still on the hem of her dress.'; - ru = 'Молодая девушка сидит на крыльце трактира. Ее длинные каштановые волосы ниспадают на плечи, карие глаза смотрят куда-то вдаль. Уголки рта приподняты в легкой улыбке. Она одета в простое голубое платье. Когда я подхожу, она переводит свой взгляд на меня и приветливо, но немного грустно улыбается. Ее тонкие бледные руки лежат на подоле платья почти не двигаясь.'; - }; - maid_dlg_enter_flower = { - en = 'A young girl is sitting on the tavern\'s porch. Her long auburn hair fall down on her shoulders, her hazel eyes looking somewhere far away. Corners of her mouth are rising in a slight smile. She wears a simple blue dress. When I come near, she looks at me and smiles warmly. In her hand she holds a beautiful flower with sky-blue petals.'; - ru = 'Молодая девушка сидит на крыльце трактира. Ее длинные каштановые волосы ниспадают на плечи, карие глаза смотрят куда-то вдаль. Уголки рта приподняты в легкой улыбке. Она одета в простое голубое платье. Когда я подхожу, она переводит свой взгляд на меня и тепло улыбается мне. В руке она держит красивый цветок с небесно-голубыми лепестками.'; - }; - maid_dlg_greet_response = { - en = 'The girl responds shyly, looking at me, "Please excuse me, I have not noticed you. I will help however I can."'; - ru = 'Девушка смущенно отвечает, смотря на меня: "Простите, я вас не заметила. Помогу, чем смогу".'; - }; - maid_dlg_places_response = { - en = 'Your question catches the girl off-guard. She blushes and keeps silent, not knowing what to say. Some time later she asks, "Isn\'t it nice here?"'; - ru = 'Вопрос ставит девушку в тупик. Она краснеет и молчит, не зная, что ответить. Через некоторое время она спрашивает: "Здесь хорошо, не правда ли?"'; - }; - maid_dlg_places_like = { - en = 'Yes, I like this place.'; - ru = 'Да, мне здесь нравится.'; - }; - maid_dlg_places_like_response = { - en = 'The girl continues, "There are very beautiful flowers in our forest. Previously we came there with the forester and I gathered some for me, but I have nearly no time this year -- I have to help my father in the tavern." She sighs sadly. '; - ru = 'Девушка продолжает: "В нашем лесу растут очень красивые цветы. Раньше мы ходили с лесником и я собирала букет для себя, но в этом году у меня почти нет времени -- надо помогать отцу в трактире". Она грустно вздыхает.'; - }; - maid_dlg_flower = { - en = '[Give the flower to the girl] Here you are.'; - ru = '[Дать девушке цветок] Вот, возьмите.'; - }; - maid_dlg_flower_response = { - en = 'The girl shines. Warmly smiling to you, she whispers, "Thank you!"'; - ru = 'Девушка засияла. Тепло улыбнувшись вам, она произносит: "Спасибо!"'; - }; - maid_dlg_pie_response = { - en = 'The girl jumps from here place and runs to the tavern with a yell, "I\'ll be back!" Some minutes later she returns with a piece of deliciously smelling raspberry pie.'; - ru = 'Девушка соскакивает с места и со словами "Сейчас вернусь!" Убегает в трактир. Через несколько минут она возвращается с куском восхитительно пахнущего малинового пирога.'; - }; - maid_dlg_silent = { - en = '[Remain silent]'; - ru = '[Промолчать]'; - }; - maid_dlg_silent_response = { - en = 'The girl asks, "So, what do you need?"'; - ru = 'Девушка спрашивает: "Так что вы хотели?"'; - }; - maid_dlg_tavern = { - en = 'Do you work in the tavern?'; - ru = 'Вы работаете в трактире?'; - }; - maid_dlg_tavern_response = { - en = 'The girl nods quietly.'; - ru = 'Девушка молча кивает.'; - }; - maid_dlg_pie = { - en = 'Can you bring me a piece of raspberry pie?'; - ru = 'Вы можете принести мне кусок малинового пирога?'; - }; - maid_dlg_pie_fail_response = { - en = 'The girl laughs, "Is our pie so famous that people come from lands beyond only to try it?! Why don\'t you ask my father?"'; - ru = 'Девушка смеется: "Наш пирог настолько знаменит, что люди приезжают из дальних краев, чтобы попробовать его! Почему бы вам не попросить у моего отца?"'; - }; - maid_dlg_no_money = { - en = 'I have no money with me.'; - ru = 'У меня нет с собой денег.'; - }; - maid_dlg_no_money_response = { - en = 'The girl wonders, "How did you get here then?"^After some thinking, she proposes, "You know, I can give you a piece of the pie if you do me a small favor. I do not ask much, just..." She pauses awkwardly, "Please, bring me a flower from our forest. Usually we go there with the forester, but this year we are both too busy. What do you say?"'; - ru = 'Девушка удивленно спрашивает: "Как же вы сюда добрались тогда?"^Немного подумав, она предлагает: "Знаете, я поделюсь с вами пирогом, если вы выполните небольшую мою прихоть. Многого не прошу, просто... -- Она делает неловкую паузу, -- принесите мне цветок из нашего леса. Обычно мы ходим с лесником и я набираю их себе вдоволь, но в этот раз мы оба слишком заняты. Что скажете?"'; - }; - maid_dlg_flower_agree = { - en = 'I agree.'; - ru = 'Согласен.'; - }; - maid_dlg_flower_agree_response = { - en = 'The girl smiles, "Agreed then."'; - ru = 'Девушка улыбается: "Договорились".'; - }; - maid_dlg_flower_think = { - en = 'I need to think.'; - ru = 'Мне надо подумать.'; - }; - maid_dlg_flower_think_response = { - en = 'The girl shrugs, "As you wish. The pie is delicious indeed."'; - ru = 'Девушка пожимает плечами: "Как хотите. Пирог и вправду очень вкусный".'; - }; - maid_dlg_pie_ask = { - en = 'Good, I\'ll ask him.'; - ru = 'Хорошо, я попрошу у него.'; - }; - maid_dlg_pie_ask_response = { - en = 'The girl looks at me silently.'; - ru = 'Девушка молча смотрит на меня.'; - }; - maid_dlg_bye = { - en = 'I have to go.'; - ru = 'Я пойду.'; - }; - maid_dlg_bye_response = { - en = 'The girl nods smiling.'; - ru = 'Девушка кивает, слегка улыбнувшись.'; - }; - tavern = { - en = 'The Village, the Tavern'; - ru = 'Деревня, трактир'; - }; - tavern_decor = { - en = 'The spacious hall of the tavern meets me with warmth and comfort. The room is filled with sunlight passing through the multitude of {#windows|windows} in the log {#walls|walls}. Strong and surprisingly well-made wooden {#tables|tables} are placed around the room. Electric {#lights|lamps} hang from the ceiling. Fragrant steam rises from {#cauldron|a cauldron} hanging above {#fireplace|the fireplace} in the other end of the room.'; - ru = 'Просторный зал трактира встречает меня теплом и уютом. Помещение залито солнечным светом, проникающим через многочисленные {#windows|окна} в бревенчатых {#walls|стенах}. Повсюду расставлены крепкие деревянные {#tables|столы}, на удивление хорошо сделанные. C потолка свисают электрические {#lights|люстры}. Над {#fireplace|очагом} в дальнем конце висит {#cauldron|котелок}, от которого поднимается ароматный пар.'; - }; - tavern_windows = { - en = 'The large windows easily let the light inside the room. The light-green curtains on all of them are open.'; - ru = 'Большие окна легко пропускают в помещение свет. Светло-зеленые занавески, висящие на всех окнах, раскрыты.'; - }; - tavern_tables = { - en = 'The strong heavy tables, each able to fit three or four people, are covered by the snow-white tablecloths.'; - ru = 'Устойчивые тяжелые столы, рассчитанные на трех-четырех человек каждый, накрыты белоснежными скатертями.'; - }; - tavern_walls = { - en = 'The log walls of the tavern create a warm and cosy atmosphere of old times.'; - ru = 'Бревенчатые стены трактира создают теплую атмосферу старины и уюта.'; - }; - tavern_lights = { - en = 'The lamps under the thin plastic shades are turned off.'; - ru = 'Лампы под тонкими пластиковыми абажурами сейчас выключены.'; - }; - tavern_fireplace = { - en = 'Despite the warm summer day outside, the fire in the hearth is burning.'; - ru = 'Несмотря на жаркий летний день, в очаге пылает огонь.'; - }; - tavern_cauldron = { - en = 'Fragrant stew is boiling in the cauldron. Modern gas or electric stoves have not yet come here, or maybe the owner of this place just prefers the old ways.'; - ru = 'Ароматное жаркое бурлит в котелке -- сюда еще не пришли современные газовые или электрические плиты, а, может быть, хозяин просто предпочитает готовить по-старинке.'; - }; - tavern_keeper = { - en = '{The tavern keeper} is waiting behind the polished bar stand.'; - ru = 'За начищенной до блеска барной стойкой скучает {трактирщик}.'; - }; - tavernkeeper_dlg = { - en = 'The Tavern Keeper'; - ru = 'Трактирщик'; - }; - tavernkeeper_dlg_enter = { - en = 'Behind the bar stand I see an obese man with thick black beard. He looks at me cheerfully with his dark eyes. He asks loudly, "What is your wish, my dear guest?"'; - ru = 'За барной стойкой я вижу тучного мужчину с густой черной бородой. Его темные глаза весело смотрят на меня. Он громогласно вопрошает: "Чего изволите, гость дорогой?"'; - }; - tavernkeeper_dlg_greet_response = { - en = 'The tavern keeper smiles and offers his services, "Welcome! In my tavern you can always have a night\'s rest and will never stay without a hot hearty dinner!"'; - ru = 'Трактирщик улыбается и предлагает свои услуги: "Добро пожаловать! В моем трактире вы всегда можете остановиться на ночь и не останетесь без сытного горячего ужина!"'; - }; - tavernkeeper_dlg_money = { - en = 'Thank you, but I have no money with me.'; - ru = 'Благодарю, но у меня нет с собой денег.'; - }; - tavernkeeper_dlg_money_response = { - en = 'The tavern keeper shrugs, "We don\'t serve for free."'; - ru = 'Трактирщик пожимает плечами: "Бесплатно мы не обслуживаем".'; - }; - tavernkeeper_dlg_places_response = { - en = 'The tavern keeper responds, "You have to try our raspberry pie! I swear, you have not tried anything as tasty!"'; - ru = 'Трактирщик уверенно отвечает: "Обязательно попробуйте наш малиновый пирог! Уверяю, вы не пробовали ничего вкуснее!"'; - }; - tavernkeeper_dlg_pie = { - en = 'Can I have your raspberry pie?'; - ru = 'Я могу приобрести у вас малиновый пирог?'; - }; - tavernkeeper_dlg_pie_response = { - en = 'The tavern keeper reaches for the pie saying, "Only a hundred and fifty coins and the pie\'s yours!"'; - ru = 'Трактирщик тянется к пирогу со словами: "Всего сто пятьдесят монет и он ваш!"'; - }; - tavernkeeper_dlg_pie_2 = { - en = 'Sadly, I don\'t have any money with me. Can we negotiate?'; - ru = 'К сожалению, у меня нет с собой денег. Мы можем договориться?'; - }; - tavernkeeper_dlg_pie_response_2 = { - en = 'The tavern keeper returns back and says, "That won\'t do. The pie is only sold for money."'; - ru = 'Трактирщик возвращается на место и говорит: "Так не пойдет. Пирог продается только за деньги".'; - }; - tavernkeeper_dlg_bye = { - en = 'Goodbye.'; - ru = 'До свидания.'; - }; - tavernkeeper_dlg_bye_response = { - en = 'The tavern keeper responds, "Come again!"'; - ru = 'Трактирщик бодро отвечает: "Заходите еще!"'; - }; - townhall = { - en = 'The Town Hall'; - ru = 'Ратуша'; - }; - townhall_decor = { - en = 'I stand in the spacious town hall. Several large crystal {#chandelier|chandeliers} hang from {#ceiling|the ceiling}. It\'s dark in the room -- {#curtains|the curtains} are closed and the light barely seeps through them. In the center of the room a huge {#table|table} stands with massive {#chairs|chairs} around it. In the far end of the room an old {#head|man} is sleeping in an armchair.'; - ru = 'Я стою в просторном зале ратуши. С {#ceiling|потолка} свисает несколько больших хрустальных {#chandelier|люстр}. Сейчас в помещении царит полумрак -– {#curtains|занавески} закрыты и сквозь них пробивается совсем немного света. В центре зала стоит огромный дубовый {#table|стол}, по периметру которого расставлены массивные {#chairs|стулья}. В кресле в дальнем конце стола дремлет пожилой {#head|мужчина}. '; - }; - townhall_onexit = { - en = 'I doubt locals would like it if I steal their possessions. I have to return the oil.'; - ru = 'Вряд ли местным жителям понравится, если я буду красть их вещи. Масло надо вернуть.'; - }; - townhall_ceiling = { - en = 'The high ceiling is covered by darkness, but with my dragon eyes I can easily make out it\'s well crafted and straight planks.'; - ru = 'Высокий потолок скрывается во тьме, однако мне, с моим драконьим зрением, не составляет труда разглядеть его хорошо обработанные и ровные доски.'; - }; - townhall_chandelier = { - en = 'The gilded brackets and arms hold the lamps and a lot of pendants decorating the chandeliers. They are turned off now, but turn it on and sparkling gleams will shine reflecting from the crystal and refracting through it.'; - ru = 'Позолоченные кронштейн и рожки удерживают лампы и множество подвесок, украшающих люстры. Сейчас они выключены, но стоит зажечь свет, и искрящиеся отблески засверкают, отражаясь от хрусталя и преломляясь в нем.'; - }; - townhall_curtains = { - en = 'The faded curtains are closed, barring the light from entering the room. The old cloth is still dense and strong.'; - ru = 'Выцветшие занавески закрыты, преграждая свету путь в помещение. Старая ткань все еще сохраняет свою плотность и прочность.'; - }; - townhall_table = { - en = 'I see a lot of scratches left on the polished surface of the table by visitors in many years. Massive and heavy it stands securely and will serve for a long time.'; - ru = 'На полированной поверхности стола видны многочисленные царапины, оставленные посетителями за долгие годы. Массивный и тяжелый, он стоит как влитой и прослужит еще немало лет.'; - }; - townhall_chairs = { - en = 'Simple but sturdy chairs are as old as the other furniture here. No doubt they will serve for a long time.'; - ru = 'Простые, но крепкие стулья столь же стары, как и остальная мебель здесь. Я не сомневаюсь, что они прослужат еще много лет.'; - }; - townhall_head = { - en = 'There is no reason to wake him up.'; - ru = 'Нет ни малейшего смысла его будить -- пусть себе спит.'; - }; - townhall_cabinet = { - en = 'Near the entrance a robust {cabinet} stands. There is {record_player|a turntable} on top of it. It plays a melody, unknown to me.'; - ru = 'Рядом со входом стоит небольшая крепкая {тумбочка}, на которой стоит {record_player|проигрыватель}, воспроизводящий неизвестную мне мелодию.'; - }; - townhall_cabinet_act_oil = { - en = 'Inside the cabinet I find some {records|vinyl records}, a box with {parts|spare parts}, and {oil|a flask of oil}.'; - ru = 'Внутри тумбочки я обнаруживаю несколько {records|пластинок}, коробочку с {parts|запчастями} и {oil|флакончик с машинным маслом}.'; - }; - townhall_cabinet_act = { - en = 'Inside the cabinet I find some {records|vinyl records} and a box with {parts|spare parts}.'; - ru = 'Внутри тумбочки я обнаруживаю несколько {records|пластинок} и коробочку с {parts|запчастями}.'; - }; - townhall_cabinet_used_oil = { - en = 'I return the flask to its place.'; - ru = 'Я возвращаю флакончик на место.'; - }; - townhall_cabinet_records = { - en = 'Some records. Neither the artists, nor the songs are familiar to me.'; - ru = 'Несколько грампластинок. Ни исполнители, ни песни мне совершенно не знакомы.'; - }; - townhall_cabinet_parts = { - en = 'Spare parts for the turntable, carefully packed in small boxes and packs.'; - ru = 'Запасные детали для проигрывателя, бережно расфасованные по небольшим коробочкам и пакетикам.'; - }; - townhall_cabinet_oil = { - en = 'Flask of Oil'; - ru = 'Флакончик с маслом'; - }; - townhall_cabinet_oil_tak = { - en = 'I take the flask of oil.'; - ru = 'Я беру флакончик с маслом.'; - }; - townhall_cabinet_oil_inv = { - en = 'A nearly full flask of machine oil.'; - ru = 'Почти полный флакончик с машинным маслом.'; - }; - townhall_cabinet_record_player = { - en = 'The turntable is in excellent condition despite its venerable age. The old and worn record cracks and pops, but I still like the music. Unfortunately, it\'s entirely unfamiliar to me.'; - ru = 'Проигрыватель в идеальном состоянии, несмотря на почтенный возраст. Старая заезженная пластинка обильно потрескивает, однако музыка мне определенно нравится. К сожалению, она мне совершенно незнакома.'; - }; - inside_well = { - en = 'Inside the Well'; - ru = 'В колодце'; - }; - inside_well_enter = { - en = 'I doubt I will be able to get out if I just jump in.'; - ru = 'Вряд ли я смогу выбраться, если просто спрыгну внутрь.'; - }; - inside_well_decor = { - en = 'I stand on the bottom of the well. Its inner part is laid of stone. It\'s dark here and I have to take my glasses off to see. Despite that well has dried out a long time ago, moisture is still quite high inside.'; - ru = 'Я стою на дне колодца. Внутренняя его часть выложена камнем. Здесь царит темнота и мне приходится снять очки, чтобы хорошо видеть. Несмотря на то, что колодец давно высох, здесь все еще очень влажно.'; - }; - inside_well_loose_rock = { - en = '{One of the rocks} catches my attention. It visibly protrudes from the stonework.'; - ru = 'Мое внимание привлекает {один из камней}, заметно выступающий из кладки.'; - }; - inside_well_loose_rock_act = { - en = 'I easily remove the rock. Beneath it in a small niche a metal key is hidden. Surprisingly, moisture has not damaged it.'; - ru = 'Я легко вынимаю камень. Под ним, в небольшом углублении, спрятан металлический ключик. Удивительно, но влажность почти не повредила ему.'; - }; - hidden_key_disp = { - en = 'Key'; - ru = 'Ключик'; - }; - hidden_key_disp2 = { - en = 'the key'; - ru = 'ключик'; - }; - hidden_key_disp3 = { - en = 'the key'; - ru = 'ключик'; - }; - hidden_key_inv = { - en = 'The old metal key I found in the well.'; - ru = 'Старый металлический ключик, найденный мной в колодце.'; - }; - village_north = { - en = 'The Village, North'; - ru = 'Деревня, север'; - }; - village_north_decor = { - en = 'I stand in the northern part of {#village|the village}. A narrow {#road|road} leads directly to {#library|the library}, standing on the very edge of the village. Behind it I can only see the endless {#forest} and {#mountains|the mountain range} stretching further north.'; - ru = 'Я стою на северном краю {#village|деревни}. Узенькая {#road|дорожка} ведет прямо к зданию {#library|библиотеки}, стоящему на самом краю деревни. За ним я вижу лишь бескрайний {#forest|лес} и тянущуюся дальше на север {#mountains|горную цепь}.'; - }; - village_north_village = { - en = 'The village to the south of me seems asleep. Well-tended houses are covered with foliage, empty roads lie between them. Only on the tavern\'s porch I see a lonely girl in a blue dress.'; - ru = 'Деревня, раскинувшаяся к югу от меня, выглядит спящей -- ухоженные домики укрыты в листве, дорожки между ними пусты. Лишь на крыльце трактира я вижу одинокую девушку в голубом платье.'; - }; - village_north_road = { - en = 'The asphalt here is even more cracked than in other places. Here and there it\'s pierced by thin stalks of grass.'; - ru = 'Асфальт здесь еще более потрескавшийся чем в остальных местах. Кое-где сквозь трещины пробиваются тонкие стебельки травы.'; - }; - village_north_forest = { - en = 'The forests starts immediately behind the library. Trees are not as dense here as further north where the thicket becomes completely impassable. The air is filled with a conifer aroma and birds\' singing is heard from all around.'; - ru = 'Лес начинается почти сразу за библиотекой. Здесь деревья не так часты, как дальше к северу, где чаща становится совершенно непролазной. Воздух наполнен ароматом хвои, а со всех сторон доносится пение птиц.'; - }; - village_north_library = { - en = 'The tall and spacious building fits an enormous amount of books under its roof. Despite its venerable age, it is in perfect condition due to the best possible care. The wide double doors are ajar, inviting guests.'; - ru = 'Высокое и просторное, здание вместило под своей крышей огромное количество книг. Несмотря на почтенный возраст, оно сохранилось практически идеально, благодаря прекрасному уходу. Широкие двустворчатые двери приоткрыты, приглашая гостей.'; - }; - village_north_mountains = { - en = 'Most of the mountain range is hidden from my sight by the trees. From here I can see only a number of the highest peaks.'; - ru = 'Большая часть горной цепи скрыта от моего взора деревьями. Отсюда я вижу лишь несколько высочайших пиков.'; - }; - library = { - en = 'Library'; - ru = 'Библиотека'; - }; - library_decor = { - en = 'The inner space of the library is a large hall filled with {library_shelves|bookshelves}. Between them here and there cozy {#tables|tables} with {#lamps|floor lamps} and {#chairs|armchairs} nearby are seen. There are only a few {#windows|windows} in the building and the artificial lighting is preferred. {#library_notice|A tablet} hangs on the wall near the entrance.'; - ru = 'Внутреннее пространство библиотеки представляет собой просторный зал, уставленный книжными {library_shelves|стеллажами}. Между ними то и дело встречаются уютные {#tables|столики} с расположенными рядом с ними {#chairs|креслами} и стоящими неподалеку {#lamps|торшерами}. {#windows|Окон} в здании немного и предпочтение отдается искусственному освещению. К стене у входа прибита небольшая {#library_notice|табличка}.'; - }; - library_librarian = { - en = 'An old {man} with a book in his hands walks around the hall.'; - ru = 'По залу ходит пожилой {человек} с книгой в руках.'; - }; - library_librarian_used_box = { - en = 'Maybe it\'s better to ask rather than poking him with this.'; - ru = 'Наверное, есть смысл спросить, прежде чем совать ему это в руки.'; - }; - library_librarian_used_other = { - en = 'He\'s not interested in this.'; - ru = 'Вряд ли это сможет его заинтересовать.'; - }; - library_tables = { - en = 'The small round tables on bronze stands are helpfully placed all around the hall.'; - ru = 'Небольшие круглые столики на бронзовых ножках услужливо расставлены по залу.'; - }; - library_chairs = { - en = 'The comfy soft armchairs for visitors.'; - ru = 'Удобные мягкие кресла, предназначенные для посетителей.'; - }; - library_lamps= { - en = 'Near every armchair stands a floor lamp with a green conical shade. All of them are turned off now -- there is enough light from the windows, and there are no visitors besides me.'; - ru = 'Около каждого кресла стоит торшер с зеленым абажуром в форме усеченного конуса. Сейчас они все выключены -- днем света достаточно даже из немногочисленных окон, да и посетителей кроме меня нет.'; - }; - library_windows= { - en = 'The light beige curtains on the large transparent windows are open. On the north and the east I can only see the endless forest. Behind the trees in the west a mountain range stretches. Through the windows on the southern wall a view of the village opens.'; - ru = 'Легкие бежевые занавески на больших прозрачных окнах распахнуты. На севере и востоке я вижу лишь бескрайний лес. За деревьями на западе тянется горная гряда. Через окна на юге открывается вид на деревню.'; - }; - library_shelves_act_first = { - en = 'Long I wander in this labyrinth of shelves. It would take more than a month only to get acquainted with the names of books here. I wonder how all this treasure got to this hole? Finally I stop near {library_the_shelf|one of the shelves}.'; - ru = 'Я долго блуждаю в лабиринте полок и стеллажей. У меня ушло бы больше месяца только на то, чтобы ознакомиться с названиями книг собранных здесь. Интересно, откуда в этом захолустье такие сокровища? Наконец, я останавливаюсь у {library_the_shelf|одной из полок}.'; - }; - library_shelves_act = { - en = 'This time I found the same {library_the_shelf|shelf} without any issues.'; - ru = 'В этот раз, я без труда нахожу ту самую {library_the_shelf|полку}.'; - }; - library_the_shelf_act = { - en = 'On the first glance this shelf is entirely ordinary. Only after examining it closely I understand what has caught my attention -- on the smooth surface a word "%word%" is carved with careful and even letters. It definitely serves some purpose.'; - ru = 'На первый взгляд, полка ничем не примечательна. Лишь осмотрев ее, я понимаю, что именно привлекло мое внимание -- на гладкой поверхности аккуратными и ровными буквами вырезано слово "%word%". Это определенно имеет какой-то смысл.'; - }; - library_notice_inside_decor = { - en = [[ - An old metal tablet contains the list of the library rules:^ - 1. You can take any books you like. You must either return the books yourself or ask somebody to do it for you.^ - 2. You can bring any book and leave it here.^ - 3. You can put the book on it's place yourself using the positioning table or give it to the librarian.^ - 4. Please put the books on the shelves in the alphabetic order.^^ - I notice nearly erased remains of old paint around the word "alphabetic" in the last rule, as if it was at some point marked with a color. - ]]; - ru = [[ - Старая металлическая табличка содержит список правил пользования библиотекой:^ - 1. Вы можете брать любые книги. Все взятые книги вы обязаны вернуть сами или кто-то должен сделать это за вас. ^ - 2. Вы можете принести любую книгу и оставить ее здесь.^ - 3. Вы можете самостоятельно поставить книгу на место, используя таблицу размещения или передать ее библиотекарю.^ - 4. В пределах полки ставьте книги в алфавитном порядке.^^ - Вокруг слова "алфавитном" в последнем правиле я замечаю практически стершиеся следы старой краски, словно когда-то оно было выделено цветом. - ]]; - }; - librarian_dlg = { - en = 'The Librarian'; - ru = 'Библиотекарь'; - }; - librarian_dlg_enter = { - en = 'An old man in an ancient dark gray suit is standing in front of me. He wears a dark-blue bow tie around his neck. A corner of a well-ironed handkerchief sticks out from the pocket on his chest. I see a ring with a jewel on the index finger of his right hand. I wonder, how did it get here? The man holds a thick book in his left hand, unfortunately I do not see its name. The horn-rimmed spectacles sit on the nose of the librarian. His chin is clean-shaven and his short hair are entirely white. His gray eyes watch me calmly and his mouth is slightly open in a friendly smile.'; - ru = 'Передо мной стоит пожилой человек в старом темно-сером костюме. На шее он носит темно-синий галстук-бабочку. Из нагрудного кармана торчит уголок тщательно выглаженного носового платка. На указательном пальце правой руки старика я замечаю кольцо с драгоценным камнем. Интересно, как оно оказалось в такой глуши? В левой руке он держит толстенную книгу, названия которой я, к сожалению, не вижу. На носу библиотекаря сидят очки в роговой оправе. Подбородок его гладко выбрит, а короткие волосы совершенно седы. Серые глаза спокойно смотрят на меня, а рот слегка приоткрыт в дружелюбной улыбке.'; - }; - librarian_dlg_greet_response = { - en = 'The man respectfully nods and declares, "Welcome! How can a humble librarian assist you?"'; - ru = 'Мужчина почтительно кивает и произносит: "Добро пожаловать! Чем скромный библиотекарь может помочь вам?"'; - }; - librarian_dlg_places_response = { - en = 'The librarian shrugs, "I don\'t think there is much to look at."'; - ru = 'Библиотекарь пожимает плечами: "Не думаю, что здесь есть на что смотреть".'; - }; - librarian_dlg_library = { - en = 'Your library can give odds to any other I\'ve seen. How have you manage to collect so many books?'; - ru = 'Ваша библиотека даст фору любой другой, которую я видел. Как вам удалось собрать столько книг?'; - }; - librarian_dlg_library_response = { - en = 'The librarian answers with a smile, "It\'s a labor of generations. It\'s not easy to get to civilization from here. Many of these books were brought here by strangers, others were gathered by my predecessors. In any case do not hesitate to take any of them. But don\'t forget to return them back."'; - ru = 'Библиотекарь с улыбкой отвечает: "Это дело рук многих поколений. Отсюда не так просто добраться до цивилизации. Многие из этих книг были привезены сюда странниками, другие собирали мои предшественники. В любом случае, не стесняйтесь брать любую из них. Главное -- не забудьте вернуть".'; - }; - librarian_dlg_library_old = { - en = 'This building seems to be very old. How long has it been here?'; - ru = 'Это здание выглядит очень старым, как давно оно было построено?'; - }; - librarian_dlg_library_old_response = { - en = 'The librarian smiles slightly, remembering the old times: "Very long, indeed. My grandpa told me about his childhood days here, reading of faraway lands and perilous adventures..."'; - ru = 'Библиотекарь слегка улыбается, погружаясь в воспоминания: "Очень давно, еще мой дед рассказывал о том, как в молодости проводил здесь дни и недели, читая о дальних странствиях и опасных приключениях..."'; - }; - librarian_dlg_ring = { - en = 'Where did you get this ring?'; - ru = 'Откуда у вас это кольцо?'; - }; - librarian_dlg_ring_response = { - en = 'The old man demonstrates his ring to me. I examine this masterpiece of jewelry with awe. The golden ring is decorated by an intricate carving and encrusted with a large emerald, about four millimeters in diameter. Removing his hand the man explains, "This ring has been kept here from times immemorial. My predecessor gave it to me and I will give it to the one who will keep this library after me."'; - ru = 'Старик демонстрирует мне свое кольцо. Я с интересам разглядываю произведение ювелирного искусства. Золотое колечко, украшенное причудливой резьбой, инкрустировано крупным изумрудом -- около четырех миллиметров в диаметре. Убрав руку, он поясняет: "Это кольцо хранится здесь с незапамятных времен. Мне передал его мой предшественник, а я передам его тому, кто будет хранить эту библиотеку после меня".'; - }; - librarian_dlg_ring_look = { - en = 'Can I look at your ring?'; - ru = 'Могу я взглянуть на ваше кольцо?'; - }; - librarian_dlg_ring_look_response = { - -- Please take note that the engraved words are also used in `village_well_act_key` key - en = 'The librarian takes the ring off his finger without a word and gives it to me. I examine the treasure carefully. On the inside a writing is carved, "The key is hidden near the water." I return the ring to its owner and he puts it back on.'; - ru = 'Библиотекарь, не говоря ни слова, снимает кольцо с пальца и протягивает мне. Я внимательно осматриваю драгоценность. На внутренней стороне выгравирована надпись: "Ключ там, где вода". Я возвращаю кольцо владельцу и он надевает его обратно.'; - }; - librarian_dlg_bye = { - en = 'Goodbye.'; - ru = 'До свидания.'; - }; - librarian_dlg_bye_response = { - en = 'The old man nods, "Best wishes to you."'; - ru = 'Старик кивает: "Всего хорошего".'; - }; - library_shelf_puzzle_shelf_multiple = { - en = 'A number of books are standing on {shelf|the shelf}:'; - ru = 'На {shelf|полке} стоят несколько книг:'; - }; - library_shelf_puzzle_shelf_single = { - en = 'A book is standing on {shelf|the shelf}:'; - ru = 'На {shelf|полке} стоит книга:'; - }; - library_shelf_puzzle_shelf_none = { - en = '{The shelf} is empty.'; - ru = '{shelf|Полка} пуста.'; - }; - library_shelf_puzzle_shelf_act = { - en = 'The word "%word%" is carved on the smooth wood of the shelf.'; - ru = 'На гладком дереве полки вырезано слово "%word%".'; - }; - library_shelf_puzzle_used_book = { - en = 'I put the book on the shelf.'; - ru = 'Я ставлю книгу на полку.'; - }; - library_shelf_puzzle_used_book_success = { - en = 'The rack rotates, opening a passage to a previously hidden room.'; - ru = 'Стеллаж поворачивается, открывая проход в ранее скрытое помещение.'; - }; - library_shelf_book_disp = { - en = 'History, Vol. %number%'; - ru = 'История мира, том %number%'; - }; - library_shelf_book_dsc = { - en = '{"History, Vol. %number%"}'; - ru = '{"История мира, том %number%"}'; - }; - library_shelf_book_tak = { - en = 'I take the book from the shelf.'; - ru = 'Я беру книгу с полки.'; - }; - library_shelf_book_inv = { - en = 'A quite old edition of one of the most popular books on the history of the world.'; - ru = 'Довольно старое издание одной из самых распространенных книг по общемировой истории.'; - }; - library_hidden_room = { - en = 'Library, the Secret Room'; - ru = 'Библиотека, потайная комната'; - }; - library_hidden_room_decor = { - en = 'This library has definitely been designed by a very talented person. I could examine this building to and through, measure each corner, but I would still not be able to figure out that this room is hidden here. The room contains nothing but a small {#table|table}.'; - ru = 'Эту библиотеку определенно проектировал кто-то невероятно талантливый. Я мог бы исходить здание вдоль и поперек, исследовать и измерить каждый уголок, но все равно не догадался бы, что здесь скрыта эта комнатушка. Здесь нет ничего кроме маленького {#table|столика}.'; - }; - library_hidden_room_table = { - en = 'A small round table with a bronze leg, same as the other ones in the library. '; - ru = 'Небольшой круглый столик на бронзовой ножке, такой же как и те, что расставлены по всей библиотеке.'; - }; - box_disp = { - en = 'Old Box'; - ru = 'Старая шкатулка'; - }; - box_disp2 = { - en = 'the old box'; - ru = 'cтарая шкатулка'; - }; - box_disp3 = { - en = 'the old box'; - ru = 'старую шкатулку'; - }; - box_dsc = { - en = 'There is an intricately decorated {box} on the table.'; - ru = 'На столе стоит изящно украшенная {шкатулка}.'; - }; - box_tak = { - en = 'I take the box.'; - ru = 'Я забираю шкатулку.'; - }; - box_inv_without_lock = { - en = 'An antique box. A ring with a jewel is engraved on its bottom.'; - ru = 'Старинная шкатулка. На дне ее выгравировано кольцо с камнем.'; - }; - box_inv_take_lock = { - en = 'I remove the lock from the box.'; - ru = 'Я снимаю замок со шкатулки.'; - }; - box_inv_known = { - en = 'I recall seeing it somewhere.'; - ru = 'Кажется, я где-то уже видел его.'; - }; - box_inv = { - en = 'A very old box. I can only imagine what\'s hidden inside. A ring with a jewel is engraved on its bottom.'; - ru = 'Очень старая шкатулка. Я могу только догадываться, что скрывается внутри. На дне шкатулки выгравировано кольцо с камнем.'; - }; - box_used_key_success = { - en = 'The key turns with difficulty and the lock opens. There is a small scroll inside. Unwrapping it I see that it is a map. I take it.'; - ru = 'Ключ с трудом поворачивается и замок открывается. Внутри лежит небольшой свиток. Развернув его, я понимаю, что это карта. Я забираю его.'; - }; - box_used_key_failed = { - en = 'Over the time the lock has rusted and I\'m unable to turn the key.'; - ru = 'За долгое время замок успел заржаветь и сейчас ключ в нем не повернуть.'; - }; - box_used_key_oil = { - en = 'I put a drop of oil in the lock. This should be enough to make the mechanism work.'; - ru = 'Я капаю немного масла в замок. Этого должно хватить, чтобы смазать механизм и заставить его работать.'; - }; - box_used_key_oil2 = { - en = 'The lock is already oiled.'; - ru = 'Замок уже смазан.'; - }; - map_disp = { - en = 'Map'; - ru = 'Карта'; - }; - map_disp2 = { - en = 'the map'; - ru = 'карта'; - }; - map_disp3 = { - en = 'the map'; - ru = 'карту'; - }; - map_inv = { - en = 'A very old map showing a place somewhere in the mountains, to the west of the village. It\'s not far -- about ten minutes on my wings.'; - ru = 'Очень старая карта, указывающая на место в горах, к западу от деревни. Это совсем недалеко -- минут десять полета.'; - }; - inside_crater_glade = { - en = 'Crater, the Glade'; - ru = 'Кратер, полянка'; - }; - inside_crater_glade_on_enter = { - en = 'I begin transforming without even touching the ground. Shrouded by fog my body immediately rushes downwards. In a moment I find myself on a glade in a human body. My eyes glow brightly, but I have no one to hide from here, so I leave my glasses in the pocket.'; - ru = 'Еще не коснувшись земли, я начинаю превращение. Окутанное туманом, мое тело резко устремляется вниз. Через мгновение я оказываюсь на поляне в облике человека. Мои глаза излучают яркий свет, но мне не от кого прятаться -- очки остаются в нагрудном кармане.'; - }; - inside_crater_glade_decor = { - en = 'A small round glade amidst a rare deciduous {#forest|forest}. A huge old {#oak|oak} with a spreading crown stands in the center of it. Emerald green {#grass|grass} reaches my waist. {#path|A path} leads to {#tower|the tower} in the center of {#crater|the crater}.'; - ru = 'Небольшая круглая полянка посреди редкого лиственного {#forest|леса}. В центре ее стоит огромный старый {#oak|дуб} с раскидистой кроной. Изумрудно зеленая {#grass|трава} достигает мне до пояса. Невесть кем протоптанная {#path|тропинка} ведет к {#tower|башне} в центре {#crater|кратера}.'; - }; - inside_crater_glade_forest = { - en = 'In the shade of spreading elms and slender beeches squirrels, hares, and other small animals play. I can hear a woodpecker drumming and birds singing somewhere far away.'; - ru = 'В тени раскидистых вязов и стройных буков резвятся белки, зайцы и другие мелкие зверьки. Издалека доносятся стук дятла и пение птиц.'; - }; - inside_crater_glade_oak = { - en = 'A herculean tree grows in the center of the glade. The gentle wind rustles its branches, covered by thick green foliage. An owl sleeps in a gigantic hollow in the tree.'; - ru = 'Исполинское древо произрастает в самом центре поляны. Легкий ветерок шелестит в его ветвях, покрытых густой зеленой листвой. В огромном дупле спит филин.'; - }; - inside_crater_glade_grass = { - en = 'The wild grass rises high not held by anything or anyone.'; - ru = 'Дикая трава поднимается высоко, ничем и никем не сдерживаемая.'; - }; - inside_crater_glade_path = { - en = 'Somebody has made a narrow path in the grass leading directly to the tower.'; - ru = 'Кто-то аккуратно вытоптал в густой траве узенькую тропку, ведущую прямиком к башне.'; - }; - inside_crater_glade_tower = { - en = 'The tower of black rock rises above the forest, like a lighthouse built for anyone ending up here.'; - ru = 'Башня из черного камня возвышается над лесом, словно маяк, установленный для любого, оказавшегося здесь.'; - }; - inside_crater_glade_crater = { - en = 'Being here, near the center of the giant crater, I do not see anything that would make this forest and landscape different from any other I\'ve seen.'; - ru = 'Находясь здесь, практически в самом центре громадной воронки, я не вижу ничего, что отличало бы этот лес и ландшафт от других, виденных мной.'; - }; - inside_crater_path = { - en = 'Crater, the Path'; - ru = 'Кратер, тропинка'; - }; - inside_crater_path_decor = { - en = 'A narrow path, made by someone unknown in the thick {#grass|grass}, leads to the center of {#crater|the crater}. The sunlight seeps through the foliage creating an intricate pattern of shadows all around: on the trunks of {#trees|the trees}, on the grass, and on the path itself. Far away in front of me {#tower|the tower} is visible.'; - ru = 'Узкая тропинка, невесть кем протоптанная в густой {#grass|траве}, ведет к центру {#crater|кратера}. Солнечный свет пробивается сквозь листву, образуя причудливый узор из теней повсюду: на стволах {#trees|деревьев}, на траве и на самой тропинке. Далеко впереди виднеется {#tower|башня}.'; - }; - inside_crater_path_exit = { - en = 'I continue walking without speaking to the dragoness. She spreads her wings and flies away.'; - ru = 'Я продолжаю свой путь, так и не поговорив с драконессой. Она расправляет крылья и улетает.'; - }; - inside_crater_path_grass = { - en = 'Lacking the excesses of sunlight the grass is shorter here than on the glade. Nevertheless it still retains its saturated emerald green color.'; - ru = 'Здесь, лишенная излишков солнечного света, трава гораздо ниже, чем на полянке. Тем не менее она все такого же насыщенного изумрудного цвета.'; - }; - inside_crater_path_crater = { - en = 'Even here, near the very center of the crater, I do not see any signs of the fallen object. The weather and the forest slowly do their job and methodically mend this giant scar on the Earth\'s body.'; - ru = 'Даже находясь здесь, у самого центра громадной воронки, я не вижу никаких следов падения -- погода и лес делают свое дело и методично заживляют огромный шрам на теле Земли.'; - }; - inside_crater_path_trees = { - en = 'High trees with spreading crowns sway lightly from the gentle wind. In the weaves of the roots small animals make their homes, and all kinds of birds are sitting on the branches.'; - ru = 'Высокие деревья с раскидистыми кронами едва качаются от легкого ветерка. В сплетениях корней устраивает свои жилища мелкая живность, а на ветвях сидят всевозможные птицы.'; - }; - inside_crater_path_tower = { - en = 'The tall black building raising above the forest is mostly hidden from my sight by the thick foliage.'; - ru = 'Черное высокое строение, возвышающееся над лесом, практически скрыто от моего взора густой листвой.'; - }; - inside_crater_path_stump = { - en = 'A huge {rock} lies near me.'; - ru = 'Неподалеку от меня лежит огромный {валун}.'; - }; - inside_crater_path_stump_act = { - en = 'The rock is half buried into the ground. Obviously it lies here for a very long time. It must be one of the largest debris left here when the crater appeared.'; - ru = 'Валун наполовину врос в землю. Судя по всему, он лежит здесь очень давно. Должно быть, это один из крупных обломков, оказавшихся здесь после образования кратера.'; - }; - inside_crater_path_stump_with_solarscale = { - en = 'A huge {rock} lies near me with a small {solarscale|dragoness} sitting on top of it.'; - ru = 'Неподалеку от меня лежит огромный {валун}, на котором примостилась небольшая золотая {solarscale|драконесса}.'; - }; - crater_near_tower = { - en = 'Crater, Near the Tower Entrance'; - ru = 'Кратер, у входа в башню'; - }; - crater_near_tower_decor = { - en = 'The path leads me to a glaring black opening in one of the walls of {#tower|the tower} built of some black material unfamiliar to me. {#grass|The grass} comes to the tower\'s very foot. Spreading crowns of {#trees|the trees} nearly cover the sky. Rays of {#sun|the sun} seep through the foliage and make an intricate pattern falling on the grass, the path, and the tower\'s walls.'; - ru = 'Тропинка выводит меня к зияющему чернотой проему в одной из стен {#tower|башни}, построенной из незнакомого мне черного материала. {#grass|Трава} подступает к самому ее подножию. Раскидистые кроны {#trees|деревьев} практически полностью закрывают собой небо. Лучи {#sun|солнца} пробиваются сквозь листву и, падая на траву, тропинку и стены башни, образуют причудливый узор.'; - }; - crater_near_tower_tower = { - en = 'The tower\'s base is a regular hexagon. It is unknown how far it goes below the ground. Matte surface feels cold and smooth like glass. I neither see nor feel any joints as if the tower is made of a solid piece of rock. Its walls rise vertically, and its top is hidden by the trees.'; - ru = 'Основание башни имеет форму правильного шестиугольника. Непонятно, насколько глубоко оно уходит в землю. Матовая поверхность на ощупь оказывается холодной и гладкой как стекло. Я не вижу и не ощущаю никаких стыков, словно башня вырезана из единого куска породы. Стены ее отвесно поднимаются ввысь, а вершина скрыта за кронами деревьев.'; - }; - crater_near_tower_grass = { - en = 'The thick green grass grows all around this forest.'; - ru = 'Густая зеленая трава произрастает повсюду в этом лесу.'; - }; - crater_near_tower_trees = { - en = 'The trees grow almost by the tower. They must have grown here after its appearance.'; - ru = 'Деревья растут практически у самой башни. Они, должно быть, выросли здесь уже после ее появления.'; - }; - crater_near_tower_sun = { - en = 'The bright summer sun illuminates the forest with its rays.'; - ru = 'Яркое летнее солнце озаряет своими лучами лес.'; - }; - leave_books_message = { - en = 'I don\'t need these books. I better leave them here.'; - ru = 'Мне не нужны эти книги, лучше оставить их здесь.'; - }; - }; - solarscale_locale = { - disp = { - en = 'Solarscale'; - ru = 'Соларскейл'; - }; - first_dlg_enter = { - en = 'A dragoness with the scale of glittering gold and brightly glowing emerald eyes is sitting on a rock. Her mouth with the two rows of shining teeth is slightly opened. Her wings folded on her back, and hands crossed on her chest. She looks at me in a friendly way. She is only about a meter tall. Obviously she is from the species of smaller-sized dragons. The dragoness looks at me smiling, "Well met, stranger. My name is Solarscale. What brings you here?"'; - ru = 'Драконесса с сияющими золотом чешуйками и излучающими яркий свет изумрудами глаз сидит на камне, слегка приоткрыв пасть с двумя рядами ровных сверкающих зубов. Крылья ее сложены за спиной, а руки -- скрещены на груди. Она приветливо смотрит на меня. Ее рост составляет всего около метра -- очевидно, она из вида драконов небольшого размера. Драконесса не спускает с меня взгляд, улыбаясь: "Добрый день, путник. Меня зовут Соларскейл. Что привело вас в эти края?"'; - }; - first_dlg_dragon = { - en = 'I would have never expected to see a dragon. How did you get here?'; - ru = 'Никак не ожидал увидеть дракона. Как вы попали сюда?'; - }; - first_dlg_dragon_response = { - en = 'Solarscale replies, "I\'m returning home from a long travel. Just stopped here for a rest." Suddenly, she halts astonished, "Your eyes! You are also a dragon, right?"'; - ru = 'Соларскейл отвечает: "Я возвращаюсь домой после долгого странствия. Просто остановилась здесь передохнуть". Внезапно, она застывает в удивлении: "Ваши глаза! Вы ведь тоже дракон, да?"'; - }; - first_dlg_dragon_admit = { - en = 'It\'s hard to hide this from you. Yes, I am.'; - ru = 'От вас ничего не скрыть. Да, так и есть.'; - }; - first_dlg_dragon_question = { - en = 'Why do you think so?'; - ru = 'С чего вы взяли?'; - }; - first_dlg_dragon_decline = { - en = 'You are mistaken.'; - ru = 'Вы ошибаетесь.'; - }; - first_dlg_about_map = { - en = '[Tell about the map] It\'s a long story...'; - ru = '[Рассказать о карте] Это долгая история...'; - }; - first_dlg_about_map_response = { - en = 'Solarscale thoughtfully utters, "Fascinating. So you even don\'t know what you\'re looking for?"'; - ru = 'Соларскейл задумчиво произносит: "Занятно. Так значит, вы даже не знаете что ищете?"'; - }; - first_dlg_about_map_1 = { - en = 'Seems like so.'; - ru = 'Выходит так.'; - }; - first_dlg_about_map_2 = { - en = 'It should be in this crater.'; - ru = 'То что я ищу должно быть в этом кратере.'; - }; - first_dlg_about_map_3 = { - en = 'Maybe you could help me?'; - ru = 'Быть может, вы сможете мне помочь?'; - }; - first_dlg_about_map_1_response = { - en = 'Solarscale nods, "Well, good luck in your search."'; - ru = 'Соларскейл кивает: "Что же, желаю вам успехов в поисках".'; - }; - first_dlg_about_map_3_response = { - en = 'Solarscale smiles once again, "Of course." Thinking a bit, she continues, "I believe, it\'s better to start with the tower of strange stone. I could not get inside, but maybe you can. Just follow the path".'; - ru = 'Соларскейл вновь улыбается: "Разумеется". Немного подумав, она продолжает: "Я думаю, стоит начать с башни из странного камня. Я не смогла попасть внутрь, но, может быть, у вас получится. Просто следуйте по этой тропинке".'; - }; - first_dlg_dragon_admit_response = { - en = 'Solarscale nods: "I would have never expected to find anyone of my kin! I haven\'t even recognise you right away! What brings you here?"'; - ru = 'Соларскейл кивает: "Никогда не думала, что встречу кого-нибудь из сородичей! Даже не сразу поняла, кто вы! Так что привело вас сюда?"'; - }; - first_dlg_dragon_question_response = { - en = 'Solarscale explains smiling, "It\'s not easy to hide from another dragon. But how did you get here?"'; - ru = 'Соларскейл, улыбнувшись, отвечает: "Это не так просто скрыть от другого дракона. Но как вы здесь оказались?"'; - }; - first_dlg_dragon_decline_response = { - en = 'Solarscale squints cunningly. You understand that she sees through me easily, "Let it be your way. So, how did you get here?"'; - ru = 'Соларскейл хитро щурится, вы понимаете, что она видит вас насквозь: "Пусть будет по-вашему. Так, как вы здесь оказались?"'; - }; - first_dlg_unusual = { - en = 'Have you seen anything unusual nearby?'; - ru = 'Вы не встречали поблизости ничего необычного?'; - }; - first_dlg_unusual_response = { - en = 'Solarscale raises her wings and thoughtfully touches her chin, "I don\'t recall anything... Besides the tower of strange stone. I was not able to get inside, but maybe you can. Just follow this path."'; - ru = 'Соларскейл приподнимает крылья и задумчиво касается подбородка рукой: "Не припомню ничего интересного... Кроме башни из странного камня. Я не смогла попасть внутрь, но, может быть, у вас получится. Просто следуйте по этой тропинке".'; - }; - first_dlg_tower = { - en = 'Tell me more about this tower.'; - ru = 'Расскажите больше о башне.'; - }; - first_dlg_tower_response = { - en = 'Solarscale continues, "The tower looks as if it\'s cut of a whole piece of rock. I was unable to find a single hole or joint in it. I am not sure if it\'s not just a piece of solid rock."'; - ru = 'Соларскейл продолжает: "Башня выглядит вырезанной из цельного куска камня, я не смогла найти ни единого отверстия, ни единого стыка в ней. Я даже не уверена, что это не просто кусок камня".'; - }; - first_dlg_tower_join = { - en = 'I am going to the tower. Will you join me?'; - ru = 'Я собираюсь отправиться к башне. Вы не составите мне компанию?'; - }; - first_dlg_tower_join_response_fail = { - en = 'Solarscale thoughtfully looks at me and carefully says, "I\'d rather be on my way".'; - ru = 'Соларскейл задумчиво смотрит на меня и осторожно отвечает: "Наверное, я предпочту продолжить свой путь".'; - }; - first_dlg_tower_join_1 = { - en = 'Don\'t you want to explore the tower?'; - ru = 'Разве вы не хотите разобраться с башней?'; - }; - first_dlg_tower_join_response_success_1 = { - en = 'Solarscale rises into the air and responds, "Why not? I am not in a hurry."'; - ru = 'Соларскейл поднимается в воздух и отвечает: "Почему нет? Я никуда не спешу".'; - }; - first_dlg_tower_join_response_fail_1 = { - en = 'Solarscale thoughtfully looks in the direction of the tower.'; - ru = 'Соларскейл задумчиво смотрит в сторону башни.'; - }; - first_dlg_tower_join_2 = { - en = 'I would really appreciate your help.'; - ru = 'Мне не помешает ваша помощь.'; - }; - first_dlg_tower_join_response_2 = { - en = 'Solarscale shrugs, "I don\'t want to stay here for too long."'; - ru = 'Соларскейл пожимает плечами: "Я бы не хотела здесь задерживаться".'; - }; - first_dlg_tower_join_3 = { - en = 'I thought we, dragons, should keep together.'; - ru = 'Я думал, нам, драконам, стоит держаться вместе.'; - }; - first_dlg_tower_join_response_success_3 = { - en = 'Solarscale rises into the air and responds, "Yes, you are right. Let\'s go!"'; - ru = 'Соларскейл поднимается в воздух и отвечает: "Да, вы правы. Вперед!"'; - }; - first_dlg_tower_join_response_fail_3 = { - en = 'Solarscale thoughtfully looks at me.'; - ru = 'Соларскейл задумчиво смотрит на меня.'; - }; - first_dlg_tower_bye_no_time = { - en = 'I\'m sorry, but I don\'t have time to speak.'; - ru = 'Прошу прощения, но у меня нет времени разговаривать.'; - }; - first_dlg_tower_bye_thanks = { - en = 'Thank for your help. I have to go.'; - ru = 'Благодарю за помощь. Мне пора.'; - }; - first_dlg_tower_bye_response = { - en = 'Solarscale rises into the air and says goodbye, "So I\'ll continue my way. Best wishes to you."^ She flies away leaving me alone.'; - ru = 'Соларскейл поднимается в воздух и прощается: "Что же, тогда я продолжу свой путь. Всего вам доброго".^ Драконесса улетает, оставляя меня одного.'; - }; - solarscale_ally_outside = { - en = '{Solarscale} flies right next to me.'; - ru = '{Соларскейл} летит следом за мной.'; - }; - solarscale_ally_glade = { - en = '{Solarscale} passionately admires the flowers, nearly hidden from my sight by the tall grass.'; - ru = '{Соларскейл} увлеченно любуется цветами, практически скрытая от моего взора высокой травой.'; - }; - solarscale_ally_glade_life = { - en = 'Solarscale descends to the ground after me. The grass nearly hides her from my sight.'; - ru = 'Соларскейл опускается на землю следом за мной. Трава практически полностью скрывает драконессу от моего взора.'; - }; - solarscale_ally_glade_left = { - en = 'Solarscale glances around the glade one last time and rises into the air following me.'; - ru = 'Соларскейл бросает прощальный взгляд на поляну и взмывает в воздух следом за мной.'; - }; - solarscale_ally_near_tower = { - en = '{Solarscale} flaps her wings impatiently near the tower entrance.'; - ru = '{Соларскейл} нетерпеливо машет крыльями у входа в башню.'; - }; - solarscale_ally_above_crater_life = { - en = 'Catching up with me, Solarscale asks in surprise: "Where are we flying to?"'; - ru = 'Поравнявшись со мной, Соларскейл удивленно спрашивает: "Куда мы летим?"'; - }; - solarscale_ally_near_tower_life = { - en = 'As soon as she notices the open doorway, Solarscale rushes to it and stopping right in front of the entrance turns to me: "Hurry up before it closes again!"'; - ru = 'Едва заметив открытый проем, Соларскейл бросается к нему и, замерев перед самым входом, обращается ко мне: "Скорее, пока он не закрылся!"'; - }; - solarscale_ally_tower_level_1_life = { - en = 'Flying into the hall, Solarscale rises to the ceiling and after a few circles returns to me.'; - ru = 'Влетев в зал, Соларскейл взмывает под самый потолок и, немного покружив, возвращается ко мне.'; - }; - solarscale_ally_tower_level_2 = { - en = '{Solarscale} stays near me, looking around the room. '; - ru = '{Соларскейл} держится рядом со мной, взгляд ее мечется по комнате.'; - }; - solarscale_ally_tower_level_2_life = { - en = 'Solarscale flies into the room and halts with her eyes widely open. A barely audible "Wow!" comes out of her mouth.'; - ru = 'Соларскейл влетает в помещение и тут же замирает, широко раскрыв глаза. Изо рта ее вырывается лишь тихое "Вау!"'; - }; - solarscale_ally_tower_level_3 = { - en = '{Solarscale} thoughtfully walks around the table.'; - ru = '{Соларскейл} задумчиво ходит вокруг стола. '; - }; - solarscale_ally_tower_level_3_life = { - en = 'Quickly glancing around the room, Solarscale rushes towards the table. After a few circles in the air, she lands on its edge.'; - ru = 'Бегло оглядев помещение, Соларскейл устремляется к столу. Сделав несколько кругов в воздухе, она приземляется на краешек.'; - }; - solarscale_ally_tower_level_4 = { - en = '{Solarscale} stands on the floor next to the table with the candles.'; - ru = '{Соларскейл} стоит на полу неподалеку от столика со свечами.'; - }; - solarscale_ally_tower_level_4_life = { - en = 'Entering the room, Solarscale immediately lands near the table.'; - ru = 'Влетев в комнату, Соларскейл сразу же приземляется рядом со столиком.'; - }; - solarscale_ally_tower_level_4_room_2 = { - en = '{Solarscale} sits on the desk near the computer.'; - ru = '{Соларскейл} сидит на столе рядом с компьютером.'; - }; - solarscale_ally_tower_level_4_room_2_life = { - en = 'Entering the room, Solarscale halts for a moment looking around then lands on the desk near the computer.'; - ru = 'Влетев в помещение, Соларскейл на мгновение замирает, озираясь, после чего приземляется на стол рядом с компьютером.'; - }; - solarscale_ally_tower_level_3_room_2_dark = { - en = 'I can barely discern {Solarscale\'s} figure in the darkness.'; - ru = 'Я с трудом различаю во мраке очертания {Соларскейл}.'; - }; - solarscale_ally_tower_level_3_room_2_lit = { - en = '{Solarscale} hangs between the racks, just under the ceiling.'; - ru = '{Соларскейл} висит над стеллажами, почти под самым потолком.'; - }; - solarscale_ally_tower_level_3_room_2_life = { - en = 'I hear Solarscale\'s bright voice, "It\'s so dark!"'; - ru = '"Ну и темень!" -- Слышу я звонкий голос Соларскейл.'; - }; - solarscale_ally_tower_level_2_room_2 = { - en = '{Solarscale} keeps near me.'; - ru = '{Соларскейл} держится рядом со мной.'; - }; - solarscale_ally_tower_level_2_room_2_life = { - en = 'Solarscale flies closer to me.'; - ru = 'Соларскейл подлетает поближе ко мне.'; - }; - solarscale_ally_tower_level_1_room_2 = { - en = '{Solarscale} is sitting on the table looking at me.'; - ru = '{Соларскейл} сидит на столе, глядя на меня.'; - }; - solarscale_ally_tower_level_1_room_2_life = { - en = 'Solarscale lands on the table, looking around.'; - ru = 'Соларскейл приземляется на стол, оглядываясь.'; - }; - solarscale_ally_follows = { - en = '{Solarscale} is flapping her wings behind me.'; - ru = 'За моей спиной машет крыльями {Соларскейл}.'; - }; - solarscale_ally_follow_life = { - en = 'Solarscale follows me.'; - ru = 'Соларскейл следует за мной.'; - }; - solarscale_used = { - en = 'It would be better to talk instead.'; - ru = 'Будет лучше просто поговорить.'; - }; - solarscale_dlg_enter_generic_1 = { - en = 'Solarscale looks at me, smiling.'; - ru = 'Соларскейл с улыбкой смотрит на меня.'; - }; - solarscale_dlg_enter_generic_2 = { - en = 'Solarscale looks at me questioningly.'; - ru = 'Соларскейл вопросительно смотрит на меня.'; - }; - solarscale_dlg_enter_generic_3 = { - en = 'Solarscale quietly asks, "How can I help you?"'; - ru = 'Соларскейл тихо спрашивает: "Могу я чем-то помочь?"'; - }; - - solarscale_ally_glade_suggestion = { - en = 'Solarscale briefly glances over the surroundings. Her eye is caught by the glade below, "I would like to land here, if you don\'t mind," she says.'; - ru = 'Соларскейл бегло осматривает окрестности. Ее взгляд задерживается на полянке внизу: "Я бы хотела приземлиться здесь, вы не против?"'; - }; - solarscale_ally_glade_question = { - en = 'Do you know this place?'; - ru = 'Вам знакомо это место?'; - }; - solarscale_ally_glade_answer = { - en = 'Solarscale says, "No, I\'ve never been here. But it\'s a lovely place, and I would like to see it up close."'; - ru = 'Соларскейл отвечает: "Нет, я не пролетала здесь. Красивое место, хочу осмотреть его поближе".'; - }; - - solarscale_ally_tower_first_enter = { - en = 'Solarscale looks at me with awe, "This tower is unbelievable! I\'ve never seen anything like it. What do you think?"'; - ru = 'Соларскейл с восхищением смотрит на меня: "Эта башня невероятна! Я никогда не видела ничего подобного. А что вы думаете?"'; - }; - - solarscale_ally_terminal = { - en = 'Solarscale examines the terminal\'s keyboard.'; - ru = 'Соларскейл рассматривает клавиатуру терминала.'; - }; - solarscale_ally_terminal_try = { - en = 'She asks, "Should we try to turn it on?"'; - ru = 'Она спрашивает: "Попробуем включить?"'; - }; - solarscale_ally_level_3_2 = { - en = 'Solarscale complains, "It\'s so dark, I can\'t see a thing! We should bring some light."'; - ru = 'Соларскейл сетует: "В этой темени вообще ничего не видно! Надо бы принести свет".'; - }; - solarscale_ally_near_tower = { - en = 'Solarscale repeats, "Come on, while the door is open!"'; - ru = 'Соларскейл повторяет, обращаясь ко мне: "Скорее, пока проход открыт!"'; - }; - solarscale_ally_glade = { - en = '{Solarscale} leisurely walks around the glade, admiring the nature. From time to time she carefully takes some flowers and puts them in her bag.'; - ru = '{Соларскейл} неспешно прогуливается по полянке, любуясь природой. Время от времени она бережно срывает какой-то из цветков и укладывает в свою сумку.'; - }; - solarscale_ally_glade_enter = { - en = 'Solarscale leisurely walks around the glade, admiring the nature. From time to time she carefully takes some flowers and puts them in her bag. Noticing me, she explains, "I\'m gathering specimens for my collection." A bit later she adds, "It\'s a nice place. I like it here."'; - ru = 'Соларскейл неспешно прогуливается по полянке, любуясь природой. Время от времени она бережно срывает какой-то из цветков и укладывает в свою сумку. Заметив мой взгляд, она поясняет: "Я собираю образцы для своей коллекции". Чуть позже она добавляет: "Очень красивое место. Мне нравится здесь".'; - }; - solarscale_ally_dlg_above_crater_enter = { - en = 'Solarscale looks at me in surprise, "Why don\'t we go to the tower?"'; - ru = 'Соларскейл удивленно смотрит на меня и спрашивает: "Почему бы нам не направиться в башню?"'; - }; - solarscale_ally_dlg_enter_back_to_tower_1 = { - en = 'Solarscale exclaims with inspiration: "Let\'s get back to the tower!"'; - ru = 'Соларскейл воодушевленно выкрикивает: "Давайте вернемся в башню!"'; - }; - solarscale_ally_dlg_enter_back_to_tower_2 = { - en = 'Solarscale carefully suggests, "Maybe it\'s time for us to return to the tower?"'; - ru = 'Соларскейл осторожно намекает: "Быть может нам уже пора вернуться к башне?"'; - }; - solarscale_ally_dlg_enter_back_to_tower_3 = { - en = 'Solarscale exclaims, "Can\'t wait to get to the tower!"'; - ru = 'Соларскейл восклицает: "Мне не терпится попасть в башню!"'; - }; - solarscale_ally_dlg_above_crater_1 = { - en = 'I would like to look around once more.'; - ru = 'Я хочу еще раз осмотреть окрестности.'; - }; - solarscale_ally_dlg_above_crater_1_response = { - en = 'Solarscale nods in agreement: "Good, let\'s fly then!"'; - ru = 'Соларскейл согласно кивает: "Хорошо, давайте полетаем!"'; - }; - solarscale_ally_dlg_above_crater_2 = { - en = 'Are you eager to get inside?'; - ru = 'Вам не терпится попасть внутрь?'; - }; - solarscale_ally_dlg_above_crater_2_response = { - en = 'Solarscale replies: "Of course! We can\'t be sure how long the doors will be open!"'; - ru = 'Соларскейл отвечает: "Разумеется! Мы не знаем как долго двери будут открыты!"'; - }; - solarscale_ally_dlg_above_crater_3 = { - en = 'Are you eager to return there?'; - ru = 'Вам не терпится вернуться к ней?'; - }; - solarscale_ally_dlg_above_crater_3_response = { - en = 'Solarscale exclaims, "Of course! Maybe you can find the way inside or see something I\'ve missed."'; - ru = 'Соларскейл восклицает: "Разумеется! Быть может вы сможете найти путь внутрь или увидеть что-то, что не заметила я".'; - }; - solarscale_ally_above_village = { - en = 'I turn to Solarscale, rhythmically flapping her wings behind me. She concludes, "We, dragons, should not show ourselves to humankind in our true form. Let\'s not linger here."'; - ru = 'Я оборачиваюсь к Соларскейл, мерно взмахивающей крыльями позади меня. Она сообщает: "Нам, драконам, лучше не показываться людям в истинном обличии. Давайте не будем здесь задерживаться".'; - }; - - solarscale_accept_help = { - en = 'Yes, please.'; - ru = 'Да, конечно.'; - }; - solarscale_pass_box = { - en = 'Pass the box to Solarscale'; - ru = 'Протянуть шкатулку Соларскейл'; - }; - solarscale_pass_items_level_1 = { - en = 'Pass the box, keys, and the note to Solarscale'; - ru = 'Протянуть шкатулку, ключи и записку Соларскейл'; - }; - solarscale_let_me_try = { - en = 'I will try myself first.'; - ru = "Сначала я попробую сам."; - }; - solarscale_let_me_try_2 = { - en = 'Well then, I\'ll try myself.'; - ru = 'Что же, тогда я попробую сам.'; - }; - solarscale_do_you_have_any_ideas = { - en = 'Do you have any ideas what we should do?'; - ru = 'У вас есть идеи, что мы должны сделать?'; - }; - solarscale_nods_silently = { - en = 'Solarscale nods silently.'; - ru = 'Соларскейл молча кивает.'; - }; - - solarscale_ally_dlg_level_1_1 = { - en = 'Do you have any ideas how to open the door?'; - ru = 'У вас есть идеи, как открыть эту дверь?'; - }; - solarscale_ally_dlg_level_1_1_response = { - en = 'Solarscale thoughtfully utters, "I don\'t know yet. We need to carefully examine everything."'; - ru = 'Соларскейл задумчиво произносит: "Пока не знаю. Надо все внимательно осмотреть".'; - }; - solarscale_ally_dlg_level_1_2_response = { - en = 'Solarscale flies towards me, "Can I look at the box you\'ve just picked up?"'; - ru = 'Соларскейл подлетает ко мне: "Могу я взглянуть на шкатулку, что вы только что подняли?"'; - }; - solarscale_ally_dlg_level_1_2_agree_response = { - en = 'Solarscale takes the box and examines it attentively before returning it to me. Finally she says, "Four keyholes... Keys should be somewhere nearby."'; - ru = 'Соларскейл берет шкатулку и внимательно осматривает, прежде чем вернуть ее мне. Наконец, она изрекает: "Четыре замочные скважины... Наверное, и ключи должны быть где-то здесь".'; - }; - solarscale_ally_dlg_level_1_3_response = { - en = 'Solarscale asks, "Are you sure that none of these keys fit the door?"'; - ru = 'Соларскейл спрашивает: "Вы уверены, что ни один из ключей не подходит к двери?"'; - }; - solarscale_ally_dlg_level_1_3_1 = { - en = 'No, these are not the keys from this door.'; - ru = 'Нет, это ключи не от этой двери.'; - }; - solarscale_ally_dlg_level_1_3_1_or_2_response = { - en = 'Solarscale thoughtfully notes, "They are here for a reason. We should look more carefully."'; - ru = '"Они здесь явно не просто так. Надо поискать повнимательнее", -- задумчиво сообщает драконесса.'; - }; - solarscale_ally_dlg_level_1_3_2 = { - en = 'Let\'s assume they don\'t.'; - ru = 'Предположим, не подходит.'; - }; - solarscale_ally_dlg_level_1_3_3 = { - en = 'I haven\'t checked.'; - ru = 'Я не проверял.'; - }; - solarscale_ally_dlg_level_1_3_3_response = { - en = 'Solarscale thoughtfully responds, "It would be good to check... Although that would be too easy..."'; - ru = 'Соларскейл задумчиво отвечает: "Надо бы проверить... Хотя это слишком просто..."'; - }; - solarscale_ally_dlg_level_1_4_response = { - en = 'Solarscale flies towards me and asks: "May I take a look?"'; - ru = 'Соларскейл подлетает ко мне и спрашивает: "Могу я взглянуть?" '; - }; - solarscale_ally_dlg_level_1_4_1_response = { - en = 'Solarscale takes the items from you and places them on the table. She thinks for some time and then exclaims, "I may have an idea. Would you let me try?"'; - ru = 'Соларскейл берет предметы у вас и раскладывает их на столе. Немного подумав, она сообщает: "Кажется, у меня есть идея. Позволите попробовать?"'; - }; - solarscale_ally_dlg_level_1_4_1_response_negative = { - en = 'Solarscale takes the items from you and places them on the table. She thinks for some time and then concludes, "I\'m sorry, but I can\'t help you with this."'; - ru = 'Соларскейл берет предметы у вас и раскладывает их на столе. Немного подумав, она делает вывод: "Боюсь, я не могу вам ничем помочь".'; - }; - solarscale_ally_dlg_level_1_4_1_1_response = { - en = 'The dragoness stays motionless for a while, thinking, and then she starts trying the keys. "Aha!", she exclaims and inserts key after the key into the holes, and the box falls apart in her hands revealing a tiny silver key. Solarscale passes it to me saying, "Try it on the door."'; - ru = 'Драконесса еще некоторое время остается неподвижной, раздумывая, затем начинает перебирать ключи. Воскликнув: "Ага!" -- Она вставляет ключ за ключом в замочные скважины, и шкатулка разваливается в ее руках. Внутри шкатулки оказывается небольшой серебряный ключик. Соларскейл протягивает его мне со словами: "Попробуйте открыть им дверь".'; - }; - solarscale_ally_reject_help = { - en = 'Thank you, but I will try myself.'; - ru = 'Спасибо, но я лучше попробую сам.'; - }; - solarscale_ally_dlg_level_1_4_1_no_help_response = { - en = 'Solarscale silently returns me the items.'; - ru = 'Соларскейл молча возвращает мне предметы.'; - }; - solarscale_ally_no_help = { - en = 'Thank you, I will try on my own then.'; - ru = 'Спасибо, тогда я попробую сам.'; - }; - solarscale_ally_dlg_not_now = { - en = 'Not now.'; - ru = 'Не сейчас.'; - }; - solarscale_ally_dlg_not_now_response = { - en = 'Solarscale nods silently.'; - ru = 'Соларскейл молча кивает.'; - }; - solarscale_ally_dlg_level_2_1 = { - en = 'Are you interested in the alchemy?'; - ru = 'Вы увлекаетесь алхимией?'; - }; - solarscale_ally_dlg_level_2_1_response = { - en = 'Solarscale responds with regret, "I don\'t know much about it."'; - ru = 'Соларскейл с сожалением отвечает: "Я мало что знаю об этом".'; - }; - solarscale_ally_dlg_level_2_1_1 = { - en = 'Too bad, I could use some help.'; - ru = "Жаль, мне не помешала бы ваша помощь."; - }; - solarscale_ally_dlg_level_2_1_1_response = { - en = 'Solarscale lowers her eyes, "I hope I\'ll be able to help with something else".'; - ru = 'Соларскейл опускает глаза: "Надеюсь, смогу быть полезна в чем-нибудь другом".'; - }; - solarscale_ally_dlg_level_3_1 = { - en = 'Do you have any thoughts on this riddle?'; - ru = 'У вас есть какие-то мысли по поводу этой загадки?'; - }; - solarscale_ally_dlg_level_3_1_response = { - en = 'Solarscale nods, "Yes, I have an idea. Would you like me to try?"'; - ru = 'Соларскейл кивает: "Да, есть идейка. Позволите попробовать?"'; - }; - solarscale_ally_dlg_level_3_1_response_negative = { - en = 'Solarscale negatively shakes her head, "I have no idea."'; - ru = 'Соларскейл отрицательно мотает головой: "У меня нет никаких идей".'; - }; - solarscale_ally_dlg_level_3_1_1_response = { - en = 'Solarscale takes the figurines and slowly puts them into the holes one by one. A gentle click informs us that the door to the next level of the tower is unlocked.'; - ru = 'Соларскейл берет фигурки и неспешно, одну за другой, ставит их в отведенные углубления. Легкий щелчок дает нам понять, что дверь на следующий этаж башни открыта.'; - }; - solarscale_ally_dlg_level_4_1_response = { - en = 'Solarscale thoughtfully says, "Yes, I think I can help."'; - ru = 'Соларскейл задумчиво произносит: "Да, думаю, я могу помочь".'; - }; - solarscale_ally_dlg_level_4_1_response_negative = { - en = 'Solarscale shakes her head negatively, "I\'m afraid, I can\'t help you."'; - ru = 'Соларскейл отрицательно мотает головой: "К сожалению, ничем не могу помочь".'; - }; - solarscale_ally_dlg_level_4_1_1 = { - en = '[Let Solarscale do everything]'; - ru = '[Позволить Соларскейл все сделать]'; - }; - solarscale_ally_dlg_level_4_1_1_response = { - en = 'Solarscale lights the candles one by one. A sequence of notes rings in the darkness, and a sudden gust of wind throws open the door on the far end of the room.'; - ru = 'Соларскейл последовательно зажигает свечи. В темноте одна за другой звучат ноты, а затем резкий порыв ветра распахивает дверцу в дальнем конце комнаты.'; - }; - solarscale_ally_dlg_level_4_room_2_1 = { - en = 'Turn it on!'; - ru = 'Включайте!'; - }; - solarscale_ally_dlg_level_4_room_2_1_response_turnon = { - en = 'Solarscale turns the computer on.'; - ru = 'Соларскейл включает компьютер.'; - }; - solarscale_ally_dlg_level_4_room_2_1_response_motherboard = { - en = 'Flipping through the manual, Solarscale declares, "Looks like an issue with the motherboard. Let\'s find a replacement."'; - ru = 'Пролистав руководство, драконесса констатирует: "Похоже, не работает материнская плата. Надо бы поискать замену".'; - }; - solarscale_ally_dlg_level_4_room_2_1_response_cpu = { - en = 'Flipping through the manual, Solarscale declares, "Looks like an issue with the processor. Let\'s find a replacement."'; - ru = 'Пролистав руководство, драконесса констатирует: "Похоже, не работает центральный процессор. Надо бы поискать замену".'; - }; - solarscale_ally_dlg_level_4_room_2_1_response_ram = { - en = 'Flipping through the manual, Solarscale declares, "Looks like an issue with the memory. Let\'s find a replacement."'; - ru = 'Пролистав руководство, драконесса констатирует: "Похоже, не работает оперативная память. Надо бы поискать замену".'; - }; - solarscale_ally_dlg_level_4_room_2_1_response_video = { - en = 'Flipping through the manual, Solarscale declares, "Looks like an issue with the video adapter. Let\'s find a replacement."'; - ru = 'Пролистав руководство, драконесса констатирует: "Похоже, не работает видеокарта. Надо бы поискать замену".'; - }; - solarscale_ally_dlg_level_4_room_2_1_response_keyboard = { - en = 'Flipping through the manual, Solarscale declares, "Looks like an issue with the keyboard controller. Let\'s find a replacement."'; - ru = 'Пролистав руководство, драконесса констатирует: "Похоже, не работает контроллер клавиатуры. Надо бы поискать замену".'; - }; - solarscale_ally_dlg_level_4_room_2_1_response_network = { - en = 'Flipping through the manual, Solarscale declares, "Looks like an issue with the network adapter. Let\'s find a replacement."'; - ru = 'Пролистав руководство, драконесса констатирует: "Похоже, не работает сетевая карта. Надо бы поискать замену".'; - }; - solarscale_ally_dlg_level_4_room_2_1_response_fixed = { - en = 'Looking at the screen, Solarscale exclaims, "It works!"'; - ru = 'Драконесса, посмотрев на экран, сообщает: "Заработал!"'; - }; - solarscale_ally_dlg_level_4_room_2_1_1 = { - en = '[Approach the terminal] Great, let\'s have a look.'; - ru = "[Подойти к терминалу] Отлично, посмотрим."; - }; - solarscale_ally_dlg_level_4_room_2_1_2 = { - en = 'Can you fix it?'; - ru = 'Вы сможете отремонтировать его?'; - }; - solarscale_ally_dlg_level_4_room_2_1_2_response = { - en = 'Solarscale peeks into the box with spares and after some digging in it confirms, "I think I\'ll manage. Would you let me?"'; - ru = 'Соларскейл заглядывает в коробку с запчастями и, немного покопавшись в ней, сообщает: "Думаю, справлюсь. Позволите?"'; - }; - solarscale_ally_dlg_level_4_room_2_1_2_response_no_parts = { - en = 'Solarscale thoughtfully utters, "Only if we find spare parts".'; - ru = 'Соларскейл задумчиво произносит: "Только если мы найдем запасные детали".'; - }; - solarscale_ally_dlg_level_4_room_2_1_2_response_negative = { - en = 'Solarscale regretfully says, "I don\'t think I can help. I\'ve never seen computers of this type."'; - ru = 'Соларскейл с сожалением сообщает: "Не думаю, что смогу помочь. Я никогда не встречала компьютеров такого типа".'; - }; - solarscale_ally_dlg_end = { - en = '[End the dialog]'; - ru = '[Закончить диалог]'; - }; - solarscale_ally_dlg_level_4_room_2_1_2_1 = { - en = 'Yes, of course.'; - ru = 'Да, разумеется.'; - }; - solarscale_ally_dlg_level_4_room_2_1_2_1_response = { - en = 'Solarscale routinely disassembles the computer, and looking at the manual, replaces broken parts with the new ones. Having finished, she assembles it back, "Look! I even may have improved it!"'; - ru = 'Соларскейл привычно разбирает компьютер и, заглянув в инструкцию, меняет сломанные детали на новые. Закончив, она собирает его обратно. "Посмотрите! Кажется, я даже смогла немного улучшить его!"'; - }; - solarscale_ally_dlg_level_4_room_2_1_2_2 = { - en = 'Thank you, but I want to try myself.'; - ru = 'Спасибо, но я попробую сам.'; - }; - solarscale_ally_dlg_level_4_room_2_1_2_3 = { - en = 'Where do you think they may be?'; - ru = 'Как думаете, где они могут быть?'; - }; - solarscale_ally_dlg_level_4_room_2_1_2_3_response = { - en = 'Solarscale replies, "I think there was a warehouse on the floor below. We can start looking from there."'; - ru = 'Соларскейл отвечает: "Этажом ниже был склад, кажется. Есть смысл начать поиск оттуда".'; - }; - solarscale_ally_dlg_level_4_room_2_3 = { - en = 'What can we do?'; - ru = 'Что мы можем сделать?'; - }; - solarscale_ally_dlg_level_4_room_2_3_response = { - en = 'Solarscale shrugs, "Most likely nothing from here. Let\'s explore the other rooms."'; - ru = 'Соларскейл пожимает плечами: "Отсюда, скорее всего, ничего. Давайте осмотрим другие помещения".'; - }; - solarscale_ally_dlg_know_tower = { - en = 'How did you know about the tower?'; - ru = 'Как вы узнали про башню?'; - }; - solarscale_ally_dlg_know_tower_response_not_visited = { - en = 'Solarscale replies, "Accidentally. The crater has caught my attention, and I decided to explore it. Of course, I decided to start from the center, where I found the tower. I could not get inside, so I decided to look around, and then I met you."'; - ru = 'Соларскейл отвечает: "Случайно. Мое внимание привлек кратер, и я решила исследовать его. Естественно, я решила начать с центра, где и обнаружила башню. Попасть внутрь я не смогла, потому решила осмотреться, так и встретила вас".'; - }; - solarscale_ally_dlg_know_tower_response_visited = { - en = 'Solarscale replies, "Accidentally. The crater has caught my attention and I decided to explore it. Of course, I decided to start from the center, where I found the tower. I could not get inside, so I decided to look around, and then I met you. I don\'t know why the door has opened when we have returned."'; - ru = 'Соларскейл отвечает: "Случайно. Мое внимание привлек кратер и я решила исследовать его. Естественно, я решила начать с центра, где и обнаружила башню. Попасть внутрь я не смогла, потому решила осмотреться, так и встретила вас. Я не знаю, почему дверь открылась когда мы вернулись".'; - }; - solarscale_ally_dlg_know_tower_1 = { - en = '[Tell about the map]'; - ru = '[Рассказать о карте]'; - }; - solarscale_ally_dlg_know_tower_1_response = { - en = 'Solarscale thoughtfully utters, "It is surprising that you\'ve not known about the tower." After some thinking she exclaims, "We have to explore it!"'; - ru = 'Соларскейл задумчиво произносит: "Удивительно, что вы не знали о башне". Немного позже она восклицает: "Нам надо исследовать ее!"'; - }; - solarscale_ally_dlg_know_tower_2 = { - en = '[Remain silent]'; - ru = '[Промолчать]'; - }; - solarscale_ally_dlg_know_tower_2_response = { - en = 'Solarscale exclaims, "We have to explore it!"'; - ru = 'Соларскейл восклицает: "Нам надо исследовать ее!"'; - }; - solarscale_ally_dlg_about_tower_1_1 = { - en = 'I totally agree with you, this place is amazing.'; - ru = 'Полностью согласен с вами, это место потрясающе.'; - }; - solarscale_nods_in_agreement = { - en = 'Solarscale nods in agreement.'; - ru = 'Соларскейл согласно кивает.'; - }; - solarscale_ally_dlg_about_tower_1_2 = { - en = 'Let\'s look around before drawing conclusions.'; - ru = 'Давайте осмотрим все, прежде чем делать выводы.'; - }; - solarscale_ally_dlg_about_tower_1_3 = { - en = 'We should be careful, we don\'t know what this place is.'; - ru = 'Нам стоит быть осторожными, мы не знаем что это за место.'; - }; - solarscale_ally_dlg_about_tower_1_4 = { - en = 'I don\'t know what to say.'; - ru = 'Я не знаю, что сказать.'; - }; - solarscale_ally_dlg_after_tower = { - en = 'What do you plan to do next?'; - ru = 'Что вы собираетесь делать дальше?'; - }; - solarscale_ally_dlg_after_tower_response = { - en = 'Solarscale shrugs, "After the tower? I would like to return home. My journey has been quite long and I would like to rest. And you?"'; - ru = 'Соларскейл пожимает плечами: "После башни? Я хотела бы побывать дома -- мои странствия несколько затянулись и хочется немного покоя. А вы?"'; - }; - solarscale_ally_dlg_after_tower_1 = { - -- Full meaning is "I will return home" - en = 'Return home.'; - ru = 'Вернусь домой.'; - }; - solarscale_ally_dlg_after_tower_1_response = { - en = 'Solarscale nods: "We could meet here from time to time, if you don\'t mind?"'; - ru = 'Соларскейл кивает: "Мы могли бы встречаться иногда здесь, если вы не против?"'; - }; - solarscale_don_t_know = { - en = 'I don\'t know.'; - ru = 'Не знаю.'; - }; - solarscale_ally_dlg_after_tower_2_response = { - en = 'Solarscale replies, "You could fly with me."'; - ru = 'Соларскейл отвечает: "Вы можете полететь со мной".'; - }; - solarscale_ally_dlg_after_tower_3 = { - en = 'I\'ll stay here.'; - ru = 'Останусь здесь.'; - }; - solarscale_ally_dlg_after_tower_3_response = { - en = 'Solarscale nods, "I can visit you from time to time then. If you don\'t mind."'; - ru = 'Соларскейл кивает: "Тогда я буду навещать вас, если вы не против?"'; - }; - solarscale_ally_dlg_connection = { - en = 'I think, I have developed some connection to this tower.'; - ru = 'Мне кажется, я установил какую-то связь с этой башней.'; - }; - solarscale_ally_dlg_connection_response = { - en = 'Solarscale looks at me keenly, "Fascinating, and what do you feel?"'; - ru = 'Соларскейл заинтересованно смотрит на меня: "Занятно, и что вы чувствуете?"'; - }; - solarscale_ally_dlg_connection_1 = { - en = 'I hear its voice, it says, "Welcome home."'; - ru = 'Я слышу ее голос, он говорит "Добро пожаловать домой".'; - }; - solarscale_ally_dlg_connection_1_response = { - en = 'Solarscale thoughtfully scratches her chin, "And what do you think?"'; - ru = 'Соларскейл задумчиво чешет подбородок: "И что вы думаете?"'; - }; - solarscale_ally_dlg_connection_1_1 = { - en = 'That\'s exactly what I feel here.'; - ru = 'Это именно то что я ощущаю здесь.'; - }; - solarscale_ally_dlg_connection_1_1_response = { - en = 'Solarscale nods, "Then we should continue."'; - ru = 'Соларскейл кивает: "Тогда нам стоит продолжать".'; - }; - solarscale_ally_dlg_connection_1_2 = { - en = 'It\'s too early to say.'; - ru = 'Пока рано об этом говорить.'; - }; - solarscale_ally_dlg_connection_1_2_response = { - en = 'Solarscale nods, "Well then, let\'s move along."'; - ru = 'Соларскейл кивает: "Хорошо, давайте двигаться дальше".'; - }; - solarscale_ally_dlg_connection_1_3 = { - en = 'I don\'t like this.'; - ru = 'Мне это не нравится.'; - }; - solarscale_ally_dlg_connection_1_3_response = { - en = 'Solarscale thoughtfully shrugs, "In any case, let\'s continue."'; - ru = 'Соларскейл задумчиво пожимает плечами: "В любом случае, давайте продолжать".'; - }; - solarscale_ally_dlg_connection_2 = { - en = 'I don\'t know yet.'; - ru = 'Пока не знаю.'; - }; - solarscale_ally_dlg_connection_2_response = { - en = 'Solarscale nods, "We can discuss this later."'; - ru = 'Соларскейл кивает: "Мы можем обсудить это позже".'; - }; - solarscale_ally_dlg_light = { - en = 'Do you have some light?'; - ru = 'У вас есть что-нибудь посветить?'; - }; - solarscale_ally_dlg_light_response = { - en = 'Solarscale replies excitedly, "I have one trick in store, do you want me to try?"'; - ru = 'Соларскейл воодушевленно отвечает: "Есть один трюк в запасе, попробовать?"'; - }; - solarscale_ally_dlg_light_response_negative = { - en = 'Solarscale shakes her head negatively, "I\'m afraid, no."'; - ru = 'Соларскейл с сожалением сообщает: "К сожалению, нет".'; - }; - solarscale_ally_dlg_light_agree = { - en = 'Yes, please.'; - ru = 'Да, если вас не затруднит.'; - }; - solarscale_ally_dlg_light_agree_response = { - en = '"Sure", Solarscale smiles and snaps her fingers. The room fills with a weak but steady light.'; - ru = '"Не затруднит", -- отвечает с улыбкой Соларскейл и щелкает пальцами. Помещение заполняется слабым, но ровным светом.'; - }; - solarscale_ally_ask_tea = { - en = 'Would you mind some tea?'; - ru = 'Не хотите выпить чаю?'; - }; - solarscale_ally_ask_tea_response = { - en = 'Solarscale nods smiling: "Sure".'; - ru = 'Соларскейл кивает, улыбаясь: "Не откажусь".'; - }; - tea_start = { - en = 'I pour the tea, take my cup and with a gesture invite Solarscale to join. She makes a sip and asks, "Who do you think built this tower?"'; - ru = 'Я разливаю чай, беру чашку и жестом приглашаю Соларскейл присоединиться. Драконесса делает глоток и спрашивает: "Как вы думаете, кто создал это башню?"'; - }; - tea_end = { - en = 'We end our tea party in thoughtful silence. Having ended, I put the cups and the tea to their places, and we return to exploring the tower.'; - ru = 'Мы завершаем чаепитие молча, погруженные в свои мысли. Закончив, я возвращаю посуду и чай на место и мы возвращаемся к исследованию башни.'; - }; - tea_q1_darkness = { - -- Who built the tower - en = 'The darkness.'; - ru = 'Тьма.'; - }; - tea_q1_dragons = { - -- Who built the tower - en = 'Dragons.'; - ru = 'Драконы.'; - }; - tea_q1_i = { - -- Who built the tower - en = 'Me.'; - ru = 'Я.'; - }; - tea_q2_me = { - -- For whom the tower was built - en = 'For me.'; - ru = 'Для меня.'; - }; - tea_q2_us = { - -- For whom the tower was built - en = 'For us.'; - ru = 'Для нас.'; - }; - tea_q2_itself = { - -- Speaking about Tower - en = 'For nothing. It just is.'; - ru = 'Ни для чего. Она просто есть.'; - }; - tea_q3_know_nothing = { - -- Are there other dragons in this world? - en = 'Even if they are, I know nothing about them.'; - ru = 'Если и есть, то я про них ничего не знаю.'; - }; - tea_q3_thought_alone = { - -- Are there other dragons in this world? - en = 'Until I met you, I thought I was alone.'; - ru = 'До встречи с вами я думал, что я единственный.'; - }; - tea_q3_alone = { - -- Are there other dragons in this world? - en = 'No, we are the only ones.'; - ru = 'Нет, мы одни.'; - }; - tea_q3_exist = { - -- Are there other dragons in this world? - en = 'They definitely are.'; - ru = 'Определенно, есть.'; - }; - tea_q3_don_t_know_final = { - en = 'I honestly don\'t know.'; - ru = 'Я, правда, не знаю.'; - }; - tea_q1_response_1_tower_accepts = { - en = 'Solarscale shrugs, "Nevertheless, it accepts us... But why is it here?"'; - ru = 'Соларскейл пожимает плечами: "Тем не менее она принимает вас... Но для чего она здесь?"'; - }; - tea_q1_response_1 = { - en = 'Solarscale shrugs, "But why is it here?"'; - ru = 'Соларскейл пожимает плечами: "Но для чего она здесь?"'; - }; - tea_q1_response_dragons = { - en = 'Solarscale thoughtfully utters, "Most probably. But I don\'t know any except you". A bit later she asks, "But why is it here?"'; - ru = 'Соларскейл задумчиво тянет: "Скорее всего. Но я не знаю ни одного кроме нас..." -- Чуть помолчав, она спрашивает: "Но для чего она здесь?"'; - }; - tea_q1_response_i = { - en = 'Solarscale looks at me in wonder and asks, "What for?"'; - ru = 'Соларскейл удивленно смотрит на меня и тихо спрашивает: "Для чего?"'; - }; - tea_q2_other_dragons_1 = { - en = 'After a bit of silence she asks, "So you think there are more dragons in this world?"'; - ru = 'Немного помолчав, она спрашивает: "Так значит, вы думаете, что в этом мире есть еще драконы?"'; - }; - tea_q2_other_dragons_2 = { - en = 'After a bit of silence she asks, "Do you think there are other dragons in this world?"'; - ru = 'Немного помолчав, она спрашивает: "Как вы думаете, в этом мире есть еще драконы?"'; - }; - tea_q2_r1 = { - en = 'Solarscale shrugs.'; - ru = 'Соларскейл пожимает плечами.'; - }; - tea_q2_r2 = { - en = 'Solarscale shrugs, "Seemingly so."'; - ru = 'Соларскейл пожимает плечами: "Кажется, так и есть".'; - }; - tea_q2_r3 = { - en = 'Solarscale thoughtfully looks at the ceiling.'; - ru ='Соларскейл задумчиво смотрит в потолок.'; - }; - tea_q3_r1 = { - en = 'Solarscale thoughtfully looks away: "It\'s most likely we are alone."'; - ru = 'Соларскейл задумчиво отворачивается: "Скорее всего, мы одни".'; - }; - tea_q3_r2 = { - -- Speaking about other dragons - en = 'Solarscale shrugs, "Probably. But I\'ve not seen any."'; - ru = 'Соларскейл пожимает плечами: "Возможно, но я не видела никого".'; - }; - tea_q3_r_try_again = { - en = 'Solarscale thoughtfully looks at me and asks, "Don\'t you have an assumption?"'; - ru = 'Соларскейл внимательно смотрит на меня и переспрашивает: "И все же, предположите?"'; - }; - tea_q3_r_don_t_know = { - en = 'Solarscale shrugs and swallows her tea. I do the same and return the cups and the tea to their places. Time to continue exploring the tower.'; - ru = 'Соларскейл пожимает плечами и залпом допивает чай. Я следую ее примеру и возвращаете посуду и чай на место. Пора возвращаться к исследованию башни.'; - }; - }; - tower_locale = { - tower_red_key_disp = { - en = 'Red Key'; - ru = 'Красный ключ'; - }; - tower_red_key_disp2 = { - en = 'the red key'; - ru = 'красный ключ'; - }; - tower_red_key_disp3 = { - en = 'the red key'; - ru = 'красный ключ'; - }; - tower_red_key_inv = { - en = 'A small key of reddish metal.'; - ru = 'Небольшой ключик из красноватого металла.'; - }; - tower_gold_key_disp = { - en = 'Golden Key'; - ru = 'Золотой ключ'; - }; - tower_gold_key_disp2 = { - en = 'the golden key'; - ru = 'золотой ключ'; - }; - tower_gold_key_disp3 = { - en = 'the golden key'; - ru = 'золотой ключ'; - }; - tower_gold_key_inv = { - en = 'A small key of golden metal.'; - ru = 'Небольшой ключик из золотистого металла.'; - }; - tower_blue_key_disp = { - en = 'Blue Key'; - ru = 'Синий ключ'; - }; - tower_blue_key_disp2 = { - en = 'the blue key'; - ru = 'синий ключ'; - }; - tower_blue_key_disp3 = { - en = 'the blue key'; - ru = 'синий ключ'; - }; - tower_blue_key_inv = { - en = 'A small key of bluish metal.'; - ru = 'Небольшой ключик из синеватого металла.'; - }; - tower_green_key_disp = { - en = 'Green Key'; - ru = 'Зеленый ключ'; - }; - tower_green_key_disp2 = { - en = 'the green key'; - ru = 'зеленый ключ'; - }; - tower_green_key_disp3 = { - en = 'the green key'; - ru = 'зеленый ключ'; - }; - tower_green_key_inv = { - en = 'A small key of greenish metal.'; - ru = 'Небольшой ключик из зеленоватого металла.'; - }; - tower_level_2_key_disp = { - en = 'Silver Key'; - ru = 'Серебряный ключик'; - }; - tower_level_2_key_dsc = { - en = 'A tiny silver key with an intricately carved head.'; - ru = 'Маленький серебряный ключик с изысканной резной головкой.'; - }; - tower_hint_1_disp = { - en = 'Piece of Paper'; - ru = 'Клочок бумаги'; - }; - tower_hint_1_inv = { - en = 'A small piece of paper on which a number %target% is written. Surprisingly, it\'s made with my own handwriting!'; - ru = 'Небольшой клочок бумаги, на котором написано число %target%. Удивительно, но написано оно моим почерком!'; - }; - flask_disp = { - en = 'Flask'; - ru = 'Флакончик'; - }; - flask_disp2 = { - en = 'the flask'; - ru = 'флакончик'; - }; - flask_disp3 = { - en = 'the flask'; - ru = 'флакончик'; - }; - flask_inv = { - en = 'A small glass flask. It is empty.'; - ru = 'Небольшой стеклянный флакончик, сейчас он пуст.'; - }; - potion_open_disp = { - en = 'Potion of Opening'; - ru = 'Зелье открытия'; - }; - potion_open_disp2 = { - en = 'the potion of opening'; - ru = 'зелье открытия'; - }; - potion_open_disp3 = { - en = 'the potion of opening'; - ru = 'зелье открытия'; - }; - potion_open_inv = { - en = 'A potion of opening made by me. It smells of rusty metal and has an unpleasant reddish-grey tint. The vial is hot to the touch.'; - ru = 'Сваренное мной зелье открытия пахнет ржавым металлом и имеет неприятный рыжевато-серый цвет. Пробирка горячая на ощупь.'; - }; - potion_light_disp = { - en = 'Potion of Light'; - ru = 'Зелье света'; - }; - potion_light_disp2 = { - en = 'the potion of light'; - ru = 'зелье света'; - }; - potion_light_disp3 = { - en = 'the potion of light'; - ru = 'зелье света'; - }; - potion_light_inv_used = { - en = 'I open the vial with the potion of light. The liquid starts to vaporise immediately, and the air begins to emit light.'; - ru = 'Я открываю флакончик с зельем света. Жидкость тут же начинает испаряться и воздух вокруг начинает светиться.'; - }; - potion_light_inv = { - en = 'A potion of light made by me is completely transparent and smells like air after the storm.'; - ru = 'Сваренное мной зелье света совершенно прозрачно и источает легкий аромат свежести, как воздух после грозы.'; - }; - candle_disp = { - en = 'Candle'; - ru = 'Свечка'; - }; - candle_disp2 = { - en = 'the candle'; - ru = 'свечка'; - }; - candle_disp3 = { - en = 'the candle'; - ru = 'свечку'; - }; - candle_inv = { - en = 'A small candle of dull white wax. There is nothing unusual in it.'; - ru = 'Небольшая свечка из тусклого белого воска. В ней нет совершенно ничего необычного.'; - }; - potion_enrichment_disp = { - en = 'Potion of Enrichment'; - ru = 'Зелье обогащения'; - }; - potion_enrichment_disp2 = { - en = 'the potion of enrichment'; - ru = 'зелье обогащения'; - }; - potion_enrichment_disp3 = { - en = 'the potion of enrichment'; - ru = 'зелье обогащения'; - }; - potion_enrichment_inv = { - en = 'A potion of enrichment made by me shines like real gold. When I shake the vial, I can hear ringing of coins inside.'; - ru = 'Сваренное мной зелье обогащения сияет словно настоящее золото. Когда я встряхиваю пробирку, мне слышится в ней звон монет.'; - }; - emerald_disp = { - en = 'Emerald'; - ru = 'Изумруд'; - }; - emerald_disp2 = { - en = 'the emerald'; - ru = 'изумруд'; - }; - emerald_disp3 = { - en = 'the emerald'; - ru = 'изумруд'; - }; - emerald_inv = { - en = 'A small finely faceted emerald. It is very beautiful.'; - ru = 'Небольшой, изящно ограненный изумруд. Очень красивый.'; - }; - password_note_disp = { - en = 'Note'; - ru = 'Записка'; - }; - password_note_disp2 = { - en = 'the note'; - ru = 'записка'; - }; - password_note_disp3 = { - en = 'the note'; - ru = 'записку'; - }; - password_note_inv = { - en = 'The note only says "%password%". Once again I recognise my own handwriting!'; - ru = 'В записке написано только: "%password%". Я снова узнаю свой почерк!'; - }; - tool_box_dsc = { - en = 'On one of the shelves I see a box with {a set of screwdrivers}.'; - ru = 'На одной из полок я вижу коробочку с {набором отверток}.'; - }; - tool_box_disp = { - en = 'Screwdriver Set'; - ru = 'Набор отверток'; - }; - tool_box_disp2 = { - en = 'the screwdriver set'; - ru = 'набор отверток'; - }; - tool_box_disp3 = { - en = 'the screwdriver set'; - ru = 'набор отверток'; - }; - tool_box_inv = { - en = 'A set of screwdrivers for electronics. There is no label of any brand anywhere on the box. Screwdrivers are nevertheless of a very high quality and in perfect condition.'; - ru = 'Набор отверток для электроники. Нигде на коробке нет никаких отметок о производителе. Отвертки при этом очень качественно изготовлены и выглядят как новые.'; - }; - kettle_disp = { - en = 'Kettle'; - ru = 'Чайник'; - }; - kettle_disp_water = { - en = 'Kettle with Water'; - ru = 'Чайник с водой'; - }; - kettle_disp_hot_water = { - en = 'Kettle with Hot Water'; - ru = 'Чайник с кипятком'; - }; - kettle_disp2 = { - en = 'the kettle'; - ru = 'чайник'; - }; - kettle_disp3 = { - en = 'the kettle'; - ru = 'чайник'; - }; - kettle_inv = { - en = 'A usual metal kettle. It is empty.'; - ru = 'Самый обычный металлический чайник. Сейчас он пуст.'; - }; - kettle_inv_water = { - en = 'A usual metal kettle. It is full of cold water.'; - ru = 'Самый обычный металлический чайник. Сейчас он полон холодной воды.'; - }; - kettle_inv_hot_water = { - en = 'A usual metal kettle. It is full of boiling water.'; - ru = 'Самый обычный металлический чайник. Сейчас он наполнен кипятком.'; - }; - kettle_dsc = { - en = 'There is {a kettle} on the table top.'; - ru = 'На столешнице стоит {чайник}.'; - }; - kettle_tak_no = { - en = 'I have no use for this.'; - ru = 'Мне это ни к чему.'; - }; - kettle_tak = { - en = 'I take the kettle.'; - ru = 'Я забираю чайник.'; - }; - kettle_boil_empty = { - en = 'There\'s no point in boil an empty kettle.'; - ru = 'Бессмысленно кипятить пустой чайник.'; - }; - teapot_disp = { - en = 'Teapot'; - ru = 'Заварочный чайник'; - }; - teapot_inv_empty = { - en = 'A snow-white porcelain teapot, decorated with an ornament of silvery flowers.'; - ru = 'Белоснежный фарфоровый чайничек, украшенный узором из серебристых цветочков.'; - }; - teapot_inv_leaves = { - en = 'A snow-white porcelain teapot, decorated with an ornament of silvery flowers. There are some tea leaves inside.'; - ru = 'Белоснежный фарфоровый чайничек, украшенный узором из серебристых цветочков. Внутри лежат чайные листья.'; - }; - teapot_inv_tea = { - en = 'A snow-white porcelain teapot, decorated with an ornament of silvery flowers. It\'s full of fresh tea.'; - ru = 'Белоснежный фарфоровый чайничек, украшенный узором из серебристых цветочков, полный свежего чая.'; - }; - teapot_used_filled = { - en = 'I pour water in the teapot. The tea is ready!'; - ru = 'Я наливаю воду в чайник. Чай готов!'; - }; - teapot_used_cold_water = { - en = 'I can\'t make tea with cold water.'; - ru = 'В холодной воде чай не заварится.'; - }; - teapot_used_no_tea = { - en = 'I need to put some tea leaves inside first.'; - ru = 'Сначала необходимо положить чайные листья.'; - }; - teapot_used_empty_kettle = { - en = 'What do I want to pour from an empty kettle?'; - ru = 'А что я хочу налить из пустого чайника?'; - }; - teapot_used_already = { - en = 'The teapot is already full.'; - ru = 'Чайник уже полон.'; - }; - teapot_used_already_tea = { - en = 'There is enough leaves in the teapot already.'; - ru = 'В чайнике уже достаточно листьев.'; - }; - teapot_used_tea_added = { - en = 'I put some leaves in the teapot'; - ru = 'Я кладу немного листьев в чайник.'; - }; - tower_level_1_room_2_put_cups = { - en = 'I put the cups on the table top.'; - ru = 'Я ставлю чашечки на столешницу.'; - }; - cups_disp = { - en = 'Cups'; - ru = 'Чашечки'; - }; - cups_inv_act = { - en = 'Two miniature porcelain cups decorated by silvery flowers.'; - ru = 'Две миниатюрные фарфоровые чашечки, украшенные серебристыми цветочками.'; - }; - cups_dsc = { - en = 'There are two miniature porcelain {cups} decorated by silvery flowers on the table.'; - ru = 'На столе стоят две миниатюрные фарфоровые {чашечки}, украшенные серебристыми цветочками.'; - }; - cups_should_be_placed = { - en = 'It\'s better to put the cups on some surface.'; - ru = 'Чашечки лучше поставить на какую-нибудь поверхность.'; - }; - cups_no_need = { - en = 'We have already had tea.'; - ru = 'Мы уже попили чаю.'; - }; - cups_kettle = { - en = 'I want to have tea, not water.'; - ru = 'Я хочу чай, а не воду.'; - }; - cups_no_tea = { - en = 'I need to steep the tea first.'; - ru = 'Сначала следует заварить чай.'; - }; - teabox_disp = { - en = 'Box with Tea'; - ru = 'Коробочка с чаем'; - }; - teabox_inv = { - en = 'A metal box filled with fragrant leaves of black tea.'; - ru = 'Металлическая коробочка, заполненная ароматными листьями черного чая.'; - }; - tower_level_1_disp = { - en = 'Tower, the First Floor'; - ru = 'Башня, первый этаж'; - }; - transition_leave = { - en = 'Leave the Tower'; - ru = 'Покинуть башню'; - }; - transition_room = { - en = 'To the Next Room'; - ru = 'В соседнюю комнату'; - }; - transition_upstairs = { - en = 'Upstairs'; - ru = 'Наверх'; - }; - transition_downstairs = { - en = 'Downstairs'; - ru = 'Вниз'; - }; - transition_study = { - en = 'To the Study'; - ru = 'В кабинет'; - }; - transition_airlock = { - en = 'To the Airlock'; - ru = 'В шлюз'; - }; - transition_lab = { - en = 'To the Laboratory'; - ru = 'В лабораторию'; - }; - transition_control = { - en = 'To the Control Room'; - ru = 'В комнату управления'; - }; - transition_reactor = { - en = 'To the Reactor Chamber'; - ru = 'В камеру реактора'; - }; - transition_dining_room = { - en = 'To the Dining Room'; - ru = 'В столовую'; - }; - transition_door = { - en = 'Into the Door'; - ru = 'В дверь'; - }; - tower_level_1_decor = { - en = 'The tower meets me with oppressing darkness and cold. The black {tower_walls|walls} and {#ceiling|the ceiling} of the hall are shrouded in shadows. There are four huge {#tables|tables} covered by white tablecloths in the hall. There are three gorgeous {#candelabra|chandeliers} on each. Massive wooden {#chairs|chairs} are placed around the tables.'; - ru = 'Башня встречает меня давящей темнотой и прохладой. Черные {tower_walls|стены} и {#ceiling|потолок} зала тонут во мраке. В зале стоят четыре огромных {#tables|стола}, покрытых белыми скатертями. На каждом стоят по три красивых серебряных {#candelabra|канделябра}. У столов расставлены массивные деревянные {#chairs|стулья}.'; - }; - tower_accept_1_walls = { - en = 'Cold and lifeless walls feel foreign to this world. I unwillingly shudder from a single touch of this smooth glass-like surface.'; - ru = 'Холодные и безжизненные стены кажутся чуждыми этому миру. Одно прикосновение к этой гладкой, напоминающей стекло на ощупь, поверхности вызывает у меня невольное содрогание.'; - }; - tower_accept_2_walls = { - en = 'Walls are made of unfamiliar black stone. There are no traces of time on them -- not a single scratch nor chip. The smooth and cold surface feels like glass to the touch.'; - ru = 'Стены сделаны из неизвестного мне черного камня. На плитах нет никаких следов времени -- ни единой царапины, ни единого скола, ни единой выщербины. На ощупь эта гладкая и холодная поверхность напоминает стекло.'; - }; - tower_accept_3_walls = { - en = 'The strong black walls feel indestructible. Even time itself has no power over them.'; - ru = 'Крепкие черные стены кажутся нерушимыми. Даже само время не властно над ними.'; - }; - tower_level_1_ceiling = { - en = 'The black arched ceiling is covered by darkness. It\'s about five meters above my head -- quite high for a human, but not enough for my true form.'; - ru = 'Черный сводчатый потолок скрыт в темноте. До него около пяти метров -- весьма высоко для человека, но недостаточно для моего истинного обличия.'; - }; - tower_level_1_tables = { - en = 'The massive tables of black wood are covered by white tablecloths, embroidered with silver. There is no dust on the tables, as if they were served just before I arrived. Each of the tables could fit many dozens of people.'; - ru = 'Массивные столы из черного дерева покрыты белыми, расшитыми серебром скатертями. Пыли на столах нет, словно их накрыли совсем недавно. За каждым из них можно уместить несколько десятков человек.'; - }; - tower_level_1_tables_box = { - en = 'There is a box on one of the tables.'; - ru = 'На одном из столов стоит шкатулка.'; - }; - tower_level_1_candelabra = { - en = 'The elegant silver chandeliers are totally indistinguishable. There are three candles on each of them emitting weak flickering light, totally not enough to illuminate the hall.'; - ru = 'Изящные серебряные канделябры совершенно одинаковы. На каждом из них установлено по три свечи, дающих слабый мерцающий свет, явно недостаточный для того чтобы осветить зал.'; - }; - tower_level_1_candelabra_keys = { - en = 'I notice a key ring near one of the chandeliers.'; - ru = 'Я замечаю связку ключей, лежащую у одного из канделябров.'; - }; - tower_level_1_candelabra_candle_taken = { - en = 'After some thinking, I take one of the candles.'; - ru = 'Немного подумав, я забираю одну из свечей.'; - }; - tower_level_1_candelabra_candle_missing = { - en = 'One of the candles is missing.'; - ru = 'Одна из свеч отсутствует.'; - }; - tower_level_1_chairs = { - en = 'Antique chairs with carved backrests look massive and elegant at the same time.'; - ru = 'Старинные стулья с резными спинками выглядят одновременно массивными и изящными.'; - }; - tower_level_1_keys = { - en = 'There is {a key ring} near one of the chandeliers.'; - ru = 'Рядом с одним из канделябров лежит {связка ключей}.'; - }; - tower_level_1_keys_take = { - en = 'I take the keys.'; - ru = 'Я забираю ключи себе.'; - }; - tower_level_1_box_disp = { - en = 'Box'; - ru = 'Шкатулка'; - }; - tower_level_1_box_dsc = { - en = 'There is {a box} decorated with silver on one of the tables.'; - ru = 'На одном из столов лежит небольшая украшенная серебром {шкатулка}.'; - }; - tower_level_1_box_tak = { - en = 'I take the box. I find a small piece of paper under it, so I also take it.'; - ru = 'Я забираю шкатулку себе. Под ней я обнаруживаю небольшой клочок бумаги. Я прихватываю и его.'; - }; - tower_level_1_box_inv = { - en = 'I am already looking at the box.'; - ru = 'Я уже рассматриваю шкатулку.'; - }; - tower_level_1_door_open = { - en = 'A massive {door} of the same material as the walls is open. Behind it I can see {#stairwell|the stairs} to the next floor of the tower.'; - ru = 'Массивная {дверь} из того же материала, что и стены, открыта. За ней виднеется {#stairwell|лестница} на следующий этаж башни.'; - }; - tower_level_1_door_closed = { - en = 'A massive {door} of the same material as walls is locked, preventing my path to the rest of the tower.'; - ru = 'Массивная {дверь} из того же материала, что и стены, преграждает проход в остальные помещения башни.'; - }; - tower_level_1_door_act_open = { - en = 'The door is open. Behind it I see a staircase of the same material as the tower walls.'; - ru = 'Дверь открыта, за ней я вижу лестницу, сделанную из того же материала, что и стены башни.'; - }; - tower_level_1_door_act_closed = { - en = 'The door is locked. I see a small keyhole, framed by silver.'; - ru = 'Дверь заперта. Я замечаю в ней небольшую замочную скважину, обрамленную серебром.'; - }; - tower_level_1_door_use_correct_key = { - en = 'I put the key into the keyhole. The lock works perfectly and the key turns easily. The door opens effortlessly, granting me the access to the next floor.'; - ru = 'Я вставляю ключ в скважину. Замок работает идеально, и ключ поворачивается очень легко. Дверь открывается почти без усилий, открывая проход на следующий этаж.'; - }; - tower_level_1_door_use_wrong_key = { - en = 'The key does not fit.'; - ru = 'Ключ не подходит.'; - }; - tower_level_1_stairwell = { - en = 'A wide and shallow staircase of smooth black stone leading to the next floor of the tower.'; - ru = 'Широкая и пологая лестница из черного гладкого камня, ведущая на следующий этаж башни.'; - }; - tower_level_1_kitchen_door = { - en = 'There is another {door} in one of the walls.'; - ru = 'В одной из стен есть еще одна {дверца}.'; - }; - tower_level_1_kitchen_door_act_open = { - en = 'The door is slightly ajar.'; - ru = 'Дверь слегка приоткрыта.'; - }; - tower_level_1_kitchen_door_act_closed = { - en = 'An unremarkable wooden door. It is locked. I do not see a way of opening it.'; - ru = 'Неприметная деревянная дверца. Она заперта. Я не вижу никаких способов открыть ее.'; - }; - tower_level_1_kitchen_door_used_key = { - en = 'There is no keyhole.'; - ru = 'Здесь некуда вставить ключ.'; - }; - tower_level_1_kitchen_door_used_potion = { - en = 'There is no lock to pour a potion on it.'; - ru = 'Здесь нет замка, чтобы вылить в него зелье.'; - }; - inside_box_decor = { - en = 'A small wooden box, decorated by thin silver ornaments. On one of the boxes\' faces I see a counter, framed by silver, with numbers: %numbers%. Under the counter there are four keyholes.'; - ru = 'Небольшая деревянная шкатулка, украшенная тонкими серебряными орнаментами. В одной из граней шкатулки я вижу обрамленный серебром счетчик с цифрами: %numbers%. Под счетчиком есть четыре замочные скважины.'; - }; - - inside_box_keyhole_1_key = { - -- Ensure that {%key%} is not the first word in the sentence, as it will be lower-case, it will also be in nominative case - en = 'Into the first keyhole {%key%} is inserted.'; - ru = 'В первую скважину вставлен {%key%}.'; - }; - inside_box_keyhole_1_empty = { - en = '{The first keyhole} is empty.'; - ru = '{Первая скважина} пуста.'; - }; - inside_box_keyhole_2_key = { - -- Ensure that {%key%} is not the first word in the sentence, as it will be lower-case, it will also be in nominative case - en = 'Into the second keyhole {%key%} is inserted.'; - ru = 'Во вторую скважину вставлен {%key%}.'; - }; - inside_box_keyhole_2_empty = { - en = '{The second keyhole} is empty.'; - ru = '{Вторая скважина} пуста.'; - }; - inside_box_keyhole_3_key = { - -- Ensure that {%key%} is not the first word in the sentence, as it will be lower-case - en = 'Into the third keyhole {%key%} is inserted.'; - ru = 'В третью скважину вставлен {%key%}.'; - }; - inside_box_keyhole_3_empty = { - en = '{The third keyhole} is empty.'; - ru = '{Третья скважина} пуста.'; - }; - inside_box_keyhole_4_key = { - -- Ensure that {%key%} is not the first word in the sentence, as it will be lower-case - en = 'Into the fourth keyhole {%key%} is inserted.'; - ru = 'В четвертую скважину вставлен {%key%}.'; - }; - inside_box_keyhole_4_empty = { - en = '{The fourth keyhole} is empty.'; - ru = '{Четвертая скважина} пуста.'; - }; - inside_box_keyhole_used_has_key = { - en = 'There is already a key in the hole.'; - ru = 'В скважине уже есть ключ.'; - }; - inside_box_keyhole_used_insert_key = { - en = 'I insert %key% into the keyhole and turn it. The number on the counter changes.'; - ru = 'Я вставляю %key% в скважину и поворачиваю его. Число на счетчике изменяется.'; - }; - inside_box_keyhole_used_open = { - en = 'Something clicks inside the box and it opens. Inside you find a small silver key.'; - ru = 'В коробочке что-то щелкает и она открывается. Внутри я нахожу небольшой серебряный ключик.'; - }; - inside_box_keyhole_act_key = { - en = 'I remove %key% from the keyhole.'; - ru = 'Я вытаскиваю %key% из скважины.'; - }; - inside_box_keyhole_act_empty = { - en = 'A tiny keyhole.'; - ru = 'Небольшая замочная скважина.'; - }; - tower_level_2_disp = { - en = 'Tower, the Second Floor'; - ru = 'Башня, второй этаж'; - }; - tower_level_2_decor = { - en = 'There is an alchemist\'s laboratory on the second level of the tower. {#tables|Tables} and {#racks|racks} are positioned along {tower_walls|the walls}. There are {#cabinets|cabinets} hanging above some of the tables. In the center of the hall a huge {tower_cauldron|cauldron} is placed with {#fire|the fire} underneath it.'; - ru = 'Второй этаж башни представляет собой алхимическую лабораторию. Вдоль {tower_walls|стен} расположены {#tables|столы} и {#racks|стеллажи}. Над некоторыми столами висят {#cabinets|шкафчики}. В центре зала установлен громадный {tower_cauldron|котел}, под которым пылает {#fire|огонь}.'; - }; - tower_level_2_tables = { - en = 'Heavy tabletops of black stone rest upon strong and stable legs. The tables are filled will all kinds of alchemical apparatus, vials, and flasks.'; - ru = 'Тяжелые столешницы из черного камня покоятся на прочных и устойчивых ножках. Столы уставлены всевозможными алхимическими приборами, пробирками и колбочками.'; - }; - tower_level_2_table_vials = { - en = 'On one of the tables I find two vials with some colored liquids.'; - ru = 'На одном из столов я замечаю две пробирки с цветными жидкостями.'; - }; - tower_level_2_cabinet_vials = { - en = 'In one of the cabinets I find two vials with some colored liquids.'; - ru = 'В одном из шкафчиков я обнаруживаю две пробирки с цветными жидкостями.'; - }; - tower_level_2_rack_vials = { - en = 'On one of the shelves I find two vials with some colored liquids.'; - ru = 'На одной из полок я обнаруживаю две пробирки с цветными жидкостями.'; - }; - tower_level_2_racks = { - en = 'The strong wooden racks are filled with vials, bulbs and flasks. Most of them are empty.'; - ru = 'Прочные деревянные стеллажи заполнены пробирками, колбочками и пузырьками. Большинство из них пусты.'; - }; - tower_level_2_cabinets = { - en = 'Most of the cabinets contain nothing of value but various alchemy apparatus.'; - ru = 'Большая часть шкафчиков не содержат ничего интересного, не считая различных алхимических приборов.'; - }; - tower_level_2_fire = { - en = 'The bright fire seemingly does not emit any heat. Its light barely illuminates the darkness filling the hall.'; - ru = 'Яркий огонь, кажется, совсем не греет. Свет от него едва разгоняет наполняющую зал тьму.'; - }; - tower_level_2_book = { - en = 'There is an open {book} on one of the tables.'; - ru = 'На одном из столов лежит раскрытая {книга}.'; - }; - tower_level_2_cauldron_used = { - en = 'I put %item% into the cauldron.'; - ru = 'Я помещаю %item% в котел.'; - }; - tower_level_2_potion_ready = { - en = 'The potion is ready!'; - ru = 'Зелье готово!'; - }; - tower_level_2_potion_in_the_cauldron = { - en = 'The potion in the cauldron is already done.'; - ru = 'Зелье в котле уже готово.'; - }; - tower_level_2_cannot_be_thrown = { - en = 'This is needed elsewhere.'; - ru = 'Незачем это делать.'; - }; - tower_2_door_dsc_open = { - en = 'The massive {door} is open. Behind it I can see {#stairwell|a staircase} leading to the next floor of the tower.'; - ru = 'Массивная {дверь} открыта. За ней виднеется {#stairwell|лестница} на следующий этаж башни.'; - }; - tower_2_door_dsc_closed = { - en = 'The massive {door} blocks the passage to the rest of the tower.'; - ru = 'Массивная {дверь} преграждает проход в остальные помещения башни.'; - }; - tower_2_door_act_open = { - en = 'The door is made of the same material as walls. It is open now, I can see a staircase of the same black stone behind it.'; - ru = 'Дверь сделана из того же материала, что и стены. Сейчас она открыта, за ней я вижу лестницу из такого же черного камня.'; - }; - tower_2_door_act_closed = { - en = 'The door is made of the same material as the walls. It is locked, but I notice a small keyhole framed with silver.'; - ru = 'Дверь сделана из того же материала, что и стены. Сейчас она заперта. Я замечаю в ней небольшую замочную скважину, обрамленную серебром.'; - }; - tower_2_door_used_key = { - en = 'The key does not fit.'; - ru = 'Ключ не подходит.'; - }; - tower_2_door_used_potion = { - en = 'I pour the potion into the lock and it is momentarily eaten by rust. The way is clear.'; - ru = 'Я выливаю зелье в замок и его моментально съедает ржавчина. Путь свободен.'; - }; - red_catalyst_dsc = { - en = 'There is {a vial with red liquid} on one of the tables.'; - ru = 'На одном из столов стоит {пробирка с красной жидкостью}.'; - }; - red_catalyst_disp = { - en = 'Red Catalyst'; - ru = 'Красный катализатор'; - }; - red_catalyst_disp2 = { - en = 'the red catalyst'; - ru = 'красный катализатор'; - }; - red_catalyst_disp3 = { - en = 'the red catalyst'; - ru = 'красный катализатор'; - }; - catalyst_tak = { - en = 'I take the vial. There is a label saying "Catalyst" on it.'; - ru = 'Я забираю пробирку себе. На нее наклеен кусочек бумаги с надписью "Катализатор".'; - }; - red_catalyst_inv = { - en = 'A vial of red liquid marked as "Catalyst".'; - ru = 'Пробирка с красной жидкостью, подписанная словом "Катализатор'; - }; - green_catalyst_dsc = { - en = 'There is {a vial with green liquid} in one of the cabinets.'; - ru = 'В одном из шкафчиков стоит {пробирка с зеленой жидкостью}.'; - }; - green_catalyst_disp = { - en = 'Green Catalyst'; - ru = 'Зеленый катализатор'; - }; - green_catalyst_disp2 = { - en = 'the green catalyst'; - ru = 'зеленый катализатор'; - }; - green_catalyst_disp3 = { - en = 'the green catalyst'; - ru = 'зеленый катализатор'; - }; - green_catalyst_inv = { - en = 'A vial of green liquid marked as "Catalyst".'; - ru = 'Пробирка с зеленой жидкостью, подписанная словом "Катализатор".'; - }; - blue_catalyst_dsc = { - en = 'There is {a vial with blue liquid} on one of the shelves.'; - ru = 'На одной из полок стоит {пробирка с синей жидкостью}.'; - }; - blue_catalyst_disp = { - en = 'Blue Catalyst'; - ru = 'Синий катализатор'; - }; - blue_catalyst_disp2 = { - en = 'the blue catalyst'; - ru = 'синий катализатор'; - }; - blue_catalyst_disp3 = { - en = 'the blue catalyst'; - ru = 'синий катализатор'; - }; - blue_catalyst_inv = { - en = 'A vial of blue liquid marked as "Catalyst".'; - ru = 'Пробирка с синей жидкостью, подписанная словом "Катализатор".'; - }; - purple_catalyst_dsc = { - en = 'There is {a vial with purple liquid} on one of the shelves.'; - ru = 'На одном из столов стоит {пробирка с фиолетовой жидкостью}.'; - }; - purple_catalyst_disp = { - en = 'Purple Catalyst'; - ru = 'Фиолетовый катализатор'; - }; - purple_catalyst_disp2 = { - en = 'the purple catalyst'; - ru = 'фиолетовый катализатор'; - }; - purple_catalyst_disp3 = { - en = 'the purple catalyst'; - ru = 'фиолетовый катализатор'; - }; - purple_catalyst_inv = { - en = 'A vial of purple liquid marked as "Catalyst".'; - ru = 'Пробирка с фиолетовой жидкостью, подписанная словом "Катализатор".'; - }; - yellow_catalyst_dsc = { - en = 'There is {a vial with yellow liquid} on one of the shelves.'; - ru = 'В одном из шкафчиков стоит {пробирка с желтой жидкостью}.'; - }; - yellow_catalyst_disp = { - en = 'Yellow Catalyst'; - ru = 'Желтый катализатор'; - }; - yellow_catalyst_disp2 = { - en = 'the yellow catalyst'; - ru = 'желтый катализатор'; - }; - yellow_catalyst_disp3 = { - en = 'the yellow catalyst'; - ru = 'желтый катализатор'; - }; - yellow_catalyst_inv = { - en = 'A vial of yellow liquid marked as "Catalyst".'; - ru = 'Пробирка с желтой жидкостью, подписанная словом "Катализатор".'; - }; - - turquoise_catalyst_dsc = { - en = 'There is {a vial with turquoise liquid} on one of the shelves.'; - ru = 'На одной из полок стоит {пробирка с бирюзовой жидкостью}.'; - }; - turquoise_catalyst_disp = { - en = 'Turquoise Catalyst'; - ru = 'Бирюзовый катализатор'; - }; - turquoise_catalyst_disp2 = { - en = 'the turquoise catalyst'; - ru = 'бирюзовый катализатор'; - }; - turquoise_catalyst_disp3 = { - en = 'the turquoise catalyst'; - ru = 'бирюзовый катализатор'; - }; - turquoise_catalyst_inv = { - en = 'A vial of turquoise liquid marked as "Catalyst".'; - ru = 'Пробирка с бирюзовой жидкостью, подписанная словом "Катализатор".'; - }; - - alchemy_book_dlg_disp = { - en = 'The Alchemist\'s Book'; - ru = 'Алхимическая книга'; - }; - alchemy_book_dlg_enter = { - en = 'There is a book of alchemical recipes in front of me. Some of them draw my attention.'; - ru = 'Передо мной лежит раскрытая на оглавлении книга алхимических рецептов. Некоторые из них привлекают мое внимание.'; - }; - alchemy_book_dlg_open = { - en = 'Opening'; - ru = 'Открытие'; - }; - alchemy_book_dlg_open_response = { - en = 'Ingredients: a key, a lock, %catalyst%. ^^Pour into a lock you need to open.'; - ru = 'Состав: ключ, замок, %catalyst%. ^^Зелье вылить в замок, который необходимо открыть.'; - }; - alchemy_book_dlg_light= { - en = 'Light'; - ru = 'Свет'; - }; - alchemy_book_dlg_light_response = { - en = 'Ingredients: a candle, some glass, %catalyst%. ^^The potion vaporises quickly. The effect lasts from one to three hours.'; - ru = 'Состав: Свеча, стекло, %catalyst%. ^^Зелье быстро испаряется. Эффект длится от одного до трех часов.'; - }; - alchemy_book_dlg_rich = { - en = 'Enrichment'; - ru = 'Обогащение'; - }; - alchemy_book_dlg_rich_response = { - en = 'Ingredients: some precious metal, a precious gem, %catalyst%. ^^Drink this potion to enrich yourself. Radiation warning!'; - ru = 'Состав: драгоценный металл, драгоценный камень, %catalyst%. ^^Выпейте это зелье и вы обогатитесь. Осторожно, радиоактивно!'; - }; - alchemy_book_dlg_leave = { - en = '[Step away from the book]'; - ru = '[Отойти от книги]'; - }; - cauldron_inside_disp = { - en = 'Cauldron'; - ru = 'Котел'; - }; - cauldron_inside_enter_potion = { - -- %potion% is in nominative, lowercase - en = 'There is %potion% ready in the cauldron.'; - ru = 'В котле приготовлено %potion%.'; - }; - cauldron_inside_enter_water = { - en = 'The cauldron is full of boiling water.'; - ru = 'Котел полон кипящей воды.'; - }; - cauldron_inside_enter_single_item = { - -- %potion% is in nominative, lowercase - en = 'There is %item% in the cauldron.'; - ru = 'В котле сейчас находится %item%.'; - }; - cauldron_inside_enter_many_items = { - en = 'There are several items in the cauldron:'; - ru = 'В котле сейчас находятся:'; - }; - cauldron_inside_take_potion = { - en = '[Take the potion]'; - ru = '[Забрать зелье]'; - }; - cauldron_inside_take_potion_response = { - en = 'I fill a vial with the potion.'; - ru = 'Я набираю получившееся зелье в пробирку.'; - }; - cauldron_inside_take_items = { - en = '[Take everything from the cauldron]'; - ru = '[Забрать все из котла]'; - }; - cauldron_inside_leave = { - en = '[Step away from the cauldron]'; - ru = '[Отойти от котла]'; - }; - tower_level_3_disp = { - en = 'Tower, the Third Floor'; - ru = 'Башня, третий этаж'; - }; - tower_level_3_decor = { - en = 'The third floor of the tower looks like some study. The room is filled with comfortable twilight. {#bookshelves|Bookshelves} are positioned along one of {tower_walls|the walls}, and {#fireplace|a fireplace} is mounted into the opposite one. There is an old {#rockchair|rocking chair} slightly away from it. A massive wooden {tower_level_3_table|table} is placed in the center of the room.'; - ru = 'Третий этаж выглядит как чей-то кабинет. В помещении царит уютный полумрак. Вдоль одной из {tower_walls|стен} установлены {#bookshelves|книжные полки}, а в стену напротив них вмонтирован пылающий {#fireplace|камин}. Чуть поодаль от него стоит старое {#rockchair|кресло-качалка}. В центре комнаты расположен массивный деревянный {tower_level_3_table|стол}.'; - }; - tower_level_3_bookshelves = { - en = 'I briefly look through the books. Many of them are very old, some are written in languages unfamiliar to me. There are both works of fiction and science or philosophy of various ages.'; - ru = 'Я пробегаю взглядом по корешкам книг. Многие из них очень старые, некоторые из них написаны на неизвестных мне языках. Здесь есть как художественные произведения, так и труды философов и ученых разных эпох.'; - }; - tower_level_3_fireplace = { - en = 'Despite blazing fire, the room is dark and cool. The crackling of cinders and flickering shadows on the walls are relaxing and calming.'; - ru = 'Несмотря на пылающий в камине огонь, в помещении царят полумрак и прохлада. Весело потрескивающие угольки и мерцающие на стенах тени от пляшущего пламени расслабляют и успокаивают.'; - }; - tower_level_3_rockchair = { - en = 'An antique oaken rocking armchair upholstered with soft tapestry. The armchair is in pristine condition. There is not a single scratch or wear on its surface, even the upholstery looks like new.'; - ru = 'Старинное кресло-качалка из дуба с мягкой гобеленовой обивкой. Кресло в превосходном состоянии -- на нем нет ни единой царапинки или потертости, обивка также выглядит как новая.'; - }; - tower_level_3_hidden_door_dsc = { - en = 'A small {door} is hidden behind one of the bookshelves.'; - ru = 'За одной из книжных полок скрывается небольшая {дверца}.'; - }; - tower_level_3_hidden_door_act = { - en = 'I wouldn\'t have noticed this door without knowing about it. '; - ru = 'Я не заметил бы эту дверцу, если бы не знал, что она там есть.'; - }; - tower_level_3_table_solved = { - en = 'A huge table takes up significant space in the center of the room. Polished surface shines in the flickering light from the fireplace. There are five hexagonal deepenings in the surface of the table. Four of them are marked with the directions: NW, NE, SE, SW, and the one in the center is unmarked. There is a little silver figurine in each of the deepenings. A writing is made along the table\'s perimeter in an elaborate script.'; - ru = 'Огромный стол занимает значительное пространство в центре комнаты. Полированная поверхность блестит в мерцающем свете камина. В поверхности стола есть пять шестиугольных углублений, четыре из которых отмечены сторонами света: NW, NE, SE, SW, а еще одна, в центре, оставлена без отметки. В каждом углублении стоит небольшая фигурка из серебристого металла. По периметру стола витиеватым почерком нанесена какая-то надпись.'; - }; - tower_level_3_door_dsc_locked = { - en = 'A massive locked {door} of the same material as the walls.'; - ru = 'Массивная {дверь} из того же материала, что и стены, заперта.'; - }; - tower_level_3_door_dsc_open = { - en = 'A massive open {door} of the same material as the walls. Behind it I see {#stairwell|a staircase} leading to the next floor of the tower.'; - ru = 'Массивная {дверь} из того же материала, что и стены, открыта. За ней виднеется {#stairwell|лестница} на следующий этаж башни.'; - }; - tower_level_3_door_act_locked = { - en = 'The door is locked. I see no openings in it.'; - ru = 'Дверь заперта. Я не вижу в ней никаких отверстий.'; - }; - tower_level_3_door_act_open = { - en = 'The door is open. Behind it I see {#stairwell|a staircase} leading to the next floor of the tower, made of the same black rock as the tower walls.'; - ru = 'Дверь открыта, за ней я вижу {#stairwell|лестницу}, сделанную из того же черного камня, что и стены башни.'; - }; - tower_level_3_table_in_decor = { - en = 'A huge table takes up significant space in the center of the room. Polished surface shines in the flickering light from the fireplace. There are five hexagonal deepenings in the surface of the table. Four of them are marked with the directions: NW, NE, SE, SW, and the one in the center was unmarked. There is a little silver figurine in each of the deepenings. A writing is made along the table\'s perimeter in an elaborate {#hint|script}.'; - ru = 'Огромный стол занимает значительное пространство в центре комнаты. Полированная поверхность блестит в мерцающем свете камина. В поверхности стола есть пять шестиугольных углублений, четыре из которых отмечены сторонами света: NW, NE, SE, SW, а еще одна, в центре, оставлена без отметки. По периметру стола витиеватым почерком нанесена какая-то {#hint|надпись}.'; - }; - tower_level_3_table_in_figures_dsc = { - en = 'There are {five figurines} of silvery metal on it.^'; - ru = 'На нем стоят {пять фигурок} из серебристого металла.^'; - }; - tower_level_3_table_in_figures_act = { - en = 'I take the figurines from the table.'; - ru = 'Я поднимаю фигурки со стола.'; - }; - -- %location% is untranslated and is one of the markings: NW, NE, SE, SW in all below keys - tower_level_3_table_deepening_dsc_full = { - -- %item% is in nominative, lowercase - en = 'The %location% deepening contains {%item%}.^'; - ru = 'В углублении %location% стоит {%item%}.^'; - }; - tower_level_3_table_deepening_dsc_empty = { - en = '{The %location% deepening} is empty.^'; - ru = '{Углубление %location%} пусто.^'; - }; - tower_level_3_table_middle_deepening_dsc_full = { - -- %item% is in nominative, lowercase - en = 'The central deepening contains {%item%}.^'; - ru = 'В центральном углублении стоит {%item%}.^'; - }; - tower_level_3_table_middle_deepening_dsc_empty = { - en = '{The central deepening} is empty.^'; - ru = '{Центральное углубление} пусто.^'; - }; - tower_level_3_table_deepening_act_full = { - -- %item% is in accusative, lowercase - en = 'I take %item% from the deepening.'; - ru = 'Я забираю %item% из углубления.'; - }; - tower_level_3_table_deepening_act_empty = { - en = 'A small hexagonal deepening.'; - ru = 'Небольшое шестиугольное углубление.'; - }; - tower_level_3_table_deepening_used_full = { - -- %item% is in nominative, lowercase - en = 'There is already %item% in the deepening.'; - ru = 'В углублении уже стоит %item%.'; - }; - tower_level_3_table_deepening_used_fit = { - -- %item% is in accusative, lowercase - en = 'I put %item% into the deepening.'; - ru = 'Я помещаю %item% в углубление.'; - }; - tower_level_3_table_deepening_used_open = { - en = 'A light click denotes the opening of the door to the next floor of the tower.'; - ru = 'Легкий щелчок дает мне понять, что дверь на следующий этаж башни открыта.'; - }; - tower_level_3_hint = { - en = [[There is the following text on the table:^ -Five they are, each of it's own color: white, crimson, azure, green and black.^ -Four of them have their time: midday, midnight, dawn and sunset, the fifth is eternal.^ -Four of them have their season: autumn, summer, spring and winter, the fifth is eternal.^ -Four of them have their moon: growing, full, waning and new, the fifth is eternal.^ -Four are turned to the fifth, standing in the center.^ -North-west belongs to the full moon. The green lands of the new moon are opposite to it.^ -The tiger prowls his lands at midday.^ -The winter is not in the south nor in the east. And the spring is not in the west.^ -The tower is eternal, but color it has.^ -The wolf at midnight walks his domain, the lord of summer lives opposite him.^ -The moon wanes in the north, and the white sunset belongs to the south.^ -The black is in the center, surrounded by the dawn, the sunset, midnight and midday.^ -The crimson lion denotes the dawn in it's glory. - ]]; - ru = [[На столе я замечаю следующий текст:^ -Пятеро их, у каждого цвет свой: белый, алый, лазурный, зеленый и черный.^ -Четверым дано время: полдень, полночь, рассвет и закат, пятый – вне времени.^ -Четверым дан сезон: осень, лето, весна и зима, пятый – вне времени.^ -Четверым даны луны: растущая, полная, убывающая и новая, пятый – вне времени.^ -Четверо к пятому, в центре стоящему, обращены.^ -На северо-западе место полной луны. Владения новой, зеленой – напротив ее.^ -Тигр в полдень бродит по землям своим.^ -Зима не на юге, но и не на востоке. Весна не на западе.^ -Башня – вне времени, лишь цвет ей присущ.^ -Волк в полночь обходит владенья свои, тот что летом владеет – напротив его.^ -Луна убывает на севере, белый закат пребывает на юге.^ -Черный – в центре, окружен он рассветом, закатом, полночью и полднем.^ -Лев алый весенний рассвет собой воплощает.]]; - }; - figure_wolf_disp = { - en = 'Wolf Figurine'; - ru = 'Фигурка волка'; - }; - figure_wolf_disp2 = { - en = 'the wolf figurine'; - ru = 'фигурка волка'; - }; - figure_wolf_disp3 = { - en = 'the wolf figurine'; - ru = 'фигурку волка'; - }; - figure_wolf_inv = { - en = 'A figurine of a wolf howling at the moon is made of unknown silvery metal. It is highly detailed and placed on a hexagonal base of the same metal.'; - ru = 'Фигурка волка, воющего на луну, из неизвестного мне серебристого металла. Очень детально проработанная, она закреплена на шестиугольном основании из того же металла.'; - }; - figure_tiger_disp = { - en = 'Tiger Figurine'; - ru = 'Фигурка тигра'; - }; - figure_tiger_disp2 = { - en = 'the tiger figurine'; - ru = 'фигурка тигра'; - }; - figure_tiger_disp3 = { - en = 'the tiger figurine'; - ru = 'фигурку тигра'; - }; - figure_tiger_inv = { - en = 'A figurine of a tiger standing on his rear feet is made of unknown silvery metal. It is highly detailed and placed on a hexagonal base of the same metal.'; - ru = 'Фигурка тигра, вставшего на задние ноги, из неизвестного мне серебристого металла. Очень детально проработанная, она закреплена на шестиугольном основании из того же металла.'; - }; - figure_lion_disp = { - en = 'Lion Figurine'; - ru = 'Фигурка льва'; - }; - figure_lion_disp2 = { - en = 'the lion figurine'; - ru = 'фигурка льва'; - }; - figure_lion_disp3 = { - en = 'the lion figurine'; - ru = 'фигурку льва'; - }; - figure_lion_inv = { - en = 'A figurine of a lion, proudly watching over his lands, is made of unknown silvery metal. It is highly detailed and placed on a hexagonal base of the same metal.'; - ru = 'Фигурка льва, гордо осматривающего свои владения. Сделана из неизвестного мне серебристого металла. Очень детально проработанная, она закреплена на шестиугольном основании из того же металла.'; - }; - figure_knight_disp = { - en = 'Knight Figurine'; - ru = 'Фигурка рыцаря'; - }; - figure_knight_disp2 = { - en = 'the knight figurine'; - ru = 'фигурка рыцаря'; - }; - figure_knight_disp3 = { - en = 'the knight figurine'; - ru = 'фигурку рыцаря'; - }; - figure_knight_inv = { - en = 'A figurine of a knight in full armor, leaning on his giant two-handed sword. It is made of unknown silvery metal. It is highly detailed and placed on a hexagonal base of the same metal.'; - ru = 'Фигурка рыцаря в полном доспехе, стоящего, опершись на громадный двуручный меч. Сделана из неизвестного мне серебристого металла. Очень детально проработанная, она закреплена на шестиугольном основании из того же металла.'; - }; - figure_tower_disp = { - en = 'Tower Figurine'; - ru = 'Фигурка башни'; - }; - figure_tower_disp2 = { - en = 'the tower figurine'; - ru = 'фигурка башни'; - }; - figure_tower_disp3 = { - en = 'the tower figurine'; - ru = 'фигурку башни'; - }; - figure_tower_inv = { - en = 'A figurine of a high hexagonal tower -- a miniature copy of the one I\'m in currently. It is made of unknown silvery metal. It is highly detailed and placed on a hexagonal base of the same metal.'; - ru = 'Фигурка высокой шестиугольной башни -- уменьшенной копии той, в которой я сейчас нахожусь. Сделана из неизвестного мне серебристого металла. Очень детально проработанная, она закреплена на шестиугольном основании из того же металла.'; - }; - tower_level_4_disp = { - en = 'Tower, the Fourth Floor'; - ru = 'Башня, четвертый этаж'; - }; - tower_level_4_decor = { - en = 'I find myself in a spacious room. As in the other places in the tower, the black {tower_walls|walls} have no windows. In the center of the room, there is a luxurious {#bed|bed} with a heavy baldachin of dense black cloth decorated by silver threads. Beside the bed a small round {#table|table} with a silver {#candelabra|chandelier} on it is standing.'; - ru = 'Я нахожусь в просторной комнате. Как и в других помещениях башни, черные {tower_walls|стены} лишены окон. В центре комнаты расположена роскошная {#bed|кровать} с тяжелым балдахином из плотной черной ткани, украшенной серебряными нитями. Рядом с кроватью стоит небольшой круглый {#table|столик} с серебряным {#candelabra|канделябром} на нем.'; - }; - tower_level_4_bed = { - en = 'A huge bed is covered by a snow-white sheet embroidered by silver. Near the headboard a large pillow in a white lacy case lies. For a human the bed is quite large, but it\'s still too small for a dragon... And dragons don\'t sleep in beds...'; - ru = 'Огромная кровать накрыта белоснежной простыней, расшитой серебром. У изголовья лежит большая подушка в белой наволочке с кружевами. Для человека кровать крайне просторна, но она все еще слишком мала для дракона... Да и драконы не спят в кроватях...'; - }; - tower_level_4_table = { - en = 'A small table of rich black wood stands on a single massive leg.'; - ru = 'Небольшой столик из роскошного черного дерева держится на единственной массивной ножке.'; - }; - tower_level_4_chandelier_act_take_candle = { - en = 'After some thinking I take one of the candles.'; - ru = 'Немного подумав, я забираю одну из свечей.'; - }; - tower_level_4_chandelier_act = { - en = 'An elegant silver chandelier with seven candles. They are not lit.'; - ru = 'Изящный серебряный канделябр на семь свечей. Сейчас они не горят.'; - }; - tower_level_4_chandelier_act_missing = { - en = 'One of the candles is missing.'; - ru = 'Одна из свечей отсутствует.'; - }; - tower_level_4_door_dsc_locked = { - en = 'There is a small wooden {door} in the far wall.'; - ru = 'В дальней стене расположена небольшая деревянная {дверца}.'; - }; - tower_level_4_door_dsc_open = { - en = 'The wooden {door} in the end of the hall is open.'; - ru = 'Деревянная {дверь} в дальнем конце зала открыта.'; - }; - tower_level_4_door_act_locked = { - en = 'The door is locked. I don\'t see any way to open it.'; - ru = 'Дверь заперта. Я не вижу никаких способов открыть ее.'; - }; - tower_level_4_door_act_open = { - en = 'The door is open. Behind it I see a large hall, filled with server stands.'; - ru = 'Дверь открыта, за ней я вижу просторный зал, уставленный высокими стойками с серверами.'; - }; - tower_level_4_candle_act_lit = { - en = 'I light the candle. A note %note% plays somewhere far away.'; - ru = 'Я зажигаю свечу. Откуда-то издали доносится нота %note%.'; - }; - tower_level_4_candle_act_blow = { - en = 'A gust of wind appears from nowhere and blows all the candles.'; - ru = 'Неведомо откуда взявшийся порыв ветра гасит зажженные свечи.'; - }; - tower_level_4_candle_act_sequence = { - en = 'A sequence of sounds plays in the darkness:'; - ru = 'В темноте раздается последовательность звуков:'; - }; - tower_level_4_candle_act_open = { - en = 'The door in the far end of the room flies open from a sudden gust of wind.'; - ru = 'Дверца в дальнем конце комнаты распахивается от резкого порыва ветра.'; - }; - tower_candelabra_dsc = { - en = 'An elegant chandelier with seven candles.'; - ru = 'Изящный канделябр на семь свечей.'; - }; - tower_candelabra_enter = { - en = 'As my glance falls upon the chandelier, a sequence of the sounds plays in the darkness:'; - ru = 'Едва мой взгляд падает на канделябр, как в темноте раздается последовательность звуков:'; - }; - tower_candle_1 = { - en = 'Light the first candle'; - ru = 'Зажечь первую свечу'; - }; - tower_candle_2 = { - en = 'Light the second candle'; - ru = 'Зажечь вторую свечу'; - }; - tower_candle_3 = { - en = 'Light the third candle'; - ru = 'Зажечь третью свечу'; - }; - tower_candle_4 = { - en = 'Light the fourth candle'; - ru = 'Зажечь четвертую свечу'; - }; - tower_candle_5 = { - en = 'Light the fifth candle'; - ru = 'Зажечь пятую свечу'; - }; - tower_candle_6 = { - en = 'Light the sixth candle'; - ru = 'Зажечь шестую свечу'; - }; - tower_candle_7 = { - en = 'Light the seventh candle'; - ru = 'Зажечь седьмую свечу'; - }; - tower_level_4_room_2_disp = { - en = 'Tower, the Server Room'; - ru = 'Башня, серверная'; - }; - tower_level_4_room_2_decor = { - en = 'Racks with {#servers|servers} are placed along the walls. In the center of the hall a massive wooden {#table|table} stands, on which an old {#computer|computer} is positioned. Near the table I see an antique {#armchair|armchair}. Not far from the table, there is {#ladder|a ladder}, leading to lower levels of the tower.'; - ru = 'Вдоль стен зала установлены стойки с {#servers|серверами}. В центре зала стоит массивный деревянный {#table|стол}, на котором стоит старый {#computer|компьютер}. Перед столом стоит тяжелое старинное {#armchair|кресло}. Неподалеку от стола находится {#ladder|лестница}, ведущая на нижние уровни башни.'; - }; - tower_level_4_room_2_ladder = { - en = 'A strong metal ladder is secured here, leading vertically down.'; - ru = 'Прочная металлическая лестница закреплена здесь и уходит вертикально вниз.'; - }; - tower_level_4_room_2_servers_powered = { - en = 'Hundreds if not thousands of servers. I can\'t imagine what they are for. Humming of working coolers and light cracking of hard drives tell me that machines are functioning. The flickering lights reflect the processes happening in them.'; - ru = 'Сотни, если не тысячи серверов. Понятия не имею, зачем они здесь. Ровный гул работающих вентиляторов и легкое потрескивание жестких дисков говорят о том, что машины сейчас работают. Мерцающие лампочки отражают процессы, происходящие в них.'; - }; - tower_level_4_room_2_servers = { - en = 'Hundreds if not thousands of servers. I can\'t imagine what they are for. They are not powered.'; - ru = 'Сотни, если не тысячи серверов. Понятия не имею, зачем они здесь. Сейчас они обесточены.'; - }; - tower_level_4_room_2_table = { - en = 'A strong wooden table on the massive carved legs. Its polished surface shines like new. Most of the table is taken up by a computer. Near the keyboard {#manual|a book} is placed.'; - ru = 'Крепкий дубовый стол на массивных резных ножках. На полированной поверхности нет ни единой царапины. Большую часть стола занимает компьютер. Рядом с клавиатурой лежит {#manual|книга}.'; - }; - tower_level_4_room_2_armchair = { - en = 'A cozy antique armchair with wheels and upholstered with soft tapestry. It shows no signs of use or time. The carved back and armrests of black wood look like new.'; - ru = 'Уютное старинное кресло на колесиках с мягкой гобеленовой обивкой, на которой нет ни малейших следов использования или времени. Резные спинка и подлокотники из черного дерева выглядят совершенно новыми.'; - }; - tower_level_4_room_2_computer_act = { - en = 'The look of the computer remind me of the early 80s. There are no disk drives. "TETS-1" label on the system unit does not tell me anything. The power and network cables go somewhere beneath the floor. A small {#monitor|monitor} is standing on top of the system unit. The computer is turned off now and there is no power.'; - ru = 'Внешний вид компьютера напоминает о начале 80х. Дисководы отсутствуют. Эмблема "TETS-1" на системном блоке мне ни о чем не говорит. Провода питания и локальной сети уходят куда-то под пол. На системном блоке стоит небольшой {#monitor|монитор}. Сейчас компьютер выключен -- нет электричества.'; - }; - tower_level_4_room_2_computer_used_disassemble = { - en = 'I disconnect all the cables and, unscrewing a number of bolts, take off the lid.'; - ru = 'Я отключаю все провода и, открутив несколько винтов, снимаю крышку корпуса.'; - }; - tower_level_4_room_2_computer_used_assemble = { - en = 'I assemble the case back and connect all the required cables.'; - ru = 'Я собираю корпус обратно и подключаю все необходимые провода.'; - }; - tower_level_4_room_2_monitor = { - en = 'A small cathode-ray tube monitor. The screen diagonal is about 8 inches. On the right of it I see the handles to set brightness and contrast.'; - ru = 'Небольшой монитор с электронно-лучевой трубкой. Диагональ экрана составляет около 8 дюймов, справа от него я вижу ручки регулировки яркости и контрастности.'; - }; - system_unit_disp = { - en = 'The System Unit'; - ru = 'Системный блок'; - }; - system_unit_decor = { - en = 'I peek inside the system unit and look at the installed components. Quite easily I find the location of RAM, CPU, and expansion cards despite never seeing the same chip markings and slot types anywhere else.'; - ru = 'Я заглядываю внутрь системного блока и осматриваю установленные в нем компоненты. Довольно легко я определяю где находится оперативная память, процессор, платы расширения. Маркировки чипов и типы разъемов, однако, вне этой башни мне не встречались.'; - }; - system_unit_check_turn_on = { - en = 'I turn on the computer.'; - ru = 'Я включаю компьютер.'; - }; - system_unit_check_fail = { - en = 'The cooler in the power supply starts to hum, but the screen does not light up.'; - ru = 'Вентилятор в блоке питания начинает шуметь, но экран не включается.'; - }; - system_unit_check_network_fail = { - en = 'At first computer seems to start successfully, but then it shows a message that it has no boot device.'; - ru = 'Сначала компьютер, кажется, включился нормально, однако затем появилось сообщение об отсутствующем загрузочном устройстве.'; - }; - system_unit_check_no_sound = { - en = 'I don\'t hear any sound signals.'; - ru = 'Я не слышу никаких звуковых сигналов.'; - }; - system_unit_check_1_long_2_short = { - en = 'I hear a sequence of sound signals: one long and two short.'; - ru = 'Я слышу последовательность звуковых сигналов: один длинный и два коротких.'; - }; - system_unit_check_1_short_2_long = { - en = 'I hear a sequence of sound signals: one short and two long.'; - ru = 'Я слышу последовательность звуковых сигналов: один короткий и два длинных.'; - }; - system_unit_check_1_long_1_short_1_long = { - en = 'I hear a sequence of sound signals: one long, one short, and one long.'; - ru = 'Я слышу последовательность звуковых сигналов: один длинный, один короткий и еще один длинный.'; - }; - system_unit_check_3_long = { - en = 'I hear a sequence of sound signals: three long.'; - ru = 'Я слышу последовательность звуковых сигналов: три длинных.'; - }; - tower_level_3_room_2_disp = { - en = 'Tower, the Warehouse'; - ru = 'Башня, Склад'; - }; - tower_level_3_room_2_decor_lit = { - en = 'The room is a colossal warehouse. There is {#ladder|a ladder} leading up near me. There is also a similar {#ladder_down|ladder}, leading downwards a bit further away. {#floor|The floor} here is the same as in the other rooms of the tower. {#walls|The walls} are mostly unseen from here, hidden by a multitude of {#shelves|racks}. {#ceiling|The ceiling} of the room is about five meters high.'; - ru = 'Помещение представляет собой колоссальных размеров склад. Рядом со мной находится {#ladder|лестница}, ведущая вверх. Точно такая же {#ladder_down|лестница}, но ведущая вниз расположена чуть поодаль. {#floor|Пол} здесь точно такой же как и в других помещениях башни. {#walls|Стены} отсюда практически не видны, скрытые многочисленными {#shelves|стеллажами}. {#ceiling|Потолок} зала расположен на высоте около пяти метров.'; - }; - tower_level_3_room_2_decor_dark = { - en = 'The room is a colossal warehouse. Through {#darkness|the darkness} I can discern only a few {#shelves|racks} near me. There is {#ladder|a ladder} leading up near me.'; - ru = 'Помещение представляет собой колоссальных размеров склад. В {#darkness|темноте} я могу различить лишь несколько {#shelves|стеллажей} неподалеку от себя. Рядом со мной находится {#ladder|лестница}, ведущая вверх.'; - }; - tower_level_3_room_2_ladder_up = { - en = 'A strong metal ladder leading vertically up to the neighboring level of the tower.'; - ru = 'Прочная металлическая лестница уходит вертикально вверх на соседний этаж башни.'; - }; - tower_level_3_room_2_ladder_down = { - en = 'A strong metal ladder leading vertically down to the neighboring level of the tower.'; - ru = 'Прочная металлическая лестница уходит вертикально вниз на соседний этаж башни.'; - }; - tower_level_3_room_2_floor = { - en = 'Smooth stone plates carved with astonishing accuracy look as if they were just placed -- they don\'t have even the smallest flaw, not a single scratch or dent.'; - ru = 'Ровные каменные плиты вырезаны с потрясающей точностью и выглядят так, будто их только что сюда положили -- на них нет ни малейшего изъяна, ни единой царапины или выбоины.'; - }; - tower_level_3_room_2_walls = { - en = 'I am sure that if I find my way to the wall, I\'ll see the same smooth black stone as everywhere else.'; - ru = 'Я уверен, что если смогу добраться до стены, то увижу точно такую же гладкую поверхность черного камня, как и везде.'; - }; - tower_level_3_room_2_ceiling_power = { - en = 'A multitude of lamps are placed on the smooth stone ceiling. They emit the bright light allowing me to see the surroundings.'; - ru = 'На черном каменном потолке укреплены многочисленные лампы, излучающие яркий белый свет, позволяющий легко разглядеть все вокруг.'; - }; - tower_level_3_room_2_ceiling = { - en = 'A multitude of lamps are placed on the smooth stone ceiling, but they are not lit now.'; - ru = 'На черном каменном потолке укреплены многочисленные лампы, но сейчас они не горят.'; - }; - tower_level_3_room_2_darkness = { - en = 'It\'s too dark here to see anything.'; - ru = 'Здесь слишком темно, чтобы что-либо разглядеть.'; - }; - tower_level_3_room_2_darkness_used_potion = { - en = 'I open a flask with the potion of light and splash the liquid into the air. Almost instantaneously it turns into a luminous vapor, filling the air.'; - ru = 'Я открываю флакончик с зельем света и выплескиваю жидкость в воздух. Она практически мгновенно обращается в светящийся пар, заполняющий все вокруг.'; - }; - tower_level_3_room_2_darkness_used_candle = { - en = 'The candle barely lifts the darkness. I need something stronger to be able to navigate this place.'; - ru = 'Свеча едва разгоняет мрак. Нужно что-то посильнее, чтобы нормально ориентироваться здесь.'; - }; - tower_level_3_room_2_door_dsc_closed = { - en = 'There is a small {door} in one of the walls locked with a latch.'; - ru = 'В одной из стен расположена небольшая {дверь}, запертая на засов.'; - }; - tower_level_3_room_2_door_dsc_opened = { - en = 'There is a small {door} in one of the walls.'; - ru = 'В одной из стен расположена небольшая {дверь}.'; - }; - tower_level_3_room_2_door_act_open = { - en = 'I open the latch. The way is clear. The door leads to the study on the third floor of the tower.'; - ru = 'Я отодвигаю засов. Теперь путь свободен. Дверь ведет в кабинет, расположенный на третьем этаже башни.'; - }; - tower_level_3_room_2_door_act_opened = { - en = 'Behind the ajar door I see the study.'; - ru = 'За приоткрытой дверью я вижу кабинет.'; - }; - tower_level_3_room_2_shelves_act_first = { - en = 'I look through the racks in search of something interesting. I take a small skillfully faceted emerald and a set of screwdrivers. Besides everything else, I notice a box full of spare parts for the computer.'; - ru = 'Я осматриваю стеллажи в поисках чего-либо интересного. Я забираю с полок небольшой изумруд искусной огранки и набор отверток. Кроме всего прочего я примечаю коробку, полную запасных плат для компьютера.'; - }; - tower_level_3_room_2_shelves_act_second = { - en = 'I don\'t see anything else here that I can use right now.'; - ru = 'Больше я не вижу здесь ничего, что может мне пригодиться прямо сейчас.'; - }; - tower_level_2_room_2_disp = { - en = 'Tower, the Control Room'; - ru = 'Башня, комната управления'; - }; - tower_level_2_room_2_onenter = { - en = 'I remove the anti-radiation suit and put it into the locker.'; - ru = 'Я снимаю костюм радиационной защиты и оставляю его в шкафчике.'; - }; - tower_level_2_room_2_decor_power = { - en = 'An extremely tiny room. The stone {tower_walls|walls}, {#floor|the floor} and {#ceiling|the ceiling} are the same as in the other rooms. {#lamps|The lamps} on the ceiling emit the bright white light.'; - ru = 'Совершенно крошечная комната. Каменные {tower_walls|стены}, {#floor|пол} и {#ceiling|потолок} ничем не отличаются от таковых в других комнатах. Несколько {#lamps|ламп} на потолке дают яркий белый свет.'; - }; - tower_level_2_room_2_decor_nopower = { - en = 'An extremely tiny room. The stone {tower_walls|walls}, {#floor|the floor} and {#ceiling|the ceiling} are the same as in other rooms. {#emergency_lamps|The emergency lamps} on the ceiling emit bleak red light.'; - ru = 'Совершенно крошечная комната. Каменные {tower_walls|стены}, {#floor|пол} и {#ceiling|потолок} ничем не отличаются от таковых в других комнатах. На потолке горят красные {#emergency_lamps|лампы} аварийного света.'; - }; - tower_level_2_room_2_floor = { - en = 'Smooth stone plates of the floor are in ideal condition, as everywhere in this tower.'; - ru = 'Ровные каменные плиты пола в идеальном состоянии, как и везде в этой башне.'; - }; - tower_level_2_room_2_ceiling = { - en = 'The ceiling is unusually low here. I can even touch it with my hand. It\'s as cold and smooth as the walls to the touch.'; - ru = 'Потолок здесь необычно низкий -- я даже могу дотянуться до него рукой. Он такой же холодный и гладкий на ощупь, как и стены.'; - }; - tower_level_2_room_2_lamps = { - en = 'Several fluorescent lights are placed on the ceiling.'; - ru = 'Несколько ламп дневного света расположены на потолке.'; - }; - tower_level_2_room_2_emergency_lamps = { - en = 'In the weak light of emergency lights the tower seems even more mysterious and unreal.'; - ru = 'В слабом свете аварийных ламп, башня кажется еще более таинственной и ненастоящей.'; - }; - tower_level_2_room_2_reactor_door_dsc = { - en = 'In one of the walls of the room there is a rectangular {door} with the radiation hazard sign on it.'; - ru = 'В одной из стен комнаты расположена прямоугольная {дверь} с нанесенным на нее знаком радиационной опасности.'; - }; - tower_level_2_room_2_reactor_door_act = { - en = 'A very thick and heavy door. It should not be kept open longer than necessary.'; - ru = 'Тяжелая и очень толстая дверь. Не стоит открывать ее на время большее, чем необходимо.'; - }; - tower_level_2_room_2_control_panel_dsc = { - en = 'There is {a control panel} near the door.'; - ru = 'Рядом с дверью расположена {панель управления}.'; - }; - tower_level_2_room_2_next_door_dsc_closed = { - en = 'There is a small stone {door} locked on a latch in the wall opposite the control panel.'; - ru = 'В стене напротив панели управления расположена небольшая каменная {дверь}, закрытая на щеколду.'; - }; - tower_level_2_room_2_next_door_dsc_open = { - en = 'There is a small stone {door} in the wall opposite the control panel.'; - ru = 'В стене напротив панели управления расположена небольшая каменная {дверь}.'; - }; - tower_level_2_room_2_next_door_act_closed = { - en = 'I slide the latch and open the door.'; - ru = 'Я отодвигаю щеколду и открываю дверь.'; - }; - tower_level_2_room_2_next_door_act_open = { - en = 'Behind the door I can see the alchemist\'s laboratory.'; - ru = 'Через приоткрытую дверь я вижу алхимическую лабораторию.'; - }; - reactor_control_panel_disp = { - en = 'The Reactor Control Panel'; - ru = 'Панель управления реактором'; - }; - reactor_control_panel_enter = { - en = 'The reactor control panel is right in front of me. On a small alpha-numeric display a message is displayed: "Enter the command".'; - ru = 'Передо мной расположена панель управления реактором. На небольшом алфавитно-цифровом дисплее светится надпись: "Введите команду".'; - }; - reactor_control_panel_diagnostic = { - en = '[Diagnostics]'; - ru = '[Диагностика]'; - }; - reactor_control_panel_diagnostic_resp_1 = { - en = 'I press the button and after some time the diagnostics results are shown on the screen:'; - ru = 'Я нажимаю кнопку диагностики и через некоторое время на экране высвечиваются результаты:'; - }; - reactor_control_panel_diagnostic_resp_2 = { - en = 'Reactor temperature normal.'; - ru = 'Температура реактора в норме.'; - }; - reactor_control_panel_diagnostic_resp_3 = { - en = 'Automated control system normal.'; - ru = 'Автоматическая система управления в норме.'; - }; - reactor_control_panel_diagnostic_resp_4 = { - en = 'Manual control system normal.'; - ru = 'Ручная система управления в норме.'; - }; - reactor_control_panel_diagnostic_resp_performance = { - en = 'Performance:'; - ru = 'Производительность:'; - }; - reactor_control_panel_diagnostic_resp_rods_up = { - en = 'Fuel rods raised. Diagnostics impossible. Power saving mode enabled.'; - ru = 'Топливные стержни подняты. Диагностика невозможна. Включен режим энергосбережения.'; - }; - reactor_control_panel_diagnostic_resp_rods_ok = { - en = 'Fuel rods normal.'; - ru = 'Топливные стержни в норме.'; - }; - reactor_control_panel_diagnostic_resp_rods_bad = { - en = 'Fuel rods replacement needed. Power saving mode enabled.'; - ru = 'Топливные стержни требуют замены. Включен режим энергосбережения.'; - }; - reactor_control_panel_raise_rods = { - en = '[Extract the fuel rods]'; - ru = '[Извлечь топливные стержни]'; - }; - reactor_control_panel_rods_response = { - en = 'From the reactor chamber I hear a hum muted by the thick walls.'; - ru = 'Из камеры реактора доносится ровный гул, изрядно заглушенный толстыми стенами.'; - }; - reactor_control_panel_lower_rods = { - en = '[Submerge the fuel rods]'; - ru = '[Погрузить топливные стержни]'; - }; - reactor_control_panel_leave = { - en = '[Step away from the control panel]'; - ru = '[Отойти от панели управления]'; - }; - tower_level_2_airlock_disp = { - en = 'Tower, the Airlock'; - ru = 'Башня, шлюз'; - }; - tower_level_2_airlock_decor = { - en = 'The lead {#walls|walls} of this room are designed to protect anyone inside from the strong radiation. There is a single bleak red {#lamp|lamp} on {#ceiling|the ceiling}. I\'d rather not stay here for long.'; - ru = 'Свинцовые {#walls|стены} этой каморки предназначены для защиты находящихся в ней от мощного радиационного излучения. На {#ceiling|потолке} расположена единственная {#lamp|лампа}, дающая слабый красноватый свет. Думаю, что не стоит здесь задерживаться.'; - }; - tower_level_2_airlock_walls = { - en = 'The metal used to make these walls significantly reduces the radiation level inside, but it does not block it entirely. I\'d rather not stay here for long.'; - ru = 'Металл, из которого сделаны эти стены, значительно снижает уровень радиации внутри, однако он не блокирует ее полностью. Лучше здесь не задерживаться.'; - }; - tower_level_2_airlock_ceiling = { - en = 'The lead ceiling is about two meters high. The metal significantly reduces the radiation level inside, but it does not block it entirely. I\'d rather not stay here for long.'; - ru = 'Свинцовый потолок находится на высоте около двух метров. Металл значительно снижает уровень радиации внутри, однако он не блокирует ее полностью. Лучше здесь не задерживаться.'; - }; - tower_level_2_airlock_lamp = { - en = 'The emergency light is the same as in the control room.'; - ru = 'Лампа аварийного света, такая же как и в комнате управления.'; - }; - tower_level_2_airlock_locker_dsc = { - en = 'There is a small lead {locker} near one of the walls.'; - ru = 'У одной из стен установлен небольшой свинцовый {шкафчик}.'; - }; - tower_level_2_airlock_locker_act = { - en = 'According to the label on the locker it is made for storing an anti-radiation suit.'; - ru = 'Судя по табличке на шкафчике, он предназначен для хранения защитного костюма.'; - }; - tower_level_2_airlock_locker_used = { - en = 'I take off the anti-radiation suit and leave it in the locker.'; - ru = 'Я снимаю костюм радиационной защиты и оставляю его в шкафчике.'; - }; - protection_suit_disp = { - en = 'Anti-Radiation Suit'; - ru = 'Костюм рад. защиты'; - }; - protection_suit_dsc = { - en = 'There is a silvery {anti-radiation suit} inside the locker.'; - ru = 'В нем стоит серебристый {костюм радиационной защиты}.'; - }; - protection_suit_tak = { - en = 'I put the suit on.'; - ru = 'Я надеваю защитный костюм.'; - }; - protection_suit_inv_not_here = { - en = 'I will not take the suit off here. It is not safe.'; - ru = 'Я не стану снимать защитный костюм здесь. Это небезопасно.'; - }; - protection_suit_inv_remove = { - en = 'I take the suit off.'; - ru = 'Я снимаю костюм радиационной защиты.'; - }; - tower_level_2_reactor_disp = { - en = 'Tower, the Reactor'; - ru = 'Башня, реактор'; - }; - tower_level_2_reactor_nofollow = { - en = 'Solarscale refuses to follow me and flies to the control room saying, "You\'ll have to do everything yourself there. We have no protection suit for me."'; - ru = 'Соларскейл отказывается следовать за мной и со словами: "Здесь все придется сделать вам. У нас нет защитного костюма для меня", -- вылетает в комнату управления.'; - }; - tower_level_2_reactor_enter_solarscale = { - en = 'Solarscale blocks my path, "I won\'t let you go there without a protection suit. It\'s dangerous", she states.'; - ru = 'Соларскейл преграждает мне путь. "Я вас туда не пропущу без защитного костюма. Это опасно", -- констатирует она.'; - }; - tower_level_2_reactor_enter_alone = { - en = 'The air smells of ozone, and I feel a slight metallic taste on my tongue.'; - ru = 'Воздух здесь пахнет озоном, а на языке ощущается легкий металлический привкус.'; - }; - tower_level_2_reactor_rods_dsc_raised = { - en = '{The fuel rods} of the reactor are raised and I can access them.'; - ru = '{Топливные стержни} реактора сейчас подняты и я могу получить к ним доступ.'; - }; - tower_level_2_reactor_rods_dsc_lowered = { - en = '{The fuel rods} of the reactor are submerged.'; - ru = '{Топливные стержни} реактора сейчас погружены.'; - }; - tower_level_2_reactor_rods_act_raised = { - en = 'The tall metal rods. The fuel elements for the reactor must be inside of them. I cannot evaluate their state at a glance.'; - ru = 'Длинные металлические стержни. Должно быть, внутри них находятся топливные элементы для работы реактора. Я не могу оценить их состояние на глаз.'; - }; - tower_level_2_reactor_rods_act_lowered = { - en = 'The rods need to be raised so I can examine them.'; - ru = 'Надо поднять стержни, чтобы я мог их осмотреть.'; - }; - tower_level_2_reactor_rods_used = { - en = 'I pour the potion on the fuel rod. I see no apparent changes.'; - ru = 'Я выливаю зелье на топливный стержень. С виду ничего не изменилось.'; - }; - tower_level_1_room_2_disp = { - en = 'Tower, the Kitchen'; - ru = 'Башня, кухня'; - }; - tower_level_1_room_2_decor = { - en = 'Along the perimeter of this spacious room, a narrow {#tabletop|table top} of black stone is placed. There are numerous {#cabinets1|cabinets} underneath it. Above the table top {#cabinets2|more cabinets} hang. An ancient {#fridge|refrigerator} stands in the corner. In the corner opposite to it an electric {#stove|stove} stands. There is {#kitchen_sink|a kitchen sink} near the stove. The room is filled with silent and comfy darkness, like the rest of the tower.'; - ru = 'По периметру этой просторной комнаты расположена узкая {#tabletop|столешница} из черного камня, под которой расположились всевозможные {#cabinets1|шкафчики}. Над столешницей находятся навесные {#cabinets2|шкафы}. В углу стоит старинный {#fridge|холодильник}. В углу напротив стоит электрическая {#stove|плита}. Рядом с плитой находится {#kitchen_sink|раковина}. В помещении царит такой же тихий и уютный полумрак, что и в большинстве помещений башни.'; - }; - tower_level_1_room_2_kitchen_sink = { - en = 'The polished surface of the stone sink, cut in the table top, shines in the light of electric lamps.'; - ru = 'Полированная поверхность каменной раковины, врезанной в столешницу, блестит в свете электрических ламп.'; - }; - tower_level_1_room_2_kitchen_sink_used_water = { - en = 'I fill the kettle with water.'; - ru = 'Я наполняю чайник водой.'; - }; - tower_level_1_room_2_kitchen_sink_used_full = { - en = 'The kettle is full already.'; - ru = 'Чайник уже полон.'; - }; - tower_level_1_room_2_tabletop = { - en = 'The table top is made of the same material as walls. Durability of this cold smooth stone raises no doubts.'; - ru = 'Столешница сделана из того же материала, что и стены. Прочность этого холодного и гладкого камня не вызывает сомнений.'; - }; - tower_level_1_room_2_cabinets1_act_tea_and_teapot = { - en = 'I take the box of tea from the cabinet. I also find a small porcelain teapot. I take it.'; - ru = 'Я забираю коробочку чая из шкафчика. Там же обнаруживается небольшой фарфоровый чайничек. Я забираю и его.'; - }; - tower_level_1_room_2_cabinets1_act_tea_ask = { - en = 'In one of the cabinets I find a box of tea. I wonder if Solarscale minds a small tea party.'; - ru = 'В одном из шкафов обнаруживается коробочка чая. Интересно, не желает ли Соларскейл устроить небольшое чаепитие?'; - }; - tower_level_1_room_2_cabinets_act_empty = { - en = 'There is nothing but kitchenware and cutlery in the cabinets.'; - ru = 'В шкафах только посуда и различные столовые приборы.'; - }; - tower_level_1_room_2_cabinets2_act_note = { - en = 'In one of the cabinets I find a note left by someone. I take it.'; - ru = 'В одном из шкафчиков я обнаруживаю кем-то оставленную записку. Я забираю ее себе.'; - }; - tower_level_1_room_2_cabinets2_act_cups = { - en = 'In one of the cabinets I find two small porcelain cups. I take them.'; - ru = 'В одном из шкафчиков я нахожу две небольшие фарфоровые чашечки. Я забираю их.'; - }; - tower_level_1_room_2_fridge = { - en = 'Refrigerators of this type were common in the 60s. But this one looks as if it\'s freshly manufactured. Peeking inside I see only empty shelves.'; - ru = 'Такие холодильники были в ходу в 60-е. Но этот выглядит словно вчера сошел с конвейера. Заглянув внутрь, я обнаруживаю пустые полки.'; - }; - tower_level_1_room_2_stove_act = { - en = 'An electric stove with four hotplates and an electric oven. Its electronic controls look too modern for this place.'; - ru = 'Электрическая плита на четыре конфорки с электрической же духовкой. Со своими электронными элементами управления она выглядит слишком современной для этого места.'; - }; - tower_level_1_room_2_stove_used_hot = { - en = 'The water is already hot.'; - ru = 'Вода в чайнике уже горячая.'; - }; - tower_level_1_room_2_stove_used_teapot = { - en = 'I put the kettle on the hotplate and in a couple of minutes the water starts boiling.'; - ru = 'Я ставлю чайник на плиту и через несколько минут вода в нем закипает.'; - }; - tower_level_1_room_2_stove_used_power = { - en = 'This will not work without electricity.'; - ru = 'Без электричества ничего не получится.'; - }; - silver_fork_disp = { - en = 'Silver Fork'; - ru = 'Серебряная вилка'; - }; - silver_fork_disp2 = { - en = 'the silver fork'; - ru = 'серебряная вилка'; - }; - silver_fork_disp3 = { - en = 'the silver fork'; - ru = 'серебряную вилку'; - }; - silver_fork_inv = { - en = 'An elegant silver fork. It must be expensive.'; - ru = 'Изящная серебряная вилка. Скорее всего, недешевая.'; - }; - silver_fork_dsc = { - en = 'On one of the tables I find {a silver fork} left by someone.'; - ru = 'На одном из столов лежит кем-то забытая {серебряная вилка}.'; - }; - silver_fork_tak = { - en = 'I wonder, why it was not put in one of the cabinets. I take the fork.'; - ru = 'Интересно, почему ее не убрали в шкаф. Я забираю вилку с собой.'; - }; - tower_level_1_room_2_door_dsc = { - en = 'There is a small wooden {door} in one of the walls.'; - ru = 'В одной из стен расположена небольшая деревянная {дверца}.'; - }; - tower_level_1_room_2_door_act_locked = { - en = 'The door is locked. A carved ornament decorates the iron pad of the lock.'; - ru = 'Дверца заперта. Резной узор украшает железную накладку замка.'; - }; - tower_level_1_room_2_door_act_open = { - en = 'Behind the door I see the tower\'s dining hall.'; - ru = 'За приоткрытой дверцей я вижу столовую башни.'; - }; - tower_level_1_room_2_door_used = { - en = 'I open the door with the key.'; - ru = 'Я открываю дверь ключиком.'; - }; - tower_level_1_room_2_hook_dsc_empty = { - en = 'There is a small copper {hook} near the door.'; - ru = 'Рядом с дверью в стену вбит небольшой медный {крючок}.'; - }; - tower_level_1_room_2_hook_dsc_key = { - en = 'An {iron key} is hanging on a small copper hook near the door.'; - ru = 'На медном крючке рядом с дверью висит {железный ключик}.'; - }; - tower_level_1_room_2_hook_act_empty = { - en = 'There is nothing on the hook.'; - ru = 'На крючке ничего нет.'; - }; - tower_level_1_room_2_hook_act_key = { - en = 'I take the key.'; - ru = 'Я забираю ключик.'; - }; - walls_dlg_enter_solarscale = { - en = 'As I touch the smooth stone of the walls, I hear a velvet female voice in my mind, "Welcome home". I pull my hand back, Solarscale jumps to me and, touching my shoulder, asks, "Are you alright?"'; - ru = 'Едва я прикасаюсь к гладкому камню стен, как в моем сознании раздается бархатный женский голос: "Добро пожаловать домой". Я отдергиваю руку, Соларскейл подлетает и коснувшись моего плеча, спрашивает: "Все в порядке?"'; - }; - walls_dlg_enter_alone = { - en = 'As I touch the smooth stone of the walls, I hear a velvet female voice in my mind, "Welcome home". I pull my hand back.'; - ru = 'Едва я прикасаюсь к гладкому камню стен, как в моем сознании раздается бархатный женский голос: "Добро пожаловать домой". Я отдергиваю руку.'; - }; - walls_dlg_p1 = { - en = 'Yes, I\'m fine.'; - ru = 'Да, все хорошо.'; - }; - walls_dlg_p1_r = { - en = 'Solarscale attentively looks into my eyes. The low voice I heard is nothing like the bright and resonant speech of the dragoness, but there is no one near us. Was it the tower itself?'; - ru = 'Соларскейл внимательно смотрит мне в глаза. Низкий голос услышанный мной не похож на звонкую и яркую речь драконессы, но кроме нас рядом никого нет. Неужели это сама башня?'; - }; - walls_dlg_p2 = { - en = 'Did you say something?'; - ru = 'Вы что-то сказали?'; - }; - walls_dlg_p2_r = { - en = '"No, definitely not", she replies. I realise how different is the low voice I heard from the bright and resonant speech of Solarscale. Was it the tower itself? '; - ru = '"Нет, точно нет" -- отвечает драконесса. Я осознаю насколько низкий голос услышанный мной не похож на звонкую и яркую речь драконессы. Тогда это сама башня?'; - }; - walls_dlg_p3 = { - en = 'Could you, please, touch the wall?'; - ru = 'Не могли бы вы коснуться стены?'; - }; - walls_dlg_p3_r = { - en = 'Shrugging, Solarscale touches the wall and pulls her hand immediately. With her eyes wide open, she looks at me, whispering, "I\'ve also heard this!"'; - ru = 'Соларскейл, пожав плечами, прикасается к стене и тут же отдергивает руку. С широко раскрытыми глазами она смотрит на вас и шепчет: "Я тоже это слышала!"'; - }; - walls_dlg_p4 = { - en = '[Touch the wall again]'; - ru = '[Коснуться стены еще раз]'; - }; - walls_dlg_p4_r = { - en = 'I touch the wall, but nothing happens. To my surprise I don\'t feel any discomfort. On the contrary, the touch calms me and instills confidence.'; - ru = 'Я вновь касаюсь черных стен, но ничего не происходит. Удивительно, но я не ощущаю прежнего дискомфорта, наоборот, прикосновение успокаивает и вселяет уверенность.'; - }; - walls_dlg_p5 = { - en = '[Walk away]'; - ru = '[Отойти]'; - }; - walls_dlg_p5_r = { - en = 'I walk away from the wall, baffled.'; - ru = 'Я отхожу от стены в недоумении.'; - }; - walls_dlg_p6 = { - en = 'Who is it?'; - ru = 'Кто здесь?'; - }; - walls_dlg_p6_r = { - en = 'No response. For awhile I listen to the silence of the tower. The cold dusk feels calming and alluring.'; - ru = 'Никто не отвечает. Я какое-то время прислушиваюсь к тишине башни. Прохладный полумрак успокаивает и манит.'; - }; - kitchen_key_disp = { - en = 'Iron Key'; - ru = 'Железный ключик'; - }; - kitchen_key_disp2 = { - en = 'the iron key'; - ru = 'железный ключик'; - }; - kitchen_key_disp3 = { - en = 'the iron key'; - ru = 'железный ключик'; - }; - kitchen_key_inv = { - en = 'A small iron key. Its head is decorated with a carved pattern.'; - ru = 'Небольшой железный ключик. Головка украшена резным узором.'; - }; - part_box_disp = { - en = 'Box of Parts'; - ru = 'Коробка с запчастями'; - }; - part_box_disp2 = { - en = 'the box of parts'; - ru = 'коробка с запчастями'; - }; - part_box_disp3 = { - en = 'the box of parts'; - ru = 'коробку с запчастями'; - }; - part_box_used = { - en = 'I put the item into the box.'; - ru = 'Я кладу деталь в коробку.'; - }; - part_box_dsc = { - en = 'On one of the racks I see {a box} with spare parts for the computer.'; - ru = 'На одном из стеллажей стоит {коробка} с запасными платами для компьютера.'; - }; - part_box_tak = { - en = 'I quickly look through the parts. Not a single chip has a familiar marking. I can only guess boards\' purpose by sockets on them. I take the box.'; - ru = 'Я бегло просматриваю платы. Ни один чип не промаркирован известным мне производителем. О назначении плат я могу догадываться только по разъемам на них. Я забираю коробку с собой.'; - }; - part_box_inside_dsc = { - en = 'A large box inside of which I see the following items:'; - ru = 'Большая коробка, внутри нее я вижу следующие детали:'; - }; - terminal_manual_disp = { - en = 'TETS-1 User Manual'; - ru = 'Руководство пользователя терминала TETS-1'; - }; - terminal_manual_dsc = { - en = [[Table of contents:^ - 1. Package Contents^ - 2. Connection^ - 3. Usage^ - 4. {@walk service_manual|Service and Repair}^ - 5. {@walk troubleshooting_manual|Troubleshooting}^ - ]]; - ru = [[Содержание:^ - 1. Комплект поставки^ - 2. Подключение^ - 3. Использование^ - 4. {@walk service_manual|Обслуживание и ремонт}^ - 5. {@walk troubleshooting_manual|Решение проблем}^ - ]]; - }; - service_manual_disp = { - en = 'Service and Repair'; - ru = 'Обслуживание и ремонт'; - }; - service_manual_dsc = { - en = [[Usually maintenance is not needed, although you may need to upgrade some of the components of the terminal.^ - Important: Unplug the terminal before performing any operations!^^ - - Motherboard replacement: ^ - -- You can use any DTMB1 format motherboard^ - -- Before replacing the motherboard, disconnect everything from it^ - -- Remove all screws holding the motherboard (see attachment 6)^ - -- Remove the motherboard^ - -- Install the new motherboard in place of the old one^ - -- Fasten the screws to fix the motherboard inside the case (see attachment 6)^ - -- Install compatible CPU, RAM, keyboard controller, video and network adapters^^ - - CPU replacement:^ - -- Remove the old CPU^ - -- Install the new CPU^ - Important: Current DTMB1 motherboards are available with CAX, CVX and CRX sockets. Backward compatibility is maintained, so:^ - -- CAX CPU can be installed on motherboards with CAX, CVX and CRX sockets^ - -- CVX CPU can be installed on motherboards with CVX and CRX sockets^ - -- CRX CPU can be installed on motherboards with CRX sockets^ - - RAM replacement:^ - -- Remove the old RAM module^ - -- Install the new RAM module^ - Important: Current DTMB1 motherboards are available with RKT, RST and RDT slots. Backward compatibility is maintained, so:^ - -- RKT modules can be installed on motherboards with RKT, RST and RDT slots^ - -- RST modules can be installed on motherboards with RST and RDT slots^ - -- RDT modules can be installed on motherboards with RDT slots^ - - Expansion boards replacement: - -- Remove old device^ - -- Install new device^ - Current DTMB1 motherboards are available with ISB slots, you can only use ISB compatible devices with these motherboards.^^ - - Compatible device marking:^ - 1. Motherboards^ - DTMB1 motherboards have the marking --ISB. Examples: - CAX-RKT-I2SB -- Motherboard for CAX CPU, supporting RKT RAM and having two slots for expansion devices.^ - 2. CPUs^ - CPUs usually have the marking CPU--, where X -- letter denoting CPU generation. CPU generation does not affect motherboard compatibility. - Example: MCPU50-CVX-5MHz -- M generation CPU with 5MHz frequency and CVX socket.^ - 3. RAM^ - RAM is usually marked -M-. Example: RST-M8-8MB -- 8 Megabytes RST RAM module.^ - 4. Video-adapters^ - Currently there are two types of video-adapters for TETS-1 terminals: the TVA series adapters only support textual output, and the GVA adapters also support graphical output.^ - 5. Network adapters^ - Network adapters for TETS-1 terminals have the marking FNA--.^ - 5. Keyboard controllers^ - Keyboard controllers for TETS-1 terminals have the marking KBC-. - ]]; - ru = [[В обычных ситуациях обслуживание не требуется, однако вам может потребоваться замена комплектующих терминала на более производительные. ^ - Важно: Перед проведением любых операций отключите терминал от сети!^^ - - Замена материнской платы: ^ - -- Вы можете использовать любую материнскую плату формата DTMB1^ - -- Перед заменой материнской платы отключите все устройства от нее^ - -- Открутите все винты, держащие материнскую плату (см. приложение 6)^ - -- Извлеките материнскую плату^ - -- Установите новую плату на место текущей^ - -- Прикрутите винты для закрепления платы внутри корпуса (см. приложение 6)^ - -- Установите совместимые процессор, память, контроллер клавиатуры, видеоадаптер и сетевой адаптер^^ - - Замена процессора:^ - -- Извлеките старый процессор^ - -- Установите новый процессор^ - Важно: На текущий момент материнские платы форм-фактора DTMB1 выпускаются с разъемами центральных процессоров CAX, CVX и CRX. Сохраняется обратная совместимость плат со старыми процессорами, таким образом:^ - -- Процессор CAX можно установить на платы с разъемами CAX, CVX и CRX^ - -- Процессор CVX можно установить на платы с разъемами CVX и CRX^ - -- Процессор CRX можно установить на платы с разъемом CRX^^ - - Замена оперативной памяти:^ - -- Извлеките старый модуль памяти^ - -- Установите новый модуль памяти^ - Важно: На текущий момент материнские платы форм-фактора DTMB1 выпускаются с разъемами модулей памяти RKT, RST, RDT. Сохраняется обратная совместимость плат со старыми модулями памяти, таким образом:^ - -- Память RKT можно установить на платы с разъемами RKT, RST и RDT^ - -- Память RST можно установить на платы с разъемами RST и RDT^ - -- Память RDT можно установить на платы с разъемом RDT^^ - - Замена устройств расширения: - -- Извлеките старое устройство^ - -- Установите новое устройство^ - На текущий момент материнские платы форм-фактора DTMB1 выпускаются с разъемами ISB, вы можете использовать только ISB совместимые устройства с данными платами.^^ - - Маркировки совместимых устройств:^ - 1. Материнские платы^ - Материнские платы формата DTMB1 имеют маркировку вида <ЦП>-<Память>-I<Кол-во разъемов>SB. Пример: - CAX-RKT-I2SB -- материнская плата для процессора CAX, поддерживающая память RKT и имеющая два разъема дополнительных устройств.^ - 2. Процессоры^ - Процессор обычно имеет маркировку CPU<Индекс>-<Разъем>-<Частота>, где X -- буква, означающая поколение ЦП. Поколение ЦП не влияет на совместимость с материнской платой. - Пример: MCPU50-CVX-5MHz -- процессоры поколения M с частотой 5МГц и разъемом CVX.^ - 3. Память^ - Память обычно имеет маркировку <Разъем>-M<Индекс>-<Объем>. Пример: RST-M8-8MB -- модуль объемом 8 мегабайт для разъема RST.^ - 4. Видеоадаптеры^ - На текущий момент существует два типа видеоадаптеров для терминалов TETS-1: серия TVA представляет собой адаптер с возможностью только текстового вывода, серия GVA -- адаптер с возможностью графического вывода.^ - 5. Сетевые адаптеры^ - Сетевые адаптеры для терминалов TETS-1 имеют маркировку FNA-<Индекс>-<Скорость>.^ - 5. Контроллер клавиатуры^ - Контроллеры клавиатуры для терминалов TETS-1 имеют маркировку KBC-<Поколение>. - ]]; - }; - troubleshooting_manual_disp = { - en = 'Troubleshooting'; - ru = 'Решение проблем'; - }; - troubleshooting_manual_dsc = { - en = [[ - Issue: OS does not boot. No image on the screen. No audio signal^ - Reason: No power or motherboard malfunction^ - Solution:^ - 1. Check power^ - 2. Replace the motherboard^^ - Issue: OS does not boot. No image on the screen. Audio signals: long-short-short^ - Reason: Missing or malfunctioning CPU^ - Solution:^ - 1. Install or replace a CPU^^ - Issue: OS does not boot. No image on the screen. Audio signals: short-long-long^ - Reason: Missing or malfunctioning RAM^ - Solution:^ - 1. Install or replace a RAM module^^ - Issue: OS does not boot. No image on the screen. Audio signals: long-short-long^ - Reason: Missing or malfunctioning video-adapter^ - Solution:^ - 1. Install or replace a video-adapter^^ - Issue: OS does not boot. No image on the screen. Audio signals: long-long-long^ - Reason: Missing or malfunctioning keyboard controller^ - Solution:^ - 1. Install or replace a keyboard controller^^ - - Issue: OS does not boot. Message on the screen: "Booting from None"^ - Reason: No compatible boot device^ - Solution:^ - 1. Install a compatible boot device (for example an FNA series network adapter)^^ - ]]; - ru = [[ - Проблема: ОС не загружается. Нет изображения на экране. Нет звукового сигнала^ - Причина: Отсутствие питания или неисправность материнской платы^ - Решение: ^ - 1. Проверьте питание^ - 2. Замените материнскую плату^^ - Проблема: ОС не загружается. Нет изображения на экране. Звуковые сигналы: длинный-короткий-короткий^ - Причина: Неисправность или отсутствие центрального процессора^ - Решение: ^ - 1. Установите или замените центральный процессор^^ - Проблема: ОС не загружается. Нет изображения на экране. Звуковые сигналы: короткий-длинный-длинный^ - Причина: Неисправность или отсутствие оперативной памяти^ - Решение: ^ - 1. Установите или замените оперативную память^^ - Проблема: ОС не загружается. Нет изображения на экране. Звуковые сигналы: длинный-короткий-длинный^ - Причина: Неисправность или отсутствие видеоадаптера^ - Решение: ^ - 1. Установите или замените видеоадаптер^^ - Проблема: ОС не загружается. Нет изображения на экране. Звуковые сигналы: длинный-длинный-длинный^ - Причина: Неисправность или отсутствие контроллера клавиатуры^ - Решение: ^ - 1. Установите или замените контроллер клавиатуры^^ - Проблема: ОС не загружается. Сообщение на экране: "Загрузка с отсутствует"^ - Причина: Отсутствие совместимого устройства загрузки^ - Решение: ^ - 1. Установите совместимое устройство загрузки(например, сетевой адаптер серии FNA)^^ - ]]; - }; - }; - computer_locale = { - component_not_set = { - en = 'Missing'; - ru = 'Отсутствует'; - }; - motherboard = { - en = 'Motherboard'; - ru = 'Материнская плата'; - }; - cpu = { - en = 'CPU'; - ru = 'Процессор'; - }; - ram = { - en = 'RAM'; - ru = 'Оперативная память'; - }; - slot = { - en = 'Expansion Slot'; - ru = 'Слот расширения'; - }; - motherboard_not_taken = { - en = 'I need to disconnect all of the devices first.'; - ru = 'Сперва необходимо отключить все устройства.'; - }; - motherboard_needs_removal = { - en = 'I need to remove the installed board first.'; - ru = 'Сперва необходимо убрать установленную плату.'; - }; - motherboard_taken = { - en = 'I take the motherboard.'; - ru = 'Я забираю материнскую плату.'; - }; - motherboard_installed = { - en = 'I install the motherboard.'; - ru = 'Я устанавливаю материнскую плату.'; - }; - cpu_taken = { - en = 'I take the CPU.'; - ru = 'Я забираю процессор.'; - }; - cpu_needs_removal = { - en = 'I need to remove the installed CPU first.'; - ru = 'Сперва необходимо убрать установленный процессор.'; - }; - cpu_not_fit = { - en = 'The CPU does not fit.'; - ru = 'Процессор не подходит.'; - }; - cpu_installed = { - en = 'I install the CPU.'; - ru = 'Я устанавливаю процессор.'; - }; - ram_taken = { - en = 'I take the RAM.'; - ru = 'Я забираю память.'; - }; - ram_needs_removal = { - en = 'I need to remove the installed RAM first.'; - ru = 'Сперва необходимо убрать установленную память.'; - }; - ram_not_fit = { - en = 'The RAM does not fit.'; - ru = 'Память не подходит.'; - }; - ram_installed = { - en = 'I install the RAM.'; - ru = 'Я устанавливаю память.'; - }; - device_taken = { - en = 'I take the board.'; - ru = 'Я забираю плату.'; - }; - device_needs_removal = { - en = 'I need to remove the installed board first.'; - ru = 'Сперва необходимо убрать установленную плату.'; - }; - device_installed = { - en = 'I install the board.'; - ru = 'Я устанавливаю плату.'; - }; - invalid_password = { - en = 'Unable to decrypt key. Invalid password'; - ru = 'Не удалось расшифровать ключ. Неверный пароль'; - }; - invalid_password_2 = { - en = 'Invalid password'; - ru = 'Неверный пароль'; - }; - - -- If possible, keep phrases below as close to your language MS-DOS translation - -- Also keep lines shorter than 60 characters - critical_failure = { - en = 'System failure: File not found'; - ru = 'Сбой системы: Файл не найден'; - }; - binary_data = { - en = 'Error: Unable to print binary data'; - ru = 'Ошибка: Нельзя вывести двоичные данные'; - }; - query_password = { - en = 'Password:'; - ru = 'Пароль:'; - }; - query_type_yes = { - en = 'Type \'Yes\' to confirm:'; - ru = 'Введите \'Yes\' для подтверждения:'; - }; - query_formatting = { - en = 'Formatting:'; - ru = 'Форматирование:'; - }; - operation_cancelled = { - en = 'Operation cancelled'; - ru = 'Операция отменена'; - }; - formatting_complete = { - en = 'Formatting complete'; - ru = 'Форматирование завершено'; - }; - starting_tower = { - en = 'Starting TOWER OS 1.0...'; - ru = 'Запуск TOWER OS 1.0...'; - }; - tower_version = { - en = 'TOWER OS Version 1.0'; - ru = 'TOWER OS Версия 1.0'; - }; - type_help = { - en = 'Type \'HELP\' to list available commands'; - ru = 'Введите \'HELP\' для вывода списка доступных команд'; - }; - bad_command = { - en = 'Bad command or file name'; - ru = 'Некорректное имя команды или файла'; - }; - help_cd = { - en = 'CD - Change directory'; - ru = 'CD - Сменить директорию'; - }; - help_dir = { - en = 'DIR - List current directory'; - ru = 'DIR - Вывести содержимое текущей директории'; - }; - help_disk = { - en = 'X: - Switch to drive X'; - ru = 'X: - Сменить диск на X'; - }; - help_connect = { - en = 'CONNECT - Connect to the main tower interface'; - ru = 'CONNECT - Подключиться к основному интерфейсу башни'; - }; - help_format = { - en = 'FORMAT - Format disk drive'; - ru = 'FORMAT - Отформатировать диск'; - }; - help_help = { - en = 'HELP - Show this message'; - ru = 'HELP - Показать это сообщение'; - }; - help_print = { - en = 'PRINT - Print contents of a text file'; - ru = 'PRINT - Вывести содержимое текстового файла'; - }; - help_exit = { - en = 'EXIT - Turn the terminal off'; - ru = 'EXIT - Выключить терминал'; - }; - help_com_exe = { - en = 'You can run .COM and .EXE files by passing path to them as^command name'; - ru = 'Вы можете запускать файлы .COM и .EXE указав путь к ним как^имя команды'; - }; - crypt_usage = { - en = 'Usage: CRYPT [filename] [key_file]^Decrypt an encrypted file'; - ru = 'Применение: CRYPT [файл] [файл ключа]^Расшифровать зашифрованный файл'; - }; - crypt_key_unset = { - en = 'Key is not specified in config file. Specify manually'; - ru = 'Ключ не указан в файле настроек. Укажите вручную'; - }; - crypt_key_locked = { - en = 'Key file is password protected'; - ru = 'Файл ключа защищен паролем'; - }; - crypt_invalid_key = { - en = 'Invalid key file'; - ru = 'Неверный файл ключа'; - }; - crypt_unencrypted = { - en = 'File is not encrypted'; - ru = 'Файл не зашифрован'; - }; - format_invalid_device = { - en = 'Invalid drive specification'; - ru = 'Неверное устройство'; - }; - format_usage = { - en = 'Usage: FORMAT [drive]^Format disk drive^Warning: All data on the device will be lost'; - ru = 'Применение: FORMAT [диск]^Отформатировать дисковое устройство^Осторожно: Данные будут удалены'; - }; - print_no_file = { - en = 'Error: Unable to print non-existing file'; - ru = 'Ошибка: Невозможно вывести несуществующий файл'; - }; - print_usage = { - en = 'Usage: PRINT [filename]^Print contents of a text file'; - ru = 'Применение: PRINT [имя файла]^Вывести содержимое текстового файла'; - }; - connect_comment = { - en = 'REM CONNECT.EXE - Disabled so I may access the command line'; - ru = 'REM CONNECT.EXE - Выключил для доступа к командной строке'; - }; - command_already_started = { - en = 'Already started'; - ru = 'Уже запущен'; - }; - hello_txt = { - en = 'Hello, my dear friend!^I have temporarily disabled the main shell, CONNECT.EXE.^Just run it to enter the system.^Later, when you\'re comfortable with the terminal^you can enable it back.^Password from the main interface is in DOCS folder in^PASSWORD.TXT file. It\'s encrypted, of course.'; - ru = 'Приветствую, дорогой друг!^Я временно отключил основную оболочку, CONNECT.EXE.^Просто запусти ее, чтобы войти в систему.^В дальнейшем, когда ты разберешься с терминалом, сможешь^снова включить ее.^Пароль от основного интерфейса -- в папке DOCS в файле^PASSWORD.TXT. Разумеется, он зашифрован.'; - }; - cd_usage = { - en = 'Usage: CD [path]'; - ru = 'Использование: CD [путь]'; - }; - cd_invalid_directory = { - en = "'%path%' is not a directory"; - ru = "Некорректный путь: '%path%'"; - }; - }; - parts_locale = { - network_adapter_title = { - en = '%model% Network Adapter'; - ru = 'Сетевая карта %model%'; - }; - network_adapter_inv_from_box = { - en = '%model% network adapter, I took from the box with spare parts.'; - ru = 'Сетевая карта %model%, извлеченная мной из коробки с запчастями.'; - }; - network_adapter_inv_from_computer = { - en = '%model% network adapter, I took from the computer.'; - ru = 'Сетевая карта %model%, извлеченная мной из компьютера.'; - }; - network_adapter_tak = { - en = 'I take %model% network adapter.'; - ru = 'Я забираю сетевую карту %model%.'; - }; - - keyboard_controller_title = { - en = '%model% Keyboard Controller'; - ru = 'Контроллер клавиатуры %model%'; - }; - keyboard_controller_inv_from_box = { - en = '%model% keyboard controller, I took from the box with spare parts.'; - ru = 'Контроллер клавиатуры %model%, извлеченный мной из коробки с запчастями.'; - }; - keyboard_controller_inv_from_computer = { - en = '%model% keyboard controller, I took from the computer.'; - ru = 'Контроллер клавиатуры %model%, извлеченный мной из компьютера.'; - }; - keyboard_controller_tak = { - en = 'I take %model% keyboard controller.'; - ru = 'Я забираю контроллер клавиатуры %model%.'; - }; - - videocard_title = { - en = '%model% Video Adapter'; - ru = 'Видеокарта %model%'; - }; - videocard_inv_from_box = { - en = '%model% video adapter, I took from the box with spare parts.'; - ru = 'Видеокарта %model%, извлеченная мной из коробки с запчастями.'; - }; - videocard_inv_from_computer = { - en = '%model% video adapter, I took from the computer.'; - ru = 'Видеокарта %model%, извлеченная мной из компьютера.'; - }; - videocard_tak = { - en = 'I take %model% video adapter.'; - ru = 'Я забираю видеокарту %model%.'; - }; - - motherboard_title = { - en = '%model% Motherboard'; - ru = 'Материнская плата %model%'; - }; - motherboard_inv_from_box = { - en = '%model% motherboard, I took from the box with spare parts.'; - ru = 'Материнская плата %model%, извлеченная мной из коробки с запчастями.'; - }; - motherboard_inv_from_computer = { - en = '%model% motherboard, I took from the computer.'; - ru = 'Материнская плата %model%, извлеченная мной из компьютера.'; - }; - motherboard_tak = { - en = 'I take %model% motherboard.'; - ru = 'Я забираю материнскую плату %model%.'; - }; - - cpu_title = { - en = '%model% Processor'; - ru = 'Процессор %model%'; - }; - cpu_inv_from_box = { - en = '%model% processor, I took from the box with spare parts.'; - ru = 'Процессор %model%, извлеченный мной из коробки с запчастями.'; - }; - cpu_inv_from_computer = { - en = '%model% processor, I took from the computer.'; - ru = 'Процессор %model%, извлеченный мной из компьютера.'; - }; - cpu_tak = { - en = 'I take %model% processor.'; - ru = 'Я забираю процессор %model%.'; - }; - - ram_title = { - en = '%model% Memory Module'; - ru = 'Модуль памяти %model%'; - }; - ram_inv_from_box = { - en = '%model% memory module, I took from the box with spare parts.'; - ru = 'Модуль памяти %model%, извлеченный мной из коробки с запчастями.'; - }; - ram_inv_from_computer = { - en = '%model% memory module, I took from the computer.'; - ru = 'Модуль памяти %model%, извлеченный мной из компьютера.'; - }; - ram_tak = { - en = 'I take %model% memory module.'; - ru = 'Я забираю модуль памяти %model%.'; - }; - }; - note_locale = { - note_c = { - en = 'C'; - ru = 'до'; - }; - note_d = { - en = 'D'; - ru = 'ре'; - }; - note_e = { - en = 'E'; - ru = 'ми'; - }; - note_f = { - en = 'F'; - ru = 'фа'; - }; - note_g = { - en = 'G'; - ru = 'соль'; - }; - note_a = { - en = 'A'; - ru = 'ля'; - }; - note_b = { - en = 'B'; - ru = 'си'; - }; - }; - ending_locale = { - show_menu = { - en = 'To the Main Menu'; - ru = 'В главное меню'; - }; - game_end = { - en = 'The End'; - ru = 'Конец игры'; - }; - thank_you_for_playing = { - en = 'Thank You for Playing'; - ru = 'Спасибо за игру'; - }; - left_state_1 = { - en = 'I step towards the door, but something stops me. What if there won\'t be a second chance?'; - ru = 'Я делаю шаг в сторону двери, но что-то останавливает меня. Что, если второго шанса не будет?'; - }; - left_state_2 = { - en = 'I continue walking towards the exit. My mind shows me the image of the door closing behind me.'; - ru = 'Я продолжаю двигаться к выходу, В моей голове возникает изображение двери башни, захлопывающейся за мной.'; - }; - left_state_3 = { - en = 'I continue walking towards the exit, and the air thickens around me as if trying to stop me from leaving.'; - ru = 'Я продолжаю двигаться к выходу из башни, воздух словно сгущается передо мной, не желая выпускать.'; - }; - left_part_1 = { - en = 'The darkness around me becomes tangible, as if the tower starts to reject me. I walk through the door and the massive stone slab falls, cutting my way in forever.'; - ru = 'Темнота вокруг меня становится осязаемой, как будто башня начинает отторгать меня. Я прохожу через дверь, и массивная каменная плита опускается, навеки закрывая путь внутрь.'; - }; - left_part_1_solarscale = { - en = 'Solarscale thoughtfully looks at me and on the tower. For some time we examine it closely from all sides, but in the end we give up and disappointed depart our separate ways.'; - ru = 'Соларскейл задумчиво смотрит на меня и на башню. Некоторое время мы тщательно изучаем ее со всех сторон, но в конце концов, отчаявшись, отправляемся каждый своей дорогой.'; - }; - left_part_2 = { - en = 'Century after century I return to this place, but smooth black stone stays impenetrable to me.'; - ru = 'Столетие за столетием я возвращаюсь к этому месту, но гладкий черный камень все также остается неприступен для меня.'; - }; - solarscale_lost = { - en = 'Neither am I able to find Solarscale. No matter how I tried, I have found no traces of the lovely dragoness.'; - ru = 'Не удается мне найти и Соларскейл -- сколько ни пытался, я до сих пор не смог обнаружить никаких следов прекрасной драконессы.'; - }; - irradiated = { - en = 'Since I left the tower, I can\'t shake the feeling of my days slowly running out. My magic weakens and my wings cannot hold me any longer.'; - ru = 'С тех пор как я покинул башню, меня не оставляет странное ощущение, словно дни мои истекают -- магия моя слабеет, а крылья уже не способны удержать меня.'; - }; - formatted_solarscale = { - en = 'I step away from the computer and feel a subtle change in the tower. The world around us starts to diffuse and soon we find ourselves in the forest. Fragments of black stone are scattered around us. It would be really difficult to recognise that they were a tower mere moments ago. We exchange glances with Solarscale and, after saying goodbyes, depart our own ways.'; - ru = 'Я отхожу от компьютера и в этот момент ощущаю неуловимое изменение, произошедшее в башне. Мир вокруг нас начал расплываться и вскоре мы оказываемся в лесу. Повсюду валяются обломки черного камня, только что составлявшего башню, хотя узнать ее в них было бы непросто. Переглянувшись с Соларскейл, мы прощаемся и отправляемся каждый своей дорогой.'; - }; - formatted_alone = { - en = 'I step away from the computer and feel a subtle change in the tower. The world around me starts to diffuse and soon I find myself in the forest. Fragments of black stone are scattered around me. It would be really difficult to recognise that they were a tower mere moments ago. With a gasp I spread my wings and fly home.'; - ru = 'Я отхожу от компьютера и в этот момент ощущаю неуловимое изменение, произошедшее в башне. Мир вокруг меня начал расплываться и вскоре я оказался в лесу. Повсюду валяются обломки черного камня, только что составлявшего башню, хотя узнать ее в них было бы непросто. Вздохнув, я расправляю крылья и отправляюсь домой.'; - }; - formatted_2 = { - en = 'Century after century I return to this place, but I can\'t find anything but forsaken shards of black stone.'; - ru = 'Столетие за столетием я возвращаюсь к этому месту, но не нахожу ничего, кроме забытых всеми осколков черного камня.'; - }; - ending_welcome = { - en = 'I hear a soft, calm and seemingly long familiar voice in my mind, "Welcome home." The walls start to dissolve, opening views of endless expanses of the universe.'; - ru = 'В сознании моем звучит мягкий, спокойный и, кажется, давно знакомый голос: "Добро пожаловать домой". Стены начинают растворяться, открывая вид на бескрайние просторы вселенной.'; - }; - ending_solarscale_pre = { - en = 'A light touch distracts me from the terminal. I turn to see Solarscale saying her goodbyes: "I have to leave. Hope to see you again!"'; - ru = 'Легкое прикосновение отвлекает меня от терминала. Я оборачиваюсь. Соларскейл произносит слова прощания: "Мне пора уходить. Надеюсь, мы еще увидимся!"'; - }; - ending_solarscale_flight = { - en = 'Solarscale looks at me and at the dissolving tower walls in awe. Making a circle in the air, she returns to wait for my next action.'; - ru = 'Соларскейл восторженно смотрит на меня и растворяющиеся стены башни. Сделав круг в воздухе, она возвращается и ждет моих дальнейших действий.'; - }; - true_solarscale_dlg_enter = { - en = 'At the same moment I feel a light touch, returning me to reality. I turn around. Solarscale says her farewells, "I have to go. Hope to see you in the future."'; - ru = 'В этот момент я чувствую легкое прикосновение, возвращающее меня к реальности. Я оборачиваюсь. Соларскейл произносит слова прощания: "Мне пора. Надеюсь, мы еще увидимся".'; - }; - true_solarscale_dlg_1 = { - en = '[Grasp Solarscale\'s hand]'; - ru = '[Схватить Соларскейл за руку]'; - }; - true_solarscale_dlg_1_response = { - en = 'I hear a voice in my head, "Leave her, let her tread her own path". Astonished, I let her hand out. It is enough for the dragoness to slip out and fly away.'; - ru = 'Я слышу в голове голос: "Оставь ее. У нее свой путь". От удивления я разжимаю руку. Этого оказывается достаточно, чтобы драконесса выскользнула и улетела.'; - }; - true_solarscale_dlg_2 = { - en = 'Don\'t you want to stay?'; - ru = 'Вы не хотите остаться?'; - }; - true_solarscale_dlg_2_response = { - en = '"I can\'t, I have things to do at home", quietly replies Solarscale with uncertainty in her voice.'; - ru = '"Я не могу, у меня есть дела дома" -- тихо отвечает драконесса. В ее голосе сквозит нерешительность.'; - }; - true_solarscale_dlg_end = { - en = 'Well then, I shall not keep you. Until we meet again.'; - ru = 'Что же, не буду вас задерживать. До новых встреч.'; - }; - true_solarscale_dlg_end_response = { - en = 'Solarscale lowers her head and with a quiet whisper, "Farewell", escapes the room.'; - ru = 'Соларскейл опускает голову и, тихо прошептав: "До свидания", покидает помещение.'; - }; - true_solarscale_convince_level_1 = { - en = 'Solarscale halts, lost in thoughts.'; - ru = 'Соларскейл замирает в раздумьях.'; - }; - true_solarscale_convince_level_2 = { - en = 'Solarscale looks at me hesitantly.'; - ru = 'Соларскейл нерешительно смотрит на меня.'; - }; - true_solarscale_convince_level_3 = { - en = 'Solarscale looks at me in silence.'; - ru = 'Соларскейл молча смотрит на меня.'; - }; - true_solarscale_convince_level_4 = { - en = 'Solarscale nods and says decisively, "Good, I\'m in."'; - ru = 'Соларскейл кивает и уверенно произносит: "Хорошо, я с вами".'; - }; - true_solarscale_dlg_3 = { - en = 'Aren\'t you curious, what\'s next?'; - ru = "Вам не интересно, что будет дальше?"; - }; - true_solarscale_dlg_4 = { - en = 'If you leave now, we may not meet in the future.'; - ru = 'Если вы уйдете сейчас, мы можем больше не увидеться.'; - }; - true_solarscale_dlg_5 = { - en = 'This tower is our home.'; - ru = 'Эта башня и есть наш дом.'; - }; - true_solarscale_dlg_6 = { - en = 'You cannot leave now, the tower has opened to you too.'; - ru = 'Вы не можете уйти сейчас, башня открылась и вам.'; - }; - true_solarscale_dlg_7 = { - en = 'Don\'t you think we make up a good team? It will be hard without you.'; - ru = 'Вам не кажется, что мы неплохая команда? Мне будет трудно без вас.'; - }; - true_solarscale_dlg_8 = { - en = 'Think how many amazing places are waiting for us.'; - ru = 'Подумайте, сколько еще прекрасных мест нас ждет.'; - }; - true_solarscale_stays = { - en = 'My perception changes. As if looking from far away I see the tower dissolving in the air, shifting us beyond the usual world. Solarscale freezes astonished besides me, watching this and awaiting my further actions.'; - ru = 'Мое восприятие изменяется. Я словно вижу со стороны, как башня растворяется в воздухе перенося нас за пределы привычного мира. Соларскейл удивленно застыла рядом со мной, наблюдая за происходящим и ожидая моих дальнейших действий.'; - }; - true_solarscale_leaving = { - en = 'In a blink of an eye Solarscale escapes the tower. As if with my own eyes I see Solarscale flying out of the doorway on the first floor and the heavy stone slab lowering after her.'; - ru = 'Я не успеваю моргнуть и глазом, как Соларскейл покидает башню. Кажется, я вижу собственными глазами, как драконесса вылетает через проем на первом этаже и тяжелая каменная плита опускается за ней.'; - }; - ending_dissolving_tower_solarscale = { - en = 'A golden dragoness sits on one of the mountaintops at the edge of the crater. Her scale shines in rays of sunset. Her emerald-green eyes look into the center of the crater upon the slowly dissolving black tower.'; - ru = 'На одной из вершин на краю кратера сидит золотая драконесса. Ее чешуя сверкает в лучах заходящего Солнца, а изумрудно-зеленые глаза смотрят в центр кратера на медленно растворяющуюся в воздухе черную башню.'; - }; - ending_dissolving_tower_solarscale_alt = { - en = 'The dragoness lands on one of the mountaintops at the edge of the crater. Her scale shines in rays of sunset. Her emerald-green eyes look into the center of the crater upon the slowly dissolving black tower.'; - ru = 'Драконесса приземляется на одну из вершин на краю кратера. Ее чешуя сверкает в лучах заходящего Солнца, а изумрудно-зеленые глаза смотрят в центр кратера на медленно растворяющуюся в воздухе черную башню.'; - }; - true_solarscale_outside_part_2 = { - en = 'When the tower completely disappears, the dragoness spreads her thin shining wings and rises into the sky.'; - ru = 'Как только башня полностью исчезает, драконесса расправляет тонкие сияющие крылья и поднимается в небеса.'; - }; - true_step_1_solarscale = { - en = 'At first I wonder at how sensitively the tower reacts to us, but soon I get used to everything being available at our fingertips. In the same incomprehensible way Solarscale always appears to be no further than one door away.'; - ru = 'Сперва меня удивляет, сколь чутко башня реагирует на нас, но вскоре я привыкаю к тому, что все необходимое всегда оказывается под рукой. Столь же непостижимым образом и Соларскейл всегда оказывается в соседней со мной комнате.'; - }; - true_step_1_alone = { - en = 'At first I wonder at how sensitively the tower reacts to me, but soon I get used to everything being available at my fingertips.'; - ru = 'Сперва меня удивляет, сколь чутко башня реагирует на меня, но вскоре я привыкаю к тому, что все необходимое всегда оказывается под рукой.'; - }; - true_step_1 = { - en = 'I rise to the top of the tower and mentally give the command to liftoff. Endless universe opens before my eyes. All roads and worlds are now open to me. At my wish I can be anywhere and anytime.'; - ru = 'Я поднимаюсь на вершину и мысленно отдаю команду на старт. Перед моим взором раскинулась бескрайняя вселенная. Все дороги и миры открыты передо мной. По своему желанию я могу оказаться в любом месте в любое время. '; - }; - true_step_2_solarscale = { - en = 'Millennium after millennium we travel through worlds and ages, gathering their heritage. Soon time and space stop meaning anything to us at all.'; - ru = 'Тысячелетие за тысячелетием мы путешествуем по мирам и эпохам, собирая их наследие. Вскоре время и пространство перестают иметь для нас всякое значение.'; - }; - true_step_2_alone = { - en = 'Millennium after millennium I travel through worlds and ages, gathering their heritage. Soon time and space stop meaning anything to me at all.'; - ru = 'Тысячелетие за тысячелетием я путешествую по мирам и эпохам, собирая их наследие. Вскоре время и пространство перестают иметь для меня всякое значение.'; - }; - true_step_2_irradiated = { - en = 'Millennium after millennium I travel through worlds and ages, gathering their heritage. Despite this, a strange feeling keeps bothering me as if my days are slowly waning and my journey will not be endless.'; - ru = 'Тысячелетие за тысячелетием я путешествую по мирам и эпохам, собирая их наследие. Несмотря на все это, странное ощущение не дает мне покоя -- словно дни мои медленно истекают и путешествие мое не будет вечным.'; - }; - }; -} diff --git a/translation/en.lua b/translation/en.lua new file mode 100644 --- /dev/null +++ b/translation/en.lua @@ -0,0 +1,1355 @@ +--[[ + Author: Khaelenmore Thaal + Status: Official +]] +set_locale_data { + common_locale = { + back = 'Back', + continue = 'Continue', + quotes = '“%1”', + dlg_keep_silent = '[Remain silent]', + key_does_not_fit = 'The key does not fit.' + }, + link_locale = { + copied = 'Copied', + }, + main_locale = { + empty_act = "I don't know what to do with this.", + empty_inv = 'This is an item. It exists.', + empty_use_1 = "It doesn't work this way.", + empty_use_2 = "This doesn't seem right.", + empty_use_3 = 'I should try something else.', + empty_use_4 = "This doesn't seem to work.", + empty_use_5 = "This doesn't fit here.", + }, + menu_locale = { + auto_option = 'Auto', + credits_art = 'Art', + credits_author = 'Author', + credits_closed_beta = 'Closed Beta Testing', + credits_engine = 'Engine', + credits_engine_author = 'Peter Kosyh', + credits_fonts = 'Fonts', + credits_music = 'Music', + credits_sounds = 'Sounds', + credits_thanks = 'Thank you for playing our game!', + cursor_scale = 'Cursor Size', + disable = 'Disable', + enable = 'Enable', + extended = 'Large', + font_scale = 'Font Scale', + graphic_scale = 'Graphics Scale', + interval = 'Line Interval', + intro = [[My footsteps resonate under the arches of the ancient caverns. Irregular shadows dance in glimmering magical light. In my hand I hold a fragment of a map, carefully stored for millennia. Unwrapping the ancient scroll, I closely examine the markings on it: a forest, a mountain range, a road, and a village, marked with a cross. Finally I was able to determine its location. Time to go!^ + My body dissipates in fog and rebuilds in the human form. Quickly I walk to a small door in one of the walls. There is nothing in the room, besides a stone desk and a laptop on it -- an absolutely essential thing in this age, even for a dragon.^ + A good mapping software and a proper query can do wonders -- a couple of minutes later I fly out of my cave in my true form, spreading my wings to the wind.^ + Soon I'll find out what awaits me in this village!]], + inventory_scale = 'Inventory Font Scale', + language = 'Language', + normal = 'Normal', + padding = 'Padding', + system_settings = 'System Settings', + text_alignment = 'Text Alignment', + text_alignment_justify = 'Justify', + text_alignment_left = 'Left', + text_width = 'Text Width', + use_text_input = 'Use Text Input', + warning = 'Warning', + theme_warning = 'A Dragon and the Tower requires custom game themes to be enabled. It will not work without this option enabled. Please change your settings and restart or load the game.', + resolution_warning = 'A Dragon and the Tower requires the screen resolution of at least 640x480. The game will not run properly on a lower resolution. Please ensure that your configuration is correct and your computer supports specified resolution. After that please restart or load the game from the system menu (press esc).', + }, + terminal_locale = { + boot_from = 'Boot from', + cpu = 'CPU', + disk = 'HDD', + keyboard = 'Keyboard', + kilobytes = 'KB', + mhz = 'MHz', + missing = 'Not installed', + motherboard = 'Motherboard', + network = 'Network', + network_2 = 'network', -- accusative case + no_bootable_medium_found = 'No bootable medium found', + no_device = 'none', + ram = 'RAM', + tower_os_line_1 = 'Starting TOWER OS 1.0...', + tower_os_line_2 = 'TOWER OS Version 1.0', + tower_os_line_3 = "Type 'HELP' to list available commands", + -- cat command + cat_line_1 = 'Meow', + cat_line_2 = 'No cats here', + cat_line_3 = 'There is no secret cat level', + -- head or tail commands + head_line_1 = "That's yours, not mine", + head_line_2 = "I don't have one, do you?", + -- more and less commands + more_line_1 = 'No more no less', + -- Lines below are used when player is entering Unix commands instead of DOS ones and are kind of joke/Easter egg + unix_line_1 = "I'm not Unix", + unix_line_2 = 'Do I look like Unix to you?', + unix_line_3 = 'Hey, what are you trying to do?', + unix_line_4 = "Are you trying to say 'format c:'?", + + command_already_started = 'Already started', + connect_comment = 'REM CONNECT.EXE - Disabled so I may access the command line', + critical_failure = 'System failure: File not found', + crypt_invalid_key = 'Invalid key file', + crypt_key_locked = 'Key file is password protected', + crypt_key_unset = 'Key is not specified in config file. Specify manually', + crypt_unencrypted = 'File is not encrypted', + crypt_usage = [[Usage: CRYPT [filename] [key_file]^Decrypt an encrypted file]], + invalid_password = 'Unable to decrypt key. Invalid password', + invalid_password_2 = 'Invalid password', + hello_txt = [[Hello, my dear friend!^I have temporarily disabled the main shell, CONNECT.EXE.^Just run it to enter the system.^Later, when you're comfortable with the terminal^you can enable it back.^Password from the main interface is in DOCS folder in^PASSWORD.TXT file. It's encrypted, of course.]], + help_cd = 'CD - Change directory', + help_dir = 'DIR - List current directory', + help_disk = 'X: - Switch to drive X', + help_connect = 'CONNECT - Connect to the main tower interface', + help_format = 'FORMAT - Format disk drive', + help_help = 'HELP - Show this message', + help_print = 'PRINT - Print contents of a text file', + help_exit = 'EXIT - Turn the terminal off', + help_com_exe = [[You can run .COM and .EXE files by passing path to them as^command name]], + print_no_file = 'Error: Unable to print non-existing file', + print_usage = [[Usage: PRINT [filename]^Print contents of a text file]], + -- If possible, keep phrases below as close to your language MS-DOS translation + -- Also keep lines shorter than 60 characters + bad_command = 'Bad command or file name', + binary_data = 'Error: Unable to print binary data', + cd_invalid_directory = "'%path%' is not a directory", + cd_usage = 'Usage: CD [path]', + format_invalid_device = 'Invalid drive specification', + format_usage = [[Usage: FORMAT [drive]^Format disk drive^Warning: All data on the device will be lost]], + formatting_complete = 'Formatting complete', + operation_cancelled = 'Operation cancelled', + query_formatting = 'Formatting:', + query_password = 'Password:', + query_type_yes = "Type 'Yes' to confirm:", + }, + tutorial_locale = { + tutorial_box = 'Box', + tutorial_box_hint = 'Use the key on the box to unlock it. Click on the key and then on the box.', + tutorial_box_inv = 'A small locked box.', + tutorial_box_used = 'I open the box and take a map from it.', + tutorial_box_used_hint = 'Examine the map to continue.', + tutorial_disk = 'Diskette With Maps', + tutorial_disk_inv = 'A mapping program I purchased just some days ago. It has quite advanced features compared to the previous version. I hope it will be able to help me in my search.', + tutorial_end = 'Congratulations!', + tutorial_end_decor = 'I insert the disk and turn on the laptop. After starting the mapping program, I begin the search. A proper query can do wonders, and a few minutes later I fly out of the cave in my true form, spreading my wings to the wind.', + tutorial_end_decor_hint = 'Congratulations! You have completed the tutorial and are ready to start the main game. Be prepared to act and think on your own. There will be no more hints.', + tutorial_key = 'Key', + tutorial_key_inv = 'A small key. The box it opens should be somewhere in the treasury.', + tutorial_key_inv_look_for_box = 'Try to find the box to continue. Remember that you can inspect items repeatedly.', + tutorial_lair = 'Lair, Main Hall', + tutorial_lair_caves_act = "I've found these caves centuries ago. I had to widen some of the passages, but overall I've kept their natural appearance.", + tutorial_lair_caves_act_hint = 'Click on the objects to interact with them. Some of them you can take or use, others only inspect.', + tutorial_lair_decor_1 = 'My lair consists of a network of small {#caves|caves}', + tutorial_lair_decor_2 = 'Right now I am in the largest of them. The rough walls and tall arches of stone are filled with sunlight through an enormous {#exit|opening in the ceiling}.', + tutorial_lair_decor_hint_caves = 'Click highlighted text to inspect the caves', + tutorial_lair_decor_hint_study = 'Go to the study to continue.', + tutorial_lair_decor_hint_treasury = 'Separated from the rest of the text are transition links. Transitions "To the Treasury" and "To the Study" are available to you now. Go to the treasury to continue.', + tutorial_lair_enter_disk = 'You need to find a floppy disk with the mapping program to continue.', + tutorial_lair_enter_start = 'I awaken and open my eyes. Quickly glancing around the lair I begin transformation. My body dissipates in gray smoke and rebuilds again, taking human appearance.', + tutorial_lair_enter_treasury = 'I have not yet finished my affairs here.', + tutorial_lair_exit_act = 'I made this huge opening to freely leave and return to my lair. It is, of course, not the only exit from my home.', + tutorial_map = 'Map', + tutorial_map_hint_find_disk = 'Find a floppy disk with a mapping program in the treasury.', + tutorial_map_hint_go_to_study = 'Go to study to continue. ', + tutorial_map_hint_leave_treasury = 'Return to the main hall and go to the study from there.', + tutorial_map_inv = 'An ancient map of a small plot of land. A careful cross marks some settlement. I spent centuries looking for this place with no results.', + tutorial_start = 'Welcome!', + tutorial_start_decor = [[ + Welcome to the game of "A Dragon and the Tower". This section will get you acquainted with the game and teach you how to play it. ^ + The game consists of rooms, each of them has a title and a description. Besides that, a room can contain objects you can interact with. ^ + This is also a room. It is titled "Welcome!" and you are reading it's description right now. + ]], + tutorial_start_decor_hint = 'We invite you to play a small prologue to A Dragon and the Tower. We will mark instructions and comments with the bold font. Press "Continue" to begin the prologue.', + tutorial_study = 'Lair, Study', + tutorial_study_decor = "A small round cave about three meters high and no more than three in diameter. Near the wall I have placed a desk on which {#laptop|a laptop} rests. It's time to find the place I seek.", + tutorial_study_decor_hint = 'To complete the tutorial, use the disk with maps on a laptop. To do that, click once on the object in inventory, and then on the object in the room.', + tutorial_study_enter = "I don't need to go there yet.", + tutorial_study_enter_hint = 'Actions of your character will not be always successful. Carefully read the texts to understand why the game does not let you perform certain actions.', + tutorial_study_laptop_act = "A laptop I've bought a couple of years ago. It does not have a modern optical drive and it's not the most powerful by current standards, but it is enough for my needs.", + tutorial_to_game = 'Start the Game', + tutorial_to_main_hall = 'En ĉefan halon', + tutorial_to_main_menu = 'To the Main Menu', + tutorial_to_study = 'To the Study', + tutorial_to_treasury = 'To the Treasury', + tutorial_treasury = 'Lair, Treasury', + tutorial_treasury_books = 'A collection of books I gathered in centuries of my life in this world.', + tutorial_treasury_chests_act_box = 'In one of the chests I find a small box.', + tutorial_treasury_chests_act_default = 'My treasure!', + tutorial_treasury_chests_act_key = 'Upon one of the chests I find a small key. I take it.', + tutorial_treasury_chests_act_key_hint = 'You have taken the key and it has appeared in your inventory. Examine it by clicking on it two times.', + tutorial_treasury_decor = 'Here I keep the most precious stuff I have. Shelves with various {#items|items} are positioned along the walls. In the center of the hall there are several large {#chests|chests}.', + tutorial_treasury_decor_hint_leave = 'Leave the treasury to continue.', + tutorial_treasury_decor_hint_map = 'To succeed in this game you will need to carefully read texts and examine the places you visit. Try to find a map.', + tutorial_treasury_disks = 'Standard 3.5- and 5.25-inch floppy disks with software for my laptop.', + tutorial_treasury_disks_default = 'Even being a dragon, I have to keep up to date.', + tutorial_treasury_disks_found = 'I easily find the one I seek.', + tutorial_treasury_disks_hint = 'Time to use the items I found. Leave the treasury to continue.', + tutorial_treasury_items_act = 'I glance at the shelves with all kinds of stuff: {#books|books}, {#scrolls|scrolls}, {#records|vinyl records}, {#disks|floppy disks}, {#paintings|paintings}, and lots of other things.', + tutorial_treasury_no_enter = 'I have nothing to do there.', + tutorial_treasury_paintings = 'Mostly reproductions of works, I find most intriguing.', + tutorial_treasury_records = 'A relatively recent but widespread enough invention. I have gathered a number of records most valuable to me.', + tutorial_treasury_scrolls = "Scrolls with various writings of this world. I do not have everything I would like to -- I've not had the chance to get a lot of things.", + tutorial_treasury_scrolls_no_map = 'Among them I do not see the map I look for.', + }, + forest_locale = { + above_crater = 'Above the Crater', + above_crater_crater = 'A long time ago a huge meteorite has fallen here. During the time passed, the crater has overgrown with foliage, but the planet has yet to smooth this horrifying scar from its surface.', + above_crater_decor = "I fly above an enormous {#crater|crater} lost amidst mountains. {#tower|A tower} rises in the center of the crater, but {#trees|the trees} won't let me land there. I notice a small {#glade|glade} just a few hundred meters from the tower.", + above_crater_enter = 'I soar into the sky, completing transformation mid-air. My mighty wings raise me above the ground.', + above_crater_glade = 'A small glade near the center of the crater. If I land here and transform, I will be able to get to the tower without any issues.', + above_crater_tower = "The tower of black rock rises above the forest, placed in the very center of the gigantic crater. Its base is an equilateral hexagon. It stands strictly vertically, surrounded from all sides by forest, as if it is ignoring the tower's presence.", + above_crater_trees = 'The trees grow rarely enough to allow sunbeams to reach the ground, but nevertheless it would be difficult to land here.', + above_forest = 'Above the Forest', + above_forest_decor = 'Occasionally flapping my wings, I soar above {#thicket|the thicket} below. To the west I see {mountains|a mountain range} extending south and north as far as I can see. An old asphalted {#road|road} writhes below like a narrow stream. Along it stretches {#powerlines|a power line}. A bit aside from the road I can see a small {#glade|glade}. The cool {wind|wind} touches my scales and the bright summer {sun|sun} seeps through the thin fleecy {clouds|clouds}.', + above_forest_decor_village = 'The village I seek should be somewhere nearby.', + above_forest_enter = 'With a quick flap of my wings I rise from the Earth and rush into the sky.', + above_forest_glade_act = 'A small glade, covered with a patchwork of flowers and grass.', + above_forest_glade_act_first = 'A great place to take some rest.', + above_forest_powerlines_act = 'Towers are positioned along the road on equal distance from each other. Thick high-voltage cables are stretched between them.', + above_forest_road_act = 'The cracked asphalt looks like a dry riverbed. The road is deserted as if this place has been uninhabited long ago.', + above_forest_road_act_village = 'What if I find only lifeless windows of empty houses in this village?', + above_forest_thicket_act = 'Ancient forests cover the land like a green blanket. The mild wind barely sways the treetops. Even here, hundreds of meters above ground, I sense a slight scent of conifer.', + above_near_village_decor = 'My wings carry me above the forest {#road|road}. I have travelled a dozen kilometers but seemingly nothing has changed at all -- a never-ending {#thicket|thicket} still lies below, and {mountains|the mountain range} still stretches far away. To the north, near the horizon I notice a small {#village|village}.', + above_near_village_enter = 'A fog surrounds my body and in a moment not a nameless stranger, but a mighty dragon is standing on the road. With a flap of wings, I leave the ground far below.', + above_near_village_road = 'The road looks long unused. The asphalt has cracked in a lot of places, and green stalks have started to grow through it.', + above_near_village_thicket = 'Looks like the forest is endless. The mild wind sways the treetops, raising a thick conifer scent noticeable even here, hundreds of meters above the ground.', + above_near_village_village = 'From here I can see a tavern and a town hall in the center of the village. Around them little houses are scattered, surrounded by greenery.', + above_village = 'Above the Village', + above_village_decor = 'The thin fleecy {clouds|clouds} keep floating above me barely covering {sun|the sun}, and below stretches an endless sea of {#thicket|forest}, cut by {mountains|the mountain range} to the west. The old asphalted {#road|road} leads to {#village|the village} below me.', + above_village_road = 'Obviously, locals rarely use this way. The road is empty and the asphalt does not get due maintenance.', + above_village_thicket = 'The thick conifer forest surrounds the tiny village from all sides, trying to devour it without success.', + above_village_village = 'From here I can see the village surrounded by greenery. A square lies in its center, with a town hall and a tavern nearby. There is a library on the north of the village.', + above_west = 'West of the Village', + above_west_crater = 'An enormous crater is about ten kilometers in diameter. Judging by the light forest growing inside, it formed quite long ago. I see a black tower in the center of the crater.', + above_west_decor = '{#village|The village} is far to the east. Pointy {#mountaintops|mountain-tops} and rocky {#mountainslopes|slopes} littered with boulders pass me by, and far away to the west I see a huge {#crater|crater}. Rays from the bright summer {sun|sun}, passing through the thin fleecy {clouds|clouds}, fall upon my scale warming it.', + above_west_mountains = 'From here I can see the mountain tops below. Few of them are high enough to touch the clouds, and only some of them are coated by the snow, shining in the sun. Most of them are no more than naked rock, to which young spruces try to cling desperately here and there.', + above_west_mountainslopes = 'Steep slopes and vertical rocks look nearly lifeless. Only few trees dare to set their roots on these rocky hulks pointed to the sky.', + above_west_mountaintops = 'The mountain tops point upward like spearheads. Most of them are mere gray rocks void of any flora, but the highest of them are covered by the blindingly white snow, glittering in the bright summer sun.', + above_west_village = "From here I can still make out the biggest buildings of the village: the town hall, the tavern and the library. Barely visible smoke rises from the tavern's chimney, and a girl is sitting on its porch.", + box_disp = 'Old Box', + box_disp2 = 'the old box', + box_disp3 = 'the old box', + box_dsc = 'There is an intricately decorated {box} on the table.', + box_inv = "A very old box. I can only imagine what's hidden inside. A ring with a jewel is engraved on its bottom.", + box_inv_known = 'I recall seeing it somewhere.', + box_inv_take_lock = 'I remove the lock from the box.', + box_inv_without_lock = 'An antique box. A ring with a jewel is engraved on its bottom.', + box_tak = 'I take the box.', + box_used_key_failed = "Over the time the lock has rusted and I'm unable to turn the key.", + box_used_key_oil = 'I put a drop of oil in the lock. This should be enough to make the mechanism work.', + box_used_key_oil2 = 'The lock is already oiled.', + box_used_key_success = 'The key turns with difficulty and the lock opens. There is a small scroll inside. Unwrapping it I see that it is a map. I take it.', + clouds = 'Pierced with sunbeams like with spears, the thin fleecy clouds slowly float above my head following aerial currents.', + common_dlg_greet = 'Good afternoon! I am new in this village.', + common_dlg_places = 'Do you know of any interesting places around here?', + common_dlg_bye = 'Farewell.'; + crater_near_tower = 'Crater, Near the Tower Entrance', + crater_near_tower_decor = "The path leads me to a glaring black opening in one of the walls of {#tower|the tower} built of some black material unfamiliar to me. {#grass|The grass} comes to the tower's very foot. Spreading crowns of {#trees|the trees} nearly cover the sky. Rays of {#sun|the sun} seep through the foliage and make an intricate pattern falling on the grass, the path, and the tower's walls.", + crater_near_tower_grass = 'The thick green grass grows all around this forest.', + crater_near_tower_sun = 'The bright summer sun illuminates the forest with its rays.', + crater_near_tower_tower = "The tower's base is a regular hexagon. It is unknown how far it goes below the ground. Matte surface feels cold and smooth like glass. I neither see nor feel any joints as if the tower is made of a solid piece of rock. Its walls rise vertically, and its top is hidden by the trees.", + crater_near_tower_trees = 'The trees grow almost by the tower. They must have grown here after its appearance.', + flower = 'Flower', + flower_inv = 'A small but beautiful flower with thin and long sky-blue petals.', + forest_glade = 'Glade', + forest_glade_birds = "From deep within the forest I hear a multitude of chirping birds, but I don't see any of them nearby.", + forest_glade_decor = 'I stand in the middle of a small glade, surrounded by a wall of {#thicket|trees}. It is calm and quiet here. I can only hear leaves rustling and {#birds|birds} singing. The mild wind barely sways the treetops. Emerald-green {#grass|grass} reaches my heels.', + forest_glade_enter = 'I land on a small glade inside the forest. There is no need to hide, so I stay in my real form.', + forest_glade_flowers = 'Quite a lot of nice flowers grow here.', + forest_glade_flowers_first = 'Unusual flowers with elongated sky-blue petals catch my attention. They grow on the edge of the glade. I pick one and take it with me. With some magic it will never wither.', + forest_glade_grass = "Thick high grass covers the whole glade. It would reach average human's waist, but for me it barely touches the heels. Here and there I can see tiny patches of {#flowers|flowers} hidden in it.", + forest_glade_thicket = 'The trees surround the glade with a solid wall like vigilant sentinels keeping watch over this place.', + forester_dlg_disp = 'The Forester', + forester_dlg_enter = 'A bearded, shaggy man of unknown age is sitting on a sofa, piercingly looking right into my eyes. He wears a tarpaulin jacket and trousers, and seemingly has no problems with the heat.', + forester_dlg_farewell_response = '"See you," the forester says.', + forester_dlg_greet_response = 'The forester quickly changes the expression -- I notice a spark of joy in his eyes, and it seems like he hides a sincere smile under his beard, "Welcome! We are always happy to see new people here!"', + forester_dlg_pie = '[Give the raspberry pie to the forester] I have brought you the pie. Can I take the rope?', + forester_dlg_pie_response = 'The forester takes the pie from you and bites it. "Take it," he says. ', + forester_dlg_places_response = 'The forester responds without hesitation, "It\'s said that you can\'t find such collection of books as ours in the whole world."', + forester_dlg_rope = 'Can I take your rope?', + forester_dlg_rope_response = 'The forester thoughtfully scratches his beard and proposes, "I had a quarrel with the tavern keeper a couple of days ago. Now he refuses to sell me anything but bread and water. I would gladly exchange a coil of rope for a piece of raspberry pie."', + foresters_hut = "Forester's Hut", + foresters_hut_chairs = 'The old wooden chairs seemingly made by a local carpenter. Simple but steady and strong, they will serve for a long time.', + foresters_hut_cupboard = 'Looks like this cupboard is several decades old. Its bronze handles are covered with patina and its doors are heavily cracked.', + foresters_hut_decor = 'Despite the bright sunny day outside, it is still dark inside the hut. A huge soft {#sofa|sofa} is positioned across from the entrance. In the corner I see a huge sturdy {#cupboard|cupboard}, and beside the window there is {#table|a table}, covered by an oilcloth. Several {#chairs|chairs} are standing around it. {#radio|A radio} is on the table.', + foresters_hut_enter = 'Entering the unlit room, I barely hold from taking my glasses off and revealing my true self. After getting used to the twilight, I look around.', + foresters_hut_forester = '{The forester} is sitting on the sofa, looking at me.', + foresters_hut_forester_pie = 'I cannot just put the pie in his hands. I have to come and talk.', + foresters_hut_not_interested = 'This is not likely to entice him.', + foresters_hut_radio = 'An antique radio. Manufacturing of these stopped some twenty years ago. Looks like it works perfectly still. The power is on, but volume is reduced to the minimum.', + foresters_hut_rope = 'There is {a coil of rope} on the cupboard.', + foresters_hut_rope_disp = 'Rope', + foresters_hut_rope_inv = 'A coil of strong rope.', + foresters_hut_rope_not_taken = 'The owner will not be happy if I take this without permission.', + foresters_hut_rope_taken = 'I take the rope.', + foresters_hut_sofa = 'An ancient sofa with a faded and worn upholstery still lures with the comfort of home.', + foresters_hut_table = 'The massive oaken table is covered by a faded oilcloth with a pattern of flowers and curls.', + hidden_key_disp = 'Key', + hidden_key_disp2 = 'the key', + hidden_key_disp3 = 'the key', + hidden_key_inv = 'The old metal key I found in the well.', + inside_crater_glade = 'Crater, the Glade', + inside_crater_glade_crater = "Being here, near the center of the giant crater, I do not see anything that would make this forest and landscape different from any other I've seen.", + inside_crater_glade_decor = 'A small round glade amidst a rare deciduous {#forest|forest}. A huge old {#oak|oak} with a spreading crown stands in the center of it. Emerald green {#grass|grass} reaches my waist. {#path|A path} leads to {#tower|the tower} in the center of {#crater|the crater}.', + inside_crater_glade_forest = 'In the shade of spreading elms and slender beeches squirrels, hares, and other small animals play. I can hear a woodpecker drumming and birds singing somewhere far away.', + inside_crater_glade_grass = 'The wild grass rises high not held by anything or anyone.', + inside_crater_glade_oak = 'A herculean tree grows in the center of the glade. The gentle wind rustles its branches, covered by thick green foliage. An owl sleeps in a gigantic hollow in the tree.', + inside_crater_glade_on_enter = 'I begin transforming without even touching the ground. Shrouded by fog my body immediately rushes downwards. In a moment I find myself on a glade in a human body. My eyes glow brightly, but I have no one to hide from here, so I leave my glasses in the pocket.', + inside_crater_glade_path = 'Somebody has made a narrow path in the grass leading directly to the tower.', + inside_crater_glade_tower = 'The tower of black rock rises above the forest, like a lighthouse built for anyone ending up here.', + inside_crater_path = 'Crater, the Path', + inside_crater_path_crater = "Even here, near the very center of the crater, I do not see any signs of the fallen object. The weather and the forest slowly do their job and methodically mend this giant scar on the Earth's body.", + inside_crater_path_decor = 'A narrow path, made by someone unknown in the thick {#grass|grass}, leads to the center of {#crater|the crater}. The sunlight seeps through the foliage creating an intricate pattern of shadows all around: on the trunks of {#trees|the trees}, on the grass, and on the path itself. Far away in front of me {#tower|the tower} is visible.', + inside_crater_path_exit = 'I continue walking without speaking to the dragoness. She spreads her wings and flies away.', + inside_crater_path_grass = 'Lacking the excesses of sunlight the grass is shorter here than on the glade. Nevertheless it still retains its saturated emerald green color.', + inside_crater_path_stump = 'A huge {rock} lies near me.', + inside_crater_path_stump_act = 'The rock is half buried into the ground. Obviously it lies here for a very long time. It must be one of the largest debris left here when the crater appeared.', + inside_crater_path_stump_with_solarscale = 'A huge {rock} lies near me with a small {solarscale|dragoness} sitting on top of it.', + inside_crater_path_tower = 'The tall black building raising above the forest is mostly hidden from my sight by the thick foliage.', + inside_crater_path_trees = 'High trees with spreading crowns sway lightly from the gentle wind. In the weaves of the roots small animals make their homes, and all kinds of birds are sitting on the branches.', + inside_well = 'Inside the Well', + inside_well_decor = "I stand on the bottom of the well. Its inner part is laid of stone. It's dark here and I have to take my glasses off to see. Despite that well has dried out a long time ago, moisture is still quite high inside.", + inside_well_enter = 'I doubt I will be able to get out if I just jump in.', + inside_well_loose_rock = '{One of the rocks} catches my attention. It visibly protrudes from the stonework.', + inside_well_loose_rock_act = 'I easily remove the rock. Beneath it in a small niche a metal key is hidden. Surprisingly, moisture has not damaged it.', + leave_books_message = "I don't need these books. I better leave them here.", + librarian_dlg = 'The Librarian', + librarian_dlg_bye_response = 'The old man nods, "Best wishes to you."', + librarian_dlg_enter = 'An old man in an ancient dark gray suit is standing in front of me. He wears a dark-blue bow tie around his neck. A corner of a well-ironed handkerchief sticks out from the pocket on his chest. I see a ring with a jewel on the index finger of his right hand. I wonder, how did it get here? The man holds a thick book in his left hand, unfortunately I do not see its name. The horn-rimmed spectacles sit on the nose of the librarian. His chin is clean-shaven and his short hair are entirely white. His gray eyes watch me calmly and his mouth is slightly open in a friendly smile.', + librarian_dlg_greet_response = 'The man respectfully nods and declares, "Welcome! How can a humble librarian assist you?"', + librarian_dlg_library = "Your library can give odds to any other I've seen. How have you manage to collect so many books?", + librarian_dlg_library_old = 'This building seems to be very old. How long has it been here?', + librarian_dlg_library_old_response = 'The librarian smiles slightly, remembering the old times: "Very long, indeed. My grandpa told me about his childhood days here, reading of faraway lands and perilous adventures..."', + librarian_dlg_library_response = 'The librarian answers with a smile, "It\'s a labor of generations. It\'s not easy to get to civilization from here. Many of these books were brought here by strangers, others were gathered by my predecessors. In any case do not hesitate to take any of them. But don\'t forget to return them back."', + librarian_dlg_places_response = 'The librarian shrugs, "I don\'t think there is much to look at."', + librarian_dlg_ring = 'Where did you get this ring?', + librarian_dlg_ring_look = 'Can I look at your ring?', + librarian_dlg_ring_look_response = 'The librarian takes the ring off his finger without a word and gives it to me. I examine the treasure carefully. On the inside a writing is carved, "The key is hidden near the water." I return the ring to its owner and he puts it back on.', -- Please take note that the engraved words are also used in `village_well_act_key` key + librarian_dlg_ring_response = 'The old man demonstrates his ring to me. I examine this masterpiece of jewelry with awe. The golden ring is decorated by an intricate carving and encrusted with a large emerald, about four millimeters in diameter. Removing his hand the man explains, "This ring has been kept here from times immemorial. My predecessor gave it to me and I will give it to the one who will keep this library after me."', + library = 'Library', + library_chairs = 'The comfy soft armchairs for visitors.', + library_decor = 'The inner space of the library is a large hall filled with {library_shelves|bookshelves}. Between them here and there cozy {#tables|tables} with {#lamps|floor lamps} and {#chairs|armchairs} nearby are seen. There are only a few {#windows|windows} in the building and the artificial lighting is preferred. {#library_notice|A tablet} hangs on the wall near the entrance.', + library_hidden_room = 'Library, the Secret Room', + library_hidden_room_decor = 'This library has definitely been designed by a very talented person. I could examine this building to and through, measure each corner, but I would still not be able to figure out that this room is hidden here. The room contains nothing but a small {#table|table}.', + library_hidden_room_table = 'A small round table with a bronze leg, same as the other ones in the library. ', + library_lamps = 'Near every armchair stands a floor lamp with a green conical shade. All of them are turned off now -- there is enough light from the windows, and there are no visitors besides me.', + library_librarian = 'An old {man} with a book in his hands walks around the hall.', + library_librarian_used_box = "Maybe it's better to ask rather than poking him with this.", + library_librarian_used_other = "He's not interested in this.", + library_notice_inside_decor = [[ An old metal tablet contains the list of the library rules:^ + 1. You can take any books you like. You must either return the books yourself or ask somebody to do it for you.^ + 2. You can bring any book and leave it here.^ + 3. You can put the book on it's place yourself using the positioning table or give it to the librarian.^ + 4. Please put the books on the shelves in the alphabetic order.^ + I notice nearly erased remains of old paint around the word "alphabetic" in the last rule, as if it was at some point marked with a color. + ]], + library_shelf_book_disp = 'History, Vol. %number%', + library_shelf_book_inv = 'A quite old edition of one of the most popular books on the history of the world.', + library_shelf_book_tak = 'I take the book from the shelf.', + library_shelf_puzzle_shelf_act = 'The word "%word%" is carved on the smooth wood of the shelf.', + library_shelf_puzzle_shelf_multiple = 'A number of books are standing on {shelf|the shelf}:', + library_shelf_puzzle_shelf_none = '{The shelf} is empty.', + library_shelf_puzzle_shelf_single = 'A book is standing on {shelf|the shelf}:', + library_shelf_puzzle_used_book = 'I put the book on the shelf.', + library_shelf_puzzle_used_book_success = 'The rack rotates, opening a passage to a previously hidden room.', + library_shelves_act = 'This time I found the same {library_the_shelf|shelf} without any issues.', + library_shelves_act_first = 'Long I wander in this labyrinth of shelves. It would take more than a month only to get acquainted with the names of books here. I wonder how all this treasure got to this hole? Finally I stop near {library_the_shelf|one of the shelves}.', + library_tables = 'The small round tables on bronze stands are helpfully placed all around the hall.', + library_the_shelf_act = 'On the first glance this shelf is entirely ordinary. Only after examining it closely I understand what has caught my attention -- on the smooth surface a word "%word%" is carved with careful and even letters. It definitely serves some purpose.', + library_windows = 'The light beige curtains on the large transparent windows are open. On the north and the east I can only see the endless forest. Behind the trees in the west a mountain range stretches. Through the windows on the southern wall a view of the village opens.', + lock = 'Padlock', + lock_disp2 = 'the padlock', + lock_disp3 = 'the padlock', + lock_inv = 'A small metal padlock, very old and thoroughly rusted.', + maid_dlg = 'The Girl', + maid_dlg_bye = 'I have to go.', + maid_dlg_bye_response = 'The girl nods smiling.', + maid_dlg_enter = "A young girl is sitting on the tavern's porch. Her long auburn hair fall down on her shoulders, her hazel eyes looking somewhere far away. Corners of her mouth are rising in a slight smile. She wears a simple blue dress."; + maid_dlg_enter_with_flower = "When I come near, she looks at me and smiles warmly.", + maid_dlg_enter_no_flower = "When I come near, she looks at me and gives me a friendly but somewhat sad smile. Her thin pale hands lie still on the hem of her dress.", + maid_dlg_flower = '[Give the flower to the girl] Here you are.', + maid_dlg_flower_agree = 'I agree.', + maid_dlg_flower_agree_response = 'The girl smiles, "Agreed then."', + maid_dlg_flower_response = 'The girl shines. Warmly smiling to you, she whispers, "Thank you!"', + maid_dlg_flower_think = 'I need to think.', + maid_dlg_flower_think_response = 'The girl shrugs, "As you wish. The pie is delicious indeed."', + maid_dlg_greet_response = 'The girl responds shyly, looking at me, "Please excuse me, I have not noticed you. I will help however I can."', + maid_dlg_no_money = 'I have no money with me.', + maid_dlg_no_money_response = [[The girl wonders, "How did you get here then?"^After some thinking, she proposes, "You know, I can give you a piece of the pie if you do me a small favor. I do not ask much, just..." She pauses awkwardly, "Please, bring me a flower from our forest. Usually we go there with the forester, but this year we are both too busy. What do you say?"]], + maid_dlg_pie = 'Can you bring me a piece of raspberry pie?', + maid_dlg_pie_ask = "Good, I'll ask him.", + maid_dlg_pie_ask_response = 'The girl looks at me silently.', + maid_dlg_pie_fail_response = 'The girl laughs, "Is our pie so famous that people come from lands beyond only to try it?! Why don\'t you ask my father?"', + maid_dlg_pie_response = 'The girl jumps from here place and runs to the tavern with a yell, "I\'ll be back!" Some minutes later she returns with a piece of deliciously smelling raspberry pie.', + maid_dlg_places_like = 'Yes, I like this place.', + maid_dlg_places_like_response = 'The girl continues, "There are very beautiful flowers in our forest. Previously we came there with the forester and I gathered some for me, but I have nearly no time this year -- I have to help my father in the tavern." She sighs sadly. ', + maid_dlg_places_response = 'Your question catches the girl off-guard. She blushes and keeps silent, not knowing what to say. Some time later she asks, "Isn\'t it nice here?"', + maid_dlg_silent_response = 'The girl asks, "So, what do you need?"', + maid_dlg_tavern = 'Do you work in the tavern?', + maid_dlg_tavern_response = 'The girl nods quietly.', + map_disp = 'Map', + map_disp2 = 'the map', + map_disp3 = 'the map', + map_inv = "A very old map showing a place somewhere in the mountains, to the west of the village. It's not far -- about ten minutes on my wings.", + mountains = 'The mountain range cuts through the forest cover to the west. Rare trees desperately cling to the rocky slopes as if trying to mend this giant wound.', + near_village = 'South of the Village', + near_village_decor = 'I stand on an old asphalted {#road|road} somewhere among the ancient {#forest|forest}. A small {#village|village} is located a few kilometers to the north. The bright summer {sun_transformed|sun} shines through {clouds|the clouds} far above.', + near_village_enter = 'I descend softly. As my feet touch the ground, I start transformation. My body dissipates in fog and I reappear from it as a common human. I conceal my flaming eyes with the dark glasses.', + near_village_forest = 'The light wind sways the treetops along the both sides of the road and spreads a thick conifer aroma.', + near_village_road = 'Gray uneven asphalt of the long forgotten road is covered with cracks.', + near_village_village = 'The well-kept log houses are surrounded by greenery. From here I can see the large buildings of the town hall and the tavern in the center of the village.', + old_map_disp = 'Old Map', + old_map_disp2 = 'the old map', + old_map_disp3 = 'the old map', + old_map_inv = 'An antique map that led me here.'; + old_map_inv_not_visited = 'Mountains, woods, even the road is nearly the same. The village marked with a cross should be somewhere near.', + old_map_inv_visited = 'Mountains, woods, the village marked with a cross, even the road is nearly the same.', + old_map_inv_visited_village = "I'm curious, what's so special about this village.", + raspberry_pie = 'Raspberry Pie', + raspberry_pie_inv = 'I inhale the marvelous aroma of a fresh raspberry pie. Unfortunately, I cannot eat it, but I will definitely return here one day to get a piece for myself.', + sun = 'Sun rays, seeping through the thin fleecy clouds, warm my scales pleasantly.', + sun_transformed = 'Warm sun rays seep through the thin fleecy clouds and fill surroundings with golden light.', + tavern = 'The Village, the Tavern', + tavern_cauldron = 'Fragrant stew is boiling in the cauldron. Modern gas or electric stoves have not yet come here, or maybe the owner of this place just prefers the old ways.', + tavern_decor = 'The spacious hall of the tavern meets me with warmth and comfort. The room is filled with sunlight passing through the multitude of {#windows|windows} in the log {#walls|walls}. Strong and surprisingly well-made wooden {#tables|tables} are placed around the room. Electric {#lights|lamps} hang from the ceiling. Fragrant steam rises from {#cauldron|a cauldron} hanging above {#fireplace|the fireplace} in the other end of the room.', + tavern_fireplace = 'Despite the warm summer day outside, the fire in the hearth is burning.', + tavern_keeper = '{The tavern keeper} is waiting behind the polished bar stand.', + tavern_lights = 'The lamps under the thin plastic shades are turned off.', + tavern_tables = 'The strong heavy tables, each able to fit three or four people, are covered by the snow-white tablecloths.', + tavern_walls = 'The log walls of the tavern create a warm and cosy atmosphere of old times.', + tavern_windows = 'The large windows easily let the light inside the room. The light-green curtains on all of them are open.', + tavernkeeper_dlg = 'The Tavern Keeper', + tavernkeeper_dlg_bye_response = 'The tavern keeper responds, "Come again!"', + tavernkeeper_dlg_enter = 'Behind the bar stand I see an obese man with thick black beard. He looks at me cheerfully with his dark eyes. He asks loudly, "What is your wish, my dear guest?"', + tavernkeeper_dlg_greet_response = 'The tavern keeper smiles and offers his services, "Welcome! In my tavern you can always have a night\'s rest and will never stay without a hot hearty dinner!"', + tavernkeeper_dlg_money = 'Thank you, but I have no money with me.', + tavernkeeper_dlg_money_response = 'The tavern keeper shrugs, "We don\'t serve for free."', + tavernkeeper_dlg_pie = 'Can I have your raspberry pie?', + tavernkeeper_dlg_pie_2 = "Sadly, I don't have any money with me. Can we negotiate?", + tavernkeeper_dlg_pie_response = 'The tavern keeper reaches for the pie saying, "Only a hundred and fifty coins and the pie\'s yours!"', + tavernkeeper_dlg_pie_response_2 = 'The tavern keeper returns back and says, "That won\'t do. The pie is only sold for money."', + tavernkeeper_dlg_places_response = 'The tavern keeper responds, "You have to try our raspberry pie! I swear, you have not tried anything as tasty!"', + townhall = 'The Town Hall', + townhall_cabinet = 'Near the entrance a robust {cabinet} stands. There is {record_player|a turntable} on top of it. It plays a melody, unknown to me.', + townhall_cabinet_act = 'Inside the cabinet I find some {records|vinyl records} and a box with {parts|spare parts}.', + townhall_cabinet_act_oil = 'Inside the cabinet I find some {records|vinyl records}, a box with {parts|spare parts}, and {oil|a flask of oil}.', + townhall_cabinet_oil = 'Flask of Oil', + townhall_cabinet_oil_inv = 'A nearly full flask of machine oil.', + townhall_cabinet_oil_tak = 'I take the flask of oil.', + townhall_cabinet_parts = 'Spare parts for the turntable, carefully packed in small boxes and packs.', + townhall_cabinet_record_player = "The turntable is in excellent condition despite its venerable age. The old and worn record cracks and pops, but I still like the music. Unfortunately, it's entirely unfamiliar to me.", + townhall_cabinet_records = 'Some records. Neither the artists, nor the songs are familiar to me.', + townhall_cabinet_used_oil = 'I return the flask to its place.', + townhall_ceiling = "The high ceiling is covered by darkness, but with my dragon eyes I can easily make out it's well crafted and straight planks.", + townhall_chairs = 'Simple but sturdy chairs are as old as the other furniture here. No doubt they will serve for a long time.', + townhall_chandelier = 'The gilded brackets and arms hold the lamps and a lot of pendants decorating the chandeliers. They are turned off now, but turn it on and sparkling gleams will shine reflecting from the crystal and refracting through it.', + townhall_curtains = 'The faded curtains are closed, barring the light from entering the room. The old cloth is still dense and strong.', + townhall_decor = "I stand in the spacious town hall. Several large crystal {#chandelier|chandeliers} hang from {#ceiling|the ceiling}. It's dark in the room -- {#curtains|the curtains} are closed and the light barely seeps through them. In the center of the room a huge {#table|table} stands with massive {#chairs|chairs} around it. In the far end of the room an old {#head|man} is sleeping in an armchair.", + townhall_head = 'There is no reason to wake him up.', + townhall_onexit = 'I doubt locals would like it if I steal their possessions. I have to return the oil.', + townhall_table = 'I see a lot of scratches left on the polished surface of the table by visitors in many years. Massive and heavy it stands securely and will serve for a long time.', + transition_along_the_path = 'Along the Path', + transition_away_from_bookstand = 'Away from the Shelf', + transition_east = 'East', + transition_east_to_the_village = 'East, to the Village', + transition_fly = 'Take Off', + transition_inside_hut = 'Into the Hut', + transition_inside_library = 'Into the Library', + transition_inside_tavern = 'Into the Tavern', + transition_inside_tower = 'Into the Tower', + transition_inside_town_hall = 'Into the Town Hall', + transition_inside_well = 'Into the Well', + transition_land = 'Land', + transition_north_along_road = 'North, Along the Road', + transition_north_to_library = 'North, to the Library', + transition_north_to_the_townhall = 'North, to the Town Hall', + transition_north_to_the_village = 'North, to the Village', + transition_out = 'Outside', + transition_south_along_road = 'South, Along the Road', + transition_south_to_hut = "South, to the Forester's Hut", + transition_south_to_the_forest = 'South, to the Forest', + transition_south_to_town_hall = 'South, to the Town Hall', + transition_to_glade = 'To the Glade', + transition_to_hidden_room = 'To the Hidden Room', + transition_to_main_hall = 'To the Main Hall', + transition_to_tower = 'To the Tower', + transition_up = 'Up', + transition_west = 'West', + transition_west_to_the_crater = 'West, to the Crater', + village_all_decor = 'Bright rays of the summer {sun_transformed|sun} seep through the thin fleecy {clouds|clouds}.', + village_center = 'The Village, Center', + village_center_decor = 'I stand on a small square in front of {#townhall|the town hall}. On the other end of the square {#tavern|a tavern} is located. To the north I see a large single-storey {#library|building}.', + village_center_library = "From here I can see the library's sign on the building.", + village_center_music = 'I halt to listen to the music coming from the town hall. An unfamiliar melody sounds quite pleasant.', + village_center_tavern = 'The tavern is as old and considerable as the town hall. A barely noticeable smoke is rising from its chimney.', + village_center_townhall = 'The two-storey town hall is one of the largest and oldest buildings in this village. Most of the facade is taken up by the huge windows taking up both storeys. I can hear {#music|the music} coming from the inside.', + village_maid_act_no_dlg = "I don't need anything from her.", + village_maid_dsc = "A young {girl} is sitting on the tavern's porch.", + village_maid_flower = 'In her hand she holds a beautiful flower with sky-blue petals.', + village_maid_used_flower = 'It would be better to talk to her.', + village_maid_used_other = "It's doubtful, she needs this.", + village_no_way_alone = 'Locals would not appreciate a dragon landing in the middle of their village.', + village_no_way_solarscale = 'Locals would not appreciate a couple of dragons landing in the middle of their village.', + village_north = 'The Village, North', + village_north_decor = 'I stand in the northern part of {#village|the village}. A narrow {#road|road} leads directly to {#library|the library}, standing on the very edge of the village. Behind it I can only see the endless {#forest} and {#mountains|the mountain range} stretching further north.', + village_north_forest = "The forests starts immediately behind the library. Trees are not as dense here as further north where the thicket becomes completely impassable. The air is filled with a conifer aroma and birds' singing is heard from all around.", + village_north_library = 'The tall and spacious building fits an enormous amount of books under its roof. Despite its venerable age, it is in perfect condition due to the best possible care. The wide double doors are ajar, inviting guests.', + village_north_mountains = 'Most of the mountain range is hidden from my sight by the trees. From here I can see only a number of the highest peaks.', + village_north_road = "The asphalt here is even more cracked than in other places. Here and there it's pierced by thin stalks of grass.", + village_north_village = "The village to the south of me seems asleep. Well-tended houses are covered with foliage, empty roads lie between them. Only on the tavern's porch I see a lonely girl in a blue dress.", + village_south = 'The Village, South', + village_south_car = 'This car must be ancient -- the model is quite old, the body has some dents and the paint is slightly touched up. The car has not a notion of rust, the mirrors and headlights are in perfect condition and the windshield is shining clean.', + village_south_decor = "I am standing on {#road|the road} in the southern part of {#village|the village}. A forester's {#foresters_hut_out|hut} is located close by. An old {#foresters_car|truck} is parked near its entrance. Rays of {sun_transformed|the sun} passing through {clouds|the clouds} fill surroundings with golden light.", + village_south_hut = "A sturdy wooden hut. It has blackened from age and is slightly leaning, but it's still quite strong. With proper care it can hold some more decades.", + village_south_road = 'Walking on the old half-decayed asphalt is quite odd for me, used to the flat floor of my caves. Here and there thin stalks of young grass rise through the cracks.', + village_south_village = "The neat wooden houses of the village inhabitants are surrounded by greenery. From here I can see the town hall and the tavern located in the center of the village. A thin stream of smoke rises from the tavern's chimney.", + village_unvisited = 'The village is definitely inhabited.', + village_well_act = 'An old dried out well.', + village_well_act_key = 'Looking at the well, words "the key is hidden near the water", engraved on the ring, come to my mind. The water is no longer here, but it just makes the task easier.', + village_well_dsc = '{The well} is placed in the center of the square.', + village_well_dsc_rope = 'A rope going down the well is fixed by one of the protruding stones.', + village_well_used = "I tie the rope to a protruding stone. Using it I'll be able to get out of the well.", + wind = 'The light wind blows from the east, bringing a longed-for coolness. Its soft breath barely sways the treetops and makes thin clouds slowly move to the west.', + }, + solarscale_locale = { + disp = 'Solarscale', + first_dlg_about_map = "[Tell about the map] It's a long story...", + first_dlg_about_map_1 = 'Seems like so.', + first_dlg_about_map_1_response = 'Solarscale nods, "Well, good luck in your search."', + first_dlg_about_map_2 = 'It should be in this crater.', + first_dlg_about_map_3 = 'Maybe you could help me?', + first_dlg_about_map_3_response = 'Solarscale smiles once again, "Of course." Thinking a bit, she continues, "I believe, it\'s better to start with the tower of strange stone. I could not get inside, but maybe you can. Just follow the path".', + first_dlg_about_map_response = 'Solarscale thoughtfully utters, "Fascinating. So you even don\'t know what you\'re looking for?"', + first_dlg_dragon = 'I would have never expected to see a dragon. How did you get here?', + first_dlg_dragon_admit = "It's hard to hide this from you. Yes, I am.", + first_dlg_dragon_admit_response = 'Solarscale nods: "I would have never expected to find anyone of my kin! I haven\'t even recognise you right away! What brings you here?"', + first_dlg_dragon_decline = 'You are mistaken.', + first_dlg_dragon_decline_response = 'Solarscale squints cunningly. You understand that she sees through me easily, "Let it be your way. So, how did you get here?"', + first_dlg_dragon_question = 'Why do you think so?', + first_dlg_dragon_question_response = 'Solarscale explains smiling, "It\'s not easy to hide from another dragon. But how did you get here?"', + first_dlg_dragon_response = 'Solarscale replies, "I\'m returning home from a long travel. Just stopped here for a rest." Suddenly, she halts astonished, "Your eyes! You are also a dragon, right?"', + first_dlg_enter = 'A dragoness with the scale of glittering gold and brightly glowing emerald eyes is sitting on a rock. Her mouth with the two rows of shining teeth is slightly opened. Her wings folded on her back, and hands crossed on her chest. She looks at me in a friendly way. She is only about a meter tall. Obviously she is from the species of smaller-sized dragons. The dragoness looks at me smiling, "Well met, stranger. My name is Solarscale. What brings you here?"', + first_dlg_tower = 'Tell me more about this tower.', + first_dlg_tower_bye_no_time = "I'm sorry, but I don't have time to speak.", + first_dlg_tower_bye_response = [[Solarscale rises into the air and says goodbye, "So I'll continue my way. Best wishes to you."^ She flies away leaving me alone.]], + first_dlg_tower_bye_thanks = 'Thank for your help. I have to go.', + first_dlg_tower_join = 'I am going to the tower. Will you join me?', + first_dlg_tower_join_1 = "Don't you want to explore the tower?", + first_dlg_tower_join_2 = 'I would really appreciate your help.', + first_dlg_tower_join_3 = 'I thought we, dragons, should keep together.', + first_dlg_tower_join_response_2 = 'Solarscale shrugs, "I don\'t want to stay here for too long."', + first_dlg_tower_join_response_fail = 'Solarscale thoughtfully looks at me and carefully says, "I\'d rather be on my way".', + first_dlg_tower_join_response_fail_1 = 'Solarscale thoughtfully looks in the direction of the tower.', + first_dlg_tower_join_response_fail_3 = 'Solarscale thoughtfully looks at me.', + first_dlg_tower_join_response_success_1 = 'Solarscale rises into the air and responds, "Why not? I am not in a hurry."', + first_dlg_tower_join_response_success_3 = 'Solarscale rises into the air and responds, "Yes, you are right. Let\'s go!"', + first_dlg_tower_response = 'Solarscale continues, "The tower looks as if it\'s cut of a whole piece of rock. I was unable to find a single hole or joint in it. I am not sure if it\'s not just a piece of solid rock."', + first_dlg_unusual = 'Have you seen anything unusual nearby?', + first_dlg_unusual_response = 'Solarscale raises her wings and thoughtfully touches her chin, "I don\'t recall anything... Besides the tower of strange stone. I was not able to get inside, but maybe you can. Just follow this path."', + follow_refuse = 'Solarscale refuses to follow me.'; + follow_refuse_village = '"I cannot change my form, and I don\'t think locals would be happy to see me," she says and sits on the grass nearby.'; + follow_refuse_reactor = 'She flies to the control room saying, "You\'ll have to do everything yourself there. We have no protection suit for me."'; + solarscale_accept_help = 'Yes, please.', + solarscale_ally_above_crater_life = 'Catching up with me, Solarscale asks in surprise: "Where are we flying to?"', + solarscale_ally_above_village = 'I turn to Solarscale, rhythmically flapping her wings behind me. She concludes, "We, dragons, should not show ourselves to humankind in our true form. Let\'s not linger here."', + solarscale_ally_ask_tea = 'Would you mind some tea?', + solarscale_ally_ask_tea_response = 'Solarscale nods smiling: "Sure".', + solarscale_ally_dlg_about_tower_1_1 = 'I totally agree with you, this place is amazing.', + solarscale_ally_dlg_about_tower_1_2 = "Let's look around before drawing conclusions.", + solarscale_ally_dlg_about_tower_1_3 = "We should be careful, we don't know what this place is.", + solarscale_ally_dlg_about_tower_1_4 = "I don't know what to say.", + solarscale_ally_dlg_above_crater_1 = 'I would like to look around once more.', + solarscale_ally_dlg_above_crater_1_response = 'Solarscale nods in agreement: "Good, let\'s fly then!"', + solarscale_ally_dlg_above_crater_2 = 'Are you eager to get inside?', + solarscale_ally_dlg_above_crater_2_response = 'Solarscale replies: "Of course! We can\'t be sure how long the doors will be open!"', + solarscale_ally_dlg_above_crater_3 = 'Are you eager to return there?', + solarscale_ally_dlg_above_crater_3_response = 'Solarscale exclaims, "Of course! Maybe you can find the way inside or see something I\'ve missed."', + solarscale_ally_dlg_above_crater_enter = 'Solarscale looks at me in surprise, "Why don\'t we go to the tower?"', + solarscale_ally_dlg_after_tower = 'What do you plan to do next?', + solarscale_ally_dlg_after_tower_1 = 'Return home.', -- Full meaning is "I will return home" + solarscale_ally_dlg_after_tower_1_response = 'Solarscale nods: "We could meet here from time to time, if you don\'t mind?"', + solarscale_ally_dlg_after_tower_2_response = 'Solarscale replies, "You could fly with me."', + solarscale_ally_dlg_after_tower_3 = "I'll stay here.", + solarscale_ally_dlg_after_tower_3_response = 'Solarscale nods, "I can visit you from time to time then. If you don\'t mind."', + solarscale_ally_dlg_after_tower_response = 'Solarscale shrugs, "After the tower? I would like to return home. My journey has been quite long and I would like to rest. And you?"', + solarscale_ally_dlg_connection = 'I think, I have developed some connection to this tower.', + solarscale_ally_dlg_connection_1 = 'I hear its voice, it says, "Welcome home."', + solarscale_ally_dlg_connection_1_1 = "That's exactly what I feel here.", + solarscale_ally_dlg_connection_1_1_response = 'Solarscale nods, "Then we should continue."', + solarscale_ally_dlg_connection_1_2 = "It's too early to say.", + solarscale_ally_dlg_connection_1_2_response = 'Solarscale nods, "Well then, let\'s move along."', + solarscale_ally_dlg_connection_1_3 = "I don't like this.", + solarscale_ally_dlg_connection_1_3_response = 'Solarscale thoughtfully shrugs, "In any case, let\'s continue."', + solarscale_ally_dlg_connection_1_response = 'Solarscale thoughtfully scratches her chin, "And what do you think?"', + solarscale_ally_dlg_connection_2 = "I don't know yet.", + solarscale_ally_dlg_connection_2_response = 'Solarscale nods, "We can discuss this later."', + solarscale_ally_dlg_connection_response = 'Solarscale looks at me keenly, "Fascinating, and what do you feel?"', + solarscale_ally_dlg_end = '[End the dialog]', + solarscale_ally_dlg_enter_back_to_tower_1 = 'Solarscale exclaims with inspiration: "Let\'s get back to the tower!"', + solarscale_ally_dlg_enter_back_to_tower_2 = 'Solarscale carefully suggests, "Maybe it\'s time for us to return to the tower?"', + solarscale_ally_dlg_enter_back_to_tower_3 = 'Solarscale exclaims, "Can\'t wait to get to the tower!"', + solarscale_ally_dlg_know_tower = 'How did you know about the tower?', + solarscale_ally_dlg_know_tower_1 = '[Tell about the map]', + solarscale_ally_dlg_know_tower_1_response = 'Solarscale thoughtfully utters, "It is surprising that you\'ve not known about the tower." After some thinking she exclaims, "We have to explore it!"', + solarscale_ally_dlg_know_tower_2_response = 'Solarscale exclaims, "We have to explore it!"', + solarscale_ally_dlg_know_tower_response_not_visited = 'Solarscale replies, "Accidentally. The crater has caught my attention, and I decided to explore it. Of course, I decided to start from the center, where I found the tower. I could not get inside, so I decided to look around, and then I met you."', + solarscale_ally_dlg_know_tower_response_visited = 'Solarscale replies, "Accidentally. The crater has caught my attention and I decided to explore it. Of course, I decided to start from the center, where I found the tower. I could not get inside, so I decided to look around, and then I met you. I don\'t know why the door has opened when we have returned."', + solarscale_ally_dlg_level_1_1 = 'Do you have any ideas how to open the door?', + solarscale_ally_dlg_level_1_1_response = 'Solarscale thoughtfully utters, "I don\'t know yet. We need to carefully examine everything."', + solarscale_ally_dlg_level_1_2_agree_response = 'Solarscale takes the box and examines it attentively before returning it to me. Finally she says, "Four keyholes... Keys should be somewhere nearby."', + solarscale_ally_dlg_level_1_2_response = 'Solarscale flies towards me, "Can I look at the box you\'ve just picked up?"', + solarscale_ally_dlg_level_1_3_1 = 'No, these are not the keys from this door.', + solarscale_ally_dlg_level_1_3_1_or_2_response = 'Solarscale thoughtfully notes, "They are here for a reason. We should look more carefully."', + solarscale_ally_dlg_level_1_3_2 = "Let's assume they don't.", + solarscale_ally_dlg_level_1_3_3 = "I haven't checked.", + solarscale_ally_dlg_level_1_3_3_response = 'Solarscale thoughtfully responds, "It would be good to check... Although that would be too easy..."', + solarscale_ally_dlg_level_1_3_response = 'Solarscale asks, "Are you sure that none of these keys fit the door?"', + solarscale_ally_dlg_level_1_4_1_1_response = 'The dragoness stays motionless for a while, thinking, and then she starts trying the keys. "Aha!", she exclaims and inserts key after the key into the holes, and the box falls apart in her hands revealing a tiny silver key. Solarscale passes it to me saying, "Try it on the door."', + solarscale_ally_dlg_level_1_4_1_no_help_response = 'Solarscale silently returns me the items.', + solarscale_ally_dlg_level_1_4_1_response = 'Solarscale takes the items from you and places them on the table.', + solarscale_ally_dlg_level_1_4_1_response_positive = 'She thinks for some time and then exclaims, "I may have an idea. Would you let me try?"', + solarscale_ally_dlg_level_1_4_1_response_negative = 'She thinks for some time and then concludes, "I\'m sorry, but I can\'t help you with this."', + solarscale_ally_dlg_level_1_4_response = 'Solarscale flies towards me and asks: "May I take a look?"', + solarscale_ally_dlg_level_2_1 = 'Are you interested in the alchemy?', + solarscale_ally_dlg_level_2_1_1 = 'Too bad, I could use some help.', + solarscale_ally_dlg_level_2_1_1_response = 'Solarscale lowers her eyes, "I hope I\'ll be able to help with something else".', + solarscale_ally_dlg_level_2_1_response = 'Solarscale responds with regret, "I don\'t know much about it."', + solarscale_ally_dlg_level_3_1 = 'Do you have any thoughts on this riddle?', + solarscale_ally_dlg_level_3_1_1_response = 'Solarscale takes the figurines and slowly puts them into the holes one by one. A gentle click informs us that the door to the next level of the tower is unlocked.', + solarscale_ally_dlg_level_3_1_response = 'Solarscale nods, "Yes, I have an idea. Would you like me to try?"', + solarscale_ally_dlg_level_3_1_response_negative = 'Solarscale negatively shakes her head, "I have no idea."', + solarscale_ally_dlg_level_4_1_1 = '[Let Solarscale do everything]', + solarscale_ally_dlg_level_4_1_1_response = 'Solarscale lights the candles one by one. A sequence of notes rings in the darkness, and a sudden gust of wind throws open the door on the far end of the room.', + solarscale_ally_dlg_level_4_1_response = 'Solarscale thoughtfully says, "Yes, I think I can help."', + solarscale_ally_dlg_level_4_1_response_negative = 'Solarscale shakes her head negatively, "I\'m afraid, I can\'t help you."', + solarscale_ally_dlg_level_4_room_2_1 = 'Turn it on!', + solarscale_ally_dlg_level_4_room_2_1_1 = "[Approach the terminal] Great, let's have a look.", + solarscale_ally_dlg_level_4_room_2_1_2 = 'Can you fix it?', + solarscale_ally_dlg_level_4_room_2_1_2_1 = 'Yes, of course.', + solarscale_ally_dlg_level_4_room_2_1_2_1_response = 'Solarscale routinely disassembles the computer, and looking at the manual, replaces broken parts with the new ones. Having finished, she assembles it back, "Look! I even may have improved it!"', + solarscale_ally_dlg_level_4_room_2_1_2_2 = 'Thank you, but I want to try myself.', + solarscale_ally_dlg_level_4_room_2_1_2_3 = 'Where do you think they may be?', + solarscale_ally_dlg_level_4_room_2_1_2_3_response = 'Solarscale replies, "I think there was a warehouse on the floor below. We can start looking from there."', + solarscale_ally_dlg_level_4_room_2_1_2_response = 'Solarscale peeks into the box with spares and after some digging in it confirms, "I think I\'ll manage. Would you let me?"', + solarscale_ally_dlg_level_4_room_2_1_2_response_negative = 'Solarscale regretfully says, "I don\'t think I can help. I\'ve never seen computers of this type."', + solarscale_ally_dlg_level_4_room_2_1_2_response_no_parts = 'Solarscale thoughtfully utters, "Only if we find spare parts".', + solarscale_ally_dlg_level_4_room_2_1_response_fixed = 'Looking at the screen, Solarscale exclaims, "It works!"', + solarscale_ally_dlg_level_4_room_2_1_response_issue = 'Flipping through the manual, Solarscale declares, "Looks like an issue with the %broken%. Let\'s find a replacement."', + -- One of the following will be inserted into the %broken% variable above + solarscale_ally_dlg_level_4_room_2_1_response_cpu = 'processor', + solarscale_ally_dlg_level_4_room_2_1_response_keyboard = 'keyboard controller', + solarscale_ally_dlg_level_4_room_2_1_response_motherboard = 'motherboard', + solarscale_ally_dlg_level_4_room_2_1_response_network = 'network adapter', + solarscale_ally_dlg_level_4_room_2_1_response_ram = 'memory', + solarscale_ally_dlg_level_4_room_2_1_response_video = 'video adapter', + solarscale_ally_dlg_level_4_room_2_1_response_turnon = 'Solarscale turns the computer on.', + solarscale_ally_dlg_level_4_room_2_3 = 'What can we do?', + solarscale_ally_dlg_level_4_room_2_3_response = 'Solarscale shrugs, "Most likely nothing from here. Let\'s explore the other rooms."', + solarscale_ally_dlg_light = 'Do you have some light?', + solarscale_ally_dlg_light_agree = 'Yes, please.', + solarscale_ally_dlg_light_agree_response = '"Sure", Solarscale smiles and snaps her fingers. The room fills with a weak but steady light.', + solarscale_ally_dlg_light_response = 'Solarscale replies excitedly, "I have one trick in store, do you want me to try?"', + solarscale_ally_dlg_light_response_negative = 'Solarscale shakes her head negatively, "I\'m afraid, no."', + solarscale_ally_dlg_not_now = 'Not now.', + solarscale_ally_follow_life = 'Solarscale follows me.', + solarscale_ally_follows = '{Solarscale} is flapping her wings behind me.', + solarscale_ally_glade = '{Solarscale} leisurely walks around the glade, admiring the nature. From time to time she carefully takes some flowers and puts them in her bag.', + solarscale_ally_glade_answer = 'Solarscale says, "No, I\'ve never been here. But it\'s a lovely place, and I would like to see it up close."', + solarscale_ally_glade_enter = 'Noticing me, she explains, "I\'m gathering specimens for my collection." A bit later she adds, "It\'s a nice place. I like it here."', -- This is appended to `solarscale_ally_glade`, with replaced { and } characters + solarscale_ally_glade_left = 'Solarscale glances around the glade one last time and rises into the air following me.', + solarscale_ally_glade_life = 'Solarscale descends to the ground after me. The grass nearly hides her from my sight.', + solarscale_ally_glade_question = 'Do you know this place?', + solarscale_ally_glade_suggestion = 'Solarscale briefly glances over the surroundings. Her eye is caught by the glade below, "I would like to land here, if you don\'t mind," she says.', + solarscale_ally_level_3_2 = 'Solarscale complains, "It\'s so dark, I can\'t see a thing! We should bring some light."', + solarscale_ally_near_tower = 'Solarscale repeats, "Come on, while the door is open!"', + solarscale_ally_near_tower_life = 'As soon as she notices the open doorway, Solarscale rushes to it and stopping right in front of the entrance turns to me: "Hurry up before it closes again!"', + solarscale_ally_no_help = 'Thank you, I will try on my own then.', + solarscale_ally_outside = '{Solarscale} flies right next to me.', + solarscale_ally_reject_help = 'Thank you, but I will try myself.', + solarscale_ally_terminal = "Solarscale examines the terminal's keyboard.", + solarscale_ally_terminal_try = 'She asks, "Should we try to turn it on?"', + solarscale_ally_tower_first_enter = 'Solarscale looks at me with awe, "This tower is unbelievable! I\'ve never seen anything like it. What do you think?"', + solarscale_ally_tower_level_1_life = 'Flying into the hall, Solarscale rises to the ceiling and after a few circles returns to me.', + solarscale_ally_tower_level_1_room_2 = '{Solarscale} is sitting on the table looking at me.', + solarscale_ally_tower_level_1_room_2_life = 'Solarscale lands on the table, looking around.', + solarscale_ally_tower_level_2 = '{Solarscale} stays near me, looking around the room. ', + solarscale_ally_tower_level_2_life = 'Solarscale flies into the room and halts with her eyes widely open. A barely audible "Wow!" comes out of her mouth.', + solarscale_ally_tower_level_2_room_2 = '{Solarscale} keeps near me.', + solarscale_ally_tower_level_2_room_2_life = 'Solarscale flies closer to me.', + solarscale_ally_tower_level_3 = '{Solarscale} thoughtfully walks around the table.', + solarscale_ally_tower_level_3_life = 'Quickly glancing around the room, Solarscale rushes towards the table. After a few circles in the air, she lands on its edge.', + solarscale_ally_tower_level_3_room_2_dark = "I can barely discern {Solarscale's} figure in the darkness.", + solarscale_ally_tower_level_3_room_2_life = 'I hear Solarscale\'s bright voice, "It\'s so dark!"', + solarscale_ally_tower_level_3_room_2_lit = '{Solarscale} hangs between the racks, just under the ceiling.', + solarscale_ally_tower_level_4 = '{Solarscale} stands on the floor next to the table with the candles.', + solarscale_ally_tower_level_4_life = 'Entering the room, Solarscale immediately lands near the table.', + solarscale_ally_tower_level_4_room_2 = '{Solarscale} sits on the desk near the computer.', + solarscale_ally_tower_level_4_room_2_life = 'Entering the room, Solarscale halts for a moment looking around then lands on the desk near the computer.', + solarscale_dlg_enter_generic_1 = 'Solarscale looks at me, smiling.', + solarscale_dlg_enter_generic_2 = 'Solarscale looks at me questioningly.', + solarscale_dlg_enter_generic_3 = 'Solarscale quietly asks, "How can I help you?"', + solarscale_do_you_have_any_ideas = 'Do you have any ideas what we should do?', + solarscale_don_t_know = "I don't know.", + solarscale_let_me_try = 'I will try myself first.', + solarscale_let_me_try_2 = "Well then, I'll try myself.", + solarscale_nods_in_agreement = 'Solarscale nods in agreement.', + solarscale_nods_silently = 'Solarscale nods silently.', + solarscale_pass_box = 'Pass the box to Solarscale', + solarscale_pass_items_level_1 = 'Pass the box, keys, and the note to Solarscale', + solarscale_used = 'It would be better to talk instead.', + tea_end = 'We end our tea party in thoughtful silence. Having ended, I put the cups and the tea to their places, and we return to exploring the tower.', + tea_q1_darkness = 'The darkness.', -- Who built the tower + tea_q1_dragons = 'Dragons.', -- Who built the tower + tea_q1_i = 'Me.', -- Who built the tower + tea_q1_response_1 = 'Solarscale shrugs, "But why is it here?"', + tea_q1_response_1_tower_accepts = 'Solarscale shrugs, "Nevertheless, it accepts us... But why is it here?"', + tea_q1_response_dragons = 'Solarscale thoughtfully utters, "Most probably. But I don\'t know any except you". A bit later she asks, "But why is it here?"', + tea_q1_response_i = 'Solarscale looks at me in wonder and asks, "What for?"', + tea_q2_itself = 'For nothing. It just is.', -- For whom the tower was built + tea_q2_me = 'For me.', -- For whom the tower was built + tea_q2_us = 'For us.', -- For whom the tower was built + tea_q2_other_dragons_1 = 'After a bit of silence she asks, "So you think there are more dragons in this world?"', + tea_q2_other_dragons_2 = 'After a bit of silence she asks, "Do you think there are other dragons in this world?"', + tea_q2_r1 = 'Solarscale shrugs.', + tea_q2_r2 = 'Solarscale shrugs, "Seemingly so."', + tea_q2_r3 = 'Solarscale thoughtfully looks at the ceiling.', + tea_q3_don_t_know_final = "I honestly don't know.", + tea_q3_alone = 'No, we are the only ones.', -- Are there other dragons in this world? + tea_q3_exist = 'They definitely are.', -- Are there other dragons in this world? + tea_q3_know_nothing = 'Even if they are, I know nothing about them.', -- Are there other dragons in this world? + tea_q3_thought_alone = 'Until I met you, I thought I was alone.', -- Are there other dragons in this world? + tea_q3_r1 = 'Solarscale thoughtfully looks away: "It\'s most likely we are alone."', + tea_q3_r2 = 'Solarscale shrugs, "Probably. But I\'ve not seen any."', -- Speaking about other dragons + tea_q3_r_don_t_know = 'Solarscale shrugs and swallows her tea. I do the same and return the cups and the tea to their places. Time to continue exploring the tower.', + tea_q3_r_try_again = 'Solarscale thoughtfully looks at me and asks, "Don\'t you have an assumption?"', + tea_start = 'I pour the tea, take my cup and with a gesture invite Solarscale to join. She makes a sip and asks, "Who do you think built this tower?"', + }, + tower_locale = { + alchemy_book_dlg_disp = "The Alchemist's Book", + alchemy_book_dlg_enter = 'There is a book of alchemical recipes in front of me. Some of them draw my attention.', + alchemy_book_dlg_leave = '[Step away from the book]', + alchemy_book_dlg_light = 'Light', + alchemy_book_dlg_light_response = [[Ingredients: a candle, some glass, %catalyst%. ^The potion vaporises quickly. The effect lasts from one to three hours.]], -- disp2(nominative, lowercase) is used for catalyst + alchemy_book_dlg_open = 'Opening', + alchemy_book_dlg_open_response = [[Ingredients: a key, a lock, %catalyst%. ^Pour into a lock you need to open.]], -- disp2(nominative, lowercase) is used for catalyst + alchemy_book_dlg_rich = 'Enrichment', + alchemy_book_dlg_rich_response = [[Ingredients: some precious metal, a precious gem, %catalyst%. ^Drink this potion to enrich yourself. Radiation warning!]], -- disp2(nominative, lowercase) is used for catalyst + blue_catalyst_disp = 'Blue Catalyst', + blue_catalyst_disp2 = 'the blue catalyst', + blue_catalyst_disp3 = 'the blue catalyst', + blue_catalyst_dsc = 'There is {a vial with blue liquid} on one of the shelves.', + blue_catalyst_inv = 'A vial of blue liquid marked as "Catalyst".', + candle_disp = 'Candle', + candle_disp2 = 'the candle', + candle_disp3 = 'the candle', + candle_inv = 'A small candle of dull white wax. There is nothing unusual in it.', + catalyst_tak = 'I take the vial. There is a label saying "Catalyst" on it.', + cauldron_inside_disp = 'Cauldron', + cauldron_inside_enter_many_items = 'There are several items in the cauldron:', + cauldron_inside_enter_potion = 'There is %potion% ready in the cauldron.', -- %potion% is in nominative, lowercase + cauldron_inside_enter_single_item = 'There is %item% in the cauldron.', -- %item% is in nominative, lowercase + cauldron_inside_enter_water = 'The cauldron is full of boiling water.', + cauldron_inside_leave = '[Step away from the cauldron]', + cauldron_inside_take_items = '[Take everything from the cauldron]', + cauldron_inside_take_potion = '[Take the potion]', + cauldron_inside_take_potion_response = 'I fill a vial with the potion.', + cups_disp = 'Cups', + cups_dsc = 'There are two miniature porcelain {cups} decorated by silvery flowers on the table.', + cups_inv_act = 'Two miniature porcelain cups decorated by silvery flowers.', + cups_kettle = 'I want to have tea, not water.', + cups_no_need = 'We have already had tea.', + cups_no_tea = 'I need to steep the tea first.', + cups_should_be_placed = "It's better to put the cups on some surface.", + emerald_disp = 'Emerald', + emerald_disp2 = 'the emerald', + emerald_disp3 = 'the emerald', + emerald_inv = 'A small finely faceted emerald. It is very beautiful.', + figure_common_inv = 'It is highly detailed and placed on a hexagonal base of the same metal.'; + figure_knight_disp = 'Knight Figurine', + figure_knight_disp2 = 'the knight figurine', + figure_knight_disp3 = 'the knight figurine', + figure_knight_inv = 'A figurine of a knight in full armor, leaning on his giant two-handed sword. It is made of unknown silvery metal.', + figure_lion_disp = 'Lion Figurine', + figure_lion_disp2 = 'the lion figurine', + figure_lion_disp3 = 'the lion figurine', + figure_lion_inv = 'A figurine of a lion, proudly watching over his lands, is made of unknown silvery metal.', + figure_tiger_disp = 'Tiger Figurine', + figure_tiger_disp2 = 'the tiger figurine', + figure_tiger_disp3 = 'the tiger figurine', + figure_tiger_inv = 'A figurine of a tiger standing on his rear feet is made of unknown silvery metal.', + figure_tower_disp = 'Tower Figurine', + figure_tower_disp2 = 'the tower figurine', + figure_tower_disp3 = 'the tower figurine', + figure_tower_inv = "A figurine of a high hexagonal tower -- a miniature copy of the one I'm in currently.", + figure_wolf_disp = 'Wolf Figurine', + figure_wolf_disp2 = 'the wolf figurine', + figure_wolf_disp3 = 'the wolf figurine', + figure_wolf_inv = 'A figurine of a wolf howling at the moon is made of unknown silvery metal.', + flask_disp = 'Flask', + flask_disp2 = 'the flask', + flask_disp3 = 'the flask', + flask_inv = 'A small glass flask. It is empty.', + green_catalyst_disp = 'Green Catalyst', + green_catalyst_disp2 = 'the green catalyst', + green_catalyst_disp3 = 'the green catalyst', + green_catalyst_dsc = 'There is {a vial with green liquid} in one of the cabinets.', + green_catalyst_inv = 'A vial of green liquid marked as "Catalyst".', + inside_box_decor = "A small wooden box, decorated by thin silver ornaments. On one of the boxes' faces I see a counter, framed by silver, with numbers: %numbers%. Under the counter there are four keyholes.", + inside_box_keyhole_1_empty = '{The first keyhole} is empty.', + inside_box_keyhole_1_key = 'Into the first keyhole {%key%} is inserted.', -- Ensure that {%key%} is not the first word in the sentence, as it will be lower-case, it will also be in nominative case + inside_box_keyhole_2_empty = '{The second keyhole} is empty.', + inside_box_keyhole_2_key = 'Into the second keyhole {%key%} is inserted.', -- Ensure that {%key%} is not the first word in the sentence, as it will be lower-case, it will also be in nominative case + inside_box_keyhole_3_empty = '{The third keyhole} is empty.', + inside_box_keyhole_3_key = 'Into the third keyhole {%key%} is inserted.', -- Ensure that {%key%} is not the first word in the sentence, as it will be lower-case, it will also be in nominative case + inside_box_keyhole_4_empty = '{The fourth keyhole} is empty.', + inside_box_keyhole_4_key = 'Into the fourth keyhole {%key%} is inserted.', -- Ensure that {%key%} is not the first word in the sentence, as it will be lower-case, it will also be in nominative case + inside_box_keyhole_act_empty = 'A tiny keyhole.', + inside_box_keyhole_act_key = 'I remove %key% from the keyhole.', + inside_box_keyhole_used_has_key = 'There is already a key in the hole.', + inside_box_keyhole_used_insert_key = 'I insert %key% into the keyhole and turn it. The number on the counter changes.', + inside_box_keyhole_used_open = 'Something clicks inside the box and it opens. Inside you find a small silver key.', + kettle_boil_empty = "There's no point in boil an empty kettle.", + kettle_disp = 'Kettle', + kettle_disp2 = 'the kettle', + kettle_disp3 = 'the kettle', + kettle_disp_hot_water = 'Kettle with Hot Water', + kettle_disp_water = 'Kettle with Water', + kettle_dsc = 'There is {a kettle} on the table top.', + kettle_inv = 'A usual metal kettle.'; + kettle_inv_empty = 'It is empty.', + kettle_inv_hot_water = 'It is full of boiling water.', + kettle_inv_water = 'It is full of cold water.', + kettle_tak = 'I take the kettle.', + kettle_tak_no = 'I have no use for this.', + kitchen_key_disp = 'Iron Key', + kitchen_key_disp2 = 'the iron key', + kitchen_key_disp3 = 'the iron key', + kitchen_key_inv = 'A small iron key. Its head is decorated with a carved pattern.', + part_box_disp = 'Box of Parts', + part_box_disp2 = 'the box of parts', + part_box_disp3 = 'the box of parts', + part_box_dsc = 'On one of the racks I see {a box} with spare parts for the computer.', + part_box_inside_dsc = 'A large box inside of which I see the following items:', + part_box_tak = "I quickly look through the parts. Not a single chip has a familiar marking. I can only guess boards' purpose by sockets on them. I take the box.", + part_box_used = 'I put the item into the box.', + password_note_disp = 'Note', + password_note_disp2 = 'the note', + password_note_disp3 = 'the note', + password_note_inv = 'The note only says "%password%". Once again I recognise my own handwriting!', + potion_enrichment_disp = 'Potion of Enrichment', + potion_enrichment_disp2 = 'the potion of enrichment', + potion_enrichment_disp3 = 'the potion of enrichment', + potion_enrichment_inv = 'A potion of enrichment made by me shines like real gold. When I shake the vial, I can hear ringing of coins inside.', + potion_light_disp = 'Potion of Light', + potion_light_disp2 = 'the potion of light', + potion_light_disp3 = 'the potion of light', + potion_light_inv = 'A potion of light made by me is completely transparent and smells like air after the storm.', + potion_light_inv_used = 'I open a flask with the potion of light and splash the liquid into the air. Almost instantaneously it turns into a luminous vapor filling the air.', + potion_open_disp = 'Potion of Opening', + potion_open_disp2 = 'the potion of opening', + potion_open_disp3 = 'the potion of opening', + potion_open_inv = 'A potion of opening made by me. It smells of rusty metal and has an unpleasant reddish-grey tint. The vial is hot to the touch.', + protection_suit_disp = 'Anti-Radiation Suit', + protection_suit_dsc = 'There is a silvery {anti-radiation suit} inside the locker.', + protection_suit_inv_not_here = 'I will not take the suit off here. It is not safe.', + protection_suit_inv_remove = 'I take the suit off.', + protection_suit_tak = 'I put the suit on.', + purple_catalyst_disp = 'Purple Catalyst', + purple_catalyst_disp2 = 'the purple catalyst', + purple_catalyst_disp3 = 'the purple catalyst', + purple_catalyst_dsc = 'There is {a vial with purple liquid} on one of the shelves.', + purple_catalyst_inv = 'A vial of purple liquid marked as "Catalyst".', + reactor_control_panel_diagnostic = '[Diagnostics]', + reactor_control_panel_diagnostic_resp_1 = 'I press the button and after some time the diagnostics results are shown on the screen:', + reactor_control_panel_diagnostic_resp_2 = 'Reactor temperature normal.', + reactor_control_panel_diagnostic_resp_3 = 'Automated control system normal.', + reactor_control_panel_diagnostic_resp_4 = 'Manual control system normal.', + reactor_control_panel_diagnostic_resp_performance = 'Performance:', + reactor_control_panel_diagnostic_resp_rods_bad = 'Fuel rods replacement needed. Power saving mode enabled.', + reactor_control_panel_diagnostic_resp_rods_ok = 'Fuel rods normal.', + reactor_control_panel_diagnostic_resp_rods_up = 'Fuel rods raised. Diagnostics impossible. Power saving mode enabled.', + reactor_control_panel_disp = 'The Reactor Control Panel', + reactor_control_panel_enter = 'The reactor control panel is right in front of me. On a small alpha-numeric display a message is displayed: "Enter the command".', + reactor_control_panel_leave = '[Step away from the control panel]', + reactor_control_panel_lower_rods = '[Submerge the fuel rods]', + reactor_control_panel_raise_rods = '[Extract the fuel rods]', + reactor_control_panel_rods_response = 'From the reactor chamber I hear a hum muted by the thick walls.', + red_catalyst_disp = 'Red Catalyst', + red_catalyst_disp2 = 'the red catalyst', + red_catalyst_disp3 = 'the red catalyst', + red_catalyst_dsc = 'There is {a vial with red liquid} on one of the tables.', + red_catalyst_inv = 'A vial of red liquid marked as "Catalyst".', + service_manual_disp = 'Service and Repair', + service_manual_dsc = [[Usually maintenance is not needed, although you may need to upgrade some of the components of the terminal.^ + Important: Unplug the terminal before performing any operations!^ + + Motherboard replacement: ^ + -- You can use any DTMB1 format motherboard^ + -- Before replacing the motherboard, disconnect everything from it^ + -- Remove all screws holding the motherboard (see attachment 6)^ + -- Remove the motherboard^ + -- Install the new motherboard in place of the old one^ + -- Fasten the screws to fix the motherboard inside the case (see attachment 6)^ + -- Install compatible CPU, RAM, keyboard controller, video and network adapters^ + + CPU replacement:^ + -- Remove the old CPU^ + -- Install the new CPU^ + Important: Current DTMB1 motherboards are available with CAX, CVX and CRX sockets. Backward compatibility is maintained, so:^ + -- CAX CPU can be installed on motherboards with CAX, CVX and CRX sockets^ + -- CVX CPU can be installed on motherboards with CVX and CRX sockets^ + -- CRX CPU can be installed on motherboards with CRX sockets^ + + RAM replacement:^ + -- Remove the old RAM module^ + -- Install the new RAM module^ + Important: Current DTMB1 motherboards are available with RKT, RST and RDT slots. Backward compatibility is maintained, so:^ + -- RKT modules can be installed on motherboards with RKT, RST and RDT slots^ + -- RST modules can be installed on motherboards with RST and RDT slots^ + -- RDT modules can be installed on motherboards with RDT slots^ + + Expansion boards replacement: + -- Remove old device^ + -- Install new device^ + Current DTMB1 motherboards are available with ISB slots, you can only use ISB compatible devices with these motherboards.^ + + Compatible device marking:^ + 1. Motherboards^ + DTMB1 motherboards have the marking --ISB. Examples: + CAX-RKT-I2SB -- Motherboard for CAX CPU, supporting RKT RAM and having two slots for expansion devices.^ + 2. CPUs^ + CPUs usually have the marking CPU--, where X -- letter denoting CPU generation. CPU generation does not affect motherboard compatibility. + Example: MCPU50-CVX-5MHz -- M generation CPU with 5MHz frequency and CVX socket.^ + 3. RAM^ + RAM is usually marked -M-. Example: RST-M8-8MB -- 8 Megabytes RST RAM module.^ + 4. Video-adapters^ + Currently there are two types of video-adapters for TETS-1 terminals: the TVA series adapters only support textual output, and the GVA adapters also support graphical output.^ + 5. Network adapters^ + Network adapters for TETS-1 terminals have the marking FNA--.^ + 5. Keyboard controllers^ + Keyboard controllers for TETS-1 terminals have the marking KBC-. + ]], + silver_fork_disp = 'Silver Fork', + silver_fork_disp2 = 'the silver fork', + silver_fork_disp3 = 'the silver fork', + silver_fork_dsc = 'On one of the tables I find {a silver fork} left by someone.', + silver_fork_inv = 'An elegant silver fork. It must be expensive.', + silver_fork_tak = 'I wonder, why it was not put in one of the cabinets. I take the fork.', + system_unit_check_1_long_1_short_1_long = 'I hear a sequence of sound signals: one long, one short, and one long.', + system_unit_check_1_long_2_short = 'I hear a sequence of sound signals: one long and two short.', + system_unit_check_1_short_2_long = 'I hear a sequence of sound signals: one short and two long.', + system_unit_check_3_long = 'I hear a sequence of sound signals: three long.', + system_unit_check_fail = 'The cooler in the power supply starts to hum, but the screen does not light up.', + system_unit_check_network_fail = 'At first computer seems to start successfully, but then it shows a message that it has no boot device.', + system_unit_check_no_sound = "I don't hear any sound signals.", + system_unit_check_turn_on = 'I turn on the computer.', + system_unit_decor = 'I peek inside the system unit and look at the installed components. Quite easily I find the location of RAM, CPU, and expansion cards despite never seeing the same chip markings and slot types anywhere else.', + system_unit_disp = 'The System Unit', + teabox_disp = 'Box with Tea', + teabox_inv = 'A metal box filled with fragrant leaves of black tea.', + teapot_disp = 'Teapot', + teapot_inv_empty = 'A snow-white porcelain teapot, decorated with an ornament of silvery flowers.', + teapot_inv_leaves = 'A snow-white porcelain teapot, decorated with an ornament of silvery flowers. There are some tea leaves inside.', + teapot_inv_tea = "A snow-white porcelain teapot, decorated with an ornament of silvery flowers. It's full of fresh tea.", + teapot_used_already = 'The teapot is already full.', + teapot_used_already_tea = 'There is enough leaves in the teapot already.', + teapot_used_cold_water = "I can't make tea with cold water.", + teapot_used_empty_kettle = 'What do I want to pour from an empty kettle?', + teapot_used_filled = 'I pour water in the teapot. The tea is ready!', + teapot_used_no_tea = 'I need to put some tea leaves inside first.', + teapot_used_tea_added = 'I put some leaves in the teapot', + terminal_manual_disp = 'TETS-1 User Manual', + terminal_manual_dsc = [[Table of contents:^ + 1. Package Contents^ + 2. Connection^ + 3. Usage^ + 4. {@walk service_manual|Service and Repair}^ + 5. {@walk troubleshooting_manual|Troubleshooting}^ + ]], + tool_box_disp = 'Screwdriver Set', + tool_box_disp2 = 'the screwdriver set', + tool_box_disp3 = 'the screwdriver set', + tool_box_dsc = 'On one of the shelves I see a box with {a set of screwdrivers}.', + tool_box_inv = 'A set of screwdrivers for electronics. There is no label of any brand anywhere on the box. Screwdrivers are nevertheless of a very high quality and in perfect condition.', + tower_2_door_act_closed = 'The door is made of the same material as the walls. It is locked, but I notice a small keyhole framed with silver.', + tower_2_door_act_open = 'The door is made of the same material as walls. It is open now, I can see a staircase of the same black stone behind it.', + tower_2_door_dsc_closed = 'The massive {door} blocks the passage to the rest of the tower.', + tower_2_door_dsc_open = 'The massive {door} is open. Behind it I can see {#stairwell|a staircase} leading to the next floor of the tower.', + tower_2_door_used_potion = 'I pour the potion into the lock and it is momentarily eaten by rust. The way is clear.', + tower_accept_1_walls = 'Cold and lifeless walls feel foreign to this world. I unwillingly shudder from a single touch of this smooth glass-like surface.', + tower_accept_2_walls = 'Walls are made of unfamiliar black stone. There are no traces of time on them -- not a single scratch nor chip. The smooth and cold surface feels like glass to the touch.', + tower_accept_3_walls = 'The strong black walls feel indestructible. Even time itself has no power over them.', + tower_blue_key_disp = 'Blue Key', + tower_blue_key_disp2 = 'the blue key', + tower_blue_key_disp3 = 'the blue key', + tower_blue_key_inv = 'A small key of bluish metal.', + tower_candelabra_dsc = 'An elegant chandelier with seven candles.', + tower_candelabra_enter = 'As my glance falls upon the chandelier, a sequence of the sounds plays in the darkness:', + tower_candle_1 = 'Light the first candle', + tower_candle_2 = 'Light the second candle', + tower_candle_3 = 'Light the third candle', + tower_candle_4 = 'Light the fourth candle', + tower_candle_5 = 'Light the fifth candle', + tower_candle_6 = 'Light the sixth candle', + tower_candle_7 = 'Light the seventh candle', + tower_gold_key_disp = 'Golden Key', + tower_gold_key_disp2 = 'the golden key', + tower_gold_key_disp3 = 'the golden key', + tower_gold_key_inv = 'A small key of golden metal.', + tower_green_key_disp = 'Green Key', + tower_green_key_disp2 = 'the green key', + tower_green_key_disp3 = 'the green key', + tower_green_key_inv = 'A small key of greenish metal.', + tower_hint_1_disp = 'Piece of Paper', + tower_hint_1_inv = "A small piece of paper on which a number %target% is written. Surprisingly, it's made with my own handwriting!", + tower_level_1_box_disp = 'Box', + tower_level_1_box_dsc = 'There is {a box} decorated with silver on one of the tables.', + tower_level_1_box_inv = 'I am already looking at the box.', + tower_level_1_box_tak = 'I take the box. I find a small piece of paper under it, so I also take it.', + tower_level_1_candelabra = 'The elegant silver chandeliers are totally indistinguishable. There are three candles on each of them emitting weak flickering light, totally not enough to illuminate the hall.', + tower_candelabra_candle_missing = 'One of the candles is missing.', + tower_candelabra_candle_taken = 'After some thinking, I take one of the candles.', + tower_level_1_candelabra_keys = 'I notice a key ring near one of the chandeliers.', + tower_level_1_ceiling = "The black arched ceiling is covered by darkness. It's about five meters above my head -- quite high for a human, but not enough for my true form.", + tower_level_1_chairs = 'Antique chairs with carved backrests look massive and elegant at the same time.', + tower_level_1_decor = 'The tower meets me with oppressing darkness and cold. The black {tower_walls|walls} and {#ceiling|the ceiling} of the hall are shrouded in shadows. There are four huge {#tables|tables} covered by white tablecloths in the hall. There are three gorgeous {#candelabra|chandeliers} on each. Massive wooden {#chairs|chairs} are placed around the tables.', + tower_level_1_disp = 'Tower, the First Floor', + tower_level_1_door_act_closed = 'The door is locked. I see a small keyhole, framed by silver.', + tower_level_1_door_act_open = 'The door is open. Behind it I see a staircase of the same material as the tower walls.', + tower_level_1_door_closed = 'A massive {door} of the same material as walls is locked, preventing my path to the rest of the tower.', + tower_level_1_door_open = 'A massive {door} of the same material as the walls is open. Behind it I can see {#stairwell|the stairs} to the next floor of the tower.', + tower_level_1_door_use_correct_key = 'I put the key into the keyhole. The lock works perfectly and the key turns easily. The door opens effortlessly, granting me the access to the next floor.', + tower_level_1_keys = 'There is {a key ring} near one of the chandeliers.', + tower_level_1_keys_take = 'I take the keys.', + tower_level_1_kitchen_door = 'There is another {door} in one of the walls.', + tower_level_1_kitchen_door_act_closed = 'An unremarkable wooden door. It is locked. I do not see a way of opening it.', + tower_level_1_kitchen_door_act_open = 'The door is slightly ajar.', + tower_level_1_kitchen_door_used_key = 'There is no keyhole.', + tower_level_1_kitchen_door_used_potion = 'There is no lock to pour a potion on it.', + tower_level_1_room_2_cabinets1_act_tea_and_teapot = 'I take the box of tea from the cabinet. I also find a small porcelain teapot. I take it.', + tower_level_1_room_2_cabinets1_act_tea_ask = 'In one of the cabinets I find a box of tea. I wonder if Solarscale minds a small tea party.', + tower_level_1_room_2_cabinets2_act_cups = 'In one of the cabinets I find two small porcelain cups. I take them.', + tower_level_1_room_2_cabinets2_act_note = 'In one of the cabinets I find a note left by someone. I take it.', + tower_level_1_room_2_cabinets_act_empty = 'There is nothing but kitchenware and cutlery in the cabinets.', + tower_level_1_room_2_decor = 'Along the perimeter of this spacious room, a narrow {#tabletop|table top} of black stone is placed. There are numerous {#cabinets1|cabinets} underneath it. Above the table top {#cabinets2|more cabinets} hang. An ancient {#fridge|refrigerator} stands in the corner. In the corner opposite to it an electric {#stove|stove} stands. There is {#kitchen_sink|a kitchen sink} near the stove. The room is filled with silent and comfy darkness, like the rest of the tower.', + tower_level_1_room_2_disp = 'Tower, the Kitchen', + tower_level_1_room_2_door_act_locked = 'The door is locked. A carved ornament decorates the iron pad of the lock.', + tower_level_1_room_2_door_act_open = "Behind the door I see the tower's dining hall.", + tower_level_1_room_2_door_dsc = 'There is a small wooden {door} in one of the walls.', + tower_level_1_room_2_door_used = 'I open the door with the key.', + tower_level_1_room_2_fridge = "Refrigerators of this type were common in the 60s. But this one looks as if it's freshly manufactured. Peeking inside I see only empty shelves.", + tower_level_1_room_2_hook_act_empty = 'There is nothing on the hook.', + tower_level_1_room_2_hook_act_key = 'I take the key.', + tower_level_1_room_2_hook_dsc_empty = 'There is a small copper {hook} near the door.', + tower_level_1_room_2_hook_dsc_key = 'An {iron key} is hanging on a small copper hook near the door.', + tower_level_1_room_2_kitchen_sink = 'The polished surface of the stone sink, cut in the table top, shines in the light of electric lamps.', + tower_level_1_room_2_kitchen_sink_used_full = 'The kettle is full already.', + tower_level_1_room_2_kitchen_sink_used_water = 'I fill the kettle with water.', + tower_level_1_room_2_put_cups = 'I put the cups on the table top.', + tower_level_1_room_2_stove_act = 'An electric stove with four hotplates and an electric oven. Its electronic controls look too modern for this place.', + tower_level_1_room_2_stove_used_hot = 'The water is already hot.', + tower_level_1_room_2_stove_used_power = 'This will not work without electricity.', + tower_level_1_room_2_stove_used_teapot = 'I put the kettle on the hotplate and in a couple of minutes the water starts boiling.', + tower_level_1_room_2_tabletop = 'The table top is made of the same material as walls. Durability of this cold smooth stone raises no doubts.', + tower_level_1_stairwell = 'A wide and shallow staircase of smooth black stone leading to the next floor of the tower.', + tower_level_1_tables = 'The massive tables of black wood are covered by white tablecloths, embroidered with silver. There is no dust on the tables, as if they were served just before I arrived. Each of the tables could fit many dozens of people.', + tower_level_1_tables_box = 'There is a box on one of the tables.', + tower_level_2_airlock_ceiling = "The lead ceiling is about two meters high. The metal significantly reduces the radiation level inside, but it does not block it entirely. I'd rather not stay here for long.", + tower_level_2_airlock_decor = "The lead {#walls|walls} of this room are designed to protect anyone inside from the strong radiation. There is a single bleak red {#lamp|lamp} on {#ceiling|the ceiling}. I'd rather not stay here for long.", + tower_level_2_airlock_disp = 'Tower, the Airlock', + tower_level_2_airlock_lamp = 'The emergency light is the same as in the control room.', + tower_level_2_airlock_locker_act = 'According to the label on the locker it is made for storing an anti-radiation suit.', + tower_level_2_airlock_locker_dsc = 'There is a small lead {locker} near one of the walls.', + tower_level_2_remove_suit = 'I take off the anti-radiation suit and leave it in the locker.', + tower_level_2_airlock_walls = "The metal used to make these walls significantly reduces the radiation level inside, but it does not block it entirely. I'd rather not stay here for long.", + tower_level_2_book = 'There is an open {book} on one of the tables.', + tower_level_2_cabinet_vials = 'In one of the cabinets I find two vials with some colored liquids.', + tower_level_2_cabinets = 'Most of the cabinets contain nothing of value but various alchemy apparatus.', + tower_level_2_cannot_be_thrown = 'This is needed elsewhere.', + tower_level_2_cauldron_used = 'I put %item% into the cauldron.', + tower_level_2_decor = "There is an alchemist's laboratory on the second level of the tower. {#tables|Tables} and {#racks|racks} are positioned along {tower_walls|the walls}. There are {#cabinets|cabinets} hanging above some of the tables. In the center of the hall a huge {tower_cauldron|cauldron} is placed with {#fire|the fire} underneath it.", + tower_level_2_disp = 'Tower, the Second Floor', + tower_level_2_fire = 'The bright fire seemingly does not emit any heat. Its light barely illuminates the darkness filling the hall.', + tower_level_2_key_disp = 'Silver Key', + tower_level_2_key_dsc = 'A tiny silver key with an intricately carved head.', + tower_level_2_potion_in_the_cauldron = 'The potion in the cauldron is already done.', + tower_level_2_potion_ready = 'The potion is ready!', + tower_level_2_rack_vials = 'On one of the shelves I find two vials with some colored liquids.', + tower_level_2_racks = 'The strong wooden racks are filled with vials, bulbs and flasks. Most of them are empty.', + tower_level_2_reactor_disp = 'Tower, the Reactor', + tower_level_2_reactor_enter_alone = 'The air smells of ozone, and I feel a slight metallic taste on my tongue.', + tower_level_2_reactor_enter_solarscale = 'Solarscale blocks my path, "I won\'t let you go there without a protection suit. It\'s dangerous", she states.', + tower_level_2_reactor_rods_act_lowered = 'The rods need to be raised so I can examine them.', + tower_level_2_reactor_rods_act_raised = 'The tall metal rods. The fuel elements for the reactor must be inside of them. I cannot evaluate their state at a glance.', + tower_level_2_reactor_rods_dsc_lowered = '{The fuel rods} of the reactor are submerged.', + tower_level_2_reactor_rods_dsc_raised = '{The fuel rods} of the reactor are raised and I can access them.', + tower_level_2_reactor_rods_used = 'I pour the potion on the fuel rod. I see no apparent changes.', + tower_level_2_room_2_ceiling = "The ceiling is unusually low here. I can even touch it with my hand. It's as cold and smooth as the walls to the touch.", + tower_level_2_room_2_control_panel_dsc = 'There is {a control panel} near the door.', + tower_level_2_room_2_decor = 'An extremely tiny room. The stone {tower_walls|walls}, {#floor|the floor} and {#ceiling|the ceiling} are the same as in other rooms.', + tower_level_2_room_2_decor_nopower = '{#emergency_lamps|The emergency lamps} on the ceiling emit bleak red light.', + tower_level_2_room_2_decor_power = '{#lamps|The lamps} on the ceiling emit the bright white light.', + tower_level_2_room_2_disp = 'Tower, the Control Room', + tower_level_2_room_2_emergency_lamps = 'In the weak light of emergency lights the tower seems even more mysterious and unreal.', + tower_level_2_room_2_floor = 'Smooth stone plates of the floor are in ideal condition, as everywhere in this tower.', + tower_level_2_room_2_lamps = 'Several fluorescent lights are placed on the ceiling.', + tower_level_2_room_2_next_door_act_closed = 'I slide the latch and open the door.', + tower_level_2_room_2_next_door_act_open = "Behind the door I can see the alchemist's laboratory.", + tower_level_2_room_2_next_door_dsc_closed = 'There is a small stone {door} locked on a latch in the wall opposite the control panel.', + tower_level_2_room_2_next_door_dsc_open = 'There is a small stone {door} in the wall opposite the control panel.', + tower_level_2_room_2_reactor_door_act = 'A very thick and heavy door. It should not be kept open longer than necessary.', + tower_level_2_room_2_reactor_door_dsc = 'In one of the walls of the room there is a rectangular {door} with the radiation hazard sign on it.', + tower_level_2_table_vials = 'On one of the tables I find two vials with some colored liquids.', + tower_level_2_tables = 'Heavy tabletops of black stone rest upon strong and stable legs. The tables are filled will all kinds of alchemical apparatus, vials, and flasks.', + tower_level_3_bookshelves = 'I briefly look through the books. Many of them are very old, some are written in languages unfamiliar to me. There are both works of fiction and science or philosophy of various ages.', + tower_level_3_decor = 'The third floor of the tower looks like some study. The room is filled with comfortable twilight. {#bookshelves|Bookshelves} are positioned along one of {tower_walls|the walls}, and {#fireplace|a fireplace} is mounted into the opposite one. There is an old {#rockchair|rocking chair} slightly away from it. A massive wooden {tower_level_3_table|table} is placed in the center of the room.', + tower_level_3_disp = 'Tower, the Third Floor', + tower_level_3_door_act_locked = 'The door is locked. I see no openings in it.', + tower_level_3_door_act_open = 'The door is open. Behind it I see {#stairwell|a staircase} leading to the next floor of the tower, made of the same black rock as the tower walls.', + tower_level_3_door_dsc_locked = 'A massive locked {door} of the same material as the walls.', + tower_level_3_door_dsc_open = 'A massive open {door} of the same material as the walls. Behind it I see {#stairwell|a staircase} leading to the next floor of the tower.', + tower_level_3_fireplace = 'Despite blazing fire, the room is dark and cool. The crackling of cinders and flickering shadows on the walls are relaxing and calming.', + tower_level_3_hidden_door_act = "I wouldn't have noticed this door without knowing about it. ", + tower_level_3_hidden_door_dsc = 'A small {door} is hidden behind one of the bookshelves.', + tower_level_3_hint = [[There is the following text on the table:^ +Five they are, each of it's own color: white, crimson, azure, green and black.^ +Four of them have their time: midday, midnight, dawn and sunset, the fifth is eternal.^ +Four of them have their season: autumn, summer, spring and winter, the fifth is eternal.^ +Four of them have their moon: growing, full, waning and new, the fifth is eternal.^ +Four are turned to the fifth, standing in the center.^ +North-west belongs to the full moon. The green lands of the new moon are opposite to it.^ +The tiger prowls his lands at midday.^ +The winter is not in the south nor in the east. And the spring is not in the west.^ +The tower is eternal, but color it has.^ +The wolf at midnight walks his domain, the lord of summer lives opposite him.^ +The moon wanes in the north, and the white sunset belongs to the south.^ +The black is in the center, surrounded by the dawn, the sunset, midnight and midday.^ +The crimson lion denotes the dawn in it's glory.]], + tower_level_3_rockchair = 'An antique oaken rocking armchair upholstered with soft tapestry. The armchair is in pristine condition. There is not a single scratch or wear on its surface, even the upholstery looks like new.', + tower_level_3_room_2_ceiling = 'A multitude of lamps are placed on the smooth stone ceiling, but they are not lit now.', + tower_level_3_room_2_ceiling_power = 'A multitude of lamps are placed on the smooth stone ceiling. They emit the bright light allowing me to see the surroundings.', + tower_level_3_room_2_darkness = "It's too dark here to see anything.", + tower_level_3_room_2_darkness_used_candle = 'The candle barely lifts the darkness. I need something stronger to be able to navigate this place.', + tower_level_3_room_2_decor_dark = 'The room is a colossal warehouse. Through {#darkness|the darkness} I can discern only a few {#shelves|racks} near me. There is {#ladder|a ladder} leading up near me.', + tower_level_3_room_2_decor_lit = 'The room is a colossal warehouse. There is {#ladder|a ladder} leading up near me. There is also a similar {#ladder_down|ladder}, leading downwards a bit further away. {#floor|The floor} here is the same as in the other rooms of the tower. {#walls|The walls} are mostly unseen from here, hidden by a multitude of {#shelves|racks}. {#ceiling|The ceiling} of the room is about five meters high.', + tower_level_3_room_2_disp = 'Tower, the Warehouse', + tower_level_3_room_2_door_act_open = 'I open the latch. The way is clear. The door leads to the study on the third floor of the tower.', + tower_level_3_room_2_door_act_opened = 'Behind the ajar door I see the study.', + tower_level_3_room_2_door_dsc_closed = 'There is a small {door} in one of the walls locked with a latch.', + tower_level_3_room_2_door_dsc_opened = 'There is a small {door} in one of the walls.', + tower_level_3_room_2_floor = "Smooth stone plates carved with astonishing accuracy look as if they were just placed -- they don't have even the smallest flaw, not a single scratch or dent.", + tower_level_3_room_2_ladder_down = 'A strong metal ladder leading vertically down to the neighboring level of the tower.', + tower_level_3_room_2_ladder_up = 'A strong metal ladder leading vertically up to the neighboring level of the tower.', + tower_level_3_room_2_shelves_act_first = 'I look through the racks in search of something interesting. I take a small skillfully faceted emerald and a set of screwdrivers. Besides everything else, I notice a box full of spare parts for the computer.', + tower_level_3_room_2_shelves_act_second = "I don't see anything else here that I can use right now.", + tower_level_3_room_2_walls = "I am sure that if I find my way to the wall, I'll see the same smooth black stone as everywhere else.", + tower_level_3_table_deepening_act_empty = 'A small hexagonal deepening.', + tower_level_3_table_deepening_act_full = 'I take %item% from the deepening.', -- %item% is in accusative, lowercase + -- %location% is untranslated and is one of the markings: NW, NE, SE, SW in both keys below + tower_level_3_table_deepening_dsc_empty = [[{The %location% deepening} is empty.]], + tower_level_3_table_deepening_dsc_full = [[The %location% deepening contains {%item%}.]], -- %item% is in nominative, lowercase + tower_level_3_table_deepening_used_fit = 'I put %item% into the deepening.', -- %item% is in accusative, lowercase + tower_level_3_table_deepening_used_full = 'There is already %item% in the deepening.', -- %item% is in nominative, lowercase + tower_level_3_table_deepening_used_open = 'A light click denotes the opening of the door to the next floor of the tower.', + tower_level_3_table_decor = "A huge table takes up significant space in the center of the room. Polished surface shines in the flickering light from the fireplace. There are five hexagonal deepenings in the surface of the table. Four of them are marked with the directions: NW, NE, SE, SW, and the one in the center was unmarked. There is a little silver figurine in each of the deepenings.", + tower_level_3_table_decor_unsolved = "A writing is made along the table's perimeter in an elaborate {#hint|script}."; + tower_level_3_table_decor_solved = "A writing is made along the table's perimeter in an elaborate script.", + tower_level_3_table_in_figures_act = 'I take the figurines from the table.', + tower_level_3_table_in_figures_dsc = [[There are {five figurines} of silvery metal on it.]], + tower_level_3_table_middle_deepening_dsc_empty = [[{The central deepening} is empty.]], + tower_level_3_table_middle_deepening_dsc_full = [[The central deepening contains {%item%}.]], -- %item% is in nominative, lowercase + tower_level_4_bed = "A huge bed is covered by a snow-white sheet embroidered by silver. Near the headboard a large pillow in a white lacy case lies. For a human the bed is quite large, but it's still too small for a dragon... And dragons don't sleep in beds...", + tower_level_4_candle_act_blow = 'A gust of wind appears from nowhere and blows all the candles.', + tower_level_4_candle_act_lit = 'I light the candle. A note %note% plays somewhere far away.', + tower_level_4_candle_act_open = 'The door in the far end of the room flies open from a sudden gust of wind.', + tower_level_4_candle_act_sequence = 'A sequence of sounds plays in the darkness:', + tower_level_4_chandelier_act = 'An elegant silver chandelier with seven candles. They are not lit.', + tower_level_4_decor = 'I find myself in a spacious room. As in the other places in the tower, the black {tower_walls|walls} have no windows. In the center of the room, there is a luxurious {#bed|bed} with a heavy baldachin of dense black cloth decorated by silver threads. Beside the bed a small round {#table|table} with a silver {#candelabra|chandelier} on it is standing.', + tower_level_4_disp = 'Tower, the Fourth Floor', + tower_level_4_door_act_locked = "The door is locked. I don't see any way to open it.", + tower_level_4_door_act_open = 'The door is open. Behind it I see a large hall, filled with server stands.', + tower_level_4_door_dsc_locked = 'There is a small wooden {door} in the far wall.', + tower_level_4_door_dsc_open = 'The wooden {door} in the end of the hall is open.', + tower_level_4_room_2_armchair = 'A cozy antique armchair with wheels and upholstered with soft tapestry. It shows no signs of use or time. The carved back and armrests of black wood look like new.', + tower_level_4_room_2_computer_act = 'The look of the computer remind me of the early 80s. There are no disk drives. "TETS-1" label on the system unit does not tell me anything. The power and network cables go somewhere beneath the floor. A small {#monitor|monitor} is standing on top of the system unit. The computer is turned off now and there is no power.', + tower_level_4_room_2_computer_used_assemble = 'I assemble the case back and connect all the required cables.', + tower_level_4_room_2_computer_used_disassemble = 'I disconnect all the cables and, unscrewing a number of bolts, take off the lid.', + tower_level_4_room_2_decor = 'Racks with {#servers|servers} are placed along the walls. In the center of the hall a massive wooden {#table|table} stands, on which an old {#computer|computer} is positioned. Near the table I see an antique {#armchair|armchair}. Not far from the table, there is {#ladder|a ladder}, leading to lower levels of the tower.', + tower_level_4_room_2_disp = 'Tower, the Server Room', + tower_level_4_room_2_ladder = 'A strong metal ladder is secured here, leading vertically down.', + tower_level_4_room_2_monitor = 'A small cathode-ray tube monitor. The screen diagonal is about 8 inches. On the right of it I see the handles to set brightness and contrast.', + tower_level_4_room_2_servers = "Hundreds if not thousands of servers. I can't imagine what they are for. They are not powered.", + tower_level_4_room_2_servers_powered = "Hundreds if not thousands of servers. I can't imagine what they are for. Humming of working coolers and light cracking of hard drives tell me that machines are functioning. The flickering lights reflect the processes happening in them.", + tower_level_4_room_2_table = 'A strong wooden table on the massive carved legs. Its polished surface shines like new. Most of the table is taken up by a computer. Near the keyboard {#manual|a book} is placed.', + tower_level_4_table = 'A small table of rich black wood stands on a single massive leg.', + tower_red_key_disp = 'Red Key', + tower_red_key_disp2 = 'the red key', + tower_red_key_disp3 = 'the red key', + tower_red_key_inv = 'A small key of reddish metal.', + transition_airlock = 'To the Airlock', + transition_control = 'To the Control Room', + transition_dining_room = 'To the Dining Room', + transition_door = 'Into the Door', + transition_downstairs = 'Downstairs', + transition_lab = 'To the Laboratory', + transition_leave = 'Leave the Tower', + transition_reactor = 'To the Reactor Chamber', + transition_room = 'To the Next Room', + transition_study = 'To the Study', + transition_upstairs = 'Upstairs', + troubleshooting_manual_disp = 'Troubleshooting', + troubleshooting_manual_dsc = [[ Issue: OS does not boot. No image on the screen. No audio signal^ + Reason: No power or motherboard malfunction^ + Solution:^ + 1. Check power^ + 2. Replace the motherboard^ + Issue: OS does not boot. No image on the screen. Audio signals: long-short-short^ + Reason: Missing or malfunctioning CPU^ + Solution:^ + 1. Install or replace a CPU^ + Issue: OS does not boot. No image on the screen. Audio signals: short-long-long^ + Reason: Missing or malfunctioning RAM^ + Solution:^ + 1. Install or replace a RAM module^ + Issue: OS does not boot. No image on the screen. Audio signals: long-short-long^ + Reason: Missing or malfunctioning video-adapter^ + Solution:^ + 1. Install or replace a video-adapter^ + Issue: OS does not boot. No image on the screen. Audio signals: long-long-long^ + Reason: Missing or malfunctioning keyboard controller^ + Solution:^ + 1. Install or replace a keyboard controller^ + + Issue: OS does not boot. Message on the screen: "Booting from None"^ + Reason: No compatible boot device^ + Solution:^ + 1. Install a compatible boot device (for example an FNA series network adapter)^ + ]], + turquoise_catalyst_disp = 'Turquoise Catalyst', + turquoise_catalyst_disp2 = 'the turquoise catalyst', + turquoise_catalyst_disp3 = 'the turquoise catalyst', + turquoise_catalyst_dsc = 'There is {a vial with turquoise liquid} on one of the shelves.', + turquoise_catalyst_inv = 'A vial of turquoise liquid marked as "Catalyst".', + walls_dlg_enter= 'As I touch the smooth stone of the walls, I hear a velvet female voice in my mind, "Welcome home". I pull my hand back.', + walls_dlg_enter_solarscale = 'Solarscale jumps to me and, touching my shoulder, asks, "Are you alright?"', + walls_dlg_p1 = "Yes, I'm fine.", + walls_dlg_p1_r = 'Solarscale attentively looks into my eyes. The low voice I heard is nothing like the bright and resonant speech of the dragoness, but there is no one near us. Was it the tower itself?', + walls_dlg_p2 = 'Did you say something?', + walls_dlg_p2_r = '"No, definitely not", she replies. I realise how different is the low voice I heard from the bright and resonant speech of Solarscale. Was it the tower itself? ', + walls_dlg_p3 = 'Could you, please, touch the wall?', + walls_dlg_p3_r = 'Shrugging, Solarscale touches the wall and pulls her hand immediately. With her eyes wide open, she looks at me, whispering, "I\'ve also heard this!"', + walls_dlg_p4 = '[Touch the wall again]', + walls_dlg_p4_r = "I touch the wall, but nothing happens. To my surprise I don't feel any discomfort. On the contrary, the touch calms me and instills confidence.", + walls_dlg_p5 = '[Walk away]', + walls_dlg_p5_r = 'I walk away from the wall, baffled.', + walls_dlg_p6 = 'Who is it?', + walls_dlg_p6_r = 'No response. For awhile I listen to the silence of the tower. The cold dusk feels calming and alluring.', + yellow_catalyst_disp = 'Yellow Catalyst', + yellow_catalyst_disp2 = 'the yellow catalyst', + yellow_catalyst_disp3 = 'the yellow catalyst', + yellow_catalyst_dsc = 'There is {a vial with yellow liquid} on one of the shelves.', + yellow_catalyst_inv = 'A vial of yellow liquid marked as "Catalyst".', + }, + parts_locale = { + component_not_set = 'Missing', + cpu = 'CPU', + cpu_installed = 'I install the CPU.', + cpu_needs_removal = 'I need to remove the installed CPU first.', + cpu_not_fit = 'The CPU does not fit.', + cpu_inv_from_box = '%model% processor, I took from the box with spare parts.', + cpu_inv_from_computer = '%model% processor, I took from the computer.', + cpu_tak = 'I take %model% processor.', + cpu_title = '%model% Processor', + device_installed = 'I install the board.', + device_needs_removal = 'I need to remove the installed board first.', + keyboard_controller_inv_from_box = '%model% keyboard controller, I took from the box with spare parts.', + keyboard_controller_inv_from_computer = '%model% keyboard controller, I took from the computer.', + keyboard_controller_tak = 'I take %model% keyboard controller.', + keyboard_controller_title = '%model% Keyboard Controller', + motherboard = 'Motherboard', + motherboard_installed = 'I install the motherboard.', + motherboard_needs_removal = 'I need to remove the installed board first.', + motherboard_not_taken = 'I need to disconnect all of the devices first.', + motherboard_inv_from_box = '%model% motherboard, I took from the box with spare parts.', + motherboard_inv_from_computer = '%model% motherboard, I took from the computer.', + motherboard_tak = 'I take %model% motherboard.', + motherboard_title = '%model% Motherboard', + network_adapter_inv_from_box = '%model% network adapter, I took from the box with spare parts.', + network_adapter_inv_from_computer = '%model% network adapter, I took from the computer.', + network_adapter_tak = 'I take %model% network adapter.', + network_adapter_title = '%model% Network Adapter', + ram = 'RAM', + ram_installed = 'I install the RAM.', + ram_needs_removal = 'I need to remove the installed RAM first.', + ram_not_fit = 'The RAM does not fit.', + ram_inv_from_box = '%model% memory module, I took from the box with spare parts.', + ram_inv_from_computer = '%model% memory module, I took from the computer.', + ram_tak = 'I take %model% memory module.', + ram_title = '%model% Memory Module', + slot = 'Expansion Slot', + videocard_inv_from_box = '%model% video adapter, I took from the box with spare parts.', + videocard_inv_from_computer = '%model% video adapter, I took from the computer.', + videocard_tak = 'I take %model% video adapter.', + videocard_title = '%model% Video Adapter', + }, + note_locale = { + note_a = 'A', + note_b = 'B', + note_c = 'C', + note_d = 'D', + note_e = 'E', + note_f = 'F', + note_g = 'G', + }, + ending_locale = { + ending_dissolving_tower_solarscale = 'A golden dragoness sits on one of the mountaintops at the edge of the crater. Her scale shines in rays of sunset. Her emerald-green eyes look into the center of the crater upon the slowly dissolving black tower.', + ending_dissolving_tower_solarscale_alt = 'The dragoness lands on one of the mountaintops at the edge of the crater. Her scale shines in rays of sunset. Her emerald-green eyes look into the center of the crater upon the slowly dissolving black tower.', + ending_solarscale_flight = 'Solarscale looks at me and at the dissolving tower walls in awe. Making a circle in the air, she returns to wait for my next action.', + ending_solarscale_pre = 'A light touch distracts me from the terminal. I turn to see Solarscale saying her goodbyes: "I have to leave. Hope to see you again!"', + ending_welcome = 'I hear a soft, calm and seemingly long familiar voice in my mind, "Welcome home." The walls start to dissolve, opening views of endless expanses of the universe.', + formatted_2 = "Century after century I return to this place, but I can't find anything but forsaken shards of black stone.", + formatted_alone = 'I step away from the computer and feel a subtle change in the tower. The world around me starts to diffuse and soon I find myself in the forest. Fragments of black stone are scattered around me. It would be really difficult to recognise that they were a tower mere moments ago. With a gasp I spread my wings and fly home.', + formatted_solarscale = 'I step away from the computer and feel a subtle change in the tower. The world around us starts to diffuse and soon we find ourselves in the forest. Fragments of black stone are scattered around us. It would be really difficult to recognise that they were a tower mere moments ago. We exchange glances with Solarscale and, after saying goodbyes, depart our own ways.', + game_end = 'The End', + irradiated = "Since I left the tower, I can't shake the feeling of my days slowly running out. My magic weakens and my wings cannot hold me any longer.", + left_part_1 = 'The darkness around me becomes tangible, as if the tower starts to reject me. I walk through the door and the massive stone slab falls, cutting my way in forever.', + left_part_1_solarscale = 'Solarscale thoughtfully looks at me and on the tower. For some time we examine it closely from all sides, but in the end we give up and disappointed depart our separate ways.', + left_part_2 = 'Century after century I return to this place, but smooth black stone stays impenetrable to me.', + left_state_1 = "I step towards the door, but something stops me. What if there won't be a second chance?", + left_state_2 = 'I continue walking towards the exit. My mind shows me the image of the door closing behind me.', + left_state_3 = 'I continue walking towards the exit, and the air thickens around me as if trying to stop me from leaving.', + show_menu = 'To the Main Menu', + solarscale_lost = 'Neither am I able to find Solarscale. No matter how I tried, I have found no traces of the lovely dragoness.', + thank_you_for_playing = 'Thank You for Playing', + true_solarscale_convince_level_1 = 'Solarscale halts, lost in thoughts.', + true_solarscale_convince_level_2 = 'Solarscale looks at me hesitantly.', + true_solarscale_convince_level_3 = 'Solarscale looks at me in silence.', + true_solarscale_convince_level_4 = 'Solarscale nods and says decisively, "Good, I\'m in."', + true_solarscale_dlg_1 = "[Grasp Solarscale's hand]", + true_solarscale_dlg_1_response = 'I hear a voice in my head, "Leave her, let her tread her own path". Astonished, I let her hand out. It is enough for the dragoness to slip out and fly away.', + true_solarscale_dlg_2 = "Don't you want to stay?", + true_solarscale_dlg_2_response = '"I can\'t, I have things to do at home", quietly replies Solarscale with uncertainty in her voice.', + true_solarscale_dlg_3 = "Aren't you curious, what's next?", + true_solarscale_dlg_4 = 'If you leave now, we may not meet in the future.', + true_solarscale_dlg_5 = 'This tower is our home.', + true_solarscale_dlg_6 = 'You cannot leave now, the tower has opened to you too.', + true_solarscale_dlg_7 = "Don't you think we make up a good team? It will be hard without you.", + true_solarscale_dlg_8 = 'Think how many amazing places are waiting for us.', + true_solarscale_dlg_end = 'Well then, I shall not keep you. Until we meet again.', + true_solarscale_dlg_end_response = 'Solarscale lowers her head and with a quiet whisper, "Farewell", escapes the room.', + true_solarscale_dlg_enter = 'At the same moment I feel a light touch, returning me to reality. I turn around. Solarscale says her farewells, "I have to go. Hope to see you in the future."', + true_solarscale_leaving = 'In a blink of an eye Solarscale escapes the tower. As if with my own eyes I see Solarscale flying out of the doorway on the first floor and the heavy stone slab lowering after her.', + true_solarscale_outside_part_2 = 'When the tower completely disappears, the dragoness spreads her thin shining wings and rises into the sky.', + true_solarscale_stays = 'My perception changes. As if looking from far away I see the tower dissolving in the air, shifting us beyond the usual world. Solarscale freezes astonished besides me, watching this and awaiting my further actions.', + true_step_1 = 'I rise to the top of the tower and mentally give the command to liftoff. Endless universe opens before my eyes. All roads and worlds are now open to me. At my wish I can be anywhere and anytime.', + true_step_1_alone = 'At first I wonder at how sensitively the tower reacts to me, but soon I get used to everything being available at my fingertips.', + true_step_1_solarscale = 'At first I wonder at how sensitively the tower reacts to us, but soon I get used to everything being available at our fingertips. In the same incomprehensible way Solarscale always appears to be no further than one door away.', + true_step_2_alone = 'Millennium after millennium I travel through worlds and ages, gathering their heritage. Soon time and space stop meaning anything to me at all.', + true_step_2_irradiated = 'Millennium after millennium I travel through worlds and ages, gathering their heritage. Despite this, a strange feeling keeps bothering me as if my days are slowly waning and my journey will not be endless.', + true_step_2_solarscale = 'Millennium after millennium we travel through worlds and ages, gathering their heritage. Soon time and space stop meaning anything to us at all.', + }, +} diff --git a/translation/ru.lua b/translation/ru.lua new file mode 100644 --- /dev/null +++ b/translation/ru.lua @@ -0,0 +1,1357 @@ +--[[ + Author: Khaelenmore Thaal + Status: Original +]] +set_locale_data { + common_locale = { + back = 'Назад', + continue = 'Продолжить', + quotes = '«%1»', + dlg_keep_silent = '[Промолчать]', + key_does_not_fit = 'Ключ не подходит.' + }, + link_locale = { + copied = 'Скопировано', + }, + main_locale = { + empty_act = 'Я не знаю, что с этим сделать.', + empty_inv = 'Это предмет. Он существует.', + empty_use_1 = 'Это так не работает.', + empty_use_2 = 'Кажется, так не получится.', + empty_use_3 = 'Стоит попробовать что-то другое.', + empty_use_4 = 'Кажется, это не сработает.', + empty_use_5 = 'Это здесь не подходит.', + }, + menu_locale = { + auto_option = 'Авто', + credits_art = 'Графика', + credits_author = 'Автор игры', + credits_closed_beta = 'Закрытое тестирование', + credits_engine = 'Движок', + credits_engine_author = 'Пётр Косых', + credits_fonts = 'Шрифты', + credits_music = 'Музыка', + credits_sounds = 'Звуки', + credits_thanks = 'Спасибо, что играете в нашу игру!', + cursor_scale = 'Размер курсора', + disable = 'Отключить', + enable = 'Включить', + extended = 'Увеличенный', + font_scale = 'Масштаб шрифта', + graphic_scale = 'Масштаб графики', + interval = 'Межстрочный интервал', + intro = [[Гулким эхом разносятся мои шаги под сводами древних пещер. Неровные тени пляшут в дрожащем магическом свете. В руке я держу фрагмент карты, бережно хранимый с незапамятных времен. Развернув старинный свиток, я внимательно осматриваю нанесенные на него обозначения: лес, горная цепь, дорога и отмеченная крестом деревушка. Наконец-то я смог определить где это. В путь!^ + Мое тело расплывается туманом и собирается в облике человека. Быстрым шагом я направляюсь к небольшой дверце в одной из стен. В комнате нет ничего, кроме каменного стола и стоящего на нем ноутбука -- совершенно необходимой в наше время вещи, даже для дракона.^ + Хорошая картографическая программа и правильно сформулированный запрос творят чудеса -- уже через несколько минут я вылетаю из пещеры в своем истинном обличии, расправив крылья навстречу ветру.^ + Совсем скоро я узнаю, что ждет меня в этой деревне!]], + inventory_scale = 'Масштаб шрифта инвентаря', + language = 'Язык', + normal = 'Обычный', + padding = 'Отступ', + system_settings = 'Системные настройки', + text_alignment = 'Выравнивание текста', + text_alignment_justify = 'По ширине', + text_alignment_left = 'По левому краю', + text_width = 'Ширина текста', + use_text_input = 'Использовать текстовый ввод', + warning = 'Предупреждение', + theme_warning = 'Игра Дракон и Башня требует чтобы настройка "собственные темы игр" была включена. Она не будет работать без этой настройки. Пожалуйста, измените настройки и перезапустите или загрузите игру.', + resolution_warning = 'Игра Дракон и Башня требует разрешение не менее 640х480. Игра не будет работать корректно с более низким разрешением. Пожалуйста, убедитесь, что ваши настройки корректны и ваш компьютер поддерживает данное разрешение, после чего перезапустите или загрузите игру из системного меню (нажмите esc).', + }, + terminal_locale = { + boot_from = 'Загрузка с', + cpu = 'ЦПУ', + disk = 'Диск', + keyboard = 'Клавиатура', + kilobytes = 'КБ', + mhz = 'МГц', + missing = 'Отсутствует', + motherboard = 'Система', + network = 'Сеть', + network_2 = 'сети', -- accusative case + no_bootable_medium_found = 'Загрузочное устройство недоступно', + no_device = 'отсутствует', + ram = 'Память', + tower_os_line_1 = 'Запуск TOWER OS 1.0...', + tower_os_line_2 = 'TOWER OS Версия 1.0', + tower_os_line_3 = "Введите 'HELP' для вывода списка доступных команд", + -- cat command + cat_line_1 = 'Мяу', + cat_line_2 = 'Здесь нет кошек', + cat_line_3 = 'Секретного кошачьего уровня не существует', + -- head or tail commands + head_line_1 = 'Это ваше, я к этому не причастен', + head_line_2 = 'У меня нету, а у вас?', + -- more and less commands + more_line_1 = 'Ни больше ни меньше', + -- Lines below are used when player is entering Unix commands instead of DOS ones and are kind of joke/Easter egg + unix_line_1 = 'Я не Unix', + unix_line_2 = 'Я что, похож на Unix, по-вашему?', + unix_line_3 = 'Эй, вы что делаете?', + unix_line_4 = "Возможно, вы хотели написать 'format c:'?", + + command_already_started = 'Уже запущен', + connect_comment = 'REM CONNECT.EXE - Выключил для доступа к командной строке', + critical_failure = 'Сбой системы: Файл не найден', + crypt_invalid_key = 'Неверный файл ключа', + crypt_key_locked = 'Файл ключа защищен паролем', + crypt_key_unset = 'Ключ не указан в файле настроек. Укажите вручную', + crypt_unencrypted = 'Файл не зашифрован', + crypt_usage = [[Применение: CRYPT [файл] [файл ключа]^Расшифровать зашифрованный файл]], + invalid_password = 'Не удалось расшифровать ключ. Неверный пароль', + invalid_password_2 = 'Неверный пароль', + hello_txt = [[Приветствую, дорогой друг!^Я временно отключил основную оболочку, CONNECT.EXE.^Просто запусти ее, чтобы войти в систему.^В дальнейшем, когда ты разберешься с терминалом, сможешь^снова включить ее.^Пароль от основного интерфейса -- в папке DOCS в файле^PASSWORD.TXT. Разумеется, он зашифрован.]], + help_cd = 'CD - Сменить директорию', + help_dir = 'DIR - Вывести содержимое текущей директории', + help_disk = 'X: - Сменить диск на X', + help_connect = 'CONNECT - Подключиться к основному интерфейсу башни', + help_format = 'FORMAT - Отформатировать диск', + help_help = 'HELP - Показать это сообщение', + help_print = 'PRINT - Вывести содержимое текстового файла', + help_exit = 'EXIT - Выключить терминал', + help_com_exe = [[Вы можете запускать файлы .COM и .EXE указав путь к ним как^имя команды]], + print_no_file = 'Ошибка: Невозможно вывести несуществующий файл', + print_usage = [[Применение: PRINT [имя файла]^Вывести содержимое текстового файла]], + -- If possible, keep phrases below as close to your language MS-DOS translation + -- Also keep lines shorter than 60 characters + bad_command = 'Некорректное имя команды или файла', + binary_data = 'Ошибка: Нельзя вывести двоичные данные', + cd_invalid_directory = "Некорректный путь: '%path%'", + cd_usage = 'Применение: CD [путь]', + format_invalid_device = 'Неверное устройство', + format_usage = [[Применение: FORMAT [диск]^Отформатировать дисковое устройство^Осторожно: Данные будут удалены]], + formatting_complete = 'Форматирование завершено', + operation_cancelled = 'Операция отменена', + query_formatting = 'Форматирование:', + query_password = 'Пароль:', + query_type_yes = "Введите 'Yes' для подтверждения:", + }, + tutorial_locale = { + tutorial_box = 'Шкатулка', + tutorial_box_hint = 'Для того чтобы открыть шкатулку ключом используйте его на шкатулке. Щелкните на ключ, а затем на шкатулку.', + tutorial_box_inv = 'Небольшая шкатулка, запертая на замок.', + tutorial_box_used = 'Я открываю шкатулку и достаю из нее карту.', + tutorial_box_used_hint = 'Осмотрите карту, чтобы продолжить.', + tutorial_disk = 'Дискета с картами', + tutorial_disk_inv = 'Картографическая программа, приобретенная мной всего несколько дней назад. Обладает довольно продвинутыми возможностями поиска в сравнении с предыдущей версией. Я надеюсь, она поможет мне в моих поисках.', + tutorial_end = 'Поздравляем!', + tutorial_end_decor = 'Я вставляю дискету и включаю ноутбук. Запустив картографическую программу, я начинаю поиск нужного места. Правильно сформулированный запрос творит чудеса, и уже через несколько минут я вылетаю из пещеры в своем истинном обличии, расправив крылья навстречу ветру.', + tutorial_end_decor_hint = 'Поздравляем! Вы успешно завершили обучение и можете начинать основную игру. Будьте готовы действовать и думать самостоятельно. Подсказок больше не будет.', + tutorial_key = 'Ключик', + tutorial_key_inv = 'Небольшой ключик от шкатулки. Она должна быть где-то в сокровищнице.', + tutorial_key_inv_look_for_box = 'Попробуйте найти шкатулку, чтобы продолжить. Помните, что вы можете повторно осматривать объекты.', + tutorial_lair = 'Логово, главный зал', + tutorial_lair_caves_act = 'Я нашел эту сеть пещер несколько столетий назад. Часть проходов пришлось расширить, но в остальном я сохранил естественные их формы.', + tutorial_lair_caves_act_hint = 'Щелкайте на объекты для взаимодействия с ними. Некоторые объекты вы сможете взять с собой или использовать, другие -- только осмотреть.', + tutorial_lair_decor_1 = 'Мое логово представляет собой сеть из нескольких {#caves|пещер}', + tutorial_lair_decor_2 = 'Сейчас я нахожусь в самой большой из них. Неровные стены и высокие каменные своды освещены солнцем, свет которого свободно проникает через огромное {#exit|отверстие в потолке}.', + tutorial_lair_decor_hint_caves = 'Нажмите на подсвеченный текст, чтобы осмотреть пещеры', + tutorial_lair_decor_hint_study = 'Перейдите в кабинет, чтобы продолжить.', + tutorial_lair_decor_hint_treasury = 'Отдельно от основного текста находятся ссылки-переходы. Сейчас вам доступны переходы "В сокровищницу" и "В кабинет". Перейдите в сокровищницу, чтобы продолжить.', + tutorial_lair_enter_disk = 'Вам необходимо найти дискету с картографической программой, чтобы продолжить.', + tutorial_lair_enter_start = 'Я просыпаюсь и открываю глаза. Бегло осмотрев логово, я начинаю превращаться. Мое тело расплывается серым дымом и собирается вновь, уже в облике человека.', + tutorial_lair_enter_treasury = 'Я еще не закончил свои дела здесь.', + tutorial_lair_exit_act = 'Я проделал это огромное отверстие, чтобы свободно покидать и возвращаться в свое логово. Разумеется, это не единственный выход из моего дома.', + tutorial_map = 'Карта', + tutorial_map_hint_find_disk = 'Найдите в сокровищнице дискету с картографической программой.', + tutorial_map_hint_go_to_study = 'Перейдите в кабинет, чтобы продолжить.', + tutorial_map_hint_leave_treasury = 'Вернитесь в главный зал и перейдите оттуда в кабинет.', + tutorial_map_inv = 'Старинная карта небольшого участка земли. Аккуратная отметка в виде креста указывает на какое-то поселение. Я потратил столетия на безуспешные поиски этого места.', + tutorial_start = 'Добро пожаловать!', + tutorial_start_decor = [[ Добро пожаловать в игру "Дракон и Башня". Этот раздел познакомит вас с игрой и научит в нее играть. ^ + Игра состоит из комнат, у каждой из которых есть название и описание. Кроме того, в комнате могут находиться объекты, с которыми вы можете взаимодействовать. ^ + Это тоже комната. Она называется "Добро пожаловать!", а описание ее вы сейчас читаете. + ]], + tutorial_start_decor_hint = 'Мы предлагаем вам сыграть в небольшой пролог к Дракону и Башне. Жирным шрифтом мы будем выделять инструкции и комментарии. Нажмите "Продолжить", чтобы начать пролог.', + tutorial_study = 'Логово, кабинет', + tutorial_study_decor = 'Небольшая круглая пещерка около трех метров высотой и не более трех в диаметре. У стены я поместил стол, на котором сейчас покоится {#laptop|ноутбук}. Настало время узнать, где же находится это место.', + tutorial_study_decor_hint = 'Чтобы закончить обучение, используйте дискету с картами на ноутбук. Для этого нажмите один раз на предмет в инвентаре, а потом на предмет в комнате.', + tutorial_study_enter = 'Мне пока сюда не нужно.', + tutorial_study_enter_hint = 'Не всегда действия вашего персонажа будут успешны. Внимательно читайте тексты, чтобы понять, почему игра не позволяет вам выполнить то или иное действие.', + tutorial_study_laptop_act = 'Ноутбук, купленный мной пару лет назад. В нем нет новомодного привода для компакт-дисков, и он не очень производительный по текущим меркам, но для моих нужд его вполне хватает.', + tutorial_to_game = 'Начать игру', + tutorial_to_main_hall = 'В главный зал', + tutorial_to_main_menu = 'В главное меню', + tutorial_to_study = 'В кабинет', + tutorial_to_treasury = 'В сокровищницу', + tutorial_treasury = 'Логово, сокровищница', + tutorial_treasury_books = 'Коллекция книг, собранная мной за сотни лет жизни в этом мире.', + tutorial_treasury_chests_act_box = 'В одном из сундуков я нахожу небольшую шкатулку.', + tutorial_treasury_chests_act_default = 'Мои сокровища!', + tutorial_treasury_chests_act_key = 'На одном из сундуков лежит небольшой ключик. Я забираю его с собой.', + tutorial_treasury_chests_act_key_hint = 'Вы взяли ключик и он появился в инвентаре. Осмотрите его. Для этого щелкните по нему два раза.', + tutorial_treasury_decor = 'Здесь я храню самые ценные из имеющихся у меня вещей. Вдоль стен расположены стеллажи, на которых лежат различные {#items|предметы}. В центре зала стоят несколько огромных {#chests|сундуков}.', + tutorial_treasury_decor_hint_leave = 'Для продолжения покиньте сокровищницу.', + tutorial_treasury_decor_hint_map = 'Для достижения успеха в игре вам придется внимательно читать тексты и осматривать места, где вы находитесь. Попробуйте найти карту.', + tutorial_treasury_disks = 'Стандартные трех- и пятидюймовые дискеты с программами для моего ноутбука.', + tutorial_treasury_disks_default = 'Даже мне, дракону, приходится идти в ногу со временем.', + tutorial_treasury_disks_found = 'Я легко нахожу среди них искомую.', + tutorial_treasury_disks_hint = 'Самое время использовать найденные предметы. Покиньте сокровищницу.', + tutorial_treasury_items_act = 'Я бегло оглядываю стеллажи, заполненные всевозможными предметами: {#books|книгами}, {#scrolls|свитками}, {#records|виниловыми пластинками}, {#disks|дискетами}, {#paintings|картинами} и много чем еще.', + tutorial_treasury_no_enter = 'Мне там больше нечего делать.', + tutorial_treasury_paintings = 'Это в основном репродукции наиболее интересных мне работ.', + tutorial_treasury_records = 'Относительно недавнее изобретение, однако получившее широкое распространение. Я собрал некоторое количество наиболее интересных мне записей.', + tutorial_treasury_scrolls = 'Свитки с различными писаниями этого мира. Их не так много, как хотелось бы -- многие вещи я не успел заполучить.', + tutorial_treasury_scrolls_no_map = 'Интересующей меня карты я среди них не вижу.', + }, + forest_locale = { + above_crater = 'Над кратером', + above_crater_crater = 'Когда-то в незапамятные времена здесь упал довольно крупный метеорит. За прошедшее время кратер успел зарасти лесом, но планета все еще не загладила этот ужасный шрам на своей поверхности.', + above_crater_decor = 'Я пролетаю над огромным {#crater|кратером}, затерянным среди гор. В центре кратера возвышается {#tower|башня}, но я не смогу там приземлиться из-за {#trees|деревьев}. Я замечаю небольшую {#glade|полянку} всего в нескольких сотнях метров от башни.', + above_crater_enter = 'Я взмываю в небо, уже на лету заканчивая превращение. Мои могучие крылья поднимают меня над землей.', + above_crater_glade = 'Небольшая полянка совсем недалеко от центра кратера. Eсли я приземлюсь здесь и превращусь, то без труда доберусь до башни.', + above_crater_tower = 'Башня из черного камня возвышается над лесом, располагаясь в самом центре исполинского кратера. Основание ее представляет собой правильный шестиугольник. Она стоит строго вертикально, окруженная со всех сторон лесом, словно не замечающим ее присутствия.', + above_crater_trees = 'Деревья растут достаточно редко, чтобы позволить солнечным лучам достигать земли, однако приземлиться среди них все еще проблематично.', + above_forest = 'Над лесом', + above_forest_decor = 'Изредка взмахивая крыльями, я парю над раскинувшейся внизу {#thicket|чащей}. На западе я вижу {mountains|горную цепь}, протянувшуюся на юг и на север до самого горизонта. Тонкой струйкой внизу извивается старая асфальтированная {#road|дорога}. Вдоль нее тянутся линии {#powerlines|электропередач}. Чуть в стороне от дороги я могу разглядеть небольшую {#glade|полянку}. Прохладный {wind|ветерок} ласкает чешую, а яркое летнее {sun|солнце} пробивается сквозь тонкие перистые {clouds|облака}.', + above_forest_decor_village = 'Деревня, что я ищу, должна быть где-то здесь.', + above_forest_enter = 'Резко взмахнув крыльями, я отрываюсь от земли и устремляюсь ввысь.', + above_forest_glade_act = 'Небольшая полянка, усеянная пестрым ковром из цветов и трав.', + above_forest_glade_act_first = 'Отличное место чтобы передохнуть.', + above_forest_powerlines_act = 'Вышки установлены вдоль дороги на равных расстояниях друг от друга, Между ними натянуты толстые высоковольтные провода.', + above_forest_road_act = 'Потрескавшийся асфальт напоминает русло засохшей реки. Дорога пустынна, словно это место давно покинуто людьми.', + above_forest_road_act_village = 'Что если меня ждут лишь безжизненные окна пустых домов?', + above_forest_thicket_act = 'Древние леса зеленым ковром покрывают землю. Вершины деревьев едва покачиваются от легкого ветерка. Даже здесь, на высоте нескольких сотен метров, я ощущаю легкий запах хвои.', + above_near_village_decor = 'Крылья несут меня над лесной {#road|дорогой}. Я пролетел с десяток километров, но, кажется, не изменилось вообще ничего -- внизу все так же расстилается бескрайняя {#thicket|чаща}, а {mountains|горная цепь} на западе продолжает тянуться вдаль. На севере, у самого горизонта, я замечаю небольшую {#village|деревушку}.', + above_near_village_enter = 'Мое тело окутывает туман и через мгновение на дороге уже стоит не безымянный странник, а могучий дракон. Взмахнув крыльями, я оставляю землю далеко внизу.', + above_near_village_road = 'Дорога выглядит давно не используемой. Асфальт во многих местах потрескался, и сквозь него кое-где пробиваются зеленые стебельки.', + above_near_village_thicket = 'Кажется, лесу нет конца и края. Легкий ветерок колышет вершины деревьев, поднимая густой хвойный аромат, ощутимый даже здесь, на высоте нескольких сотен метров.', + above_near_village_village = 'Отсюда я могу разглядеть трактир и ратушу в центре деревни. Вокруг них разбросаны утопающие в зелени домики.', + above_village = 'Над деревней', + above_village_decor = 'Надо мной все так же проплывают тонкие перистые {clouds|облака}, едва прикрывая собой {sun|солнце}, а внизу простирается бескрайнее море {#thicket|леса}, взрезанное на западе {mountains|горной грядой}. Старая асфальтированная {#road|дорога} ведет в {#village|деревню}, расположенную подо мной.', + above_village_road = 'Очевидно, местные жители нечасто пользуются этим путем. Дорога пустует, а асфальт не получает должного ремонта.', + above_village_thicket = 'Густой хвойный лес плотным кольцом обступает небольшую деревеньку со всех сторон, безуспешно пытаясь поглотить ее.', + above_village_village = 'Отсюда я могу хорошо разглядеть утопающую в зелени деревню. В центре ее расстилается площадь, рядом с которой находятся ратуша и трактир. На севере деревни располагается библиотека.', + above_west = 'К западу от деревни', + above_west_crater = 'Громадный кратер, километров десять в диаметре. Судя по растущему внутри редкому леску, образовался он достаточно давно. В самом его центре я вижу черную башню.', + above_west_decor = '{#village|Деревня} осталась далеко на востоке. Подо мной проносятся острые {#mountaintops|вершины} и каменистые {#mountainslopes|склоны}, усеянные валунами, а вдалеке на западе я вижу огромный {#crater|кратер}. Лучи яркого летнего {sun|солнца}, проникающие сквозь тонкие перистые {clouds|облака}, падают на мою чешую, согревая ее.', + above_west_mountains = 'Отсюда я могу рассмотреть горные пики внизу. Немногие из них достаточно высоки, чтобы коснуться облаков, лишь часть их покрыта блестящим на солнце снегом. Большинство представляет собой не более чем голые камни, за которые тут и там отчаянно пытаются цепляться немногочисленные молодые ели.', + above_west_mountainslopes = 'Крутые склоны и отвесные скалы кажутся практически безжизненными. Лишь немногие деревья осмеливаются пустить свои корни на этих каменных громадах, устремившихся в небеса.', + above_west_mountaintops = 'Вершины гор нацелены вверх, словно наконечники копий. Большая часть их -- не более чем серые камни, лишенные растительности, но самые высокие покрыты ослепительно-белым снегом, сверкающим в ярких лучах летнего солнца.', + above_west_village = 'Отсюда я все еще могу разглядеть самые большие здания деревни: ратушу, трактир и библиотеку. Из трубы трактира поднимается едва заметный дымок, а на крыльце его сидит девушка.', + box_disp = 'Старая шкатулка', + box_disp2 = 'cтарая шкатулка', + box_disp3 = 'старую шкатулку', + box_dsc = 'На столе стоит изящно украшенная {шкатулка}.', + box_inv = 'Очень старая шкатулка. Я могу только догадываться, что скрывается внутри. На дне шкатулки выгравировано кольцо с камнем.', + box_inv_known = 'Кажется, я где-то уже видел его.', + box_inv_take_lock = 'Я снимаю замок со шкатулки.', + box_inv_without_lock = 'Старинная шкатулка. На дне ее выгравировано кольцо с камнем.', + box_tak = 'Я забираю шкатулку.', + box_used_key_failed = 'За долгое время замок успел заржаветь и сейчас ключ в нем не повернуть.', + box_used_key_oil = 'Я капаю немного масла в замок. Этого должно хватить, чтобы смазать механизм и заставить его работать.', + box_used_key_oil2 = 'Замок уже смазан.', + box_used_key_success = 'Ключ с трудом поворачивается и замок открывается. Внутри лежит небольшой свиток. Развернув его, я понимаю, что это карта. Я забираю его.', + clouds = 'Пронзаемые лучами солнца словно копьями, тонкие перистые облака неспешно проплывают надо мной, повинуясь воздушным течениям.', + common_dlg_greet = 'Добрый день. Я впервые в вашей деревне.', + common_dlg_places = 'Вы знаете какие-нибудь местные достопримечательности?', + common_dlg_bye = 'До свидания.'; + crater_near_tower = 'Кратер, у входа в башню', + crater_near_tower_decor = 'Тропинка выводит меня к зияющему чернотой проему в одной из стен {#tower|башни}, построенной из незнакомого мне черного материала. {#grass|Трава} подступает к самому ее подножию. Раскидистые кроны {#trees|деревьев} практически полностью закрывают собой небо. Лучи {#sun|солнца} пробиваются сквозь листву и, падая на траву, тропинку и стены башни, образуют причудливый узор.', + crater_near_tower_grass = 'Густая зеленая трава произрастает повсюду в этом лесу.', + crater_near_tower_sun = 'Яркое летнее солнце озаряет своими лучами лес.', + crater_near_tower_tower = 'Основание башни имеет форму правильного шестиугольника. Непонятно, насколько глубоко оно уходит в землю. Матовая поверхность на ощупь оказывается холодной и гладкой как стекло. Я не вижу и не ощущаю никаких стыков, словно башня вырезана из единого куска породы. Стены ее отвесно поднимаются ввысь, а вершина скрыта за кронами деревьев.', + crater_near_tower_trees = 'Деревья растут практически у самой башни. Они, должно быть, выросли здесь уже после ее появления.', + flower = 'Цветок', + flower_inv = 'Небольшой, но очень красивый цветок с тонкими вытянутыми лепестками небесно-голубого цвета.', + forest_glade = 'Поляна', + forest_glade_birds = 'Где-то в глубине леса я слышу щебетание множества птиц, однако я не вижу ни одной поблизости.', + forest_glade_decor = 'Я стою посреди небольшой полянки, со всех сторон окруженной стеной {#thicket|леса}. Здесь тихо и спокойно. Я слышу только шелест листвы и пение {#birds|птиц}. Легкий ветерок еле заметно качает вершины {#thicket|деревьев}. Изумрудно-зеленая {#grass|трава} достигает моих пяток.', + forest_glade_enter = 'Я приземляюсь на небольшой полянке в лесу. Здесь нет нужды прятаться, поэтому я остаюсь в истинном обличии.', + forest_glade_flowers = 'Здесь растет немало красивых цветов.', + forest_glade_flowers_first = 'Мое внимание привлекают необычные цветы с вытянутыми лепестками небесно-голубого цвета, растущие на краю поляны. Я срываю один и забираю с собой. Немного магии, и он уже никогда не завянет.', + forest_glade_grass = 'Высокая густая трава покрывает всю поляну. Человеку она была бы по пояс, но мне едва достигает пяток. Тут и там я замечаю небольшие скопления {#flowers|цветов}, скрытые в ней.', + forest_glade_thicket = 'Деревья окружают поляну сплошной стеной, словно бдительные стражи, охраняющие покой этого места.', + forester_dlg_disp = 'Лесник', + forester_dlg_enter = 'Бородатый, косматый мужчина неопределенного возраста сидит на диване, пронзительно глядя мне в глаза. Одет он в брезентовые куртку и штаны и, кажется, не испытывает никаких проблем по поводу жары.', + forester_dlg_farewell_response = 'Лесник прощается со мной: "Увидимся".', + forester_dlg_greet_response = 'Лесник резко меняет выражение лица -- в глазах сверкает веселая искорка и кажется, что под бородой скрывается искренняя улыбка: "Добро пожаловать, мы всегда рады гостям!"', + forester_dlg_pie = '[Дать леснику малиновый пирог] Я принес пирог. Могу я взять веревку?', + forester_dlg_pie_response = 'Лесник берет у вас пирог и, откусив от него немного, произносит: "Забирайте".', + forester_dlg_places_response = 'Лесник не задумываясь отвечает: "Говорят, такого собрания книг, как в нашей библиотеке, больше нигде нет".', + forester_dlg_rope = 'Могу я взять у вас веревку?', + forester_dlg_rope_response = 'Лесник задумчиво чешет бороду и предлагает: "Мы с трактирщиком на днях повздорили, теперь он отказывается продавать мне что-либо кроме хлеба и воды. С удовольствием обменяю моток веревки на кусок малинового пирога".', + foresters_hut = 'Дом лесника', + foresters_hut_chairs = 'Старые деревянные стулья, очевидно, сделанные местным мастером. Простые, но устойчивые и прочные. Такие прослужат не одно десятилетие.', + foresters_hut_cupboard = 'Должно быть, этому шкафу не один десяток лет. Бронзовые ручки покрыты патиной, а на рассохшейся дверце я замечаю несколько глубоких трещин.', + foresters_hut_decor = 'Несмотря на яркий солнечный день, внутри избушки лесника царит полумрак. Напротив входа расположен большой мягкий {#sofa|диван}. В углу разместился большой крепкий {#cupboard|шкаф}, а у окна стоит {#table|стол}, застеленный клеенкой, с несколькими {#chairs|стульями} вокруг. На столе стоит {#radio|радиоприемник}.', + foresters_hut_enter = 'Войдя в неосвещенное помещение, я с трудом сдерживаюсь, чтобы не снять очки и не выдать себя. Привыкнув к темноте, я осматриваюсь.', + foresters_hut_forester = 'На диване сидит {лесник}, глядя на меня.', + foresters_hut_forester_pie = 'Я не могу просто всучить ему пирог. Надо подойти и поговорить.', + foresters_hut_not_interested = 'Не думаю, что ему это интересно.', + foresters_hut_radio = 'Старинный радиоприемник. Такие перестали выпускать лет двадцать назад. Судя по всему, он все еще прекрасно работает. Лампочка питания горит, однако громкость выкручена в минимум.', + foresters_hut_rope = 'На шкафу лежит {моток веревки}.', + foresters_hut_rope_disp = 'Веревка', + foresters_hut_rope_inv = 'Моток крепкой веревки.', + foresters_hut_rope_not_taken = 'Хозяин будет недоволен, если я возьму это без разрешения.', + foresters_hut_rope_taken = 'Я забираю веревку.', + foresters_hut_sofa = 'Старинный диван с выцветшей и потертой обивкой все еще манит домашним уютом.', + foresters_hut_table = 'Массивный дубовый стол застелен старой выцветшей клеенкой с узором из цветочков и каких-то завитков.', + hidden_key_disp = 'Ключик', + hidden_key_disp2 = 'ключик', + hidden_key_disp3 = 'ключик', + hidden_key_inv = 'Старый металлический ключик, найденный мной в колодце.', + inside_crater_glade = 'Кратер, полянка', + inside_crater_glade_crater = 'Находясь здесь, практически в самом центре громадной воронки, я не вижу ничего, что отличало бы этот лес и ландшафт от других, виденных мной.', + inside_crater_glade_decor = 'Небольшая круглая полянка посреди редкого лиственного {#forest|леса}. В центре ее стоит огромный старый {#oak|дуб} с раскидистой кроной. Изумрудно зеленая {#grass|трава} достигает мне до пояса. Невесть кем протоптанная {#path|тропинка} ведет к {#tower|башне} в центре {#crater|кратера}.', + inside_crater_glade_forest = 'В тени раскидистых вязов и стройных буков резвятся белки, зайцы и другие мелкие зверьки. Издалека доносятся стук дятла и пение птиц.', + inside_crater_glade_grass = 'Дикая трава поднимается высоко, ничем и никем не сдерживаемая.', + inside_crater_glade_oak = 'Исполинское древо произрастает в самом центре поляны. Легкий ветерок шелестит в его ветвях, покрытых густой зеленой листвой. В огромном дупле спит филин.', + inside_crater_glade_on_enter = 'Еще не коснувшись земли, я начинаю превращение. Окутанное туманом, мое тело резко устремляется вниз. Через мгновение я оказываюсь на поляне в облике человека. Мои глаза излучают яркий свет, но мне не от кого прятаться -- очки остаются в нагрудном кармане.', + inside_crater_glade_path = 'Кто-то аккуратно вытоптал в густой траве узенькую тропку, ведущую прямиком к башне.', + inside_crater_glade_tower = 'Башня из черного камня возвышается над лесом, словно маяк, установленный для любого, оказавшегося здесь.', + inside_crater_path = 'Кратер, тропинка', + inside_crater_path_crater = 'Даже находясь здесь, у самого центра громадной воронки, я не вижу никаких следов падения -- погода и лес делают свое дело и методично заживляют огромный шрам на теле Земли.', + inside_crater_path_decor = 'Узкая тропинка, невесть кем протоптанная в густой {#grass|траве}, ведет к центру {#crater|кратера}. Солнечный свет пробивается сквозь листву, образуя причудливый узор из теней повсюду: на стволах {#trees|деревьев}, на траве и на самой тропинке. Далеко впереди виднеется {#tower|башня}.', + inside_crater_path_exit = 'Я продолжаю свой путь, так и не поговорив с драконессой. Она расправляет крылья и улетает.', + inside_crater_path_grass = 'Здесь, лишенная излишков солнечного света, трава гораздо ниже, чем на полянке. Тем не менее она все такого же насыщенного изумрудного цвета.', + inside_crater_path_stump = 'Неподалеку от меня лежит огромный {валун}.', + inside_crater_path_stump_act = 'Валун наполовину врос в землю. Судя по всему, он лежит здесь очень давно. Должно быть, это один из крупных обломков, оказавшихся здесь после образования кратера.', + inside_crater_path_stump_with_solarscale = 'Неподалеку от меня лежит огромный {валун}, на котором примостилась небольшая золотая {solarscale|драконесса}.', + inside_crater_path_tower = 'Черное высокое строение, возвышающееся над лесом, практически скрыто от моего взора густой листвой.', + inside_crater_path_trees = 'Высокие деревья с раскидистыми кронами едва качаются от легкого ветерка. В сплетениях корней устраивает свои жилища мелкая живность, а на ветвях сидят всевозможные птицы.', + inside_well = 'В колодце', + inside_well_decor = 'Я стою на дне колодца. Внутренняя его часть выложена камнем. Здесь царит темнота и мне приходится снять очки, чтобы хорошо видеть. Несмотря на то, что колодец давно высох, здесь все еще очень влажно.', + inside_well_enter = 'Вряд ли я смогу выбраться, если просто спрыгну внутрь.', + inside_well_loose_rock = 'Мое внимание привлекает {один из камней}, заметно выступающий из кладки.', + inside_well_loose_rock_act = 'Я легко вынимаю камень. Под ним, в небольшом углублении, спрятан металлический ключик. Удивительно, но влажность почти не повредила ему.', + leave_books_message = 'Мне не нужны эти книги, лучше оставить их здесь.', + librarian_dlg = 'Библиотекарь', + librarian_dlg_bye_response = 'Старик кивает: "Всего хорошего".', + librarian_dlg_enter = 'Передо мной стоит пожилой человек в старом темно-сером костюме. На шее он носит темно-синий галстук-бабочку. Из нагрудного кармана торчит уголок тщательно выглаженного носового платка. На указательном пальце правой руки старика я замечаю кольцо с драгоценным камнем. Интересно, как оно оказалось в такой глуши? В левой руке он держит толстенную книгу, названия которой я, к сожалению, не вижу. На носу библиотекаря сидят очки в роговой оправе. Подбородок его гладко выбрит, а короткие волосы совершенно седы. Серые глаза спокойно смотрят на меня, а рот слегка приоткрыт в дружелюбной улыбке.', + librarian_dlg_greet_response = 'Мужчина почтительно кивает и произносит: "Добро пожаловать! Чем скромный библиотекарь может помочь вам?"', + librarian_dlg_library = 'Ваша библиотека даст фору любой другой, которую я видел. Как вам удалось собрать столько книг?', + librarian_dlg_library_old = 'Это здание выглядит очень старым, как давно оно было построено?', + librarian_dlg_library_old_response = 'Библиотекарь слегка улыбается, погружаясь в воспоминания: "Очень давно, еще мой дед рассказывал о том, как в молодости проводил здесь дни и недели, читая о дальних странствиях и опасных приключениях..."', + librarian_dlg_library_response = 'Библиотекарь с улыбкой отвечает: "Это дело рук многих поколений. Отсюда не так просто добраться до цивилизации. Многие из этих книг были привезены сюда странниками, другие собирали мои предшественники. В любом случае, не стесняйтесь брать любую из них. Главное -- не забудьте вернуть".', + librarian_dlg_places_response = 'Библиотекарь пожимает плечами: "Не думаю, что здесь есть на что смотреть".', + librarian_dlg_ring = 'Откуда у вас это кольцо?', + librarian_dlg_ring_look = 'Могу я взглянуть на ваше кольцо?', + librarian_dlg_ring_look_response = 'Библиотекарь, не говоря ни слова, снимает кольцо с пальца и протягивает мне. Я внимательно осматриваю драгоценность. На внутренней стороне выгравирована надпись: "Ключ там, где вода". Я возвращаю кольцо владельцу и он надевает его обратно.', -- Please take note that the engraved words are also used in `village_well_act_key` key + librarian_dlg_ring_response = 'Старик демонстрирует мне свое кольцо. Я с интересам разглядываю произведение ювелирного искусства. Золотое колечко, украшенное причудливой резьбой, инкрустировано крупным изумрудом -- около четырех миллиметров в диаметре. Убрав руку, он поясняет: "Это кольцо хранится здесь с незапамятных времен. Мне передал его мой предшественник, а я передам его тому, кто будет хранить эту библиотеку после меня".', + library = 'Библиотека', + library_chairs = 'Удобные мягкие кресла, предназначенные для посетителей.', + library_decor = 'Внутреннее пространство библиотеки представляет собой просторный зал, уставленный книжными {library_shelves|стеллажами}. Между ними то и дело встречаются уютные {#tables|столики} с расположенными рядом с ними {#chairs|креслами} и стоящими неподалеку {#lamps|торшерами}. {#windows|Окон} в здании немного и предпочтение отдается искусственному освещению. К стене у входа прибита небольшая {#library_notice|табличка}.', + library_hidden_room = 'Библиотека, потайная комната', + library_hidden_room_decor = 'Эту библиотеку определенно проектировал кто-то невероятно талантливый. Я мог бы исходить здание вдоль и поперек, исследовать и измерить каждый уголок, но все равно не догадался бы, что здесь скрыта эта комнатушка. Здесь нет ничего кроме маленького {#table|столика}.', + library_hidden_room_table = 'Небольшой круглый столик на бронзовой ножке, такой же как и те, что расставлены по всей библиотеке.', + library_lamps = 'Около каждого кресла стоит торшер с зеленым абажуром в форме усеченного конуса. Сейчас они все выключены -- днем света достаточно даже из немногочисленных окон, да и посетителей кроме меня нет.', + library_librarian = 'По залу ходит пожилой {человек} с книгой в руках.', + library_librarian_used_box = 'Наверное, есть смысл спросить, прежде чем совать ему это в руки.', + library_librarian_used_other = 'Вряд ли это сможет его заинтересовать.', + library_notice_inside_decor = [[ + Старая металлическая табличка содержит список правил пользования библиотекой:^ + 1. Вы можете брать любые книги. Все взятые книги вы обязаны вернуть сами или кто-то должен сделать это за вас. ^ + 2. Вы можете принести любую книгу и оставить ее здесь.^ + 3. Вы можете самостоятельно поставить книгу на место, используя таблицу размещения или передать ее библиотекарю.^ + 4. В пределах полки ставьте книги в алфавитном порядке.^ + Вокруг слова "алфавитном" в последнем правиле я замечаю практически стершиеся следы старой краски, словно когда-то оно было выделено цветом. + ]], + library_shelf_book_disp = 'История мира, том %number%', + library_shelf_book_inv = 'Довольно старое издание одной из самых распространенных книг по общемировой истории.', + library_shelf_book_tak = 'Я беру книгу с полки.', + library_shelf_puzzle_shelf_act = 'На гладком дереве полки вырезано слово "%word%".', + library_shelf_puzzle_shelf_multiple = 'На {shelf|полке} стоят несколько книг:', + library_shelf_puzzle_shelf_none = '{shelf|Полка} пуста.', + library_shelf_puzzle_shelf_single = 'На {shelf|полке} стоит книга:', + library_shelf_puzzle_used_book = 'Я ставлю книгу на полку.', + library_shelf_puzzle_used_book_success = 'Стеллаж поворачивается, открывая проход в ранее скрытое помещение.', + library_shelves_act = 'В этот раз, я без труда нахожу ту самую {library_the_shelf|полку}.', + library_shelves_act_first = 'Я долго блуждаю в лабиринте полок и стеллажей. У меня ушло бы больше месяца только на то, чтобы ознакомиться с названиями книг собранных здесь. Интересно, откуда в этом захолустье такие сокровища? Наконец, я останавливаюсь у {library_the_shelf|одной из полок}.', + library_tables = 'Небольшие круглые столики на бронзовых ножках услужливо расставлены по залу.', + library_the_shelf_act = 'На первый взгляд, полка ничем не примечательна. Лишь осмотрев ее, я понимаю, что именно привлекло мое внимание -- на гладкой поверхности аккуратными и ровными буквами вырезано слово "%word%". Это определенно имеет какой-то смысл.', + library_windows = 'Легкие бежевые занавески на больших прозрачных окнах распахнуты. На севере и востоке я вижу лишь бескрайний лес. За деревьями на западе тянется горная гряда. Через окна на юге открывается вид на деревню.', + lock = 'Замок', + lock_disp2 = 'замок', + lock_disp3 = 'замок', + lock_inv = 'Небольшой металлический замочек, очень старый и изрядно проржавевший.', + maid_dlg = 'Девушка', + maid_dlg_bye = 'Я пойду.', + maid_dlg_bye_response = 'Девушка кивает, слегка улыбнувшись.', + maid_dlg_enter = 'Молодая девушка сидит на крыльце трактира. Ее длинные каштановые волосы ниспадают на плечи, карие глаза смотрят куда-то вдаль. Уголки рта приподняты в легкой улыбке. Она одета в простое голубое платье.'; + maid_dlg_enter_with_flower = 'Когда я подхожу, она переводит свой взгляд на меня и тепло улыбается мне.', + maid_dlg_enter_no_flower = 'Когда я подхожу, она переводит свой взгляд на меня и приветливо, но немного грустно улыбается. Ее тонкие бледные руки лежат на подоле платья почти не двигаясь.', + maid_dlg_flower = '[Дать девушке цветок] Вот, возьмите.', + maid_dlg_flower_agree = 'Согласен.', + maid_dlg_flower_agree_response = 'Девушка улыбается: "Договорились".', + maid_dlg_flower_response = 'Девушка засияла. Тепло улыбнувшись вам, она произносит: "Спасибо!"', + maid_dlg_flower_think = 'Мне надо подумать.', + maid_dlg_flower_think_response = 'Девушка пожимает плечами: "Как хотите. Пирог и вправду очень вкусный".', + maid_dlg_greet_response = 'Девушка смущенно отвечает, смотря на меня: "Простите, я вас не заметила. Помогу, чем смогу".', + maid_dlg_no_money = 'У меня нет с собой денег.', + maid_dlg_no_money_response = [[Девушка удивленно спрашивает: "Как же вы сюда добрались тогда?"^Немного подумав, она предлагает: "Знаете, я поделюсь с вами пирогом, если вы выполните небольшую мою прихоть. Многого не прошу, просто... -- Она делает неловкую паузу, -- принесите мне цветок из нашего леса. Обычно мы ходим с лесником и я набираю их себе вдоволь, но в этот раз мы оба слишком заняты. Что скажете?"]], + maid_dlg_pie = 'Вы можете принести мне кусок малинового пирога?', + maid_dlg_pie_ask = 'Хорошо, я попрошу у него.', + maid_dlg_pie_ask_response = 'Девушка молча смотрит на меня.', + maid_dlg_pie_fail_response = 'Девушка смеется: "Наш пирог настолько знаменит, что люди приезжают из дальних краев, чтобы попробовать его! Почему бы вам не попросить у моего отца?"', + maid_dlg_pie_response = 'Девушка соскакивает с места и со словами "Сейчас вернусь!" Убегает в трактир. Через несколько минут она возвращается с куском восхитительно пахнущего малинового пирога.', + maid_dlg_places_like = 'Да, мне здесь нравится.', + maid_dlg_places_like_response = 'Девушка продолжает: "В нашем лесу растут очень красивые цветы. Раньше мы ходили с лесником и я собирала букет для себя, но в этом году у меня почти нет времени -- надо помогать отцу в трактире". Она грустно вздыхает.', + maid_dlg_places_response = 'Вопрос ставит девушку в тупик. Она краснеет и молчит, не зная, что ответить. Через некоторое время она спрашивает: "Здесь хорошо, не правда ли?"', + maid_dlg_silent_response = 'Девушка спрашивает: "Так что вы хотели?"', + maid_dlg_tavern = 'Вы работаете в трактире?', + maid_dlg_tavern_response = 'Девушка молча кивает.', + map_disp = 'Карта', + map_disp2 = 'карта', + map_disp3 = 'карту', + map_inv = 'Очень старая карта, указывающая на место в горах, к западу от деревни. Это совсем недалеко -- минут десять полета.', + mountains = 'Горная цепь вспарывает лесной ковер к западу от меня. Редкие деревья отчаянно цепляются за каменистые склоны, словно стремясь заживить эту гигантскую рану.', + near_village = 'К югу от деревни', + near_village_decor = 'Я стою на старой асфальтовой {#road|дороге} где-то посреди древнего {#forest|леса}. В нескольких километрах к северу от меня находится небольшая {#village|деревушка}. Яркое летнее {sun_transformed|солнце} пробивается сквозь проплывающие высоко в небе {clouds|облака}.', + near_village_enter = 'Я мягко опускаюсь на землю. Едва мои ноги касаются земли, я начинаю превращаться. Тело мое расплывается туманом, который вскоре собирается в облике обычного человека. Горящие ярким огнем глаза я предусмотрительно скрываю за темными очками.', + near_village_forest = 'Легкий ветерок качает вершины стоящих по сторонам дороги деревьев, разнося насыщенный аромат хвойного леса.', + near_village_road = 'Серый неровный асфальт всеми забытой дороги иссечен многочисленными трещинами.', + near_village_village = 'Ухоженные бревенчатые домики местных жителей утопают в зелени. Отсюда я вижу стоящие в центре деревни крупные здания ратуши и трактира.', + old_map_disp = 'Старая карта', + old_map_disp2 = 'старая карта', + old_map_disp3 = 'старую карту', + old_map_inv = 'Старинная карта, что привела меня в эти края.', + old_map_inv_not_visited = 'Горы, леса, даже дорога почти на том же месте. Где-то здесь должна быть и деревушка, что отмечена крестом.', + old_map_inv_visited = 'Горы, леса, отмеченная крестом деревушка, даже дорога почти на том же месте.', + old_map_inv_visited_village = 'Осталось понять, что в этой деревне такого особенного.', + raspberry_pie = 'Малиновый пирог', + raspberry_pie_inv = 'Я вдыхаю восхитительный аромат свежего малинового пирога. К сожалению, я не могу его съесть, но я точно вернусь сюда когда-нибудь за кусочком для себя.', + sun = 'Теплые лучи солнца приятно согревают мою чешую, пробиваясь сквозь тонкие перистые облака.', + sun_transformed = 'Теплые лучи солнца пробиваются сквозь тонкие перистые облака и заливают все вокруг золотистым светом.', + tavern = 'Деревня, трактир', + tavern_cauldron = 'Ароматное жаркое бурлит в котелке -- сюда еще не пришли современные газовые или электрические плиты, а, может быть, хозяин просто предпочитает готовить по-старинке.', + tavern_decor = 'Просторный зал трактира встречает меня теплом и уютом. Помещение залито солнечным светом, проникающим через многочисленные {#windows|окна} в бревенчатых {#walls|стенах}. Повсюду расставлены крепкие деревянные {#tables|столы}, на удивление хорошо сделанные. C потолка свисают электрические {#lights|люстры}. Над {#fireplace|очагом} в дальнем конце висит {#cauldron|котелок}, от которого поднимается ароматный пар.', + tavern_fireplace = 'Несмотря на жаркий летний день, в очаге пылает огонь.', + tavern_keeper = 'За начищенной до блеска барной стойкой скучает {трактирщик}.', + tavern_lights = 'Лампы под тонкими пластиковыми абажурами сейчас выключены.', + tavern_tables = 'Устойчивые тяжелые столы, рассчитанные на трех-четырех человек каждый, накрыты белоснежными скатертями.', + tavern_walls = 'Бревенчатые стены трактира создают теплую атмосферу старины и уюта.', + tavern_windows = 'Большие окна легко пропускают в помещение свет. Светло-зеленые занавески, висящие на всех окнах, раскрыты.', + tavernkeeper_dlg = 'Трактирщик', + tavernkeeper_dlg_bye_response = 'Трактирщик бодро отвечает: "Заходите еще!"', + tavernkeeper_dlg_enter = 'За барной стойкой я вижу тучного мужчину с густой черной бородой. Его темные глаза весело смотрят на меня. Он громогласно вопрошает: "Чего изволите, гость дорогой?"', + tavernkeeper_dlg_greet_response = 'Трактирщик улыбается и предлагает свои услуги: "Добро пожаловать! В моем трактире вы всегда можете остановиться на ночь и не останетесь без сытного горячего ужина!"', + tavernkeeper_dlg_money = 'Благодарю, но у меня нет с собой денег.', + tavernkeeper_dlg_money_response = 'Трактирщик пожимает плечами: "Бесплатно мы не обслуживаем".', + tavernkeeper_dlg_pie = 'Я могу приобрести у вас малиновый пирог?', + tavernkeeper_dlg_pie_2 = 'К сожалению, у меня нет с собой денег. Мы можем договориться?', + tavernkeeper_dlg_pie_response = 'Трактирщик тянется к пирогу со словами: "Всего сто пятьдесят монет и он ваш!"', + tavernkeeper_dlg_pie_response_2 = 'Трактирщик возвращается на место и говорит: "Так не пойдет. Пирог продается только за деньги".', + tavernkeeper_dlg_places_response = 'Трактирщик уверенно отвечает: "Обязательно попробуйте наш малиновый пирог! Уверяю, вы не пробовали ничего вкуснее!"', + townhall = 'Ратуша', + townhall_cabinet = 'Рядом со входом стоит небольшая крепкая {тумбочка}, на которой стоит {record_player|проигрыватель}, воспроизводящий неизвестную мне мелодию.', + townhall_cabinet_act = 'Внутри тумбочки я обнаруживаю несколько {records|пластинок} и коробочку с {parts|запчастями}.', + townhall_cabinet_act_oil = 'Внутри тумбочки я обнаруживаю несколько {records|пластинок}, коробочку с {parts|запчастями} и {oil|флакончик с машинным маслом}.', + townhall_cabinet_oil = 'Флакончик с маслом', + townhall_cabinet_oil_inv = 'Почти полный флакончик с машинным маслом.', + townhall_cabinet_oil_tak = 'Я беру флакончик с маслом.', + townhall_cabinet_parts = 'Запасные детали для проигрывателя, бережно расфасованные по небольшим коробочкам и пакетикам.', + townhall_cabinet_record_player = 'Проигрыватель в идеальном состоянии, несмотря на почтенный возраст. Старая заезженная пластинка обильно потрескивает, однако музыка мне определенно нравится. К сожалению, она мне совершенно незнакома.', + townhall_cabinet_records = 'Несколько грампластинок. Ни исполнители, ни песни мне совершенно не знакомы.', + townhall_cabinet_used_oil = 'Я возвращаю флакончик на место.', + townhall_ceiling = 'Высокий потолок скрывается во тьме, однако мне, с моим драконьим зрением, не составляет труда разглядеть его хорошо обработанные и ровные доски.', + townhall_chairs = 'Простые, но крепкие стулья столь же стары, как и остальная мебель здесь. Я не сомневаюсь, что они прослужат еще много лет.', + townhall_chandelier = 'Позолоченные кронштейн и рожки удерживают лампы и множество подвесок, украшающих люстры. Сейчас они выключены, но стоит зажечь свет, и искрящиеся отблески засверкают, отражаясь от хрусталя и преломляясь в нем.', + townhall_curtains = 'Выцветшие занавески закрыты, преграждая свету путь в помещение. Старая ткань все еще сохраняет свою плотность и прочность.', + townhall_decor = 'Я стою в просторном зале ратуши. С {#ceiling|потолка} свисает несколько больших хрустальных {#chandelier|люстр}. Сейчас в помещении царит полумрак -– {#curtains|занавески} закрыты и сквозь них пробивается совсем немного света. В центре зала стоит огромный дубовый {#table|стол}, по периметру которого расставлены массивные {#chairs|стулья}. В кресле в дальнем конце стола дремлет пожилой {#head|мужчина}. ', + townhall_head = 'Нет ни малейшего смысла его будить -- пусть себе спит.', + townhall_onexit = 'Вряд ли местным жителям понравится, если я буду красть их вещи. Масло надо вернуть.', + townhall_table = 'На полированной поверхности стола видны многочисленные царапины, оставленные посетителями за долгие годы. Массивный и тяжелый, он стоит как влитой и прослужит еще немало лет.', + transition_along_the_path = 'По тропинке', + transition_away_from_bookstand = 'Отойти от стеллажа', + transition_east = 'На восток', + transition_east_to_the_village = 'На восток, к деревне', + transition_fly = 'Взлететь', + transition_inside_hut = 'В дом лесника', + transition_inside_library = 'В библиотеку', + transition_inside_tavern = 'В трактир', + transition_inside_tower = 'В башню', + transition_inside_town_hall = 'В ратушу', + transition_inside_well = 'В колодец', + transition_land = 'Приземлиться', + transition_north_along_road = 'На север, вдоль дороги', + transition_north_to_library = 'На север, к библиотеке', + transition_north_to_the_townhall = 'На север, к ратуше', + transition_north_to_the_village = 'На север, к деревне', + transition_out = 'На улицу', + transition_south_along_road = 'На юг, вдоль дороги', + transition_south_to_hut = 'На юг, к дому лесника', + transition_south_to_the_forest = 'На юг, в лес', + transition_south_to_town_hall = 'На юг, к ратуше', + transition_to_glade = 'К поляне', + transition_to_hidden_room = 'В потайную комнату', + transition_to_main_hall = 'В главный зал', + transition_to_tower = 'К башне', + transition_up = 'Наверх', + transition_west = 'На запад', + transition_west_to_the_crater = 'На запад, к кратеру', + village_all_decor = 'Сквозь тонкие перистые {clouds|облака} пробиваются яркие лучи летнего {sun_transformed|солнца}.', + village_center = 'Деревня, центр', + village_center_decor = 'Я стою на небольшой площади перед деревенской {#townhall|ратушей}. В другом конце площади стоит {#tavern|трактир}. На севере я замечаю какое-то большое одноэтажное {#library|здание}.', + village_center_library = 'Отсюда я могу разглядеть вывеску библиотеки на здании.', + village_center_music = 'Я останавливаюсь, чтобы прислушаться к доносящейся из ратуши музыке. Незнакомая мелодия звучит очень приятно.', + village_center_tavern = 'Трактир не уступает ратуше ни возрастом, ни солидностью. Из трубы здания поднимается едва заметный дымок.', + village_center_townhall = 'Двухэтажное здание ратуши -- одно из самых крупных и старых в деревне. Большую часть фасада занимают огромные, высотой в оба этажа, окна. Изнутри здания доносится {#music|музыка}.', + village_maid_act_no_dlg = 'Мне больше ничего от нее не нужно.', + village_maid_dsc = 'На крыльце трактира сидит молодая {девушка}.', + village_maid_flower = 'В руке она держит красивый цветок с небесно-голубыми лепестками.', + village_maid_used_flower = 'Лучше сначала подойти и поговорить.', + village_maid_used_other = 'Вряд ли ей это будет интересно.', + village_no_way_alone = 'Местным жителям не очень понравится, если посреди их деревни вдруг приземлится дракон.', + village_no_way_solarscale = 'Местным жителям не очень понравится, если посреди их деревни вдруг приземлятся два дракона.', + village_north = 'Деревня, север', + village_north_decor = 'Я стою на северном краю {#village|деревни}. Узенькая {#road|дорожка} ведет прямо к зданию {#library|библиотеки}, стоящему на самом краю деревни. За ним я вижу лишь бескрайний {#forest|лес} и тянущуюся дальше на север {#mountains|горную цепь}.', + village_north_forest = 'Лес начинается почти сразу за библиотекой. Здесь деревья не так часты, как дальше к северу, где чаща становится совершенно непролазной. Воздух наполнен ароматом хвои, а со всех сторон доносится пение птиц.', + village_north_library = 'Высокое и просторное, здание вместило под своей крышей огромное количество книг. Несмотря на почтенный возраст, оно сохранилось практически идеально, благодаря прекрасному уходу. Широкие двустворчатые двери приоткрыты, приглашая гостей.', + village_north_mountains = 'Большая часть горной цепи скрыта от моего взора деревьями. Отсюда я вижу лишь несколько высочайших пиков.', + village_north_road = 'Асфальт здесь еще более потрескавшийся чем в остальных местах. Кое-где сквозь трещины пробиваются тонкие стебельки травы.', + village_north_village = 'Деревня, раскинувшаяся к югу от меня, выглядит спящей -- ухоженные домики укрыты в листве, дорожки между ними пусты. Лишь на крыльце трактира я вижу одинокую девушку в голубом платье.', + village_south = 'Деревня, юг', + village_south_car = 'Этому автомобилю, должно быть, не менее нескольких десятков лет -- модель очень старая, кузов местами подкрашен, кое-где видны небольшие вмятины. Однако на машине нет и следа ржавчины, зеркала и фары в полном порядке, лобовое стекло сияет чистотой.', + village_south_decor = 'Я стою на {#road|дороге} в южной части {#village|деревни}. Чуть поодаль расположилась {#foresters_hut_out|избушка} лесника. У входа припаркован старый {#foresters_car|пикап}. Лучи {sun_transformed|солнца}, пробивающиеся сквозь тонкие {clouds|облака}, заливают все вокруг золотистым светом.', + village_south_hut = 'Крепкая деревянная изба, почерневшая от старости и слегка покосившаяся, но все еще достаточно прочная. При должном уходе она простоит еще не один десяток лет.', + village_south_road = 'Мне, привыкшему к ровному полу моих пещер, очень непривычно идти по старому полуразрушенному асфальту. Тут и там сквозь трещины в нем пробиваются тонкие стебельки молодой травы.', + village_south_village = 'Аккуратные деревянные домики местных жителей утопают в зелени. Отсюда я вижу расположенные в центре деревни здания ратуши и трактира. Из трубы последнего поднимается тонкая струйка дыма.', + village_unvisited = 'Деревня определенно не заброшена.', + village_well_act = 'Старый высохший колодец.', + village_well_act_key = 'При виде колодца, мне в голову приходят слова "ключ там, где вода", выгравированные на кольце. Пусть воды здесь уже давно нет, это лишь облегчает задачу.', + village_well_dsc = 'В центре площади расположен {колодец}.', + village_well_dsc_rope = 'Вокруг одного из выступающих камней закреплена веревка, уходящая вглубь колодца.', + village_well_used = 'Я привязываю веревку к выступающему камню. По ней я смогу выбраться из колодца.', + wind = 'Легкий ветерок дует с востока, принося желанную прохладу. Его мягкое дыхание едва колышет вершины деревьев и заставляет тонкие облака медленно плыть на запад.', + }, + solarscale_locale = { + disp = 'Соларскейл', + first_dlg_about_map = '[Рассказать о карте] Это долгая история...', + first_dlg_about_map_1 = 'Выходит так.', + first_dlg_about_map_1_response = 'Соларскейл кивает: "Что же, желаю вам успехов в поисках".', + first_dlg_about_map_2 = 'То что я ищу должно быть в этом кратере.', + first_dlg_about_map_3 = 'Быть может, вы сможете мне помочь?', + first_dlg_about_map_3_response = 'Соларскейл вновь улыбается: "Разумеется". Немного подумав, она продолжает: "Я думаю, стоит начать с башни из странного камня. Я не смогла попасть внутрь, но, может быть, у вас получится. Просто следуйте по этой тропинке".', + first_dlg_about_map_response = 'Соларскейл задумчиво произносит: "Занятно. Так значит, вы даже не знаете что ищете?"', + first_dlg_dragon = 'Никак не ожидал увидеть дракона. Как вы попали сюда?', + first_dlg_dragon_admit = 'От вас ничего не скрыть. Да, так и есть.', + first_dlg_dragon_admit_response = 'Соларскейл кивает: "Никогда не думала, что встречу кого-нибудь из сородичей! Даже не сразу поняла, кто вы! Так что привело вас сюда?"', + first_dlg_dragon_decline = 'Вы ошибаетесь.', + first_dlg_dragon_decline_response = 'Соларскейл хитро щурится, вы понимаете, что она видит вас насквозь: "Пусть будет по-вашему. Так, как вы здесь оказались?"', + first_dlg_dragon_question = 'С чего вы взяли?', + first_dlg_dragon_question_response = 'Соларскейл, улыбнувшись, отвечает: "Это не так просто скрыть от другого дракона. Но как вы здесь оказались?"', + first_dlg_dragon_response = 'Соларскейл отвечает: "Я возвращаюсь домой после долгого странствия. Просто остановилась здесь передохнуть". Внезапно, она застывает в удивлении: "Ваши глаза! Вы ведь тоже дракон, да?"', + first_dlg_enter = 'Драконесса с сияющими золотом чешуйками и излучающими яркий свет изумрудами глаз сидит на камне, слегка приоткрыв пасть с двумя рядами ровных сверкающих зубов. Крылья ее сложены за спиной, а руки -- скрещены на груди. Она приветливо смотрит на меня. Ее рост составляет всего около метра -- очевидно, она из вида драконов небольшого размера. Драконесса не спускает с меня взгляд, улыбаясь: "Добрый день, путник. Меня зовут Соларскейл. Что привело вас в эти края?"', + first_dlg_tower = 'Расскажите больше о башне.', + first_dlg_tower_bye_no_time = 'Прошу прощения, но у меня нет времени разговаривать.', + first_dlg_tower_bye_response = [[Соларскейл поднимается в воздух и прощается: "Что же, тогда я продолжу свой путь. Всего вам доброго".^ Драконесса улетает, оставляя меня одного.]], + first_dlg_tower_bye_thanks = 'Благодарю за помощь. Мне пора.', + first_dlg_tower_join = 'Я собираюсь отправиться к башне. Вы не составите мне компанию?', + first_dlg_tower_join_1 = 'Разве вы не хотите разобраться с башней?', + first_dlg_tower_join_2 = 'Мне не помешает ваша помощь.', + first_dlg_tower_join_3 = 'Я думал, нам, драконам, стоит держаться вместе.', + first_dlg_tower_join_response_2 = 'Соларскейл пожимает плечами: "Я бы не хотела здесь задерживаться".', + first_dlg_tower_join_response_fail = 'Соларскейл задумчиво смотрит на меня и осторожно отвечает: "Наверное, я предпочту продолжить свой путь".', + first_dlg_tower_join_response_fail_1 = 'Соларскейл задумчиво смотрит в сторону башни.', + first_dlg_tower_join_response_fail_3 = 'Соларскейл задумчиво смотрит на меня.', + first_dlg_tower_join_response_success_1 = 'Соларскейл поднимается в воздух и отвечает: "Почему нет? Я никуда не спешу".', + first_dlg_tower_join_response_success_3 = 'Соларскейл поднимается в воздух и отвечает: "Да, вы правы. Вперед!"', + first_dlg_tower_response = 'Соларскейл продолжает: "Башня выглядит вырезанной из цельного куска камня, я не смогла найти ни единого отверстия, ни единого стыка в ней. Я даже не уверена, что это не просто кусок камня".', + first_dlg_unusual = 'Вы не встречали поблизости ничего необычного?', + first_dlg_unusual_response = 'Соларскейл приподнимает крылья и задумчиво касается подбородка рукой: "Не припомню ничего интересного... Кроме башни из странного камня. Я не смогла попасть внутрь, но, может быть, у вас получится. Просто следуйте по этой тропинке".', + follow_refuse = 'Соларскейл отказывается следовать за мной.'; + follow_refuse_village = 'Со словами: "Я не могу изменять форму и не думаю, что местные жители будут рады меня видеть. Я подожду вас здесь", -- она усаживается на траву неподалеку.'; + follow_refuse_reactor = 'Со словами: "Здесь все придется сделать вам. У нас нет защитного костюма для меня", -- она вылетает в комнату управления.'; + solarscale_accept_help = 'Да, конечно.', + solarscale_ally_above_crater_life = 'Поравнявшись со мной, Соларскейл удивленно спрашивает: "Куда мы летим?"', + solarscale_ally_above_village = 'Я оборачиваюсь к Соларскейл, мерно взмахивающей крыльями позади меня. Она сообщает: "Нам, драконам, лучше не показываться людям в истинном обличии. Давайте не будем здесь задерживаться".', + solarscale_ally_ask_tea = 'Не хотите выпить чаю?', + solarscale_ally_ask_tea_response = 'Соларскейл кивает, улыбаясь: "Не откажусь".', + solarscale_ally_dlg_about_tower_1_1 = 'Полностью согласен с вами, это место потрясающе.', + solarscale_ally_dlg_about_tower_1_2 = 'Давайте осмотрим все, прежде чем делать выводы.', + solarscale_ally_dlg_about_tower_1_3 = 'Нам стоит быть осторожными, мы не знаем что это за место.', + solarscale_ally_dlg_about_tower_1_4 = 'Я не знаю, что сказать.', + solarscale_ally_dlg_above_crater_1 = 'Я хочу еще раз осмотреть окрестности.', + solarscale_ally_dlg_above_crater_1_response = 'Соларскейл согласно кивает: "Хорошо, давайте полетаем!"', + solarscale_ally_dlg_above_crater_2 = 'Вам не терпится попасть внутрь?', + solarscale_ally_dlg_above_crater_2_response = 'Соларскейл отвечает: "Разумеется! Мы не знаем как долго двери будут открыты!"', + solarscale_ally_dlg_above_crater_3 = 'Вам не терпится вернуться к ней?', + solarscale_ally_dlg_above_crater_3_response = 'Соларскейл восклицает: "Разумеется! Быть может вы сможете найти путь внутрь или увидеть что-то, что не заметила я".', + solarscale_ally_dlg_above_crater_enter = 'Соларскейл удивленно смотрит на меня и спрашивает: "Почему бы нам не направиться в башню?"', + solarscale_ally_dlg_after_tower = 'Что вы собираетесь делать дальше?', + solarscale_ally_dlg_after_tower_1 = 'Вернусь домой.', -- Full meaning is "I will return home" + solarscale_ally_dlg_after_tower_1_response = 'Соларскейл кивает: "Мы могли бы встречаться иногда здесь, если вы не против?"', + solarscale_ally_dlg_after_tower_2_response = 'Соларскейл отвечает: "Вы можете полететь со мной".', + solarscale_ally_dlg_after_tower_3 = 'Останусь здесь.', + solarscale_ally_dlg_after_tower_3_response = 'Соларскейл кивает: "Тогда я буду навещать вас, если вы не против?"', + solarscale_ally_dlg_after_tower_response = 'Соларскейл пожимает плечами: "После башни? Я хотела бы побывать дома -- мои странствия несколько затянулись и хочется немного покоя. А вы?"', + solarscale_ally_dlg_connection = 'Мне кажется, я установил какую-то связь с этой башней.', + solarscale_ally_dlg_connection_1 = 'Я слышу ее голос, он говорит "Добро пожаловать домой".', + solarscale_ally_dlg_connection_1_1 = 'Это именно то что я ощущаю здесь.', + solarscale_ally_dlg_connection_1_1_response = 'Соларскейл кивает: "Тогда нам стоит продолжать".', + solarscale_ally_dlg_connection_1_2 = 'Пока рано об этом говорить.', + solarscale_ally_dlg_connection_1_2_response = 'Соларскейл кивает: "Хорошо, давайте двигаться дальше".', + solarscale_ally_dlg_connection_1_3 = 'Мне это не нравится.', + solarscale_ally_dlg_connection_1_3_response = 'Соларскейл задумчиво пожимает плечами: "В любом случае, давайте продолжать".', + solarscale_ally_dlg_connection_1_response = 'Соларскейл задумчиво чешет подбородок: "И что вы думаете?"', + solarscale_ally_dlg_connection_2 = 'Пока не знаю.', + solarscale_ally_dlg_connection_2_response = 'Соларскейл кивает: "Мы можем обсудить это позже".', + solarscale_ally_dlg_connection_response = 'Соларскейл заинтересованно смотрит на меня: "Занятно, и что вы чувствуете?"', + solarscale_ally_dlg_end = '[Закончить диалог]', + solarscale_ally_dlg_enter_back_to_tower_1 = 'Соларскейл воодушевленно выкрикивает: "Давайте вернемся в башню!"', + solarscale_ally_dlg_enter_back_to_tower_2 = 'Соларскейл осторожно намекает: "Быть может нам уже пора вернуться к башне?"', + solarscale_ally_dlg_enter_back_to_tower_3 = 'Соларскейл восклицает: "Мне не терпится попасть в башню!"', + solarscale_ally_dlg_know_tower = 'Как вы узнали про башню?', + solarscale_ally_dlg_know_tower_1 = '[Рассказать о карте]', + solarscale_ally_dlg_know_tower_1_response = 'Соларскейл задумчиво произносит: "Удивительно, что вы не знали о башне". Немного позже она восклицает: "Нам надо исследовать ее!"', + solarscale_ally_dlg_know_tower_2_response = 'Соларскейл восклицает: "Нам надо исследовать ее!"', + solarscale_ally_dlg_know_tower_response_not_visited = 'Соларскейл отвечает: "Случайно. Мое внимание привлек кратер, и я решила исследовать его. Естественно, я решила начать с центра, где и обнаружила башню. Попасть внутрь я не смогла, потому решила осмотреться, так и встретила вас".', + solarscale_ally_dlg_know_tower_response_visited = 'Соларскейл отвечает: "Случайно. Мое внимание привлек кратер и я решила исследовать его. Естественно, я решила начать с центра, где и обнаружила башню. Попасть внутрь я не смогла, потому решила осмотреться, так и встретила вас. Я не знаю, почему дверь открылась когда мы вернулись".', + solarscale_ally_dlg_level_1_1 = 'У вас есть идеи, как открыть эту дверь?', + solarscale_ally_dlg_level_1_1_response = 'Соларскейл задумчиво произносит: "Пока не знаю. Надо все внимательно осмотреть".', + solarscale_ally_dlg_level_1_2_agree_response = 'Соларскейл берет шкатулку и внимательно осматривает, прежде чем вернуть ее мне. Наконец, она изрекает: "Четыре замочные скважины... Наверное, и ключи должны быть где-то здесь".', + solarscale_ally_dlg_level_1_2_response = 'Соларскейл подлетает ко мне: "Могу я взглянуть на шкатулку, что вы только что подняли?"', + solarscale_ally_dlg_level_1_3_1 = 'Нет, это ключи не от этой двери.', + solarscale_ally_dlg_level_1_3_1_or_2_response = '"Они здесь явно не просто так. Надо поискать повнимательнее", -- задумчиво сообщает драконесса.', + solarscale_ally_dlg_level_1_3_2 = 'Предположим, не подходит.', + solarscale_ally_dlg_level_1_3_3 = 'Я не проверял.', + solarscale_ally_dlg_level_1_3_3_response = 'Соларскейл задумчиво отвечает: "Надо бы проверить... Хотя это слишком просто..."', + solarscale_ally_dlg_level_1_3_response = 'Соларскейл спрашивает: "Вы уверены, что ни один из ключей не подходит к двери?"', + solarscale_ally_dlg_level_1_4_1_1_response = 'Драконесса еще некоторое время остается неподвижной, раздумывая, затем начинает перебирать ключи. Воскликнув: "Ага!" -- Она вставляет ключ за ключом в замочные скважины, и шкатулка разваливается в ее руках. Внутри шкатулки оказывается небольшой серебряный ключик. Соларскейл протягивает его мне со словами: "Попробуйте открыть им дверь".', + solarscale_ally_dlg_level_1_4_1_no_help_response = 'Соларскейл молча возвращает мне предметы.', + solarscale_ally_dlg_level_1_4_1_response = 'Соларскейл берет предметы у вас и раскладывает их на столе.', + solarscale_ally_dlg_level_1_4_1_response_positive = 'Немного подумав, она сообщает: "Кажется, у меня есть идея. Позволите попробовать?"'; + solarscale_ally_dlg_level_1_4_1_response_negative = 'Немного подумав, она делает вывод: "Боюсь, я не могу вам ничем помочь".', + solarscale_ally_dlg_level_1_4_response = 'Соларскейл подлетает ко мне и спрашивает: "Могу я взглянуть?" ', + solarscale_ally_dlg_level_2_1 = 'Вы увлекаетесь алхимией?', + solarscale_ally_dlg_level_2_1_1 = 'Жаль, мне не помешала бы ваша помощь.', + solarscale_ally_dlg_level_2_1_1_response = 'Соларскейл опускает глаза: "Надеюсь, смогу быть полезна в чем-нибудь другом".', + solarscale_ally_dlg_level_2_1_response = 'Соларскейл с сожалением отвечает: "Я мало что знаю об этом".', + solarscale_ally_dlg_level_3_1 = 'У вас есть какие-то мысли по поводу этой загадки?', + solarscale_ally_dlg_level_3_1_1_response = 'Соларскейл берет фигурки и неспешно, одну за другой, ставит их в отведенные углубления. Легкий щелчок дает нам понять, что дверь на следующий этаж башни открыта.', + solarscale_ally_dlg_level_3_1_response = 'Соларскейл кивает: "Да, есть идейка. Позволите попробовать?"', + solarscale_ally_dlg_level_3_1_response_negative = 'Соларскейл отрицательно мотает головой: "У меня нет никаких идей".', + solarscale_ally_dlg_level_4_1_1 = '[Позволить Соларскейл все сделать]', + solarscale_ally_dlg_level_4_1_1_response = 'Соларскейл последовательно зажигает свечи. В темноте одна за другой звучат ноты, а затем резкий порыв ветра распахивает дверцу в дальнем конце комнаты.', + solarscale_ally_dlg_level_4_1_response = 'Соларскейл задумчиво произносит: "Да, думаю, я могу помочь".', + solarscale_ally_dlg_level_4_1_response_negative = 'Соларскейл отрицательно мотает головой: "К сожалению, ничем не могу помочь".', + solarscale_ally_dlg_level_4_room_2_1 = 'Включайте!', + solarscale_ally_dlg_level_4_room_2_1_1 = '[Подойти к терминалу] Отлично, посмотрим.', + solarscale_ally_dlg_level_4_room_2_1_2 = 'Вы сможете отремонтировать его?', + solarscale_ally_dlg_level_4_room_2_1_2_1 = 'Да, разумеется.', + solarscale_ally_dlg_level_4_room_2_1_2_1_response = 'Соларскейл привычно разбирает компьютер и, заглянув в инструкцию, меняет сломанные детали на новые. Закончив, она собирает его обратно. "Посмотрите! Кажется, я даже смогла немного улучшить его!"', + solarscale_ally_dlg_level_4_room_2_1_2_2 = 'Спасибо, но я попробую сам.', + solarscale_ally_dlg_level_4_room_2_1_2_3 = 'Как думаете, где они могут быть?', + solarscale_ally_dlg_level_4_room_2_1_2_3_response = 'Соларскейл отвечает: "Этажом ниже был склад, кажется. Есть смысл начать поиск оттуда".', + solarscale_ally_dlg_level_4_room_2_1_2_response = 'Соларскейл заглядывает в коробку с запчастями и, немного покопавшись в ней, сообщает: "Думаю, справлюсь. Позволите?"', + solarscale_ally_dlg_level_4_room_2_1_2_response_negative = 'Соларскейл с сожалением сообщает: "Не думаю, что смогу помочь. Я никогда не встречала компьютеров такого типа".', + solarscale_ally_dlg_level_4_room_2_1_2_response_no_parts = 'Соларскейл задумчиво произносит: "Только если мы найдем запасные детали".', + solarscale_ally_dlg_level_4_room_2_1_response_fixed = 'Драконесса, посмотрев на экран, сообщает: "Заработал!"', + solarscale_ally_dlg_level_4_room_2_1_response_issue = 'Пролистав руководство, драконесса констатирует: "Похоже, не работает %broken%. Надо бы поискать замену".'; + -- One of the following will be inserted into the %broken% variable above + solarscale_ally_dlg_level_4_room_2_1_response_cpu = 'центральный процессор', + solarscale_ally_dlg_level_4_room_2_1_response_keyboard = 'контроллер клавиатуры', + solarscale_ally_dlg_level_4_room_2_1_response_motherboard = 'материнская плата', + solarscale_ally_dlg_level_4_room_2_1_response_network = 'сетевая карта".', + solarscale_ally_dlg_level_4_room_2_1_response_ram = 'оперативная память', + solarscale_ally_dlg_level_4_room_2_1_response_video = 'видеокарта', + solarscale_ally_dlg_level_4_room_2_1_response_turnon = 'Соларскейл включает компьютер.', + solarscale_ally_dlg_level_4_room_2_3 = 'Что мы можем сделать?', + solarscale_ally_dlg_level_4_room_2_3_response = 'Соларскейл пожимает плечами: "Отсюда, скорее всего, ничего. Давайте осмотрим другие помещения".', + solarscale_ally_dlg_light = 'У вас есть что-нибудь посветить?', + solarscale_ally_dlg_light_agree = 'Да, если вас не затруднит.', + solarscale_ally_dlg_light_agree_response = '"Не затруднит", -- отвечает с улыбкой Соларскейл и щелкает пальцами. Помещение заполняется слабым, но ровным светом.', + solarscale_ally_dlg_light_response = 'Соларскейл воодушевленно отвечает: "Есть один трюк в запасе, попробовать?"', + solarscale_ally_dlg_light_response_negative = 'Соларскейл с сожалением сообщает: "К сожалению, нет".', + solarscale_ally_dlg_not_now = 'Не сейчас.', + solarscale_ally_follow_life = 'Соларскейл следует за мной.', + solarscale_ally_follows = 'За моей спиной машет крыльями {Соларскейл}.', + solarscale_ally_glade = '{Соларскейл} неспешно прогуливается по полянке, любуясь природой. Время от времени она бережно срывает какой-то из цветков и укладывает в свою сумку.', + solarscale_ally_glade_answer = 'Соларскейл отвечает: "Нет, я не пролетала здесь. Красивое место, хочу осмотреть его поближе".', + solarscale_ally_glade_enter = 'Заметив мой взгляд, она поясняет: "Я собираю образцы для своей коллекции". Чуть позже она добавляет: "Очень красивое место. Мне нравится здесь".', -- This is appended to `solarscale_ally_glade`, with replaced { and } characters + solarscale_ally_glade_left = 'Соларскейл бросает прощальный взгляд на поляну и взмывает в воздух следом за мной.', + solarscale_ally_glade_life = 'Соларскейл опускается на землю следом за мной. Трава практически полностью скрывает драконессу от моего взора.', + solarscale_ally_glade_question = 'Вам знакомо это место?', + solarscale_ally_glade_suggestion = 'Соларскейл бегло осматривает окрестности. Ее взгляд задерживается на полянке внизу: "Я бы хотела приземлиться здесь, вы не против?"', + solarscale_ally_level_3_2 = 'Соларскейл сетует: "В этой темени вообще ничего не видно! Надо бы принести свет".', + solarscale_ally_near_tower = 'Соларскейл повторяет, обращаясь ко мне: "Скорее, пока проход открыт!"', + solarscale_ally_near_tower_life = 'Едва заметив открытый проем, Соларскейл бросается к нему и, замерев перед самым входом, обращается ко мне: "Скорее, пока он не закрылся!"', + solarscale_ally_no_help = 'Спасибо, тогда я попробую сам.', + solarscale_ally_outside = '{Соларскейл} летит следом за мной.', + solarscale_ally_reject_help = 'Спасибо, но я лучше попробую сам.', + solarscale_ally_terminal = 'Соларскейл рассматривает клавиатуру терминала.', + solarscale_ally_terminal_try = 'Она спрашивает: "Попробуем включить?"', + solarscale_ally_tower_first_enter = 'Соларскейл с восхищением смотрит на меня: "Эта башня невероятна! Я никогда не видела ничего подобного. А что вы думаете?"', + solarscale_ally_tower_level_1_life = 'Влетев в зал, Соларскейл взмывает под самый потолок и, немного покружив, возвращается ко мне.', + solarscale_ally_tower_level_1_room_2 = '{Соларскейл} сидит на столе, глядя на меня.', + solarscale_ally_tower_level_1_room_2_life = 'Соларскейл приземляется на стол, оглядываясь.', + solarscale_ally_tower_level_2 = '{Соларскейл} держится рядом со мной, взгляд ее мечется по комнате.', + solarscale_ally_tower_level_2_life = 'Соларскейл влетает в помещение и тут же замирает, широко раскрыв глаза. Изо рта ее вырывается лишь тихое "Вау!"', + solarscale_ally_tower_level_2_room_2 = '{Соларскейл} держится рядом со мной.', + solarscale_ally_tower_level_2_room_2_life = 'Соларскейл подлетает поближе ко мне.', + solarscale_ally_tower_level_3 = '{Соларскейл} задумчиво ходит вокруг стола. ', + solarscale_ally_tower_level_3_life = 'Бегло оглядев помещение, Соларскейл устремляется к столу. Сделав несколько кругов в воздухе, она приземляется на краешек.', + solarscale_ally_tower_level_3_room_2_dark = 'Я с трудом различаю во мраке очертания {Соларскейл}.', + solarscale_ally_tower_level_3_room_2_life = '"Ну и темень!" -- Слышу я звонкий голос Соларскейл.', + solarscale_ally_tower_level_3_room_2_lit = '{Соларскейл} висит над стеллажами, почти под самым потолком.', + solarscale_ally_tower_level_4 = '{Соларскейл} стоит на полу неподалеку от столика со свечами.', + solarscale_ally_tower_level_4_life = 'Влетев в комнату, Соларскейл сразу же приземляется рядом со столиком.', + solarscale_ally_tower_level_4_room_2 = '{Соларскейл} сидит на столе рядом с компьютером.', + solarscale_ally_tower_level_4_room_2_life = 'Влетев в помещение, Соларскейл на мгновение замирает, озираясь, после чего приземляется на стол рядом с компьютером.', + solarscale_dlg_enter_generic_1 = 'Соларскейл с улыбкой смотрит на меня.', + solarscale_dlg_enter_generic_2 = 'Соларскейл вопросительно смотрит на меня.', + solarscale_dlg_enter_generic_3 = 'Соларскейл тихо спрашивает: "Могу я чем-то помочь?"', + solarscale_do_you_have_any_ideas = 'У вас есть идеи, что мы должны сделать?', + solarscale_don_t_know = 'Не знаю.', + solarscale_let_me_try = 'Сначала я попробую сам.', + solarscale_let_me_try_2 = 'Что же, тогда я попробую сам.', + solarscale_nods_in_agreement = 'Соларскейл согласно кивает.', + solarscale_nods_silently = 'Соларскейл молча кивает.', + solarscale_pass_box = 'Протянуть шкатулку Соларскейл', + solarscale_pass_items_level_1 = 'Протянуть шкатулку, ключи и записку Соларскейл', + solarscale_used = 'Будет лучше просто поговорить.', + tea_end = 'Мы завершаем чаепитие молча, погруженные в свои мысли. Закончив, я возвращаю посуду и чай на место и мы возвращаемся к исследованию башни.', + tea_q1_darkness = 'Тьма.', -- Who built the tower + tea_q1_dragons = 'Драконы.', -- Who built the tower + tea_q1_i = 'Я.', -- Who built the tower + tea_q1_response_1 = 'Соларскейл пожимает плечами: "Но для чего она здесь?"', + tea_q1_response_1_tower_accepts = 'Соларскейл пожимает плечами: "Тем не менее она принимает вас... Но для чего она здесь?"', + tea_q1_response_dragons = 'Соларскейл задумчиво тянет: "Скорее всего. Но я не знаю ни одного кроме нас..." -- Чуть помолчав, она спрашивает: "Но для чего она здесь?"', + tea_q1_response_i = 'Соларскейл удивленно смотрит на меня и тихо спрашивает: "Для чего?"', + tea_q2_itself = 'Ни для чего. Она просто есть.', -- For whom the tower was built + tea_q2_me = 'Для меня.', -- For whom the tower was built + tea_q2_us = 'Для нас.', -- For whom the tower was built + tea_q2_other_dragons_1 = 'Немного помолчав, она спрашивает: "Так значит, вы думаете, что в этом мире есть еще драконы?"', + tea_q2_other_dragons_2 = 'Немного помолчав, она спрашивает: "Как вы думаете, в этом мире есть еще драконы?"', + tea_q2_r1 = 'Соларскейл пожимает плечами.', + tea_q2_r2 = 'Соларскейл пожимает плечами: "Кажется, так и есть".', + tea_q2_r3 = 'Соларскейл задумчиво смотрит в потолок.', + tea_q3_don_t_know_final = 'Я, правда, не знаю.', + tea_q3_alone = 'Нет, мы одни.', -- Are there other dragons in this world? + tea_q3_exist = 'Определенно, есть.', -- Are there other dragons in this world? + tea_q3_know_nothing = 'Если и есть, то я про них ничего не знаю.', -- Are there other dragons in this world? + tea_q3_thought_alone = 'До встречи с вами я думал, что я единственный.', -- Are there other dragons in this world? + tea_q3_r1 = 'Соларскейл задумчиво отворачивается: "Скорее всего, мы одни".', + tea_q3_r2 = 'Соларскейл пожимает плечами: "Возможно, но я не видела никого".', -- Speaking about other dragons + tea_q3_r_don_t_know = 'Соларскейл пожимает плечами и залпом допивает чай. Я следую ее примеру и возвращаете посуду и чай на место. Пора возвращаться к исследованию башни.', + tea_q3_r_try_again = 'Соларскейл внимательно смотрит на меня и переспрашивает: "И все же, предположите?"', + tea_start = 'Я разливаю чай, беру чашку и жестом приглашаю Соларскейл присоединиться. Драконесса делает глоток и спрашивает: "Как вы думаете, кто создал это башню?"', + }, + tower_locale = { + alchemy_book_dlg_disp = 'Алхимическая книга', + alchemy_book_dlg_enter = 'Передо мной лежит раскрытая на оглавлении книга алхимических рецептов. Некоторые из них привлекают мое внимание.', + alchemy_book_dlg_leave = '[Отойти от книги]', + alchemy_book_dlg_light = 'Свет', + alchemy_book_dlg_light_response = [[Состав: Свеча, стекло, %catalyst%. ^Зелье быстро испаряется. Эффект длится от одного до трех часов.]], -- disp2(nominative, lowercase) is used for catalyst + alchemy_book_dlg_open = 'Открытие', + alchemy_book_dlg_open_response = [[Состав: ключ, замок, %catalyst%. ^Зелье вылить в замок, который необходимо открыть.]], -- disp2(nominative, lowercase) is used for catalyst + alchemy_book_dlg_rich = 'Обогащение', + alchemy_book_dlg_rich_response = [[Состав: драгоценный металл, драгоценный камень, %catalyst%. ^Выпейте это зелье и вы обогатитесь. Осторожно, радиоактивно!]], -- disp2(nominative, lowercase) is used for catalyst + blue_catalyst_disp = 'Синий катализатор', + blue_catalyst_disp2 = 'синий катализатор', + blue_catalyst_disp3 = 'синий катализатор', + blue_catalyst_dsc = 'На одной из полок стоит {пробирка с синей жидкостью}.', + blue_catalyst_inv = 'Пробирка с синей жидкостью, подписанная словом "Катализатор".', + green_catalyst_disp = 'Зеленый катализатор', + green_catalyst_disp2 = 'зеленый катализатор', + green_catalyst_disp3 = 'зеленый катализатор', + green_catalyst_dsc = 'В одном из шкафчиков стоит {пробирка с зеленой жидкостью}.', + green_catalyst_inv = 'Пробирка с зеленой жидкостью, подписанная словом "Катализатор".', + purple_catalyst_disp = 'Фиолетовый катализатор', + purple_catalyst_disp2 = 'фиолетовый катализатор', + purple_catalyst_disp3 = 'фиолетовый катализатор', + purple_catalyst_dsc = 'На одном из столов стоит {пробирка с фиолетовой жидкостью}.', + purple_catalyst_inv = 'Пробирка с фиолетовой жидкостью, подписанная словом "Катализатор".', + red_catalyst_disp = 'Красный катализатор', + red_catalyst_disp2 = 'красный катализатор', + red_catalyst_disp3 = 'красный катализатор', + red_catalyst_dsc = 'На одном из столов стоит {пробирка с красной жидкостью}.', + red_catalyst_inv = 'Пробирка с красной жидкостью, подписанная словом "Катализатор', + turquoise_catalyst_disp = 'Бирюзовый катализатор', + turquoise_catalyst_disp2 = 'бирюзовый катализатор', + turquoise_catalyst_disp3 = 'бирюзовый катализатор', + turquoise_catalyst_dsc = 'На одной из полок стоит {пробирка с бирюзовой жидкостью}.', + turquoise_catalyst_inv = 'Пробирка с бирюзовой жидкостью, подписанная словом "Катализатор".', + yellow_catalyst_disp = 'Желтый катализатор', + yellow_catalyst_disp2 = 'желтый катализатор', + yellow_catalyst_disp3 = 'желтый катализатор', + yellow_catalyst_dsc = 'В одном из шкафчиков стоит {пробирка с желтой жидкостью}.', + yellow_catalyst_inv = 'Пробирка с желтой жидкостью, подписанная словом "Катализатор".', + candle_disp = 'Свечка', + candle_disp2 = 'свечка', + candle_disp3 = 'свечку', + candle_inv = 'Небольшая свечка из тусклого белого воска. В ней нет совершенно ничего необычного.', + catalyst_tak = 'Я забираю пробирку себе. На нее наклеен кусочек бумаги с надписью "Катализатор".', + cauldron_inside_disp = 'Котел', + cauldron_inside_enter_many_items = 'В котле сейчас находятся:', + cauldron_inside_enter_potion = 'В котле приготовлено %potion%.', -- %potion% is in nominative, lowercase + cauldron_inside_enter_single_item = 'В котле сейчас находится %item%.', -- %item% is in nominative, lowercase + cauldron_inside_enter_water = 'Котел полон кипящей воды.', + cauldron_inside_leave = '[Отойти от котла]', + cauldron_inside_take_items = '[Забрать все из котла]', + cauldron_inside_take_potion = '[Забрать зелье]', + cauldron_inside_take_potion_response = 'Я набираю получившееся зелье в пробирку.', + cups_disp = 'Чашечки', + cups_dsc = 'На столе стоят две миниатюрные фарфоровые {чашечки}, украшенные серебристыми цветочками.', + cups_inv_act = 'Две миниатюрные фарфоровые чашечки, украшенные серебристыми цветочками.', + cups_kettle = 'Я хочу чай, а не воду.', + cups_no_need = 'Мы уже попили чаю.', + cups_no_tea = 'Сначала следует заварить чай.', + cups_should_be_placed = 'Чашечки лучше поставить на какую-нибудь поверхность.', + emerald_disp = 'Изумруд', + emerald_disp2 = 'изумруд', + emerald_disp3 = 'изумруд', + emerald_inv = 'Небольшой, изящно ограненный изумруд. Очень красивый.', + figure_common_inv = 'Очень детально проработанная, она закреплена на шестиугольном основании из того же металла.'; + figure_knight_disp = 'Фигурка рыцаря', + figure_knight_disp2 = 'фигурка рыцаря', + figure_knight_disp3 = 'фигурку рыцаря', + figure_knight_inv = 'Фигурка рыцаря в полном доспехе, стоящего, опершись на громадный двуручный меч. Сделана из неизвестного мне серебристого металла.', + figure_lion_disp = 'Фигурка льва', + figure_lion_disp2 = 'фигурка льва', + figure_lion_disp3 = 'фигурку льва', + figure_lion_inv = 'Фигурка льва, гордо осматривающего свои владения. Сделана из неизвестного мне серебристого металла.', + figure_tiger_disp = 'Фигурка тигра', + figure_tiger_disp2 = 'фигурка тигра', + figure_tiger_disp3 = 'фигурку тигра', + figure_tiger_inv = 'Фигурка тигра, вставшего на задние ноги, из неизвестного мне серебристого металла.', + figure_tower_disp = 'Фигурка башни', + figure_tower_disp2 = 'фигурка башни', + figure_tower_disp3 = 'фигурку башни', + figure_tower_inv = 'Фигурка высокой шестиугольной башни -- уменьшенной копии той, в которой я сейчас нахожусь. Сделана из неизвестного мне серебристого металла.', + figure_wolf_disp = 'Фигурка волка', + figure_wolf_disp2 = 'фигурка волка', + figure_wolf_disp3 = 'фигурку волка', + figure_wolf_inv = 'Фигурка волка, воющего на луну, из неизвестного мне серебристого металла.', + flask_disp = 'Флакончик', + flask_disp2 = 'флакончик', + flask_disp3 = 'флакончик', + flask_inv = 'Небольшой стеклянный флакончик, сейчас он пуст.', + inside_box_decor = 'Небольшая деревянная шкатулка, украшенная тонкими серебряными орнаментами. В одной из граней шкатулки я вижу обрамленный серебром счетчик с цифрами: %numbers%. Под счетчиком есть четыре замочные скважины.', + inside_box_keyhole_1_empty = '{Первая скважина} пуста.', + inside_box_keyhole_1_key = 'В первую скважину вставлен {%key%}.', -- Ensure that {%key%} is not the first word in the sentence, as it will be lower-case, it will also be in nominative case + inside_box_keyhole_2_empty = '{Вторая скважина} пуста.', + inside_box_keyhole_2_key = 'Во вторую скважину вставлен {%key%}.', -- Ensure that {%key%} is not the first word in the sentence, as it will be lower-case, it will also be in nominative case + inside_box_keyhole_3_empty = '{Третья скважина} пуста.', + inside_box_keyhole_3_key = 'В третью скважину вставлен {%key%}.', -- Ensure that {%key%} is not the first word in the sentence, as it will be lower-case, it will also be in nominative case + inside_box_keyhole_4_empty = '{Четвертая скважина} пуста.', + inside_box_keyhole_4_key = 'В четвертую скважину вставлен {%key%}.', -- Ensure that {%key%} is not the first word in the sentence, as it will be lower-case, it will also be in nominative case + inside_box_keyhole_act_empty = 'Небольшая замочная скважина.', + inside_box_keyhole_act_key = 'Я вытаскиваю %key% из скважины.', + inside_box_keyhole_used_has_key = 'В скважине уже есть ключ.', + inside_box_keyhole_used_insert_key = 'Я вставляю %key% в скважину и поворачиваю его. Число на счетчике изменяется.', + inside_box_keyhole_used_open = 'В коробочке что-то щелкает и она открывается. Внутри я нахожу небольшой серебряный ключик.', + kettle_boil_empty = 'Бессмысленно кипятить пустой чайник.', + kettle_disp = 'Чайник', + kettle_disp2 = 'чайник', + kettle_disp3 = 'чайник', + kettle_disp_hot_water = 'Чайник с кипятком', + kettle_disp_water = 'Чайник с водой', + kettle_dsc = 'На столешнице стоит {чайник}.', + kettle_inv = 'Самый обычный металлический чайник.', + kettle_inv_empty = 'Сейчас он пуст.', + kettle_inv_hot_water = 'Сейчас он наполнен кипятком.', + kettle_inv_water = 'Сейчас он полон холодной воды.', + kettle_tak = 'Я забираю чайник.', + kettle_tak_no = 'Мне это ни к чему.', + kitchen_key_disp = 'Железный ключик', + kitchen_key_disp2 = 'железный ключик', + kitchen_key_disp3 = 'железный ключик', + kitchen_key_inv = 'Небольшой железный ключик. Головка украшена резным узором.', + part_box_disp = 'Коробка с запчастями', + part_box_disp2 = 'коробка с запчастями', + part_box_disp3 = 'коробку с запчастями', + part_box_dsc = 'На одном из стеллажей стоит {коробка} с запасными платами для компьютера.', + part_box_inside_dsc = 'Большая коробка, внутри нее я вижу следующие детали:', + part_box_tak = 'Я бегло просматриваю платы. Ни один чип не промаркирован известным мне производителем. О назначении плат я могу догадываться только по разъемам на них. Я забираю коробку с собой.', + part_box_used = 'Я кладу деталь в коробку.', + password_note_disp = 'Записка', + password_note_disp2 = 'записка', + password_note_disp3 = 'записку', + password_note_inv = 'В записке написано только: "%password%". Я снова узнаю свой почерк!', + potion_enrichment_disp = 'Зелье обогащения', + potion_enrichment_disp2 = 'зелье обогащения', + potion_enrichment_disp3 = 'зелье обогащения', + potion_enrichment_inv = 'Сваренное мной зелье обогащения сияет словно настоящее золото. Когда я встряхиваю пробирку, мне слышится в ней звон монет.', + potion_light_disp = 'Зелье света', + potion_light_disp2 = 'зелье света', + potion_light_disp3 = 'зелье света', + potion_light_inv = 'Сваренное мной зелье света совершенно прозрачно и источает легкий аромат свежести, как воздух после грозы.', + potion_light_inv_used = 'Я открываю флакончик с зельем света и выплескиваю жидкость в воздух. Она практически мгновенно обращается в светящийся пар, заполняющий все вокруг.', + potion_open_disp = 'Зелье открытия', + potion_open_disp2 = 'зелье открытия', + potion_open_disp3 = 'зелье открытия', + potion_open_inv = 'Сваренное мной зелье открытия пахнет ржавым металлом и имеет неприятный рыжевато-серый цвет. Пробирка горячая на ощупь.', + protection_suit_disp = 'Костюм рад. защиты', + protection_suit_dsc = 'В нем стоит серебристый {костюм радиационной защиты}.', + protection_suit_inv_not_here = 'Я не стану снимать защитный костюм здесь. Это небезопасно.', + protection_suit_inv_remove = 'Я снимаю костюм радиационной защиты.', + protection_suit_tak = 'Я надеваю защитный костюм.', + + reactor_control_panel_diagnostic = '[Диагностика]', + reactor_control_panel_diagnostic_resp_1 = 'Я нажимаю кнопку диагностики и через некоторое время на экране высвечиваются результаты:', + reactor_control_panel_diagnostic_resp_2 = 'Температура реактора в норме.', + reactor_control_panel_diagnostic_resp_3 = 'Автоматическая система управления в норме.', + reactor_control_panel_diagnostic_resp_4 = 'Ручная система управления в норме.', + reactor_control_panel_diagnostic_resp_performance = 'Производительность:', + reactor_control_panel_diagnostic_resp_rods_bad = 'Топливные стержни требуют замены. Включен режим энергосбережения.', + reactor_control_panel_diagnostic_resp_rods_ok = 'Топливные стержни в норме.', + reactor_control_panel_diagnostic_resp_rods_up = 'Топливные стержни подняты. Диагностика невозможна. Включен режим энергосбережения.', + reactor_control_panel_disp = 'Панель управления реактором', + reactor_control_panel_enter = 'Передо мной расположена панель управления реактором. На небольшом алфавитно-цифровом дисплее светится надпись: "Введите команду".', + reactor_control_panel_leave = '[Отойти от панели управления]', + reactor_control_panel_lower_rods = '[Погрузить топливные стержни]', + reactor_control_panel_raise_rods = '[Извлечь топливные стержни]', + reactor_control_panel_rods_response = 'Из камеры реактора доносится ровный гул, изрядно заглушенный толстыми стенами.', + service_manual_disp = 'Обслуживание и ремонт', + service_manual_dsc = [[ + В обычных ситуациях обслуживание не требуется, однако вам может потребоваться замена комплектующих терминала на более производительные. ^ + Важно: Перед проведением любых операций отключите терминал от сети!^ + + Замена материнской платы: ^ + -- Вы можете использовать любую материнскую плату формата DTMB1^ + -- Перед заменой материнской платы отключите все устройства от нее^ + -- Открутите все винты, держащие материнскую плату (см. приложение 6)^ + -- Извлеките материнскую плату^ + -- Установите новую плату на место текущей^ + -- Прикрутите винты для закрепления платы внутри корпуса (см. приложение 6)^ + -- Установите совместимые процессор, память, контроллер клавиатуры, видеоадаптер и сетевой адаптер^ + + Замена процессора:^ + -- Извлеките старый процессор^ + -- Установите новый процессор^ + Важно: На текущий момент материнские платы форм-фактора DTMB1 выпускаются с разъемами центральных процессоров CAX, CVX и CRX. Сохраняется обратная совместимость плат со старыми процессорами, таким образом:^ + -- Процессор CAX можно установить на платы с разъемами CAX, CVX и CRX^ + -- Процессор CVX можно установить на платы с разъемами CVX и CRX^ + -- Процессор CRX можно установить на платы с разъемом CRX^ + + Замена оперативной памяти:^ + -- Извлеките старый модуль памяти^ + -- Установите новый модуль памяти^ + Важно: На текущий момент материнские платы форм-фактора DTMB1 выпускаются с разъемами модулей памяти RKT, RST, RDT. Сохраняется обратная совместимость плат со старыми модулями памяти, таким образом:^ + -- Память RKT можно установить на платы с разъемами RKT, RST и RDT^ + -- Память RST можно установить на платы с разъемами RST и RDT^ + -- Память RDT можно установить на платы с разъемом RDT^ + + Замена устройств расширения: + -- Извлеките старое устройство^ + -- Установите новое устройство^ + На текущий момент материнские платы форм-фактора DTMB1 выпускаются с разъемами ISB, вы можете использовать только ISB совместимые устройства с данными платами.^ + + Маркировки совместимых устройств:^ + 1. Материнские платы^ + Материнские платы формата DTMB1 имеют маркировку вида <ЦП>-<Память>-I<Кол-во разъемов>SB. Пример: + CAX-RKT-I2SB -- материнская плата для процессора CAX, поддерживающая память RKT и имеющая два разъема дополнительных устройств.^ + 2. Процессоры^ + Процессор обычно имеет маркировку CPU<Индекс>-<Разъем>-<Частота>, где X -- буква, означающая поколение ЦП. Поколение ЦП не влияет на совместимость с материнской платой. + Пример: MCPU50-CVX-5MHz -- процессоры поколения M с частотой 5МГц и разъемом CVX.^ + 3. Память^ + Память обычно имеет маркировку <Разъем>-M<Индекс>-<Объем>. Пример: RST-M8-8MB -- модуль объемом 8 мегабайт для разъема RST.^ + 4. Видеоадаптеры^ + На текущий момент существует два типа видеоадаптеров для терминалов TETS-1: серия TVA представляет собой адаптер с возможностью только текстового вывода, серия GVA -- адаптер с возможностью графического вывода.^ + 5. Сетевые адаптеры^ + Сетевые адаптеры для терминалов TETS-1 имеют маркировку FNA-<Индекс>-<Скорость>.^ + 5. Контроллер клавиатуры^ + Контроллеры клавиатуры для терминалов TETS-1 имеют маркировку KBC-<Поколение>. + ]], + silver_fork_disp = 'Серебряная вилка', + silver_fork_disp2 = 'серебряная вилка', + silver_fork_disp3 = 'серебряную вилку', + silver_fork_dsc = 'На одном из столов лежит кем-то забытая {серебряная вилка}.', + silver_fork_inv = 'Изящная серебряная вилка. Скорее всего, недешевая.', + silver_fork_tak = 'Интересно, почему ее не убрали в шкаф. Я забираю вилку с собой.', + system_unit_check_1_long_1_short_1_long = 'Я слышу последовательность звуковых сигналов: один длинный, один короткий и еще один длинный.', + system_unit_check_1_long_2_short = 'Я слышу последовательность звуковых сигналов: один длинный и два коротких.', + system_unit_check_1_short_2_long = 'Я слышу последовательность звуковых сигналов: один короткий и два длинных.', + system_unit_check_3_long = 'Я слышу последовательность звуковых сигналов: три длинных.', + system_unit_check_fail = 'Вентилятор в блоке питания начинает шуметь, но экран не включается.', + system_unit_check_network_fail = 'Сначала компьютер, кажется, включился нормально, однако затем появилось сообщение об отсутствующем загрузочном устройстве.', + system_unit_check_no_sound = 'Я не слышу никаких звуковых сигналов.', + system_unit_check_turn_on = 'Я включаю компьютер.', + system_unit_decor = 'Я заглядываю внутрь системного блока и осматриваю установленные в нем компоненты. Довольно легко я определяю где находится оперативная память, процессор, платы расширения. Маркировки чипов и типы разъемов, однако, вне этой башни мне не встречались.', + system_unit_disp = 'Системный блок', + teabox_disp = 'Коробочка с чаем', + teabox_inv = 'Металлическая коробочка, заполненная ароматными листьями черного чая.', + teapot_disp = 'Заварочный чайник', + teapot_inv_empty = 'Белоснежный фарфоровый чайничек, украшенный узором из серебристых цветочков.', + teapot_inv_leaves = 'Белоснежный фарфоровый чайничек, украшенный узором из серебристых цветочков. Внутри лежат чайные листья.', + teapot_inv_tea = 'Белоснежный фарфоровый чайничек, украшенный узором из серебристых цветочков, полный свежего чая.', + teapot_used_already = 'Чайник уже полон.', + teapot_used_already_tea = 'В чайнике уже достаточно листьев.', + teapot_used_cold_water = 'В холодной воде чай не заварится.', + teapot_used_empty_kettle = 'А что я хочу налить из пустого чайника?', + teapot_used_filled = 'Я наливаю воду в чайник. Чай готов!', + teapot_used_no_tea = 'Сначала необходимо положить чайные листья.', + teapot_used_tea_added = 'Я кладу немного листьев в чайник.', + terminal_manual_disp = 'Руководство пользователя терминала TETS-1', + terminal_manual_dsc = [[Содержание:^ + 1. Комплект поставки^ + 2. Подключение^ + 3. Использование^ + 4. {@walk service_manual|Обслуживание и ремонт}^ + 5. {@walk troubleshooting_manual|Решение проблем}^ + ]], + tool_box_disp = 'Набор отверток', + tool_box_disp2 = 'набор отверток', + tool_box_disp3 = 'набор отверток', + tool_box_dsc = 'На одной из полок я вижу коробочку с {набором отверток}.', + tool_box_inv = 'Набор отверток для электроники. Нигде на коробке нет никаких отметок о производителе. Отвертки при этом очень качественно изготовлены и выглядят как новые.', + tower_2_door_act_closed = 'Дверь сделана из того же материала, что и стены. Сейчас она заперта. Я замечаю в ней небольшую замочную скважину, обрамленную серебром.', + tower_2_door_act_open = 'Дверь сделана из того же материала, что и стены. Сейчас она открыта, за ней я вижу лестницу из такого же черного камня.', + tower_2_door_dsc_closed = 'Массивная {дверь} преграждает проход в остальные помещения башни.', + tower_2_door_dsc_open = 'Массивная {дверь} открыта. За ней виднеется {#stairwell|лестница} на следующий этаж башни.', + tower_2_door_used_potion = 'Я выливаю зелье в замок и его моментально съедает ржавчина. Путь свободен.', + tower_accept_1_walls = 'Холодные и безжизненные стены кажутся чуждыми этому миру. Одно прикосновение к этой гладкой, напоминающей стекло на ощупь, поверхности вызывает у меня невольное содрогание.', + tower_accept_2_walls = 'Стены сделаны из неизвестного мне черного камня. На плитах нет никаких следов времени -- ни единой царапины, ни единого скола, ни единой выщербины. На ощупь эта гладкая и холодная поверхность напоминает стекло.', + tower_accept_3_walls = 'Крепкие черные стены кажутся нерушимыми. Даже само время не властно над ними.', + tower_blue_key_disp = 'Синий ключ', + tower_blue_key_disp2 = 'синий ключ', + tower_blue_key_disp3 = 'синий ключ', + tower_blue_key_inv = 'Небольшой ключик из синеватого металла.', + tower_candelabra_dsc = 'Изящный канделябр на семь свечей.', + tower_candelabra_enter = 'Едва мой взгляд падает на канделябр, как в темноте раздается последовательность звуков:', + tower_candle_1 = 'Зажечь первую свечу', + tower_candle_2 = 'Зажечь вторую свечу', + tower_candle_3 = 'Зажечь третью свечу', + tower_candle_4 = 'Зажечь четвертую свечу', + tower_candle_5 = 'Зажечь пятую свечу', + tower_candle_6 = 'Зажечь шестую свечу', + tower_candle_7 = 'Зажечь седьмую свечу', + tower_gold_key_disp = 'Золотой ключ', + tower_gold_key_disp2 = 'золотой ключ', + tower_gold_key_disp3 = 'золотой ключ', + tower_gold_key_inv = 'Небольшой ключик из золотистого металла.', + tower_green_key_disp = 'Зеленый ключ', + tower_green_key_disp2 = 'зеленый ключ', + tower_green_key_disp3 = 'зеленый ключ', + tower_green_key_inv = 'Небольшой ключик из зеленоватого металла.', + tower_hint_1_disp = 'Клочок бумаги', + tower_hint_1_inv = 'Небольшой клочок бумаги, на котором написано число %target%. Удивительно, но написано оно моим почерком!', + tower_level_1_box_disp = 'Шкатулка', + tower_level_1_box_dsc = 'На одном из столов лежит небольшая украшенная серебром {шкатулка}.', + tower_level_1_box_inv = 'Я уже рассматриваю шкатулку.', + tower_level_1_box_tak = 'Я забираю шкатулку себе. Под ней я обнаруживаю небольшой клочок бумаги. Я прихватываю и его.', + tower_level_1_candelabra = 'Изящные серебряные канделябры совершенно одинаковы. На каждом из них установлено по три свечи, дающих слабый мерцающий свет, явно недостаточный для того чтобы осветить зал.', + tower_candelabra_candle_missing = 'Одна из свечей отсутствует.', + tower_candelabra_candle_taken = 'Немного подумав, я забираю одну из свечей.', + tower_level_1_candelabra_keys = 'Я замечаю связку ключей, лежащую у одного из канделябров.', + tower_level_1_ceiling = 'Черный сводчатый потолок скрыт в темноте. До него около пяти метров -- весьма высоко для человека, но недостаточно для моего истинного обличия.', + tower_level_1_chairs = 'Старинные стулья с резными спинками выглядят одновременно массивными и изящными.', + tower_level_1_decor = 'Башня встречает меня давящей темнотой и прохладой. Черные {tower_walls|стены} и {#ceiling|потолок} зала тонут во мраке. В зале стоят четыре огромных {#tables|стола}, покрытых белыми скатертями. На каждом стоят по три красивых серебряных {#candelabra|канделябра}. У столов расставлены массивные деревянные {#chairs|стулья}.', + tower_level_1_disp = 'Башня, первый этаж', + tower_level_1_door_act_closed = 'Дверь заперта. Я замечаю в ней небольшую замочную скважину, обрамленную серебром.', + tower_level_1_door_act_open = 'Дверь открыта, за ней я вижу лестницу, сделанную из того же материала, что и стены башни.', + tower_level_1_door_closed = 'Массивная {дверь} из того же материала, что и стены, преграждает проход в остальные помещения башни.', + tower_level_1_door_open = 'Массивная {дверь} из того же материала, что и стены, открыта. За ней виднеется {#stairwell|лестница} на следующий этаж башни.', + tower_level_1_door_use_correct_key = 'Я вставляю ключ в скважину. Замок работает идеально, и ключ поворачивается очень легко. Дверь открывается почти без усилий, открывая проход на следующий этаж.', + tower_level_1_keys = 'Рядом с одним из канделябров лежит {связка ключей}.', + tower_level_1_keys_take = 'Я забираю ключи себе.', + tower_level_1_kitchen_door = 'В одной из стен есть еще одна {дверца}.', + tower_level_1_kitchen_door_act_closed = 'Неприметная деревянная дверца. Она заперта. Я не вижу никаких способов открыть ее.', + tower_level_1_kitchen_door_act_open = 'Дверь слегка приоткрыта.', + tower_level_1_kitchen_door_used_key = 'Здесь некуда вставить ключ.', + tower_level_1_kitchen_door_used_potion = 'Здесь нет замка, чтобы вылить в него зелье.', + tower_level_1_room_2_cabinets1_act_tea_and_teapot = 'Я забираю коробочку чая из шкафчика. Там же обнаруживается небольшой фарфоровый чайничек. Я забираю и его.', + tower_level_1_room_2_cabinets1_act_tea_ask = 'В одном из шкафов обнаруживается коробочка чая. Интересно, не желает ли Соларскейл устроить небольшое чаепитие?', + tower_level_1_room_2_cabinets2_act_cups = 'В одном из шкафчиков я нахожу две небольшие фарфоровые чашечки. Я забираю их.', + tower_level_1_room_2_cabinets2_act_note = 'В одном из шкафчиков я обнаруживаю кем-то оставленную записку. Я забираю ее себе.', + tower_level_1_room_2_cabinets_act_empty = 'В шкафах только посуда и различные столовые приборы.', + tower_level_1_room_2_decor = 'По периметру этой просторной комнаты расположена узкая {#tabletop|столешница} из черного камня, под которой расположились всевозможные {#cabinets1|шкафчики}. Над столешницей находятся навесные {#cabinets2|шкафы}. В углу стоит старинный {#fridge|холодильник}. В углу напротив стоит электрическая {#stove|плита}. Рядом с плитой находится {#kitchen_sink|раковина}. В помещении царит такой же тихий и уютный полумрак, что и в большинстве помещений башни.', + tower_level_1_room_2_disp = 'Башня, кухня', + tower_level_1_room_2_door_act_locked = 'Дверца заперта. Резной узор украшает железную накладку замка.', + tower_level_1_room_2_door_act_open = 'За приоткрытой дверцей я вижу столовую башни.', + tower_level_1_room_2_door_dsc = 'В одной из стен расположена небольшая деревянная {дверца}.', + tower_level_1_room_2_door_used = 'Я открываю дверь ключиком.', + tower_level_1_room_2_fridge = 'Такие холодильники были в ходу в 60-е. Но этот выглядит словно вчера сошел с конвейера. Заглянув внутрь, я обнаруживаю пустые полки.', + tower_level_1_room_2_hook_act_empty = 'На крючке ничего нет.', + tower_level_1_room_2_hook_act_key = 'Я забираю ключик.', + tower_level_1_room_2_hook_dsc_empty = 'Рядом с дверью в стену вбит небольшой медный {крючок}.', + tower_level_1_room_2_hook_dsc_key = 'На медном крючке рядом с дверью висит {железный ключик}.', + tower_level_1_room_2_kitchen_sink = 'Полированная поверхность каменной раковины, врезанной в столешницу, блестит в свете электрических ламп.', + tower_level_1_room_2_kitchen_sink_used_full = 'Чайник уже полон.', + tower_level_1_room_2_kitchen_sink_used_water = 'Я наполняю чайник водой.', + tower_level_1_room_2_put_cups = 'Я ставлю чашечки на столешницу.', + tower_level_1_room_2_stove_act = 'Электрическая плита на четыре конфорки с электрической же духовкой. Со своими электронными элементами управления она выглядит слишком современной для этого места.', + tower_level_1_room_2_stove_used_hot = 'Вода в чайнике уже горячая.', + tower_level_1_room_2_stove_used_power = 'Без электричества ничего не получится.', + tower_level_1_room_2_stove_used_teapot = 'Я ставлю чайник на плиту и через несколько минут вода в нем закипает.', + tower_level_1_room_2_tabletop = 'Столешница сделана из того же материала, что и стены. Прочность этого холодного и гладкого камня не вызывает сомнений.', + tower_level_1_stairwell = 'Широкая и пологая лестница из черного гладкого камня, ведущая на следующий этаж башни.', + tower_level_1_tables = 'Массивные столы из черного дерева покрыты белыми, расшитыми серебром скатертями. Пыли на столах нет, словно их накрыли совсем недавно. За каждым из них можно уместить несколько десятков человек.', + tower_level_1_tables_box = 'На одном из столов стоит шкатулка.', + tower_level_2_airlock_ceiling = 'Свинцовый потолок находится на высоте около двух метров. Металл значительно снижает уровень радиации внутри, однако он не блокирует ее полностью. Лучше здесь не задерживаться.', + tower_level_2_airlock_decor = 'Свинцовые {#walls|стены} этой каморки предназначены для защиты находящихся в ней от мощного радиационного излучения. На {#ceiling|потолке} расположена единственная {#lamp|лампа}, дающая слабый красноватый свет. Думаю, что не стоит здесь задерживаться.', + tower_level_2_airlock_disp = 'Башня, шлюз', + tower_level_2_airlock_lamp = 'Лампа аварийного света, такая же как и в комнате управления.', + tower_level_2_airlock_locker_act = 'Судя по табличке на шкафчике, он предназначен для хранения защитного костюма.', + tower_level_2_airlock_locker_dsc = 'У одной из стен установлен небольшой свинцовый {шкафчик}.', + tower_level_2_remove_suit = 'Я снимаю костюм радиационной защиты и оставляю его в шкафчике.', + tower_level_2_airlock_walls = 'Металл, из которого сделаны эти стены, значительно снижает уровень радиации внутри, однако он не блокирует ее полностью. Лучше здесь не задерживаться.', + tower_level_2_book = 'На одном из столов лежит раскрытая {книга}.', + tower_level_2_cabinet_vials = 'В одном из шкафчиков я обнаруживаю две пробирки с цветными жидкостями.', + tower_level_2_cabinets = 'Большая часть шкафчиков не содержат ничего интересного, не считая различных алхимических приборов.', + tower_level_2_cannot_be_thrown = 'Незачем это делать.', + tower_level_2_cauldron_used = 'Я помещаю %item% в котел.', + tower_level_2_decor = 'Второй этаж башни представляет собой алхимическую лабораторию. Вдоль {tower_walls|стен} расположены {#tables|столы} и {#racks|стеллажи}. Над некоторыми столами висят {#cabinets|шкафчики}. В центре зала установлен громадный {tower_cauldron|котел}, под которым пылает {#fire|огонь}.', + tower_level_2_disp = 'Башня, второй этаж', + tower_level_2_fire = 'Яркий огонь, кажется, совсем не греет. Свет от него едва разгоняет наполняющую зал тьму.', + tower_level_2_key_disp = 'Серебряный ключик', + tower_level_2_key_dsc = 'Маленький серебряный ключик с изысканной резной головкой.', + tower_level_2_potion_in_the_cauldron = 'Зелье в котле уже готово.', + tower_level_2_potion_ready = 'Зелье готово!', + tower_level_2_rack_vials = 'На одной из полок я обнаруживаю две пробирки с цветными жидкостями.', + tower_level_2_racks = 'Прочные деревянные стеллажи заполнены пробирками, колбочками и пузырьками. Большинство из них пусты.', + tower_level_2_reactor_disp = 'Башня, реактор', + tower_level_2_reactor_enter_alone = 'Воздух здесь пахнет озоном, а на языке ощущается легкий металлический привкус.', + tower_level_2_reactor_enter_solarscale = 'Соларскейл преграждает мне путь. "Я вас туда не пропущу без защитного костюма. Это опасно", -- констатирует она.', + tower_level_2_reactor_rods_act_lowered = 'Надо поднять стержни, чтобы я мог их осмотреть.', + tower_level_2_reactor_rods_act_raised = 'Длинные металлические стержни. Должно быть, внутри них находятся топливные элементы для работы реактора. Я не могу оценить их состояние на глаз.', + tower_level_2_reactor_rods_dsc_lowered = '{Топливные стержни} реактора сейчас погружены.', + tower_level_2_reactor_rods_dsc_raised = '{Топливные стержни} реактора сейчас подняты и я могу получить к ним доступ.', + tower_level_2_reactor_rods_used = 'Я выливаю зелье на топливный стержень. С виду ничего не изменилось.', + tower_level_2_room_2_ceiling = 'Потолок здесь необычно низкий -- я даже могу дотянуться до него рукой. Он такой же холодный и гладкий на ощупь, как и стены.', + tower_level_2_room_2_control_panel_dsc = 'Рядом с дверью расположена {панель управления}.', + tower_level_2_room_2_decor = 'Совершенно крошечная комната. Каменные {tower_walls|стены}, {#floor|пол} и {#ceiling|потолок} ничем не отличаются от таковых в других комнатах. На потолке горят красные {#emergency_lamps|лампы} аварийного света.', + tower_level_2_room_2_decor_nopower = 'На потолке горят красные {#emergency_lamps|лампы} аварийного света.', + tower_level_2_room_2_decor_power = 'Несколько {#lamps|ламп} на потолке дают яркий белый свет.', + tower_level_2_room_2_disp = 'Башня, комната управления', + tower_level_2_room_2_emergency_lamps = 'В слабом свете аварийных ламп, башня кажется еще более таинственной и ненастоящей.', + tower_level_2_room_2_floor = 'Ровные каменные плиты пола в идеальном состоянии, как и везде в этой башне.', + tower_level_2_room_2_lamps = 'Несколько ламп дневного света расположены на потолке.', + tower_level_2_room_2_next_door_act_closed = 'Я отодвигаю щеколду и открываю дверь.', + tower_level_2_room_2_next_door_act_open = 'Через приоткрытую дверь я вижу алхимическую лабораторию.', + tower_level_2_room_2_next_door_dsc_closed = 'В стене напротив панели управления расположена небольшая каменная {дверь}, закрытая на щеколду.', + tower_level_2_room_2_next_door_dsc_open = 'В стене напротив панели управления расположена небольшая каменная {дверь}.', + tower_level_2_room_2_reactor_door_act = 'Тяжелая и очень толстая дверь. Не стоит открывать ее на время большее, чем необходимо.', + tower_level_2_room_2_reactor_door_dsc = 'В одной из стен комнаты расположена прямоугольная {дверь} с нанесенным на нее знаком радиационной опасности.', + tower_level_2_table_vials = 'На одном из столов я замечаю две пробирки с цветными жидкостями.', + tower_level_2_tables = 'Тяжелые столешницы из черного камня покоятся на прочных и устойчивых ножках. Столы уставлены всевозможными алхимическими приборами, пробирками и колбочками.', + tower_level_3_bookshelves = 'Я пробегаю взглядом по корешкам книг. Многие из них очень старые, некоторые из них написаны на неизвестных мне языках. Здесь есть как художественные произведения, так и труды философов и ученых разных эпох.', + tower_level_3_decor = 'Третий этаж выглядит как чей-то кабинет. В помещении царит уютный полумрак. Вдоль одной из {tower_walls|стен} установлены {#bookshelves|книжные полки}, а в стену напротив них вмонтирован пылающий {#fireplace|камин}. Чуть поодаль от него стоит старое {#rockchair|кресло-качалка}. В центре комнаты расположен массивный деревянный {tower_level_3_table|стол}.', + tower_level_3_disp = 'Башня, третий этаж', + tower_level_3_door_act_locked = 'Дверь заперта. Я не вижу в ней никаких отверстий.', + tower_level_3_door_act_open = 'Дверь открыта, за ней я вижу {#stairwell|лестницу}, сделанную из того же черного камня, что и стены башни.', + tower_level_3_door_dsc_locked = 'Массивная {дверь} из того же материала, что и стены, заперта.', + tower_level_3_door_dsc_open = 'Массивная {дверь} из того же материала, что и стены, открыта. За ней виднеется {#stairwell|лестница} на следующий этаж башни.', + tower_level_3_fireplace = 'Несмотря на пылающий в камине огонь, в помещении царят полумрак и прохлада. Весело потрескивающие угольки и мерцающие на стенах тени от пляшущего пламени расслабляют и успокаивают.', + tower_level_3_hidden_door_act = 'Я не заметил бы эту дверцу, если бы не знал, что она там есть.', + tower_level_3_hidden_door_dsc = 'За одной из книжных полок скрывается небольшая {дверца}.', + tower_level_3_hint = [[На столе я замечаю следующий текст:^ +Пятеро их, у каждого цвет свой: белый, алый, лазурный, зеленый и черный.^ +Четверым дано время: полдень, полночь, рассвет и закат, пятый – вне времени.^ +Четверым дан сезон: осень, лето, весна и зима, пятый – вне времени.^ +Четверым даны луны: растущая, полная, убывающая и новая, пятый – вне времени.^ +Четверо к пятому, в центре стоящему, обращены.^ +На северо-западе место полной луны. Владения новой, зеленой – напротив ее.^ +Тигр в полдень бродит по землям своим.^ +Зима не на юге, но и не на востоке. Весна не на западе.^ +Башня – вне времени, лишь цвет ей присущ.^ +Волк в полночь обходит владенья свои, тот что летом владеет – напротив его.^ +Луна убывает на севере, белый закат пребывает на юге.^ +Черный – в центре, окружен он рассветом, закатом, полночью и полднем.^ +Лев алый весенний рассвет собой воплощает.]], + tower_level_3_rockchair = 'Старинное кресло-качалка из дуба с мягкой гобеленовой обивкой. Кресло в превосходном состоянии -- на нем нет ни единой царапинки или потертости, обивка также выглядит как новая.', + tower_level_3_room_2_ceiling = 'На черном каменном потолке укреплены многочисленные лампы, но сейчас они не горят.', + tower_level_3_room_2_ceiling_power = 'На черном каменном потолке укреплены многочисленные лампы, излучающие яркий белый свет, позволяющий легко разглядеть все вокруг.', + tower_level_3_room_2_darkness = 'Здесь слишком темно, чтобы что-либо разглядеть.', + tower_level_3_room_2_darkness_used_candle = 'Свеча едва разгоняет мрак. Нужно что-то посильнее, чтобы нормально ориентироваться здесь.', + tower_level_3_room_2_decor_dark = 'Помещение представляет собой колоссальных размеров склад. В {#darkness|темноте} я могу различить лишь несколько {#shelves|стеллажей} неподалеку от себя. Рядом со мной находится {#ladder|лестница}, ведущая вверх.', + tower_level_3_room_2_decor_lit = 'Помещение представляет собой колоссальных размеров склад. Рядом со мной находится {#ladder|лестница}, ведущая вверх. Точно такая же {#ladder_down|лестница}, но ведущая вниз расположена чуть поодаль. {#floor|Пол} здесь точно такой же как и в других помещениях башни. {#walls|Стены} отсюда практически не видны, скрытые многочисленными {#shelves|стеллажами}. {#ceiling|Потолок} зала расположен на высоте около пяти метров.', + tower_level_3_room_2_disp = 'Башня, Склад', + tower_level_3_room_2_door_act_open = 'Я отодвигаю засов. Теперь путь свободен. Дверь ведет в кабинет, расположенный на третьем этаже башни.', + tower_level_3_room_2_door_act_opened = 'За приоткрытой дверью я вижу кабинет.', + tower_level_3_room_2_door_dsc_closed = 'В одной из стен расположена небольшая {дверь}, запертая на засов.', + tower_level_3_room_2_door_dsc_opened = 'В одной из стен расположена небольшая {дверь}.', + tower_level_3_room_2_floor = 'Ровные каменные плиты вырезаны с потрясающей точностью и выглядят так, будто их только что сюда положили -- на них нет ни малейшего изъяна, ни единой царапины или выбоины.', + tower_level_3_room_2_ladder_down = 'Прочная металлическая лестница уходит вертикально вниз на соседний этаж башни.', + tower_level_3_room_2_ladder_up = 'Прочная металлическая лестница уходит вертикально вверх на соседний этаж башни.', + tower_level_3_room_2_shelves_act_first = 'Я осматриваю стеллажи в поисках чего-либо интересного. Я забираю с полок небольшой изумруд искусной огранки и набор отверток. Кроме всего прочего я примечаю коробку, полную запасных плат для компьютера.', + tower_level_3_room_2_shelves_act_second = 'Больше я не вижу здесь ничего, что может мне пригодиться прямо сейчас.', + tower_level_3_room_2_walls = 'Я уверен, что если смогу добраться до стены, то увижу точно такую же гладкую поверхность черного камня, как и везде.', + tower_level_3_table_deepening_act_empty = 'Небольшое шестиугольное углубление.', + tower_level_3_table_deepening_act_full = 'Я забираю %item% из углубления.', -- %item% is in accusative, lowercase + -- %location% is untranslated and is one of the markings: NW, NE, SE, SW in both keys below + tower_level_3_table_deepening_dsc_empty = [[{Углубление %location%} пусто.]], + tower_level_3_table_deepening_dsc_full = [[В углублении %location% стоит {%item%}.]], -- %item% is in nominative, lowercase + tower_level_3_table_deepening_used_fit = 'Я помещаю %item% в углубление.', -- %item% is in accusative, lowercase + tower_level_3_table_deepening_used_full = 'В углублении уже стоит %item%.', -- %item% is in nominative, lowercase + tower_level_3_table_deepening_used_open = 'Легкий щелчок дает мне понять, что дверь на следующий этаж башни открыта.', + tower_level_3_table_decor = 'Огромный стол занимает значительное пространство в центре комнаты. Полированная поверхность блестит в мерцающем свете камина. В поверхности стола есть пять шестиугольных углублений, четыре из которых отмечены сторонами света: NW, NE, SE, SW, а еще одна, в центре, оставлена без отметки.', + tower_level_3_table_decor_unsolved = 'По периметру стола витиеватым почерком нанесена какая-то {#hint|надпись}.'; + tower_level_3_table_decor_solved = 'По периметру стола витиеватым почерком нанесена какая-то надпись.', + tower_level_3_table_in_figures_act = 'Я поднимаю фигурки со стола.', + tower_level_3_table_in_figures_dsc = [[На нем стоят {пять фигурок} из серебристого металла.]], + tower_level_3_table_middle_deepening_dsc_empty = [[{Центральное углубление} пусто.]], + tower_level_3_table_middle_deepening_dsc_full = [[В центральном углублении стоит {%item%}.]], -- %item% is in nominative, lowercase + tower_level_4_bed = 'Огромная кровать накрыта белоснежной простыней, расшитой серебром. У изголовья лежит большая подушка в белой наволочке с кружевами. Для человека кровать крайне просторна, но она все еще слишком мала для дракона... Да и драконы не спят в кроватях...', + tower_level_4_candle_act_blow = 'Неведомо откуда взявшийся порыв ветра гасит зажженные свечи.', + tower_level_4_candle_act_lit = 'Я зажигаю свечу. Откуда-то издали доносится нота %note%.', + tower_level_4_candle_act_open = 'Дверца в дальнем конце комнаты распахивается от резкого порыва ветра.', + tower_level_4_candle_act_sequence = 'В темноте раздается последовательность звуков:', + tower_level_4_chandelier_act = 'Изящный серебряный канделябр на семь свечей. Сейчас они не горят.', + tower_level_4_decor = 'Я нахожусь в просторной комнате. Как и в других помещениях башни, черные {tower_walls|стены} лишены окон. В центре комнаты расположена роскошная {#bed|кровать} с тяжелым балдахином из плотной черной ткани, украшенной серебряными нитями. Рядом с кроватью стоит небольшой круглый {#table|столик} с серебряным {#candelabra|канделябром} на нем.', + tower_level_4_disp = 'Башня, четвертый этаж', + tower_level_4_door_act_locked = 'Дверь заперта. Я не вижу никаких способов открыть ее.', + tower_level_4_door_act_open = 'Дверь открыта, за ней я вижу просторный зал, уставленный высокими стойками с серверами.', + tower_level_4_door_dsc_locked = 'В дальней стене расположена небольшая деревянная {дверца}.', + tower_level_4_door_dsc_open = 'Деревянная {дверь} в дальнем конце зала открыта.', + tower_level_4_room_2_armchair = 'Уютное старинное кресло на колесиках с мягкой гобеленовой обивкой, на которой нет ни малейших следов использования или времени. Резные спинка и подлокотники из черного дерева выглядят совершенно новыми.', + tower_level_4_room_2_computer_act = 'Внешний вид компьютера напоминает о начале 80х. Дисководы отсутствуют. Эмблема "TETS-1" на системном блоке мне ни о чем не говорит. Провода питания и локальной сети уходят куда-то под пол. На системном блоке стоит небольшой {#monitor|монитор}. Сейчас компьютер выключен -- нет электричества.', + tower_level_4_room_2_computer_used_assemble = 'Я собираю корпус обратно и подключаю все необходимые провода.', + tower_level_4_room_2_computer_used_disassemble = 'Я отключаю все провода и, открутив несколько винтов, снимаю крышку корпуса.', + tower_level_4_room_2_decor = 'Вдоль стен зала установлены стойки с {#servers|серверами}. В центре зала стоит массивный деревянный {#table|стол}, на котором стоит старый {#computer|компьютер}. Перед столом стоит тяжелое старинное {#armchair|кресло}. Неподалеку от стола находится {#ladder|лестница}, ведущая на нижние уровни башни.', + tower_level_4_room_2_disp = 'Башня, серверная', + tower_level_4_room_2_ladder = 'Прочная металлическая лестница закреплена здесь и уходит вертикально вниз.', + tower_level_4_room_2_monitor = 'Небольшой монитор с электронно-лучевой трубкой. Диагональ экрана составляет около 8 дюймов, справа от него я вижу ручки регулировки яркости и контрастности.', + tower_level_4_room_2_servers = 'Сотни, если не тысячи серверов. Понятия не имею, зачем они здесь. Сейчас они обесточены.', + tower_level_4_room_2_servers_powered = 'Сотни, если не тысячи серверов. Понятия не имею, зачем они здесь. Ровный гул работающих вентиляторов и легкое потрескивание жестких дисков говорят о том, что машины сейчас работают. Мерцающие лампочки отражают процессы, происходящие в них.', + tower_level_4_room_2_table = 'Крепкий дубовый стол на массивных резных ножках. На полированной поверхности нет ни единой царапины. Большую часть стола занимает компьютер. Рядом с клавиатурой лежит {#manual|книга}.', + tower_level_4_table = 'Небольшой столик из роскошного черного дерева держится на единственной массивной ножке.', + tower_red_key_disp = 'Красный ключ', + tower_red_key_disp2 = 'красный ключ', + tower_red_key_disp3 = 'красный ключ', + tower_red_key_inv = 'Небольшой ключик из красноватого металла.', + transition_airlock = 'В шлюз', + transition_control = 'В комнату управления', + transition_dining_room = 'В столовую', + transition_door = 'В дверь', + transition_downstairs = 'Вниз', + transition_lab = 'В лабораторию', + transition_leave = 'Покинуть башню', + transition_reactor = 'В камеру реактора', + transition_room = 'В соседнюю комнату', + transition_study = 'В кабинет', + transition_upstairs = 'Наверх', + troubleshooting_manual_disp = 'Решение проблем', + troubleshooting_manual_dsc = [[ + Проблема: ОС не загружается. Нет изображения на экране. Нет звукового сигнала^ + Причина: Отсутствие питания или неисправность материнской платы^ + Решение: ^ + 1. Проверьте питание^ + 2. Замените материнскую плату^ + Проблема: ОС не загружается. Нет изображения на экране. Звуковые сигналы: длинный-короткий-короткий^ + Причина: Неисправность или отсутствие центрального процессора^ + Решение: ^ + 1. Установите или замените центральный процессор^ + Проблема: ОС не загружается. Нет изображения на экране. Звуковые сигналы: короткий-длинный-длинный^ + Причина: Неисправность или отсутствие оперативной памяти^ + Решение: ^ + 1. Установите или замените оперативную память^ + Проблема: ОС не загружается. Нет изображения на экране. Звуковые сигналы: длинный-короткий-длинный^ + Причина: Неисправность или отсутствие видеоадаптера^ + Решение: ^ + 1. Установите или замените видеоадаптер^ + Проблема: ОС не загружается. Нет изображения на экране. Звуковые сигналы: длинный-длинный-длинный^ + Причина: Неисправность или отсутствие контроллера клавиатуры^ + Решение: ^ + 1. Установите или замените контроллер клавиатуры^ + Проблема: ОС не загружается. Сообщение на экране: "Загрузка с отсутствует"^ + Причина: Отсутствие совместимого устройства загрузки^ + Решение: ^ + 1. Установите совместимое устройство загрузки(например, сетевой адаптер серии FNA)^ + ]], + walls_dlg_enter = 'Едва я прикасаюсь к гладкому камню стен, как в моем сознании раздается бархатный женский голос: "Добро пожаловать домой". Я отдергиваю руку.', + walls_dlg_enter_solarscale = 'Соларскейл подлетает и коснувшись моего плеча, спрашивает: "Все в порядке?"', + walls_dlg_p1 = 'Да, все хорошо.', + walls_dlg_p1_r = 'Соларскейл внимательно смотрит мне в глаза. Низкий голос услышанный мной не похож на звонкую и яркую речь драконессы, но кроме нас рядом никого нет. Неужели это сама башня?', + walls_dlg_p2 = 'Вы что-то сказали?', + walls_dlg_p2_r = '"Нет, точно нет" -- отвечает драконесса. Я осознаю насколько низкий голос услышанный мной не похож на звонкую и яркую речь драконессы. Тогда это сама башня?', + walls_dlg_p3 = 'Не могли бы вы коснуться стены?', + walls_dlg_p3_r = 'Соларскейл, пожав плечами, прикасается к стене и тут же отдергивает руку. С широко раскрытыми глазами она смотрит на вас и шепчет: "Я тоже это слышала!"', + walls_dlg_p4 = '[Коснуться стены еще раз]', + walls_dlg_p4_r = 'Я вновь касаюсь черных стен, но ничего не происходит. Удивительно, но я не ощущаю прежнего дискомфорта, наоборот, прикосновение успокаивает и вселяет уверенность.', + walls_dlg_p5 = '[Отойти]', + walls_dlg_p5_r = 'Я отхожу от стены в недоумении.', + walls_dlg_p6 = 'Кто здесь?', + walls_dlg_p6_r = 'Никто не отвечает. Я какое-то время прислушиваюсь к тишине башни. Прохладный полумрак успокаивает и манит.', + }, + parts_locale = { + component_not_set = 'Отсутствует', + cpu = 'Процессор', + cpu_installed = 'Я устанавливаю процессор.', + cpu_needs_removal = 'Сперва необходимо убрать установленный процессор.', + cpu_not_fit = 'Процессор не подходит.', + cpu_inv_from_box = 'Процессор %model%, извлеченный мной из коробки с запчастями.', + cpu_inv_from_computer = 'Процессор %model%, извлеченный мной из компьютера.', + cpu_tak = 'Я забираю процессор %model%.', + cpu_title = 'Процессор %model%', + device_installed = 'Я устанавливаю плату.', + device_needs_removal = 'Сперва необходимо убрать установленную плату.', + keyboard_controller_inv_from_box = 'Контроллер клавиатуры %model%, извлеченный мной из коробки с запчастями.', + keyboard_controller_inv_from_computer = 'Контроллер клавиатуры %model%, извлеченный мной из компьютера.', + keyboard_controller_tak = 'Я забираю контроллер клавиатуры %model%.', + keyboard_controller_title = 'Контроллер клавиатуры %model%', + motherboard = 'Материнская плата', + motherboard_installed = 'Я устанавливаю материнскую плату.', + motherboard_needs_removal = 'Сперва необходимо убрать установленную плату.', + motherboard_not_taken = 'Сперва необходимо отключить все устройства.', + motherboard_inv_from_box = 'Материнская плата %model%, извлеченная мной из коробки с запчастями.', + motherboard_inv_from_computer = 'Материнская плата %model%, извлеченная мной из компьютера.', + motherboard_tak = 'Я забираю материнскую плату %model%.', + motherboard_title = 'Материнская плата %model%', + network_adapter_inv_from_box = 'Сетевая карта %model%, извлеченная мной из коробки с запчастями.', + network_adapter_inv_from_computer = 'Сетевая карта %model%, извлеченная мной из компьютера.', + network_adapter_tak = 'Я забираю сетевую карту %model%.', + network_adapter_title = 'Сетевая карта %model%', + ram = 'Оперативная память', + ram_installed = 'Я устанавливаю память.', + ram_needs_removal = 'Сперва необходимо убрать установленную память.', + ram_not_fit = 'Память не подходит.', + ram_inv_from_box = 'Модуль памяти %model%, извлеченный мной из коробки с запчастями.', + ram_inv_from_computer = 'Модуль памяти %model%, извлеченный мной из компьютера.', + ram_tak = 'Я забираю модуль памяти %model%.', + ram_title = 'Модуль памяти %model%', + slot = 'Слот расширения', + videocard_inv_from_box = 'Видеокарта %model%, извлеченная мной из коробки с запчастями.', + videocard_inv_from_computer = 'Видеокарта %model%, извлеченная мной из компьютера.', + videocard_tak = 'Я забираю видеокарту %model%.', + videocard_title = 'Видеокарта %model%', + }, + note_locale = { + note_a = 'ля', + note_b = 'си', + note_c = 'до', + note_d = 'ре', + note_e = 'ми', + note_f = 'фа', + note_g = 'соль', + }, + ending_locale = { + ending_dissolving_tower_solarscale = 'На одной из вершин на краю кратера сидит золотая драконесса. Ее чешуя сверкает в лучах заходящего Солнца, а изумрудно-зеленые глаза смотрят в центр кратера на медленно растворяющуюся в воздухе черную башню.', + ending_dissolving_tower_solarscale_alt = 'Драконесса приземляется на одну из вершин на краю кратера. Ее чешуя сверкает в лучах заходящего Солнца, а изумрудно-зеленые глаза смотрят в центр кратера на медленно растворяющуюся в воздухе черную башню.', + ending_solarscale_flight = 'Соларскейл восторженно смотрит на меня и растворяющиеся стены башни. Сделав круг в воздухе, она возвращается и ждет моих дальнейших действий.', + ending_solarscale_pre = 'Легкое прикосновение отвлекает меня от терминала. Я оборачиваюсь. Соларскейл произносит слова прощания: "Мне пора уходить. Надеюсь, мы еще увидимся!"', + ending_welcome = 'В сознании моем звучит мягкий, спокойный и, кажется, давно знакомый голос: "Добро пожаловать домой". Стены начинают растворяться, открывая вид на бескрайние просторы вселенной.', + formatted_2 = 'Столетие за столетием я возвращаюсь к этому месту, но не нахожу ничего, кроме забытых всеми осколков черного камня.', + formatted_alone = 'Я отхожу от компьютера и в этот момент ощущаю неуловимое изменение, произошедшее в башне. Мир вокруг меня начал расплываться и вскоре я оказался в лесу. Повсюду валяются обломки черного камня, только что составлявшего башню, хотя узнать ее в них было бы непросто. Вздохнув, я расправляю крылья и отправляюсь домой.', + formatted_solarscale = 'Я отхожу от компьютера и в этот момент ощущаю неуловимое изменение, произошедшее в башне. Мир вокруг нас начал расплываться и вскоре мы оказываемся в лесу. Повсюду валяются обломки черного камня, только что составлявшего башню, хотя узнать ее в них было бы непросто. Переглянувшись с Соларскейл, мы прощаемся и отправляемся каждый своей дорогой.', + game_end = 'Конец игры', + irradiated = 'С тех пор как я покинул башню, меня не оставляет странное ощущение, словно дни мои истекают -- магия моя слабеет, а крылья уже не способны удержать меня.', + left_part_1 = 'Темнота вокруг меня становится осязаемой, как будто башня начинает отторгать меня. Я прохожу через дверь, и массивная каменная плита опускается, навеки закрывая путь внутрь.', + left_part_1_solarscale = 'Соларскейл задумчиво смотрит на меня и на башню. Некоторое время мы тщательно изучаем ее со всех сторон, но в конце концов, отчаявшись, отправляемся каждый своей дорогой.', + left_part_2 = 'Столетие за столетием я возвращаюсь к этому месту, но гладкий черный камень все также остается неприступен для меня.', + left_state_1 = 'Я делаю шаг в сторону двери, но что-то останавливает меня. Что, если второго шанса не будет?', + left_state_2 = 'Я продолжаю двигаться к выходу, В моей голове возникает изображение двери башни, захлопывающейся за мной.', + left_state_3 = 'Я продолжаю двигаться к выходу из башни, воздух словно сгущается передо мной, не желая выпускать.', + show_menu = 'В главное меню', + solarscale_lost = 'Не удается мне найти и Соларскейл -- сколько ни пытался, я до сих пор не смог обнаружить никаких следов прекрасной драконессы.', + thank_you_for_playing = 'Спасибо за игру', + true_solarscale_convince_level_1 = 'Соларскейл замирает в раздумьях.', + true_solarscale_convince_level_2 = 'Соларскейл нерешительно смотрит на меня.', + true_solarscale_convince_level_3 = 'Соларскейл молча смотрит на меня.', + true_solarscale_convince_level_4 = 'Соларскейл кивает и уверенно произносит: "Хорошо, я с вами".', + true_solarscale_dlg_1 = '[Схватить Соларскейл за руку]', + true_solarscale_dlg_1_response = 'Я слышу в голове голос: "Оставь ее. У нее свой путь". От удивления я разжимаю руку. Этого оказывается достаточно, чтобы драконесса выскользнула и улетела.', + true_solarscale_dlg_2 = 'Вы не хотите остаться?', + true_solarscale_dlg_2_response = '"Я не могу, у меня есть дела дома" -- тихо отвечает драконесса. В ее голосе сквозит нерешительность.', + true_solarscale_dlg_3 = 'Вам не интересно, что будет дальше?', + true_solarscale_dlg_4 = 'Если вы уйдете сейчас, мы можем больше не увидеться.', + true_solarscale_dlg_5 = 'Эта башня и есть наш дом.', + true_solarscale_dlg_6 = 'Вы не можете уйти сейчас, башня открылась и вам.', + true_solarscale_dlg_7 = 'Вам не кажется, что мы неплохая команда? Мне будет трудно без вас.', + true_solarscale_dlg_8 = 'Подумайте, сколько еще прекрасных мест нас ждет.', + true_solarscale_dlg_end = 'Что же, не буду вас задерживать. До новых встреч.', + true_solarscale_dlg_end_response = 'Соларскейл опускает голову и, тихо прошептав: "До свидания", покидает помещение.', + true_solarscale_dlg_enter = 'В этот момент я чувствую легкое прикосновение, возвращающее меня к реальности. Я оборачиваюсь. Соларскейл произносит слова прощания: "Мне пора. Надеюсь, мы еще увидимся".', + true_solarscale_leaving = 'Я не успеваю моргнуть и глазом, как Соларскейл покидает башню. Кажется, я вижу собственными глазами, как драконесса вылетает через проем на первом этаже и тяжелая каменная плита опускается за ней.', + true_solarscale_outside_part_2 = 'Как только башня полностью исчезает, драконесса расправляет тонкие сияющие крылья и поднимается в небеса.', + true_solarscale_stays = 'Мое восприятие изменяется. Я словно вижу со стороны, как башня растворяется в воздухе перенося нас за пределы привычного мира. Соларскейл удивленно застыла рядом со мной, наблюдая за происходящим и ожидая моих дальнейших действий.', + true_step_1 = 'Я поднимаюсь на вершину и мысленно отдаю команду на старт. Перед моим взором раскинулась бескрайняя вселенная. Все дороги и миры открыты передо мной. По своему желанию я могу оказаться в любом месте в любое время. ', + true_step_1_alone = 'Сперва меня удивляет, сколь чутко башня реагирует на меня, но вскоре я привыкаю к тому, что все необходимое всегда оказывается под рукой.', + true_step_1_solarscale = 'Сперва меня удивляет, сколь чутко башня реагирует на нас, но вскоре я привыкаю к тому, что все необходимое всегда оказывается под рукой. Столь же непостижимым образом и Соларскейл всегда оказывается в соседней со мной комнате.', + true_step_2_alone = 'Тысячелетие за тысячелетием я путешествую по мирам и эпохам, собирая их наследие. Вскоре время и пространство перестают иметь для меня всякое значение.', + true_step_2_irradiated = 'Тысячелетие за тысячелетием я путешествую по мирам и эпохам, собирая их наследие. Несмотря на все это, странное ощущение не дает мне покоя -- словно дни мои медленно истекают и путешествие мое не будет вечным.', + true_step_2_solarscale = 'Тысячелетие за тысячелетием мы путешествуем по мирам и эпохам, собирая их наследие. Вскоре время и пространство перестают иметь для нас всякое значение.', + }, +} diff --git a/tutorial.lua b/tutorial.lua --- a/tutorial.lua +++ b/tutorial.lua @@ -1,58 +1,58 @@ obj { nam = 'tutorial_key'; - disp = translate(tutorial_locale, 'tutorial_key'); + disp = translate("tutorial_locale", 'tutorial_key'); inv = function(s) - pr(translate_now(tutorial_locale, 'tutorial_key_inv') .. '^'); + pr(translate_now("tutorial_locale", 'tutorial_key_inv') .. '^'); if have('tutorial_box') then - pr(fmt.b(translate_now(tutorial_locale, 'tutorial_box_hint'))); + pr(fmt.b(translate_now("tutorial_locale", 'tutorial_box_hint'))); else - pr(fmt.b(translate_now(tutorial_locale, 'tutorial_key_inv_look_for_box'))); + pr(fmt.b(translate_now("tutorial_locale", 'tutorial_key_inv_look_for_box'))); end; end; } obj { nam = 'tutorial_disk'; - disp = translate(tutorial_locale, 'tutorial_disk'); - inv = translate(tutorial_locale, 'tutorial_disk_inv'); + disp = translate("tutorial_locale", 'tutorial_disk'); + inv = translate("tutorial_locale", 'tutorial_disk_inv'); }; obj { nam = 'tutorial_box'; - disp = translate(tutorial_locale, 'tutorial_box'); + disp = translate("tutorial_locale", 'tutorial_box'); inv = function(s) - return translate_now(tutorial_locale, 'tutorial_box_inv') .. '^' .. fmt.b(translate_now(tutorial_locale, 'tutorial_box_hint')); + return translate_now("tutorial_locale", 'tutorial_box_inv') .. '^' .. fmt.b(translate_now("tutorial_locale", 'tutorial_box_hint')); end; used = function(s, o) if o ^ 'tutorial_key' then take('tutorial_map'); remove('tutorial_box', pl); remove('tutorial_key', pl); - return translate_now(tutorial_locale, 'tutorial_box_used') .. '^' .. fmt.b(translate_now(tutorial_locale, 'tutorial_box_used_hint')); + return translate_now("tutorial_locale", 'tutorial_box_used') .. '^' .. fmt.b(translate_now("tutorial_locale", 'tutorial_box_used_hint')); end; end; }; obj { nam = 'tutorial_map'; - disp = translate(tutorial_locale, 'tutorial_map'); + disp = translate("tutorial_locale", 'tutorial_map'); inv = function(s) - pr(translate_now(tutorial_locale, 'tutorial_map_inv')); + pr(translate_now("tutorial_locale", 'tutorial_map_inv')); if here() ^ 'tutorial_treasury' then if have('tutorial_disk') then - pr(fmt.b("^" .. translate_now(tutorial_locale, 'tutorial_map_hint_leave_treasury'))); + pr(fmt.b("^" .. translate_now("tutorial_locale", 'tutorial_map_hint_leave_treasury'))); else - pr(fmt.b("^" .. translate_now(tutorial_locale, 'tutorial_map_hint_find_disk'))); + pr(fmt.b("^" .. translate_now("tutorial_locale", 'tutorial_map_hint_find_disk'))); end; elseif here() ^ 'tutorial_lair' then - pr(fmt.b("^" .. translate_now(tutorial_locale, 'tutorial_map_hint_go_to_study'))); + pr(fmt.b("^" .. translate_now("tutorial_locale", 'tutorial_map_hint_go_to_study'))); end; end; }; room { nam = 'tutorial_start'; - disp = translate(tutorial_locale, 'tutorial_start'); + disp = translate("tutorial_locale", 'tutorial_start'); theme = 'main'; pic = 'images/main_theme/stub.png'; enter = function(s) @@ -68,95 +68,95 @@ room { snd.music('sound/bgm_forest.ogg'); end; decor = function(s) - return translate_now(tutorial_locale, 'tutorial_start_decor') .. '^' .. fmt.b(translate_now(tutorial_locale, 'tutorial_start_decor_hint')); + return translate_now("tutorial_locale", 'tutorial_start_decor') .. '^' .. fmt.b(translate_now("tutorial_locale", 'tutorial_start_decor_hint')); end; way = { - path {translate(common_locale, "back"), 'main'}; - path {translate(common_locale, "continue"), 'tutorial_lair'}; + path {translate("common_locale", "back"), 'main'}; + path {translate("common_locale", "continue"), 'tutorial_lair'}; }; } room { state = 0; nam = 'tutorial_lair'; - disp = translate(tutorial_locale, 'tutorial_lair'); + disp = translate("tutorial_locale", 'tutorial_lair'); theme = 'main'; pic = 'images/main_theme/stub.png'; decor = function(s) - pr(translate_now(tutorial_locale, 'tutorial_lair_decor_1')); + pr(translate_now("tutorial_locale", 'tutorial_lair_decor_1')); if s.state == 0 then - pr(fmt.b(' (' .. translate_now(tutorial_locale, 'tutorial_lair_decor_hint_caves') .. ')')); + pr(fmt.b(' (' .. translate_now("tutorial_locale", 'tutorial_lair_decor_hint_caves') .. ')')); end; - pn(". " .. translate_now(tutorial_locale, 'tutorial_lair_decor_2')); + pn(". " .. translate_now("tutorial_locale", 'tutorial_lair_decor_2')); if s.state == 1 then if not have('tutorial_disk') then - pr(fmt.b(translate_now(tutorial_locale, 'tutorial_lair_decor_hint_treasury'))); + pr(fmt.b(translate_now("tutorial_locale", 'tutorial_lair_decor_hint_treasury'))); else - pr(fmt.b(translate_now(tutorial_locale, 'tutorial_lair_decor_hint_study'))); + pr(fmt.b(translate_now("tutorial_locale", 'tutorial_lair_decor_hint_study'))); end; end; end; onenter = function(s, f) if f ^ 'tutorial_start' then - pr(translate_now(tutorial_locale, 'tutorial_lair_enter_start')); + pr(translate_now("tutorial_locale", 'tutorial_lair_enter_start')); elseif f ^ 'tutorial_treasury' and not have('tutorial_disk') then - pr(translate_now(tutorial_locale, 'tutorial_lair_enter_treasury')); + pr(translate_now("tutorial_locale", 'tutorial_lair_enter_treasury')); if have('tutorial_map') and not have('tutorial_disk') then - pr(fmt.b('^' .. translate_now(tutorial_locale, "tutorial_lair_enter_disk"))); + pr(fmt.b('^' .. translate_now("tutorial_locale", "tutorial_lair_enter_disk"))); end; return false; end; end; way = { - path {translate(tutorial_locale, "tutorial_to_treasury"), 'tutorial_treasury'}; - path {translate(tutorial_locale, "tutorial_to_study"), 'tutorial_cabinet'}; + path {translate("tutorial_locale", "tutorial_to_treasury"), 'tutorial_treasury'}; + path {translate("tutorial_locale", "tutorial_to_study"), 'tutorial_cabinet'}; }; }:with { obj { nam = '#caves'; act = function(s) - pr (translate_now(tutorial_locale, 'tutorial_lair_caves_act') .. '^' .. fmt.b(translate_now(tutorial_locale, 'tutorial_lair_caves_act_hint'))); + pr (translate_now("tutorial_locale", 'tutorial_lair_caves_act') .. '^' .. fmt.b(translate_now("tutorial_locale", 'tutorial_lair_caves_act_hint'))); here().state = 1; end; }; obj { nam = '#exit'; - act = translate(tutorial_locale, 'tutorial_lair_exit_act'); + act = translate("tutorial_locale", 'tutorial_lair_exit_act'); }; } room { state = 0; nam = 'tutorial_treasury'; - disp = translate(tutorial_locale, 'tutorial_treasury'); + disp = translate("tutorial_locale", 'tutorial_treasury'); theme = 'main'; pic = 'images/main_theme/stub.png'; onenter = function(s) if have('tutorial_disk') then - pr(translate_now(tutorial_locale, 'tutorial_treasury_no_enter')); + pr(translate_now("tutorial_locale", 'tutorial_treasury_no_enter')); return false; end; end; decor = function(s) - p(translate_now(tutorial_locale, 'tutorial_treasury_decor')); + p(translate_now("tutorial_locale", 'tutorial_treasury_decor')); if not have('tutorial_map') then - pr(fmt.b(translate_now(tutorial_locale, 'tutorial_treasury_decor_hint_map'))); + pr(fmt.b(translate_now("tutorial_locale", 'tutorial_treasury_decor_hint_map'))); elseif have('tutorial_disk') then - pr(fmt.b(translate_now(tutorial_locale, 'tutorial_treasury_decor_hint_leave'))); + pr(fmt.b(translate_now("tutorial_locale", 'tutorial_treasury_decor_hint_leave'))); end; end; way = { - path {translate(tutorial_locale, "tutorial_to_main_hall"), 'tutorial_lair'}; + path {translate("tutorial_locale", "tutorial_to_main_hall"), 'tutorial_lair'}; } }:with { obj { nam = '#items'; - act = translate(tutorial_locale, 'tutorial_treasury_items_act'); + act = translate("tutorial_locale", 'tutorial_treasury_items_act'); }; obj { state = 0; @@ -165,72 +165,72 @@ room { if s.state == 0 then s.state = 1; take('tutorial_key'); - return translate_now(tutorial_locale, 'tutorial_treasury_chests_act_key') .. "^" .. fmt.b(translate_now(tutorial_locale, 'tutorial_treasury_chests_act_key_hint')); + return translate_now("tutorial_locale", 'tutorial_treasury_chests_act_key') .. "^" .. fmt.b(translate_now("tutorial_locale", 'tutorial_treasury_chests_act_key_hint')); elseif s.state == 1 then s.state = 2; take('tutorial_box'); - return translate_now(tutorial_locale, 'tutorial_treasury_chests_act_box'); + return translate_now("tutorial_locale", 'tutorial_treasury_chests_act_box'); else - return translate_now(tutorial_locale, 'tutorial_treasury_chests_act_default'); + return translate_now("tutorial_locale", 'tutorial_treasury_chests_act_default'); end; end; }; obj { nam = '#books'; - act = translate(tutorial_locale, 'tutorial_treasury_books'); + act = translate("tutorial_locale", 'tutorial_treasury_books'); }; obj { nam = '#scrolls'; act = function(s) - pr(translate_now(tutorial_locale, 'tutorial_treasury_scrolls')); + pr(translate_now("tutorial_locale", 'tutorial_treasury_scrolls')); if not have('tutorial_map') then - return translate_now(tutorial_locale, 'tutorial_treasury_scrolls_no_map'); + return translate_now("tutorial_locale", 'tutorial_treasury_scrolls_no_map'); end; end; }; obj { nam = '#records'; - act = translate(tutorial_locale, 'tutorial_treasury_records'); + act = translate("tutorial_locale", 'tutorial_treasury_records'); }; obj { state = 0; nam = '#disks'; act = function(s) - pr(translate_now(tutorial_locale, 'tutorial_treasury_disks')); + pr(translate_now("tutorial_locale", 'tutorial_treasury_disks')); if s.state == 1 or not have('tutorial_map') then - pr(translate_now(tutorial_locale, 'tutorial_treasury_disks_default')); + pr(translate_now("tutorial_locale", 'tutorial_treasury_disks_default')); else s.state = 1; take('tutorial_disk'); - pr(translate_now(tutorial_locale, 'tutorial_treasury_disks_found') .. '^' .. fmt.b(translate_now(tutorial_locale, 'tutorial_treasury_disks_hint'))); + pr(translate_now("tutorial_locale", 'tutorial_treasury_disks_found') .. '^' .. fmt.b(translate_now("tutorial_locale", 'tutorial_treasury_disks_hint'))); end; end; }; obj { nam = '#paintings'; - act = translate(tutorial_locale, 'tutorial_treasury_paintings'); + act = translate("tutorial_locale", 'tutorial_treasury_paintings'); }; } room { nam = 'tutorial_cabinet'; - disp = translate(tutorial_locale, 'tutorial_study'); + disp = translate("tutorial_locale", 'tutorial_study'); theme = 'main'; pic = 'images/main_theme/stub.png'; onenter = function(s) if not have('tutorial_disk') then - pr(translate_now(tutorial_locale, 'tutorial_study_enter') .. '^' .. fmt.b(translate_now(tutorial_locale, 'tutorial_study_enter_hint'))); + pr(translate_now("tutorial_locale", 'tutorial_study_enter') .. '^' .. fmt.b(translate_now("tutorial_locale", 'tutorial_study_enter_hint'))); return false; end; end; decor = function(s) - return translate_now(tutorial_locale, 'tutorial_study_decor') .. '^' .. fmt.b(translate_now(tutorial_locale, 'tutorial_study_decor_hint')); + return translate_now("tutorial_locale", 'tutorial_study_decor') .. '^' .. fmt.b(translate_now("tutorial_locale", 'tutorial_study_decor_hint')); end; }: with { obj { nam = '#laptop'; - act = translate(tutorial_locale, 'tutorial_study_laptop_act'); + act = translate("tutorial_locale", 'tutorial_study_laptop_act'); used = function(s, o) if o ^ 'tutorial_disk' then remove('tutorial_disk'); @@ -243,14 +243,14 @@ room { room { nam = 'tutorial_end'; - disp = translate(tutorial_locale, 'tutorial_end'); + disp = translate("tutorial_locale", 'tutorial_end'); theme = 'main'; pic = 'images/main_theme/stub.png'; decor = function(s) - return translate_now(tutorial_locale, 'tutorial_end_decor') .. '^' .. fmt.b(translate_now(tutorial_locale, 'tutorial_end_decor_hint')); + return translate_now("tutorial_locale", 'tutorial_end_decor') .. '^' .. fmt.b(translate_now("tutorial_locale", 'tutorial_end_decor_hint')); end; way = { - path {translate(tutorial_locale, 'tutorial_to_main_menu'), 'main'}; - path {translate(tutorial_locale, 'tutorial_to_game'), 'above_forest'}; + path {translate("tutorial_locale", 'tutorial_to_main_menu'), 'main'}; + path {translate("tutorial_locale", 'tutorial_to_game'), 'above_forest'}; } }