Ru/Disc Room

Комната с диском - последнее испытание в конце каждой серии тестов в кооперативном режиме. Она находится в части комплекса, которой ГЛэДОС управлять не может, и которая служила людям последним защитным рубежом от разрастающейся власти ГЛэДОС над комплексом.
== Источник дисков ==
Источник дисков - устройство, создающее диски. Оно восстанавливает копию диска, если он был утерян или растворён. Обычно оно находится рядом с получателем диска в конце последней камеры серии кооперативного режима. Однако, помещать его там совершенно не обязательно; если поместить источник в начале камеры, могут получиться интересные головоломки, главной задачей которых станет не потерять диск. 
=== Шаг 1 - настройка ===
Создайте и выберите для неё модель models/props_gameplay/laser_disc_player.mdl и поместите её где-нибудь в комнате. Отсюда игроки будут брать диск.
Теперь создайте диск, это энтити . Настройте её так:
::
Свойство 	Значение
Name 	start_disc
Parent 	spawner_door
World Model 	laser_disc.mdl
Disable Shadows	Yes
Поместите диск внутри модели устройства, как показано на иллюстрации справа.
Теперь создайте браш размером 8x20x1 с текстурой tools/toolsinvisible. Поместите его сверху модели диска, снова, как на иллюстрации справа. Преобразуйте браш в энтити (нажатием ) и сделайте её . И задайте её свойства следующим образом:
::
Свойство 	Значение
Name 	spawner_door
Speed 	26
Start Sound 	World.LaserDiskLoad
Delay Before Reset (-1 stay)	-1
Loop Moving Sound 	Yes
Move Direction 	0 0 0
 
Создайте ещё одну энтити, , она будет диском, переносимым игроками. Нажмите и перетащите start_disc так, чтобы диск находился вне устройства, и чтобы только его 'край' касался щели устройства. Измените "Class" на prop_physics_override и назовите "disc".
=== Шаг 2 - воссоздание диска ===
Создадим шаблон, по которому диск будет восстановлен в случае его утери игроками.
Создайте со следующими свойствами: 
::
Свойство 	Значение
Name 	template_disc_spawn
Template 1	start_disc
Template 2	spawner_door
Создайте ещё одну point_template с этими свойствами: 
::
Свойство 	Значение
Name 	template_disc
Template 1	disc
=== Шаг 3 - система выходов ===
После создания всех энтитей нужно заставить источник работать, осталось подключить действия энтитей для создания диска; свяжем несколько !
Сначала создайте со следующим выходом:
:
	My Output >	Target Entity 	Target Input	Parameter	Delay	Only Once
	OnMapSpawn 	template_disk_spawn	ForceSpawn 	  	0.00 	No
В свойствах spawner_door откройте вкладку 'Output' и добавьте следующие свойства:
:
	My Output >	Target Entity	Target Input	Parameter	Delay	Only Once
	OnFullyOpen	start_disc 	ClearParent 	  	0.00 	No
	OnFullyOpen	start_disc 	TurnOff 	  	0.00 	No
	OnFullyOpen	template_disc	ForceSpawn 	  	0.00 	No
	OnFullyOpen	start_disc 	Kill 	  	0.10 	No
	OnFullyOpen	spawner_door 	Kill 	  	0.10 	No
Теперь добавьте выход в template_disc_spawn:
:
	My Output > 	Target Entity	Target Input	Parameter	Delay	Only Once
	OnEntitySpawned	spawner_door 	Open 	  	0.00 	No
Энтити, определяющая, когда диск теряется или уничтожается, должна иметь следующий выход:
:
	My Output >	Target Entity 	Target Input	Parameter	Delay	Only Once
	OnTrigger 	template_disk_spawn	ForceSpawn 	  	0.00 	No
Теперь источник должен работать и поставлять новые диски при утере имеющегося. Однако, это лишь треть процесса создания работающей комнаты с диском.
== Получатель диска ==
Получатель диска (или проигрыватель диска) - устройство, для которого предназначается диск; при вставке диска в получатель проигрывается видео с информацией, которую искала ГЛэДОС.
=== Шаг 1 - установка ===
Поместите prop_static в комнату и выберите модель models/props_gameplay/laser_disc_player.mdl. Здесь, в конце уровня, игроки вставят диск. 
Когда игрок помещает диск возле приёмника, диск, который игрок носил ранее, будет удалён, и загрузится другой, невидимый диск. Мы сделаем именно так, чтобы лучше контролировать, как диск войдет в приёмник, и чтобы просто избежать многих проблем. Потребуется ещё одна prop_dynamic_override, она будет загружена в устройство, будучи прикреплённой к func_door. 
::
Свойство 	Значение
Parent 	loader_door
Disable Shadows	Yes
World Model 	laser_disc.mdl
Name 	hidden_disc
Диск нужно разместить так, как показано на иллюстрации справа.
Теперь создайте браш func_door с текстурой tools/toolsinvisible. Поместите его сверху на модель диска как на иллюстрации справа. Добавьте следующие свойства:
::
Свойство 	Значение
Name 	loader_door
Speed 	8
Start Sound 	World.LaserDiskLoad
Delay Before Reset (-1 stay)	-1
Loop Moving Sound 	Yes
Move Direction 	0 180 0
=== Шаг 2 - загрузка ===
На первом шаге создавались видимые энтити получателя, в этом шаге - невидимые энтити.
Первая - браш , а вторая - . И добавьте следующие свойства:
1. В trigger_once: 
::
Свойство 	Значение
Name 	 
Filter Name	disc_filter
Установите флаг Physics Objects.
2. В filter_activator_name:
::
Свойство 	Значение
Name 	disc_filter
Filter Name	disc
=== Шаг 3 - система выходов ===
Чтобы всё взаимодействовало, используем систему входов/выходов. Помните ту logic_auto, что мы использовали ранее? В её свойствах откройте вкладку "Outputs" и добавьте следующие свойства:
:
	My Output >	Target Entity	Target Input	Parameter	Delay	Only Once
	OnMapSpawn 	hidden_disc 	TurnOff 	  	0.00 	No
