Core/Quests: Delete all quest bound items on quest reward, failure or abandoning

By runningnak3d
This commit is contained in:
Aokromes committed 2016-07-30 12:13:01 +02:00
1 parent 21b19bd179
commit 4bc52061e6
1 file changed
+18 -11
+18 -11
View File
@@ -14988,20 +14988,27 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
uint32 quest_id = quest->GetQuestId();
for (uint8 i = 0; i < QUEST_ITEM_OBJECTIVES_COUNT; ++i)
if (quest->RequiredItemId[i])
DestroyItemCount(quest->RequiredItemId[i], quest->RequiredItemCount[i], true);
{
if (ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(quest->RequiredItemId[i]))
{
if (quest->RequiredItemCount[i] > 0 && (itemTemplate->Bonding == BIND_QUEST_ITEM || itemTemplate->Bonding == BIND_QUEST_ITEM1))
DestroyItemCount(quest->RequiredItemId[i], 9999, true, true);
else
DestroyItemCount(quest->RequiredItemId[i], quest->RequiredItemCount[i], true, true);
}
}
for (uint8 i = 0; i < QUEST_REQUIRED_CURRENCY_COUNT; ++i)
if (quest->RequiredCurrencyId[i])
ModifyCurrency(quest->RequiredCurrencyId[i], -int32(quest->RequiredCurrencyCount[i]));
for (uint8 i = 0; i < QUEST_SOURCE_ITEM_IDS_COUNT; ++i)
{
if (quest->ItemDrop[i])
if (ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(quest->ItemDrop[i]))
{
uint32 count = quest->ItemDropQuantity[i];
DestroyItemCount(quest->ItemDrop[i], count ? count : 9999, true);
}
if (quest->ItemDropQuantity[i] > 0 && (itemTemplate->Bonding == BIND_QUEST_ITEM || itemTemplate->Bonding == BIND_QUEST_ITEM1))
DestroyItemCount(quest->ItemDrop[i], 9999, true, true);
else
DestroyItemCount(quest->ItemDrop[i], quest->ItemDropQuantity[i], true, true); }
}
RemoveTimedQuest(quest_id);
@@ -15218,12 +15225,12 @@ void Player::FailQuest(uint32 questId)
for (uint8 i = 0; i < QUEST_ITEM_OBJECTIVES_COUNT; ++i)
if (ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(quest->RequiredItemId[i]))
if (quest->RequiredItemCount[i] > 0 && (itemTemplate->Bonding == BIND_QUEST_ITEM || itemTemplate->Bonding == BIND_QUEST_ITEM1))
DestroyItemCount(quest->RequiredItemId[i], quest->RequiredItemCount[i], true, true);
DestroyItemCount(quest->RequiredItemId[i], 9999, true, true);
for (uint8 i = 0; i < QUEST_SOURCE_ITEM_IDS_COUNT; ++i)
if (ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(quest->ItemDrop[i]))
if (quest->ItemDropQuantity[i] > 0 && (itemTemplate->Bonding == BIND_QUEST_ITEM || itemTemplate->Bonding == BIND_QUEST_ITEM1))
DestroyItemCount(quest->ItemDrop[i], quest->ItemDropQuantity[i], true, true);
DestroyItemCount(quest->ItemDrop[i], 9999, true, true);
}
}
@@ -15235,12 +15242,12 @@ void Player::AbandonQuest(uint32 questId)
for (uint8 i = 0; i < QUEST_ITEM_OBJECTIVES_COUNT; ++i)
if (ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(quest->RequiredItemId[i]))
if (quest->RequiredItemCount[i] > 0 && (itemTemplate->Bonding == BIND_QUEST_ITEM || itemTemplate->Bonding == BIND_QUEST_ITEM1))
DestroyItemCount(quest->RequiredItemId[i], quest->RequiredItemCount[i], true, true);
DestroyItemCount(quest->RequiredItemId[i], 9999, true, true);
for (uint8 i = 0; i < QUEST_SOURCE_ITEM_IDS_COUNT; ++i)
if (ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(quest->ItemDrop[i]))
if (quest->ItemDropQuantity[i] > 0 && (itemTemplate->Bonding == BIND_QUEST_ITEM || itemTemplate->Bonding == BIND_QUEST_ITEM1))
DestroyItemCount(quest->ItemDrop[i], quest->ItemDropQuantity[i], true, true);
DestroyItemCount(quest->ItemDrop[i], 9999, true, true);
}
}