aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Item/Item.cpp8
-rw-r--r--src/server/game/Entities/Item/Item.h2
-rw-r--r--src/server/game/Entities/Player/Player.cpp3
-rw-r--r--src/server/game/Handlers/ArtifactHandler.cpp4
4 files changed, 15 insertions, 2 deletions
diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp
index f4ec2ce9ddb..9f5260d3e55 100644
--- a/src/server/game/Entities/Item/Item.cpp
+++ b/src/server/game/Entities/Item/Item.cpp
@@ -2495,6 +2495,14 @@ void Item::ClearBonuses()
SetUpdateFieldValue(m_values.ModifyValue(&Item::m_itemData).ModifyValue(&UF::ItemData::ItemAppearanceModID), _bonusData.AppearanceModID);
}
+bool Item::IsArtifactDisabled() const
+{
+ if (ArtifactEntry const* artifact = sArtifactStore.LookupEntry(GetTemplate()->GetArtifactID()))
+ return artifact->ArtifactCategoryID != 2; // fishing artifact
+
+ return true;
+}
+
UF::ArtifactPower const* Item::GetArtifactPower(uint32 artifactPowerId) const
{
auto indexItr = m_artifactPowerIdToIndex.find(artifactPowerId);
diff --git a/src/server/game/Entities/Item/Item.h b/src/server/game/Entities/Item/Item.h
index f32838feeb7..6eca916db59 100644
--- a/src/server/game/Entities/Item/Item.h
+++ b/src/server/game/Entities/Item/Item.h
@@ -387,6 +387,8 @@ class TC_GAME_API Item : public Object
ObjectGuid GetChildItem() const { return m_childItem; }
void SetChildItem(ObjectGuid childItem) { m_childItem = childItem; }
+ bool IsArtifactDisabled() const;
+
UF::ArtifactPower const* GetArtifactPower(uint32 artifactPowerId) const;
void AddArtifactPower(ArtifactPowerData const* artifactPower);
void SetArtifactPower(uint16 artifactPowerId, uint8 purchasedRank, uint8 currentRankWithBonus);
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 3c3b77f7157..c7fdce1facf 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -7842,6 +7842,9 @@ void Player::UpdateItemSetAuras(bool formChange /*= false*/)
void Player::ApplyArtifactPowers(Item* item, bool apply)
{
+ if (item->IsArtifactDisabled())
+ return;
+
for (UF::ArtifactPower const& artifactPower : item->m_itemData->ArtifactPowers)
{
uint8 rank = artifactPower.CurrentRankWithBonus;
diff --git a/src/server/game/Handlers/ArtifactHandler.cpp b/src/server/game/Handlers/ArtifactHandler.cpp
index 2913afc5958..5e3d1078b15 100644
--- a/src/server/game/Handlers/ArtifactHandler.cpp
+++ b/src/server/game/Handlers/ArtifactHandler.cpp
@@ -32,7 +32,7 @@ void WorldSession::HandleArtifactAddPower(WorldPackets::Artifact::ArtifactAddPow
return;
Item* artifact = _player->GetItemByGuid(artifactAddPower.ArtifactGUID);
- if (!artifact)
+ if (!artifact || artifact->IsArtifactDisabled())
return;
uint32 currentArtifactTier = artifact->GetModifier(ITEM_MODIFIER_ARTIFACT_TIER);
@@ -204,7 +204,7 @@ void WorldSession::HandleConfirmArtifactRespec(WorldPackets::Artifact::ConfirmAr
return;
Item* artifact = _player->GetItemByGuid(confirmArtifactRespec.ArtifactGUID);
- if (!artifact)
+ if (!artifact || artifact->IsArtifactDisabled())
return;
uint64 xpCost = 0;