Core/Quests: Resolve ambiguity between QUEST_STATUS_COMPLETED and rewarded state by implementing QUEST_STATUS_REWARDED. The latter is not used in the database explicitly, only in the core. This is to prevent overhead by iterating over the rewarded quests storage multiple times.

All relevant upper level code has been updated accordingly to the best of my ability.
This commit is contained in:
Machiavelli
2011-01-13 23:06:59 +01:00
parent 57ee357c02
commit d399daab59
9 changed files with 19 additions and 12 deletions
+2 -2
View File
@@ -1112,8 +1112,8 @@ public:
bool OnGossipHello(Player *pPlayer, GameObject *pGO)
{
if (pPlayer->GetQuestStatus(QUEST_DOING_YOUR_DUTY) == QUEST_STATUS_INCOMPLETE ||
(pPlayer->GetQuestStatus(QUEST_DOING_YOUR_DUTY) == QUEST_STATUS_COMPLETE))
QuestStatus status = pPlayer->GetQuestStatus(QUEST_DOING_YOUR_DUTY);
if (status == QUEST_STATUS_INCOMPLETE || status == QUEST_STATUS_COMPLETE || status == QUEST_STATUS_REWARDED)
{
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_USE_OUTHOUSE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
pPlayer->SEND_GOSSIP_MENU(GOSSIP_OUTHOUSE_VACANT, pGO->GetGUID());
+3 -2
View File
@@ -112,7 +112,7 @@ public:
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_BRACK2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9);
//Spinebreaker Post
if (pPlayer->GetQuestStatus(10242) == QUEST_STATUS_COMPLETE && !pPlayer->GetQuestRewardStatus(10242))
if (pPlayer->GetQuestStatus(10242) == QUEST_STATUS_COMPLETE)
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_BRACK3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 10);
break;
case 23413: // Blade's Edge Mountains - Skyguard Handler Irena
@@ -132,7 +132,7 @@ public:
break;
case 20162: // Netherstorm - Veronia
//Behind Enemy Lines
if (pPlayer->GetQuestStatus(10652) && !pPlayer->GetQuestRewardStatus(10652))
if (pPlayer->GetQuestStatus(10652) != QUEST_STATUS_REWARDED)
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_VERONIA, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 15);
break;
case 23415: // Terokkar Forest - Skyguard Handler Deesak
@@ -170,6 +170,7 @@ public:
case 26602:
if (pCreature->isTaxi())
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TAXI, GOSSIP_THRICESTAR1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 26);
if (pPlayer->GetQuestStatus(11692) == QUEST_STATUS_COMPLETE)
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_THRICESTAR2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 27);
break;