insteadose-3/robot.lua

58 lines
21 KiB
Lua
Raw Permalink Normal View History

2018-08-09 12:26:42 +03:00
-- $Name: Робот, который видит...$
-- $Author: j-maks$
-- $Version: 0.1$
-- $E-mail: jmaksima_at_gmail_dot_com$
instead_version '1.9.1';
require "lib"
game.enable_save = false; require 'para'; require 'dash'; require 'quotes'; require 'nouse'; require 'hideinv'; --require 'dbg';
pl = player {nam = "WR015", var { diag_stat=false, leg_stat=false, arm_stat=false, stand_stat=false, stand_try=false, standup_try=false, stand_sw_stat=false, roll_stat=false, crawl_stat=false, look_stat = false }, };
main = timerpause(520, 315, "main2");
main2 = room {nam = "...", hideinv = true,
title = { "Р", "О", "Б", "О", "Т", " ", "К", "О", "Т", "О", "Р", "Ы", "Й", " ", "В", "И", "Д", "И", "Т" },
num = 8,
enter = function() music_("spell",0)(); end,
dsc = [[Это была долгая и продолжительная гибернация, словно затянувшаяся ледяная полярная ночь ... Но вот настало время моей вахты, я -- WR015, пора выходить в операционный режим. ]];
obj = { vway("nxt", '{Далее}', 'robot_room') }
};
endgame = room {
nam="Выход из гибернации",
enter = function() mute_()(); complete_("robot")() end,
dsc = [[ Сегодня -- день когда я выхожу на корабельное дежурство, мой номер -- WR015, и центральный компьютер активировал меня несколько минут назад. ^Моя операционная система загрузилась и я начал осознавать, что в режиме гибернации -- видел сны, удивительное дело для робота, надо будет при случае обсудить этот вопрос с центральным компьютером... ^^Я постепенно активировал все свои контуры и схемы, внезапно, смутные и тревожные, смазанные реальностью картины увиденного в эту длящуюся как одинокая полярная ночь, сна, на короткие мгновения всколыхнули какие-то странные мысли и предположения в моем мозгу, но я отбросил их и стал изучать отчеты поступающие от системы диагностики...]]
,act = gamefile_("engineer.lua")
,obj = { vobj("next", txtc("^{Продолжение...}")) }
}
robot_room = room {nam = "Спецблок", var { cam_door_open=false, cam_door_oiled = false },
pxa = {
{ "panel", 120 }, { if_("robot_room.cam_door_open","door2_open","door4"), 200 }, { if_("exist(electro_swab)", "cleaner"), 340 }
},
dsc = function(s) if not me().stand_stat then if not me().crawl_stat and not me().stand_sw_stat then if s.cam_door_open then p [[ Я стою в своей камере хранения, прямо передо мной открытый дверной проем. Как только я активировал дверь во всем отсеке включилось освещение, теперь я наблюдаю как мерно нагреваются осветительные панели, разгоняя окружающую темноту. ]]; else p [[ Я включил звуковые и зрительные анализаторы и оценил обстановку. Искусственное освещение отсутствует, я слышу равномерные звуки работы различной электроники корабельных систем. ]]; end; elseif me().crawl_stat and not have(electro_swab) then p [[ Я прополз из отсека в свою камеру гибернации, неловко цепляясь манипулятором за покрытие пола и отталкиваясь ногой от различного хлама, попавшегося на пути. ]]; elseif have(electro_swab) and not me().stand_sw_stat then p [[ Я лежу на полу своей камеры, держась манипулятором за электрошвабру. ]]; elseif me().stand_sw_stat then p [[ "Камера для гибернации, уютное вместилище для одной единицы "боевого" робота вахтера", -- такие грустные мысли посетили меня, при осмотре своей камеры хранения. ]] else p [[ Я в камере гибернации. "Совсем не так я представлял себе свое дежурство", -- подумалось мне оглядываясь на пройденный путь. ]]; end; end; end,
act = function(s,w) if w == 'nxt' then walk(endgame); elseif w == 'butt_op' then if not have(electro_swab) then if not s.cam_door_open then p [[ Я протянул манипулятор и переключил рычаг управления. Дверь моей камеры хранения стала медленно опускаться, издавая протяжный скрип... "Надо бы смазать направляющие и движущиеся части, автоматически замечаю я..." ]]; s.cam_door_open = true; else p [[ Протянув манипулятор и переключив рычаг, я услышал как раздалось шипение пневмоприводов и дверь, поскрипывая, поднялась, наглухо закрыв проем. Стало темно. ]]; s.cam_door_open = false; end; else p [[ Неуверенно балансируя на одной ноге, я протянул манипулятор с зажатой в нем электрошваброй к рычагу управления и мне почти удалось, в последний момент, я выронил швабру и падая зацепил рычаг. ^Упал я прямо на начавшую подниматься дверь, мое тело стало подниматься вместе с ней... ^^Прошло мгновение, прежде чем я осознал фатальность своей ошибки, и тут сработал сигнал тревоги, но было уже поздно... Я попытался оттолкнуться от двери и спрыгнуть внутрь камеры, тем самым лишь усугубив свое положение, переместив голову под неумолимый пресс... Последней мыслью в моем угасающем позитронном мозгу, было осознание всей нелепости, абсурдности происходящего... ^Кажется я закричал... ]]; remove(electro_swab,me()); disable_all(objs(s)); enable(exist('nxt',s));end; end; end, way = { 'robot_deck', }, obj = { vobj("butt_op", 'Передо мной на стене расположена {панель управления}, подсвечиваемая тусклыми индикаторами.'), vobj("nxt", '{Далее}'):disable() },
exit = function(s,e)
if e == main2 then
disable_all(objs(e));
elseif e == robot_deck then
if not s.cam_door_open then
p [[ Я постучал манипулятором по двери, перегораживающей основной отсек и мою камеру. Раздался металлический глухой звук. ]];
elseif me().crawl_stat or me().stand_sw_stat then
p [[ Зачем мне ползти обратно в отсек, если я с таким трудом добирался в камеру. ]];
else
return true;
end;
return false;
end;
end,
};
-------------
robot_deck = room { nam = function(s) if here() == robot_room thenp (_("Выйти в Отсек N12" elsep (_("Отсек 12")))) end; end,
pxa = {
{ "box", 10 }, { "box", 110 }, { "panel_broken", 220 }, { "door2_open", 300 }
},
var { seen = false; }, dsc = function(s) if not s.seen then if me().arm_stat then p [[ Лежа на полу я пошевелил оставшимися конечностями. Кажется все в норме. ]]; else p [[ Я сделал шаг и ... выпал из камеры на пол отсека №12, предназначенного для хранения роботов подобных мне. Что-то не так с моими сервоприводами?!? ]]; end; elseif s.seen then if me().stand_try then if me().roll_stat then p [[ Отсек №12 -- оплот и родной дом для трети всех роботов предназначенных для несения вахты на корабле. И вот теперь я лежу на полу этого дома и смотрю на перемигивающиеся на потолке световые панели. ]]; end; else p [[ Кажется, если я так и буду продолжать лежать и бездействовать, то в итоге мои схемы потускнеют, и я превращусь в еще один кусок хлама среди этого побоища. ]]; end; end; end, act = function(s, w) if w == 'look' then if not me().roll_stat then p [[ Я осматриваюсь и понимаю, -- что-то неладное творится на этом корабле. В обширном отсеке заметны следы разного рода разрушений, некоторые двери камер хранения для вахтовых роботов искарежены, некоторые отсуствуют напрочь. Стеновые панели, пол и потолок в следах гари и сажи, по всему отсеку тут и там разбросаны запчасти и детали разного рода и назначения, судя по всему принадлежащие не только роботам. ^В одном из углов свалена целая куча тел моих сотоварищей. ]]; elseif not me().stand_try then p [[ Я осматриваю окружающую меня действительность, приподнявшись на локте манипулятора и вращая голову вокруг своей оси. То что я вижу удручает меня еще больше... ^В одной из стен отсека остутствует часть обшивки внушительных размеров, повсюду свисают токопроводящие кабели, в некоторых местах наблюдаются их обрывы и оголенные концы порождают искры, замыкаясь в свободном парении, осветительные панели и лампы работают наперебой. ^В той куче сваленных друг на друга частей тел и деталей роботов я заметил какое-то движение, что-то серое с красными глазами и хвостом промелькнуло в потрохах одного из роботов. ]]; elseif not me().standup_try then p [[ Проанализировав помещение отсека для камер хранения, и понимаю, что все возможные выходы из отсека либо заблокированы автоматикой, либо не функционируют, либо завалены непроходимой кучей мусора и хлама... ^Служебный элеватор обесточен, видимо из-за проблем с электропроводкой. ^Единственный возможный выход -- в открытый космос. При этой мысли я в который раз поблагодарил своих создателей сделавших меня ро
-------------
electro_swab = obj { nam = "Электрошвабра",
dsc = [[ В моей камере стоит {электрошвабра}. ]],tak = 'Я подполз к швабре и схватил ее манипулятором.', inv = function(s) if me().crawl_stat then p [[ Оперевшись на одну из стен камеры и помогая себе шваброй, примерно со второй попытки мне удалось подняться на одну ногу. Теперь я стою на одной ноге и вместо второй упираюсь в пол манипулятором с зажатой шваброй. ]]; me().crawl_stat = false; me().stand_sw_stat = true; enable(exist('butt_op', here())); else p [[ Стандартная электрошвабра, такой пользуются роботы при уборке помещений. Подходит для большинства типов поверхностей. ]]; end; end, nouse = 'Предполагаю, что это не самое правильное применение для электрошвабры.', };