Changeset - 550f49d73f5d
[Not reviewed]
default
0 2 0
Silverwing - 6 years ago 2019-02-03 14:41:56

logical inconsistency fixed
2 files changed with 25 insertions and 7 deletions:
0 comments (0 inline, 0 general)
items.lua
Show inline comments
 
item_book_on_navjiarr = obj {
 
    nam = "item_book_on_navjiarr";
 
    disp = "Книга о навьярах";
 
    dsc = [[На столе лежит кем-то оставленная {книга}.]];
 
    tak = [[Книга содержит некоторые сведения о навьярах. Возможно, она поможет вам в странствиях. ]];
 
    inv = function(s)
 
        if (here().underwater) then
 
            return [[Я не смогу здесь читать. ]];
 
        else
 
            walkin('item_book_dlg');
 
        end;
 
    end;
 
};
 
 
item_book_dlg = dlg {
 
    var = {
 
        a = false;
 
        b = false;
 
        c = false;
 
        d = false;
 
    };
 
    nam = "Книга о навьярах";
 
    entered = [[Вы открываете оглавление и ищете нужную вам информацию. ]];
 
    phr = {
 
        {always=true, "Арифметика", [[Навьяры используют шестиричную систему счисления. Для цифр используются цветовые обозначения, аналогичные буквам. В скобках приведены названия на навьярском языке(запись по системе Светловой): ^]]..
 
            img('box:4x16,#8000FF,255') .. [[ - 0 (Nol)^]] ..
 
            img('box:4x16,#0080FF,255') .. [[ - 1 (Lse)^]] ..
 
            img('box:4x16,#00FF80,255') .. [[ - 2 (Dyle)^]] ..
 
            img('box:4x16,yellow,255') .. [[ - 3 (Vlye)^]] ..
 
            img('box:4x16,#FFCC00,255') .. [[ - 4 (Elt)^]] ..
 
            img('box:4x16,red,255') .. [[ - 5 (Tei)]]};
 
        {always=true, "Картография", [[Навьярские карты значительно отличаются от наших. Масштабы не задаются и не выдерживаются, позволяя тем самым умещать множество деталей там где они нужны и сжимать расстояние там, где это не имеет значения. навьярские карты в основном используются для записи путей от центральной точки к нескольким удаленным от нее. Некоторые обозначения: ^]] ..
 
        img('images/book_temple.png') .. " - храм ^" ..
 
        img('images/book_city.png') .. " - город ^" ..
 
        img('images/book_current.png') .. " - течение. Если символ идет из центра к краю - значит следует идти по(или против) направления течения, если перпендикулярно радиусу окружностей - то течение пересекает путь^" ..
 
        img('images/book_ravine.png') .. " - ущелье. Используется аналогично предыдущему ^" ..
 
        img('images/book_cliff.png') .. " - скала. Используется аналогично течению или ущелью. Сторона с отметками означает край, находящийся выше ^" ..
 
        img('images/book_stones.png') .. " - сооружение. Используется для любых искусственных сооружений ^" ..
 
        img('images/book_bones.png') .. " - кости ^Список продолжается еще на много страниц. ", code [[ cart_known = true; ]]};
 
        {always=true, "Язык", code [[ psub('language'); ]]};
 
        {always=true, "[Отложить книгу]", code [[ if item_book_dlg.a and item_book_dlg.b and item_book_dlg.c then language_known = true; end; back(); ]]};
 
        {tag="language"};
 
        {always=true, "Общение", [[В обычной жизни навьяры могут использовать два взаимозаменяемых способа общения: ^1) Наиболее часто навьяры используют цветовые сигналы, подаваемые с использованием особых отростков на голове, напоминающих плавники. Светящийся пигмент просвечивает через тонкую кожу и равномерно распространяется к краям "плавника", постепенно затухая. Как правило, навьяры "говорят" достаточно быстро - у взрослого навьяра на плавнике может одновременно находиться около десятка таких цветных полос. Последовательности цветов разделяются т.н. паузами и полупаузами(полупауза как правило заметно тоньше обычной цветной полосы). ^2) Альтернативно, навьяры могут общаться посредством устной речи, однако практически не пользуются этим в естественной среде обитания(примечание Сильвии Уинтерлайт: навьяры не рыбы, а амфибии. Вероятно некогда они жили преимущественно на поверхности и использовали этот способ общения в качестве основного). Количество звуков примерно соответствует колицеству цветов, используемых для первого способа. Каждому цвету имеется четкое звуковое соответствие. ]], code [[ item_book_dlg.a = true; ]]};
 
        {always=true, "Алфавит и письменность", [[Современные навьярские записи выглядят как каменные таблички с ровными рядами цветных полос. Ширина полос разнится от документа к документу и составляет от 1 до 15 мм. Хотя данный способ записи достаточно компактен, для нас он неудобен и дорог. С этой целью, я предлагаю использовать альтернативную систему письменности, основанную на латинском алфавите. Каждому цвету будет сопоставлена определенная буква. Ниже приведено соответствие цветов звукам и буквам. ^]] ..
 
        img('box:4x16,red,255') .. " - A^" ..
 
        img('box:4x16,orange,255') .. " - R^" ..
 
        img('box:4x16,#FFCC00,255') .. " - N^" ..
 
        img('box:4x16,yellow,255') .. " - E^" ..
 
        img('box:4x16,#B9FF00,255') .. " - V^" ..
 
        img('box:4x16,#7BAA00,255') .. " - F^" ..
 
        img('box:4x16,#00FF00,255') .. " - Y^" ..
 
        img('box:4x16,#00FF80,255') .. " - L^" ..
 
        img('box:4x16,#00FFFF,255') .. " - I^" ..
 
        img('box:4x16,#0080FF,255') .. " - H^" ..
 
        img('box:4x16,#0000FF,255') .. " - P^" ..
 
        img('box:4x16,#8000FF,255') .. " - K^" ..
 
        img('box:4x16,#BF00FF,255') .. " - O^" ..
 
        img('box:4x16,#FF00FF,255') .. " - D^" ..
 
        img('box:4x16,#800080,255') .. " - T^" ..
 
        img('box:4x16,#FF0080,255') .. " - Z^" ..
 
        img('box:4x16,#AA0055,255') .. " - S", code [[ item_book_dlg.b = true; ]]};
 
        {always=true, "Структура слова", [[В навьярском языке слова не являются фиксированными единицами, а составляются из множества корней-признаков, присущих данному предмету(rr) или действию (nn). Признаки могут отделяться от остальных корнями "e"(если речь идет о разделенных предметах) или "yhe"(если речь идет о под0группе). Примеры: ^Na'vji'a'rr - навьяр^Ty'yhe'na'vji'a'rr - ты -- навьяр^Vee'nn - двигаться^Zee'vee'nn - отдаляться^ Основные периоды времени:^Nley'elra'ysl'rr - сутки^Ynd'elra'ysl'rr - год^rja'elra'ysl'rr - 216 лет]], code [[ item_book_dlg.c = true; ]]};
 
        {always=true, "Словарь", [[A:^A, av, ava – живой^aed – океан, море^Ah - согласие^Arn – работа^Atre - предупреждение, опасность^Anot – жилище^Arhe – назад^Ayhe, Ayke – знание^]] ..
 
                                 [[D:^Dea - предложение^Doo - последствие^]] ..
 
                                 [[E:^Ere – множество, группа^Eanea - улица^E – признак объединения^Edhe – насмешка^Elra – период^Eyle – всеобщность^Eylesl - вечность^Eth - сон^Ef – способ действия^]] ..
 
                                 [[H:^Hi - помощь^He – верх^Hyd - причина^Has – неопределенность^Hya – память, хранение^]] ..
 
                                 [[I:^I – Я, Мы^In – добавление, дополнение^Ien — верх^Ile – видимость^Intre – уверенность^Iraa – среда(окружение)^]] ..
 
                                 [[J:^Jir — трава, водоросль^]]..
 
                                 [[K:^Kd – неодобрение^Ky - зуб^]] ..
 
                                 [[L:^Lea – Радость^Lek – место^Lyt - встреча^]]..
 
                                 [[N:^Nea – путь, дорога^Na – низ^Nev — изменение^Nley – малый(размер, объем, количество)^Ny – присутствие^Ndi - тьма^]]..
 
                                 [[P:^Pha - светящийся, сияющий^Per - вперед^Pte – он, они, она, оно, это^Pai — копье^]]..
 
                                 [[R:^Rja – большой^Ry - Порядок^]]..
 
                                 [[T:^Tel - значимость^Ta - указание места^Tna – привязка, принадлежность^Tla – источник^Tek – механизм^Tre – множество^Ty – Ты, Вы^]]..
 
                                 [[V:^Ven – тепло^Vil — покрывало, завеса^Vee – Подвижный, движущийся^Vji – разумный^Vta – неприязнь^Vtre – отрицание. Используется для обозначения противоположности другому признаку^Vlae – разделение^Vna – низ^Viv - острый^]] ..
 
                                 [[Y:^Tea — наблюдать, смотреть^Ynd - средний^Yhe – Разграничитель – ставится после необязательных признаков^Ysl – время^]]..
 
                                 [[Z:^Za – язык^Zy - вопрос^Zee – отдаление^Yz – святилище, храм]], code [[ item_book_dlg.d = true; ]]};
 
        {always=true, "[В другой раздел]", code [[ 
 
            pret(); 
 
            if item_book_dlg.a and item_book_dlg.b and item_book_dlg.c and item_book_dlg.d then
 
                language_known = true;
 
            end;
 
        ]]}
 
    };
 
};
 
 
item_pickaxe = obj {
 
	nam = "pickaxe";
 
	disp = "Кирка";
 
	dsc = [[На одной из полок вы замечаете {кирку}. ]];
 
	tak = [[Вы решили забрать кирку с собой, на всякий случай. ]];
 
	inv = [[Хорошая годная кирка. Сделанная из неизвестного металла она хорошо перенесла тысячелетия здесь. ]];
 
	use = function(s, o)
 
		local canhit = false;
 
		if (type(o.canhit) == "function") then
 
			canhit = o.canhit(o);
 
		else
 
			canhit = o.canhit;
 
		end;
 
		
 
		if (canhit) then
 
			if (o.onhit) then
 
				return(o.onhit(o));
 
			else
 
				return "";
 
			end;
 
		elseif (o.nohitmsg) then
 
			return o.nohitmsg;
 
		else
 
			return "Я не буду этого делать!";
 
		end;
 
	end;
 
};
 
 
item_spear = obj {
 
    nam = "item_spear";
 
    disp = "Копье";
 
    dsc = [[{Копье Фаэтларра} аккуратно прислонено к стене]];
 
    tak = [[Фаэтларр забирает копье. ]];
 
    inv = [[Копье, добытое Фаэтларром в честном бою. ]];
 
    use = function(s, o)
 
        local canhit = false;
 
        if (type(o.canhit) == "function") then
 
            canhit = o.canhit(o);
 
        else
 
            canhit = o.canhit;
 
        end;
 
        
 
        if (canhit) then
 
            if (o.onhit) then
 
                return(o.onhit(o));
 
            else
 
                return "";
 
            end;
 
        elseif (o.nohitmsg) then
 
            return o.nohitmsg;
 
        else
 
            return "Я не буду этого делать!";
 
        end;
 
    end;
 
};
 
 
item_colt = obj {
 
    var {
 
        bullets = 6;
 
    };
 
	nam = "colt";
 
	disp = function(s)
 
		return "Кольт (" .. tostring(s.bullets) .. " зарядов)";
 
	end;
 
	dsc = [[На столе лежит {револьвер}. ]];
 
    tak = "Вы забираете револьвер. ";
 
	use = function(s, o)
 
        if (here().underwater) then
 
            return "Под водой это вам не поможет. ";
 
        end;
 
    
 
		if (s.bullets == 0) then
 
			return "Нужно перезарядиться, патроны кончились";
 
		end;
 
		
 
		local canshoot = false;
 
		if (type(o.canshoot) == "function") then
 
			canshoot = o.canshoot(o);
 
		else
 
			canshoot = o.canshoot;
 
		end;
 
		
 
		if (canshoot) then
 
			s.bullets = s.bullets - 1;
 
			p("Вы стреляете в "..o.disp2 .. ". ");
 
			if (o.onshoot) then
 
				return(o.onshoot(o));
 
			else
 
				return "";
 
			end;
 
		elseif (o.noshootmsg) then
 
		elseif o.noshootsilent then
 
			return
 
		elseif o.noshootmsg then
 
			return o.noshootmsg;
 
		else
 
			return "Я не буду этого делать!";
 
		end;
 
	end;
 
	inv = function(s)
 
		if (s.bullets > 0) then
 
			return [[Ваш револьвер. Надежное оружие в хорошем состоянии. Оно еще не раз спасет вашу жизнь. У вас также есть небольшой запас патронов к нему. ]];
 
		else
 
			s.bullets = 6;
 
			p [[Вы перезаряжаете ваш револьвер и оружие снова готово к бою. ]];
 
            if (type(here().onreload) == 'function') then
 
                here().onreload();
 
            end;
 
		end;
 
	end;
 
};
 
 
item_harpoon = obj {
 
    var {
 
        charge = 1;
 
    };
 
    nam = "item_harpoon";
 
    disp = function(s)
 
        if (s.charge == 0) then
 
            return "Ружье (разряжено)";
 
        else
 
            return "Ружье (заряжено)";
 
        end;
 
    end;
 
    dsc = [[К стене прислонено {гарпунное ружье}. ]];
 
    tak = "Вы забираете ружье. ";
 
    use = function(s, o)
 
        if (s.charge == 0) then
 
            return "Ружье не заряжено. ";
 
        end;
 
        
 
        local canshoot = false;
 
        if (type(o.canshoot) == "function") then
 
            canshoot = o:canshoot();
 
        else
 
            canshoot = o.canshoot;
 
        end;
 
        
 
        local canthrust = false;
 
        if (type(o.canthrust) == "function") then
 
            canthrust = o:canthrust();
 
        else
 
            canthrust = o.canthrust;
 
        end;
 
        
 
        if (canthrust) then
 
            p("Вы атакуете "..o.disp2 .. ". ");
 
            if (o.onthrust) then
 
                return(o.onthrust(o));
 
            else
 
                return "";
 
            end;
 
        elseif (canshoot) then
 
            s.charge = s.charge - 1;
 
            p("Вы стреляете в "..o.disp2 .. ". ");
 
            if (o.onshoot) then
 
                return(o.onshoot(o));
 
            else
 
                return "";
 
            end;
 
		elseif o.noshootsilent then
 
			return
 
        elseif (o.noshootmsg) then
 
            return o.noshootmsg;
 
        else
 
            return "Я не буду этого делать!";
 
        end;
 
    end;
 
    inv = function(s)
 
        if (s.charge > 0) then
 
            return [[Пневматическое ружье с Левиафана. Стреляет гарпунами. Также у вас есть несколько запасных гарпунов с собой. ]];
 
        else
 
            s.charge = 1;
 
            p [[Вы заряжаете ружье. ]];
 
            if (type(here().onreload) == 'function') then
 
                here().onreload();
 
            end;
 
        end;
 
    end;
 
};
 
 
item_first_city_key = obj {
 
	nam = "first_city_key";
 
	disp = "Ключ от города";
 
	inv = [[Небольшой светящийся кубик со стороной около 2-х сантиметров. Он плавно меняет цвета: синий, зеленый, желтый, белый, красный, черный. ]];
 
	use = function(s, o)
 
		if (o == char_first_city_guardian) then 
 
			objs("first_city_entrance"):enable("first_city_first_gate");
 
			first_city_entrance.open = true;
 
			return [[Как только кубик попадает в поле зрения стража, его плавник гаснет и ворота начинают медленно открываться. 
 
				Через несколько минут они застывают в открытом состоянии. Теперь ничто не мешает вашему проходу. ]];
 
		end;
 
	end
 
};
 
 
item_service_info = obj {
 
	nam = "service_info";
 
	disp = "Схема города";
 
	inv = [[Это "карта" сервисных тоннелей Лсэрианотра. Вы видите следующие последовательности символов, подписанные на языке навьяров
 
		Nol      
 
		Tei      
 
		Vlye'Tei 
 
		Elt'Dyle 
 
		Tei'Elt	 
 
		Tei'Tei  
 
	]];
 
};
 
 
item_umbrella = obj {
 
	nam = "umbrella";
 
	disp = "Зонт";
 
	inv = [[Совершенно новый зонт производства "Винсент и сыновья". ]];
 
};
 
 
--[[
 
	Chapter 1
 
]]
 
