Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
491 changes: 441 additions & 50 deletions data/sql/db-world/trasm_world_texts.sql

Large diffs are not rendered by default.

Large diffs are not rendered by default.

26 changes: 13 additions & 13 deletions src/Transmogrification.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -476,7 +476,7 @@ bool Transmogrification::AddCollectedAppearance(uint32 accountId, uint32 itemId)
return inserted;
}

TransmogAcoreStrings Transmogrification::Transmogrify(Player* player, uint32 itemEntry, uint8 slot, /*uint32 newEntry, */bool no_cost) {
TransmogStrings Transmogrification::Transmogrify(Player* player, uint32 itemEntry, uint8 slot, /*uint32 newEntry, */bool no_cost) {
if (itemEntry == UINT_MAX) // Hidden transmog
{
return Transmogrify(player, nullptr, slot, no_cost, true);
Expand All @@ -485,14 +485,14 @@ TransmogAcoreStrings Transmogrification::Transmogrify(Player* player, uint32 ite
if (!sObjectMgr->GetItemTemplate(itemEntry))
{
LOG_ERROR("module", "Transmogrification::Transmogrify - Player ({}) tried to transmogrify with an invalid item entry ({}).", player->GetGUID().ToString(), itemEntry);
return LANG_ERR_TRANSMOG_MISSING_SRC_ITEM;
return LANG_TRANSMOG_MISSING_SRC_ITEM;
}

Item* itemTransmogrifier = Item::CreateItem(itemEntry, 1, 0);
return Transmogrify(player, itemTransmogrifier, slot, no_cost, false);
}

TransmogAcoreStrings Transmogrification::Transmogrify(Player* player, ObjectGuid itemGUID, uint8 slot, /*uint32 newEntry, */bool no_cost) {
TransmogStrings Transmogrification::Transmogrify(Player* player, ObjectGuid itemGUID, uint8 slot, /*uint32 newEntry, */bool no_cost) {
Item* itemTransmogrifier = NULL;
// guid of the transmogrifier item, if it's not 0
if (itemGUID)
Expand All @@ -501,28 +501,28 @@ TransmogAcoreStrings Transmogrification::Transmogrify(Player* player, ObjectGuid
if (!itemTransmogrifier)
{
//TC_LOG_DEBUG(LOG_FILTER_NETWORKIO, "WORLD: HandleTransmogrifyItems - Player (GUID: {}, name: {}) tried to transmogrify with an invalid item (lowguid: {}).", player->GetGUIDLow(), player->GetName(), GUID_LOPART(itemGUID));
return LANG_ERR_TRANSMOG_MISSING_SRC_ITEM;
return LANG_TRANSMOG_MISSING_SRC_ITEM;
}
}
return Transmogrify(player, itemTransmogrifier, slot, no_cost, false);
}

TransmogAcoreStrings Transmogrification::Transmogrify(Player* player, Item* itemTransmogrifier, uint8 slot, /*uint32 newEntry, */bool no_cost, bool hidden_transmog)
TransmogStrings Transmogrification::Transmogrify(Player* player, Item* itemTransmogrifier, uint8 slot, /*uint32 newEntry, */bool no_cost, bool hidden_transmog)
{
int32 cost = 0;
// slot of the transmogrified item
if (slot >= EQUIPMENT_SLOT_END)
{
// TC_LOG_DEBUG(LOG_FILTER_NETWORKIO, "WORLD: HandleTransmogrifyItems - Player (GUID: {}, name: {}) tried to transmogrify an item (lowguid: {}) with a wrong slot ({}) when transmogrifying items.", player->GetGUIDLow(), player->GetName(), GUID_LOPART(itemGUID), slot);
return LANG_ERR_TRANSMOG_INVALID_SLOT;
return LANG_TRANSMOG_INVALID_SLOT;
}

// transmogrified item
Item* itemTransmogrified = player->GetItemByPos(INVENTORY_SLOT_BAG_0, slot);
if (!itemTransmogrified)
{
//TC_LOG_DEBUG(LOG_FILTER_NETWORKIO, "WORLD: HandleTransmogrifyItems - Player (GUID: {}, name: {}) tried to transmogrify an invalid item in a valid slot (slot: {}).", player->GetGUIDLow(), player->GetName(), slot);
return LANG_ERR_TRANSMOG_MISSING_DEST_ITEM;
return LANG_TRANSMOG_MISSING_DEST_ITEM;
}

if (hidden_transmog)
Expand All @@ -539,12 +539,12 @@ TransmogAcoreStrings Transmogrification::Transmogrify(Player* player, Item* item
else
{
if (!player->HasEnoughMoney(cost))
return LANG_ERR_TRANSMOG_NOT_ENOUGH_MONEY;
return LANG_TRANSMOG_NOT_ENOUGH_MONEY;
player->ModifyMoney(-cost, false);
}
}
SetFakeEntry(player, HIDDEN_ITEM_ID, slot, itemTransmogrified); // newEntry
return LANG_ERR_TRANSMOG_OK;
return LANG_TRANSMOG_OK;
}

if (!itemTransmogrifier) // reset look newEntry
Expand All @@ -557,7 +557,7 @@ TransmogAcoreStrings Transmogrification::Transmogrify(Player* player, Item* item
if (!CanTransmogrifyItemWithItem(player, itemTransmogrified->GetTemplate(), itemTransmogrifier->GetTemplate()))
{
//TC_LOG_DEBUG(LOG_FILTER_NETWORKIO, "WORLD: HandleTransmogrifyItems - Player (GUID: {}, name: {}) failed CanTransmogrifyItemWithItem ({} with {}).", player->GetGUIDLow(), player->GetName(), itemTransmogrified->GetEntry(), itemTransmogrifier->GetEntry());
return LANG_ERR_TRANSMOG_INVALID_ITEMS;
return LANG_TRANSMOG_INVALID_ITEMS;
}

if (!no_cost)
Expand All @@ -567,7 +567,7 @@ TransmogAcoreStrings Transmogrification::Transmogrify(Player* player, Item* item
if (player->HasItemCount(TokenEntry, TokenAmount))
player->DestroyItemCount(TokenEntry, TokenAmount, true);
else
return LANG_ERR_TRANSMOG_NOT_ENOUGH_TOKENS;
return LANG_TRANSMOG_NOT_ENOUGH_TOKENS;
}

cost = GetSpecialPrice(itemTransmogrified->GetTemplate());
Expand All @@ -582,7 +582,7 @@ TransmogAcoreStrings Transmogrification::Transmogrify(Player* player, Item* item
else
{
if (!player->HasEnoughMoney(cost))
return LANG_ERR_TRANSMOG_NOT_ENOUGH_MONEY;
return LANG_TRANSMOG_NOT_ENOUGH_MONEY;
player->ModifyMoney(-cost, false);
}
}
Expand All @@ -605,7 +605,7 @@ TransmogAcoreStrings Transmogrification::Transmogrify(Player* player, Item* item
itemTransmogrifier->ClearSoulboundTradeable(player);
}

return LANG_ERR_TRANSMOG_OK;
return LANG_TRANSMOG_OK;
}

bool Transmogrification::CanTransmogrifyItemWithItem(Player* player, ItemTemplate const* target, ItemTemplate const* source) const
Expand Down
84 changes: 53 additions & 31 deletions src/Transmogrification.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,35 +44,57 @@ enum MixedWeaponSettings
MIXED_WEAPONS_LOOSE = 2
};

enum TransmogAcoreStrings // Language.h might have same entries, appears when executing SQL, change if needed
enum TransmogStrings : uint32
{
LANG_ERR_TRANSMOG_OK = 11100, // change this
LANG_ERR_TRANSMOG_INVALID_SLOT,
LANG_ERR_TRANSMOG_INVALID_SRC_ENTRY,
LANG_ERR_TRANSMOG_MISSING_SRC_ITEM,
LANG_ERR_TRANSMOG_MISSING_DEST_ITEM,
LANG_ERR_TRANSMOG_INVALID_ITEMS,
LANG_ERR_TRANSMOG_NOT_ENOUGH_MONEY,
LANG_ERR_TRANSMOG_NOT_ENOUGH_TOKENS,

LANG_ERR_UNTRANSMOG_OK,
LANG_ERR_UNTRANSMOG_NO_TRANSMOGS,

#ifdef PRESETS
LANG_PRESET_ERR_INVALID_NAME,
#endif
LANG_CMD_TRANSMOG_SHOW = 11111,
LANG_CMD_TRANSMOG_HIDE = 11112,
LANG_CMD_TRANSMOG_ADD_UNSUITABLE = 11113,
LANG_CMD_TRANSMOG_ADD_FORBIDDEN = 11114,
LANG_CMD_TRANSMOG_BEGIN_SYNC = 11115,
LANG_CMD_TRANSMOG_COMPLETE_SYNC = 11116,
LANG_CMD_TRANSMOG_VENDOR_INTERFACE_ENABLE = 11117,
LANG_CMD_TRANSMOG_VENDOR_INTERFACE_DISABLE = 11118,

LANG_TRANSMOG_SET_DISCLAIMER = 11119,
LANG_CMD_TRANSMOG_DISCLAIMER_ON = 11120,
LANG_CMD_TRANSMOG_DISCLAIMER_OFF = 11121
// Transmog result strings
LANG_TRANSMOG_OK = 1,
LANG_TRANSMOG_INVALID_SLOT = 2,
LANG_TRANSMOG_INVALID_SRC_ENTRY = 3,
LANG_TRANSMOG_MISSING_SRC_ITEM = 4,
LANG_TRANSMOG_MISSING_DEST_ITEM = 5,
LANG_TRANSMOG_INVALID_ITEMS = 6,
LANG_TRANSMOG_NOT_ENOUGH_MONEY = 7,
LANG_TRANSMOG_NOT_ENOUGH_TOKENS = 8,
LANG_TRANSMOG_UNTRANSMOG_OK = 9,
LANG_TRANSMOG_UNTRANSMOG_NO_TRANSMOGS = 10,
LANG_TRANSMOG_PRESET_ERR_INVALID_NAME = 11,
// Command strings
LANG_TRANSMOG_CMD_SHOW = 12,
LANG_TRANSMOG_CMD_HIDE = 13,
LANG_TRANSMOG_CMD_ADD_UNSUITABLE = 14,
LANG_TRANSMOG_CMD_ADD_FORBIDDEN = 15,
LANG_TRANSMOG_CMD_BEGIN_SYNC = 16,
LANG_TRANSMOG_CMD_COMPLETE_SYNC = 17,
LANG_TRANSMOG_CMD_VENDOR_INTERFACE_ENABLE = 18,
LANG_TRANSMOG_CMD_VENDOR_INTERFACE_DISABLE = 19,
// Gossip/UI strings
LANG_TRANSMOG_HOWWORKS = 20,
LANG_TRANSMOG_MANAGESETS = 21,
LANG_TRANSMOG_REMOVETRANSMOG = 22,
LANG_TRANSMOG_REMOVETRANSMOG_ASK = 23,
LANG_TRANSMOG_UPDATEMENU = 24,
LANG_TRANSMOG_HOWSETSWORK = 25,
LANG_TRANSMOG_SAVESET = 26,
LANG_TRANSMOG_BACK = 27,
LANG_TRANSMOG_USESET = 28,
LANG_TRANSMOG_CONFIRM_USESET = 29,
LANG_TRANSMOG_DELETESET = 30,
LANG_TRANSMOG_CONFIRM_DELETESET = 31,
LANG_TRANSMOG_INSERTSETNAME = 32,
LANG_TRANSMOG_SEARCH = 33,
LANG_TRANSMOG_SEARCHING_FOR = 34,
LANG_TRANSMOG_SEARCH_FOR_ITEM = 35,
LANG_TRANSMOG_CONFIRM_HIDE_ITEM = 36,
LANG_TRANSMOG_HIDESLOT = 37,
LANG_TRANSMOG_REMOVETRANSMOG_SLOT = 38,
LANG_TRANSMOG_CONFIRM_USEITEM = 39,
LANG_TRANSMOG_PREVIOUS_PAGE = 40,
LANG_TRANSMOG_NEXT_PAGE = 41,
LANG_TRANSMOG_ADDED_APPEARANCE = 42,
// Disclaimer strings
LANG_TRANSMOG_SET_DISCLAIMER = 43,
LANG_TRANSMOG_CMD_DISCLAIMER_ON = 44,
LANG_TRANSMOG_CMD_DISCLAIMER_OFF = 45,
};

enum ArmorClassSpellIDs
Expand Down Expand Up @@ -232,9 +254,9 @@ class Transmogrification
void SetFakeEntry(Player* player, uint32 newEntry, uint8 slot, Item* itemTransmogrified);
bool AddCollectedAppearance(uint32 accountId, uint32 itemId);

TransmogAcoreStrings Transmogrify(Player* player, ObjectGuid itemGUID, uint8 slot, /*uint32 newEntry, */bool no_cost = false);
TransmogAcoreStrings Transmogrify(Player* player, uint32 itemEntry, uint8 slot, /*uint32 newEntry, */bool no_cost = false);
TransmogAcoreStrings Transmogrify(Player* player, Item* itemTransmogrifier, uint8 slot, /*uint32 newEntry, */bool no_cost = false, bool hidden_transmog = false);
TransmogStrings Transmogrify(Player* player, ObjectGuid itemGUID, uint8 slot, /*uint32 newEntry, */bool no_cost = false);
TransmogStrings Transmogrify(Player* player, uint32 itemEntry, uint8 slot, /*uint32 newEntry, */bool no_cost = false);
TransmogStrings Transmogrify(Player* player, Item* itemTransmogrifier, uint8 slot, /*uint32 newEntry, */bool no_cost = false, bool hidden_transmog = false);
bool CanTransmogrifyItemWithItem(Player* player, ItemTemplate const* destination, ItemTemplate const* source) const;
bool SuitableForTransmogrification(Player* player, ItemTemplate const* proto) const;
bool SuitableForTransmogrification(ObjectGuid guid, ItemTemplate const* proto) const;
Expand Down
30 changes: 15 additions & 15 deletions src/cs_transmog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,12 +62,12 @@ class transmog_commandscript : public CommandScript
{
Player* player = handler->GetPlayer();
uint32 accountId = player->GetSession()->GetAccountId();
handler->SendSysMessage(LANG_CMD_TRANSMOG_BEGIN_SYNC);
handler->PSendModuleSysMessage("mod-transmog", LANG_TRANSMOG_CMD_BEGIN_SYNC);

for (uint32 itemId : sTransmogrification->collectionCache[accountId])
handler->PSendSysMessage("TRANSMOG_SYNC:{}", itemId);
handler->SendSysMessage(LANG_CMD_TRANSMOG_COMPLETE_SYNC);

handler->PSendModuleSysMessage("mod-transmog", LANG_TRANSMOG_CMD_COMPLETE_SYNC);
return true;
}

Expand All @@ -78,12 +78,12 @@ class transmog_commandscript : public CommandScript
if (hide)
{
player->UpdatePlayerSetting("mod-transmog", SETTING_HIDE_TRANSMOG, 0);
handler->SendSysMessage(LANG_CMD_TRANSMOG_SHOW);
handler->PSendModuleSysMessage("mod-transmog", LANG_TRANSMOG_CMD_SHOW);
}
else
{
player->UpdatePlayerSetting("mod-transmog", SETTING_HIDE_TRANSMOG, 1);
handler->SendSysMessage(LANG_CMD_TRANSMOG_HIDE);
handler->PSendModuleSysMessage("mod-transmog", LANG_TRANSMOG_CMD_HIDE);
}

player->UpdateObjectVisibility();
Expand Down Expand Up @@ -119,14 +119,14 @@ class transmog_commandscript : public CommandScript

if (!sTransmogrification->GetTrackUnusableItems() && !suitableForTransmog)
{
handler->SendSysMessage(LANG_CMD_TRANSMOG_ADD_UNSUITABLE);
handler->PSendModuleSysMessage("mod-transmog", LANG_TRANSMOG_CMD_ADD_UNSUITABLE);
handler->SetSentErrorMessage(true);
return true;
}

if (itemTemplate->Class != ITEM_CLASS_ARMOR && itemTemplate->Class != ITEM_CLASS_WEAPON)
{
handler->SendSysMessage(LANG_CMD_TRANSMOG_ADD_FORBIDDEN);
handler->PSendModuleSysMessage("mod-transmog", LANG_TRANSMOG_CMD_ADD_FORBIDDEN);
handler->SetSentErrorMessage(true);
return true;
}
Expand Down Expand Up @@ -210,7 +210,7 @@ class transmog_commandscript : public CommandScript
return false;

bool added = false;
uint32 error = 0;
uint32 error = 0; // holds a TransmogStrings id, 0 = no error
uint32 itemId;
uint32 accountId = playerData->AccountId;

Expand All @@ -227,12 +227,12 @@ class transmog_commandscript : public CommandScript
!sTransmogrification->SuitableForTransmogrification(guid, itemTemplate)
))
{
error = LANG_CMD_TRANSMOG_ADD_UNSUITABLE;
error = LANG_TRANSMOG_CMD_ADD_UNSUITABLE;
continue;
}
if (itemTemplate->Class != ITEM_CLASS_ARMOR && itemTemplate->Class != ITEM_CLASS_WEAPON)
{
error = LANG_CMD_TRANSMOG_ADD_FORBIDDEN;
error = LANG_TRANSMOG_CMD_ADD_FORBIDDEN;
continue;
}

Expand All @@ -247,7 +247,7 @@ class transmog_commandscript : public CommandScript

if (!added && error > 0)
{
handler->SendSysMessage(error);
handler->PSendModuleSysMessage("mod-transmog", error);
handler->SetSentErrorMessage(true);
return true;
}
Expand Down Expand Up @@ -314,7 +314,7 @@ class transmog_commandscript : public CommandScript
static bool HandleInterfaceOption(ChatHandler* handler, bool enable)
{
handler->GetPlayer()->UpdatePlayerSetting("mod-transmog", SETTING_VENDOR_INTERFACE, enable);
handler->SendSysMessage(enable ? LANG_CMD_TRANSMOG_VENDOR_INTERFACE_ENABLE : LANG_CMD_TRANSMOG_VENDOR_INTERFACE_DISABLE);
handler->PSendModuleSysMessage("mod-transmog", enable ? LANG_TRANSMOG_CMD_VENDOR_INTERFACE_ENABLE : LANG_TRANSMOG_CMD_VENDOR_INTERFACE_DISABLE);
return true;
}

Expand All @@ -324,12 +324,12 @@ class transmog_commandscript : public CommandScript
if (enable)
{
player->UpdatePlayerSetting("mod-transmog", SETTING_HIDE_SET_DISCLAIMER, 0);
handler->SendSysMessage(LANG_CMD_TRANSMOG_DISCLAIMER_ON);
handler->PSendModuleSysMessage("mod-transmog", LANG_TRANSMOG_CMD_DISCLAIMER_ON);
}
else
{
player->UpdatePlayerSetting("mod-transmog", SETTING_HIDE_SET_DISCLAIMER, 1);
handler->SendSysMessage(LANG_CMD_TRANSMOG_DISCLAIMER_OFF);
handler->PSendModuleSysMessage("mod-transmog", LANG_TRANSMOG_CMD_DISCLAIMER_OFF);
}
return true;
}
Expand Down
Loading
Loading