jacques/objects.lua

328 lines
17 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 = xobj{
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 = xobj{
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","")