doencfile("logic.lua.enc");

------------------------------------------------------------------------------
stage2 = room {
	_tno = 2;
	_oldrc = 0;
	_rc = 0; --rc=0-ugood,1-ubad,2-ulost,3-overdestruct,4-no change
	_dstr = 0; --0-not done,1-one category,2-overdestruct
	_dstrcat = 0; --1-san,2-lamps,3-valves,4-furniture
	pic = function(s)
		if lamps3._b == 3 then
			return 'gfx/stage1/exit.png'
		elseif lamps3._b == 2 then
			return 'gfx/stage2/2e.png'
		elseif lamps3._b == 1 then
			return 'gfx/stage2/1e.png'
		end
		return 'gfx/stage2/0e.png'
	end;
	nam = function(s)
		return 'Туалет #' .. s._tno;
	end;
	dsc = function(s)
		if s._tno == 2 then
			return [[Шагнув за порог неизвестности, Вы обнаружили себя в
			АБСОЛЮТНО ТАКОМ ЖЕ ТУАЛЕТЕ!
			^^Вы окончательно потеряли последнюю надежду на собственную 
			вменяемость!
			^^Но... делать нечего. Надо как-то отсюда выбираться...]];
		end
		p [[Вы перешли в очередную туалетную комнату.^^]];
		if s._rc < 2 then
			p [[Этот туалет похож на предыдущий, однако Вы наблюдаете в нём
			некоторые дополнительные разрушения.]];
-- Убрал дурацкую подсказку, которая только сбивает. 
--			if s._rc == 1 then
--				p [[Вас не покидает покидает дурацкая мысль, что в предыдущем
--				туалете Вы что-то сделали не так, как надо.]];
--			end
		elseif s._rc < 4 then
			p [[Вы обнаружили себя в абсолютно новом туалете без каких-либо
			разрушений. Вы удивлены. А между прочим, удивляться нечему.]];
			if s._rc == 2 then
				p [[^Вы проиграли, и туалет полностью восстановлен для новой
				игры.]];
			else
				p [[^Внутренний сумасшедший голос Вам намекает, что, возможно,
				в предыдущем туалете Вы нарушили какие-то правила игры. Этой
				дурацкой игры! Причём непонятно какой! И это Вас жутко бесит!
				Но... Вы опять здесь. И надо что-то делать.]]; 
			end
		else 
			p [[Этот туалет - абсолютная копия предыдущей. Вы готовы закричать:
			"Сколько ещё этих #$% туалетов в этом #$% туалетном
			пространстве?!!" Но... кричать бессмысленно. Ибо Вы отдаёте себе
			отчёт, что Вас никто не услышит. Надо что-то делать...]];
		end
	end;
	obj = {'stage2next'};
};
------------------------------------------------------------------------------
catwarn = obj {
	nam = 'catwarn';
	dsc = '';
	life = function(s)
		lifeoff('catwarn');
		return [[Внутренний сумасшедший голос подсказывает Вам, что, возможно,
		на данный момент Вы нанесли слишком много разрушений. Больше чем
		нужно. Надо всё-таки стараться держать свою агрессию в здоровых
		рамках.]];
	end;
};
------------------------------------------------------------------------------
nullwarn = obj {
	nam = 'nullwarn';
	dsc = '';
	life = function(s)
		lifeoff('nullwarn');
		return [[Внутренний сумасшедший голос Вам подсказывает, что Вы
				проиграли, и что надо всё начинать сначала. Но тем не менее
				Вы верите, что Вы когда-нибудь отсюда выйдете. И надежда Ваша
				вполне оправдана.]];
	end;
};
------------------------------------------------------------------------------
ckdstr = function(c)
	if state_null() then
		lifeon('nullwarn');
		return true;
	end;
	if stage2._dstr == 2 then
		return true;
	end
	if stage2._dstr == 0 then
		stage2._dstr = 1;
		stage2._dstrcat = c;
		return true;
	end
	if stage2._dstrcat == c then
		return true;
	end
	lifeon('catwarn');
	stage2._dstr = 2;
	return true;
