diff --git a/main3.lua b/main3.lua --- a/main3.lua +++ b/main3.lua @@ -246,6 +246,7 @@ obj { nam = 'potion_open'; disp = 'Зелье открытия'; disp2 = 'зелье открытия'; + disp3 = 'зелье открытия'; inv = 'Сваренное мной зелье открытия пахнет ржавым металлом и имеет неприятный рыжевато-серый цвет. Пробирка горячая на ощупь. '; } @@ -253,6 +254,7 @@ obj { nam = 'potion_light'; disp = 'Зелье света'; disp2 = 'зелье света'; + disp3 = 'зелье света'; inv = 'Сваренное мной зелье света совершенно прозрачно и источает легкий аромат свежести, как воздух после грозы. '; } @@ -268,14 +270,15 @@ obj { nam = 'potion_enrichment'; disp = 'Зелье обогащения'; disp2 = 'зелье обогащения'; + disp3 = 'зелье обогащения'; inv = 'Сваренное мной зелье обогащения сияет словно настоящее золото. Когда я встряхиваю пробирку, мне слышится в ней звон монет. '; } obj { nam = 'emerald'; disp = 'Изумруд'; - disp2 = 'изумруд'; - disp3 = 'изумруд'; + disp2 = 'изумруд'; + disp3 = 'изумруд'; inv = 'Небольшой, изящно ограненный изумруд. Очень красивый. '; } @@ -289,6 +292,8 @@ obj { nam = 'tool_box'; dsc = 'На одной из полок я вижу коробочку с {набором отверток}. '; disp = 'Набор отверток'; + disp2 = 'набор отверток'; + disp3 = 'набор отверток'; inv = 'Набор отверток для электроники. Нигде на коробке нет никаких отметок о производителе. Отвертки при это очень качественно изготовлены и прекрасно сохранились. '; }; @@ -1792,6 +1797,10 @@ function start(load) if here().theme then here():theme(); end; + + if here().onboot then + here():onboot(); + end; else local computer_parts = { 'cvx-rst-i3sb', diff --git a/solarscale.lua b/solarscale.lua --- a/solarscale.lua +++ b/solarscale.lua @@ -262,13 +262,68 @@ dlg { open('#tl4r2a'); pr [[Драконесса, посмотрев на экран, сообщает: "Кажется, заработал". ]]; - end, - { + end, + { '#tl4r2a', "[Подойти к терминалу]Отлично, посмотрим.", function(s) walkin('terminal'); end; }, + {'Вы сможете отремонтировать его?', function(s) + if have('part_box') then + if solarscale_helps > 0 then + open('#tl4r2cfa'); + open('#tl4r2cfb'); + close('#tl4r2cfc'); + close('#tl4r2cfd'); + return 'Соларскейл заглядывает в коробку с запчастями и, немного покопавшись в ней, сообщает: "Думаю, справлюсь. Позволите?"'; + else + close('#tl4r2cfa'); + close('#tl4r2cfb'); + close('#tl4r2cfc'); + open('#tl4r2cfd'); + return 'Соларскейл с сожалением сообщает: "Не думаю, что смогу помочь. Я никогда не встречала компьютеров такого типа". '; + end; + else + close('#tl4r2cfa'); + close('#tl4r2cfb'); + close('#tl4r2cfd'); + open('#tl4r2cfc'); + return 'Соларскейл задумчиво говорит: "Только если мы найдем запасные детали". ' + end; + end, only=true, + {'#tl4r2cfa', 'Да, разумеется. ', function(s) + walkout(); + local motherboard = lookup('#motherboard', _'system_unit'); + local cpu= lookup('#cpu', _'system_unit'); + local ram = lookup('#ram', _'system_unit'); + local slot1 = lookup('#slot1', _'system_unit'); + local slot2 = lookup('#slot2', _'system_unit'); + local slot3 = lookup('#slot3', _'system_unit'); + + motherboard.device = _'crx-rdt-i3sb'; + cpu.device = _'rcpu200-crx-20mhz'; + ram.device = _'rdt-m32-32mb'; + slot1.device = _'gva-rx4'; + slot2.device = _'fna-100-10mbs_2'; + slot3.device = _'kbc-s'; + + solarscale_helps = solarscale_helps - 1; + pc_status = 'ok'; + + return 'Соларскейл привычно разбирает компьютер и, заглянув в инструкцию, меняет сломанные детали на новые. Закончив, она собирает его обратно. "Посмотрите! Кажется, я даже смогла немного улучшить его!"'; + end}, + {'#tl4r2cfb', 'Спасибо, но я сам справлюсь. ', function(s) + walkout(); + return 'Соларскейл молча кивает. '; + end}, + {'#tl4r2cfc', 'Как думаете, где они могут быть?', function(s) + return 'Соларскейл отвечает: "Этажом ниже был склад, кажется. Есть смысл начать поиск оттуда". '; + end}, + {'#tl4r2cfd', '[Закончить разговор]', function(s) + walkout(); + end} + }; { '#tl4r2b', "[Закончить диалог]", function(s) @@ -315,6 +370,7 @@ dlg { slot3.device = _'kbc-s'; solarscale_helps = solarscale_helps - 1; + pc_status = 'ok'; return 'Соларскейл привычно разбирает компьютер и, заглянув в инструкцию, меняет сломанные детали на новые. Закончив, она собирает его обратно. "Посмотрите! Кажется, я даже смогла немного улучшить его!"'; end}, diff --git a/tower.lua b/tower.lua --- a/tower.lua +++ b/tower.lua @@ -1731,9 +1731,9 @@ room { light = false; nam = 'tower_level_3_room_2'; disp = 'Башня, Склад'; - dsc = function(s) + decor = function(s) if s.light then - return 'Помещение представляет собой колоссальных размеров склад. Рядом со мной находится {#ladder|лестница}, ведущая вверх. Точно такая же {#ladder_down|лестница}, но ведущая вниз расположена чуть поодаль. {#floor|Пол} здесь точно такой же как и в других помещениях башни. {#walls|Стены} отсюда практически не видны, скрытые многочисленными {#shelves|стеллажами}. {#ceilingПотолок} зала расположен на высоте около пяти метров. '; + return 'Помещение представляет собой колоссальных размеров склад. Рядом со мной находится {#ladder|лестница}, ведущая вверх. Точно такая же {#ladder_down|лестница}, но ведущая вниз расположена чуть поодаль. {#floor|Пол} здесь точно такой же как и в других помещениях башни. {#walls|Стены} отсюда практически не видны, скрытые многочисленными {#shelves|стеллажами}. {#ceiling|Потолок} зала расположен на высоте около пяти метров. '; else return 'Помещение представляет собой колоссальных размеров склад. В {#darkness|темноте} я могу различить лишь несколько {#shelves|стеллажей} неподалеку от себя. Рядом со мной находится {#ladder|лестница}, ведущая вверх. '; end; @@ -1790,14 +1790,24 @@ room { }; obj { nam = '#door'; - dsc = 'В одной из стен расположена небольшая {дверь}, ведущая в другие помещения башни. '; + dsc = function(s) + if _ 'level_3_main_room':disabled() then + return 'В одной из стен расположена небольшая {дверь}, запертая на засов. '; + else + return 'В одной из стен расположена небольшая {дверь}. '; + end; + end; act = function(s) - _ 'level_3_main_room':enable(); - _('level_3_next_room', 'tower_level_3'):enable(); - _('level_3_room_2_door', 'tower_level_3'):enable(); - return [[Я отодвигаю засов. Теперь путь свободен. Дверь ведет в кабинет, расположенный на третьем этаже башни. ]]; + if _ 'level_3_main_room':disabled() then + _ 'level_3_main_room':enable(); + _('level_3_next_room', 'tower_level_3'):enable(); + _('level_3_room_2_door', 'tower_level_3'):enable(); + return [[Я отодвигаю засов. Теперь путь свободен. Дверь ведет в кабинет, расположенный на третьем этаже башни. ]]; + else + return [[За приоткрытой дверью я вижу кабинет. ]]; + end; end; - }; + }:disable(); obj { state = 0; nam = '#shelves'; @@ -1828,7 +1838,7 @@ room { return 'Я снимаю костюм радиационной защиты и оставляю его в шкафчике. '; end; end; - dsc = function(s) + decor = function(s) if power_on then return 'Небольшая комната, самая маленькая из виденных мной помещений башни. Каменные {#walls|стены}, {#floor|пол} и {#ceiling|потолок} ничем не отличаются от таковых в других комнатах. Несколько {#lamps|ламп} на потолке дают яркий белый свет. '; else @@ -1874,14 +1884,23 @@ room { walkin('reactor_control_panel'); end; }; - obj { nam = '#next_door'; - dsc = 'В стене напротив панели управления расположена небольшая каменная {дверь}, закрытая на щеколду. '; + dsc = function(s) + if _'level_2_main_room':disabled() then + return 'В стене напротив панели управления расположена небольшая каменная {дверь}, закрытая на щеколду. '; + else + return 'В стене напротив панели управления расположена небольшая каменная {дверь}. '; + end; + end; act = function(s) - _'level_2_main_room':enable(); - _'level_2_next_room':enable(); - return 'Я отодвигаю щеколду и открываю дверь. '; + if _'level_2_main_room':disabled() then + _'level_2_main_room':enable(); + _'level_2_next_room':enable(); + return 'Я отодвигаю щеколду и открываю дверь. '; + else + return 'Через приоткрытую дверь я вижу алхимическую лабораторию. '; + end; end; } } @@ -2019,7 +2038,7 @@ room { end; end; used = function(s, o) - if o^'potion_enrichment' then + if o^'potion_enrichment' and rods_raised then remove('potion_enrichment', pl); rods_enriched = true; return 'Я выливаю зелье на топливный стержень. С виду ничего не изменилось. '; @@ -2039,7 +2058,7 @@ room { }: with { obj { nam = '#tabletop'; - act = 'Столешница сделана из того же материала, что и стены. Прочность этого холодныго и гладкого камня не вызывает сомнений.'; + act = 'Столешница сделана из того же материала, что и стены. Прочность этого холодного и гладкого камня не вызывает сомнений.'; }; obj { nam = '#cabinets1'; @@ -2083,7 +2102,7 @@ room { if s.state == 0 then return 'Дверца заперта. Резной узор украшает железную накладку замка. '; else - return 'Дверца прикрыта. Резной узор украшает железную накладку замка. '; + return 'За приоткрытой дверцей я вижу гостиную башни. '; end; end; used = function(s, o) @@ -2123,6 +2142,8 @@ obj { obj { nam = 'part_box'; disp = 'Коробка с запчастями'; + disp2 = 'коробка с запчастями'; + disp3 = 'коробку с запчастями'; inv = function(s) walkin('part_box_inside'); end; @@ -2139,6 +2160,7 @@ obj { room { nam = 'part_box_inside'; + nofollow = true; disp = 'Коробка с запчастями'; dsc = 'Большая коробка, внутри нее я вижу следующие детали: '; way = { @@ -2581,6 +2603,9 @@ room { --s:push("Type 'HELP' to list available commands"); s:push(''); end; + onboot = function(s) + s:process_directory_structure(s.directory_structure['C:']); + end; theme = function(s) theme.set('scr.gfx.bg', 'images/terminal.png'); theme.set('scr.col.bg', '#000000'); @@ -2684,7 +2709,7 @@ room { ['C:'] = { ['DOCS'] = { ['PASSWORD.TXT'] = function(s, command, args) - if command == 'PRINT.EXE' then + if command == 'PRINT.COM' then s:push('Ошибка: Нельзя вывести двоичные данные'); --s:push('Error: Unable to print binary data'); else @@ -2692,7 +2717,7 @@ room { end; end; ['CRYPT.COM'] = function(s, command, args) - if command == 'PRINT.EXE' then + if command == 'PRINT.COM' then s:push('Ошибка: Нельзя вывести двоичные данные'); --s:push('Error: Unable to print binary data'); elseif command == '' then @@ -2714,7 +2739,7 @@ room { end; end; ['CRYPT.CFG'] = function(s, command, args) - if command == 'PRINT.EXE' then + if command == 'PRINT.COM' then s:push('[MAIN]'); s:push('ALGORITHM=AES'); s:push('[RSA]'); @@ -2724,16 +2749,8 @@ room { s:push('Bad command or file name'); end; end; - ['README.TXT'] = function(s, command, args) - if command == 'PRINT.EXE' then - s:push('Ошибка: Нельзя вывести двоичные данные'); - --s:push('Error: Unable to print binary data'); - else - s:push('Bad command or file name'); - end; - end; ['KEY.TXT'] = function(s, command, args) - if command == 'PRINT.EXE' then + if command == 'PRINT.COM' then s:push('Ошибка: Нельзя вывести двоичные данные'); --s:push('Error: Unable to print binary data'); else @@ -2816,7 +2833,8 @@ room { ['AUTOEXEC.BAT'] = function(s, command, args) if command == 'PRINT.COM' then s:push('SET PATH C:\\SYSTEM'); - s:push('REM CONNECT.EXE - So I may use the main OS interface'); + --s:push('REM CONNECT.EXE - So I may use the main OS interface'); + s:push('REM CONNECT.EXE - Для доступа к командной строке'); elseif command == '' then s:push('Bad command or file name'); end; @@ -2850,6 +2868,8 @@ room { s:push('Просто запусти ее, чтобы войти в систему.'); s:push('В дальнейшем, когда ты разберешься с системой, сможешь '); s:push('снова перестать ей пользоваться.'); + s:push('Пароль от основного интерфейса -- в папке DOCS в файле PASSWORD.TXT '); + s:push('разумеется, он зашифрован. '); elseif command == '' then s:push('Bad command or file name'); end;