item_lamp = obj {
 
	nam = "lamp";
 
	disp = "Лампа";
 
	dsc = "На столе стоит {керосиновая лампа}. ";
 
	tak = "Вы забираете лампу с собой. ";
 
	inv = function(s)
 
		if (here().nolamp) then
 
			return "Здесь не стоит зажигать лампу. ";
 
		end;
 
		if (me().has_light) then
 
			me().has_light = false;
 
			return "Вы гасите свет. ";
 
		else
 
			me().has_light = true;
 
			return "Вы зажигаете лампу. ";
 
		end;
 
	end;
 
};
 
 
item_toolbox = obj {
 
	nam = "toolbox";
 
	disp = "Ящик с инструментами";
 
	dsc = function(s)
 
		if where(s) == leviathan_airlock then
 
			return [[На полу стоит {ящик с инструментами}. ]];
 
		else
 
			return [[На земле, рядом со скамейкой стоит {ящик с инструментами}. ]];
 
		end;
 
	end;
 
	tak = function(s)
 
		if (not char_worker.bought) then
 
			return [[Рабочий огрызается на вас: _"Руки прочь!"_ ]], false;
 
		else
 
			return [[Вы забираете ящик с собой]], true;
 
		end;
 
	end;
 
	inv = [[Ящик со всевозможными полезными и не очень инструментами: отвертками, ключами, молотками и т.д. ]];
 
};
 
 
item_money = obj {
 
	nam = "money";
 
	disp = function(s)
 
		if pl.money == 0 or not pl.money then
 
			return "Пустой кошелек";
 
		else
 
			return s.money_format();
 
		end;
 
	end;
 
	inv = function(s)
 
		if pl.money == 0 or not pl.money then
 
			return "Кошелек пуст";
 
		else
 
			return [[Кошелек с монетами различного достоинства на сумму ]] .. s.money_format();
 
		end;
 
	end;
 
	money_format = function()
 
		if (pl.money % 100 / 10 ~= 1 and pl.money % 10 == 1) then
 
			return tostring(pl.money) .. " шиллинг";
 
		elseif (pl.money % 100 / 10 ~= 1 and (pl.money % 10 == 2 or pl.money % 10 == 3 or pl.money % 10 == 4)) then
 
			return tostring(pl.money) .. " шиллинга";
 
		else 
 
			return tostring(pl.money) .. " шиллингов";
 
		end;
 
	end;
 
};
 
 
item_note_1 = obj {
 
	nam = "note1";
 
	disp = "Записка";
 
	inv = [[Небольшой клочок бумаги с адресом Майкла Райта в Лондоне. ]];
 
};
 
 
item_charts = obj {
 
	nam = "charts";
 
	disp = "Документы отца";
 
	dsc = [[На столе лежат {схемы складов и верфей} Вестхейвен Трансоушен. ]];
 
	inv = [[Схемы нескольких строений, принадлежавших компании отца. На некоторых схемах есть места отмечены жирными крестиками. Схемы с крестиками обозначены как склад 18, док 2, склад 32. ]];
 
	use = function(s, o)
 
		if (o == char_wright_home) then
 
			remove(s, pl);
 
			put(s, item_wright_table);
 
			char_wright_home.documents = true;
 
			return [[
 
				Вы отдаете бумаги Джеку. Он кладет их на стол и принимается изучать.
 
			]];
 
		end;
 
	end;
 
	tak = function()
 
		pn("Лучше оставить бумаги Джеку. Возможно он что-нибудь найдет. ");
 
		return false;
 
	end;
 
};
 
 
item_bottle = obj {
 
	nam = "item_bottle";
 
	disp = "Бутылка с пойлом";
 
	inv = [[Бутылка дешевого пойла. Вас воротит от одного запаха этой дряни. ]];
 
	--[[use = function(s, o)
 
		if (o == char_worker) then
 
			remove(s, pl);
 
			char_worker.bought = true;
 
			pr([ [Вы подходите к рабочему и, аккуратно доставая бутылку, спрашиваете: ^
 
				-- Выпить хочешь? ^
 
				-- Ага, -- удивленно и обрадованно восклицает рабочий, протягивая руки. ^
 
				-- Меняю на твой ящик с инструментами. ^
 
				-- Идет, -- отвечает рабочий, выхватывая из ваших рук заветную бутылку. ] ]);
 
		end;
 
	end;]]
 
};
 
 
item_pump_broken = obj {
 
	nam = "item_pump_broken";
 
	disp = "Насос";
 
	inv = [[Старый ручной насос. Рычаг сломан, делая его использование невозможным. ]];
 
};
 
 
item_pump = obj {
 
	nam = "item_pump";
 
	disp = "Насос";
 
	inv = [[Старый ручной насос. ]];
 
};
 
 
item_pump_details = obj {
 
	nam = "item_pump_details";
 
	disp = "Детали насоса";
 
	inv = [[
 
		Запчасти для насоса. 
 
	]];
 
	use = function(s, o)
 
		if (o == item_pump_broken) then
 
			remove(s, pl);
 
			remove(item_pump_broken, pl);
 
			put(item_pump, pl);
 
			return [[Вы починили насос. ]];
 
		end;
 
	end;
 
};
journey_venaedanotrr.lua
Show inline comments
 