end;
------------------------------------------------------------------------------
stage2next = obj {
	nam = 'Дальше';
	dsc = '{Дальше}';
	act = function()
		if stage2._tno == 2 then
			take('hammer3');
			take('stameska3');
			take('key3');
			take('light3');
			take('vantuz3');
		end
		return goto('stoilet3');
	end;
};
------------------------------------------------------------------------------
hammer3 = obj {
	nam = txtl(img('gfx/inv/hammer.png')..' Молоток');
	dsc = 'Молоток';
	inv = [[Молоток! Чтобы что-нибудь разбить!]];
};
------------------------------------------------------------------------------
stameska3 = obj {
	nam = txtl(img('gfx/inv/stam.png')..' Стамеска');
	dsc = 'Стамеска';
	inv = [[Стамеска. Можно что-нибудь поддеть и оторвать.]]; 
};
------------------------------------------------------------------------------
key3 = obj {
	nam = txtl(img('gfx/inv/key.png')..' Ключ');
	dsc = 'Гаечный ключ';
	inv = [[Гаечный ключ. Хороший инструмент для срывания всяких гаек.]]; 
};
------------------------------------------------------------------------------
vantuz3 = obj {
	nam = txtl(img('gfx/inv/vantuz.png')..' Вантуз');
	dsc = 'Вантуз';
	inv = [[Вантуз! Подходящий инструмент для пропихивания. Неважно чего и 
	куда.]];
};
------------------------------------------------------------------------------
light3 = obj {
	nam = txtl(img('gfx/inv/flash.png')..' Фонарик');
	dsc = 'Фонарик';
	use = 'Фонарик у Вас всегда наготове.';
	inv = [[Фонарик. Он всегда с Вами! Единственное, на что можно полагаться 
	в этом зыбком пространстве туалетов.]];
};
------------------------------------------------------------------------------
ntoilet3 = room {
	nam = function()
		return 'Туалет #' .. stage2._tno .. ' - север';
	end;
	pic = function(s)
		if lamps3._b == 3 then 
			local p = 'gfx/stage2/3n.png';
			if hooks3._b < 3 then
				p = p..';gfx/stage2/3nh1.png@166,151'
			end
			if hooks3._b < 2 then
				p = p..';gfx/stage2/3nh2.png@222,151'
			end
			if hooks3._b < 1 then
				p = p..';gfx/stage2/3nh3.png@279,151'
			end
			if basin3._b ~= 0 then
				p = p ..';gfx/stage2/3nbasin.png@427,357'
			end
			if shelf3._b == 0 then
				p = p ..';gfx/stage2/3nshelf.png@336,210'
			end
			return p
		elseif lamps3._b == 2 then 
			local p = 'gfx/stage2/2n.png';
			if hooks3._b < 3 then
				p = p..';gfx/stage2/2nh1.png@164,150'
			end
			if hooks3._b < 2 then
				p = p..';gfx/stage2/2nh2.png@222,150'
			end
			if hooks3._b < 1 then
				p = p..';gfx/stage2/2nh3.png@278,151'
			end
			if basin3._b ~= 0 then
				p = p ..';gfx/stage2/2nbasin.png@429,356'
			end
			if shelf3._b == 0 then
				p = p ..';gfx/stage2/2nshelf.png@332,217'
			end
			return p
		elseif lamps3._b == 1 then 
			local p = 'gfx/stage2/1n.png';
			if hooks3._b < 3 then
				p = p..';gfx/stage2/1nh1.png@166,151'
			end
			if hooks3._b < 2 then
				p = p..';gfx/stage2/1nh2.png@222,151'
			end
			if hooks3._b < 1 then
				p = p..';gfx/stage2/1nh3.png@279,151'
			end
			if basin3._b ~= 0 then
				p = p ..';gfx/stage2/1nbasin.png@427,357'
			end
			if shelf3._b == 0 then
				p = p ..';gfx/stage2/1nshelf.png@336,210'
			end
			return p
		end
		local p = 'gfx/stage2/0n.png';
		if hooks3._b < 3 then
			p = p..';gfx/stage2/0nh1.png@166,151'
		end
		if hooks3._b < 2 then
			p = p..';gfx/stage2/0nh2.png@222,151'
		end
		if hooks3._b < 1 then
			p = p..';gfx/stage2/0nh3.png@279,151'
		end
		if basin3._b ~= 0 then
			p = p ..';gfx/stage2/0nbasin.png@370,305'
		end
		if shelf3._b == 0 then
			p = p ..';gfx/stage2/0nshelf.png@336,210'
		end
		return p

	end;
	dsc = 'Вы повернулись лицом к северной стене.';
	obj = { 'hooks3', 'shelf3', 'lbasin3' };
	way = { 'stoilet3', 'ceil3', 'door3' };
};
------------------------------------------------------------------------------
stoilet3 = room {
	pic = function(s)
		if lamps3._b == 3 then
			local p = 'gfx/stage2/3s.png';
			if towel3._b == 0 then
				p = p .. ';gfx/stage2/3stowel.png@3,121'
			end
			if tpaper3._b == 0 then
				p = p .. ';gfx/stage2/3sp.png@93,222'
			end
			if closet3._b == 0 then
				p = p .. ';gfx/stage2/3st.png@144,180'
				if closetvalve3._b == 1 then
					p = p .. ';gfx/stage2/3sv.png@206,279'
				end
			else
				if closetvalve3._b == 0 then
					p = p .. ';gfx/stage2/3svb.png@206,279'
				end
			end
			return p
		end
		if lamps3._b == 2 then
			local p = 'gfx/stage2/2s.png';
			if towel3._b == 0 then
				p = p .. ';gfx/stage2/2stowel.png@3,121'
			end
			if tpaper3._b == 0 then
				p = p .. ';gfx/stage2/2sp.png@93,222'
			end
			if closet3._b == 0 then
				p = p .. ';gfx/stage2/2st.png@144,180'
				if closetvalve3._b == 1 then
					p = p .. ';gfx/stage2/2sv.png@206,279'
				end
			else
				if closetvalve3._b == 0 then
					p = p .. ';gfx/stage2/2svb.png@206,279'
				end
			end
			return p
		end
		if lamps3._b == 1 then
			local p = 'gfx/stage2/1s.png';
			if towel3._b == 0 then
				p = p .. ';gfx/stage2/1stowel.png@3,121'
			end
			if tpaper3._b == 0 then
				p = p .. ';gfx/stage2/1sp.png@93,222'
			end
			if closet3._b == 0 then
				p = p .. ';gfx/stage2/1st.png@144,180'
			end
			return p
		end
		local p = 'gfx/stage2/0s.png';
		if towel3._b == 0 then
			p = p .. ';gfx/stage2/0stowel.png@3,121'
		end
		if tpaper3._b == 0 then
			p = p .. ';gfx/stage2/0sp.png@93,222'
		end
		if closet3._b == 0 then
			p = p .. ';gfx/stage2/0st.png@144,180'
			if closetvalve3._b == 1 then
				p = p .. ';gfx/stage2/0sv.png@206,279'
			end
		else
			if closetvalve3._b == 0 then
				p = p .. ';gfx/stage2/0svb.png@206,279'
			end
		end
		return p
	end;
	nam = function()
		return 'Туалет #' .. stage2._tno .. ' - юг';
	end;
	dsc = 'Вы стоите посередине туалета лицом к унитазу.';
	obj = { 'towel3', 'lwc3' };
	way = { 'ntoilet3', 'ceil3', 'door3'};
};
------------------------------------------------------------------------------
ceil3 = room {
	nam = 'Потолок';
	dsc = 'Вы смотрите на потолок.';
	pic = function(s)
		if lamps3._b == 3 then
			return 'gfx/stage1/ceil.png';
		elseif lamps3._b == 2 then
			return 'gfx/stage2/2ceil.png';
		elseif lamps3._b == 1 then
			return 'gfx/stage2/1ceil.png';
		end
		return 'gfx/stage2/0ceil.png';
	end;
	obj = { 'lamps3' };
	way = { 'ntoilet3', 'stoilet3' };
};
------------------------------------------------------------------------------
door3 = room {
	nam = 'Дверь';
	pic = function(s)
		if lamps3._b == 3 then
			return 'gfx/intro/door.png'
		elseif lamps3._b == 2 then
			return 'gfx/stage2/2d.png'
		elseif lamps3._b == 1 then
			return 'gfx/stage2/1d.png'
		end
		return 'gfx/stage2/0d.png'
	end;
	dsc = [[Дверь. Хотя она и не заперта - она всего лишь является переходом в 
	очередную точку этого (бесконечного?) туалетного пространства. 
	Проблема не в том, как перейти в очередной туалет. А в том, как сделать
	так, чтобы очередная точка оказалась точкой ВЫХОДА. 
	^(Вы удивились своему нездоровому гениальному умозаключению).]];
	obj = { 'handle3' };
	way = { 'ntoilet3', 'stoilet3', 'ceil3' };
};
------------------------------------------------------------------------------
lbasin3 = obj {
	nam = 'Раковина';
	dsc = function()
		local s = 'Рядом находится {';
		if basin3._b == 0 then
			s = s .. 'разбитая ';
		end
		s = s .. 'раковина}.';
		return s;
	end;
	act = function()
		goto('llbasin3');
		return true;
	end;
	used = function(s, w)
		if w == 'hammer3' then
			return [[Раковина слишком далеко. Надо к ней подойти.]];
		end
	end;
};

