diff options
author | Shauren <shauren.trinity@gmail.com> | 2022-06-09 20:50:03 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-06-09 21:27:02 +0200 |
commit | f820ff178decf7d844b7c398b79be7269feeb53e (patch) | |
tree | b4bf6e9b854364e6d9ae29ebb30aa2bd74267781 /src/server/game/Handlers/TransmogrificationHandler.cpp | |
parent | 125ada42f6be220a52315d06d61e472a2ba83395 (diff) |
Core/Transmog: Implemented TransmogIllusionFlags::PlayerConditionGrantsOnLogin and fixed transmog illusion validation when transmogging items
Diffstat (limited to 'src/server/game/Handlers/TransmogrificationHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/TransmogrificationHandler.cpp | 18 |
1 files changed, 3 insertions, 15 deletions
diff --git a/src/server/game/Handlers/TransmogrificationHandler.cpp b/src/server/game/Handlers/TransmogrificationHandler.cpp index d94d66fadee..855fd3bebb3 100644 --- a/src/server/game/Handlers/TransmogrificationHandler.cpp +++ b/src/server/game/Handlers/TransmogrificationHandler.cpp @@ -128,34 +128,22 @@ void WorldSession::HandleTransmogrifyItems(WorldPackets::Transmogrification::Tra return; } - SpellItemEnchantmentEntry const* illusion = sSpellItemEnchantmentStore.LookupEntry(transmogItem.SpellItemEnchantmentID); + TransmogIllusionEntry const* illusion = sDB2Manager.GetTransmogIllusionForEnchantment(transmogItem.SpellItemEnchantmentID); if (!illusion) { TC_LOG_DEBUG("network", "WORLD: HandleTransmogrifyItems - %s, Name: %s tried to transmogrify illusion using invalid enchant (%d).", player->GetGUID().ToString().c_str(), player->GetName().c_str(), transmogItem.SpellItemEnchantmentID); return; } - if (!illusion->ItemVisual || !illusion->GetFlags().HasFlag(SpellItemEnchantmentFlags::AllowTransmog)) + if (PlayerConditionEntry const* condition = sPlayerConditionStore.LookupEntry(illusion->UnlockConditionID)) { - TC_LOG_DEBUG("network", "WORLD: HandleTransmogrifyItems - %s, Name: %s tried to transmogrify illusion using not allowed enchant (%d).", player->GetGUID().ToString().c_str(), player->GetName().c_str(), transmogItem.SpellItemEnchantmentID); - return; - } - - if (PlayerConditionEntry const* condition = sPlayerConditionStore.LookupEntry(illusion->TransmogUseConditionID)) - { - if (!sConditionMgr->IsPlayerMeetingCondition(player, condition)) + if (!ConditionMgr::IsPlayerMeetingCondition(player, condition)) { TC_LOG_DEBUG("network", "WORLD: HandleTransmogrifyItems - %s, Name: %s tried to transmogrify illusion using not allowed enchant (%d).", player->GetGUID().ToString().c_str(), player->GetName().c_str(), transmogItem.SpellItemEnchantmentID); return; } } - if (illusion->ScalingClassRestricted > 0 && uint8(illusion->ScalingClassRestricted) != player->GetClass()) - { - TC_LOG_DEBUG("network", "WORLD: HandleTransmogrifyItems - %s, Name: %s tried to transmogrify illusion using not allowed class enchant (%d).", player->GetGUID().ToString().c_str(), player->GetName().c_str(), transmogItem.SpellItemEnchantmentID); - return; - } - illusionItems[itemTransmogrified] = transmogItem.SpellItemEnchantmentID; cost += illusion->TransmogCost; } |