#ifndef _EQE_QUESTPARSERCOLLECTION_H #define _EQE_QUESTPARSERCOLLECTION_H #include "../common/types.h" #include #include #include #include #include "masterentity.h" #include "../common/Item.h" #include "QuestInterface.h" #define QuestFailedToLoad 0xFFFFFFFF #define QuestUnloaded 0x00 class QuestParserCollection { public: QuestParserCollection(); ~QuestParserCollection(); void RegisterQuestInterface(QuestInterface *qi, std::string ext); void AddVar(std::string name, std::string val); void ReloadQuests(bool reset_timers = true); bool HasQuestSub(uint32 npcid, const char *subname); bool PlayerHasQuestSub(const char *subname); bool SpellHasQuestSub(uint32 spell_id, const char *subname); bool ItemHasQuestSub(ItemInst *itm, const char *subname); void EventNPC(QuestEventID evt, NPC* npc, Mob *init, std::string data, uint32 extra_data); void EventPlayer(QuestEventID evt, Client *client, std::string data, uint32 extra_data); void EventItem(QuestEventID evt, Client *client, ItemInst *item, uint32 objid, uint32 extra_data); void EventSpell(QuestEventID evt, NPC* npc, Client *client, uint32 spell_id, uint32 extra_data); private: QuestInterface *GetQIByNPCQuest(uint32 npcid); QuestInterface *GetQIByGlobalNPCQuest(); QuestInterface *GetQIByPlayerQuest(); QuestInterface *GetQIByGlobalPlayerQuest(); QuestInterface *GetQIBySpellQuest(uint32 spell_id); QuestInterface *GetQIByItemQuest(std::string item_script); std::map _interfaces; std::map _extensions; std::list _load_precedence; //0x00 = Unloaded //0xFFFFFFFF = Failed to Load std::map _npc_quest_status; uint32 _global_npc_quest_status; uint32 _player_quest_status; uint32 _global_player_quest_status; std::map _spell_quest_status; std::map _item_quest_status; }; extern QuestParserCollection *parse; #endif