@@ -1492,306 +1492,320 @@ ven_temple_keeper_house_inside = room {
 
            pr [[Хранитель не позволит вам сделать это. ]];
 
            return false;
 
        end);
 
    };
 
    left = function(s)
 
        if ven_keeper_shelf.state == 1 then
 
            ven_keeper_asleep = true;
 
            remove('ven_char_temple_keeper', ven_temple_keeper_house_inside);
 
            put('ven_char_temple_keeper_asleep', ven_temple_keeper_house_inside);
 
        end;
 
    end;
 
}
 

	
 
ven_keeper_shelf = obj {
 
    var {
 
        state = 0;
 
    };
 
    nam = 'ven_keeper_shelf';
 
    dsc = 'Рядом со входом расположена небольшая полка, на которой лежат несколько пучков {водорослей}. ';
 
    act = function(s)
 
        if s.state == 0 then
 
            return [[Немного водорослей, обычно употребляемых навьярами в пищу. ]];
 
        else
 
            return [[Немного водорослей, обычно употребляемых навьярами в пищу. Эти водоросли пропитаны снотворным. ]];
 
        end;
 
    end;
 
    used = function(s, o)
 
        if o == ven_item_potion then
 
            remove(ven_item_potion, pl);
 
            s.state = 1;
 
            return [[Вы аккуратно открываете флакон со снотворным. Небольшая часть темной жидкости растворвяется в окружающей воде, но этой концентрации недостаточно. Вы берете немного водорослей и опускаете их во флакон. Водоросли впитывают снадобье как губка. ]];
 
        end;
 
    end;
 
}
 

	
 
