У меня появилась идея как это сделать.Т.к. будут отдельные классы квестов для каждого типа квеста(По идее их не должно быть более 10-15 типов), то в этих квестах будут уже прописанны слушатели на определенные события.Допустим если при самом првом квесте мне надо собрать 3 огурца то я просто активирую слушатели для класса cucumberQuest.Например так

Код AS3:
cucumberQuest.activateListeners(params)
и передаю туда нужные параметры для каждого квеста cucumberQuest.activateListeners(3) - собрать 3 огурца.
Тогда этот квест будет слушать , допустим, изменение состояния модели (когда пополниться урожай на 3 огурца).После этого квест диспачит событие

Код AS3:
dispatchEvent(new СucumberQuestEvent(СucumberQuestEvent.QUEST_DONE, someParam)).
После этого обработчик ловит это событие и проверяет соответствует ли значение собранных огурцов указанному в квесте.Если да то квест выполнен и отсылается событие на сервер.После этого я деактивиую квест и он больше не будет ловить это событие.Мне кажется что у этой схемы есть плюс в том что можно делать комбинированные квесты.(Т.е. объединять 2 квест класса в один путем наследования просто и все).Но есть минусы в том что нужно много кода писать (Каждый тип квеста + обработчик к нему).Как такая схема?