1
0
Fork 0
This repository has been archived on 2019-04-06. You can view files and clone it, but cannot push or open issues or pull requests.
steed-preface/main.lua

206 lines
12 KiB
Lua
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

-- $Name:Введение$
instead_version "1.3.1"
require "dash" -- '--' replace :)
require "para" -- be more "Russian"
require "quotes"
require "theme"
require "dbg"
game.use = 'В приключенческих играх принято обдумывать поступки. Беспорядочное щёлканье по всем ссылкам и набор бессмысленных фраз ни к чему хорошему вас не приведут.';
set_music('bardtale.xm');
dofile('objects.lua');
main = room {
nam = 'Добро пожаловать',
act = function() -- only one vobj, no check, just goto
goto('act1r1');
end,
dsc = txtc("Эта игра поможет вам сориентироваться в Steed.")..[[^^
Steed -- это движок для создания игр. Он основан на коде другого движка, INSTEAD. По сравнению с INSTEAD Steed предлагает несколько новых возможностей; все игры от INSTEAD запускаются здесь без изменений.^^
Прежде всего надо сказать, что возможности Steed уходят далеко за пределы того, что будет показано в этой игре. Кроме текстовых приключений (управляемых мышкой или командами), на нём возможно создавать аркады, головоломки и даже чисто графические квесты.^^
Каждая игра состоит из сцен. Сейчас вы читаете описание такой сцены. ^^
Слова <<Добро пожаловать>>, подсвеченные красным цветом -- это заголовок сцены. Каждая сцена должна иметь заголовок, но не обязательно должна показывать его. ^^
Сцена может содержать несколько объектов, с которыми может действовать игрок. В этой сцене находится только один объект -- ссылка <<Дальше>>. Нажмите на неё, чтобы продолжить.]],
obj = {
vobj('continue', '{Дальше}'),
},
};
act1r1 = room {
nam = 'Действие первое.',
enter = function()
lifeon('act1r1');
theme.inv.geom(1100, 10, 180, 730);
theme.win.geom(60, 10, 1000, 730);
theme.inv.color(nil, "#800000", "#800000");
end,
life = function()
if (arcade._spent == true) then
lifeoff('act1r1');
return (act1r1.obj:add(vway('continue', [[^^Это было просто, не правда ли? Но это была всего лишь одна сцена. Сейчас вы узнаете, как вести себя в более просторном окружении. Пожалуйста, пройдите {дальше.}]], 'act1r2')));
end;
if have('ruble') and have('penny') then return [[Предметы в вашем инвентаре находятся всегда с вами. Чтобы осмотреть их, достаточно дважды щёлкнуть на названии предмета. Если вы предпочитаете управление с клавиатуры, вы можете нажать <<Tab>>, чтобы переключиться на панель инвентаря, выбрать нужный предмет стрелками курсора и нажать <<Ввод>> (Enter) дважды. Чтобы вернуться к описанию сцены, нажмите <<Tab>> ещё раз.^^
Попробуйте опустить монеты в автомат. Для этого щёлкните сначала на монете, а потом -- на автомате.]] end;
end,
dsc = [[Сейчас вы находитесь в имитации приключенческой игры. Для наглядности вам будет показано несколько примеров игр. Вы оцените их управление и получите понятие о возможностях движка.^^
Объекты в сцене -- это чаще всего какие-нибудь предметы. В этой сцене находится три предмета. Два из них вы можете положить в свой инвентарь. Попробуйте щёлкнуть по всем ссылкам.]],
obj = { 'arcade', 'ruble', 'penny'},
};
act1r2 = room{
nam = 'Действие второе.',
enter = function()
inv():zap();
theme.gfx.bg("summer.jpg");
theme.inv.reset();
theme.win.reset();
set_music('w-mh.it');
return [[Сейчас вам предстоит самостоятельно найти выход из этой мини-игры. Чтобы перейти в соседнюю комнату, используйте ссылки перехода, расположенные под заголовком сцены.^^
Когда вы совершаете какое-то действие в сцене, её описание исчезает. Если вы хотите ещё раз прочитать описание сцены, нажмите F5 или щёлкните на заголовке, выделенным красным цветом.]];
end,
dsc = [[Поле. Ржаное поле. Дует лёгкий ветерок. Ярко светит тёплое солнце. В голубом небе поют птицы.]],
obj = {'obj_hill','mountains','obj_river'},
way = {'hill','river'}
}
hill = room{
nam = 'Холм',
enter = code[[lifeon('hill')]],
exit = code[[lifeoff('hill')]],
life = function()
local reaction = {
'У ваших ног пробегает полевая мышка. Вы осторожно переступаете, чтобы не задавить её.',
'На берёзу садится воробей и заинтересованно начинает разглядывать вас, крутя головой. Прежде чем вы делаете малейшее движение, он снимается с ветки и улетает прочь.'};
if (rnd(5) > 2) then return reaction[rnd(#reaction)]; end;
end,
dsc = [[]],
obj = {'tree','boy'},
way = {'field'},
}
river = room{
nam = 'Река',
pic = 'river.jpg',
dsc = [[Неторопливо течёт река мимо ржаного поля. В зелёной прохладной воде отражается голубое небо.]],
way = {'field'}
}
field = room{
nam = 'Поле',
enter = code[[lifeon('field')]],
exit = code[[lifeoff('field')]],
life = function()
local reaction = {'Над вами пролетает стриж.','Ветер доносит до вас тихие звуки флейты.'};
if (rnd(5) > 2) then return reaction[rnd(#reaction)]; end;
end,
dsc = [[Поле. Ржаное поле. Дует лёгкий ветерок. Ярко светит тёплое солнце. В голубом небе поют птицы.]],
obj = {'obj_hill','mountains','obj_river'},
way = {'hill','river'}
}
dlg_boy = dlg{
nam = 'Диалог с мальчиком',
dsc = [[На вас выжидающе смотрит маленький блондинчик в клетчатой рубашке и простых коричневых шортах. Он лежит в тени и играется с флейтой.]],
obj = {
phr('Привет. Как ты сюда попал?',[[--Привет. Как ты сюда попал?^^--А вот она -- тропинка.]],code[[hill.obj:add('obj_wayout');hill.way:add('out');]]),
_phr('Слушай, а что это за венок висит?', [[--Слушай, а что это за венок висит?^^--Не трогай. Висит и висит, тебе-то что?]])
}
}
out = room{
nam = 'По тропинке',
dsc = [[Вы благополучно выходите из полей.]],
enter = code[[set_music('approach.it');]],
act = function()
goto('ending');
end,
obj = {vobj('continue', '{Продолжить}'),}
}
ending = room {
nam = 'Эпилог',
enter = function()
--theme.gfx.bg("winter_dusk_by_raoul_pop.jpg");
theme.inv.reset();
theme.win.reset();
--theme.win.color("#ffd0c0", "#a060f0", "#a060f0");
end,
dsc = [[Поздравляем! Теперь вы легко сможете играть в гипертекстовые приключения.^^
Но кроме подобных игр, на Steed существуют и совершенно другие. Обязательно поиграйте!^^
Если вы задумали написать свою игру, вы можете прочитать документацию. Она лежит в каталоге doc там, где вы установили Steed или в /usr/share/doc/steed. Вам также поможет исходный код этой игры.^^
На этом введение в Steed закончено. Спасибо за игру!]],
way = {'help', 'help2', 'credits'}
};
credits = room{
nam = "Использованные работы",
dsc = [[
В игре использована музыка:^^
DipA -- A Bard's Tale^
warder -- Muuttohaukka^
Nightbeat -- Approach^^
В игре использованы иллюстрации по лицензии CC-BY:^^
Raoul Pop -- Winter dusk^
Joe Linux -- Golden Coin^
a.dombrowski -- River and mountains^^
Также использованы куски кода из игры «Погружение в INSTEAD» Петра Косых (а именно две справочные комнаты).
]],
way = {'help', 'help2'}
}
help = room {
nam = 'Список горячих клавиш',
dsc = [[
Esc - Вызов меню;^
Alt+Q - Выход;^
Alt+Enter - Полноэкранный/оконный режим;^
F5 - Обновление сцены;^
Пробел/Backspace - Прокрутка описания сцены;^
Tab/Shift+Tab - Переключение между активными зонами;^
PgUp/PgDn - Прокрутка активной зоны;^
Стрелки влево/вправо - Выбор ссылок в активной зоне;^
F2 - Сохранение игры;^
F3 - Загрузка игры;^
F8 - Быстрое сохранение игры;^
F9 - Быстрая загрузка игры.^^
Клавиши, поведение которых зависит от выбранного режима клавиатуры
(см. Меню -> Настройки -> Режим клавиатуры):^^
Стрелки вверх/вниз:^
 - В режиме "Прокрутка": прокрутка активной зоны;^
 - В режиме "Ссылки": выбор ссылок в активной зоне;^
 - В режиме "Умный": одновременно выбор ссылок и прокрутка активной зоны.^^
Стрелки вверх/вниз + Shift или Alt:^
 - В режиме "Прокрутка": выбор ссылок в активной зоне;^
 - В режиме "Ссылки": прокрутка активной зоны;^
 - В режиме "Умный": прокрутка активной зоны.
]],
way = {'help2', 'credits'}
};
help2 = room {
nam = 'Параметры командной строки',
dsc = [[
-nosound - запуск без звука;^
-alsa - принудительное использование alsa (только для Linux);^
-debug - отладочный режим для разработчика игр;^
-theme <тема> - выбор темы;^
-game <игра> - выбор игры;^
-themespath <путь> - дополнительный путь к темам;^
-gamespath <путь> - дополнительный путь к играм;^
-windows - оконный режим;^
-fullscreen - полноэкранный режим;^
-noautosave - отключить автосохранение/автозагрузку;^
-encode <game.lua> [encoded.lua] - закодировать исходный текст lua (используйте doencfile для загрузки такого файла);^
-mode [ШИРИНАxВЫСОТА] - установить разрешение.
]],
way = {'help2', 'credits'}
};