ven_temple_keeper_house_cellar = darkroom {
 
    nam = 'ven_temple_keeper_house_cellar';
 
    underwater = true;
 
    disp = 'Храм Венаэданотра, дом хранителя, подвал';
 
    dsc = [[Небольшой подвал дома хранителя. В темноте вы с трудом различаете очертания предметов. ]];
 
    obj = {
 
        'ven_keeper_chest'
 
    };
 
    way = {
 
        kh_vroom('Наверх', "ven_temple_keeper_house_inside", 2);
 
    };
 
}
 

	
 
ven_keeper_chest = obj {
 
    var {
 
        state = 0;
 
    };
 
    nam = 'ven_keeper_chest';
 
    seen_level = 1;
 
    dsc = 'В углу комнаты стоит массивный каменный {сундук}. ';
 
    act = function(s)
 
        if s.state == 0 then
 
            walkin(ven_temple_lock);
 
        else
 
            pr [[Вы уже сделали здесь все необходимое. ]];
 
            return false;
 
        end;
 
    end;
 
}
 

	
 
ven_char_temple_keeper_asleep = obj {
 
    nam = 'ven_char_temple_keeper';
 
    dsc = [[{Хранитель} храма мирно спит на кровати. ]];
 
    act = [[Не стоит его тревожить. ]];
 

	
 
}
 

	
 
