aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2019-11-15 23:25:01 +0100
committerShauren <shauren.trinity@gmail.com>2019-11-15 23:25:01 +0100
commitaa8ad4d2fd6144fca3b69261a90a663df682e571 (patch)
tree106463866c9f5bdf0a3e271b66211832d19cb54d /src/server/game/Entities
parent36d6959ae6a945408d32a62390ae14e6f956dde2 (diff)
Core/Achievements: Implement many new ModifierTree types
Diffstat (limited to 'src/server/game/Entities')
-rw-r--r--src/server/game/Entities/Item/AzeriteItem/AzeriteItem.cpp9
-rw-r--r--src/server/game/Entities/Item/AzeriteItem/AzeriteItem.h2
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateField.h5
-rw-r--r--src/server/game/Entities/Player/Player.cpp12
-rw-r--r--src/server/game/Entities/Player/Player.h2
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