diff --git a/london.lua b/london.lua --- a/london.lua +++ b/london.lua @@ -220,12 +220,18 @@ hotel_street = room { hotel_hall = room { nam = "hotel_hall"; disp = "Гостиница"; - dsc = [[ - Вы находитесь в холле гостиницы. Просторный зал, по высоте занимающий оба этажа здания. В задней части зала вы видите широкую лестницу, застеленную старой дорожкой, которая некогда была красной. Окна закрыты тяжелыми занавесками, не позволяя свету с улицы проникнутьт в помещение. Однако, огромная люстра под потолком дает достаточно света. - ]]; + dsc = [[Холл гостиницы представляет собой просторный зал, высотой в два этаже. В задней части зала вы видите широкую лестницу, застеленную старой дорожкой, которая некогда была красной. Окна закрыты тяжелыми занавесками, не позволяя свету с улицы проникнуть в помещение. Огромная люстра под потолком дает достаточно света. Вдоль стен расположено несколько скамеек. ]]; obj = { 'hotel_concierge' }; + entered = function(s) + if (rnd(20) > 19) then + hotel_maid.state = #hotel_maid.actions; + put(hotel_maid, here()); + else + remove(hotel_maid, here()); + end; + end; way = { vroom("На улицу", "hotel_street"); vroom("К номерам", "hotel_corridor_1"):disable(); @@ -236,9 +242,15 @@ hotel_hall = room { hotel_corridor_1 = room { nam = "hotel_corridor_1"; disp = "Гостиница, первый этаж"; - dsc = [[ - Вы находитесь в коридоре на первом этаже гостиницы. Окна здесь отсутствуют и все освещение дают несколько газовых ламп, укрепленных на стенах. Вдоль стен расположено несколько простых дверей, ведущих в комнаты, предназначенные для постояльцев. - ]]; + dsc = [[Широкий коридор без окон, освещенный газовыми лампами, укрепленными на стенах. По обе стороны от вас расположены двери, ведущие в комнаты постояльцев. ]]; + entered = function(s) + if (rnd(10) > 9) then + hotel_maid.state = rnd(#hotel_maid.actions - 1); + put(hotel_maid); + else + remove(hotel_maid); + end; + end; way = { vroom("В холл", "hotel_hall"); vroom("В комнату №2", "hotel_room_2"):disable(); @@ -248,9 +260,7 @@ hotel_corridor_1 = room { hotel_corridor_2 = room { nam = "hotel_corridor_2"; disp = "Гостиница, второй этаж"; - dsc = [[ - Вы находитесь в коридоре на втором этаже гостиницы. Окна здесь отсутствуют и все освещение дают несколько газовых ламп, укрепленных на стенах. Вдоль стен расположено несколько простых дверей, ведущих в комнаты, предназначенные для постояльцев. - ]]; + dsc = [[Широкий коридор без окон, освещенный газовыми лампами, укрепленными на стенах. По обе стороны от вас расположены двери, ведущие в комнаты постояльцев. ]]; way = { vroom("В холл", "hotel_hall"); vroom("В комнату №7", "hotel_room_7"); @@ -261,6 +271,14 @@ hotel_corridor_2 = room { walkin('starlight_first_dlg'); end; end; + entered = function(s) + if (rnd(10) > 9) then + hotel_maid.state = rnd(#hotel_maid.actions - 1); + put(hotel_maid, here()); + else + remove(hotel_maid, here()); + end; + end; left = function(s) if (s.room_visited) then remove("char_starlight_corridor", where("char_starlight_corridor")); @@ -272,9 +290,7 @@ hotel_corridor_2 = room { hotel_room_2 = room { nam = "hotel_room_2"; disp = "Гостиница, Комната №2"; - dsc = [[ - Вы находитесь в комнате Джозефа Старлайта. На столике у окна стоит зажженная лампа, рядом брошена стопка газет. На кровати в углу валяется шляпа хозяина. Окно распахнуто, впуская внутрь прохладный и влажный воздух, а также шум городской суеты. - ]]; + dsc = [[Небольшая чистая комната. На столике у окна стоит зажженная лампа, рядом брошена стопка газет. На кровати в углу валяется шляпа хозяина. Окно распахнуто, впуская внутрь прохладный и влажный воздух. ]]; obj = { "char_starlight" }; @@ -286,11 +302,7 @@ hotel_room_2 = room { hotel_room_7 = room { nam = "hotel_room_7"; disp = "Гостиница, Комната №7"; - -- TODO сделать возможность открыть и закрыть ставни на окнах - -- TODO нахуй магазинчик, торговца и прочих уродов - dsc = [[ - Вы находитесь в вашей комнате в гостинице Старого Фрэнки. Небольшой деревянный столик прикрыт чистой белой скатертью. В углу стоит аккуратно сделанный стул. У окна расположена застеленная свежим бельем кровать. На скрипучем деревянном полу постелен старый коврик. - ]]; + dsc = [[Небольшая чистя комната. Деревянный столик в углу прикрыт белой скатертью. В углу стоит аккуратно сделанный стул. У окна расположена застеленная чистым бельем кровать. На скрипучем деревянном полу лежит старый коврик. ]]; obj = { 'item_lamp', 'room_7_window' }; @@ -307,110 +319,31 @@ room_7_window = obj { state = 0; dsc = function(s) if (s.state == 0) then - return "{Окно} комнаты закрыто плотными ставнями"; + return "{Окно} закрыто плотными ставнями. "; elseif (s.state == 1) then - return "Сквозь мутные стекла {окна} вы можете разглядеть мостовую, немногочисленных прохожих, прочные кирпичные дома на другой стороне улицы и тяжелые тучи, нависающие над городом. "; + return "Через {окно} вы можете разглядеть мостовую, немногочисленных прохожих, прочные кирпичные дома на другой стороне улицы и тяжелые тучи, нависающие над городом. "; else - return "Сквозь открытое {окно} до вас доносится шум большого, живущего своей жизнью города. Прохладный ветерок задувает в комнату."; + return "Сквозь открытое {окно} до вас доносится шум большого, живущего своей жизнью города. Прохладный ветерок задувает в комнату. "; end; end; act = function(s) if (s.state == 0) then s.state = 1; - return [[ - Вы открываете ставни. - ]]; + return [[Вы открываете ставни. ]]; elseif (s.state == 1) then s.state = 2; - return [[ - Вы открываете окно. - ]]; + return [[Вы открываете окно. ]]; elseif (s.state == 2) then s.state = 0; - return [[ - Вы закрываете окно и захлопываете ставни. - ]]; + return [[Вы закрываете окно и захлопываете ставни. ]]; end; end; }; ---[[hotel_alley = room { - nam = "hotel_alley"; - disp = "Переулок"; - entered = function(s) - lifeon(alley_trader); - end; - left = function(s) - lifeoff(alley_trader); - end; - dsc = [ - Вы находитесь в узком проулке позади гостиницы. Дома расположены очень близко друг к другу, оставляя совсем немного свободного места. - ]; - obj = { - 'alley_trader' - }; - way = { - vroom("Ко входу в гостиницу", "hotel_street"); - vroom("В пивную лавку", "ginshop"); - } -}; - -alley_trader = obj { - nam = "alley_trader"; - disp = "Торговец редкостями"; - dsc = [ - Немолодой {человек} в старом пальто стоит, опершись на стену одного из домов. Сквозь стекла старых очков в тяжелой оправе он смотрит на вас, словно в ожидании ваших действий. - ]; - life = function(s) - if(math.random(5) > 3 and where(pl) ~= alley_trader_dlg) then - pn("Повернувшись к вам, человек спрашивает: \"Могу я чем-нибудь помочь?\""); - end; - end; - act = function(s) - walkin "alley_trader_dlg"; - end; -}; - -alley_trader_dlg = dlg { - nam = "alley_trader_dlg"; - disp = "Торговец"; - hideinv = true; - entered = function(s) - if (global.light_needed) then - pon(1); - else - poff(1); - end; - if (global.lockpick_needed) then - pon(2); - else - poff(2); - end; - return ["У меня есть все, что вам нужно"]; - end; - phr = { - {1, "Мне нужна лампа", function() - take(item_lamp); - return "Без проблем"; - end}; - {2, "Мне нужна отмычка", function() - global.lockpick_needed = false; - take(item_lockpick); - return "Без проблем"; - end}; - {255, always = true, "Это все", function() - back(); - return "До встречи"; - end}; - }; -};]] - hotel_concierge = obj { nam = "hotel_concierge"; disp = "Консьерж"; - dsc = [[ - За стойкой скучает пожилой {консьерж}. Поношенный костюм, выглаженный и начищенный, хорошо сидит на его худощавом теле. Аккуратно подстриженная седая борода украшает его морщинистое лицо. Руки его неподвижно лежат на стойке, а глаза наблюдают за входящими и выходящими посетителями. - ]]; + dsc = [[За стойкой скучает пожилой {консьерж}. Поношенный костюм, выглаженный и начищенный, хорошо сидит на его худощавом теле. Аккуратно подстриженная седая борода украшает его морщинистое лицо. Руки его неподвижно лежат на стойке, а глаза наблюдают за входящими и выходящими посетителями. ]]; act = function(s) if (hotel_concierge.paid) then pn("Я уже снял номер"); @@ -420,91 +353,82 @@ hotel_concierge = obj { end; }; ---hotel_maid = npc { --- nam = "hotel_maid"; --- disp = "Служанка"; --- actions = { --- [[ --- Молодая {Служанка} подметает пол. --- ]]; --- [[ --- {Служанка} --- ]]; --- }; --- dsc = function(s) --- --- end; --- phrases = { --- "Простите, я занята"; --- "Вам понравилась ваша комната?"; --- "У меня еще много дел сегодня"; --- "Простите?"; --- "Добрый день"; --- }; ---}; +hotel_maid = npc { + var { + state = 1; + }; + nam = "hotel_maid"; + disp = "Служанка"; + actions = { + [[{Служанка} подметает пол. ]]; + [[{Служанка} протирает стены. ]]; + [[{Служанка} поправляет лампу. ]]; + [[На одну из скамеек присела отдохнуть {служанка}. ]]; + }; + dsc = function(s) + return s.actions[s.state]; + end; + phrases = { + [["Простите, я занята". ]]; + [["Вам понравилась ваша комната?" ]]; + [["У меня еще много дел сегодня". ]]; + [["Простите?" ]]; + [["Добрый день". ]]; + }; +}; hotel_concierge_dlg = dlg { nam = "hotel_concierge_dlg"; disp = "Консьерж"; - entered = [[ - Консьерж оживился, как только вы подошли: "Здравствуйте! Желаете снять номер?" - ]]; + entered = [[Консьерж оживился, как только вы подошли: "Здравствуйте! Желаете снять номер?" ]]; phr = { {1, "Да, мне нужна комната на неделю. ", [[ - Консьерж, посмотрев в журнал называет цену: "С вас 100 монет. " + Консьерж, посмотрев в журнал, называет цену: "С вас 100 монет. " ]], code = [[ psub("pay"); ]]}; {255, always = true, "Не сейчас", function() back(); - return "Когда соберетесь тогда и приходите."; + return [[Консьерж недовольно отвечает: "Приходите, когда соберетесь! "]]; end}; {tag = "pay"}; {always = true, "Хорошо", function() if pl:pay(100) then hotel_concierge.paid = true; - path("К номерам на первом этаже", hotel_hall):enable(); + path("К номерам", hotel_hall):enable(); path("На второй этаж", hotel_hall):enable(); back(); - return [[ - Консьерж принимает ваши деньги и просит вас расписаться в гостевой книге. После чего вручает вам ключ, сообщая: "Вам на второй этаж, комната номер 7." - ]]; + return [[Консьерж принимает ваши деньги и просит вас расписаться в гостевой книге. После чего вручает вам ключ, сообщая: "Вам на второй этаж, комната номер 7". ]]; else pon(1); pret(); back(); - return [[ - Консьерж недовольно отвечает: "Приходите, когда деньги будут!" - ]]; + return [[Консьерж недовольно отвечает: "Приходите, когда деньги будут!" ]]; end; end}; - {always = true, "Я передумал", [[ - Консьерж недовольно отвечает: "Приходите, когда соберетесь!" - ]], code = [[ pon(1); pret(); ]]} + {always = true, "Я передумал", [[Консьерж недовольно отвечает: "Приходите, когда соберетесь!" ]], code = [[ pon(1); pret(); ]]} }; }; starlight_first_dlg = dlg { - nam = "starlight_first_dlg"; - disp = "Джозеф Старлайт"; - entered = [[ - Выйдя из своей комнаты, вы замечаете поднимающегося по лестнице человека. Это мужчина лет сорока пяти-пятидесяти. Он одет в помятый темно-серый костюм, на носу - маленькие очки в простой оправе. В левой руке он держит какую-то газету, а правой спешно ощупывает карманы в поисках чего-то. Заметив вас он улыбается и спрашивает: "Господин Дрейк?" - ]]; + nam = "starlight_first_dlg"; + disp = "Гостиница, второй этаж"; + entered = [[Выйдя из своей комнаты, вы замечаете поднимающегося по лестнице человека. Это мужчина лет сорока пяти -- пятидесяти. Он одет в помятый темно-серый костюм, на носу -- маленькие очки в простой оправе. В левой руке он держит какую-то газету, а правой спешно ощупывает карманы в поисках чего-то. Заметив вас он улыбается и спрашивает: "Господин Дрейк?" ]]; left = function(s) path('В комнату №2', hotel_corridor_1):enable(); put(hotel_corridor_2, "char_starlight_corridor"); lifeon("char_starlight_corridor"); end; phr = { - { "Мы встречались?", "Скорее всего нет, мое имя - Джозеф Старлайт. Вы случайно не родственник Уильяма Дрейка? Название Вестхейвен Трансоушен вам о чем-то говорит?", code [[ pstart('have_we_met') ]]}; - { "Кто вы?", "Джозеф Старлайт, адвокат. Название Вестхейвен Трансоушен вам о чем-то говорит? ", code [[ pstart('who_are_you') ]]}; - { "Да, я Дэвид Дрейк. ", "Здравствйте! Я Джозеф Старлайт. Вы сын Уильяма Дрейка? Название Вестхейвен Трансоушен вам о чем-нибудь говорит? ", code [[ pstart('i_am_drake') ]]}; - { "Простите, я спешу. ", "Простите. Если хотите поговорить о Вестхейвен Трансоушен, зайдите ко мне в комнату 2 как-нибудь. ", code [[ back(); ]]}; + { "Мы встречались?", [[Человек пожимает плечами: "Скорее всего нет, мое имя Джозеф Старлайт. Вы случайно не родственник Уильяма Дрейка? Название Вестхейвен Трансоушен вам о чем-то говорит?" ]], code [[ pstart('have_we_met') ]]}; + { "Кто вы?", [[Человек протягивает вам руку: "Джозеф Старлайт, адвокат. Название Вестхейвен Трансоушен вам о чем-то говорит?" ]], code [[ pstart('who_are_you') ]]}; + { "Да, я Дэвид Дрейк.", [[Человек протягивает вам руку: "Здравствйте! Я Джозеф Старлайт. Вы сын Уильяма Дрейка? Название Вестхейвен Трансоушен вам о чем-нибудь говорит?" ]], code [[ pstart('i_am_drake') ]]}; + { "Простите, я спешу.", [[Человек огорченно вздыхает: "Простите". Подойдя к лестнице он оборачивается и говорит: "Мое имя - Джозеф Старлайт. Если хотите поговорить о Вестхейвен Трансоушен, зайдите ко мне в комнату 2 когда у вас будет время". ]], code [[ back(); ]]}; {tag = "have_we_met"}; - { "Я сын Уильяма. Вы знаете что произошло?", "Крайне мало, то было, без сомнения, самое запутанное мое дело. Если хотите поговорить - заходите в комнату 2. ", code [[ back(); ]]}; - { "Кто вы?", "Я занимался исчезновением Дрейка, а позже банкротством его компании. ", code [[ pstart('who_are_you') ]]}; + { "Я сын Уильяма. Вы знаете что произошло?", [[Джозеф Старлайт чешет подбородок: "Немного. Это было, без сомнения, самое запутанное мое дело. Нам лучше поговорить у меня в комнате. Номер 2, на первом этаже. "]], code [[ back(); ]]}; + { "Кто вы?", [[Джозеф Старлайт отвечает: "Адвокат. Я занимался делом о банкротстве Вестхейвен Трансоушен. "]], code [[ pstart('who_are_you') ]]}; {tag = "who_are_you"}; - { "Вы знаете что произошло?", "Крайне мало, то было, без сомнения, самое запутанное мое дело. Если хотите поговорить - заходите в комнату 2. ", code [[ back(); ]]}; + { "Вы знаете что произошло?", [[Джозеф Старлайт чешет подбородок: "Немного. Это было, без сомнения, самое запутанное мое дело. Нам лучше поговорить у меня в комнате. Номер 2, на первом этаже. "]], code [[ back(); ]]}; {tag = "i_am_drake"}; - { "Да все верно. Это название компании моего отца. Вы знаете что произошло?", "Крайне мало, то было, без сомнения, самое запутанное мое дело. Если хотите поговорить - заходите в комнату 2. ", code [[ back(); ]]}; + { "Да все верно. Это название компании моего отца. Вы знаете что произошло?", [[Джозеф Старлайт чешет подбородок: "Немного. Это было, без сомнения, самое запутанное мое дело. Нам лучше поговорить у меня в комнате. Номер 2, на первом этаже. "]], code [[ back(); ]]}; }; };