Есть предметы которые рандомно появляются на карте, так вот как сделать так что бы в начале игры давалось задание на поиск определенного предмета, и если он его находит, то задание сразу же сменяется на такое же типичное, но с другим предметом?
Внезапно - любой функционал делается написанием кода.
По вашему вопросу сказать прям больше нечего. Ну можно добавить что обычно делается дерево квестов (прям как структура данных) с ветвлением в зависимости от результатов. Т.е. делаете сущность "квест", она умеет проверять свой статус, и делаете контейнер, который знает о всех ветках и умеет переключать текущий квест.
Если вас реализует исключительно реализация, то я бы думал в следующую сторону.
У нас есть объект локации и событие "персонаж прибывает в локацию"(не знаю есть или нет, но в целом думаю вы этот момент можете выявить).
В качестве обработчика этого события можно вызвать интерфейс квеста (на момент привязки квеста можно рассчитать состояние локации и понять какие предметы есть в ней).
Ну и в момент возникновения события поднятия предмета - закрыть квест и выдать награду.
Но это все концепции и никак не связаны с вашей реализацией игры.