Состояния и мастера

XashXT

Состояния и мастера

Данная система без особых изменений была позаимствована из мода Spirit of Half-Life. Вкратце, суть её сводится к тому, что каждая энтить может быть мастером для другой энтити. Под мастером имеется в виду блокировка активации или деактивации. Состояния энтити выводятся с учётом особенностей каждой энтити и её предназначения. Состояния могут быть следующие:

Состояние Объект...
STATE_ON включён и работает
STATE_TURN_ON включается (например func_rotating набирает финальную скорость)
STATE_TURN_OFF выключается (например func_rotating уменьшает скорость вращения до нуля)
STATE_OFF выключен
STATE_DEAD сломан (характерно для неодушевлённых объектов), на активацию больше не реагирует
STATE_IN_USE используется игроком или NPC

Все эти состояния можно отслеживать при помощи специализированной энтити multi_watcher, либо использовать multisource с более простой интерпретацией состояний: STATE_ON — объект активен, любое другое состояние — объект неактивен. В XashXT имеется возможность блокировать один и тот же объект при помощи нескольких мастеров, просто используя объекты с аналогичным именем в поле master блокируемой энтити. Более подробно данный механизм рассмотрен в описании энтити multisource.

Для данной системы была проделана работа по добавлению поля master практически для всех объектов, которые можно активировать. Обратите внимание, что мастером можно сделать любой объект, имеющий префикс item_ — это позволяет блокировать их подбор.

Ограничения системы

Некоторые объекты не могут быть мастером для других объектов (равно как и для самих себя), поскольку вышеприведённое обстоятельство ломает совместимость с оригинальной игрой Half-Life. Это все энтити light, а также multi_manager. Однако вы по-прежнему можете отслеживать их состояния при помощи энтити multi_watcher и использовать в качестве мастера именно её.