Помогу в силу понимания мною вашего вопроса. Если неправильно понял, прошу извинить.
===
Пользователь создаёт нужное условие.
Условие кладётся в массив.
Также можно предусмотреть, что должно выполниться по этому условию.
Завести, например, объект «Условие»:
{
условие: 'текст условия',
список событий: [function1, function2];
}
И этот объект класть в массив условий.
(«список событий» тоже может задать пользователь)
Когда происходят какие-то действия, мы пробегаемся по массиву проверяем выполнются ли условия.
Если выполняются, то пробегаемся по функциям внутри объекта «Условие» и выполняем их.
Есть также такой шаблон проектирования
Наблюдатель