init python:
	lessons.add_current('pause, if')

label commands_and_blocks:
	show rn 2 smile
	
	rn "С возвращением! Готов ко второму раунду нашего обучения?"
	rn "Надеюсь, ты успел немного поэкспериментировать и заставить меня сказать что-нибудь забавное в прошлом уроке."
	rn "Сегодня мы разберёмся, из каких \"кирпичиков\" строится весь сценарий нашей игры. Это очень просто, вот увидишь!"
	rn "Представь, что мы пишем рецепт. Каждая строчка - это одно простое действие. В нашем мире это называется команда."
	
	show rn 4 smile with dissolve:
		rn_moving 0.5 xpos 0.28
	
	python:
		code.show('''
			cmd params
			
			pause
			pause 1
			show rn smile with dspr
			hide rn
		''')
	
	rn "Всё очень логично. Сначала идёт само действие (имя команды), а потом - уточнения (мы называем их параметрами)."
	show rn 2 smile with dissolve
	rn "Например, команда [sts]pause[ste] может быть без параметров - тогда это будет пауза до клика мыши или чего-то подобного."
	rn "А если мы добавим параметр [sts]1[ste], то игра замрёт ровно на одну секунду."
	rn "Помнишь, как я появлялась? Команда [sts]show[ste] имеет просто кучу параметров, которые уточняют: кто, как и где должен быть показан."
	
	window hide
	show rn 1 smile with dissolve
	pause 1
	show rn 2 smile with dissolve
	
	rn "А что, если нам нужно выполнить целую серию действий, но только при определённом условии?"
	rn "Например, \"если у игрока есть ключ, то открыть дверь, показать сокровище и проиграть победную музыку\"."
	
	python:
		code.show('''
			block params:
				cmd1
				cmd2
				cmd3
		''')
	show rn 4 smile with dissolve
	
	rn "Для таких случаев у нас есть блоки."
	rn "Блок - это такой удобный контейнер для других команд."
	
	show rn 3 smile with dissolve
	rn "Посмотри внимательно: строка, которая его объявляет, всегда заканчивается двоеточием."
	rn "Эта строчка как бы говорит: \"Внимание! Всё, что будет дальше с отступом - выполняется вместе, как одна большая задача!\"."
	
	
	python:
		code.show('''
			label check:
				if rn_points > 5:
					show rn smile with dissolve
					rn "Привет, ты не занят?"
		''')
	show rn 1 smile with dissolve
	
	rn "Вот отличный пример из жизни! Это блок условия [sts]if[ste]."
	rn "Здесь мы проверяем, больше ли моих \"очков\", [sts]rn_points[ste], чем [sts]5[ste]."
	rn "И только если это правда, выполняются две команды, которые стоят с отступом под ним: я появлюсь на экране и скажу свою реплику."
	rn "Если очков [sts]5[ste] или меньше - игра просто проигнорирует эти две строчки и пойдёт дальше."
	rn "Видишь эту связь? Двоеточие в конце - это обещание, что дальше будет блок с отступом. А отступ - это выполнение этого обещания."
	rn "Это золотое правило, запомни его, оно очень важное!"
	
	$ code.hide()
	show rn 1 smile:
		rn_moving 0.5 xpos 0.5
	
	rn "Кстати, {b}самыми{/b} главными могут быть лишь 3 блока."
	rn "В [sts]init[ste]-блоках мы готовим всё к началу игры: регистрируем изображения, созданиём персонажей, инициализируем переменные и всё в этом духе."
	rn "В метках [sts]label[ste] живёт сценарий: появление персонажей, музыка, диалоги и смена декораций."
	rn "В [sts]screen[ste] описывается интерфейс на языке ScreenLang. Это очень мощный и удобный инструмент, но о нём мы поговорим гора-а-аздо позже."
	
	show rn 2 smile with dissolve
	
	rn "Фух! На сегодня теории достаточно."
	rn "Главное, запомнить: команды - это одиночные действия, а блоки - это контейнеры для них, которые начинаются с двоеточия и требуют отступа у вложенных команд."
	rn "Не переживай, если что-то кажется сложным, на практике всё станет кристально ясно!"
	rn "В следующий раз мы с головой нырнём в [sts]init[ste]-блоки и научимся создавать собственных персонажей! Будет весело! До встречи!"
