-- + можно выкупить программатор в обмен на ___ у роботов room { nam = 'chos', disp = 'Богатый дом', way = {'intersection'}, decor = [[ Вы стояли перед большим {chos_house|напечатанным домом.} Отсюда начиналась большая пашня, по которой ходили фермерские роботы.^^ Возле дома в удобном гамаке спала {angelina|старушка.} ]], obj = { obj { nam = 'chos_house', disp = 'дом', take = function() pn('Вы не знаете, как можно '..fmt.em('взять')..' двухэтажный дом.') return false end, act = [[К типовому двухэтажному дому из нанотрубок со временем допечатывали несколько модулей. Часть второго этажа выглядела совсем новой — возможно, её недавно расширили.]], }; obj { nam = 'angelina', take = function() pn('Старушке это не понравится.') return false end, disp = function() if not visited('cho_dlg2') then return 'старушка' else return 'Ангелина' end end, act = function(s) if not isduel then return 'Старушка мирно посапывала, раскачиваясь в гамаке.' else return s.talk() end end, talk = function() return walk('cho_dlg'); end, } } } -- Диалог с Анжелиной Чо dlg { nam = 'cho_dlg', disp = false, dsc = function(s) if not visited('cho_dlg2') then return [[ -- А? Что? Вы… вы ]]..engineer()..[[ из фирмы? Нет, я не сплю.^^ Она встаёт и протирает глаза. ]] end s:reset '#разговор' return [[-- А? Это вы? Извините, я задремала.]] end, decor = [[ Старушка внимательно смотрит на вас. ]], obj = { { { function() return 'Откуда вы поняли, что '..pronoun_1()..' — '..engineer() end, 'Я же вас и вызывала. У нас комбайн сломан. Вы чините зерноуборочные комбайны?' }; { always = true, fmt.em('Как вас зовут?'), 'Ангелина. Я вызывала мастера по гарантии.', next = '#комбайн-начало' } }; { '#комбайн-начало', { 'Что случилось?', '-- Мы прогрели его весной, а он и не едет. Вы же '..engineer()..', вы сможете его починить?' }; { fmt.em('Можно посмотреть комбайн?'), function() return walk('cho_dlg2') end, }; }; { '#разговор', { '#сдать', cond = function() return char.quests.chos == 4 end, 'Комбайн работает…', function() disable('#сдать') return [[-- Комбайн работает. Всё в норме, но надо будет пригнать на проверку к зиме.^ -- Спасибо! Я что-то вам должна?^ -- Ну, ремонт идёт за счёт пожизненной гарантии, только вот…]] end, next = '#починил' }; { cond = function() return char.quests.chos > 0 and char.quests.chos < 4 end, 'Вы не могли бы показать мне комбайн ещё раз?', function() if have('programmator') then walk('combine') return [[Она привела вас к зерноуборочному комбайну, и вы начали работать.]] else return 'Она привела вас к комбайну. Машина в том же сломанном состоянии. Вам пришлось вернуться ни с чем.' end end, }; { 'Вы давно здесь живёте?', 'Она пожимает плечами:^^-- Лет тридцать. Начинали всего с одним роботом.' }; { fmt.em('Ничего. Доброе утро.'), function() walk('chos') return '-- И вам того же.^^Она закрыла глаза и задремала.' end, }; }; { '#починил', { cond = function() return char.took_kathy == true end, '…ваша внучка просится к нам на стажировку. Хочет стать инженером.', [[Ах, вы, наверное, о моей правнучке. Вы правда возьмёте её на работу? С зарплатой? -- Ну, у ]]..plural('меня', 'нас')..[[ есть несколько вариантов-- -- Катя! Собирайся, ты едешь в город! Ну что ж, портить технику она умеет. Значит, научим чинить. ]], next = '#разговор' }; { '…отправьте внучку в городскую школу. Такая умная девочка должна хорошо себя показать.', [[-- Ах, мы, наверное, о моей правнучке. Но у неё хорошая робоучительница, ещё моего сына учила. -- Городскую. Школу. С реальными учениками. -- Я подумаю. ]], next = '#разговор' }; { '…нет, забудьте.', 'Она пожала плечами: -- Как скажете.', next = '#разговор' } } } } dlg { nam = 'cho_dlg2', disp = false, dsc = [[-- Да-да, конечно.^^ Она провела вас в большой сарай, где пылился высокий автоматический зерноуборочный комбайн. -- Вот и наш больной. Только вы, пожалуйста, можете его починить побыстрее, а то у нас урожай уже скоро. ]], decor = [[ Старушка Чо внимательно смотрела на вас. В её глазах вы видели, что от починки этого сельхозкомбайна зависело несколько жизней. ]], obj = { { onempty = function() walk('start4') end, { 'Что точно случилось?', '-- Мы его заводим, а он замёрз! После зимы у мужа обычная машина не заводится, не то что роботы.' }, { 'У вас же столько роботов. Неужели вы не справитесь без комбайна?', [[-- Всего семеро, и они обычно упаковывают и складывают. Если они будут ещё и косить, мы не управимся до осени. Урожай сгниёт под дождями.]] }, { 'Да, '..pronoun_1()..' -- '..engineer()..[[. Но я могу только определить проблему, у вас же нет мастерской или инструментов.]], '-- Вы знаете, я могу попросить соседей. У Павла в подвале во время войны была мастерская.' }, { 'Давно он у вас?', [[-- Ну, лет двадцать уже, наверное. Никогда не ломался. Но у меня на него пожизненная гарантия.]] } } } } -- Починка комбайна dlg { nam = 'start4', disp = false, dsc = function() char.quests.chos = 1 return [[ Комбайн оказался ещё довоенным. Вы копались не меньше часа, пока не нашли износившийся программаторный блок.^^ -- Ну что же, надо чинить. Случай гарантийный, всё за счёт фирмы. Но придётся забрать в город, в мастерскую. Программатор сломался.^ -- Програ-что?^ -- Ну, это очень старая плата передвижения. Раньше везде стояла, но сейчас её надо заказывать.^ -- Ходули, что ли? А может, у нас поищем? Здесь много у кого есть техника.^ -- Нет, надо заказывать. Не волнуйтесь, через месяц придёт.^ -- Слушайте, но нам же нельзя ждать целый месяц, урожай за порогом. Хотите, я заплачу? -- Давайте так: ]]..pronoun_1()..[[ здесь ещё ]]..plural('задерживаюсь', 'задерживаемся')..[[. Возможно, здесь, на месте, что-то получится. Но после урожая -- сразу в мастерскую на техосмотр.^ -- Спасибо. -- она улыбнулась. -- Попробуйте спросить Пашу? У него много техники, он поможет. ]] end, decor = [[ Вы вернулись к дому. Стоит ли спросить что-то ещё? ]], obj = {{ onempty = function() char.quests.kathy = 0 -- place('kathy', here()) -- lifeon('kathy') p "Видимо, разговор закончен." lifeon('call-unknown') walk('chos') end, {'Где живёт этот Павел?', [[Это такой зелёный домик, вы его не пропустите. Как позвоните в домофон, Паша вас пустит. Он — добрый друг нашей семьи.]]} }} } obj { nam = 'kathy', disp = 'Катя', dsc = "Рядом с вами стояла {Катя}.", talk = function() return walk('kathy_dlg') end, life = function(self) if player_moved() then place('kathy', here()) end local reactions = { 'Катя зевнула.'; 'Катя стучала серым кроссовком.'; 'Катя смотрела на что-то в небе.'; } if rnd(10) > 4 then -- вероятность реакции 40% p(rndstr(reactions)) return end end, take = function() pn 'Плохая идея.' return false end, act = 'Чумазая китаянка со спутанными волосами.' } dlg { nam = 'kathy_dlg'; decor = [[ Вы стояли и смотрели на Катю. А Катя смотрела на вас. ]]; obj = {{ onempty = function() return "Она отворачивается. Видимо, разговор закончен." end, { '#привет', 'Привет.', function() disable '#привет' return 'Привет.' end }; { 'Покажешь дорогу до этого Павла?', function() walk 'pavels' return 'Ну пошли.' end, }; { 'Ты можешь подождать где-нибудь? Кое-какие дела.', function() lifeoff 'kathy' return '-- Ну хорошо. Я буду у себя дома, если что.' end, }; { always = true, function() return pronoun_1()..' '..plural('хочу', 'хотим')..' кое-что посмотреть. Можешь подождать здесь?' end, function() lifeoff('kathy') place('kathy', 'chos') return "Хорошо. Но я лучше вернусь домой, бабушка будет волноваться." end } }} } obj { nam = 'call-unknown', disp = false, timer = 0, life = function(s) s.timer = s.timer + 1 char.call = 'unknown' if s.timer < 8 then pn 'У вас звонит телефон.' -- не могу сделать ссылкой end if s.timer == 8 then char.call = nil lifeoff(s) end end, } -- TODO придумать способ вернуть игрока на 2 шага назад (walkout дважды не работает) local backtocho = function() walk(from(from(here()))) return 'Бросили трубку.' end dlg { nam = 'caller-unknown', disp = false, decor = function() return [[В трубке говорил незнакомый девичий голос.^^ -- Ты не ]]..wrong_gendered('должен', 'должна')..[[ чинить этот комбайн. Погибнут люди.]] end, obj = {{ { 'Иди ты к чорту.',backtocho }; { 'Ну хорошо.',backtocho }; { 'А мне-то что?',function() changeop('reputation', -10) return backtocho() end }; { 'Да это же просто комбайн.',backtocho }; }} } dlg { nam = 'combine', enter = function() remove('programmator') return true end, -- Здесь я хотел вставить интерактив но не придумал ни-че-го dsc = [[ Ремонт двигался прекрасно; техника была достойной, несмотря на возраст и то, что почти год стояла в сарае. Вы подготовились вывезти машину на поездку вокруг сарая.^^ И тут начались выстрелы. После войны вы моментально реагировали на громкий хлопок и металлический «бзынь» в сантиметре от руки. Вы спрятались в кабине, но вам не было видно, что происходит на входе в сарай.^^ -- Я говорила вам не чинить этот комбайн! С другой стороны, надо было только считать выстрелы. ]], shots = 4, update = function(s) s.shots = s.shots - 1 if s.shots == 3 then s.decor = 'Три.' end if s.shots == 2 then s.decor = 'Два.' end if s.shots == 1 then s.decor = 'Один.' end end, decor = 'Четыре.', obj = { { { 'Кто ты?', function() here().update(here()) return '-- Ха! [паф] Так я тебе и сказала.' end }; { 'Чего ты хочешь?', function() here().update(here()) walk('combine2') return [[-- Никаких урожаев. [бзынь!] Бросить эту дыру. Собрать вещи и уехать отсюда.]] end, next = '#second' }; { 'Какое тебе дело до древних сельхозкомбайнов?', function() here().update(here()) walk('combine2') return [[-- Нет комбайна [бзынь!] нет урожая. Можно будет бросить эту дыру. Уехать отсюда.]] end, } }; } } dlg { nam = 'combine2', -- Здесь я хотел вставить интерактив но не придумал ни-че-го dsc = [[ Вы резко выпрыгиваете из кабины и прячетесь за машиной. В дверях стоит девочка, на вид лет пятнадцати, китаянка. В руках дрожит пневматический пистолет. ]], obj = {{ { 'Это ты испортила схемы машины?', 'Нет! И опять залью её чаем!' }; { cond = function() return char.actions > 40 end, '{}[Оригинальность > 60%] Хочешь, я возьму тебя с собой в город? Большой город. Сейчас.', '' }; { cond = function() return char.actions <= 40 end, '[Оригинальность > 60%] Хочешь, я возьму тебя с собой в город? Большой город. Сейчас.', function() char.quests.chos = 4 take('gun') char.took_kathy = true walk('chos'); return [[-- Вы… вы серьёзно?^ Она всхлипнула.^ -- Если ты не против, ]]..pronoun_1()..' '..plural('хочу', 'хотим')[[ попасть в город ]].. plural('невредимым', 'невредимыми')..[[.^^ Вы вышли из-за комбайна и направились к ней.^^ -- Но что же скажет-^ -- ]]..plural('Я разберусь', 'Мы разберёмся')..[[. А теперь дай сюда эту штуку и иди собирай вещи.^ -- Я пойду с вами! Буду везде ходить и помогать, со всеми вас познакомлю.^ -- Нет уж. Когда ]]..plural('я поеду', 'мы поедем')..[[ из города, ты узнаешь, хорошо? Как тебя зовут?^ -- Катя.^^ Девочка тут же юркнула наружу.^ Вы покрутили в руках оружие, закрыли подачу газа. Опасные игрушки. Как она здесь живёт, если пошла на такой кошмар?]] end }; { '<Выйти и выбить оружие.>', function() char.quests.chos = 4 take('gun') char.took_kathy = false wounds() return [[ В вас давно не стреляли. Вы уже забыли, каково это. Это больно. Очень больно, но вы знали, что не смертельно. Вы подошли к девочке и вырвали пистолет из её рук. ]] end, next = '#end' }; }; { '#end', { function() return plural('Я не скажу', 'Мы не скажем')..' твоей бабушке, а ты перестанешь ломать технику.' end, function() walk('chos'); return [[Девочка кивнула и быстро исчезла в дверях. Вы покрутили в руках оружие, закрыли подачу газа. Опасная игрушка. ]] end, }; { 'Вырастешь - сама уедешь. Урожай здесь ни при чём.', function() walk('chos'); return [[Девочка кивнула и быстро исчезла в дверях. Вы покрутили в руках оружие, закрыли подачу газа. Опасная игрушка. ]] end, }; { 'Может, ты должна быть здесь. Помогать семье, учиться жизни, творить добро.', function() walk('chos'); return [[Девочка кивнула и быстро исчезла в дверях. Вы покрутили в руках оружие, закрыли подачу газа. Опасная игрушка. ]] end, }; } } } obj { nam = 'gun', disp = 'пистолет', mech = true, inv = 'Пневматический автоматический пистолет с настройкой газовой струи.' }