ven_char_temple_keeper = npc {
 
    nam = 'ven_char_temple_keeper';
 
    dsc = [[На кровати сидит старый {навьяр}. Чешуя его почти белая, серые глаза с неприязнью смотрят на вас. ]];
 
    dlg = 'ven_char_temple_keeper_dlg';
 
}
 

	
 
ven_char_temple_keeper_dlg = dlg {
 
    nam = 'ven_char_temple_keeper_dlg';
 
    disp = 'Хранитель храма';
 
    entered = function(s)
 
        if ven_quest_status == 7 then
 
            pon("key");
 
        end;
 
        return [[Сидящий на кровати навьяр с неприязнью смотрит на вас. По его плавникам пробегают цветные полосы: "Уходите. Я ничего вам не скажу". ]];
 
    end;
 
    phr = {
 
        {tag='key', false, '[Кодировщик]Эйлираорр сказал, что вы можете дать мне ключ от храма.', [[Хранитель говорит: "Я не дам вам ключ. Уходите". ]], code [[ ven_quest_status = 8; pon("why", "drake"); ]]};
 
        {tag="why", false, '[Кодировщик]Почему вы не дадите нам ключ?', [[Хранитель отвечает: "Это не ваше дело. Уходите". ]]};
 
        {tag="drake", false, '[Кодировщик]Другие хевьяры были в храме?', [[Хранитель отвечает: "Это не ваше дело. Уходите". ]]};
 
        {always=true, "[Кодировщик]Я пойду.", [[Хранитель отворачивается от вас. ]], code [[back();]]};
 
    };
 
};
 

	
 
