diff --git a/main3.lua b/main3.lua --- a/main3.lua +++ b/main3.lua @@ -1189,7 +1189,7 @@ room { }; obj { nam = 'red_catalyst'; - dsc = 'На одном из столов я замечаю {пробирку с красной жидкостью}. '; + dsc = 'На одном из столов я вижу {пробирку с красной жидкостью}. '; disp = 'Красный катализатор'; disp2 = 'красный катализатор'; disp3 = 'красный катализатор'; @@ -1207,7 +1207,7 @@ room { }; obj { nam = 'blue_catalyst'; - dsc = 'На одной из полок я замечаю {пробирку с синей жидкостью}. '; + dsc = 'На одной из полок я обнаруживаю {пробирку с синей жидкостью}. '; disp = 'Синий катализатор'; disp2 = 'синий катализатор'; disp3 = 'синий катализатор'; @@ -1305,7 +1305,344 @@ dlg { room { nam = 'tower_level_3'; disp = 'Башня, третий этаж'; - dsc = [[Поднявшись на третий этаж, я оказываюсь в уютном кабинете. Вдоль одной из стен установлены книжные полки, а в стену напротив нее вмонтирован ярко пылающий камин. Несмотря на это, в помещении царит уютный полумрак. Чуть поодаль от камина стоит старое кресло-качалка. В центре кабинета стоит массивный деревянный стол, на котором стоят пять фигурок из серебристого металла: волк, тигр, лев, башня и рыцарь. Каждая из фигурок стоит на небольшом шестиугольном основании. В поверхности стола так же есть пять шестиугольных углублений. По периметру стола витиеватым почерком нанесена какая-то надпись.]]; + dsc = [[Поднявшись на третий этаж, я оказываюсь в уютном кабинете. Вдоль одной из стен установлены книжные полки, а в стену напротив нее вмонтирован ярко пылающий камин. Несмотря на это, в помещении царит уютный полумрак. Чуть поодаль от камина стоит старое кресло-качалка. В центре кабинета стоит массивный деревянный {tower_level_3_table|стол}.]]; + way = { + path {"Вниз", "tower_level_2"}; + path {"#up", "Вверх", "tower_level_4"}:disable(); + }; +}:with { + obj { + solved = false; + nam = 'tower_level_3_table'; + act = function(s) + if s.solved then + return 'Огромный стол занимает значительное пространство в центре комнаты. Полированная поверхность блестит в мерцающем свете камина. В поверхности стола так же есть пять шестиугольных углублений, четыре из которых отмечены сторонами света: NW, NE, SE, SW, а еще одна, в центре, оставлена без отметки. В каждом углублении стоит небольшая фигурка из серебристого металла. По периметру стола витиеватым почерком нанесена какая-то надпись. '; + else + walkin('tower_level_3_table_in'); + end; + end; + } +} + +room { + nam = 'tower_level_3_table_in'; + disp = 'Башня, третий этаж'; + dsc = [[Огромный стол занимает значительное пространство в центре комнаты. Полированная поверхность блестит в мерцающем свете камина. В поверхности стола так же есть пять шестиугольных углублений, четыре из которых отмечены сторонами света: NW, NE, SE, SW, а еще одна, в центре, оставлена без отметки. По периметру стола витиеватым почерком нанесена какая-то {#hint|надпись}. ]]; +}:with { + obj { + nam = '#figures'; + dsc = 'На нем стоят {пять фигурок} из серебристого металла. '; + act = function(s) + take('figure_wolf'); + take('figure_tiger'); + take('figure_lion'); + take('figure_knight'); + take('figure_tower'); + remove('#figures', here()); + return 'Я поднимаю фигурки со стола. '; + end; + }; + obj { + item = false; + target = 'figure_wolf'; + nam = '#north_west'; + dsc = function(s) + if s.item then + return 'В углубении NW стоит {' .. s.item.disp2 .. '}. '; + else + return '{Углубление NW} пусто. '; + end; + end; + act = function(s) + if s.item then + local t = s.item; + take(s.item); + s.item = false; + return 'Я забираю ' .. t.disp3 .. ' из углубления'; + else + return 'Небольшое шестиугольное углубление. '; + end; + end; + used = function(s, o) + if s.item then + return 'В углублении уже стоит ' .. s.item.disp2; + elseif o^'figure_wolf' or o^'figure_lion' or o^'figure_tower' or o^'figure_knight' or o^'figure_tiger' then + s.item = o; + pr('Я помещаю ' .. o.disp3 .. ' в углубление. '); + remove(o, pl); + local niches = { + _('#north_west'); + _('#north_east'); + _('#middle'); + _('#south_west'); + _('#south_east'); + }; + + for i = 1, #niches do + if not niches[i].item or niches[i].item.nam ~= niches[i].target then + return; + end; + end; + + _('tower_level_3_table').solved = true; + walkout(); + _('#up', 'tower_level_3'):enable(); + pr 'Легкий щелчок дает мне понять, что дверь на следующий этаж башни открыта. '; + end; + end; + }; + obj { + item = false; + target = 'figure_lion'; + nam = '#north_east'; + dsc = function(s) + if s.item then + return 'В углубении NE стоит {' .. s.item.disp2 .. '}. '; + else + return '{Углубление NE} пусто. '; + end; + end; + act = function(s) + if s.item then + local t = s.item; + take(s.item); + s.item = false; + return 'Я забираю ' .. t.disp3 .. ' из углубления'; + else + return 'Небольшое шестиугольное углубление. '; + end; + end; + used = function(s, o) + if s.item then + return 'В углублении уже стоит ' .. s.item.disp2; + elseif o^'figure_wolf' or o^'figure_lion' or o^'figure_tower' or o^'figure_knight' or o^'figure_tiger' then + s.item = o; + pr('Я помещаю ' .. o.disp3 .. ' в углубление. '); + remove(o, pl); + local niches = { + _('#north_west'); + _('#north_east'); + _('#middle'); + _('#south_west'); + _('#south_east'); + }; + + for i = 1, #niches do + if not niches[i].item or niches[i].item.nam ~= niches[i].target then + return; + end; + end; + + _('tower_level_3_table').solved = true; + walkout(); + _('#up', 'tower_level_3'):enable(); + pr 'Легкий щелчок дает мне понять, что дверь на следующий этаж башни открыта. '; + end; + end; + }; + obj { + item = false; + target = 'figure_tower'; + nam = '#middle'; + dsc = function(s) + if s.item then + return 'В центральном углубении стоит {' .. s.item.disp2 .. '}. '; + else + return '{Центральное углубление} пусто. '; + end; + end; + act = function(s) + if s.item then + local t = s.item; + take(s.item); + s.item = false; + return 'Я забираю ' .. t.disp3 .. ' из углубления'; + else + return 'Небольшое шестиугольное углубление. '; + end; + end; + used = function(s, o) + if s.item then + return 'В углублении уже стоит ' .. s.item.disp2; + elseif o^'figure_wolf' or o^'figure_lion' or o^'figure_tower' or o^'figure_knight' or o^'figure_tiger' then + s.item = o; + pr('Я помещаю ' .. o.disp3 .. ' в углубление. '); + remove(o, pl); + local niches = { + _('#north_west'); + _('#north_east'); + _('#middle'); + _('#south_west'); + _('#south_east'); + }; + + for i = 1, #niches do + if not niches[i].item or niches[i].item.nam ~= niches[i].target then + return; + end; + end; + + _('tower_level_3_table').solved = true; + walkout(); + _('#up', 'tower_level_3'):enable(); + pr 'Легкий щелчок дает мне понять, что дверь на следующий этаж башни открыта. '; + end; + end; + }; + obj { + item = false; + target = 'figure_knight'; + nam = '#south_west'; + dsc = function(s) + if s.item then + return 'В углубении SW стоит {' .. s.item.disp2 .. '}. '; + else + return '{Углубление SW} пусто. '; + end; + end; + act = function(s) + if s.item then + local t = s.item; + take(s.item); + s.item = false; + return 'Я забираю ' .. t.disp3 .. ' из углубления'; + else + return 'Небольшое шестиугольное углубление. '; + end; + end; + used = function(s, o) + if s.item then + return 'В углублении уже стоит ' .. s.item.disp2; + elseif o^'figure_wolf' or o^'figure_lion' or o^'figure_tower' or o^'figure_knight' or o^'figure_tiger' then + s.item = o; + pr('Я помещаю ' .. o.disp3 .. ' в углубление. '); + remove(o, pl); + local niches = { + _('#north_west'); + _('#north_east'); + _('#middle'); + _('#south_west'); + _('#south_east'); + }; + + for i = 1, #niches do + if not niches[i].item or niches[i].item.nam ~= niches[i].target then + return; + end; + end; + + _('tower_level_3_table').solved = true; + walkout(); + _('#up', 'tower_level_3'):enable(); + pr 'Легкий щелчок дает мне понять, что дверь на следующий этаж башни открыта. '; + end; + end; + }; + obj { + item = false; + target = 'figure_tiger'; + nam = '#south_east'; + dsc = function(s) + if s.item then + return 'В углубении SE стоит {' .. s.item.disp2 .. '}. '; + else + return '{Углубление SE} пусто. '; + end; + end; + act = function(s) + if s.item then + local t = s.item; + take(s.item); + s.item = false; + return 'Я забираю ' .. t.disp3 .. ' из углубления'; + else + return 'Небольшое шестиугольное углубление. '; + end; + end; + used = function(s, o) + if s.item then + return 'В углублении уже стоит ' .. s.item.disp2; + elseif o^'figure_wolf' or o^'figure_lion' or o^'figure_tower' or o^'figure_knight' or o^'figure_tiger' then + s.item = o; + pr('Я помещаю ' .. o.disp3 .. ' в углубление. '); + remove(o, pl); + local niches = { + _('#north_west'); + _('#north_east'); + _('#middle'); + _('#south_west'); + _('#south_east'); + }; + + for i = 1, #niches do + if not niches[i].item or niches[i].item.nam ~= niches[i].target then + return; + end; + end; + + _('tower_level_3_table').solved = true; + walkout(); + _('#up', 'tower_level_3'):enable(); + pr 'Легкий щелчок дает мне понять, что дверь на следующий этаж башни открыта. '; + end; + end; + }; + obj { + nam = '#hint'; + act = [[На столе я замечаю следующий текст:^ +Пятеро их, у каждого цвет свой: белый, алый, лазурный, изумрудный и черный.^ +Четверым дано время: полдень, полночь, рассвет и закат, пятый – вне времени.^ +Четверым дан сезон: осень, лето, весна и зима, пятый – вне времени.^ +Четверым даны луны: растущая, полная, убывающая и новая, пятый – вне времени.^ +На северо-западе место полной луны, владения новой, зеленой – напротив ее.^ +Тигр в полдень бродит по землям своим.^ +Зима не на юге, и весна от нее на востоке.^ +Башня – вне времени, лишь цвет ей присущ.^ +Волк в полночь обходит владенья свои, тот что летом владеет – напротив его.^ +Луна убывает на севере, белый закат южнее ее.^ +Черный – в центре, окружен он рассветом, закатом, полночью и полднем.^ +Лев алый весенний рассвет собой воплощает.]]; + } +} + +obj { + nam = 'figure_wolf'; + disp = 'Фигурка волка'; + disp2 = 'фигурка волка'; + disp3 = 'фигурку волка'; + inv = 'Фигурка волка, рыщущего в поисках добычи из неизвестного мне серебристого металла. Очень красивая и детально проработанная, она закреплена на шестиугольном основании из того же металла. '; +} + +obj { + nam = 'figure_tiger'; + disp = 'Фигурка тигра'; + disp2 = 'фигурка тигра'; + disp3 = 'фигурку тигра'; + inv = 'Фигурка бегущего тигра из неизвестного мне серебристого металла. Очень красивая и детально проработанная, она закреплена на шестиугольном основании из того же металла. '; +} + +obj { + nam = 'figure_lion'; + disp = 'Фигурка льва'; + disp2 = 'фигурка льва'; + disp3 = 'фигурку льва'; + inv = 'Фигурка льва, стоящего с гордо поднятой головой и смотрящего куда-то вдаль. Сделана из неизвестного мне серебристого металла. Очень красивая и детально проработанная, она закреплена на шестиугольном основании из того же металла.'; +} + +obj { + nam = 'figure_knight'; + disp = 'Фигурка рыцаря'; + disp2 = 'фигурка рыцаря'; + disp3 = 'фигурку рыцаря'; + inv = 'Фигурка рыцаря в полном доспехе, стоящего, опершись на громадный двуручный меч. Сделана из неизвестного мне серебристого металла. Очень красивая и детально проработанная, она закреплена на шестиугольном основании из того же металла.'; +} + +obj { + nam = 'figure_tower'; + disp = 'Фигурка башни'; + disp2 = 'фигурка башни'; + disp3 = 'фигурку башни'; + inv = 'Фигурка высокой шестиугольной башни -- уменьшенной копии той, в которой я сейчас нахожусь. Сделана из неизвестного мне серебристого металла. Фигурка настолько проработана, она закреплена на шестиугольном основании из того же металла.'; } room { @@ -1375,6 +1712,6 @@ function start(load) _('box').oiled = true; _('box').opened = true; take('hidden_key'); - walk('tower_level_2'); + walk('tower_level_3'); end; end; \ No newline at end of file