mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-24 02:46:33 +01:00
Core/Quests: Fixed order of RewardChoiceItems and reputation reward. (#19904)
(cherry picked from commit 8b2bd9a5f2)
This commit is contained in:
@@ -15676,6 +15676,24 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
|
||||
|
||||
RemoveTimedQuest(quest_id);
|
||||
|
||||
if (quest->GetRewItemsCount() > 0)
|
||||
{
|
||||
for (uint32 i = 0; i < quest->GetRewItemsCount(); ++i)
|
||||
{
|
||||
if (uint32 itemId = quest->RewardItemId[i])
|
||||
{
|
||||
ItemPosCountVec dest;
|
||||
if (CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemId, quest->RewardItemCount[i]) == EQUIP_ERR_OK)
|
||||
{
|
||||
Item* item = StoreNewItem(dest, itemId, true, GenerateItemRandomBonusListId(itemId));
|
||||
SendNewItem(item, quest->RewardItemCount[i], true, false);
|
||||
}
|
||||
else if (quest->IsDFQuest())
|
||||
SendItemRetrievalMail(itemId, quest->RewardItemCount[i], ItemContext::Quest_Reward);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ItemTemplate const* rewardProto = sObjectMgr->GetItemTemplate(reward);
|
||||
if (rewardProto && quest->GetRewChoiceItemsCount())
|
||||
{
|
||||
@@ -15697,24 +15715,6 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
|
||||
if (rewardProto && quest->GetQuestPackageID())
|
||||
RewardQuestPackage(quest->GetQuestPackageID(), reward);
|
||||
|
||||
if (quest->GetRewItemsCount() > 0)
|
||||
{
|
||||
for (uint32 i = 0; i < quest->GetRewItemsCount(); ++i)
|
||||
{
|
||||
if (uint32 itemId = quest->RewardItemId[i])
|
||||
{
|
||||
ItemPosCountVec dest;
|
||||
if (CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemId, quest->RewardItemCount[i]) == EQUIP_ERR_OK)
|
||||
{
|
||||
Item* item = StoreNewItem(dest, itemId, true, GenerateItemRandomBonusListId(itemId));
|
||||
SendNewItem(item, quest->RewardItemCount[i], true, false);
|
||||
}
|
||||
else if (quest->IsDFQuest())
|
||||
SendItemRetrievalMail(itemId, quest->RewardItemCount[i], ItemContext::Quest_Reward);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (uint8 i = 0; i < QUEST_REWARD_CURRENCY_COUNT; ++i)
|
||||
if (quest->RewardCurrencyId[i])
|
||||
ModifyCurrency(quest->RewardCurrencyId[i], quest->RewardCurrencyCount[i]);
|
||||
@@ -15722,8 +15722,6 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
|
||||
if (uint32 skill = quest->GetRewardSkillId())
|
||||
UpdateSkillPro(skill, 1000, quest->GetRewardSkillPoints());
|
||||
|
||||
RewardReputation(quest);
|
||||
|
||||
uint16 log_slot = FindQuestSlot(quest_id);
|
||||
if (log_slot < MAX_QUEST_LOG_SIZE)
|
||||
SetQuestSlot(log_slot, 0);
|
||||
@@ -15791,6 +15789,8 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
|
||||
|
||||
SendQuestReward(quest, questGiver ? questGiver->ToCreature() : nullptr, XP, !announce);
|
||||
|
||||
RewardReputation(quest);
|
||||
|
||||
// cast spells after mark quest complete (some spells have quest completed state requirements in spell_area data)
|
||||
if (quest->GetRewSpell() > 0)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user