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) {
|
bool QuestParserCollection::HasQuestSub(uint32 npcid, const char *subname) {
|
||||||
std::map<uint32, uint32>::iterator iter = _npc_quest_status.find(npcid);
|
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()) {
|
if(iter != _npc_quest_status.end()) {
|
||||||
//loaded or failed to load
|
//loaded or failed to load
|
||||||
if(iter->second != QuestFailedToLoad) {
|
if(iter->second != QuestFailedToLoad) {
|
||||||
std::map<uint32, QuestInterface*>::iterator qiter = _interfaces.find(iter->second);
|
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 {
|
} else {
|
||||||
QuestInterface *qi = GetQIByGlobalNPCQuest();
|
QuestInterface *qi = GetQIByNPCQuest(npcid);
|
||||||
if(qi) {
|
|
||||||
_global_npc_quest_status = qi->GetIdentifier();
|
|
||||||
}
|
|
||||||
|
|
||||||
qi = GetQIByNPCQuest(npcid);
|
|
||||||
if(qi) {
|
if(qi) {
|
||||||
_npc_quest_status[npcid] = qi->GetIdentifier();
|
_npc_quest_status[npcid] = qi->GetIdentifier();
|
||||||
return qi->HasQuestSub(npcid, subname) || qi->HasGlobalQuestSub(subname);
|
if(qi->HasQuestSub(npcid, subname)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
_npc_quest_status[npcid] = QuestFailedToLoad;
|
_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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user