mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-11 21:01:29 +00:00
Fix for sub checking on global npc quests
This commit is contained in:
parent
c6d8895b70
commit
4e802921a5
@ -51,34 +51,74 @@ void QuestParserCollection::ReloadQuests(bool reset_timers) {
|
||||
|
||||
bool QuestParserCollection::HasQuestSub(uint32 npcid, const char *subname) {
|
||||
std::map<uint32, uint32>::iterator iter = _npc_quest_status.find(npcid);
|
||||
if(_global_npc_quest_status == QuestUnloaded){
|
||||
QuestInterface *qi = GetQIByGlobalNPCQuest();
|
||||
if(qi) {
|
||||
_global_npc_quest_status = qi->GetIdentifier();
|
||||
return qi->HasGlobalQuestSub(subname);
|
||||
}
|
||||
}
|
||||
|
||||
if(iter != _npc_quest_status.end()) {
|
||||
//loaded or failed to load
|
||||
if(iter->second != QuestFailedToLoad) {
|
||||
std::map<uint32, QuestInterface*>::iterator qiter = _interfaces.find(iter->second);
|
||||
return qiter->second->HasQuestSub(npcid, subname) || qiter->second->HasGlobalQuestSub(subname);
|
||||
if(qiter->second->HasQuestSub(npcid, subname)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
QuestInterface *qi = GetQIByGlobalNPCQuest();
|
||||
if(qi) {
|
||||
_global_npc_quest_status = qi->GetIdentifier();
|
||||
}
|
||||
|
||||
qi = GetQIByNPCQuest(npcid);
|
||||
QuestInterface *qi = GetQIByNPCQuest(npcid);
|
||||
if(qi) {
|
||||
_npc_quest_status[npcid] = qi->GetIdentifier();
|
||||
return qi->HasQuestSub(npcid, subname) || qi->HasGlobalQuestSub(subname);
|
||||
if(qi->HasQuestSub(npcid, subname)) {
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
_npc_quest_status[npcid] = QuestFailedToLoad;
|
||||
}
|
||||
}
|
||||
|
||||
if(_global_npc_quest_status == QuestUnloaded){
|
||||
QuestInterface *qi = GetQIByGlobalNPCQuest();
|
||||
if(qi) {
|
||||
_global_npc_quest_status = qi->GetIdentifier();
|
||||
if(qi->HasGlobalQuestSub(subname)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
QuestInterface *qi = GetQIByGlobalNPCQuest();
|
||||
if(qi) {
|
||||
_global_npc_quest_status = qi->GetIdentifier();
|
||||
if(qi->HasGlobalQuestSub(subname)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//std::map<uint32, uint32>::iterator iter = _npc_quest_status.find(npcid);
|
||||
//if(_global_npc_quest_status == QuestUnloaded){
|
||||
// QuestInterface *qi = GetQIByGlobalNPCQuest();
|
||||
// if(qi) {
|
||||
// _global_npc_quest_status = qi->GetIdentifier();
|
||||
// return qi->HasGlobalQuestSub(subname);
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//if(iter != _npc_quest_status.end()) {
|
||||
// //loaded or failed to load
|
||||
// if(iter->second != QuestFailedToLoad) {
|
||||
// std::map<uint32, QuestInterface*>::iterator qiter = _interfaces.find(iter->second);
|
||||
// return qiter->second->HasQuestSub(npcid, subname) || qiter->second->HasGlobalQuestSub(subname);
|
||||
// }
|
||||
//} else {
|
||||
// QuestInterface *qi = GetQIByGlobalNPCQuest();
|
||||
// if(qi) {
|
||||
// _global_npc_quest_status = qi->GetIdentifier();
|
||||
// }
|
||||
//
|
||||
// qi = GetQIByNPCQuest(npcid);
|
||||
// if(qi) {
|
||||
// _npc_quest_status[npcid] = qi->GetIdentifier();
|
||||
// return qi->HasQuestSub(npcid, subname) || qi->HasGlobalQuestSub(subname);
|
||||
// } else {
|
||||
// _npc_quest_status[npcid] = QuestFailedToLoad;
|
||||
// }
|
||||
//}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user