door1_obj = obj{ nam = 'дверь 1', dsc = 'Здесь есть {дверь 1}, ', act = 'Табличка на двери гласит: "За этой дверью находится смерть."', } door2_obj = obj{ nam = 'дверь 2', dsc = '{дверь 2} и ', act = 'Табличка на двери гласит: "Это - безопасная дверь"', } door3_obj = obj{ nam = 'дверь 3', dsc = '{дверь 3}.', act = 'Табличка на двери гласит: "Смерть за дверью 2"', } -- === Испытание 2 === cobj = function(v) v.use = function(this,that) if (here() == end_fall) then return 'Нет, вы уже пропустили свой шанс.',false; end; return call(this, 'fuse', that); end; v.used = v.use; return obj(v); end rope = cobj{ nam = 'верёвка', wet = false, inv = function() local response = 'Длинная крепкая пеньковая верёвка.'; if (rope.wet) then response = response .. "Немного мокрая, всего-то." end; return response; end, fuse = function(this, that) if (that == 'lock') then inv():del('lock'); inv():del('rope'); inv():add('rope_with_lock'); return 'Вы привязываете к концу верёвки замок.' elseif (that == 'waterskin') then return 'Вы капаете немного воды на верёвку.'; end; end, } boat = cobj{ nam = 'лодка', inv = 'Складная одноместная лодка с вёслами. На верхней части одного из бортов нарисован человечек, из плеч которого выходят 4 линии.', fuse = function(this, that) if (that == 'stick') then inv():del('stick'); inv():del('boat'); inv():add('boat_with_stick'); return 'Вы раскладываете лодку и укрепляете на ней палку, как мачту.' elseif (that == 'lock') then inv():del('boat'); inv():del('lock'); inv():add('chute_lower'); return 'Вы кладёте замок на стенку лодки так,чтобы совместить рисунки на них.' end; end, } chute_lower = cobj{ nam = 'Лодка с замочком', inv = 'Лодка с замочком на ней. На них изображен человек,из плеч которого выходят 4 длинных линии.', fuse = function(this, that) if (that == 'pot') then inv():del('chute_lower'); inv():del('pot'); inv():add('chute'); return goto('landing'); end; end, } chute_upper = cobj{ nam = 'горшок с замочком', inv = 'горшок с замочком на нём. На этой конструкции изображены 4 линии, которые входят в полукруг.', fuse = function(this, that) if (that == 'boat') then inv():del('chute_upper'); inv():del('boat'); inv():add('chute'); return goto('landing'); end; end, } chute = cobj{ nam = 'парашют', inv = 'Да! Да! Огромный кусок ткани, который вылезает из рюкзака на вашей спине Джека. Джек не знает,как его правильно упаковать обратно.', } cape = cobj{ nam = 'плащ', inv = function() local response = 'Заботливо сложенный коричневый плотный плащ. Хорош в сырую погоду и неплох для скрытного лазания по лесу.'; if cape.wet == true then response = response.." Да, ещё плащ промок до нитки." end; return response; end, wet = false, } boat_with_stick = cobj{ nam = 'лодка с палкой', inv = 'Одноместная лодка с вёслами; рядом с сиденьем прикреплена палка, как мачта. От этого сидеть внутри ещё неудобнее, но возможно; впрочем, куда вам уплыть в свободном полёте.', fuse = function(this, that) if (that == 'cape') then inv():del('cape'); inv():add('sailboat'); inv():del('boat_with_stick'); return 'Вы прикрепляете на мачту плащ и получаете... парусную лодку!'; end; end, } sailboat = obj{ nam = 'парусная лодка', inv = 'Одноместная лодка с двумя вёслами и самодельным парусом из плаща и палки. Трудно сказать, далеко ли вы уплывёте.' } rope_with_lock = cobj{ nam = 'верёвка с замком', inv = 'Длинная пеньковая верёвка, на конце которой болтается тяжеленный амбарный замок. В принципе, это можно использовать как оружие..возможно, метательное.', } pot = cobj{ nam = 'горшок', inv = 'Пустой глиняный коричневый горшочек.На нижней части стенки нарисован полукруг.', fuse = function(this, that) if (that == 'waterskin') then inv():del('pot'); inv():del('waterskin'); inv():add('pot_with_water'); return 'Вы заполняете горшок водой.'; elseif(that == 'rope') then inv():del('pot'); inv():del('rope'); inv():add('pot_with_rope'); return 'Вы кладёте в горшок верёвку.'; elseif(that == 'black_powder') then inv():del('pot'); inv():del('black_powder'); inv():add('pot_with_powder'); return 'Вы заполняете горшок чёрным порохом.'; elseif (that == 'lock') then inv():del('pot'); inv():del('lock'); inv():add('chute_upper'); return 'Вы кладёте замок под горшочек и совмещаете рисунки на них.' end; end, } stick = cobj{ nam = 'палка', inv = 'Толстая ветка средней длины. На неё хорошо опираться во время ходьбы по горам.', fuse = function(this, that) if (that == 'rope') then inv():del('stick'); inv():del('rope'); inv():add('club'); return 'Вы обвязываете верёвкой палку. Такой дубинушкой можно и пришибить!'; elseif (that == 'rope_with_lock') then inv():del('stick'); inv():del('rope_with_lock'); inv():add('mace'); return 'Вы привязываете свободный конец верёвки к палке. У вас получилось настоящее оружие!'; end; end, } lock = cobj{ nam = 'амбарный замок', inv = 'Амбарный навесной замок. Большой и увесистый.На обратной стороне замка нарисовано 4 линии.' } club = cobj{ nam = 'дубина', inv = 'Толстая палка, обмотанная верёвкой вполне может послужить как хорошая дубинка.', fuse = function(this, that) if (that == 'lock') then inv():del('club'); inv():del('lock'); inv():add('mace'); return 'Вы разматываете верёвку и навешиваете на неё замок. У вас получилась недурная булава.'; end; end, } mace = cobj{ nam = 'булава', inv = 'Один конец верёвки привязан к палке, на втором болтается тяжёлый замок. Это же настоящая цепная булава!', } pot_with_powder = cobj{ nam = 'горшочек с порохом', inv = 'Горшок из коричневой глины, заполненный чёрным порохом. Не переворачивать.', fuse = function(this, that) if (that == 'rope') then inv():del('pot_with_powder'); inv():del('rope'); inv():add('bomb'); return 'Вы кладёте в порох верёвку как фитиль. У вас получилась самодельная бомба.'; end; end, } pot_with_rope = cobj{ nam = 'горшок с верёвкой', inv = 'Горшок из коричневой глины, в котором лежит верёвка.', fuse = function(this, that) if (that == 'black_powder') then inv():del('pot_with_rope'); inv():del('black_powder'); inv():add('bomb'); return 'Вы заполняете горшок чёрным порохом и вытаскиваете верёвку как фитиль. У вас получилась самодельная бомба.'; end; end, } black_powder = cobj{ nam = 'чёрный порох', inv = 'Небольшой мешочек с чёрным порохом. Хранить в сухом и холодном месте. Вблизи лучше не чихать.', } bomb = cobj{ nam = 'бомба', inv = 'Горшок, доверху наполненный чёрным порохом, из которого высовывается отрезок верёвки. Настоящая самодельная бомба. Если порох будет сухим, такая сможет взорвать небольшое каменное здание.' } waterskin = cobj{ nam = 'мех с водой', inv = 'Мех с водой.', fuse = function(this, that) if (that == 'cape') then inv():del('waterskin'); cape.wet = true; return 'Вы выливаете воду на плащ и он становится мокрым.'; end; end, } plantain = cobj{ nam = 'листья подорожника', inv = 'Несколько листьев подорожника большого (Plantago major), травянистого растения семейства Подорожниковые.', fuse = function(this, that) if (that == 'cape' and cape.wet) then inv():del('cape'); inv():del('plantain'); inv():add('compress'); return 'Вы заворачиваете листья в мокрый плащ и получаете лечебный компресс с листьями подорожника. Хотя немного не угадали с размером. '; elseif (that == 'axe') then return 'Вы отрубаете кусочек от одного из листочков. У вас всё ещё в руках листья подорожника и топор.' elseif (that == 'knife') then return 'Вы отрезаете кусочек от одного из листочков. У вас всё ещё в руках листья подорожника и топор.' end; end, } compress = cobj{ nam = 'компресс', inv = 'Лечебный компресс с листьями подорожника. Если вы ушибнетесь всей спиной (что вполне возможно в вашей ситуации), то может быть, он потом вас вылечит...хотя в вашем случае, вряд ли.', } knife = cobj{ nam = 'нож', inv = 'Охотничий нож с резной рукоятью.', } axe = cobj{ nam = 'топор', inv = 'Большой железный топор для рубки деревьев...может быть, и для чего другого сгодится.', } pot_with_water = cobj{ nam = 'горшок с водою', inv = 'Глиняный коричневый горшочек, заполненный водой.', fuse = function(this, that) if (that == 'axe') then inv():del('pot_with_water'); inv():del('axe'); inv():add('axe_porridge'); return 'Вы кладёте в горшок топор. Часть воды выливается.'; end; end, } axe_porridge = cobj{ nam = 'каша из топора', inv = 'В маленьком глиняном горшочке, доверху заполненном водой, лежит топор. Наверное, это будущая каша.', } -- === Испытание 3 === fountain = obj{ nam = 'фонтан', dsc = 'В центре площади стоит высохший {фонтан}. На брусчатке рядом лежит столб с надписью: "Вы стоите на площади имени Звёздных Королей".', act = [[В центре шестиугольного бассейна с водой стоит статуя. Мужчина с мечом верхом на драконе; пасть дракона раскрыта. Скорее всего, из неё когда-то текла вода. Джек смутно узнаёт изображение Торма, бога долга и честности - но его смущает голова мужчины. Присмотревшись, он понимает, что голова статуи была не очень умело заменена другой - возможно, более подходящей. Кто теперь восседает на драконе Верности, остаётся только гадать.^ Фонтан не работает; вода в чаше позеленела, и от неё исходит слабый, но различимый болотный запах.]] --http://www.wizards.com/dnd/images/fp_gallery/fp1/Torm_p75.jpg } elm_st = obj{ nam = 'Улица Вязов', dsc = 'В конце улицы стоит немного покосившийся указательный столб. Единственный выживший указатель на нём показывает на улицу справа: {"Улица Вязов".}', act = 'Не стоит. Ещё заблудиться в этом городе не хватало.' } plain_11 = obj{ nam = 'дом 11 на Плоской улице', dsc = 'Большинство домов закрыто наглухо. Ставни заколочены, двери заперты. Лишь в трёх домах открыты двери: {дом № 11,} ', act = 'За открытой деревянной дверью Джек обнаруживает закрытую железную. Похоже, хозяева не открыли двери, а просто решили немного проветрить жилище.' } plain_12 = obj{ nam = 'дом 12 на Плоской улице', dsc = '{дом № 12} ', act = [[Узкий каменный дом втиснут между домами 14 и 10½. Его окна не закрыты ставнями, но зашторены. {door_12:Дверь} открыта; изнутри доносятся голоса.]] } door_12 = xact("door", code[[return goto 'corridor']]) plain_7 = obj{ nam = 'дом 7 на Плоской улице', dsc = 'и {дом № 7}.' } mat = obj{ nam = 'коврик для ног', dsc = 'Джек стоит на {коврике}.', act = 'Грязный коврик с истёршейся надписью: "Добро пожаловать" лежит на таком же грязном полу.' } rack = obj{ nam = 'вешалка', dsc = 'По правую руку находится {вешалка.}', act = 'На двух рядах изысканно закрученных крючков висят загрязнённые плащи, накидки и шапероны разных размеров. Под ними выстроена {shoes:обувь.}', } shoes = xact("shoes_act","Чёрные мужские сапоги, коричневые женские ботинки, чёрные женские ботинки, чёрные мужские туфли, фиолетовые туфли для копыт.") umbrellas = obj{ nam = 'подставка для зонтиков', dsc = 'Рядом с ней стоит {подставка для зонтиков.}', act = 'Пустая подставка для зонтиков. Совершенно сухая.' } bench = obj{ nam = 'скамейка', dsc = 'По левую руку стоит короткая {скамейка,} ', act = 'Коротенькая низенькая скамейка для того,чтобы надевать на ней обувь.' } stand = obj{ nam = 'этажерка', dsc = 'далее - невысокая {этажерка} ', act = 'В этажерке лежат шнурки, обувные щётки, ложки и прочий бытовой хлам.' } wardrobe = obj{ nam = 'шкаф для верхней одежды', dsc = 'и {шкаф.}', act = 'В шкафу висят чистые и сухие плащи и накидки. Под ними стоит пара красных сапог.' } helga = xact("helga_octant","") helga_lying = obj{ nam = 'Хельга Октант в обмороке', dsc = 'На лестнице наверх лежит в обмороке {дварфийка.}', act = '' } hilly_corridor = obj{ nam = 'Хилли над Хельгой', dsc = 'Над нею копошится {тифлингша}.', act = [[Заметив вас, она бросает недобрый взгляд.]] }