админка Битрикса - это ужас. Как решить Вашу задачу красиво - не знаю. Как решить её костылями:
1) первое свойство - обычный список ( или справочник, или привязка к элементам инфоблока).
2) второе свойство - кастомное. Значения появляются только если первое свойство имеет значение и только после сохранения элемента. При смене значения первого свойства и сохранении элемента текущее значение второго свойства проверяется на допустимость; если надо- сбрасывается.
Stalker_RED , Вы, похоже, не игрок. Есть эффекты, действующие в единицу времени - "Damage over Time" и "Heal over Time". Если на игроке "дот", то игрок через N интервалов должен умереть, даже если его никто не бьёт. Если "хот" - то весьма вероятна ситуация, когда при получении очередного урона игрок выживет ( а без "хота" умер бы).
Ну и до кучи, игроки хотят видеть своё состояние оперативно. Так что подход "обсчитывайте данные, когда они нужны", тут не катит, данные нужны на каждом "тике".
elmoreden, это оператор только в одном частном случае - "empty index operator" , то есть конструкция вида: $a[] = "foo";
В остальных двух случаях это либо сокращённый синтаксис( замена для array() ), либо языковой конструкт ( замена для list() ). Упоминается неявно здесь, пройдите поиском по тексту
Aqulus, проблема в том, что return нужен только когда вызывающая сторона готова что-то принять. Подозреваю, что Вы что-то потеряли и должно быть echo $a->$route(); или
$content = $a->$route();
// а где-то дальше echo $content;
Alexander Lamdan, "vanilla" - то есть "чистые от внешних обстоятельств" - ОС или архитектура. "Нативные" - значит, имеющие реализацию под что-то.
Неоригинальные - реализация, отличающаяся от оригинального источника. Неоригинал тоже может быть ванильным или нативным.