Добавьте следующий вход в trigger_once:
:
	My Output > 	Target Entity	Target Input	Parameter	Delay	Only Once
	OnStartTouch	hidden_disc 	TurnOn 	  	0.00 	No
	OnStartTouch	!activator 	Kill 	  	0.00 	No
	OnStartTouch	loader_door 	Open 	  	0.00 	No
Добавьте один выход в энтити loader_door:
:
	My Output >	Target Entity 	Target Input	Parameter	Delay	Only Once
	OnFullyOpen	disc_loaded_relay	Trigger 	  	0.00 	No
Теперь получатель должен работать и принимать вставляемый диск. До завершения создания комнаты с диском ещё далеко.
== Проецирование видеоролика ==
Проецируемый ролик - это показ фильма, включающий взрыв роботов в конце.
=== Шаг 1 - настройка видеоролика ===
Создайте prop_static с моделью projector_screen.mdl (Легче найти, введя "projector" в поле фильтрации моделей). В её нижнем левом углу поместите со следующими свойствами:
::
Свойство 	Значение
Name 	insert_disc_movie
Movie Filename 	media/insert_disk.bik
Loop Movie 	Yes
Stretch to Fill	Yes
Force precache 	Yes
Panel width 	156
Panel height 	112
Снова откройте свойства logic_auto и добавьте следующие выходы:
:
	My Output >	Target Entity 	Target Input	Parameter	Delay	Only Once
	OnMapSpawn 	insert_disc_movie	Enable 	  	0.00 	No
Создайте ещё одну энтити vgui_movie_display в том же самом месте, что и предыдущая (Просто протащите уже созданную с нажатой в сторону, а затем верните на место). Единственным отличием будет имя и видео, отображаемое ей:
::
Свойство 	Значение
Name 	aperture_movie
Movie Filename 	media/coop_bts_blueprints.bik
Loop Movie 	Yes
Stretch to Fill	Yes
Force precache 	Yes
Panel width 	156
Panel height 	112
=== Шаг 2 - поднимаем железный занавес ===
Помните ту энтити disc_loaded_relay, которую мы использовали, ещё не создав? Теперь пришла и её очередь. Сперва создайте и назовите её disc_loaded_relay. Откройте вкладку "Outputs" и добавьте следующие свойства:
:
	My Output >	Target Entity 	Target Input	Parameter	Delay	Only Once
	OnTrigger 	insert_disc_movie	Disable 	  	2.00 	No
	OnTrigger 	aperture_movie 	Enable 	  	2.00 	No
Создайте с этими свойствами:
::
Свойство 	Значение
Name 	disc_windup_sound
Sound Name	World.LaserDiskPowerUp
И добавьте в disc_loaded_relay ещё один выход:
:
	My Output >	Target Entity 	Target Input	Parameter	Delay	Only Once
	OnTrigger 	disc_windup_sound	PlaySound 	  	0.00 	No
И наконец-таки всё должно работать!
== Завершение ==
* Добавьте экземпляр и в качестве VMF Filename укажите coop_lighting_ents.vmf. Отсюда вы можете выбрать варианты тумана в вашей карте (его плотность, цвет и т.д.). Однако, в этом экземпляре более важны четыре , каждая может разрешать или запрещать использование сигнального и указывающего устройства роботов. При загрузке диска должна активироваться logic_relay с четыремя выходами:
:
	My Output >	Target Entity 	Target Input	Parameter	Delay	Only Once
	OnTrigger 	@global_no_taunting_blue 	TurnOn 	  	0.00 	No
	OnTrigger 	@global_no_pinging_blue 	TurnOn 	  	0.00 	No
	OnTrigger 	@global_no_taunting_orange	TurnOn 	  	0.00 	No
	OnTrigger 	@global_no_pinging_orange 	TurnOn 	  	0.00 	No
* Создайте со значением Damage равным 10000. Эта энтити должна охватывать всю комнату, но не забудьте выключить её. В подходящий момент, например, когда ГЛэДОС говорит последнюю фразу, активируйте браш trigger_hurt, чтобы роботы взорвались.
* Поместите в комнату со следующими настройками:
::
Свойство	Значение
Name 	levelchange
Добавьте в trigger_hurt этот выход:
:
	My Output >	Target Entity	Target Input	Parameter 	Delay	Only Once
	OnHurt 	levelchange 	command 	changelevel {распределитель или следующая камера}	0.00 	No
* Поместите статическую модель лицом к экрану с моделью models/props_underground/projector.mdl. В проекторе создайте три в соответствующих местах.
* Обычно в комнатах с диском имеется доска (models/props_office/whiteboard_coop.mdl) с требованием не вставлять диск. Для соответствия картам Valve рекомендуется создать и её. Есть 6 различных вариантов.