1
0
Fork 0
mirror of https://github.com/Oreolek/sixth_city.git synced 2024-06-26 03:30:45 +03:00

Упрощение кода

This commit is contained in:
Alexander Yakovlev 2015-07-23 08:37:32 +07:00
parent 2c0c5b52f2
commit 509b7b927a
3 changed files with 71 additions and 67 deletions

View file

@ -19,6 +19,18 @@ end
function action(o)
o.nam = o.nam.."^";
o.dsc = "{"..o.nam.."}";
o.act = function(s)
if o.new_filter ~= nil then
game._action = o.new_filter
main.dsc = o._dsc
else
p(o._dsc);
end
if (o.click ~= nil and type(o.click) == 'function') then
o.click(s);
end
here():look(); -- нам нужно перерисовать комнату
end;
if o._disabled == nil then
o._disabled = function()
if (game._action == nil) then

View file

@ -1,21 +1,19 @@
monument = action {
nam = 'Осмотреть памятник',
act = function()
game._action = "tower";
pn ("Чёрный памятник без таблички изображает высокого мужчину в старомодном плаще, который держит в руках раскрытый зонт. Мужчина застыл, направив взгляд на небо.");
pn ('На основании памятника нацарапано: "Господин Гронц видел тебя"');
_dsc = [[
Чёрный памятник без таблички изображает высокого мужчину в старомодном плаще, который держит в руках раскрытый зонт. Мужчина застыл, направив взгляд на небо.^^
На основании памятника нацарапано: "Господин Гронц видел тебя"
]],
click = function()
connected(1);
monument._disabled = true;
game._action = nil;
end,
}
museum = action {
nam = 'Посетить музей Сгоревших Свечей',
act = function()
game._action = "museum";
return [[Музей Сгоревших Свечей -- это здание середины девятнадцатого века, изрядно потрёпанное временем. На входе вам дают кусочек воска, на котором написан номер билета.]];
end,
_dsc = [[Музей Сгоревших Свечей -- это здание середины девятнадцатого века, изрядно потрёпанное временем. На входе вам дают кусочек воска, на котором написан номер билета.]],
new_filter = "museum"
}
-- circus = action {
@ -24,53 +22,22 @@ museum = action {
clock = action {
nam = 'Найти Глиняную Башню',
act = function()
game._action = "clock";
return [[ Вы подходите к старинной башне, целиком вылепленной из красной глины. На верхушке башни находится циферблат часов, застрявших на шести часах двадцати минут.]]
end,
new_filter = "clock",
_dsc = [[ Вы подходите к старинной башне, целиком вылепленной из красной глины. На верхушке башни находится циферблат часов, застрявших на шести часах двадцати минут.]]
}
police = action {
nam = 'Искать Отделение Криминального Давления',
act = function()
game._action = "police";
return [[Буклет-путеводитель описывает Отделение Криминального Давления как "департамент наивысшей безопасности по защите от наихудшей преступности.^^
Издалека вам кажется, что здание О.К.Д. украшено живыми прыгучими мышами, но вблизи вы видите, что мышей всего лишь колышет лёгкий ветер. В здание часто заходят люди в тёмно-синей форме, но, насколько вы можете заметить, через тяжёлые двери выходят немногие. Вы не замечаете ничего странного, входя внутрь, только половицы слишком громко скрипят.]];
end,
new_filter = "police",
_dsc = [[Буклет-путеводитель описывает Отделение Криминального Давления как "департамент наивысшей безопасности по защите от наихудшей преступности.^^
Издалека вам кажется, что здание О.К.Д. украшено живыми прыгучими мышами, но вблизи вы видите, что мышей всего лишь колышет лёгкий ветер. В здание часто заходят люди в тёмно-синей форме, но, насколько вы можете заметить, через тяжёлые двери выходят немногие. Вы не замечаете ничего странного, входя внутрь, только половицы слишком громко скрипят.]],
}
thief = action {
nam = 'Вы засовываете руку в карман и находите там чужую',
_disabled = function() if (game._action == "police" and pl._boldness < 5 and not have('cent')) then return false; end; return true; end,
act = function()
game._action = "thief";
return [[Вы засовываете руку в карман и находите там чужую. Вы разворачиваетесь и видите грязного мальчика, который пытается спрятать лицо под дырявой кепкой.]];
end,
}
thief_bold = action {
nam = 'Побить вора',
_disabled = function() if (game._action == "thief") then return false; end; return true; end,
act = function()
game._action = "police";
connected(1);
bold(1);
take('cent');
return [[Вы перетряхиваете мальчугана на всё, что у него есть. Он отдаёт вам единственную монетку и теряется в тумане.]];
end,
}
thief_follow = action {
nam = 'Отпустить и проследить за ним',
_disabled = function() if (game._action == "thief") then return false; end; return true; end,
act = function()
game._action = "police";
connected(1);
cautious(1);
take('cent');
return [[Вы отпускаете мальчугана и осторожно следуете за ним. Он отбегает в сторону, оглядывается, и, не заметив вас в тумане, идёт по переулкам к старому фонтану на Площади Жути.^^
По пустой улице проносится слабый звон, и мальчик быстро исчезает в одном из домов. Вы подходите к пересохшему фонтану и видите одинокую монетку, которая блестит на дне. Вы поднимаете монетку и осматриваете её. Выглядит интересно. ]];
end,
new_filter = "thief",
_dsc = [[Вы засовываете руку в карман и находите там чужую. Вы разворачиваетесь и видите грязного мальчика, который пытается спрятать лицо под дырявой кепкой.]],
}
cent = obj {
@ -78,49 +45,70 @@ cent = obj {
inv = 'Потемневшая монета в одну местную копейку. На реверсе монеты иголкой нацарапана спираль.'
}
thief_bold = action {
nam = 'Побить вора',
_disabled = function() if (game._action == "thief") then return false; end; return true; end,
new_filter = "police",
_dsc = [[Вы перетряхиваете мальчугана на всё, что у него есть. Он отдаёт вам единственную монетку и теряется в тумане.]],
click = function()
connected(1);
bold(1);
take('cent');
end,
}
thief_follow = action {
nam = 'Отпустить и проследить за ним',
_disabled = function() if (game._action == "thief") then return false; end; return true; end,
new_filter = "police",
_dsc = [[Вы отпускаете мальчугана и осторожно следуете за ним. Он отбегает в сторону, оглядывается, и, не заметив вас в тумане, идёт по переулкам к старому фонтану на Площади Жути.^^
По пустой улице проносится слабый звон, и мальчик быстро исчезает в одном из домов. Вы подходите к пересохшему фонтану и видите одинокую монетку, которая блестит на дне. Вы поднимаете монетку и осматриваете её. Выглядит интересно. ]],
click = function()
connected(1);
cautious(1);
take('cent');
end,
}
eradication_lvl1 = action {
nam = 'На вас бросается женщина...',
_disabled = function() if (game._action == "police" and pl._boldness < 5 and not have('clay_leg')) then return false; end; return true; end,
act = function()
game._action = "eradication_lvl1_1";
return [[ На вас бросается женщина с зарёванным лицом. Мужчина в форме, с которым она до этого разговаривала, облегчённо вздыхает и уходит по своим делам. ^
-- Пожалуйста! Может, хоть вы мне поможете? Я не могу попасть домой и у меня нет с собой денег, чтобы заплатить Охотникам. Я не могу пробиться через эти грибы!]];
end,
new_filter = "eradication_lvl1_1",
_dsc = [[ На вас бросается женщина с зарёванным лицом. Мужчина в форме, с которым она до этого разговаривала, облегчённо вздыхает и уходит по своим делам. ^
-- Пожалуйста! Может, хоть вы мне поможете? Я не могу попасть домой и у меня нет с собой денег, чтобы заплатить Охотникам. Я не могу пробиться через эти грибы!]],
}
eradication_lvl1_1 = action {
nam = 'Следовать к её дому',
_disabled = function() if (game._action == "eradication_lvl1_1") then return false; end; return true; end,
act = function()
game._action = "eradication_lvl1";
return [[ Она живёт к западу от Глиняной Башни, в квартале Улыбающихся Гончаров. Вы медленно пробираетесь по петляющим улочкам и, наконец, выходите к старому домику, перед которым раскинулись высокие коричневые заросли грибов.Она даёт вам белый платок и показывает, как его завязать на лицо. ^^
-- Вы видите? Я не могу пройти к дому, не наглотавшись спор. Я читала, что споры этих грибов превращают людей в.. в глину!]];
end,
new_filter = "eradication_lvl1",
_dsc = [[ Она живёт к западу от Глиняной Башни, в квартале Улыбающихся Гончаров. Вы медленно пробираетесь по петляющим улочкам и, наконец, выходите к старому домику, перед которым раскинулись высокие коричневые заросли грибов.Она даёт вам белый платок и показывает, как его завязать на лицо. ^^
-- Вы видите? Я не могу пройти к дому, не наглотавшись спор. Я читала, что споры этих грибов превращают людей в.. в глину!]],
}
-- тут можно придумать дополнительные варианты в зависимости от инвентаря
eradication_lvl1_cautious = action {
nam = 'Медленно протоптать дорожку',
_disabled = function() if (game._action == "eradication_lvl1") then return false; end; return true; end,
act = function()
new_filter = "police", -- тут мы устанавливаем фильтр, а не проверяем его
_dsc = [[ Осторожно контролируя вес, вы протаптываете дорожку через заросли грибов. Придётся ходить только в масках, но теперь здесь есть шансы жить.^^
-- Спасибо! Вот вам за труды. -- Женщина протягивает изогнутый кусок пластилина. -- Говорят, за ноги Пластилиновых Творений дорого платят в музее Сгоревших Свечей. ]],
click = function()
cautious(1);
take('clay_leg');
game._action = "police";
return [[ Осторожно контролируя вес, вы протаптываете дорожку через заросли грибов. Придётся ходить только в масках, но теперь здесь есть шансы жить.^^
-- Спасибо! Вот вам за труды. -- Женщина протягивает изогнутый кусок пластилина. -- Говорят, за ноги Пластилиновых Творений дорого платят в музее Сгоревших Свечей. ]];
end,
}
eradication_lvl1_bold = action {
nam = 'Быстро перепрыгнуть через заросли',
_disabled = function() if (game._action == "eradication_lvl1") then return false; end; return true; end,
act = function()
new_filter = "police",
click = function()
bold(1);
take('clay_leg');
game._action = "police";
return [[ Разбежавшись, вы перепрыгиваете заросли и приземляетесь на пороге дома. Похоже, хозяйке придётся упражняться в прыжках, но хотя бы у неё появились шансы здесь жить.^^
-- Спасибо! Вот вам за труды. -- Женщина протягивает изогнутый кусок пластилина. -- Говорят, за ноги Пластилиновых Творений дорого платят в музее Сгоревших Свечей. ]];
end,
_dsc = [[ Разбежавшись, вы перепрыгиваете заросли и приземляетесь на пороге дома. Похоже, хозяйке придётся упражняться в прыжках, но хотя бы у неё появились шансы здесь жить.^^
-- Спасибо! Вот вам за труды. -- Женщина протягивает изогнутый кусок пластилина. -- Говорят, за ноги Пластилиновых Творений дорого платят в музее Сгоревших Свечей. ]],
}
clay_leg = obj {
@ -136,7 +124,7 @@ tattoo = action {
turn_back = action {
nam = '-- Вернуться на площадь --',
_disabled = function() if (game._action ~= nil) then return false; end; return true; end,
act = function()
click = function()
game._action = nil;
walk('main');
end,

View file

@ -5,9 +5,13 @@ dofile("lowlevel.lua");
main = room{
nam = 'Шестой город',
dsc = [[
_dsc = [[
Облака никогда не рассеиваются, они могут только становиться светлее. Вы стоите на круглой площади перед мрачным памятником, откуда начинается извилистый лабиринт улиц Шестого города. Невысокие дома окружают вас со всех сторон, скрываясь в тумане.^^
Потёртый буклет, который вы нашли в мусорном баке возде гостиницы, предлагает несколько интересных занятий для "гостей города Н."
]],
enter = function()
main.dsc = main._dsc;
end,
obj = game.actions;
};
main.dsc = main._dsc;