ven_temple_lock = room {
 
    values = {
 
        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 
    };
 
    nam = 'Сундук';
 
    not_follow = true;
 
    pic = function(s)
 
        local p = "blank:120x120";
 
        for v = 1, #s.values do
 
            local tx = (v - 1) % 4;
 
            local ty = math.floor((v - 1) / 4);
 

	
 
            local lstate = '';
 
            if s.values[v] == 1 then
 
                lstate = 'pressed';
 
            else
 
                lstate = 'unpressed';
 
            end;
 

	
 
            p = p .. ';images/tile_' .. lstate .. '.png@' .. tostring(tx * 30) .. ',' .. tostring(ty * 30);
 
        end;
 
        return p;
 
    end;
 
    click = function(s, x, y)
 
        local t = 1 + math.floor(x / 30) + math.floor(y / 30) * 4;
 
        local tup = t - 4;
 
        local tlt = t - 1;
 
        local trt = t + 1;
 
        local tdn = t + 4;
 

	
 
        if s.values[t] == 1 then
 
            s.values[t] = 0;
 
        else
 
            s.values[t] = 1;
 
        end;
 

	
 
        if tup > 0 then
 
            if s.values[tup] == 1 then
 
                s.values[tup] = 0;
 
            else
 
                s.values[tup] = 1;
 
            end;
 
        end;
 

	
 
        if tdn < 17 then
 
            if s.values[tdn] == 1 then
 
                s.values[tdn] = 0;
 
            else
 
                s.values[tdn] = 1;
 
            end;
 
        end;
 

	
 
        if tlt % 4 ~= 0 then
 
            if s.values[tlt] == 1 then
 
                s.values[tlt] = 0;
 
            else
 
                s.values[tlt] = 1;
 
            end;
 
        end;
 

	
 
        if trt % 4 ~= 1 then
 
            if s.values[trt] == 1 then
 
                s.values[trt] = 0;
 
            else
 
                s.values[trt] = 1;
 
            end;
 
        end;
 

	
 
        for v = 1, #s.values do
 
            if s.values[v] == 0 then
 
                walk(here());
 
                return;
 
            end;
 
        end;
 

	
 
        p("С легким скрежетом сундук открывается. Внутри вы обнаруживаете огромное количество каменных и металлических табличек в разном состоянии, огромную стопку светодисков и искомый вами красный камень. ");
 
        take(ven_item_red_key);
 
        walk(ven_temple_keeper_house_cellar);
 
        ven_keeper_chest.state = 1;
 
    end;
 
}
 

	
 
