Удобнее всего все квесты заносить в базу из админки в специальную таблицу, в которой хранятся нужные параметры квестов, м таких много. На пример -
Деньги и опыт за выполнение, место, тип врагов, их количество, ключевой предмет, прочий драп, разные всякие идентефикаторы. Так же советую в таблице юзеров добавить ещё одно поле, где нужно заносить ид квеста, который выполняется в данный момент, и тащить по нему нужные данные из таблицы квестов, сверяя итог допустим битвы с ними. И это может служить ещё блокиратором для других квестов.