Состояния и мастера
Данная система без особых изменений была позаимствована из мода 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 и использовать в качестве мастера именно её.