ven_temple_hall_1 = room {
 
    nam = 'Храм Венаэданотра, главный зал';
 
    underwater = true;
 
    dsc = [[Вы находитесь в главном зале храма Венаэданотра, у входа. Внутреннее убранство этого храма отличается аскетичностью -- местные жители не стремятся выставлять свои реликвии напоказ, а в этом храме регулярно проводятся массовые службы. Многочисленные полки пусты, стены, как и везде густо покрыты светящимися водорослями. ]];
 
    way = {
 
        kh_vroom('Наружу', 'ven_temple_entrance');
 
        kh_vroom('К центру зала', 'ven_temple_hall_2');
 
    };
 
}
 

	
 
ven_temple_pedestal = obj {
 
    var {
 
        state = 0;
 
    };
 
    nam = 'ven_temple_pedestal';
 
    dsc = [[С одной из сторон пьедестала вашему взору открывается потайная ниша, внутри которой спрятан {рычаг}. ]];
 
    dsc = [[С одной из сторон пьедестала вашему взору открывается потайная ниша, внутри которой спрятана {кнопка}. ]];
 
    act = function(s)
 
        if s.state == 0 then
 
            ven_temple_pedestal.state = 1;
 
            ven_temple_qhall.state = 1;
 
            path("Наверх", ven_temple_qhall):enable();
 
            return [[Рычаг легко поддается. Из зала вопроса доносится гул, который вскоре оканчивается глухим ударом. ]];
 
            return [[Кнопка слишком далеко, чтобы нажать ее рукой. ]];
 
        else
 
            return [[Вам здесь больше нечего делать. ]];
 
            ven_temple_pedestal.state = 0;
 
            ven_temple_qhall.state = 0;
 
            path("Наверх", ven_temple_qhall):disable();
 
            put(item_harpoon, pl);
 
            return "Вы забираете ружье. ";
 
        end;
 
    end;
 
    canshoot = false;
 
    noshootsilent = true;
 
    used = function(s, o)
 
        if o == item_harpoon then
 
            if s.state == 0 then
 
                remove(item_harpoon, pl);
 
                ven_temple_pedestal.state = 1;
 
                ven_temple_qhall.state = 1;
 
                path("Наверх", ven_temple_qhall):enable();
 
                return [[Вы нажимаете кнопку гарпунным ружьем. К сожалению, его придется оставить здесь иначе кнопка отожмется. ]];
 
            end;
 
        end;
 
    end;
 
}
 

	
 
ven_temple_hall_2 = room {
 
    nam = 'Храм Венаэданотра, главный зал';
 
    underwater = true;
 
    dsc = [[В центре храма расположен пьедестал. На нем лежат несколько металлических табличек с древними письменами. ]];
 
    way = {
 
        kh_vroom('Ко входу', 'ven_temple_hall_1');
 
        kh_vroom('В конец зала', 'ven_temple_hall_3');
 
        kh_vroom('В зал вопроса', 'ven_temple_qhall');
 
        kh_vroom('В зал ответа', 'ven_temple_ahall');
 
    };
 
    obj = {
 
        ven_temple_pedestal:disable()
 
    }
 
}
 

	
 