------------------------------------------------------------------------------
llbasin3 = room {
	nam = 'У раковины';
	pic = function(s)
		if lamps3._b == 3 then 
			local base =''
			local p = 'gfx/stage2/3w.png';
			if basin3._b == 0 then
				base = '-base-';
				p = 'gfx/stage2/3w-base.png';
			end
			if coldvalve3._b ==0 then
				p = p..';gfx/stage2/3w'..base..'c.png@59,137'
			end
			if hotvalve3._b == 0 then
				p = p..';gfx/stage2/3w'..base..'h.png@261,148'
			end
			if soap3._b == 0 then
				p = p..';gfx/stage2/3w'..base..'soap.png@334,91'
			end
			return p
		elseif lamps3._b == 2 then 
			local base =''
			local p = 'gfx/stage2/2w.png';
			if basin3._b == 0 then
				base = '-base-';
				p = 'gfx/stage2/2w-base.png';
			end
			if coldvalve3._b ==0 then
				p = p..';gfx/stage2/2w'..base..'c.png@59,137'
			end
			if hotvalve3._b == 0 then
				p = p..';gfx/stage2/2w'..base..'h.png@261,148'
			end
			if soap3._b == 0 then
				p = p..';gfx/stage2/2w'..base..'soap.png@334,91'
			end
			return p
		elseif lamps3._b == 1 then 
			local base =''
			local p = 'gfx/stage2/1w.png';
			if basin3._b == 0 then
				base = '-base-';
				p = 'gfx/stage2/1w-base.png';
			end
			if coldvalve3._b ==0 then
				p = p..';gfx/stage2/1w'..base..'c.png@59,137'
			end
			if hotvalve3._b == 0 then
				p = p..';gfx/stage2/1w'..base..'h.png@261,148'
			end
			if soap3._b == 0 then
				p = p..';gfx/stage2/1w'..base..'soap.png@335,91'
			end
			return p
		end
		local base =''
		local p = 'gfx/stage2/0w.png';
		if basin3._b == 0 then
			base = '-base-';
			p = 'gfx/stage2/0w-base.png';
		end
		if coldvalve3._b ==0 then
			p = p..';gfx/stage2/0w'..base..'c.png@59,137'
		end
		if hotvalve3._b == 0 then
			p = p..';gfx/stage2/0w'..base..'h.png@261,148'
		end
		if soap3._b == 0 then
			p = p..';gfx/stage2/0w'..base..'soap.png@334,91'
		end
		return p
	end;
	obj = {'basin3', 'coldvalve3', 'hotvalve3', 'soap3'};
	way = { 'ntoilet3', 'stoilet3', 'ceil3' };
};
------------------------------------------------------------------------------
lwc3 = obj {
	nam = 'Унитаз';
	dsc = function()
		local s = 'Вдали виднеется {';
		if closet3._b == 0 then
			s = s .. 'разбитый ';
		end
		s = s .. 'унитаз}.';
		return s;
	end;
	act = function()
		return goto('wc3');
	end;
	used = function(s, w)
		if w == 'hammer3' then
			return [[Унитаз слишком далеко. Надо к нему подойти.]];
		end
	end;
};
------------------------------------------------------------------------------
wc3 = room {
	nam = 'Унитаз';
	pic = function(s)
		if lamps3._b == 3 then
			local p = 'gfx/stage2/3c.png';
			if closet3._b == 0 then
				p = p..';gfx/stage2/3ct.png@84,79';
				if closetvalve3._b == 1 then
					p = p..';gfx/stage2/3cv.png@191,215'
				end
			else
				if closetvalve3._b == 0 then
					p = p..';gfx/stage2/3cvb.png@191,215'
				end
			end
			if tpaper3._b == 0 then
				p = p..';gfx/stage2/3cp.png@3,221';
			end
			return p
		elseif lamps3._b == 2 then
			local p = 'gfx/stage2/2c.png';
			if closet3._b == 0 then
				p = p..';gfx/stage2/2ct.png@84,79';
				if closetvalve3._b == 1 then
					p = p..';gfx/stage2/2cv.png@191,215'
				end
			else
				if closetvalve3._b == 0 then
					p = p..';gfx/stage2/2cvb.png@191,215'
				end
			end
			if tpaper3._b == 0 then
				p = p..';gfx/stage2/2cp.png@3,221';
			end
			return p
		elseif lamps3._b == 1 then
			local p = 'gfx/stage2/1c.png';
			if closet3._b == 0 then
				p = p..';gfx/stage2/1ct.png@84,79';
			end
			if tpaper3._b == 0 then
				p = p..';gfx/stage2/1cp.png@3,221';
			end
			return p
		end
		local p = 'gfx/stage2/0c.png';
		if closet3._b == 0 then
			p = p..';gfx/stage2/0ct.png@84,79';
			if closetvalve3._b == 1 then
				p = p..';gfx/stage2/0cv.png@191,215'
			end
		else
			if closetvalve3._b == 0 then
				p = p..';gfx/stage2/0cvb.png@191,215'
			end
		end
		return p
	end;
	dsc = 'Вы приблизились к унитазу.';
	obj = { 'closet3', 'flush3', 'tpaper3'};
	way = { 'ntoilet3', 'stoilet3', 'beyondwc3', 'luk3', 'ceil3'};
};
------------------------------------------------------------------------------
beyondwc3 = room {
	nam = 'Позади унитаза';
	pic = function(s)
		if lamps3._b == 3 then
			local p = 'gfx/stage2/3t.png'
			if closet3._b == 0 then
				p = 'gfx/stage2/3t-broken.png'
				if closetvalve3._b == 1 then
					p = p .. ';gfx/stage2/3tv.png@217,198'
				end
			else
				if closetvalve3._b == 0 then
					p = p .. ';gfx/stage2/3tvb.png@217,198'
				end
			end
			return p
		elseif lamps3._b == 2 then
			local p = 'gfx/stage2/2t.png'
			if closet3._b == 0 then
				p = 'gfx/stage2/2t-broken.png'
				if closetvalve3._b == 1 then
					p = p .. ';gfx/stage2/2tv.png@217,198'
				end
			else
				if closetvalve3._b == 0 then
					p = p .. ';gfx/stage2/2tvb.png@217,198'
				end
			end
			return p
		end
		local p = 'gfx/stage2/01t.png'
		if closet3._b == 0 then
			p = 'gfx/stage2/01t-broken.png'
			if closetvalve3._b == 1 then
				p = p .. ';gfx/stage2/01tv.png@207,195'
			end
		else
			if closetvalve3._b == 0 then
				p = p .. ';gfx/stage2/01tvb.png@207,195'
			end
		end
		return p
	end;
	dsc = 'Вы заглянули за унитаз.';
	obj = { 'closetvalve3' };
	way = { 'wc3' };
};
------------------------------------------------------------------------------
luk3 = room {
	nam = 'Люк';
	pic = function(s)
		if lamps3._b == 3 then 
			local p = 'gfx/stage1/luk2.png';
			if lhvalve3._b == 0 then
				p = p .. ';gfx/stage2/3lh.png@239,47';
			end
			if lcvalve3._b == 0 then
				p = p .. ';gfx/stage2/3lc.png@170,216';
			end
			return p;
		elseif lamps3._b == 2 then 
			local p = 'gfx/stage2/2l.png';
			if lhvalve3._b == 0 then
				p = p .. ';gfx/stage2/2lh.png@239,47';
			end
			if lcvalve3._b == 0 then
				p = p .. ';gfx/stage2/2lc.png@170,216';
			end
			return p;
		end
		local p = 'gfx/stage2/01l.png';
		if lhvalve3._b == 0 then
			p = p .. ';gfx/stage2/01lh.png@239,47';
		end
		if lcvalve3._b == 0 then
			p = p .. ';gfx/stage2/01lc.png@170,216';
		end
		return p;
	end;
	dsc = 'Вы открыли сантехнический люк.';
	obj = { 'lhvalve3', 'lcvalve3' };
	way = { 'wc3' };
};
------------------------------------------------------------------------------
------- OBJECTS --------
------------------------------------------------------------------------------
basin3 = obj {
	_b = 1;
	nam = 'Раковина';
	dsc = function(s)
		local t = 'Вы находитесь у {';
		if s._b == 0 then
			t = t .. 'разбитой ';
		end
		t = t .. 'раковины}.';
		return t;
	end;
	act = function(s)
		if s._b == 0 then
			return [[Раковина разбита.]];
		end
		return [[Вы не можете сдержать своей агрессии к этой раковине, 
		собственно как и ко всем остальным окружающим предметам этого
		помещения!]];
	end;
	used = function(s, w)
		if w == 'hammer3' then
			if s._b == 1 then
				s._b = 0;
				ckdstr(1);
				set_sound('snd/crash.ogg');
				return [[Вложив в удар всю свою ненависть, Вы разбили
				раковину.]];
			end
			return [[Раковина уже достаточно хорошо разбита.]];
		end
	end;
};
------------------------------------------------------------------------------
closet3 = obj {
	_b = 1;
	nam = 'Унитаз';
	dsc = function(s)
		if s._b == 1 then
			return [[Вы наблюдаете {унитаз}.]];
		end
		return [[Вы наблюдаете {разбитый унитаз}.]];
	end;
	act = function(s)
		if s._b == 1 then
			return [[Унитаз - целый и невредимый.
			Неожиданный приступ агрессии толкает Вас на разрушительные действия.
			]];
		end
		return [[Унитаз разбит.]];
	end;
	used = function(s, w)
		if w == 'hammer3' then
			if s._b == 1 then
				s._b = 0;
				ckdstr(1);
				set_sound('snd/crash.ogg');
				return [[Вы нанесли мощнейший удар по этому ненавистному Вам
				сантехническому объекту. Вы разбили унитаз.]];
			end
			return [[Унитаз разбит. Не мучайте его больше.]];
		end
	end;
};
------------------------------------------------------------------------------
lamps3 = obj {
	_b = 3;
	nam = 'Лампочки';
	dsc = function(s)
		local t = 'На потолке находятся {лампочки}. ';
		if s._b == 3 then
			t = t .. 'Все три горят.';
		elseif s._b == 2 then
			t = t .. 'Две горят. Одна испорчена.';
		elseif s._b == 1 then
			t = t .. 'Одна горит. Две испорчены.';
		else
			t = t .. 'Ни одна не горит.';
		end
		return t;
	end;
	act = function(s)
		if s._b == 0 then
			return 'Эти лампочки уже не спасти.';
		end
		return [[Вы испытываете ненависть даже к невинным лампочкам. 
		Как бы им ущерб нанести?]];
	end;
	used = function(s, w)
		if s._b == 0 then
			return [[Лампочки уже все обработаны. Гореть уже точно не будут.]];
		end
		if w == 'vantuz3' then
			s._b = s._b - 1;
			ckdstr(2);
			set_sound('snd/lamp.ogg');
			return [[Вы протолкнули очередную лампочку вантузом.
			Она не выдержала такой процедуры и погасла. Похоже - навсегда.]];
		elseif w == 'hammer3' or w == 'key3' or w == 'stameska3' then
			return [[Если лампочки банально разбить - стекло может попасть в
			глаза. Да и по голове можно себе попасть тяжёлым инструментом. 
			Нужно что-то длинное и безопасное.]];
		end
	end;
};
------------------------------------------------------------------------------
coldvalve3 = obj {
	_b = 1;
	nam = 'Холодный кран';
	dsc = function(s)
		local t = 'Перед Вами {';
		if s._b == 0 then
			t = t .. 'сорванный ';
		end
		t = t .. 'кран холодной воды}';
		return t;
	end;
	_look = 0;
	act = function(s)
		if s._look == 0 then
			s._look = 1;
			p [[(Цифр на кранах Вы больше не видите. Странно...)^]];
		end
		if s._b == 0 then
			p 'Холодный кран испорчен окончательно.';
		else
			p [[Воды нет. Кран крутить бесполезно. Хотя хочется его открутить
		так, чтобы он больше никогда не крутился! Но для этого нужен инструмент.
		]];
		end
	end;
	used = function(s, w)
		if s._b == 0 then
			return [[Кран сорван окончательно.]];
		end
		if w == 'key3' then
			s._b = 0;
			ckdstr(3);
			set_sound('snd/key.ogg');
			return [[Применив усилие к гаечному ключу, Вы сорвали кран.]];
		elseif w == 'hammer3' then
			return [[Молоток - это слишком банально для крана. Несантехнично.]];
		end
	end;
};
------------------------------------------------------------------------------
hotvalve3 = obj {
	_b = 1;
	nam = 'Горячий кран';
	dsc = function(s)
		local t = 'и {';
		if s._b == 0 then
			t = t .. 'сорванный ';
		end
		t = t .. 'кран горячей воды}.';
		return t;
	end;
	_look = 0;
	act = function(s)
		if s._look == 0 then
			s._look = 1;
			p [[(Цифр на кранах Вы больше не видите. Странно...)^]];
		end
		if s._b == 0 then
			p 'Горячий кран испорчен окончательно.';
		else
			p [[Воды нет. Кран крутить бесполезно. Хотя хочется его открутить
		так, чтобы он больше никогда не крутился! Но для этого нужен инструмент.
		]];
		end
	end;
	used = function(s, w)
		if s._b == 0 then
			return [[Кран сорван окончательно.]];
		end
		if w == 'key3' then
			s._b = 0;
			ckdstr(3);
			set_sound('snd/key.ogg');
			return [[Применив усилие к гаечному ключу, Вы сорвали кран.]];
		elseif w == 'hammer3' then
			return [[Молоток - это слишком банально для крана. Несантехнично.]];
		end
	end;
};
------------------------------------------------------------------------------
closetvalve3 = obj {
	_b = 1;
	nam = 'Кран унитаза';
	dsc = function(s)
		local t = 'Вы видите {';
		if s._b == 0 then
			t = t .. 'сорванный ';
		end
		t = t .. 'кран} подачи воды в унитаз.';
		return t;
	end;
	_look = 0;
	act = function(s)
		if s._look == 0 then
			s._look = 1;
			p [[(Цифр на кранах Вы больше не видите. Странно...)^]];
		end
		if s._b == 0 then
			p 'Кран унитаза испорчен окончательно.';
		else
			p [[Воды нет. Кран крутить бесполезно. Хотя хочется его открутить
		так, чтобы он больше никогда не крутился! Но для этого нужен инструмент.
		]];
		end
	end; 
	used = function(s, w)
		if s._b == 0 then
			return [[Кран сорван окончательно.]];
		end
		if w == 'key3' then
			s._b = 0;
			ckdstr(3);
			set_sound('snd/key.ogg');
			return [[Применив усилие к гаечному ключу, Вы сорвали кран.]];
		elseif w == 'hammer3' then
			return [[Молоток - это слишком банально для крана. Несантехнично.]];
		end
	end;
};
------------------------------------------------------------------------------
lhvalve3 = obj {
	_b = 1;
	nam = 'Горячий кран в люке';
	dsc = function(s)
		local t = 'Вы видите {';
		if s._b == 0 then
			t = t .. 'сорванный ';
		end
		t = t .. 'кран подачи горячей воды}';
		return t;
	end;
	_look = 0;
	act = function(s)
		if s._look == 0 then
			s._look = 1;
			p [[(Цифр на кранах Вы больше не видите. Странно...)^]];
		end
		if s._b == 0 then
			p 'Горячий кран испорчен окончательно.';
		else
			p [[Воды нет. Кран крутить бесполезно. Хотя хочется его открутить
		так, чтобы он больше никогда не крутился! Но для этого нужен инструмент.
		]];
		end
	end; 
	used = function(s, w)
		if s._b == 0 then
			return [[Кран сорван окончательно.]];
		end
		if w == 'key3' then
			s._b = 0;
			ckdstr(3);
			set_sound('snd/key.ogg');
			return [[Применив усилие к гаечному ключу, Вы сорвали кран.]];
		elseif w == 'hammer3' then
			return [[Молоток - это слишком банально для крана. Несантехнично.]];
		end
	end;
};
------------------------------------------------------------------------------
lcvalve3 = obj {
	_b = 1;
	nam = 'Холодный кран в люке';
	dsc = function(s)
		local t = 'и {';
		if s._b == 0 then
			t = t .. 'сорванный ';
		end
		t = t .. 'кран подачи холодной воды} в туалетную комнату.';
		return t;
	end;
	_look = 0;
	act = function(s)
		if s._look == 0 then
			s._look = 1;
			p [[(Цифр на кранах Вы больше не видите. Странно...)^]];
		end
		if s._b == 0 then
			p 'Холодный кран испорчен окончательно.';
		else
			p [[Воды нет. Кран крутить бесполезно. Хотя хочется его открутить
		так, чтобы он больше никогда не крутился! Но для этого нужен инструмент.
		]];
		end
	end; 
	used = function(s, w)
		if s._b == 0 then
			return [[Кран сорван окончательно.]];
		end
		if w == 'key3' then
			s._b = 0;
			ckdstr(3);
			set_sound('snd/key.ogg');
			return [[Применив усилие к гаечному ключу, Вы сорвали кран.]];
		elseif w == 'hammer3' then
			return [[Молоток - это слишком банально для крана. Несантехнично.]];
		end
	end;
};
------------------------------------------------------------------------------
hooks3 = obj {
	_b = 3;
	nam = 'Крючки';
	dsc = function(s)
		local t = 'Вы видите ';
		if s._b == 3 then
			t = t .. '{три крючка}.';
		elseif s._b == 2 then
			t = t .. '{два крючка}. Один крючок оторван.';
		elseif s._b == 1 then
			t = t .. '{один крючок}. Два крючка оторваны.';
		elseif s._b == 0 then
			t = t .. '{место, где раньше были крючки}. Все крючки оторваны.';
		end
		return t;
	end;
	act = function(s)
		if s._b == 0 then
			return 'Крючки оторваны. Обратно не приделаешь.';
		end
		return [[Даже эти предметы фурнитуры побуждают Вас к разрушениям.]];
	end;
	used = function(s, w)
		if s._b == 0 then
			return [[Крючки уже все оторваны.]];
		end
		if w == 'stameska3' then
			s._b = s._b - 1;
			ckdstr(4);
			set_sound('snd/fall.ogg');
			return [[Вы оторвали очередной крючок стамеской.]];
		elseif w == 'hammer3' then
			return [[Крючки слишком хорошо привинчены. Нужно что-то 
			поддевающее.]];
		end
	end;
};
------------------------------------------------------------------------------
soap3 = obj {
	_b = 1;
	nam = 'Мыльница';
	dsc = function(s)
		if s._b == 0 then
			return 'Рядом видно {место оторванной мыльницы}.';
		end
		return 'Рядом прикрученная к стене {мыльница}.';
	end;
	act = function(s)
		if s._b == 0 then
			return 'Здесь раньше была мыльница.';
		end
		return [[Даже этот предмет фурнитуры побуждает Вас к разрушениям.]];
	end;
	used = function(s, w)
		if s._b == 0 then
			return [[Мыльница уже оторвана.]];
		end
		if w == 'stameska3' then
			s._b = 0;
			ckdstr(4);
			set_sound('snd/fall.ogg');
			return [[Вы отодрали мыльницу от стены.]];
		elseif w == 'hammer3' then
			return [[Молоток здесь не поможет. Для фурнитуры нужно что-то 
			поддевающее и отдирающее.]];
		end
	end;
};
------------------------------------------------------------------------------
shelf3 = obj {
	_b = 1;
	nam = 'Полка';
	dsc = function(s)
		if s._b == 0 then
			return 'Рядом {место, где раньше была полочка}.';
		end
		return 'Рядом находится {полочка} со всяким ненужным барахлом.';
	end;
	act = function(s)
		if s._b == 0 then
			return 'Здесь раньше была полочка.';
		end
		return [[Даже этот предмет фурнитуры побуждает Вас к разрушениям.]];
	end;
	used = function(s, w)
		if s._b == 0 then
			return [[Полка уже оторвана.]];
		end
		if w == 'stameska3' then
			s._b = 0;
			ckdstr(4);
			set_sound('snd/glass.ogg');
			return [[Вы аккуратно отодрали полку от стены.]];
		elseif w == 'hammer3' or w == 'key3' then
			return [[Полку конечно можно и разбить. Но будет много осколков.
			Для фурнитуры нужно что-то поддевающее и отдирающее. Так будет
			аккуратней.]];
		end
	end;
};
------------------------------------------------------------------------------
towel3 = obj {
	_b = 1;
	nam = 'Полотенцедержатель';
	dsc = function(s)
		local t = 'Недалеко от себя Вы наблюдаете ';
		if s._b == 0 then
			t = t .. '{место отодранного полотенцедержателя}.';
		else
			t = t .. '{полотенцедержатель}.';
		end
		return t;
	end;
	act = function(s)
		if s._b == 0 then
			return 'Это всё, что осталось от полотенцедержателя.';
		end
		return [[Даже этот предмет фурнитуры побуждает Вас к разрушениям.]];
	end;
	used = function(s, w)
		if s._b == 0 then
			return [[Полотенцедержатель уже достаточно основательно сломан.]];
		end
		if w == 'stameska3' then
			s._b = 0;
			ckdstr(4);
			set_sound('snd/fall.ogg');
			return [[Вы отодрали полотенцедержатель.]];
		elseif w == 'hammer3' then
			return [[Молоток здесь не поможет. Для фурнитуры нужно что-то 
			поддевающее и отдирающее.]];
		end
	end;
};
------------------------------------------------------------------------------
tpaper3 = obj {
	_b = 1;
	_l = 0;
	_l2 = 0;
	nam = 'Туалетная бумага';
	dsc = function(s)
		if s._b == 0 then
			return [[Рядом находится {место отодранного держателя туалетной 
			бумаги}.]];
		end
		return [[Рядом находится {держатель с остатками туалетной бумаги}.]];
	end;
	act = function(s)
		local st;
		if s._b == 0 then
			return 'Туалетную бумагу теперь не на что повесить.';
		end
		p [[Даже этот предмет фурнитуры побуждает Вас к разрушениям.]];

		p [[^Покрутив остатки рулона, Вы ]];
		if s._l == 0 then
			p [[ничего не нашли. Но почему-то этот кусок картона согревает 
			Вам душу.
			Вы не можете этого объяснить.]];
		elseif s._l > 4 then
			st = paper_hint_diag();
			p(st);
--			p [[надеялись найти очередную подсказку. Но... это всего лишь
--			обрывки туалетной бумаги.]];
		else
			st = paper_hint3(s._l);
			p(st);
		end
		if s._l2 == 0 then
			s._l2 = 1;
		end
	end;
	used = function(s, w)
		if s._b == 0 then
			return [[Держателю туалетной бумаги уже ничто не поможет.]];
		end
		if w == 'stameska3' then
			s._b = 0;
			ckdstr(4);
			set_sound('snd/crunch.ogg');
			return [[Вы отодрали держатель туалетной бумаги.]];
		elseif w == 'hammer3' then
			return [[Молоток здесь не поможет. Для фурнитуры нужно что-то
			поддевающее и отдирающее.]];
		end
	end;
};
------------------------------------------------------------------------------
flush3 = obj {
	nam = 'Слив';
	dsc = 'На бачке находится {кнопка слива}.';
	act = [[Вы нажали кнопку слива, но ничего не произошло. Ваш больной разум
	подсказывает Вам, что надеяться на эту кнопку - полное безумие. Согласитесь,
	только сумасшедший может ожидать, что в унитазе могут появиться какие-то
	полезные вещи, если просто нажать на слив.]];
};
------------------------------------------------------------------------------
handle3 = obj {
	nam = 'Ручка двери';
	dsc = [[{Дверная ручка} может открыть эту дверь. Кто знает - может за ней
	выход?]];
	act = function(s, ...)
		set_sound('snd/door.ogg');
		return handle_act(s, unpack(arg));
	end;
	used = function(s, w)
		if w == 'vantuz3' then
			return [[Зачем тыкать вантузом в дверную ручку, если дверь можно 
			открыть привычным способом? Хотя, конечно, привычка - вещь сильная.]];
		end
	end;
};
------------------------------------------------------------------------------
theend = room {
	pic = 'gfx/stage2/happyend.png';
	nam = 'Выход!';
	enter = function(s)
		set_music('snd/kwiatuszekr.xm');
	end;
	dsc = [[Вы открыли дверь и обнаружили на пороге Вашу испуганную маму и
	двух грустных санитаров...^^
	- Наверно он накануне сильно переутомился! - говорила мама сквозь слёзы. - 
	Он закрылся в туалете и всю ночь там что-то колошматил и повторял какие-то
	цифры!^^
	- Ничего, - сказал один из санитаров, - Это действительно обычное
	переутомление. Возможно, на фоне интоксикации. Всё будет в порядке. Не 
	волнуйтесь.^^
	- Пойдём, парень! - сказал второй. - Отдохнёшь у нас пару дней. И жизнь 
	наладится. Всё будет хорошо!^^
	Несмотря на то, что Вы всегда панически боялись врачей, в данный момент Вы  
	их искренне рады видеть. Совершенно не сопротивляясь, Вы выходите из этого 
	страшного места и идёте навстречу новой жизни. Под руки Вас дружелюбно ведут
	санитары. И Вы точно знаете, что они Вам обязательно помогут!]];
	obj = { vway('Конец', txtc('{Конец}^'), 'credits'); };
};
------------------------------------------------------------------------------
credits = room {
	nam = 'Авторы';
	pic = 'gfx/stage2/credits.png';
	dsc = function()
		pn (txtc(txtb('Идея и квест:')));
		pn (txtc('Владимир Подобаев^'));
		pn (txtc(txtb('3D графика и оформление:')));

		pn (txtc('Пётр Косых,^3D модели из открытых источников^'));

		pn (txtc(txtb('Музыка:^')));

		pn (txtem(txtc('Follow Me')));
		pn (txtc('by Soren Buchtrup^'));

		pn (txtem(txtc('Enchanting Motion')));
		pn (txtc('by The Nuke^'));

		pn (txtem(txtc('Silent Night')));
		pn (txtc('by Strobo/Stellar^'));

		pn (txtem(txtc('Program')));
		pn (txtc('by Ronny Selnes^'));

		pn (txtem(txtc('Kwiatuszek')));
		pn (txtc('by Loonie & Martyn^^'));

		pn (txtem(txtc('Всем критикам квеста слушать ссылку:^')));
		pn (txtc(
		'http://kotmatrs.rinet.ru/ogg/volgin/15_xrizantema.ogg'));
	end;
};
------------------------------------------------------------------------------

