1
0
Fork 0
mirror of https://gitlab.com/Oreolek/duel.git synced 2024-06-30 22:05:07 +03:00
duel/main3.lua

393 lines
13 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--$Author:Alexander Yakolev, 2017
--$Version:1.0
require "format"
require "dbg"
require 'tools'
declare "char" ({})
format.dash = true
format.quotes = true
format.para = true
-- https://www.google.ru/maps/place/%D0%9C%D0%B5%D0%BA%D1%81%D0%B8%D0%BA%D0%B0/@22.8355052,-105.0808555,16z/data=!4m5!3m4!1s0x84043a3b88685353:0xed64b4be6b099811!8m2!3d23.634501!4d-102.552784
-- Необходимые правки стиля перед релизом:
-- 1. Убрать курсив от ответов на диалоги, чтобы они просто слились с основным текстом
-- 2. Убрать вывод текста ответов на первый из диалогов (выбор обращения)
-- 3. Сделать ссылки в инвентаре не по двойному, а по одинарному щелчку
-- 4. Отключить автосписок инвентаря в области, собственно, инвентаря
-- 5. вернуть txtem() и вообще функции форматирования
init = function ()
map = obj {
nam = "Карта",
inv = function()
walk('map')
end
}
take(map)
quests = obj {
nam = "Квесты",
inv = function()
walk('quests')
end
}
take(quests)
inventory = obj {
nam = "Инвентарь",
inv = function()
walk('inventory')
end
}
take(inventory)
char.act = nil
end
obj {
nam = 'back',
act = function()
return walkout()
end
}
local markers = {
chos = "626,666",
}
room {
nam = 'map',
disp = "Карта",
hideinv = true,
enter = function (here, from)
char.lastroom = from.nam
end,
pic = function()
local map = 'images/satellite.jpg'
if markers[char.lastroom] then
map = map .. ';images/marker.png@' .. markers[char.lastroom]
end
return map
end,
decor = [[
Вы сверяетесь с картой.^^
{back|Назад}
]],
obj = {'back'}
}
dlg {
nam = 'quests',
disp = "Квесты",
hideinv = true,
decor = [[
Вы вспоминаете обо всём, что нужно сделать.^^
]],
obj = {{
{
true,
cond = function()
return char.act == nil
end,
'Нет активных квестов',
'Пройдите чуть подальше по сюжету и возвращайтесь.'
},
{
true,
cond = function()
return char.act == 1 and char.kathy == true
end,
'Найти дом Павла',
'Вы должны найти дом Павла при помощи своего проводника и попросить у него доступ в мастерскую.'
},
{
true,
'Назад',
function() walkout() end,
},
}}
}
room {
nam = 'inventory',
disp = "Инвентарь",
hideinv = true,
decor = function()
local dsc = 'Пока что ваши карманы пусты.'
return dsc..'^^{back|Назад}'
end,
obj = {'back'}
}
dlg {
nam = 'main',
dsc = [[
От автобусной остановки до дома Чо было полтора километра.
По пути вы осматривали окрестности: высокая гора, бесконечные пашни
и маленькое село вокруг единственной колонки с водой.^^
Семья Чо отгородилась от села широкой полосой деревьев.
Их пашня не отличалась от остальных: такое же чёрное поле с рядами
роботов, которые молча копались в земле. Перед полем стоял
невысокий красновато-чёрный дом с двумя окнами.^^
На стук в дверь открыла низенькая черноволосая девушка.^^
-- А, так вы тот инженер из города? Проходите, мы сейчас всё покажем.
Я же правильно говорю, вы же инженер?
]],
obj = {
{
{
'Инженер (она)',
function()
char.gender = "she";
char.plural = false;
walk('start2');
return true;
end
},
{
'Инженер (он)',
function()
char.gender = "he";
char.plural = false;
walk('start2');
return true;
end
},
{
'Инженер (оно)',
function()
char.gender = "it";
char.plural = false;
walk('start2');
return true;
end
},
{
'Инженер (они)',
function()
char.gender = "they";
char.plural = false;
walk('start2');
return true;
end
},
{
'Инженеры (они)',
function()
char.gender = "they";
char.plural = true;
walk('start2');
return true;
end
}
}
}
}
dlg {
nam = 'start2',
dsc = function()
return [[
-- А, это хорошо что ]]..engineer()..[[.
Мы уже думали, что наша гарантия всё.
Это же такие старые роботы, всё время в поле.^^
Она вышла из дома и пригласила вас за собой.
Вы шли вдоль поля; металлические рабочие не обращали на вас внимания.^^
-- Вы знаете, у нас же нет других машин.
Когда-то хотели купить что-нибудь для дома, но тут эта война с Луной…
Вы были на войне?
]]
end,
obj = {
{
{
function()
return [[Цех РБ-23, с первого до последнего дня. Чинил]]..endings()..[[ ремонтных ботов.]]
end,
function()
char.earth = 1;
p '-- Доблесть рабочих, конечно.';
walk('start3');
return true;
end
}, -- + к симпатизирующим Земле
{
function()
return 'Нет, '..pronoun_1()..' не был'..endings()..'.'
end,
function()
char.earth = 0;
p '-- А вы не… Хотя это не моё дело.';
walk('start3');
return true;
end
},
-- нет эффекта
{
'Да, но Луна проиграла.',
function()
char.earth = -1;
p "-- Ой, вы из этих… Извините."
walk('start3');
return true;
end
},
-- + к симпатизирующим Луне
},
},
}
dlg {
nam = 'start3',
dsc = [[
(курсивом) Сюда, пожалуйста.^^
Она провела вас в большой сарай, где пылился высокий автоматический сельхозкомбайн.
-- Вот и наш больной. Мы прогрели его весной, а он и не едет.
Вы же ]]..engineer()..[[, вы сможете его починить?
А то мы потеряем урожай.
]],
decor = [[
Старушка Чо внимательно смотрит на вас.
В её глазах вы читаете, что от починки этого комбайна зависит несколько жизней.
]],
onempty = function()
walk('start4')
end,
obj = {
{
'Зачем вы заводили комбайн весной?',
'-- Он замёрз! После зимы у мужа обычная машина не заводится, не то что роботы.'
},
{
'У вас же столько роботов. Неужели вы не справитесь без комбайна?',
[[Всего семеро, и они обычно упаковывают и складывают.
Если они будут ещё и косить, мы не управимся до осени.
Урожай сгниёт под дождями.]]
},
{
'Да, '..pronoun_1()..' -- '..engineer()..[[.
Но я могу только определить проблему, у вас же нет мастерской или инструментов.]],
'-- Вы знаете, я могу попросить соседей. У Павла в подвале во время войны была мастерская.'
},
{
'Давно он у вас?',
[[Ну, лет двадцать уже, наверное.
То есть, я хотела сказать, девятнадцать.
Гарантия же ещё действует, правда?]]
}
}
}
dlg {
nam = 'start4',
dsc = function()
return [[
Комбайн оказался старым, очень старым.
Вы копались не меньше часа, пока не нашли износившийся программаторный блок.^^
-- Ну что же, надо чинить. Случай гарантийный, всё за счёт фирмы. Но придётся забрать в город, в мастерскую.^^
-- А нельзя прямо здесь? У нас же урожай скоро!^^
-- Нет, это…^^
-- Послушайте. У меня сестра работает в Берёзовке, я знаю что нужно.
Вас устроит… десять тысяч?^^
-- В смысле?^^
-- Подождите, не отказывайтесь. Десять новых кусков. Золотом. И вы почините это здесь.^^
Вы задумались. На десять кусков можно было бы купить новый комбайн - конечно, не такой мощный, но если продать золото на Луну… Был один хитрый выход.^^
-- Давайте так: ]]..pronoun_1()..[[ здесь на три дня. Если за эти три дня что-то получится… Но после урожая -- сразу в мастерскую, нужен основательный ремонт. У кого, вы говорили, здесь мастерская?^^
-- Спасибо! -- она улыбнулась. -- Я скажу внучке, чтобы вас проводила. Сейчас.^^
Вы вернулись к дому. Старушка исчезла за дверью, а затем быстро вернулась с чумазой девушкой лет семнадцати.
-- Это Катя, она вас проводит. Катя, до Павла и обратно, хорошо?^^
Девушка хотела что-то возразить, но передумала, опустила голову и тихо ответила:^^
-- Хорошо, бабушка.
]]
end,
decor = [[
Вы стояли и смотрели на Катю. А Катя смотрела на вас.^^
Между вами - тишина.
]],
onempty = function()
char.act = 1
walk('chos')
end,
}
room {
nam = 'exit_west',
title = 'Дорога на запад',
way = {'intersection', 'pavels', 'abandoned'},
decor = [[
Вы стоите на окраине Жестианы.
Прямая автодорога идёт на запад, где начинается лес.
В лесу она тут же делает крутой поворот.^^
Отсюда видны два здания в стороне.
]]
}
room {
nam = 'abandoned',
disp = 'Заброшенный дом',
decor = [[
]]
}
room {
nam = 'pavels',
disp = 'Павлов дом',
decor = [[
]]
}
room {
nam = 'exit_north',
title = 'Дорога на север',
way = {'town'},
decor = [[
Вы стоите на окраине Жестианы.
Прямая автодорога идёт на север.
Здесь от неё отходит небольшой заезд на запад.
]]
}
room {
nam = 'chos',
disp = 'Дом Чо',
way = {'town', 'intersection'},
dsc = [[
Небольшой дом с большой пашней.
]]
}
room {
nam = 'intersection',
disp = 'Перекрёсток',
decor = [[]],
way = {'exit_west', 'chos', 'town'},
exit = function()
end
}
room {
nam = 'town',
title = 'Жестиана',
way = {'exit_north', 'chos', 'intersection', 'factory'},
decor = [[]]
}
room {
nam = 'factory',
disp = [[Здание на горе]],
way = {'town'},
dsc = [[
Вы забираетесь на склон горы. Здесь стоит
Отсюда хорошо видна вся Жестиана.
]]
}