int QuestParserCollection::EventNPCGlobal(QuestEventID evt, NPC* npc, Mob *init, std::string data, uint32 extra_data, std::vector<void*> *extra_pointers) { if(_global_npc_quest_status != QuestUnloaded && _global_npc_quest_status != QuestFailedToLoad) { std::map<uint32, QuestInterface*>::iterator qiter = _interfaces.find(_global_npc_quest_status); return qiter->second->EventGlobalNPC(evt, npc, init, data, extra_data, extra_pointers); } else { std::string filename; QuestInterface *qi = GetQIByGlobalNPCQuest(filename); if(qi) { _global_npc_quest_status = qi->GetIdentifier(); qi->LoadGlobalNPCScript(filename); return qi->EventGlobalNPC(evt, npc, init, data, extra_data, extra_pointers); } else { _global_npc_quest_status = QuestFailedToLoad; } } return 0; }
bool QuestParserCollection::HasQuestSubGlobal(QuestEventID evt) { if(_global_npc_quest_status == QuestUnloaded) { std::string filename; QuestInterface *qi = GetQIByGlobalNPCQuest(filename); if(qi) { qi->LoadGlobalNPCScript(filename); _global_npc_quest_status = qi->GetIdentifier(); if(qi->HasGlobalQuestSub(evt)) { return true; } } } else { if(_global_npc_quest_status != QuestFailedToLoad) { std::map<uint32, QuestInterface*>::iterator qiter = _interfaces.find(_global_npc_quest_status); if(qiter->second->HasGlobalQuestSub(evt)) { return true; } } } return false; }