diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Item/Item.cpp | 8 | ||||
-rw-r--r-- | src/server/game/Entities/Item/Item.h | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 3 | ||||
-rw-r--r-- | src/server/game/Handlers/ArtifactHandler.cpp | 4 |
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; |