mirror of
https://gitlab.com/Oreolek/duel.git
synced 2024-06-30 13:55:10 +03:00
521 lines
20 KiB
Lua
521 lines
20 KiB
Lua
-- + можно выкупить программатор в обмен на ___ у роботов
|
||
|
||
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 = 'Пневматический автоматический пистолет с настройкой газовой струи.'
|
||
}
|