jacques/objects.lua
Alexander Yakovlev 275c003991 Сделал один способ закончить первую часть.
Совершенно мне не нравится, но псмотрим что скажут потом бета-тестеры.
Подумаю над дельтапланом в том же духе и - можно переходить ко второму 
акту.
2010-05-14 11:46:45 +07:00

256 lines
11 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 'Нет, вы уже пропустили свой шанс.' end;
return call(this, 'fuse', that);
end;
v.used = v.use;
return obj(v);
end
rope = cobj{
nam = 'верёвка',
inv = 'Длинная крепкая пеньковая верёвка.',
fuse = function(this, that)
if (that == 'lock') then
inv():del('lock');
inv():del('rope');
inv():add('rope_with_lock');
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,
}
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 = 'В маленьком глиняном горшочке, доверху заполненном водой, лежит топор. Наверное, это будущая каша.',
}