-- $Name: Подготовка к пробуждению$ -- $Version: 0.1$ instead_version "1.9.1" require "lib" require "para" require "dash" require "quotes" require "xact" _patterns = {}; game.use = _("Вариантов успешного завершения инструкций 0... Отмена действия.") main = room { nam = "...", title = _("ПОВАР"), num = 11, enter = music_("daybefore",0), act = function(s) walk("sylo") end, dsc = _("WR021 активирован.^Я один из роботов, обслуживающих космический корабль.^Меньше слов, больше выполненных заданий из списка, как говорил наладчик моих модулей индивидуальности."), obj = { vobj("next", '{'.._('Выехать из отсека')..'}') }, } sylo = room { nam = _("Технический блок №11"), pxa = { { "door4", 10 }, { "door3", 150}, { if_("gates._acted", "door1_open", "door1"), 360 } }, dsc = _("Один из многих технических блоков. Здесь всего две камеры с роботами WR, две стальные двери. Хорошо, что мне удалось воспользоваться модулем индивидуальности и выкрасить свою дверь в оранжевый. Хоть что-то среди этого набора из сотни зануд."), obj = {"todo", "gates"}, exit = function (s, w) if not todo._acted then p (_([[И зачем мне выезжать из блока? Открытых заданий нет.]])) return false; end end } main_deck = room { nam = _("Главная палуба"), pxa = { { "window", 90 }, { "door2", 180 }, { "window", 380 } }, dsc = _("Главная палуба. Отсюда я могу добраться к любому другому отсеку."), obj = {"button"}, way = {"elevator"}, } organic = room { nam = _("Камера органического синтеза"), pxa = { { "door2", 10 }, { "panel", 140 }, { "device", 340 } }, dsc = _("Борщ, пиво, стейк с кровью. Тут можно синтезировать всё, кроме заливной рыбы, которая была запрещена восемь циклов назад."), act = function(s) walk("synthesizer") end, obj = {"button", vobj("next", '{Подключиться} к синтезатору.')}, way = {"elevator"}, } elevator = room { nam = _("Лифт"), pxa = { { "door2", 180 } }, dsc = "Кабина лифта. Ничего необычного.", obj = {"level_buttons"}, way = {"main_deck", "store"}, } synthesizer = room { nam = _("Органический синтезатор"), pxa = { { "device", 177 } }, dsc = "Органический синтезатор соединён с клеточными наполнителями. Вся синтезированная продукция поступает непосредственно на склад.", obj = {"wishlist", "ingridients", "mixer", "separator"}, way = {"organic"}, } virtual_store = room { nam = _("Виртуальный склад"), pxa = { { "device", 177 } }, dsc = "Продукты из виртуального склада синтезируются из субклеточной эмульсии. После выбора синтезированные продукты автоматически будут добавлены в миксер.", obj = {"malt", "yeast", "watermelon", "pineapple", "mayonnaise", "potato"}, way = {"synthesizer"}, } store = room { nam = _("Склад"), pxa = { { "door2", 10 }, { if_("exist(destructor)", "bfg"), 140 }, { if_("exist(rat)",if_("rat._fired","rat_dead","rat")), 330 }, { "box", 400 } }, dsc = "Склад продуктов, которые нельзя просто так синтезировать.", obj = {"malt", "yeast", "rat", "destructor"}, way = {"elevator"}, exit = function (s, w) if have("destructor") then p (_("Распылитель лучше положить на место.")); return false; end; end, enter = function (s) if not have(rat) then place("rat", here()); rat._fired = false; end place("malt", here()); place("yeast", here()); end, }:disable(); wishlist = obj { nam = _("Список пожеланий"), act = "Список блюд на вечеринку:^- Пиво^- Фруктовый салат^- Жареный картофель^", dsc = "{Список пожеланий персонала}^", } ingridients = obj { nam = _("Ингредиенты"), act = function(s) walk("virtual_store"); end, dsc = "{Выбор ингредиентов}^", } mixer = obj { var {content = 0, pattern = "Позиция направлена на склад. Паттерн записан."}, act = function (s) yeast.mix = false; malt.mix = false; watermelon.mix = false; pineapple.mix = false; potato.mix = false; water.mix = false; rat.mix = false; mayonnaise.mix = false; if s.content == 0 then s.content = 0; return (_("Миксер пуст.")); elseif s.content == 19 then s.content = 0; _patterns[0] = true; check_conditions(); return (_("Фруктовый салат готов. "))..s.pattern; elseif s.content == 28 then s.content = 0; _patterns[1] = true; check_conditions(); return (_("Пиво готово. "))..s.pattern; elseif s.content == 64 then s.content = 0; return (_("Нагревательный элемент отсутствует. Миксер очищен.")); elseif s.content == 96 then s.content = 0; _patterns[2] = true; check_conditions(); return (_("Жареный картофель готов. "))..s.pattern; else s.content = 0; return (_("Отвратительная смесь приготовлена и отправлена на переработку.")); end; end, nam = _("Миксер"), dsc = "{Миксер}^", } separator = obj { nam = _("Сепаратор"), dsc = "{Молекулярный сепаратор}^", act = "Сепарируй и заливай.", } todo = obj { nam = "todo", var { _acted }, act = function (s) if not s._acted then s._acted = true; end return (_("Всего один пункт:^ - Подготовка к вечеринке перед приземлением.^Что ж, это должно быть 101 из 101 по шкале интересности.")); end, dsc = "{Список задач} доступен для чтения.", } button = obj { nam = "elevator call", act = "Никогда не понимал эти кнопки. И так ведь ясно, что я хочу куда то ехать. Зачем ещё её нажимать.", dsc = "На стене находится {кнопка вызова лифта}.^", } level_buttons = obj { nam = "level buttons", act = function (s) if not s._acted then s._acted = true; ways():add("organic"); end return (_("Так, что у нас тут... машинный зал... отсек криокамер... о! камера органического синтеза, то, что нужно.")) end, dsc = "Справа находятся {кнопки отсеков}.^", } gates = obj { nam = _("ворота"), var { _state = _("закрыты") }, dsc = function(s) return (_("{Ворота}, ведущие из технического отсека "..s._state..".")); end, act = function (s) if not s._acted then s._acted = true; s._state = _("открыты"); ways():add("main_deck"); return (_("Я приложил правую руку к считывателю и ворота открылись.")); else return (_("Ворота на главную палубу уже открыты.")); end end, } malt = obj { var {mix = false}, nam = _("Солод"), dsc = function (s) if here() == "store" then return (_("Мешки с {солодом}^")); else return (_("{Солод}^")); end; end, act = function (s) if here() ~= store then store:enable(); return (_("Этот ингредиент невозможно синтезировать. Придётся идти на склад.")) else take(malt); return (_("Солод погружен в отсек №3.")); end; end, use = function (s, w) if w == mixer then if not s.mix then mixer.content = mixer.content + 4; s.mix = true; end; remove(s, me()); return s.nam.." помещён в миксер." end end, inv = "Зерна солода. Странно, что люди так и не научились синтезировать что-то сложнее ватных фруктовых кубиков.", } yeast = obj { var {mix = false}, nam = _("Дрожжи"), dsc = function (s) if here() == "store" then return (_("Пробирка с {дрожжами}^")); else return ("{".._('Дрожжи').."}^"); end; end, act = function (s) if here() ~= store then store:enable(); return (_("Этот ингредиент невозможно синтезировать. Придётся идти на склад.")) else take(yeast); return (_("Пробирка с дрожжами помещена в отсек №7")); end; end, use = function (s, w) if w == mixer then if not s.mix then mixer.content = mixer.content + 8; s.mix = true; end; remove(s, me()); return s.nam.." помещены в миксер." end end, inv = "Штамм отличнейших дрожжей. Можно даже разглядеть отдельные клетки.", } watermelon = obj { var {mix = false}, nam = _("Арбузные кубики"), dsc = "Сухие {арбузные кубики}^", act = function (s) if not s.mix then mixer.content = mixer.content + 1; s.mix = true; end; return s.nam.." добавлены в миксер."; end, } pineapple = obj { var {mix = false}, nam = _("Ананасовые кубики"), dsc = "Сухие {ананасовые кубики}^", act = function (s) if not s.mix then mixer.content = mixer.content + 2; s.mix = true; end; return s.nam.." добавлены в миксер."; end, } mayonnaise = obj { var {mix = false}, nam = _("Майонез"), dsc = "Взбитый {концентрат жира с яйцами}^", act = function (s) if not s.mix then mixer.content = mixer.content + 128; s.mix = true; end; return s.nam.." добавлен в миксер."; end, } potato = obj { var {mix = false}, nam = _("Картофельные бруски"), dsc = "Синтезированный {картофель}^", act = function (s) if not s.mix then mixer.content = mixer.content + 64; s.mix = true; end; return s.nam.." добавлены в миксер."; end, } rat = obj { var {mix = false}, var {_fired = false}, nam = _("Крыса"), dsc = function(s) local state = ""; if s._fired then state = "поджарена."; else state = "не поджарена."; end return (_("В углу сидит бесстрашная {жирная тварь}. Она "..state.."^")); end, act = function (s) if not have("rat") then take(rat); return (_("Я ловким движением правой руки поймал крысу и положил в один из внутренних отсеков.")); else return (_("Все подходящие отсеки заполнены. Отмена операции.")); end end, use = function (s, w) if w == separator then remove(s, me()); take(water); take(trash); return (_("Думаю, стоит тебя немного разделить.")); elseif w == mixer then if s._fired then if not s.mix then mixer.content = mixer.content + 32; s.mix = true; end remove(s, me()); return (_("Крыса добавлена в миксер.")); else return (_("Необходимость добавления органической крысы в не выявлена. Операция отменена.")); end end; end, inv = function (s) local state = "не поджарена."; if s._fired then state = "поджарена."; end return (_("Если тыкнуть крысу, она запищит. Отпускать её однозначно не стоит. Тем более, что тварь "))..state; end, } water = obj { var {mix = false}, nam = _("Вода"), dsc = "Вода, что тут ещё сказать.", use = function (s, w) if w == mixer then if not s.mix then s.mix = true; mixer.content = mixer.content + 16; end remove(s, me()); return s.nam.." добавлена в миксер."; end; end, inv = "Набор молекул, заключенный в ограниченном объёме.", } trash = obj { nam = _("Крысиная требуха"), inv = "Молекулярная суспензия. Всё что осталось от крысы после отделения воды.", } destructor = obj { nam = _("Термический распылитель"), dsc = "Справа от двери висит {термический распылитель}^", act = function (s) take(s); p (_("Распылитель пригодится. Мало ли каких тварей привлекают к себе заготовленные ингредиенты.")); end, use = function (s, w) if w == rat then w._fired = true; sound_("shoot_destructor")(); return (_("Один выстрел из термического распылителя в крысу превратит её в сгусток энергии при малейшей встряске. Обычно это позволяет убить чуть больше одной крысы за раз, когда они начинают бороться и убегать.")); end end, inv = function(s) drop(s); return (_("На складе распылителю самое место.")); end } endscreen = room { nam = _("Конец"), enter = function() mute_()(); complete_("cook")() end, dsc = "Вот и подошел конец моему дежурству. Надеюсь, вечеринка по случаю прибытия удастся.^Ну а мне пора в свой отсек, на очередную гибернацию.^", act = gamefile_("dream.lua"), obj = { vobj("next", txtc("{Продолжение...}")) } } greenlight = obj { nam = "Зелёный индикатор", inv = function (s) walk("endscreen"); end, } function check_conditions () if(_patterns[0] and _patterns[1] and _patterns[2]) then take("greenlight", me()); end; end