1
0
Fork 0
mirror of https://gitlab.com/Oreolek/duel.git synced 2024-06-29 05:15:10 +03:00

Новое начало игры

This commit is contained in:
Alexander Yakovlev 2017-03-07 13:51:27 +07:00
parent 1ee62545c9
commit efe02534d1
4 changed files with 181 additions and 158 deletions

188
intro.lua
View file

@ -1,8 +1,10 @@
room { room {
nam = 'main', nam = 'main',
disp = false, disp = 'Ремонтник',
decor = '^^'..fmt.c('{start|Начать игру}')..[[^^ decor = '^^'..fmt.c('{start|Начать игру}')..[[^^
Игра использует код Петра Косых по лицензии MIT (модуль ]]..fmt.em('proxymenu)')..[[ Игра использует код Петра Косых по лицензии MIT (модуль ]]..fmt.em('proxymenu)')..[[^^
F2 - сохранить игру^
F3 - загрузить игру
]], ]],
obj = { obj = {
obj { obj {
@ -14,26 +16,31 @@ room {
dlg { dlg {
nam = 'intro', nam = 'intro',
disp = false, disp = 'Ремонтник',
dsc = [[ dsc = [[
От автобусной остановки до дома Чо было полтора километра. Скоростная магистраль сменилась автодорогой, с которой вы съехали на просёлочный тракт.
По пути вы осматривали окрестности: высокая гора, бесконечные пашни Через несколько километров от дороги осталась только линия на карте навигатора:
и маленькое село вокруг единственной колонки с водой.^^ это было больше похоже на русские горки.^^
Семья Чо отгородилась от села широкой полосой деревьев. Жестиана стояла далеко от цивилизации, но вызов есть вызов.
Их пашня не отличалась от остальных: такое же чёрное поле с рядами Вам надо было найти Анжелину Чо, починить всё что у неё по гарантии и быстро вернуться.
роботов, которые молча копались в земле. Перед полем стоял Если бы не эти ямы, это могла быть приятная поездка за город.^^
невысокий красновато-чёрный дом с двумя окнами.^^
На стук в дверь открыла низенькая черноволосая девушка.^^ После одного очень заметного «ух» навигатор вдруг дрогнул и отключился.
Вы попробовали вести прямо, но потеряли направление в однообразных полях и лесках.
На счастье, на краю одного из лесков вы заметили металлический блеск.
-- А, так вы тот инженер из города? Проходите, мы сейчас всё покажем. Это был робот неизвестной модели, по виду социальный.
Я же правильно говорю, вы же инженер? У него не хватало левой руки, а глаза были закрыты за солнцезащитными очками.
Он говорил скрипуче, с сильным акцентом; вам было трудно его понять без переводчика.
-- З-с-ждравствуйте. По моему протоколу я долж-з-сен уточнить, какое обращ-сение вам
подходит наилуц-с-шим образом. Что вы предпоц-читаете?
]], ]],
obj = { obj = {
{ {
{ {
'Инженер (она)', 'Инженер-ремонтник (она)',
function() function()
char.gender = "she"; char.gender = "she";
char.plural = false; char.plural = false;
@ -42,7 +49,7 @@ dlg {
end end
}, },
{ {
'Инженер (он)', 'Инженер-ремонтник (он)',
function() function()
char.gender = "he"; char.gender = "he";
char.plural = false; char.plural = false;
@ -51,7 +58,7 @@ dlg {
end end
}, },
{ {
'Инженер (оно)', 'Инженер-ремонтник (оно)',
function() function()
char.gender = "it"; char.gender = "it";
char.plural = false; char.plural = false;
@ -60,7 +67,7 @@ dlg {
end end
}, },
{ {
'Инженер (они)', 'Инженер-ремонтник (они)',
function() function()
char.gender = "they"; char.gender = "they";
char.plural = false; char.plural = false;
@ -69,7 +76,7 @@ dlg {
end end
}, },
{ {
'Инженеры (они)', 'Инженеры-ремонтники (они)',
function() function()
char.gender = "they"; char.gender = "they";
char.plural = true; char.plural = true;
@ -98,136 +105,33 @@ dlg {
disp = false, disp = false,
dsc = function() dsc = function()
return [[ return [[
-- А, это хорошо что ]]..engineer()..[[. -- Добро пож-з-саловать в Ж-жестиану, ]]..official()..[[.
Мы уже думали, что наша гарантия всё. Вам требуец-тся помоц-щь?
Это же такие старые роботы, всё время в поле.^^
Она вышла из дома и пригласила вас за собой.
Вы шли вдоль поля; металлические рабочие не обращали на вас внимания.^^
-- Вы знаете, у нас же нет других машин.
Когда-то хотели купить что-нибудь для дома, но тут эта война с Луной
Вы были на войне?
]] ]]
end, end,
obj = { obj = {
{ {
{ {
function() return 'Где '..pronoun_1()..'?'; end,
'-- Добро поз-саловать в Зжсестиану. Деревня Малогхо раийона, население дефхятнадтцат\' человек.'
};
{
function() return 'Как проехать до Жестианы? '..plural('У меня', 'У нас')..' в машине навигатор отключился.'; end,
function() function()
return [[Цех РБ-65, с первого до последнего дня. Чинил]]..endings()..[[ ремонтных ботов.]] walk('exit_west');
end, return [[-- Давайте я показжу. Пожалуйцта, встан'те сюда.^^
function() Вы выходите из машины и встаёте рядом с роботом. Он показывает на солнце.
char.war = "earth"; -- Там восток. Жестиана на юге.^^
p '-- Доблесть рабочих, конечно.'; После этого он поворачивается и фыркает:^
walk('start3'); -- Обнаружен технологический объект.^
return true; Вы оборачиваетесь и видите, как робот залезает в вашу машину и заводит её:^
end -- Технологический объект реквизирован. Во славу добра.^
}, -- + к симпатизирующим Земле -- Эй!^^
{ Вы бежите, стараясь догнать машину, но робот уже уезжает, идеально обходя все кочки и ухабы.^^
'Да, но Луна проиграла.', Вам остаётся только следовать пешком. На юг.
function()
char.war = "moon";
p "-- Ой, вы из этих… Извините."
walk('start3');
return true;
end
},
-- + к симпатизирующим Луне
},
},
}
dlg {
nam = 'start3',
disp = false,
dsc = [[
(курсивом) Сюда, пожалуйста.^^
Она провела вас в большой сарай, где пылился высокий автоматический сельхозкомбайн.
-- Вот и наш больной. Мы прогрели его весной, а он и не едет.
Вы же ]]..engineer()..[[, вы сможете его починить?
А то мы потеряем урожай.
]],
decor = [[
Старушка Чо внимательно смотрит на вас.
В её глазах вы читаете, что от починки этого комбайна зависит несколько жизней.
]],
obj = {{
onempty = function()
walk('start4')
end,
{
'Зачем вы заводили комбайн весной?',
'-- Он замёрз! После зимы у мужа обычная машина не заводится, не то что роботы.'
},
{
'У вас же столько роботов. Неужели вы не справитесь без комбайна?',
[[-- Всего семеро, и они обычно упаковывают и складывают.
Если они будут ещё и косить, мы не управимся до осени.
Урожай сгниёт под дождями.]]
},
{
'Да, '..pronoun_1()..' -- '..engineer()..[[.
Но я могу только определить проблему, у вас же нет мастерской или инструментов.]],
'-- Вы знаете, я могу попросить соседей. У Павла в подвале во время войны была мастерская.'
},
{
'Давно он у вас?',
[[-- Ну, лет двадцать уже, наверное.
То есть, я хотела сказать, девятнадцать.
Гарантия же ещё действует, правда?]]
}
}}
}
dlg {
nam = 'start4',
disp = false,
dsc = function()
return [[
Комбайн оказался ещё довоенным.
Вы копались не меньше часа, пока не нашли износившийся программаторный блок.^^
-- Ну что же, надо чинить. Случай гарантийный, всё за счёт фирмы. Но придётся забрать в город, в мастерскую.^^
-- А нельзя прямо здесь? У нас же урожай скоро!^^
-- Нет, это…^^
-- Послушайте. У меня сестра работает в Берёзовке, я знаю что нужно.
Вас устроит десять тысяч?^^
-- В смысле?^^
-- Подождите, не отказывайтесь. Десять новых кусков. Золотом. И вы почините это здесь.^^
Вы задумались. На десять кусков можно было бы купить новый комбайн - конечно, не такой мощный, но если продать золото на Луну Был один хитрый выход.^^
-- Давайте так: ]]..pronoun_1()..[[ здесь на три дня. Если за эти три дня что-то получится… Но после урожая -- сразу в мастерскую, нужен основательный ремонт. У кого, вы говорили, здесь мастерская?^^
-- Спасибо! -- она улыбнулась. -- Я скажу внучке, чтобы вас проводила. Сейчас.^^
Вы вернулись к дому. Старушка исчезла за дверью, а затем быстро вернулась с чумазой девушкой лет семнадцати.
-- Это Катя, она вас проводит. Катя, до Павла и обратно, хорошо?^^
Девушка хотела что-то возразить, но передумала, опустила голову и тихо ответила:^^
-- Хорошо, бабушка.
]] ]]
end, end,
decor = [[ };
Вы стояли и смотрели на Катю. А Катя смотрела на вас.^^ };
}
Между вами - тишина.
]],
obj = {{
onempty = function()
char.quests.main = 1
char.quests.kathy = 0
p "Она отворачивается. Видимо, разговор закончен."
walk('chos')
end,
{'Привет.', 'Привет.'}
}}
} }

View file

@ -2,6 +2,7 @@
--$Version:1.0 --$Version:1.0
require "fmt" require "fmt"
require "proxymenu" require "proxymenu"
require "noinv"
declare "isdebug" (true) declare "isdebug" (true)
if isdebug then if isdebug then
@ -499,3 +500,101 @@ dlg {
Он одет в кожаную куртку, а на шее он носит длинный розовый плащ, который свисает до колен. Он одет в кожаную куртку, а на шее он носит длинный розовый плащ, который свисает до колен.
]] ]]
} }
-- Диалог с Анжелиной Чо
dlg {
nam = 'start3',
disp = false,
dsc = [[
(курсивом) Сюда, пожалуйста.^^
Она провела вас в большой сарай, где пылился высокий автоматический сельхозкомбайн.
-- Вот и наш больной. Мы прогрели его весной, а он и не едет.
Вы же ]]..engineer()..[[, вы сможете его починить?
А то мы потеряем урожай.
]],
decor = [[
Старушка Чо внимательно смотрит на вас.
В её глазах вы читаете, что от починки этого комбайна зависит несколько жизней.
]],
obj = {{
onempty = function()
walk('start4')
end,
{
'Зачем вы заводили комбайн весной?',
'-- Он замёрз! После зимы у мужа обычная машина не заводится, не то что роботы.'
},
{
'У вас же столько роботов. Неужели вы не справитесь без комбайна?',
[[-- Всего семеро, и они обычно упаковывают и складывают.
Если они будут ещё и косить, мы не управимся до осени.
Урожай сгниёт под дождями.]]
},
{
'Да, '..pronoun_1()..' -- '..engineer()..[[.
Но я могу только определить проблему, у вас же нет мастерской или инструментов.]],
'-- Вы знаете, я могу попросить соседей. У Павла в подвале во время войны была мастерская.'
},
{
'Давно он у вас?',
[[-- Ну, лет двадцать уже, наверное.
То есть, я хотела сказать, девятнадцать.
Гарантия же ещё действует, правда?]]
}
}}
}
-- Починка комбайна
dlg {
nam = 'start4',
disp = false,
dsc = function()
return [[
Комбайн оказался ещё довоенным.
Вы копались не меньше часа, пока не нашли износившийся программаторный блок.^^
-- Ну что же, надо чинить. Случай гарантийный, всё за счёт фирмы. Но придётся забрать в город, в мастерскую.^^
-- А нельзя прямо здесь? У нас же урожай скоро!^^
-- Нет, это…^^
-- Послушайте. У меня сестра работает в Берёзовке, я знаю что нужно.
Вас устроит десять тысяч?^^
-- В смысле?^^
-- Подождите, не отказывайтесь. Десять новых кусков. Золотом. И вы почините это здесь.^^
Вы задумались. На десять кусков можно было бы купить новый комбайн - конечно, не такой мощный, но если продать золото на Луну Был один хитрый выход.^^
-- Давайте так: ]]..pronoun_1()..[[ здесь на три дня. Если за эти три дня что-то получится… Но после урожая -- сразу в мастерскую, нужен основательный ремонт. У кого, вы говорили, здесь мастерская?^^
-- Спасибо! -- она улыбнулась. -- Я скажу внучке, чтобы вас проводила. Сейчас.^^
Вы вернулись к дому. Старушка исчезла за дверью, а затем быстро вернулась с чумазой девушкой лет семнадцати.
-- Это Катя, она вас проводит. Катя, до Павла и обратно, хорошо?^^
Девушка хотела что-то возразить, но передумала, опустила голову и тихо ответила:^^
-- Хорошо, бабушка.
]]
end,
decor = [[
Вы стояли и смотрели на Катю. А Катя смотрела на вас.^^
Между вами - тишина.
]],
obj = {{
onempty = function()
char.quests.main = 1
char.quests.kathy = 0
p "Она отворачивается. Видимо, разговор закончен."
walk('chos')
end,
{'Привет.', 'Привет.'}
}}
}

View file

@ -3,24 +3,24 @@ init = function ()
std.dlg.noinv = true std.dlg.noinv = true
game.player = std.menu_player {} game.player = std.menu_player {}
char.quests = {} char.quests = {}
take(menu { place(menu {
nam = "Карта", nam = "Карта",
menu = function() menu = function()
walk('map') walk('map')
end end
}) }, me())
take(menu { place(menu {
nam = "Квесты", nam = "Квесты",
menu = function() menu = function()
walk('quests') walk('quests')
end end
}) }, me())
take(menu { place(menu {
nam = "Инвентарь", nam = "Телефон",
menu = function() menu = function()
walk('inventory') walk('inventory')
end end
}) }, me())
char.act = nil char.act = nil
place( proxy_menu { place( proxy_menu {
disp = 'ОСМОТРЕТЬ'; disp = 'ОСМОТРЕТЬ';
@ -116,3 +116,15 @@ rndalt = function(yes, no)
end end
return no return no
end end
official = function()
if char.gender == 'she' then
return 'уважаемая'
end
if char.gender == 'he' then
return 'уважаемый'
end
if char.gender == 'it' then
return 'уважаемое'
end
return 'уважаемые'
end

24
ui.lua
View file

@ -51,9 +51,17 @@ dlg {
cond = function() cond = function()
return char.act == nil return char.act == nil
end, end,
'Нет активных квестов', 'Найти Анжелину Чо',
'Пройдите чуть подальше по сюжету и возвращайтесь.' 'Вы приехали по гарантийному вызову. Вам надо найти Анжелину Чо, починить всё что у неё есть по гарантии и вернуться.'
}, };
{
always = true,
cond = function()
return char.act == nil
end,
'Вернуть автомобиль',
'Неизвестный робот посчитал ваш автомобиль за бесхозную технику. Скорее всего, он где-то в этой деревне.'
};
{ {
always = true, always = true,
cond = function() cond = function()
@ -63,7 +71,7 @@ dlg {
[[Мужчина в Клубе Памяти интересуется роботами на северной ферме. [[Мужчина в Клубе Памяти интересуется роботами на северной ферме.
Их хозяин умер, и теперь ценные работники не подчиняются никому. Их хозяин умер, и теперь ценные работники не подчиняются никому.
Он хочет, чтобы вы настроили роботов на его голос.]] Он хочет, чтобы вы настроили роботов на его голос.]]
}, };
{ {
always = true, always = true,
cond = function() cond = function()
@ -71,21 +79,21 @@ dlg {
end, end,
'Найти дом Павла', 'Найти дом Павла',
'Вы должны найти дом Павла при помощи своего проводника и попросить у него доступ в мастерскую.' 'Вы должны найти дом Павла при помощи своего проводника и попросить у него доступ в мастерскую.'
}, };
{ {
always = true, always = true,
'Назад', 'Назад',
function() walkout() end, function() walkout() end,
}, };
}} }}
} }
room { room {
nam = 'inventory', nam = 'inventory',
disp = "Инвентарь", disp = "Телефон",
hideinv = true, hideinv = true,
decor = function() decor = function()
local dsc = 'Пока что ваши карманы пусты.' local dsc = 'Здесь будут все телефоны и заметки, которые вы запишете в телефон.'
return dsc..'^^{back|Назад}' return dsc..'^^{back|Назад}'
end, end,
obj = {'back'} obj = {'back'}