From 84bd5c25f6e5d896d5db5f1d7c140728fb9ac0ba Mon Sep 17 00:00:00 2001 From: Alyst3r <59404251+Alyst3r@users.noreply.github.com> Date: Wed, 17 Apr 2024 14:05:46 +0200 Subject: [PATCH 1/2] [Feature]Link color in added to collection message --- .../game/Entities/Item/Transmogrification.cpp | 24 +++++++++++++++---- .../game/Entities/Item/Transmogrification.h | 6 +++-- .../Custom/Transmog/Transmogrifier.cpp | 4 ++-- src/server/worldserver/worldserver.conf.dist | 6 +++++ 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/server/game/Entities/Item/Transmogrification.cpp b/src/server/game/Entities/Item/Transmogrification.cpp index 13803372c2b86..114638f431164 100644 --- a/src/server/game/Entities/Item/Transmogrification.cpp +++ b/src/server/game/Entities/Item/Transmogrification.cpp @@ -207,13 +207,20 @@ std::string Transmogrification::GetItemName(Item const* item, WorldSession* sess return name; } -std::string Transmogrification::GetItemLink(Item* item, WorldSession* session) +std::string Transmogrification::GetItemLink(Item* item, WorldSession* session, bool isGossipMenu) { TC_LOG_DEBUG("custom.transmog", "Transmogrification::GetItemLink"); const ItemTemplate* temp = item->GetTemplate(); + uint32 color; + + if (isGossipMenu && UseRetailStyleLinks) + color = 0xffff80ff; + else + color = ItemQualityColors[temp->Quality]; + std::ostringstream oss; - oss << "|c" << std::hex << ItemQualityColors[temp->Quality] << std::dec << + oss << "|c" << std::hex << color << std::dec << "|Hitem:" << temp->ItemId << ":" << item->GetEnchantmentId(PERM_ENCHANTMENT_SLOT) << ":" << item->GetEnchantmentId(SOCK_ENCHANTMENT_SLOT) << ":" << @@ -226,13 +233,20 @@ std::string Transmogrification::GetItemLink(Item* item, WorldSession* session) return oss.str(); } -std::string Transmogrification::GetItemLink(uint32 entry, WorldSession* session) +std::string Transmogrification::GetItemLink(uint32 entry, WorldSession* session, bool isGossipMenu) { TC_LOG_DEBUG("custom.transmog", "Transmogrification::GetItemLink"); const ItemTemplate* temp = sObjectMgr->GetItemTemplate(entry); + uint32 color; + + if (isGossipMenu && UseRetailStyleLinks) + color = 0xffff80ff; + else + color = ItemQualityColors[temp->Quality]; + std::ostringstream oss; - oss << "|c" << std::hex << ItemQualityColors[temp->Quality] << std::dec << + oss << "|c" << std::hex << color << std::dec << "|Hitem:" << entry << ":0:0:0:0:0:0:0:0:0|h[" << GetItemName(temp, session) << "]|h|r"; return oss.str(); @@ -476,6 +490,8 @@ void Transmogrification::LoadConfig(bool /*reload*/) EnableTransmogInfo = sConfigMgr->GetBoolDefault("Transmogrification.EnableTransmogInfo", true); TransmogNpcText = uint32(sConfigMgr->GetIntDefault("Transmogrification.TransmogNpcText", 65000)); + UseRetailStyleLinks = sConfigMgr->GetBoolDefault("Transmogrification.UseRetailStyleLinks", false); + std::istringstream issAllowed(sConfigMgr->GetStringDefault("Transmogrification.Allowed", "")); std::istringstream issNotAllowed(sConfigMgr->GetStringDefault("Transmogrification.NotAllowed", "")); while (issAllowed.good()) diff --git a/src/server/game/Entities/Item/Transmogrification.h b/src/server/game/Entities/Item/Transmogrification.h index 13cab73c42ac2..14ab2a731a975 100644 --- a/src/server/game/Entities/Item/Transmogrification.h +++ b/src/server/game/Entities/Item/Transmogrification.h @@ -33,6 +33,8 @@ class TC_GAME_API Transmogrification bool EnableTransmogInfo; uint32 TransmogNpcText; + bool UseRetailStyleLinks; + // Use IsAllowed() and IsNotAllowed() // these are thread unsafe, but assumed to be data so it should be safe std::set Allowed; @@ -85,8 +87,8 @@ class TC_GAME_API Transmogrification const char * GetSlotName(uint8 slot, WorldSession* session); std::string GetItemName(ItemTemplate const* itemTemplate, WorldSession* session); std::string GetItemName(Item const* itemTemplate, WorldSession* session); - std::string GetItemLink(Item* item, WorldSession* session); - std::string GetItemLink(uint32 entry, WorldSession* session); + std::string GetItemLink(Item* item, WorldSession* session, bool isGossipMenu = false); + std::string GetItemLink(uint32 entry, WorldSession* session, bool isGossipMenu = false); Item* GetEquippedItem(Player* player, uint8 slot); void UpdateItem(Player* player, Item* item); diff --git a/src/server/scripts/Custom/Transmog/Transmogrifier.cpp b/src/server/scripts/Custom/Transmog/Transmogrifier.cpp index 77c08b0ed1f9c..ea67bada072bd 100644 --- a/src/server/scripts/Custom/Transmog/Transmogrifier.cpp +++ b/src/server/scripts/Custom/Transmog/Transmogrifier.cpp @@ -421,7 +421,7 @@ class CS_Transmogrification : public CreatureScript switch (std::get(v)) { case TRANSMOG_TYPE_ITEM: - AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, Transmogrification::instance().GetItemIcon(std::get(v), 30, 30, -18, 0) + Transmogrification::instance().GetItemLink(std::get(v), session), sender, action); + AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, Transmogrification::instance().GetItemIcon(std::get(v), 30, 30, -18, 0) + Transmogrification::instance().GetItemLink(std::get(v), session, true), sender, action); break; case TRANSMOG_TYPE_ENCHANT: { @@ -692,7 +692,7 @@ class CS_Transmogrification : public CreatureScript { decltype(auto) source = sObjectMgr->GetItemTemplate(appearance); if (source && !Transmogrification::instance().CannotTransmogrifyItemWithItem(player, target, source, true)) - actions.emplace_back(appearance, Transmogrification::instance().GetItemLink(source->ItemId, player->GetSession()), Transmogrification::instance().GetItemName(source, player->GetSession())); + actions.emplace_back(appearance, Transmogrification::instance().GetItemLink(source->ItemId, player->GetSession(), true), Transmogrification::instance().GetItemName(source, player->GetSession())); } } break; diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index cedcbc0089772..677f665f2e1be 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -4104,6 +4104,10 @@ PacketSpoof.BanDuration = 86400 # Description: A list of item entries that are NOT allowed for transmogrification # Example: "25 35674 5623" # Default: "" +# +# Transmogrification.UseRetailStyleLinks +# Description: Enables / Disables retail style pink item link in "%s has been added to your appearance collection" message. +# Default: 0 Logger.custom.transmog = 3, Console Server @@ -4113,6 +4117,8 @@ Transmogrification.TransmogNpcText = 65000 Transmogrification.Allowed = "" Transmogrification.NotAllowed = "" +Transmogrification.UseRetailStyleLinks = 0 + # # COPPER COST # From 61be2c72c15abe235b4b8b5114171fe2f904bc44 Mon Sep 17 00:00:00 2001 From: Alyst3r <59404251+Alyst3r@users.noreply.github.com> Date: Wed, 17 Apr 2024 14:08:09 +0200 Subject: [PATCH 2/2] Oopsie - fixed conditionals --- src/server/game/Entities/Item/Transmogrification.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/game/Entities/Item/Transmogrification.cpp b/src/server/game/Entities/Item/Transmogrification.cpp index 114638f431164..f7335d338fe2f 100644 --- a/src/server/game/Entities/Item/Transmogrification.cpp +++ b/src/server/game/Entities/Item/Transmogrification.cpp @@ -214,7 +214,7 @@ std::string Transmogrification::GetItemLink(Item* item, WorldSession* session, b const ItemTemplate* temp = item->GetTemplate(); uint32 color; - if (isGossipMenu && UseRetailStyleLinks) + if (!isGossipMenu && UseRetailStyleLinks) color = 0xffff80ff; else color = ItemQualityColors[temp->Quality]; @@ -240,7 +240,7 @@ std::string Transmogrification::GetItemLink(uint32 entry, WorldSession* session, const ItemTemplate* temp = sObjectMgr->GetItemTemplate(entry); uint32 color; - if (isGossipMenu && UseRetailStyleLinks) + if (!isGossipMenu && UseRetailStyleLinks) color = 0xffff80ff; else color = ItemQualityColors[temp->Quality];