ven_temple_hall_3 = room {
 
    nam = 'Храм Венаэданотра, главный зал';
 
    underwater = true;
 
    dsc = [[В этой части главного зала расположена небольшая неприметная дверца, ведущая в служебные помещения храма. ]];
 
    way = {
 
        kh_vroom('К центру зала', 'ven_temple_hall_2');
 
    };
 
}
 

	
 
ven_temple_qhall = room {
 
    var {
 
        state = 0;
 
    };
 
    nam = 'Храм Венаэданотра, зал вопроса';
 
    underwater = true;
 
    dsc = function(s)
 
        if s.state == 0 then
 
            return [[Небольшое помещение сбоку от основного храмового зала. Напротив входа на стену нанесено изображение главного зала. ]];
 
        else
 
            return [[Небольшое помещение сбоку от основного храмового зала. Напротив входа на стену нанесено изображение главного зала. Одна из боковых стен зала отсутствует, открывая проход на широкую лестницу, ведущую наверх. ]];
 
        end;
 
    end;
 
    obj = {
 
        'ven_qhall_altar'
 
    };
 
    way = {
 
        kh_vroom('В главный зал', 'ven_temple_hall_2');
 
        kh_vroom('Наверх', 'ven_temple_labyrinth_l1'):disable();
 
    };
 
};
 

	
 
ven_temple_ahall = room {
 
    nam = 'Храм Венаэданотра, зал ответа';
 
    underwater = true;
 
    dsc = [[Небольшое помещение сбоку от основного храмового зала. Напротив входа на стене выгравировано изображение навьяра, плывущего наверх. ]];
 
    entered = function(s)
 
        ven_temple_labyrinth_l1.position = '03';
 
    end;
 
    obj = {
 
        'ven_ahall_altar'
 
    };
 
    way = {
 
        kh_vroom('В главный зал', 'ven_temple_hall_2');
 
    };
 
};
 

	
 
ven_qhall_altar = obj {
 
    nam = 'ven_qhall_altar';
 
    dsc = [[В центре помещения установлен массивный каменный {алтарь}. ]];
 
    act = [[Серый каменный алтарь. Навьяры тщательно очищают его от светящихся водорослей, покрывающих остальные поверхности храма. Ничего примечательного если не считать того, что это почти идеально ровный параллелепипед. ]];
 
}
 

	
 
ven_ahall_altar = obj {
 
    var {
 
        state = 0;
 
    };
 
    nam = 'ven_qhall_altar';
 
    dsc = function(s)
 
        if s.state == 0 then
 
            return [[В центре помещения установлен массивный каменный {алтарь}. ]];
 
        else
 
            return [[В центре помещения установлен массивный каменный алтарь. В нижней его части расположено едва заметное {углубление}. ]];
 
        end;
 
    end;
 
    act = function(s)
 
        if s.state == 0 then
 
            s.state = 1;
 
            return [[Серый каменный алтарь. Навьяры тщательно очищают его от светящихся водорослей, покрывающих остальные поверхности храма. Ничего примечательного если не считать того, что это почти идеально ровный параллелепипед. В нижней части алтаря расположено едва заметное углубление. ]];
 
        elseif s.state == 1 then
 
            s.state = 2;
 
            ven_temple_pedestal:enable();
 
            return [[Вы протискиваете в углубление руку и сдвигаете там что-то. Слышите скрежет, доносящийся из главного зала. ]];
 
        else
 
            return [[Вам здесь больше нечего делать. ]];
 
        end;
 
    end;
 
}
 

	
 
ven_item_tablet = obj {
 
    nam = "ven_item_tablet";
 
    disp = "Табличка";
 
    inv = [[Металлическая табличка с рисунком, изображающим навьяра и человека, пожимающих друг другу руки. Человек изображен без скафандра. Навьяр изображен одетым в черный облегающий костюм, человек же одет как простой средневековый рыбак. Вдоль верхнего и нижнего края таблички расположены ровными рядами небольшие круглые отверстия. ]];
 
    tak = [[Вы забираете табличку. ]];
 
};
 

	
 
ven_raybox_cutscene = cutscene('Левиафан, кают-компания', 'Левиафан, кают-компания', [[В кают-компании вас встречает Уолтер Рэдклифф, завершающий установку на стол той самой коробочки лучей. Закончив работу, он оборачивается к вам и говорит: "Все готово, прибор работает. Я думаю, здесь для него наилучшее место". ]], 'leviathan_wardroom');
0 comments (0 inline, 0 general)