Можно это обобщить до некого триггера-предиката
Есть некий объект квестодатель, он даёт квест, у квеста есть просто булевый предикат, который он проверяет, и ссылка на квестодателя. Этот предикат для активных квестов проверяется в какой-то системе в апдейте. У кого предикат вылился в истину, те своим квестодателям сообщают об успешном завершении, а сама этнини квеста "убивается".
В случае раста делаем что-то вроде энума для разных типов квестов, один из таких вариантов будет чем-то вроде тупла из каунтера и предиката на нулёвость первого элемента. Ну и как-то мутируем этот каунтер например при смерти мобов, у которых может быть что-то вроде компонента QuestForKill{QuestEntityId}