Core/Quests: Abandon&Finish quest items

Destroy quest items on quest failure/abandon.

Failing/abandoning a quest should not unconditionally remove required items, non-quest specific items such as crafting reagents should remain in inventory.

Delete all quest bound items on quest reward, failure or abandoning.

Only delete all quest bound items from inventory on turn in if the quest is not repeatable
This commit is contained in:
poszer
2019-01-07 18:13:47 +01:00
parent b5d56462e2
commit d213a4ef93
3 changed files with 51 additions and 22 deletions

View File

@@ -1399,6 +1399,7 @@ class Player : public Unit, public GridObject<Player>
bool CanRewardQuest(Quest const* quest, uint32 reward, bool msg);
void AddQuestAndCheckCompletion(Quest const* quest, Object* questGiver);
void AddQuest(Quest const* quest, Object* questGiver);
void AbandonQuest(uint32 quest_id);
void CompleteQuest(uint32 quest_id);
void IncompleteQuest(uint32 quest_id);
void RewardQuest(Quest const* quest, uint32 reward, Object* questGiver, bool announce = true);
@@ -1486,7 +1487,7 @@ class Player : public Unit, public GridObject<Player>
void MoneyChanged(uint32 value);
void ReputationChanged(FactionEntry const* factionEntry);
void ReputationChanged2(FactionEntry const* factionEntry);
bool HasQuestForItem(uint32 itemid) const;
bool HasQuestForItem(uint32 itemId, uint32 excludeQuestId = 0, bool turnIn = false) const;
bool HasQuestForGO(int32 GOId) const;
void UpdateForQuestWorldObjects();
bool CanShareQuest(uint32 quest_id) const;