1-- $Name:Навчання$
2
3instead_version "1.6.0"
4
5require "dash" -- '--' replace :)
6require "para" -- be more "Russian"
7require "quotes"
8
9game.act = 'Не виходить.';
10game.inv = "Гм.. Не те..";
11game.use = 'Не спрацює...';
12
13game.pic = 'instead.png';
14
15set_music('instead.ogg');
16
17main = room {
18	nam = 'Навчання',
19	act = function() -- only one vobj, no check, just goto
20		walk('r1');
21	end,
22	dsc = txtc("Вітаємо в режимі навчання INSTEAD.")..[[^^
23	Гра складається зі сцен. Кожна сцена гри має опис,
24	що складається зі статичної та динамічної частини. Динамічна частина включає об'єкти,
25	персонажі й т.і. З динамічною частиною гравець може взаємодіяти за допомогою миші,
26	нажимаючи на підсвічені посилання.^^
27
28	Дана сцена має назву "Навчання" і зараз Ви читаєте статичну частину її опису.
29	Єдиним об'єктом сцени є об'єкт "Далі", котрий Ви бачите внизу тексту.
30	Отже, для продовження навчання Ви можете натиснути на "Далі".]],
31	obj = {
32		vobj('continue', '{Далі}'),
33	},
34};
35
36paper = obj {
37	nam = 'папір',
38	dsc = 'Перше, що Ви помічаєте в кімнаті -- {аркуш паперу}.',
39	tak = 'Ви взяли папір.',
40	var { seen = false, haswriting = false },
41	inv = function(s)
42		if here() == r2 then
43			s.seen = true;
44		end
45		if not s.haswriting then
46			return 'Чистий аркуш картатого паперу. Схоже, його вирвали з зошита.';
47		end
48		p 'Аркуш картатого паперу, на якому написано Ваше ім`я.';
49	end,
50	used = function(s, w)
51		if w == pencil and here() == r4 then
52			s.haswriting = true;
53			p 'Ви пишите на аркуші своє ім`я.';
54		end
55	end,
56};
57
58pencil = obj {
59	nam = 'олівець',
60	dsc = 'На підлозі лежить {олівець}.',
61	tak = 'Ви підібрали олівець.',
62	var { seen = false },
63	inv = function(s)
64		if here() == r2 then
65			s.seen = true;
66		end
67		p 'Звичайний дерев`яний олівець.';
68	end,
69};
70
71r1 = room {
72	nam = 'Урок 1',
73	enter = code [[ lifeon('r1') ]],
74	life = function(s)
75		if not have 'paper' or not have 'pencil' then
76			return
77		end
78		put(vway('continue',
79		[[Відмінно!^Ви, швидше за все помітили, що статична частина опису сцени
80		зникла, поступившись місцем опису предметів, котрі Ви взяли.
81		Щоб знову подивитись повний опис сцени, можна нажати на її
82		назву, відображену у верхній частині вікна -- "Урок 1". Окрім того,
83		можна нажати клавішу F5 на клавіатурі, результат буде такий само.^^
84		{Далі}]], 'r2'));
85		lifeoff('r1');
86	end,
87	dsc = [[Урок 1. Взаємодія з об`єктами^^
88		Продовжимо урок. Зараз Ви знаходитесь в кімнаті. Візьміть обидва предмети,
89		котрі Ви бачите. Нагадаємо, що для цього Ви можете просто
90		використовувати мишу. Якщо Вам зручніше використовувати клавіатуру -- можна
91	обрати потрібний предмет за допомогою клавіш зі стрілками и натиснути "Введення" для
92	взаємодії з ними.]],
93	obj = { 'paper', 'pencil'},
94};
95
96r2 = room {
97	nam = 'Урок 2',
98	enter = code [[ lifeon('r2') ]],
99	life = function(s)
100		if not paper.seen or not pencil.seen then
101			return
102		end
103		put(vway("continue", "Гарно!^^{Далі}", 'r3'));
104		lifeoff('r2');
105	end,
106	dsc = [[Урок 2. Використання інвентарю - Частина I^^
107		Тепер у Вас з'явилися предмети, котрі можно використовувати чи вивчати.
108		Для цього призначений інвентар. Ви можете подивитися на будь-який предмет
109		інвентарю двічи клацнувши мишею по цьому предмету. Те ж саме можна
110		зробити за допомогою клавіатури: нажміть "Tab", щоб перемкнутися на панель
111		інвентарю, оберіть потрібний предмет і двічі
112		нажміть "Введення". Щоб повернутися назад до опису сцени, нажмить "Tab" ще раз.^^
113
114		Отже, подивіться на папір. Потім, повторіть цю операцію з олівцем.]],
115};
116
117apple = obj {
118	nam = 'яблуко',
119	dsc = 'На столі лежить {яблуко}.',
120	tak = 'Ви взяли яблуко зі столу.',
121	var { knife = false },
122	inv = function(s)
123		if here() == r4 then
124			remove(s, me());
125			return 'Вы з`їдаєте яблуко.';
126		end
127		p 'Виглядає апетитно.';
128	end,
129};
130
131desk = obj {
132	nam = 'стіл',
133	dsc = 'В цьому уроці ви бачите дерев`яний {письмовий стіл}.',
134	var { haswriting = false, seen = false },
135	act = function(s)
136		if s.haswriting then
137			s.seen = true;
138			return 'Великий дубовий письмовий стіл. На стільниці видно дрібний напис олівцем: "Любіть Україну".';
139		end
140		p 'Великий дубовий письмовий стіл.';
141	end,
142	used = function(s, w)
143		if w == pencil and not s.haswriting then
144			s.haswriting = true;
145			p 'Ви пишете на столешні декілька літер.';
146		end
147	end,
148	obj = { 'apple' },
149};
150
151r3 = room {
152	nam = 'Урок 3',
153	enter = code [[ lifeon('r3') ]],
154	life = function(s)
155		if not desk.seen or not have('apple') then
156			return
157		end
158		put(vway("continue", "^^{Далі}", 'r4'));
159		lifeoff('r3');
160	end,
161	dsc = [[Урок 3. Використання інвентаря - Частина II^^
162		Ви можете задіяти предмети інвентарю на інші предмети сцени чи інвентарю.
163		В цій комнаті ви бачите стіл. Спробуйте задіяти олівець на стіл.^^
164
165		Для цього клацніть мишей на олівець, а потім на стіл. Те ж саме можна зробити
166		за допомогою клавіатури: використовуючи клавіши "Tab", "Введення" й "стрілки".^^
167
168		Потім подивіться на стіл. І не забудьте взяти яблуко, воно нам знадобиться в наступному уроці.]],
169	obj = { 'desk' },
170};
171
172r4 = room {
173	nam = 'Урок 4',
174	enter = function()
175		apple.knife = false;
176		lifeon('r4');
177	end,
178	life = function(s)
179		if not paper.haswriting or have('apple') then
180			return
181		end
182		put(vway("continue", "Гаразд.^^{Далі}", 'r5'));
183		lifeoff('r4');
184	end,
185	dsc = [[Урок 4. Використання інвентарю - Частина III^^
186		Гаразд, тепер вивчимо ще декілька дій з предметами.^^
187
188		По-перше, напішить що-небудь на папері. Для цього нажміть мишею
189		на олівець, а потім на папір. Після цього ви можете подивитись
190		на папір, щоб побачити ваш запис.^^
191
192		По-друге, з'їште яблуко, котре Ви взяли зі столу в попередній кімнаті.
193		Для цього двічи клацніть по яблуку в інвентарі.^^
194
195		Всі описані дії можна виконати за допомогою клавіатури так само,
196		як показано в попередньому уроці.]],
197};
198
199r5 = room {
200	nam = 'Урок 5',
201	exit = function(s, t)
202		if t ~= r6 then
203			return 'Цей урок ми вже пройшли.^ Будь ласка, перейдіть на урок 6.', false;
204		end
205	end,
206	dsc = [[Урок 5. Переміщення - Частина I^^
207		Тепер вивчимо переходи між кімнатами. В цій кімнаті Ви бачите п'ять
208		допоміжних посилань з номерами уроків. Перейдіть на урок 6. ^^
209
210		Для цього натисніть мишею на відповідне посилання. Ви також можете використати
211		клавіатуру -- виберіть потрібне посилання за допомогою клавіш зі стрілками
212		та нажміть "Введення" для переходу.]],
213	way = { 'r1', 'r2', 'r3', 'r4', 'r6'},
214};
215
216r6 = room {
217	nam = 'Урок 6',
218	exit = function(s, t)
219		if t ~= theend then
220			p 'Цей урок ми вже пройшли.^ Будь ласка, перейдіть на останній урок.'
221			return false; -- same as return "text", false
222		end
223	end,
224	dsc = [[Урок 6. Переміщення - Частина II^^
225		Тепер перейдіть на останній урок.]],
226	way = { 'r1', 'r2', 'r3', 'r4', 'r5', 'theend'},
227};
228
229theend = room {
230	nam = 'Останній урок',
231	dsc = [[Ви можете вибирати гру, зберігати та завантажувати її стан і виконувати
232		інші дії за допомогою меню. Для виклику меню натисніть клавішу "Esc" або
233		натисніть мишею на символ меню (справа знизу).^^
234		Тепер Ви готові до гри. Хай щастить!!!^^
235		Ігри для INSTEAD можно завантажити тут: ]]..txtu("https://instead-hub.github.io")..[[^^
236		Для навчання використан трек "Instead game-engine" вiд svenzzon.]],
237	obj = { vway('keys', 'Подивитись {список клавіш}.', 'help')},
238};
239
240help = room {
241	nam = 'Список клавіш',
242	dsc = [[
243	Esc - Виклик меню;^
244	Alt+Q - Вихід;^
245	Alt+Enter - Повноекранний/віконний режим;^
246	F5 - Оновлення сцени;^
247	Пробел/Backspace - Прокрутка опису сцени;^
248	Tab/Shift+Tab - Переключення між активними зонами;^
249	PgUp/PgDn - Прокрутка активної зони;^
250	Стрілки вліво/вправо - Вибір посиланнь в активній зоні;^
251	F2 - Збереження гри;^
252	F3 - Завантаження гри;^
253	F8 - Швидке збереження гри;^
254	F9 - Швидке завантаження гри.^^
255
256	Клавіши, поведінка яких залежить від обраного режиму клавіатури
257	(див. Меню -> Налаштування -> Режим клавіатури):^^
258
259	Стрілки вгору/вниз:^
260	 - В режимі "Прокрутка": прокрутка активної зони;^
261	 - В режимі "Посилання": вибір посиланнь в активній зоні;^
262	 - В режимі "Розумний": одночасний вибір посиланнь та прокрутка активної зони.^^
263
264	Стрілки вгору/вниз + Shift або Alt:^
265	 - В режимі "Прокрутка": вибір посиланнь в активній зоні;^
266	 - В режимі "Посилання": прокрутка активної зони;^
267	 - В режимі "Розумний": прокрутка активної зони.
268	]],
269	obj = { vway('cmdline', 'Подивитись {параметри командного рядка}.', 'help2')},
270};
271
272help2 = room {
273	nam = 'Параметри командного рядка',
274	dsc = [[
275	-nosound - запуск без звуку;^
276	-debug - режим налагоджування для розробників ігр;^
277	-theme <тема> - вибір теми;^
278	-game <гра> - вибір гри;^
279	-themespath <шлях> - додатковий шлях до тем;^
280	-gamespath <шлях> - додатковий шлях до ігр;^
281	-windows - віконний режим;^
282	-fullscreen - повноекранний режим;^
283	-noautosave - відключити автозбереження/автозагрузку;^
284	-encode <game.lua> [encoded.lua] - закодувати вихідний текст lua (використовуйте doencfile для загрузки такого файла);^
285	-mode [ШИРИНАxВИСОТА] - встановити роздільну здатність екрану.
286	]],
287	obj = { vway('keys', 'Подивитись {список клавіш}.', 'help')},
288};
289