diff options
| author | Shauren <shauren.trinity@gmail.com> | 2019-11-15 23:25:01 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2019-11-15 23:25:01 +0100 |
| commit | aa8ad4d2fd6144fca3b69261a90a663df682e571 (patch) | |
| tree | 106463866c9f5bdf0a3e271b66211832d19cb54d /src/server/game/Entities | |
| parent | 36d6959ae6a945408d32a62390ae14e6f956dde2 (diff) | |
Core/Achievements: Implement many new ModifierTree types
Diffstat (limited to 'src/server/game/Entities')
5 files changed, 29 insertions, 1 deletions
diff --git a/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.cpp b/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.cpp index 284aa202d7e..8366b2dadd4 100644 --- a/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.cpp +++ b/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.cpp @@ -200,6 +200,15 @@ void AzeriteItem::GiveXP(uint64 xp) owner->SendDirectMessage(xpGain.Write()); } +UF::SelectedAzeriteEssences const* AzeriteItem::GetSelectedAzeriteEssences() const +{ + for (UF::SelectedAzeriteEssences const& essences : m_azeriteItemData->SelectedEssences) + if (essences.Enabled) + return &essences; + + return nullptr; +} + void AzeriteItem::BuildValuesCreate(ByteBuffer* data, Player const* target) const { UF::UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target); diff --git a/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.h b/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.h index b255e094358..f9afbf2e0df 100644 --- a/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.h +++ b/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.h @@ -41,6 +41,8 @@ public: static uint64 CalcTotalXPToNextLevel(uint32 level, uint32 knowledgeLevel); void GiveXP(uint64 xp); + UF::SelectedAzeriteEssences const* GetSelectedAzeriteEssences() const; + void BuildValuesCreate(ByteBuffer* data, Player const* target) const override; void BuildValuesUpdate(ByteBuffer* data, Player const* target) const override; void BuildValuesUpdateWithFlag(ByteBuffer* data, UF::UpdateFieldFlag flags, Player const* target) const override; diff --git a/src/server/game/Entities/Object/Updates/UpdateField.h b/src/server/game/Entities/Object/Updates/UpdateField.h index 952bc97370f..f99960fa451 100644 --- a/src/server/game/Entities/Object/Updates/UpdateField.h +++ b/src/server/game/Entities/Object/Updates/UpdateField.h @@ -615,6 +615,11 @@ namespace UF return _values.end(); } + bool empty() const + { + return _values.empty(); + } + std::size_t size() const { return _values.size(); diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 1764de1c30c..4666423626a 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -6719,6 +6719,15 @@ uint32 Player::GetCurrencyOnWeek(uint32 id) const return itr->second.WeeklyQuantity; } +uint32 Player::GetTrackedCurrencyCount(uint32 id) const +{ + PlayerCurrenciesMap::const_iterator itr = _currencyStorage.find(id); + if (itr == _currencyStorage.end()) + return 0; + + return itr->second.TrackedQuantity; +} + bool Player::HasCurrency(uint32 id, uint32 count) const { PlayerCurrenciesMap::const_iterator itr = _currencyStorage.find(id); @@ -15003,6 +15012,7 @@ void Player::AddQuestAndCheckCompletion(Quest const* quest, Object* questGiver) case TYPEID_ITEM: case TYPEID_CONTAINER: case TYPEID_AZERITE_ITEM: + case TYPEID_AZERITE_EMPOWERED_ITEM: { Item* item = static_cast<Item*>(questGiver); sScriptMgr->OnQuestAccept(this, item, quest); @@ -15541,7 +15551,7 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver, } if (quest->GetZoneOrSort() > 0) - UpdateCriteria(CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE, quest->GetZoneOrSort()); + UpdateCriteria(CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE, quest->GetQuestId()); UpdateCriteria(CRITERIA_TYPE_COMPLETE_QUEST_COUNT); UpdateCriteria(CRITERIA_TYPE_COMPLETE_QUEST, quest->GetQuestId()); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 83ae71d25a1..679ff1fa40e 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1188,6 +1188,8 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> uint32 GetCurrencyOnWeek(uint32 id) const; /// return week cap by currency id uint32 GetCurrencyWeekCap(uint32 id) const; + /// return tracked currency count by currency id + uint32 GetTrackedCurrencyCount(uint32 id) const; /// return presence related currency bool HasCurrency(uint32 id, uint32 count) const; /// initialize currency count for custom initialization at create character |
