From 4744b0270552e4f45dfc27eb2cbba9da01aac463 Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Sat, 9 May 2026 13:25:40 -0300 Subject: [PATCH] feat(Core/DB): Migrate strings to module_string system Replace global acore_string IDs (11100-11118) and hardcoded per-locale C++ unordered_maps with the module_string system keyed to 'mod-transmog'. Enum values renamed from TRANSMOG_STR_* to LANG_TRANSMOG_* for consistency. All 42 strings (result, command, and gossip/UI) now live in the DB and support locale overrides without recompile. Co-Authored-By: Claude Sonnet 4.6 --- data/sql/db-world/trasm_world_texts.sql | 491 ++++++++++++++++-- ...05_09_migrate_strings_to_module_string.sql | 445 ++++++++++++++++ src/Transmogrification.cpp | 26 +- src/Transmogrification.h | 84 +-- src/cs_transmog.cpp | 30 +- src/transmog_scripts.cpp | 421 ++------------- 6 files changed, 1019 insertions(+), 478 deletions(-) create mode 100644 data/sql/db-world/updates/2026_05_09_migrate_strings_to_module_string.sql diff --git a/data/sql/db-world/trasm_world_texts.sql b/data/sql/db-world/trasm_world_texts.sql index ba6f5dc0..10b35b43 100644 --- a/data/sql/db-world/trasm_world_texts.sql +++ b/data/sql/db-world/trasm_world_texts.sql @@ -23,56 +23,447 @@ INSERT INTO `npc_text_locale` (`ID`, `Locale`, `Text0_0`) VALUES (@TEXT_ID, 'ruRU', 'Трансмогрификация позволяет вам изменить внешний вид ваших предметов без изменения характеристик предметов.\r\nПредметы, использованные в трансмогрификации, больше не подлежат возврату, обмену и привязаны к вам.\r\nОбновление меню обновляет вид и цены.\ r\n\r\nНе все можно трансмогрифицировать друг с другом.\r\nОграничения включают, но не ограничиваются:\r\nМожно трансмогрифицировать только доспехи и оружие\r\nОружие, луки и арбалеты можно трансмогрифицировать друг с другом \r\nУдочки не могут быть трансмогрифицированы\r\nВы должны быть в состоянии экипировать оба предмета, используемые в процессе.\r\n\r\nПреобразования остаются на ваших предметах, пока они у вас есть.\r\nЕсли вы попытаетесь чтобы положить предмет в банк гильдии или отправить кому-то другому, трансмогрификация снимается.\r\n\r\nВы также можете бесплатно удалить трансмогрификацию в трансмогрификаторе.'), (@TEXT_ID+1, 'ruRU', 'Вы можете сохранять свои собственные наборы для трансмогрификации.\r\n\r\nЧтобы сохранить, сначала вы должны трансмогрифицировать свои экипированные предметы.\r\nЗатем, когда вы перейдете в меню управления наборами и перейдете в меню сохранения набора,\r\nвсе предметы которые вы преобразовали, отображаются так, что вы видите, что вы сохраняете.\r\nЕсли вы считаете, что набор в порядке, вы можете нажать, чтобы сохранить набор и назвать его по своему желанию.\r\n\r\nЧтобы использовать набор, можно щелкнуть сохраненный набор в меню управления набором, а затем выбрать использовать набор.\r\nЕсли в наборе есть трансмогрификация предмета, который уже трансмогрифицирован, старая трансмогрификация теряется.\r\nОбратите внимание, что те же ограничения на трансмогрификацию применяются, когда пытается использовать набор, как при обычной трансмогрификации.\r\n\r\nЧтобы удалить набор, вы можете перейти в меню набора и выбрать удалить набор.'); -SET @STRING_ENTRY := 11100; -DELETE FROM `acore_string` WHERE `entry` BETWEEN @STRING_ENTRY AND @STRING_ENTRY+21; -INSERT INTO `acore_string` (`entry`, `content_default`, `locale_koKR`, `locale_frFR`, `locale_deDE`, `locale_zhCN`, `locale_zhTW`, `locale_esES`, `locale_esMX`, `locale_ruRU`) -VALUES -(11100, 'Item successfully transmogrified.', '성공적으로 형상변환된 아이템', 'Objet transmogrifié avec succès', 'Gegenstand erfolgreich transmogrifiziert', '物品变形成功', '物品變身成功。', 'Objeto transfigurado con éxito', 'Objeto transfigurado con éxito', 'Предмет успешно трансмогрифицирован'), -(11101, 'Equipment slot is empty.', '장비 슬롯이 비어 있습니다.', 'L''emplacement d''équipement est vide.', 'Der Ausrüstungsplatz ist leer.', '装备槽是空的。', '裝備欄位是空的。', 'La ranura de equipo está vacía.', 'La ranura de equipo está vacía.', 'Слот снаряжения пуст.'), -(11102, 'Invalid source item selected.', '선택한 소스 요소가 잘못되었습니다.', 'Élément source sélectionné non valide.', 'Ungültiges ausgewähltes Quellelement.', '所选源元素无效。', '選擇的來源物品無效。', 'Elemento fuente seleccionado no válido.', 'Elemento fuente seleccionado no válido.', 'Недопустимый выбранный исходный элемент.'), -(11103, 'Source item does not exist.', '소스 요소가 존재하지 않습니다.', 'L''élément source n''existe pas.', 'Das Quellelement existiert nicht.', '源元素不存在。', '來源物品不存在。', 'El elemento de origen no existe.', 'El elemento de origen no existe.', 'Исходный элемент не существует.'), -(11104, 'Destination item does not exist.', '대상 요소가 존재하지 않습니다.', 'L''élément cible n''existe pas.', 'Das Zielelement existiert nicht.', '目标元素不存在。', '目標物品不存在。', 'El elemento de destino no existe.', 'El elemento de destino no existe.', 'Целевой элемент не существует.'), -(11105, 'Selected items are invalid.', '선택한 항목이 잘못되었습니다.', 'Les éléments sélectionnés ne sont pas valides', 'Die ausgewählten Elemente sind ungültig', '所选项目无效', '所選物品無效。', 'Los elementos seleccionados no son válidos', 'Los elementos seleccionados no son válidos', 'Выбранные элементы недействительны'), -(11106, 'You don''t have enough money.', '당신은 돈이 충분하지 않습니다.', 'Vous n''avez pas assez d''argent.', 'Du hast nicht genug Geld.', '你没有足够的钱。', '你沒有足夠的金錢。', 'No tienes suficiente dinero.', 'No tienes suficiente dinero.', 'У вас недостаточно денег.'), -(11107, 'You don''t have enough tokens.', '칩이 충분하지 않습니다.', 'Vous n''avez pas assez de jetons.', 'Du hast nicht genug Chips.', '你的筹码不够。', '你沒有足夠的代幣。', 'No tienes suficientes fichas.', 'No tienes suficientes fichas.', 'У вас недостаточно фишек.'), -(11108, 'All your transmogrifications were removed.', '모든 형상변환을 제거했습니다.', 'Suppression de toutes vos transmogrifications', 'Alle deine Transmogrifikationen wurden entfernt', '删除了你所有的变形', '你的所有變身效果都被移除了。', 'Se eliminaron todas tus transfiguraciones', 'Se eliminaron todas tus transfiguraciones', 'Удалены все ваши трансмогрификации'), -(11109, 'No transmogrification found.', '변형이 없습니다.', 'Aucune transfiguration trouvée.', 'Keine Verwandlung gefunden.', '没有发现变形。', '找不到變身效果。', 'No se encontró transfiguración.', 'No se encontró transfiguración.', 'Трансфигурация не найдена.'), -(11110, 'Invalid name inserted.', '삽입된 이름이 잘못되었습니다.', 'Nom inséré non valide.', 'Ungültiger eingegebener Name.', '插入的名称无效。', '插入的名稱無效。', 'Nombre insertado no válido.', 'Nombre insertado no válido.', 'Недопустимое вставленное имя.'), -(11111, 'Showing transmogrified items, relog to update the current area.', '형상변환된 아이템이 표시되며, 현재 영역을 새로고침하려면 다시 로그인하세요.', 'En affichant les objets transmogrifiés, reconnectez-vous pour actualiser la zone actuelle.', 'Transmogrifizierte Gegenstände werden angezeigt. Melden Sie sich erneut an, um den aktuellen Bereich zu aktualisieren.', '显示已变形物品,重新登录即可刷新当前区域。', '顯示已變身的物品,重新登錄以更新當前區域。', 'Mostrando elementos transfigurados, vuelva a iniciar sesión para actualizar el área actual.', 'Mostrando elementos transfigurados, vuelva a iniciar sesión para actualizar el área actual.', 'Отображение трансмогрифицированных предметов. Войдите в систему еще раз, чтобы обновить текущую область.'), -(11112, 'Hiding transmogrified items, relog to update the current area.', '형상변환된 아이템을 숨기고 다시 로그인하여 현재 영역을 새로 고칩니다.', 'Masquez les objets transmogrifiés, reconnectez-vous pour actualiser la zone actuelle.', 'Transmogrifizierte Gegenstände ausblenden, erneut anmelden, um den aktuellen Bereich zu aktualisieren.', '隐藏变形物品,重新登录以刷新当前区域。', '隱藏已變身的物品,重新登錄以更新當前區域。', 'Ocultar elementos transfigurados, volver a iniciar sesión para actualizar el área actual.', 'Ocultar elementos transfigurados, volver a iniciar sesión para actualizar el área actual.', 'Скройте трансмогрифицированные предметы, войдите в систему, чтобы обновить текущую область.'), -(11113, 'The selected item is not suitable for transmogrification.', '선택한 항목은 변형에 적합하지 않습니다.', 'L''objet sélectionné ne convient pas à la métamorphose.', 'Der ausgewählte Gegenstand ist nicht für die Verwandlung geeignet.', '所选项目不适合变形。', '所選物品不適合進行變身。', 'El elemento seleccionado no es adecuado para la transfiguración.', 'El elemento seleccionado no es adecuado para la transfiguración.', 'Выбранный предмет не подходит для преображения.'), -(11114, 'The selected item cannot be used for transmogrification of the target player.', '선택한 아이템은 대상 플레이어의 형상변환에 사용할 수 없습니다.', 'L''objet sélectionné ne peut pas être utilisé pour la transmogrification du joueur ciblé', 'Der ausgewählte Gegenstand kann nicht für die Transmogrifizierung des Zielspielers verwendet werden', '所选物品不能用于目标玩家的变身', '所選物品不能用於目標玩家的變身效果。', 'El elemento seleccionado no se puede usar para la transfiguración del jugador objetivo', 'El elemento seleccionado no se puede usar para la transfiguración del jugador objetivo', 'Выбранный предмет нельзя использовать для трансмогрификации целевого игрока.'), -(11115, 'Performing transmog appearance sync...', '형상변환 모양 동기화 수행 중...', 'Exécution de la synchronisation de l''apparence de transmogrification...', 'Synchronisierung des Transmog-Erscheinungsbilds wird durchgeführt ...', '正在执行 Transmog 外观同步...', '正在執行外觀同步變身操作...', 'Realizando sincronización de apariencia de transfiguración...', 'Realizando sincronización de apariencia de transfiguración...', 'Выполнение синхронизации внешнего вида Transmog...'), -(11116, 'Appearance sync complete.', '전체 모양 동기화', 'Synchronisation complète de l''apparence', 'Vollständige Synchronisierung des Erscheinungsbilds', '完全外观同步', '外觀同步變身操作完成。', 'Sincronización de apariencia completa', 'Sincronización de apariencia completa', 'Полная синхронизация внешнего вида'), -(11117, 'The transmog NPC will now display available appearances as a vendor interface, allowing preview. \nDISCLAIMER: If you have too many appearances, some will not be displayed due to a client limitation. In that case, disable this option.', '', '', '', '', '', '', '', ''), -(11118, 'The transmog NPC will now display available apperances as gossip list.', '', '', '', '', '', '', '', ''), -(11119, '|cFF4DB3FFSet bonuses won''t appear in the item tooltip while transmogrified, but they are still fully active.\nTo stop seeing this notice, type |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF.|r', - '|cFF4DB3FF변형 중에는 아이템 툴팁에 세트 보너스가 표시되지 않지만, 여전히 완전히 활성화되어 있습니다.\n이 알림을 중지하려면 |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF 을 입력하세요.|r', - '|cFF4DB3FFLes bonus de set n''apparaîtront pas dans l''info-bulle de l''objet lors de la transmogrification, mais ils restent pleinement actifs.\nPour arrêter d''afficher cette notice, tapez |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF.|r', - '|cFF4DB3FFSetboni werden in der Gegenstandsbeschreibung während der Transmogrifizierung nicht angezeigt, sind aber weiterhin voll aktiv.\nUm diesen Hinweis zu deaktivieren, gib |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF ein.|r', - '|cFF4DB3FF幻化后物品提示中不会显示套装加成,但套装加成仍然完全有效。\n若要停止显示此提示,请输入 |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF。|r', - '|cFF4DB3FF幻化後物品提示中不會顯示套裝加成,但套裝加成仍然完全有效。\n若要停止顯示此提示,請輸入 |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF。|r', - '|cFF4DB3FFLas bonificaciones de conjunto no aparecerán en la descripción del objeto mientras esté transfigurado, pero siguen activas.\nPara dejar de ver este aviso, escribe |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF.|r', - '|cFF4DB3FFLas bonificaciones de conjunto no aparecerán en la descripción del objeto mientras esté transfigurado, pero siguen activas.\nPara dejar de ver este aviso, escribe |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF.|r', - '|cFF4DB3FFБонусы набора не будут отображаться в подсказке предмета при трансмогрификации, но они по-прежнему полностью активны.\nЧтобы скрыть это уведомление, введите |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF.|r'), -(11120, 'Set bonus disclaimer enabled.', - '세트 보너스 알림이 활성화되었습니다.', - 'Avertissement de bonus de set activé.', - 'Setbonus-Hinweis aktiviert.', - '套装加成提示已启用。', - '套裝加成提示已啟用。', - 'Aviso de bonificación de conjunto activado.', - 'Aviso de bonificación de conjunto activado.', - 'Уведомление о бонусах набора включено.'), -(11121, 'Set bonus disclaimer disabled.', - '세트 보너스 알림이 비활성화되었습니다.', - 'Avertissement de bonus de set désactivé.', - 'Setbonus-Hinweis deaktiviert.', - '套装加成提示已禁用。', - '套裝加成提示已禁用。', - 'Aviso de bonificación de conjunto desactivado.', - 'Aviso de bonificación de conjunto desactivado.', - 'Уведомление о бонусах набора отключено.'); +DELETE FROM `module_string` WHERE `module` = 'mod-transmog'; +DELETE FROM `module_string_locale` WHERE `module` = 'mod-transmog'; +INSERT INTO `module_string` (`module`, `id`, `string`) VALUES +-- Transmog result strings +('mod-transmog', 1, 'Item successfully transmogrified.'), +('mod-transmog', 2, 'Equipment slot is empty.'), +('mod-transmog', 3, 'Invalid source item selected.'), +('mod-transmog', 4, 'Source item does not exist.'), +('mod-transmog', 5, 'Destination item does not exist.'), +('mod-transmog', 6, 'Selected items are invalid.'), +('mod-transmog', 7, 'You don''t have enough money.'), +('mod-transmog', 8, 'You don''t have enough tokens.'), +('mod-transmog', 9, 'All your transmogrifications were removed.'), +('mod-transmog', 10, 'No transmogrification found.'), +('mod-transmog', 11, 'Invalid name inserted.'), +-- Command strings +('mod-transmog', 12, 'Showing transmogrified items, relog to update the current area.'), +('mod-transmog', 13, 'Hiding transmogrified items, relog to update the current area.'), +('mod-transmog', 14, 'The selected item is not suitable for transmogrification.'), +('mod-transmog', 15, 'The selected item cannot be used for transmogrification of the target player.'), +('mod-transmog', 16, 'Performing transmog appearance sync...'), +('mod-transmog', 17, 'Appearance sync complete.'), +('mod-transmog', 18, 'The transmog NPC will now display available appearances as a vendor interface, allowing preview. \nDISCLAIMER: If you have too many appearances, some will not be displayed due to a client limitation. In that case, disable this option.'), +('mod-transmog', 19, 'The transmog NPC will now display available appearances as gossip list.'), +-- Gossip/UI strings +('mod-transmog', 20, 'How does transmogrification work?'), +('mod-transmog', 21, 'Manage sets'), +('mod-transmog', 22, 'Remove all transmogrifications'), +('mod-transmog', 23, 'Remove transmogrifications from all equipped items?'), +('mod-transmog', 24, 'Update menu'), +('mod-transmog', 25, 'How do sets work?'), +('mod-transmog', 26, 'Save set'), +('mod-transmog', 27, 'Back...'), +('mod-transmog', 28, 'Use this set'), +('mod-transmog', 29, 'Using this set for transmogrify will bind transmogrified items to you and make them non-refundable and non-tradeable.\nDo you wish to continue?\n\n'), +('mod-transmog', 30, 'Delete set'), +('mod-transmog', 31, 'Are you sure you want to delete '), +('mod-transmog', 32, 'Insert set name'), +('mod-transmog', 33, 'Search...'), +('mod-transmog', 34, 'Searching for: '), +('mod-transmog', 35, 'Search for what item?'), +('mod-transmog', 36, 'You are hiding the item in this slot.\nDo you wish to continue?\n\n'), +('mod-transmog', 37, 'Hide Slot'), +('mod-transmog', 38, 'Remove transmogrification from the slot?'), +('mod-transmog', 39, 'Using this item for transmogrify will bind it to you and make it non-refundable and non-tradeable.\nDo you wish to continue?\n\n'), +('mod-transmog', 40, 'Previous Page'), +('mod-transmog', 41, 'Next Page'), +('mod-transmog', 42, 'has been added to your appearance collection.'), +-- Disclaimer strings +('mod-transmog', 43, '|cFF4DB3FFSet bonuses won''t appear in the item tooltip while transmogrified, but they are still fully active.\nTo stop seeing this notice, type |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF.|r'), +('mod-transmog', 44, 'Set bonus disclaimer enabled.'), +('mod-transmog', 45, 'Set bonus disclaimer disabled.'); + +INSERT INTO `module_string_locale` (`module`, `id`, `locale`, `string`) VALUES +-- ID 1: OK +('mod-transmog', 1, 'koKR', '성공적으로 형상변환된 아이템'), +('mod-transmog', 1, 'frFR', 'Objet transmogrifié avec succès'), +('mod-transmog', 1, 'deDE', 'Gegenstand erfolgreich transmogrifiziert'), +('mod-transmog', 1, 'zhCN', '物品变形成功'), +('mod-transmog', 1, 'zhTW', '物品變身成功。'), +('mod-transmog', 1, 'esES', 'Objeto transfigurado con éxito'), +('mod-transmog', 1, 'esMX', 'Objeto transfigurado con éxito'), +('mod-transmog', 1, 'ruRU', 'Предмет успешно трансмогрифицирован'), +-- ID 2: INVALID_SLOT +('mod-transmog', 2, 'koKR', '장비 슬롯이 비어 있습니다.'), +('mod-transmog', 2, 'frFR', 'L''emplacement d''équipement est vide.'), +('mod-transmog', 2, 'deDE', 'Der Ausrüstungsplatz ist leer.'), +('mod-transmog', 2, 'zhCN', '装备槽是空的。'), +('mod-transmog', 2, 'zhTW', '裝備欄位是空的。'), +('mod-transmog', 2, 'esES', 'La ranura de equipo está vacía.'), +('mod-transmog', 2, 'esMX', 'La ranura de equipo está vacía.'), +('mod-transmog', 2, 'ruRU', 'Слот снаряжения пуст.'), +-- ID 3: INVALID_SRC_ENTRY +('mod-transmog', 3, 'koKR', '선택한 소스 요소가 잘못되었습니다.'), +('mod-transmog', 3, 'frFR', 'Élément source sélectionné non valide.'), +('mod-transmog', 3, 'deDE', 'Ungültiges ausgewähltes Quellelement.'), +('mod-transmog', 3, 'zhCN', '所选源元素无效。'), +('mod-transmog', 3, 'zhTW', '選擇的來源物品無效。'), +('mod-transmog', 3, 'esES', 'Elemento fuente seleccionado no válido.'), +('mod-transmog', 3, 'esMX', 'Elemento fuente seleccionado no válido.'), +('mod-transmog', 3, 'ruRU', 'Недопустимый выбранный исходный элемент.'), +-- ID 4: MISSING_SRC_ITEM +('mod-transmog', 4, 'koKR', '소스 요소가 존재하지 않습니다.'), +('mod-transmog', 4, 'frFR', 'L''élément source n''existe pas.'), +('mod-transmog', 4, 'deDE', 'Das Quellelement existiert nicht.'), +('mod-transmog', 4, 'zhCN', '源元素不存在。'), +('mod-transmog', 4, 'zhTW', '來源物品不存在。'), +('mod-transmog', 4, 'esES', 'El elemento de origen no existe.'), +('mod-transmog', 4, 'esMX', 'El elemento de origen no existe.'), +('mod-transmog', 4, 'ruRU', 'Исходный элемент не существует.'), +-- ID 5: MISSING_DEST_ITEM +('mod-transmog', 5, 'koKR', '대상 요소가 존재하지 않습니다.'), +('mod-transmog', 5, 'frFR', 'L''élément cible n''existe pas.'), +('mod-transmog', 5, 'deDE', 'Das Zielelement existiert nicht.'), +('mod-transmog', 5, 'zhCN', '目标元素不存在。'), +('mod-transmog', 5, 'zhTW', '目標物品不存在。'), +('mod-transmog', 5, 'esES', 'El elemento de destino no existe.'), +('mod-transmog', 5, 'esMX', 'El elemento de destino no existe.'), +('mod-transmog', 5, 'ruRU', 'Целевой элемент не существует.'), +-- ID 6: INVALID_ITEMS +('mod-transmog', 6, 'koKR', '선택한 항목이 잘못되었습니다.'), +('mod-transmog', 6, 'frFR', 'Les éléments sélectionnés ne sont pas valides'), +('mod-transmog', 6, 'deDE', 'Die ausgewählten Elemente sind ungültig'), +('mod-transmog', 6, 'zhCN', '所选项目无效'), +('mod-transmog', 6, 'zhTW', '所選物品無效。'), +('mod-transmog', 6, 'esES', 'Los elementos seleccionados no son válidos'), +('mod-transmog', 6, 'esMX', 'Los elementos seleccionados no son válidos'), +('mod-transmog', 6, 'ruRU', 'Выбранные элементы недействительны'), +-- ID 7: NOT_ENOUGH_MONEY +('mod-transmog', 7, 'koKR', '당신은 돈이 충분하지 않습니다.'), +('mod-transmog', 7, 'frFR', 'Vous n''avez pas assez d''argent.'), +('mod-transmog', 7, 'deDE', 'Du hast nicht genug Geld.'), +('mod-transmog', 7, 'zhCN', '你没有足够的钱。'), +('mod-transmog', 7, 'zhTW', '你沒有足夠的金錢。'), +('mod-transmog', 7, 'esES', 'No tienes suficiente dinero.'), +('mod-transmog', 7, 'esMX', 'No tienes suficiente dinero.'), +('mod-transmog', 7, 'ruRU', 'У вас недостаточно денег.'), +-- ID 8: NOT_ENOUGH_TOKENS +('mod-transmog', 8, 'koKR', '칩이 충분하지 않습니다.'), +('mod-transmog', 8, 'frFR', 'Vous n''avez pas assez de jetons.'), +('mod-transmog', 8, 'deDE', 'Du hast nicht genug Chips.'), +('mod-transmog', 8, 'zhCN', '你的筹码不够。'), +('mod-transmog', 8, 'zhTW', '你沒有足夠的代幣。'), +('mod-transmog', 8, 'esES', 'No tienes suficientes fichas.'), +('mod-transmog', 8, 'esMX', 'No tienes suficientes fichas.'), +('mod-transmog', 8, 'ruRU', 'У вас недостаточно фишек.'), +-- ID 9: UNTRANSMOG_OK +('mod-transmog', 9, 'koKR', '모든 형상변환을 제거했습니다.'), +('mod-transmog', 9, 'frFR', 'Suppression de toutes vos transmogrifications'), +('mod-transmog', 9, 'deDE', 'Alle deine Transmogrifikationen wurden entfernt'), +('mod-transmog', 9, 'zhCN', '删除了你所有的变形'), +('mod-transmog', 9, 'zhTW', '你的所有變身效果都被移除了。'), +('mod-transmog', 9, 'esES', 'Se eliminaron todas tus transfiguraciones'), +('mod-transmog', 9, 'esMX', 'Se eliminaron todas tus transfiguraciones'), +('mod-transmog', 9, 'ruRU', 'Удалены все ваши трансмогрификации'), +-- ID 10: UNTRANSMOG_NO_TRANSMOGS +('mod-transmog', 10, 'koKR', '변형이 없습니다.'), +('mod-transmog', 10, 'frFR', 'Aucune transfiguration trouvée.'), +('mod-transmog', 10, 'deDE', 'Keine Verwandlung gefunden.'), +('mod-transmog', 10, 'zhCN', '没有发现变形。'), +('mod-transmog', 10, 'zhTW', '找不到變身效果。'), +('mod-transmog', 10, 'esES', 'No se encontró transfiguración.'), +('mod-transmog', 10, 'esMX', 'No se encontró transfiguración.'), +('mod-transmog', 10, 'ruRU', 'Трансфигурация не найдена.'), +-- ID 11: PRESET_ERR_INVALID_NAME +('mod-transmog', 11, 'koKR', '삽입된 이름이 잘못되었습니다.'), +('mod-transmog', 11, 'frFR', 'Nom inséré non valide.'), +('mod-transmog', 11, 'deDE', 'Ungültiger eingegebener Name.'), +('mod-transmog', 11, 'zhCN', '插入的名称无效。'), +('mod-transmog', 11, 'zhTW', '插入的名稱無效。'), +('mod-transmog', 11, 'esES', 'Nombre insertado no válido.'), +('mod-transmog', 11, 'esMX', 'Nombre insertado no válido.'), +('mod-transmog', 11, 'ruRU', 'Недопустимое вставленное имя.'), +-- ID 12: CMD_SHOW +('mod-transmog', 12, 'koKR', '형상변환된 아이템이 표시되며, 현재 영역을 새로고침하려면 다시 로그인하세요.'), +('mod-transmog', 12, 'frFR', 'En affichant les objets transmogrifiés, reconnectez-vous pour actualiser la zone actuelle.'), +('mod-transmog', 12, 'deDE', 'Transmogrifizierte Gegenstände werden angezeigt. Melden Sie sich erneut an, um den aktuellen Bereich zu aktualisieren.'), +('mod-transmog', 12, 'zhCN', '显示已变形物品,重新登录即可刷新当前区域。'), +('mod-transmog', 12, 'zhTW', '顯示已變身的物品,重新登錄以更新當前區域。'), +('mod-transmog', 12, 'esES', 'Mostrando elementos transfigurados, vuelva a iniciar sesión para actualizar el área actual.'), +('mod-transmog', 12, 'esMX', 'Mostrando elementos transfigurados, vuelva a iniciar sesión para actualizar el área actual.'), +('mod-transmog', 12, 'ruRU', 'Отображение трансмогрифицированных предметов. Войдите в систему еще раз, чтобы обновить текущую область.'), +-- ID 13: CMD_HIDE +('mod-transmog', 13, 'koKR', '형상변환된 아이템을 숨기고 다시 로그인하여 현재 영역을 새로 고칩니다.'), +('mod-transmog', 13, 'frFR', 'Masquez les objets transmogrifiés, reconnectez-vous pour actualiser la zone actuelle.'), +('mod-transmog', 13, 'deDE', 'Transmogrifizierte Gegenstände ausblenden, erneut anmelden, um den aktuellen Bereich zu aktualisieren.'), +('mod-transmog', 13, 'zhCN', '隐藏变形物品,重新登录以刷新当前区域。'), +('mod-transmog', 13, 'zhTW', '隱藏已變身的物品,重新登錄以更新當前區域。'), +('mod-transmog', 13, 'esES', 'Ocultar elementos transfigurados, volver a iniciar sesión para actualizar el área actual.'), +('mod-transmog', 13, 'esMX', 'Ocultar elementos transfigurados, volver a iniciar sesión para actualizar el área actual.'), +('mod-transmog', 13, 'ruRU', 'Скройте трансмогрифицированные предметы, войдите в систему, чтобы обновить текущую область.'), +-- ID 14: CMD_ADD_UNSUITABLE +('mod-transmog', 14, 'koKR', '선택한 항목은 변형에 적합하지 않습니다.'), +('mod-transmog', 14, 'frFR', 'L''objet sélectionné ne convient pas à la métamorphose.'), +('mod-transmog', 14, 'deDE', 'Der ausgewählte Gegenstand ist nicht für die Verwandlung geeignet.'), +('mod-transmog', 14, 'zhCN', '所选项目不适合变形。'), +('mod-transmog', 14, 'zhTW', '所選物品不適合進行變身。'), +('mod-transmog', 14, 'esES', 'El elemento seleccionado no es adecuado para la transfiguración.'), +('mod-transmog', 14, 'esMX', 'El elemento seleccionado no es adecuado para la transfiguración.'), +('mod-transmog', 14, 'ruRU', 'Выбранный предмет не подходит для преображения.'), +-- ID 15: CMD_ADD_FORBIDDEN +('mod-transmog', 15, 'koKR', '선택한 아이템은 대상 플레이어의 형상변환에 사용할 수 없습니다.'), +('mod-transmog', 15, 'frFR', 'L''objet sélectionné ne peut pas être utilisé pour la transmogrification du joueur ciblé'), +('mod-transmog', 15, 'deDE', 'Der ausgewählte Gegenstand kann nicht für die Transmogrifizierung des Zielspielers verwendet werden'), +('mod-transmog', 15, 'zhCN', '所选物品不能用于目标玩家的变身'), +('mod-transmog', 15, 'zhTW', '所選物品不能用於目標玩家的變身效果。'), +('mod-transmog', 15, 'esES', 'El elemento seleccionado no se puede usar para la transfiguración del jugador objetivo'), +('mod-transmog', 15, 'esMX', 'El elemento seleccionado no se puede usar para la transfiguración del jugador objetivo'), +('mod-transmog', 15, 'ruRU', 'Выбранный предмет нельзя использовать для трансмогрификации целевого игрока.'), +-- ID 16: CMD_BEGIN_SYNC +('mod-transmog', 16, 'koKR', '형상변환 모양 동기화 수행 중...'), +('mod-transmog', 16, 'frFR', 'Exécution de la synchronisation de l''apparence de transmogrification...'), +('mod-transmog', 16, 'deDE', 'Synchronisierung des Transmog-Erscheinungsbilds wird durchgeführt ...'), +('mod-transmog', 16, 'zhCN', '正在执行 Transmog 外观同步...'), +('mod-transmog', 16, 'zhTW', '正在執行外觀同步變身操作...'), +('mod-transmog', 16, 'esES', 'Realizando sincronización de apariencia de transfiguración...'), +('mod-transmog', 16, 'esMX', 'Realizando sincronización de apariencia de transfiguración...'), +('mod-transmog', 16, 'ruRU', 'Выполнение синхронизации внешнего вида Transmog...'), +-- ID 17: CMD_COMPLETE_SYNC +('mod-transmog', 17, 'koKR', '전체 모양 동기화'), +('mod-transmog', 17, 'frFR', 'Synchronisation complète de l''apparence'), +('mod-transmog', 17, 'deDE', 'Vollständige Synchronisierung des Erscheinungsbilds'), +('mod-transmog', 17, 'zhCN', '完全外观同步'), +('mod-transmog', 17, 'zhTW', '外觀同步變身操作完成。'), +('mod-transmog', 17, 'esES', 'Sincronización de apariencia completa'), +('mod-transmog', 17, 'esMX', 'Sincronización de apariencia completa'), +('mod-transmog', 17, 'ruRU', 'Полная синхронизация внешнего вида'), +-- ID 20: HOWWORKS +('mod-transmog', 20, 'koKR', '형상변환은 어떻게 작동합니까?'), +('mod-transmog', 20, 'frFR', 'Comment fonctionne la transmogrification ?'), +('mod-transmog', 20, 'deDE', 'Wie funktioniert Transmogrifizierung?'), +('mod-transmog', 20, 'zhCN', '变形术是如何运作的?'), +('mod-transmog', 20, 'zhTW', '幻化是如何運作的?'), +('mod-transmog', 20, 'esES', '¿Cómo funciona la transfiguración?'), +('mod-transmog', 20, 'esMX', '¿Cómo funciona la transfiguración?'), +('mod-transmog', 20, 'ruRU', 'Как работает трансмогрификация?'), +-- ID 21: MANAGESETS +('mod-transmog', 21, 'koKR', '세트 관리'), +('mod-transmog', 21, 'frFR', 'Gérer les ensembles'), +('mod-transmog', 21, 'deDE', 'Sets verwalten'), +('mod-transmog', 21, 'zhCN', '管理套装'), +('mod-transmog', 21, 'zhTW', '管理套裝'), +('mod-transmog', 21, 'esES', 'Administrar conjuntos'), +('mod-transmog', 21, 'esMX', 'Administrar conjuntos'), +('mod-transmog', 21, 'ruRU', 'Управление комплектами'), +-- ID 22: REMOVETRANSMOG +('mod-transmog', 22, 'koKR', '모든 변형 제거'), +('mod-transmog', 22, 'frFR', 'Supprimer toutes les transmogrifications'), +('mod-transmog', 22, 'deDE', 'Alle Transmogrifikationen entfernen'), +('mod-transmog', 22, 'zhCN', '移除所有幻化'), +('mod-transmog', 22, 'zhTW', '移除所有幻化'), +('mod-transmog', 22, 'esES', 'Eliminar todas las transfiguraciones'), +('mod-transmog', 22, 'esMX', 'Eliminar todas las transfiguraciones'), +('mod-transmog', 22, 'ruRU', 'Удалить все трансмогрификации'), +-- ID 23: REMOVETRANSMOG_ASK +('mod-transmog', 23, 'koKR', '장착한 모든 아이템의 변형을 제거합니까?'), +('mod-transmog', 23, 'frFR', 'Supprimer les transmogrifications de tous les objets équipés ?'), +('mod-transmog', 23, 'deDE', 'Transmogrifikationen von allen ausgerüsteten Gegenständen entfernen?'), +('mod-transmog', 23, 'zhCN', '是否要从所有已装备的物品中移除幻化?'), +('mod-transmog', 23, 'zhTW', '從所有已裝備物品中移除幻化?'), +('mod-transmog', 23, 'esES', '¿Eliminar las transfiguraciones de todos los objetos equipados?'), +('mod-transmog', 23, 'esMX', '¿Eliminar las transfiguraciones de todos los objetos equipados?'), +('mod-transmog', 23, 'ruRU', 'Удалить трансмогрификации со всех экипированных предметов?'), +-- ID 24: UPDATEMENU +('mod-transmog', 24, 'koKR', '메뉴 업데이트'), +('mod-transmog', 24, 'frFR', 'Mettre à jour le menu'), +('mod-transmog', 24, 'deDE', 'Menü aktualisieren'), +('mod-transmog', 24, 'zhCN', '更新菜单'), +('mod-transmog', 24, 'zhTW', '更新選單'), +('mod-transmog', 24, 'esES', 'Actualizar menú'), +('mod-transmog', 24, 'esMX', 'Actualizar menú'), +('mod-transmog', 24, 'ruRU', 'Обновить меню'), +-- ID 25: HOWSETSWORK +('mod-transmog', 25, 'koKR', '세트는 어떻게 작동합니까?'), +('mod-transmog', 25, 'frFR', 'Comment fonctionnent les ensembles ?'), +('mod-transmog', 25, 'deDE', 'Wie funktionieren Sets?'), +('mod-transmog', 25, 'zhCN', '套装是如何运作的?'), +('mod-transmog', 25, 'zhTW', '套裝如何運作?'), +('mod-transmog', 25, 'esES', '¿Cómo funcionan los conjuntos?'), +('mod-transmog', 25, 'esMX', '¿Cómo funcionan los conjuntos?'), +('mod-transmog', 25, 'ruRU', 'Как работают комплекты?'), +-- ID 26: SAVESET +('mod-transmog', 26, 'koKR', '세트 저장'), +('mod-transmog', 26, 'frFR', 'Sauvegarder l''ensemble'), +('mod-transmog', 26, 'deDE', 'Set speichern'), +('mod-transmog', 26, 'zhCN', '保存套装'), +('mod-transmog', 26, 'zhTW', '儲存套裝'), +('mod-transmog', 26, 'esES', 'Guardar conjunto'), +('mod-transmog', 26, 'esMX', 'Guardar conjunto'), +('mod-transmog', 26, 'ruRU', 'Сохранить комплект'), +-- ID 27: BACK +('mod-transmog', 27, 'koKR', '뒤로...'), +('mod-transmog', 27, 'frFR', 'Retour...'), +('mod-transmog', 27, 'deDE', 'Zurück...'), +('mod-transmog', 27, 'zhCN', '返回...'), +('mod-transmog', 27, 'zhTW', '返回...'), +('mod-transmog', 27, 'esES', 'Atrás...'), +('mod-transmog', 27, 'esMX', 'Atrás...'), +('mod-transmog', 27, 'ruRU', 'Назад...'), +-- ID 28: USESET +('mod-transmog', 28, 'koKR', '이 세트를 사용'), +('mod-transmog', 28, 'frFR', 'Utiliser cet ensemble'), +('mod-transmog', 28, 'deDE', 'Dieses Set verwenden'), +('mod-transmog', 28, 'zhCN', '使用此套装'), +('mod-transmog', 28, 'zhTW', '使用此套裝'), +('mod-transmog', 28, 'esES', 'Usar este conjunto'), +('mod-transmog', 28, 'esMX', 'Usar este conjunto'), +('mod-transmog', 28, 'ruRU', 'Использовать этот комплект'), +-- ID 29: CONFIRM_USESET +('mod-transmog', 29, 'koKR', '이 세트를 변형에 사용하면 변형된 아이템이 계정에 제한되어 환불 및 거래가 불가능합니다.\n계속하시겠습니까?\n\n'), +('mod-transmog', 29, 'frFR', 'En utilisant cet ensemble pour la transmogrification, les objets transmogrifiés seront liés à votre personnage et deviendront non remboursables et non échangeables.\nVoulez-vous continuer ?\n\n'), +('mod-transmog', 29, 'deDE', 'Wenn du dieses Set für die Transmogrifikation verwendest, werden die transmogrifizierten Gegenstände an dich gebunden und können nicht erstattet oder gehandelt werden.\nMöchtest du fortfahren?\n\n'), +('mod-transmog', 29, 'zhCN', '将此套装用于幻化将使幻化后的物品与您绑定,并使其不可退还和不可交易。\n您是否要继续?\n\n'), +('mod-transmog', 29, 'zhTW', '使用此套裝進行幻化將使幻化後的物品與您綁定,並使其無法退款和無法交易。\n您是否希望繼續?\n\n'), +('mod-transmog', 29, 'esES', 'Usar este conjunto para transfigurar vinculará los objetos transfigurados a ti y los volverá no reembolsables y no intercambiables.\n¿Deseas continuar?\n\n'), +('mod-transmog', 29, 'esMX', 'Usar este conjunto para transfigurar vinculará los objetos transfigurados a ti y los volverá no reembolsables y no intercambiables.\n¿Deseas continuar?\n\n'), +('mod-transmog', 29, 'ruRU', 'Использование этого комплекта для трансмогрификации привяжет трансмогрифицированные предметы к вам и сделает их неподлежащими возврату и обмену.\nЖелаете продолжить?\n\n'), +-- ID 30: DELETESET +('mod-transmog', 30, 'koKR', '세트 삭제'), +('mod-transmog', 30, 'frFR', 'Supprimer l''ensemble'), +('mod-transmog', 30, 'deDE', 'Set löschen'), +('mod-transmog', 30, 'zhCN', '删除套装'), +('mod-transmog', 30, 'zhTW', '刪除套裝'), +('mod-transmog', 30, 'esES', 'Eliminar conjunto'), +('mod-transmog', 30, 'esMX', 'Eliminar conjunto'), +('mod-transmog', 30, 'ruRU', 'Удалить комплект'), +-- ID 31: CONFIRM_DELETESET +('mod-transmog', 31, 'koKR', '을(를) 삭제하시겠습니까 '), +('mod-transmog', 31, 'frFR', 'Êtes-vous sûr de vouloir supprimer '), +('mod-transmog', 31, 'deDE', 'Möchten Sie wirklich löschen '), +('mod-transmog', 31, 'zhCN', '您确定要删除吗 '), +('mod-transmog', 31, 'zhTW', '您確定要刪除 '), +('mod-transmog', 31, 'esES', '¿Estás seguro de que quieres eliminar '), +('mod-transmog', 31, 'esMX', '¿Estás seguro de que quieres eliminar '), +('mod-transmog', 31, 'ruRU', 'Вы уверены, что хотите удалить '), +-- ID 32: INSERTSETNAME +('mod-transmog', 32, 'koKR', '세트 이름 입력'), +('mod-transmog', 32, 'frFR', 'Insérer le nom de l''ensemble'), +('mod-transmog', 32, 'deDE', 'Set-Namen einfügen'), +('mod-transmog', 32, 'zhCN', '插入套装名称'), +('mod-transmog', 32, 'zhTW', '輸入套裝名稱'), +('mod-transmog', 32, 'esES', 'Insertar nombre del conjunto'), +('mod-transmog', 32, 'esMX', 'Insertar nombre del conjunto'), +('mod-transmog', 32, 'ruRU', 'Введите имя комплекта'), +-- ID 33: SEARCH +('mod-transmog', 33, 'koKR', '검색...'), +('mod-transmog', 33, 'frFR', 'Rechercher...'), +('mod-transmog', 33, 'deDE', 'Suche...'), +('mod-transmog', 33, 'zhCN', '搜索...'), +('mod-transmog', 33, 'zhTW', '搜索...'), +('mod-transmog', 33, 'esES', 'Buscar...'), +('mod-transmog', 33, 'esMX', 'Buscar...'), +('mod-transmog', 33, 'ruRU', 'Поиск...'), +-- ID 34: SEARCHING_FOR +('mod-transmog', 34, 'koKR', '검색 중: '), +('mod-transmog', 34, 'frFR', 'Recherche en cours: '), +('mod-transmog', 34, 'deDE', 'Suche nach: '), +('mod-transmog', 34, 'zhCN', '正在搜索: '), +('mod-transmog', 34, 'zhTW', '正在搜尋:'), +('mod-transmog', 34, 'esES', 'Buscando:'), +('mod-transmog', 34, 'esMX', 'Buscando: '), +('mod-transmog', 34, 'ruRU', 'Поиск: '), +-- ID 35: SEARCH_FOR_ITEM +('mod-transmog', 35, 'koKR', '어떤 아이템을 찾으시겠습니까?'), +('mod-transmog', 35, 'frFR', 'Rechercher quel objet ?'), +('mod-transmog', 35, 'deDE', 'Nach welchem Gegenstand suchen?'), +('mod-transmog', 35, 'zhCN', '搜索哪个物品?'), +('mod-transmog', 35, 'zhTW', '搜索哪個物品?'), +('mod-transmog', 35, 'esES', '¿Buscar un objeto?'), +('mod-transmog', 35, 'esMX', '¿Buscar un objeto?'), +('mod-transmog', 35, 'ruRU', 'Поиск предмета:'), +-- ID 36: CONFIRM_HIDE_ITEM +('mod-transmog', 36, 'koKR', '이 슬롯에 아이템을 감추고 있습니다.\n계속하시겠습니까?\n\n'), +('mod-transmog', 36, 'frFR', 'Vous masquez l''objet dans cet emplacement.\nVoulez-vous continuer ?\n\n'), +('mod-transmog', 36, 'deDE', 'Du versteckst das Item in diesem Slot.\nMöchtest du fortfahren?\n\n'), +('mod-transmog', 36, 'zhCN', '您正在隐藏此槽中的物品。\n您是否要继续?\n\n'), +('mod-transmog', 36, 'zhTW', '您正在隱藏此槽中的物品。\n您是否希望繼續?\n\n'), +('mod-transmog', 36, 'esES', 'Estás ocultando el objeto en esta ranura.\n¿Deseas continuar?\n\n'), +('mod-transmog', 36, 'esMX', 'Estás ocultando el objeto en esta ranura.\n¿Deseas continuar?\n\n'), +('mod-transmog', 36, 'ruRU', 'Вы скрываете предмет в этом слоте.\nЖелаете продолжить?\n\n'), +-- ID 37: HIDESLOT +('mod-transmog', 37, 'koKR', '슬롯 숨기기'), +('mod-transmog', 37, 'frFR', 'Cacher l''emplacement'), +('mod-transmog', 37, 'deDE', 'Slot verbergen'), +('mod-transmog', 37, 'zhCN', '隐藏槽位'), +('mod-transmog', 37, 'zhTW', '隱藏槽位'), +('mod-transmog', 37, 'esES', 'Ocultar ranura'), +('mod-transmog', 37, 'esMX', 'Ocultar ranura'), +('mod-transmog', 37, 'ruRU', 'Скрыть слот'), +-- ID 38: REMOVETRANSMOG_SLOT +('mod-transmog', 38, 'koKR', '해당 슬롯의 형상변환을 제거합니까?'), +('mod-transmog', 38, 'frFR', 'Supprimer la transmogrification de l''emplacement ?'), +('mod-transmog', 38, 'deDE', 'Transmogrifikation aus dem Slot entfernen?'), +('mod-transmog', 38, 'zhCN', '是否要从该槽位中移除幻化?'), +('mod-transmog', 38, 'zhTW', '從該槽位移除幻化?'), +('mod-transmog', 38, 'esES', '¿Eliminar la transfiguración del espacio?'), +('mod-transmog', 38, 'esMX', '¿Eliminar la transfiguración del espacio?'), +('mod-transmog', 38, 'ruRU', 'Удалить трансмогрификацию из ячейки?'), +-- ID 39: CONFIRM_USEITEM +('mod-transmog', 39, 'koKR', '이 아이템을 변형에 사용하면 계정에 제한되어 환불 및 거래가 불가능하게 됩니다.\n계속하시겠습니까?\n\n'), +('mod-transmog', 39, 'frFR', 'En utilisant cet objet pour la transmogrification, il sera lié à votre personnage et deviendra non remboursable et non échangeable.\nVoulez-vous continuer ?\n\n'), +('mod-transmog', 39, 'deDE', 'Wenn du diesen Gegenstand für die Transmogrifikation verwendest, wird er an dich gebunden und kann nicht erstattet oder gehandelt werden.\nMöchtest du fortfahren?\n\n'), +('mod-transmog', 39, 'zhCN', '将此物品用于幻化将使其与您绑定,并使其不可退还和不可交易。\n您是否要继续?\n\n'), +('mod-transmog', 39, 'zhTW', '使用此物品進行幻化將使其與您綁定,並使其無法退款和無法交易。\n您是否希望繼續?\n\n'), +('mod-transmog', 39, 'esES', 'Usar este objeto para transfigurar lo vinculará a ti y lo volverá no reembolsable y no intercambiable.\n¿Deseas continuar?\n\n'), +('mod-transmog', 39, 'esMX', 'Usar este objeto para transfigurar lo vinculará a ti y lo volverá no reembolsable y no intercambiable.\n¿Deseas continuar?\n\n'), +('mod-transmog', 39, 'ruRU', 'Использование этого предмета для трансмогрификации привяжет его к вам и сделает его неподлежащим возврату и обмену.\nЖелаете продолжить?\n\n'), +-- ID 40: PREVIOUS_PAGE +('mod-transmog', 40, 'koKR', '이전 페이지'), +('mod-transmog', 40, 'frFR', 'Page précédente'), +('mod-transmog', 40, 'deDE', 'Vorherige Seite'), +('mod-transmog', 40, 'zhCN', '上一页'), +('mod-transmog', 40, 'zhTW', '上一頁'), +('mod-transmog', 40, 'esES', 'Página anterior'), +('mod-transmog', 40, 'esMX', 'Página anterior'), +('mod-transmog', 40, 'ruRU', 'Предыдущая страница'), +-- ID 41: NEXT_PAGE +('mod-transmog', 41, 'koKR', '다음 페이지'), +('mod-transmog', 41, 'frFR', 'Page suivante'), +('mod-transmog', 41, 'deDE', 'Nächste Seite'), +('mod-transmog', 41, 'zhCN', '下一页'), +('mod-transmog', 41, 'zhTW', '下一頁'), +('mod-transmog', 41, 'esES', 'Página siguiente'), +('mod-transmog', 41, 'esMX', 'Página siguiente'), +('mod-transmog', 41, 'ruRU', 'Следующая страница'), +-- ID 42: ADDED_APPEARANCE +('mod-transmog', 42, 'koKR', '이(가) 외형 컬렉션에 추가되었습니다.'), +('mod-transmog', 42, 'frFR', 'a été ajouté(e) à votre collection d''apparences.'), +('mod-transmog', 42, 'deDE', 'wurde deiner Transmog-Sammlung hinzugefügt.'), +('mod-transmog', 42, 'zhCN', '已添加到外观收藏中。'), +('mod-transmog', 42, 'zhTW', '已加入您的外觀收藏。'), +('mod-transmog', 42, 'esES', 'se ha añadido a tu colección de apariencias.'), +('mod-transmog', 42, 'esMX', 'se ha agregado a tu colección de apariencias.'), +('mod-transmog', 42, 'ruRU', 'был добавлен в вашу коллекцию обликов.'), + +('mod-transmog', 43, 'koKR', '|cFF4DB3FF변형 중에는 아이템 툴팁에 세트 보너스가 표시되지 않지만, 여전히 완전히 활성화되어 있습니다.\n이 알림을 중지하려면 |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF 을 입력하세요.|r'), +('mod-transmog', 43, 'frFR', '|cFF4DB3FFLes bonus de set n''apparaîtront pas dans l''info-bulle de l''objet lors de la transmogrification, mais ils restent pleinement actifs.\nPour arrêter d''afficher cette notice, tapez |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF.|r'), +('mod-transmog', 43, 'deDE', '|cFF4DB3FFSetboni werden in der Gegenstandsbeschreibung während der Transmogrifizierung nicht angezeigt, sind aber weiterhin voll aktiv.\nUm diesen Hinweis zu deaktivieren, gib |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF ein.|r'), +('mod-transmog', 43, 'zhCN', '|cFF4DB3FF幻化后物品提示中不会显示套装加成,但套装加成仍然完全有效。\n若要停止显示此提示,请输入 |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF。|r'), +('mod-transmog', 43, 'zhTW', '|cFF4DB3FF幻化後物品提示中不會顯示套裝加成,但套裝加成仍然完全有效。\n若要停止顯示此提示,請輸入 |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF。|r'), +('mod-transmog', 43, 'esES', '|cFF4DB3FFLas bonificaciones de conjunto no aparecerán en la descripción del objeto mientras esté transfigurado, pero siguen activas.\nPara dejar de ver este aviso, escribe |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF.|r'), +('mod-transmog', 43, 'esMX', '|cFF4DB3FFLas bonificaciones de conjunto no aparecerán en la descripción del objeto mientras esté transfigurado, pero siguen activas.\nPara dejar de ver este aviso, escribe |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF.|r'), +('mod-transmog', 43, 'ruRU', '|cFF4DB3FFБонусы набора не будут отображаться в подсказке предмета при трансмогрификации, но они по-прежнему полностью активны.\nЧтобы скрыть это уведомление, введите |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF.|r'), + +('mod-transmog', 44, 'koKR', '세트 보너스 알림이 활성화되었습니다.'), +('mod-transmog', 44, 'frFR', 'Avertissement de bonus de set activé.'), +('mod-transmog', 44, 'deDE', 'Setbonus-Hinweis aktiviert.'), +('mod-transmog', 44, 'zhCN', '套装加成提示已启用。'), +('mod-transmog', 44, 'zhTW', '套裝加成提示已啟用。'), +('mod-transmog', 44, 'esES', 'Aviso de bonificación de conjunto activado.'), +('mod-transmog', 44, 'esMX', 'Aviso de bonificación de conjunto activado.'), +('mod-transmog', 44, 'ruRU', 'Уведомление о бонусах набора включено.'), + +('mod-transmog', 45, 'koKR', '세트 보너스 알림이 비활성화되었습니다.'), +('mod-transmog', 45, 'frFR', 'Avertissement de bonus de set désactivé.'), +('mod-transmog', 45, 'deDE', 'Setbonus-Hinweis deaktiviert.'), +('mod-transmog', 45, 'zhCN', '套装加成提示已禁用。'), +('mod-transmog', 45, 'zhTW', '套裝加成提示已禁用。'), +('mod-transmog', 45, 'esES', 'Aviso de bonificación de conjunto desactivado.'), +('mod-transmog', 45, 'esMX', 'Aviso de bonificación de conjunto desactivado.'), +('mod-transmog', 45, 'ruRU', 'Уведомление о бонусах набора отключено.'); DELETE FROM `command` WHERE `name` IN ('transmog', 'transmog add', 'transmog sync', 'transmog add set', 'transmog portable', 'transmog interface', 'transmog disclaimer'); INSERT INTO `command` (`name`, `security`, `help`) VALUES diff --git a/data/sql/db-world/updates/2026_05_09_migrate_strings_to_module_string.sql b/data/sql/db-world/updates/2026_05_09_migrate_strings_to_module_string.sql new file mode 100644 index 00000000..ec2e05c9 --- /dev/null +++ b/data/sql/db-world/updates/2026_05_09_migrate_strings_to_module_string.sql @@ -0,0 +1,445 @@ +-- Migrate transmog strings from acore_string (global IDs 11100-11121) to module_string. +-- Also migrates hardcoded gossip strings from C++ to module_string. +DELETE FROM `acore_string` WHERE `entry` BETWEEN 11100 AND 11121; + +DELETE FROM `module_string` WHERE `module` = 'mod-transmog'; +DELETE FROM `module_string_locale` WHERE `module` = 'mod-transmog'; +INSERT INTO `module_string` (`module`, `id`, `string`) VALUES +-- Transmog result strings +('mod-transmog', 1, 'Item successfully transmogrified.'), +('mod-transmog', 2, 'Equipment slot is empty.'), +('mod-transmog', 3, 'Invalid source item selected.'), +('mod-transmog', 4, 'Source item does not exist.'), +('mod-transmog', 5, 'Destination item does not exist.'), +('mod-transmog', 6, 'Selected items are invalid.'), +('mod-transmog', 7, 'You don''t have enough money.'), +('mod-transmog', 8, 'You don''t have enough tokens.'), +('mod-transmog', 9, 'All your transmogrifications were removed.'), +('mod-transmog', 10, 'No transmogrification found.'), +('mod-transmog', 11, 'Invalid name inserted.'), +-- Command strings +('mod-transmog', 12, 'Showing transmogrified items, relog to update the current area.'), +('mod-transmog', 13, 'Hiding transmogrified items, relog to update the current area.'), +('mod-transmog', 14, 'The selected item is not suitable for transmogrification.'), +('mod-transmog', 15, 'The selected item cannot be used for transmogrification of the target player.'), +('mod-transmog', 16, 'Performing transmog appearance sync...'), +('mod-transmog', 17, 'Appearance sync complete.'), +('mod-transmog', 18, 'The transmog NPC will now display available appearances as a vendor interface, allowing preview. \nDISCLAIMER: If you have too many appearances, some will not be displayed due to a client limitation. In that case, disable this option.'), +('mod-transmog', 19, 'The transmog NPC will now display available appearances as gossip list.'), +-- Gossip/UI strings +('mod-transmog', 20, 'How does transmogrification work?'), +('mod-transmog', 21, 'Manage sets'), +('mod-transmog', 22, 'Remove all transmogrifications'), +('mod-transmog', 23, 'Remove transmogrifications from all equipped items?'), +('mod-transmog', 24, 'Update menu'), +('mod-transmog', 25, 'How do sets work?'), +('mod-transmog', 26, 'Save set'), +('mod-transmog', 27, 'Back...'), +('mod-transmog', 28, 'Use this set'), +('mod-transmog', 29, 'Using this set for transmogrify will bind transmogrified items to you and make them non-refundable and non-tradeable.\nDo you wish to continue?\n\n'), +('mod-transmog', 30, 'Delete set'), +('mod-transmog', 31, 'Are you sure you want to delete '), +('mod-transmog', 32, 'Insert set name'), +('mod-transmog', 33, 'Search...'), +('mod-transmog', 34, 'Searching for: '), +('mod-transmog', 35, 'Search for what item?'), +('mod-transmog', 36, 'You are hiding the item in this slot.\nDo you wish to continue?\n\n'), +('mod-transmog', 37, 'Hide Slot'), +('mod-transmog', 38, 'Remove transmogrification from the slot?'), +('mod-transmog', 39, 'Using this item for transmogrify will bind it to you and make it non-refundable and non-tradeable.\nDo you wish to continue?\n\n'), +('mod-transmog', 40, 'Previous Page'), +('mod-transmog', 41, 'Next Page'), +('mod-transmog', 42, 'has been added to your appearance collection.'), +-- Disclaimer strings +('mod-transmog', 43, '|cFF4DB3FFSet bonuses won''t appear in the item tooltip while transmogrified, but they are still fully active.\nTo stop seeing this notice, type |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF.|r'), +('mod-transmog', 44, 'Set bonus disclaimer enabled.'), +('mod-transmog', 45, 'Set bonus disclaimer disabled.'); + +INSERT INTO `module_string_locale` (`module`, `id`, `locale`, `string`) VALUES +-- ID 1: OK +('mod-transmog', 1, 'koKR', '성공적으로 형상변환된 아이템'), +('mod-transmog', 1, 'frFR', 'Objet transmogrifié avec succès'), +('mod-transmog', 1, 'deDE', 'Gegenstand erfolgreich transmogrifiziert'), +('mod-transmog', 1, 'zhCN', '物品变形成功'), +('mod-transmog', 1, 'zhTW', '物品變身成功。'), +('mod-transmog', 1, 'esES', 'Objeto transfigurado con éxito'), +('mod-transmog', 1, 'esMX', 'Objeto transfigurado con éxito'), +('mod-transmog', 1, 'ruRU', 'Предмет успешно трансмогрифицирован'), +-- ID 2: INVALID_SLOT +('mod-transmog', 2, 'koKR', '장비 슬롯이 비어 있습니다.'), +('mod-transmog', 2, 'frFR', 'L''emplacement d''équipement est vide.'), +('mod-transmog', 2, 'deDE', 'Der Ausrüstungsplatz ist leer.'), +('mod-transmog', 2, 'zhCN', '装备槽是空的。'), +('mod-transmog', 2, 'zhTW', '裝備欄位是空的。'), +('mod-transmog', 2, 'esES', 'La ranura de equipo está vacía.'), +('mod-transmog', 2, 'esMX', 'La ranura de equipo está vacía.'), +('mod-transmog', 2, 'ruRU', 'Слот снаряжения пуст.'), +-- ID 3: INVALID_SRC_ENTRY +('mod-transmog', 3, 'koKR', '선택한 소스 요소가 잘못되었습니다.'), +('mod-transmog', 3, 'frFR', 'Élément source sélectionné non valide.'), +('mod-transmog', 3, 'deDE', 'Ungültiges ausgewähltes Quellelement.'), +('mod-transmog', 3, 'zhCN', '所选源元素无效。'), +('mod-transmog', 3, 'zhTW', '選擇的來源物品無效。'), +('mod-transmog', 3, 'esES', 'Elemento fuente seleccionado no válido.'), +('mod-transmog', 3, 'esMX', 'Elemento fuente seleccionado no válido.'), +('mod-transmog', 3, 'ruRU', 'Недопустимый выбранный исходный элемент.'), +-- ID 4: MISSING_SRC_ITEM +('mod-transmog', 4, 'koKR', '소스 요소가 존재하지 않습니다.'), +('mod-transmog', 4, 'frFR', 'L''élément source n''existe pas.'), +('mod-transmog', 4, 'deDE', 'Das Quellelement existiert nicht.'), +('mod-transmog', 4, 'zhCN', '源元素不存在。'), +('mod-transmog', 4, 'zhTW', '來源物品不存在。'), +('mod-transmog', 4, 'esES', 'El elemento de origen no existe.'), +('mod-transmog', 4, 'esMX', 'El elemento de origen no existe.'), +('mod-transmog', 4, 'ruRU', 'Исходный элемент не существует.'), +-- ID 5: MISSING_DEST_ITEM +('mod-transmog', 5, 'koKR', '대상 요소가 존재하지 않습니다.'), +('mod-transmog', 5, 'frFR', 'L''élément cible n''existe pas.'), +('mod-transmog', 5, 'deDE', 'Das Zielelement existiert nicht.'), +('mod-transmog', 5, 'zhCN', '目标元素不存在。'), +('mod-transmog', 5, 'zhTW', '目標物品不存在。'), +('mod-transmog', 5, 'esES', 'El elemento de destino no existe.'), +('mod-transmog', 5, 'esMX', 'El elemento de destino no existe.'), +('mod-transmog', 5, 'ruRU', 'Целевой элемент не существует.'), +-- ID 6: INVALID_ITEMS +('mod-transmog', 6, 'koKR', '선택한 항목이 잘못되었습니다.'), +('mod-transmog', 6, 'frFR', 'Les éléments sélectionnés ne sont pas valides'), +('mod-transmog', 6, 'deDE', 'Die ausgewählten Elemente sind ungültig'), +('mod-transmog', 6, 'zhCN', '所选项目无效'), +('mod-transmog', 6, 'zhTW', '所選物品無效。'), +('mod-transmog', 6, 'esES', 'Los elementos seleccionados no son válidos'), +('mod-transmog', 6, 'esMX', 'Los elementos seleccionados no son válidos'), +('mod-transmog', 6, 'ruRU', 'Выбранные элементы недействительны'), +-- ID 7: NOT_ENOUGH_MONEY +('mod-transmog', 7, 'koKR', '당신은 돈이 충분하지 않습니다.'), +('mod-transmog', 7, 'frFR', 'Vous n''avez pas assez d''argent.'), +('mod-transmog', 7, 'deDE', 'Du hast nicht genug Geld.'), +('mod-transmog', 7, 'zhCN', '你没有足够的钱。'), +('mod-transmog', 7, 'zhTW', '你沒有足夠的金錢。'), +('mod-transmog', 7, 'esES', 'No tienes suficiente dinero.'), +('mod-transmog', 7, 'esMX', 'No tienes suficiente dinero.'), +('mod-transmog', 7, 'ruRU', 'У вас недостаточно денег.'), +-- ID 8: NOT_ENOUGH_TOKENS +('mod-transmog', 8, 'koKR', '칩이 충분하지 않습니다.'), +('mod-transmog', 8, 'frFR', 'Vous n''avez pas assez de jetons.'), +('mod-transmog', 8, 'deDE', 'Du hast nicht genug Chips.'), +('mod-transmog', 8, 'zhCN', '你的筹码不够。'), +('mod-transmog', 8, 'zhTW', '你沒有足夠的代幣。'), +('mod-transmog', 8, 'esES', 'No tienes suficientes fichas.'), +('mod-transmog', 8, 'esMX', 'No tienes suficientes fichas.'), +('mod-transmog', 8, 'ruRU', 'У вас недостаточно фишек.'), +-- ID 9: UNTRANSMOG_OK +('mod-transmog', 9, 'koKR', '모든 형상변환을 제거했습니다.'), +('mod-transmog', 9, 'frFR', 'Suppression de toutes vos transmogrifications'), +('mod-transmog', 9, 'deDE', 'Alle deine Transmogrifikationen wurden entfernt'), +('mod-transmog', 9, 'zhCN', '删除了你所有的变形'), +('mod-transmog', 9, 'zhTW', '你的所有變身效果都被移除了。'), +('mod-transmog', 9, 'esES', 'Se eliminaron todas tus transfiguraciones'), +('mod-transmog', 9, 'esMX', 'Se eliminaron todas tus transfiguraciones'), +('mod-transmog', 9, 'ruRU', 'Удалены все ваши трансмогрификации'), +-- ID 10: UNTRANSMOG_NO_TRANSMOGS +('mod-transmog', 10, 'koKR', '변형이 없습니다.'), +('mod-transmog', 10, 'frFR', 'Aucune transfiguration trouvée.'), +('mod-transmog', 10, 'deDE', 'Keine Verwandlung gefunden.'), +('mod-transmog', 10, 'zhCN', '没有发现变形。'), +('mod-transmog', 10, 'zhTW', '找不到變身效果。'), +('mod-transmog', 10, 'esES', 'No se encontró transfiguración.'), +('mod-transmog', 10, 'esMX', 'No se encontró transfiguración.'), +('mod-transmog', 10, 'ruRU', 'Трансфигурация не найдена.'), +-- ID 11: PRESET_ERR_INVALID_NAME +('mod-transmog', 11, 'koKR', '삽입된 이름이 잘못되었습니다.'), +('mod-transmog', 11, 'frFR', 'Nom inséré non valide.'), +('mod-transmog', 11, 'deDE', 'Ungültiger eingegebener Name.'), +('mod-transmog', 11, 'zhCN', '插入的名称无效。'), +('mod-transmog', 11, 'zhTW', '插入的名稱無效。'), +('mod-transmog', 11, 'esES', 'Nombre insertado no válido.'), +('mod-transmog', 11, 'esMX', 'Nombre insertado no válido.'), +('mod-transmog', 11, 'ruRU', 'Недопустимое вставленное имя.'), +-- ID 12: CMD_SHOW +('mod-transmog', 12, 'koKR', '형상변환된 아이템이 표시되며, 현재 영역을 새로고침하려면 다시 로그인하세요.'), +('mod-transmog', 12, 'frFR', 'En affichant les objets transmogrifiés, reconnectez-vous pour actualiser la zone actuelle.'), +('mod-transmog', 12, 'deDE', 'Transmogrifizierte Gegenstände werden angezeigt. Melden Sie sich erneut an, um den aktuellen Bereich zu aktualisieren.'), +('mod-transmog', 12, 'zhCN', '显示已变形物品,重新登录即可刷新当前区域。'), +('mod-transmog', 12, 'zhTW', '顯示已變身的物品,重新登錄以更新當前區域。'), +('mod-transmog', 12, 'esES', 'Mostrando elementos transfigurados, vuelva a iniciar sesión para actualizar el área actual.'), +('mod-transmog', 12, 'esMX', 'Mostrando elementos transfigurados, vuelva a iniciar sesión para actualizar el área actual.'), +('mod-transmog', 12, 'ruRU', 'Отображение трансмогрифицированных предметов. Войдите в систему еще раз, чтобы обновить текущую область.'), +-- ID 13: CMD_HIDE +('mod-transmog', 13, 'koKR', '형상변환된 아이템을 숨기고 다시 로그인하여 현재 영역을 새로 고칩니다.'), +('mod-transmog', 13, 'frFR', 'Masquez les objets transmogrifiés, reconnectez-vous pour actualiser la zone actuelle.'), +('mod-transmog', 13, 'deDE', 'Transmogrifizierte Gegenstände ausblenden, erneut anmelden, um den aktuellen Bereich zu aktualisieren.'), +('mod-transmog', 13, 'zhCN', '隐藏变形物品,重新登录以刷新当前区域。'), +('mod-transmog', 13, 'zhTW', '隱藏已變身的物品,重新登錄以更新當前區域。'), +('mod-transmog', 13, 'esES', 'Ocultar elementos transfigurados, volver a iniciar sesión para actualizar el área actual.'), +('mod-transmog', 13, 'esMX', 'Ocultar elementos transfigurados, volver a iniciar sesión para actualizar el área actual.'), +('mod-transmog', 13, 'ruRU', 'Скройте трансмогрифицированные предметы, войдите в систему, чтобы обновить текущую область.'), +-- ID 14: CMD_ADD_UNSUITABLE +('mod-transmog', 14, 'koKR', '선택한 항목은 변형에 적합하지 않습니다.'), +('mod-transmog', 14, 'frFR', 'L''objet sélectionné ne convient pas à la métamorphose.'), +('mod-transmog', 14, 'deDE', 'Der ausgewählte Gegenstand ist nicht für die Verwandlung geeignet.'), +('mod-transmog', 14, 'zhCN', '所选项目不适合变形。'), +('mod-transmog', 14, 'zhTW', '所選物品不適合進行變身。'), +('mod-transmog', 14, 'esES', 'El elemento seleccionado no es adecuado para la transfiguración.'), +('mod-transmog', 14, 'esMX', 'El elemento seleccionado no es adecuado para la transfiguración.'), +('mod-transmog', 14, 'ruRU', 'Выбранный предмет не подходит для преображения.'), +-- ID 15: CMD_ADD_FORBIDDEN +('mod-transmog', 15, 'koKR', '선택한 아이템은 대상 플레이어의 형상변환에 사용할 수 없습니다.'), +('mod-transmog', 15, 'frFR', 'L''objet sélectionné ne peut pas être utilisé pour la transmogrification du joueur ciblé'), +('mod-transmog', 15, 'deDE', 'Der ausgewählte Gegenstand kann nicht für die Transmogrifizierung des Zielspielers verwendet werden'), +('mod-transmog', 15, 'zhCN', '所选物品不能用于目标玩家的变身'), +('mod-transmog', 15, 'zhTW', '所選物品不能用於目標玩家的變身效果。'), +('mod-transmog', 15, 'esES', 'El elemento seleccionado no se puede usar para la transfiguración del jugador objetivo'), +('mod-transmog', 15, 'esMX', 'El elemento seleccionado no se puede usar para la transfiguración del jugador objetivo'), +('mod-transmog', 15, 'ruRU', 'Выбранный предмет нельзя использовать для трансмогрификации целевого игрока.'), +-- ID 16: CMD_BEGIN_SYNC +('mod-transmog', 16, 'koKR', '형상변환 모양 동기화 수행 중...'), +('mod-transmog', 16, 'frFR', 'Exécution de la synchronisation de l''apparence de transmogrification...'), +('mod-transmog', 16, 'deDE', 'Synchronisierung des Transmog-Erscheinungsbilds wird durchgeführt ...'), +('mod-transmog', 16, 'zhCN', '正在执行 Transmog 外观同步...'), +('mod-transmog', 16, 'zhTW', '正在執行外觀同步變身操作...'), +('mod-transmog', 16, 'esES', 'Realizando sincronización de apariencia de transfiguración...'), +('mod-transmog', 16, 'esMX', 'Realizando sincronización de apariencia de transfiguración...'), +('mod-transmog', 16, 'ruRU', 'Выполнение синхронизации внешнего вида Transmog...'), +-- ID 17: CMD_COMPLETE_SYNC +('mod-transmog', 17, 'koKR', '전체 모양 동기화'), +('mod-transmog', 17, 'frFR', 'Synchronisation complète de l''apparence'), +('mod-transmog', 17, 'deDE', 'Vollständige Synchronisierung des Erscheinungsbilds'), +('mod-transmog', 17, 'zhCN', '完全外观同步'), +('mod-transmog', 17, 'zhTW', '外觀同步變身操作完成。'), +('mod-transmog', 17, 'esES', 'Sincronización de apariencia completa'), +('mod-transmog', 17, 'esMX', 'Sincronización de apariencia completa'), +('mod-transmog', 17, 'ruRU', 'Полная синхронизация внешнего вида'), +-- ID 20: HOWWORKS +('mod-transmog', 20, 'koKR', '형상변환은 어떻게 작동합니까?'), +('mod-transmog', 20, 'frFR', 'Comment fonctionne la transmogrification ?'), +('mod-transmog', 20, 'deDE', 'Wie funktioniert Transmogrifizierung?'), +('mod-transmog', 20, 'zhCN', '变形术是如何运作的?'), +('mod-transmog', 20, 'zhTW', '幻化是如何運作的?'), +('mod-transmog', 20, 'esES', '¿Cómo funciona la transfiguración?'), +('mod-transmog', 20, 'esMX', '¿Cómo funciona la transfiguración?'), +('mod-transmog', 20, 'ruRU', 'Как работает трансмогрификация?'), +-- ID 21: MANAGESETS +('mod-transmog', 21, 'koKR', '세트 관리'), +('mod-transmog', 21, 'frFR', 'Gérer les ensembles'), +('mod-transmog', 21, 'deDE', 'Sets verwalten'), +('mod-transmog', 21, 'zhCN', '管理套装'), +('mod-transmog', 21, 'zhTW', '管理套裝'), +('mod-transmog', 21, 'esES', 'Administrar conjuntos'), +('mod-transmog', 21, 'esMX', 'Administrar conjuntos'), +('mod-transmog', 21, 'ruRU', 'Управление комплектами'), +-- ID 22: REMOVETRANSMOG +('mod-transmog', 22, 'koKR', '모든 변형 제거'), +('mod-transmog', 22, 'frFR', 'Supprimer toutes les transmogrifications'), +('mod-transmog', 22, 'deDE', 'Alle Transmogrifikationen entfernen'), +('mod-transmog', 22, 'zhCN', '移除所有幻化'), +('mod-transmog', 22, 'zhTW', '移除所有幻化'), +('mod-transmog', 22, 'esES', 'Eliminar todas las transfiguraciones'), +('mod-transmog', 22, 'esMX', 'Eliminar todas las transfiguraciones'), +('mod-transmog', 22, 'ruRU', 'Удалить все трансмогрификации'), +-- ID 23: REMOVETRANSMOG_ASK +('mod-transmog', 23, 'koKR', '장착한 모든 아이템의 변형을 제거합니까?'), +('mod-transmog', 23, 'frFR', 'Supprimer les transmogrifications de tous les objets équipés ?'), +('mod-transmog', 23, 'deDE', 'Transmogrifikationen von allen ausgerüsteten Gegenständen entfernen?'), +('mod-transmog', 23, 'zhCN', '是否要从所有已装备的物品中移除幻化?'), +('mod-transmog', 23, 'zhTW', '從所有已裝備物品中移除幻化?'), +('mod-transmog', 23, 'esES', '¿Eliminar las transfiguraciones de todos los objetos equipados?'), +('mod-transmog', 23, 'esMX', '¿Eliminar las transfiguraciones de todos los objetos equipados?'), +('mod-transmog', 23, 'ruRU', 'Удалить трансмогрификации со всех экипированных предметов?'), +-- ID 24: UPDATEMENU +('mod-transmog', 24, 'koKR', '메뉴 업데이트'), +('mod-transmog', 24, 'frFR', 'Mettre à jour le menu'), +('mod-transmog', 24, 'deDE', 'Menü aktualisieren'), +('mod-transmog', 24, 'zhCN', '更新菜单'), +('mod-transmog', 24, 'zhTW', '更新選單'), +('mod-transmog', 24, 'esES', 'Actualizar menú'), +('mod-transmog', 24, 'esMX', 'Actualizar menú'), +('mod-transmog', 24, 'ruRU', 'Обновить меню'), +-- ID 25: HOWSETSWORK +('mod-transmog', 25, 'koKR', '세트는 어떻게 작동합니까?'), +('mod-transmog', 25, 'frFR', 'Comment fonctionnent les ensembles ?'), +('mod-transmog', 25, 'deDE', 'Wie funktionieren Sets?'), +('mod-transmog', 25, 'zhCN', '套装是如何运作的?'), +('mod-transmog', 25, 'zhTW', '套裝如何運作?'), +('mod-transmog', 25, 'esES', '¿Cómo funcionan los conjuntos?'), +('mod-transmog', 25, 'esMX', '¿Cómo funcionan los conjuntos?'), +('mod-transmog', 25, 'ruRU', 'Как работают комплекты?'), +-- ID 26: SAVESET +('mod-transmog', 26, 'koKR', '세트 저장'), +('mod-transmog', 26, 'frFR', 'Sauvegarder l''ensemble'), +('mod-transmog', 26, 'deDE', 'Set speichern'), +('mod-transmog', 26, 'zhCN', '保存套装'), +('mod-transmog', 26, 'zhTW', '儲存套裝'), +('mod-transmog', 26, 'esES', 'Guardar conjunto'), +('mod-transmog', 26, 'esMX', 'Guardar conjunto'), +('mod-transmog', 26, 'ruRU', 'Сохранить комплект'), +-- ID 27: BACK +('mod-transmog', 27, 'koKR', '뒤로...'), +('mod-transmog', 27, 'frFR', 'Retour...'), +('mod-transmog', 27, 'deDE', 'Zurück...'), +('mod-transmog', 27, 'zhCN', '返回...'), +('mod-transmog', 27, 'zhTW', '返回...'), +('mod-transmog', 27, 'esES', 'Atrás...'), +('mod-transmog', 27, 'esMX', 'Atrás...'), +('mod-transmog', 27, 'ruRU', 'Назад...'), +-- ID 28: USESET +('mod-transmog', 28, 'koKR', '이 세트를 사용'), +('mod-transmog', 28, 'frFR', 'Utiliser cet ensemble'), +('mod-transmog', 28, 'deDE', 'Dieses Set verwenden'), +('mod-transmog', 28, 'zhCN', '使用此套装'), +('mod-transmog', 28, 'zhTW', '使用此套裝'), +('mod-transmog', 28, 'esES', 'Usar este conjunto'), +('mod-transmog', 28, 'esMX', 'Usar este conjunto'), +('mod-transmog', 28, 'ruRU', 'Использовать этот комплект'), +-- ID 29: CONFIRM_USESET +('mod-transmog', 29, 'koKR', '이 세트를 변형에 사용하면 변형된 아이템이 계정에 제한되어 환불 및 거래가 불가능합니다.\n계속하시겠습니까?\n\n'), +('mod-transmog', 29, 'frFR', 'En utilisant cet ensemble pour la transmogrification, les objets transmogrifiés seront liés à votre personnage et deviendront non remboursables et non échangeables.\nVoulez-vous continuer ?\n\n'), +('mod-transmog', 29, 'deDE', 'Wenn du dieses Set für die Transmogrifikation verwendest, werden die transmogrifizierten Gegenstände an dich gebunden und können nicht erstattet oder gehandelt werden.\nMöchtest du fortfahren?\n\n'), +('mod-transmog', 29, 'zhCN', '将此套装用于幻化将使幻化后的物品与您绑定,并使其不可退还和不可交易。\n您是否要继续?\n\n'), +('mod-transmog', 29, 'zhTW', '使用此套裝進行幻化將使幻化後的物品與您綁定,並使其無法退款和無法交易。\n您是否希望繼續?\n\n'), +('mod-transmog', 29, 'esES', 'Usar este conjunto para transfigurar vinculará los objetos transfigurados a ti y los volverá no reembolsables y no intercambiables.\n¿Deseas continuar?\n\n'), +('mod-transmog', 29, 'esMX', 'Usar este conjunto para transfigurar vinculará los objetos transfigurados a ti y los volverá no reembolsables y no intercambiables.\n¿Deseas continuar?\n\n'), +('mod-transmog', 29, 'ruRU', 'Использование этого комплекта для трансмогрификации привяжет трансмогрифицированные предметы к вам и сделает их неподлежащими возврату и обмену.\nЖелаете продолжить?\n\n'), +-- ID 30: DELETESET +('mod-transmog', 30, 'koKR', '세트 삭제'), +('mod-transmog', 30, 'frFR', 'Supprimer l''ensemble'), +('mod-transmog', 30, 'deDE', 'Set löschen'), +('mod-transmog', 30, 'zhCN', '删除套装'), +('mod-transmog', 30, 'zhTW', '刪除套裝'), +('mod-transmog', 30, 'esES', 'Eliminar conjunto'), +('mod-transmog', 30, 'esMX', 'Eliminar conjunto'), +('mod-transmog', 30, 'ruRU', 'Удалить комплект'), +-- ID 31: CONFIRM_DELETESET +('mod-transmog', 31, 'koKR', '을(를) 삭제하시겠습니까 '), +('mod-transmog', 31, 'frFR', 'Êtes-vous sûr de vouloir supprimer '), +('mod-transmog', 31, 'deDE', 'Möchten Sie wirklich löschen '), +('mod-transmog', 31, 'zhCN', '您确定要删除吗 '), +('mod-transmog', 31, 'zhTW', '您確定要刪除 '), +('mod-transmog', 31, 'esES', '¿Estás seguro de que quieres eliminar '), +('mod-transmog', 31, 'esMX', '¿Estás seguro de que quieres eliminar '), +('mod-transmog', 31, 'ruRU', 'Вы уверены, что хотите удалить '), +-- ID 32: INSERTSETNAME +('mod-transmog', 32, 'koKR', '세트 이름 입력'), +('mod-transmog', 32, 'frFR', 'Insérer le nom de l''ensemble'), +('mod-transmog', 32, 'deDE', 'Set-Namen einfügen'), +('mod-transmog', 32, 'zhCN', '插入套装名称'), +('mod-transmog', 32, 'zhTW', '輸入套裝名稱'), +('mod-transmog', 32, 'esES', 'Insertar nombre del conjunto'), +('mod-transmog', 32, 'esMX', 'Insertar nombre del conjunto'), +('mod-transmog', 32, 'ruRU', 'Введите имя комплекта'), +-- ID 33: SEARCH +('mod-transmog', 33, 'koKR', '검색...'), +('mod-transmog', 33, 'frFR', 'Rechercher...'), +('mod-transmog', 33, 'deDE', 'Suche...'), +('mod-transmog', 33, 'zhCN', '搜索...'), +('mod-transmog', 33, 'zhTW', '搜索...'), +('mod-transmog', 33, 'esES', 'Buscar...'), +('mod-transmog', 33, 'esMX', 'Buscar...'), +('mod-transmog', 33, 'ruRU', 'Поиск...'), +-- ID 34: SEARCHING_FOR +('mod-transmog', 34, 'koKR', '검색 중: '), +('mod-transmog', 34, 'frFR', 'Recherche en cours: '), +('mod-transmog', 34, 'deDE', 'Suche nach: '), +('mod-transmog', 34, 'zhCN', '正在搜索: '), +('mod-transmog', 34, 'zhTW', '正在搜尋:'), +('mod-transmog', 34, 'esES', 'Buscando:'), +('mod-transmog', 34, 'esMX', 'Buscando: '), +('mod-transmog', 34, 'ruRU', 'Поиск: '), +-- ID 35: SEARCH_FOR_ITEM +('mod-transmog', 35, 'koKR', '어떤 아이템을 찾으시겠습니까?'), +('mod-transmog', 35, 'frFR', 'Rechercher quel objet ?'), +('mod-transmog', 35, 'deDE', 'Nach welchem Gegenstand suchen?'), +('mod-transmog', 35, 'zhCN', '搜索哪个物品?'), +('mod-transmog', 35, 'zhTW', '搜索哪個物品?'), +('mod-transmog', 35, 'esES', '¿Buscar un objeto?'), +('mod-transmog', 35, 'esMX', '¿Buscar un objeto?'), +('mod-transmog', 35, 'ruRU', 'Поиск предмета:'), +-- ID 36: CONFIRM_HIDE_ITEM +('mod-transmog', 36, 'koKR', '이 슬롯에 아이템을 감추고 있습니다.\n계속하시겠습니까?\n\n'), +('mod-transmog', 36, 'frFR', 'Vous masquez l''objet dans cet emplacement.\nVoulez-vous continuer ?\n\n'), +('mod-transmog', 36, 'deDE', 'Du versteckst das Item in diesem Slot.\nMöchtest du fortfahren?\n\n'), +('mod-transmog', 36, 'zhCN', '您正在隐藏此槽中的物品。\n您是否要继续?\n\n'), +('mod-transmog', 36, 'zhTW', '您正在隱藏此槽中的物品。\n您是否希望繼續?\n\n'), +('mod-transmog', 36, 'esES', 'Estás ocultando el objeto en esta ranura.\n¿Deseas continuar?\n\n'), +('mod-transmog', 36, 'esMX', 'Estás ocultando el objeto en esta ranura.\n¿Deseas continuar?\n\n'), +('mod-transmog', 36, 'ruRU', 'Вы скрываете предмет в этом слоте.\nЖелаете продолжить?\n\n'), +-- ID 37: HIDESLOT +('mod-transmog', 37, 'koKR', '슬롯 숨기기'), +('mod-transmog', 37, 'frFR', 'Cacher l''emplacement'), +('mod-transmog', 37, 'deDE', 'Slot verbergen'), +('mod-transmog', 37, 'zhCN', '隐藏槽位'), +('mod-transmog', 37, 'zhTW', '隱藏槽位'), +('mod-transmog', 37, 'esES', 'Ocultar ranura'), +('mod-transmog', 37, 'esMX', 'Ocultar ranura'), +('mod-transmog', 37, 'ruRU', 'Скрыть слот'), +-- ID 38: REMOVETRANSMOG_SLOT +('mod-transmog', 38, 'koKR', '해당 슬롯의 형상변환을 제거합니까?'), +('mod-transmog', 38, 'frFR', 'Supprimer la transmogrification de l''emplacement ?'), +('mod-transmog', 38, 'deDE', 'Transmogrifikation aus dem Slot entfernen?'), +('mod-transmog', 38, 'zhCN', '是否要从该槽位中移除幻化?'), +('mod-transmog', 38, 'zhTW', '從該槽位移除幻化?'), +('mod-transmog', 38, 'esES', '¿Eliminar la transfiguración del espacio?'), +('mod-transmog', 38, 'esMX', '¿Eliminar la transfiguración del espacio?'), +('mod-transmog', 38, 'ruRU', 'Удалить трансмогрификацию из ячейки?'), +-- ID 39: CONFIRM_USEITEM +('mod-transmog', 39, 'koKR', '이 아이템을 변형에 사용하면 계정에 제한되어 환불 및 거래가 불가능하게 됩니다.\n계속하시겠습니까?\n\n'), +('mod-transmog', 39, 'frFR', 'En utilisant cet objet pour la transmogrification, il sera lié à votre personnage et deviendra non remboursable et non échangeable.\nVoulez-vous continuer ?\n\n'), +('mod-transmog', 39, 'deDE', 'Wenn du diesen Gegenstand für die Transmogrifikation verwendest, wird er an dich gebunden und kann nicht erstattet oder gehandelt werden.\nMöchtest du fortfahren?\n\n'), +('mod-transmog', 39, 'zhCN', '将此物品用于幻化将使其与您绑定,并使其不可退还和不可交易。\n您是否要继续?\n\n'), +('mod-transmog', 39, 'zhTW', '使用此物品進行幻化將使其與您綁定,並使其無法退款和無法交易。\n您是否希望繼續?\n\n'), +('mod-transmog', 39, 'esES', 'Usar este objeto para transfigurar lo vinculará a ti y lo volverá no reembolsable y no intercambiable.\n¿Deseas continuar?\n\n'), +('mod-transmog', 39, 'esMX', 'Usar este objeto para transfigurar lo vinculará a ti y lo volverá no reembolsable y no intercambiable.\n¿Deseas continuar?\n\n'), +('mod-transmog', 39, 'ruRU', 'Использование этого предмета для трансмогрификации привяжет его к вам и сделает его неподлежащим возврату и обмену.\nЖелаете продолжить?\n\n'), +-- ID 40: PREVIOUS_PAGE +('mod-transmog', 40, 'koKR', '이전 페이지'), +('mod-transmog', 40, 'frFR', 'Page précédente'), +('mod-transmog', 40, 'deDE', 'Vorherige Seite'), +('mod-transmog', 40, 'zhCN', '上一页'), +('mod-transmog', 40, 'zhTW', '上一頁'), +('mod-transmog', 40, 'esES', 'Página anterior'), +('mod-transmog', 40, 'esMX', 'Página anterior'), +('mod-transmog', 40, 'ruRU', 'Предыдущая страница'), +-- ID 41: NEXT_PAGE +('mod-transmog', 41, 'koKR', '다음 페이지'), +('mod-transmog', 41, 'frFR', 'Page suivante'), +('mod-transmog', 41, 'deDE', 'Nächste Seite'), +('mod-transmog', 41, 'zhCN', '下一页'), +('mod-transmog', 41, 'zhTW', '下一頁'), +('mod-transmog', 41, 'esES', 'Página siguiente'), +('mod-transmog', 41, 'esMX', 'Página siguiente'), +('mod-transmog', 41, 'ruRU', 'Следующая страница'), +-- ID 42: ADDED_APPEARANCE +('mod-transmog', 42, 'koKR', '이(가) 외형 컬렉션에 추가되었습니다.'), +('mod-transmog', 42, 'frFR', 'a été ajouté(e) à votre collection d''apparences.'), +('mod-transmog', 42, 'deDE', 'wurde deiner Transmog-Sammlung hinzugefügt.'), +('mod-transmog', 42, 'zhCN', '已添加到外观收藏中。'), +('mod-transmog', 42, 'zhTW', '已加入您的外觀收藏。'), +('mod-transmog', 42, 'esES', 'se ha añadido a tu colección de apariencias.'), +('mod-transmog', 42, 'esMX', 'se ha agregado a tu colección de apariencias.'), +('mod-transmog', 42, 'ruRU', 'был добавлен в вашу коллекцию обликов.'), + +('mod-transmog', 43, 'koKR', '|cFF4DB3FF변형 중에는 아이템 툴팁에 세트 보너스가 표시되지 않지만, 여전히 완전히 활성화되어 있습니다.\n이 알림을 중지하려면 |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF 을 입력하세요.|r'), +('mod-transmog', 43, 'frFR', '|cFF4DB3FFLes bonus de set n''apparaîtront pas dans l''info-bulle de l''objet lors de la transmogrification, mais ils restent pleinement actifs.\nPour arrêter d''afficher cette notice, tapez |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF.|r'), +('mod-transmog', 43, 'deDE', '|cFF4DB3FFSetboni werden in der Gegenstandsbeschreibung während der Transmogrifizierung nicht angezeigt, sind aber weiterhin voll aktiv.\nUm diesen Hinweis zu deaktivieren, gib |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF ein.|r'), +('mod-transmog', 43, 'zhCN', '|cFF4DB3FF幻化后物品提示中不会显示套装加成,但套装加成仍然完全有效。\n若要停止显示此提示,请输入 |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF。|r'), +('mod-transmog', 43, 'zhTW', '|cFF4DB3FF幻化後物品提示中不會顯示套裝加成,但套裝加成仍然完全有效。\n若要停止顯示此提示,請輸入 |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF。|r'), +('mod-transmog', 43, 'esES', '|cFF4DB3FFLas bonificaciones de conjunto no aparecerán en la descripción del objeto mientras esté transfigurado, pero siguen activas.\nPara dejar de ver este aviso, escribe |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF.|r'), +('mod-transmog', 43, 'esMX', '|cFF4DB3FFLas bonificaciones de conjunto no aparecerán en la descripción del objeto mientras esté transfigurado, pero siguen activas.\nPara dejar de ver este aviso, escribe |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF.|r'), +('mod-transmog', 43, 'ruRU', '|cFF4DB3FFБонусы набора не будут отображаться в подсказке предмета при трансмогрификации, но они по-прежнему полностью активны.\nЧтобы скрыть это уведомление, введите |cFFFFFFFF.transmog disclaimer off|cFF4DB3FF.|r'), + +('mod-transmog', 44, 'koKR', '세트 보너스 알림이 활성화되었습니다.'), +('mod-transmog', 44, 'frFR', 'Avertissement de bonus de set activé.'), +('mod-transmog', 44, 'deDE', 'Setbonus-Hinweis aktiviert.'), +('mod-transmog', 44, 'zhCN', '套装加成提示已启用。'), +('mod-transmog', 44, 'zhTW', '套裝加成提示已啟用。'), +('mod-transmog', 44, 'esES', 'Aviso de bonificación de conjunto activado.'), +('mod-transmog', 44, 'esMX', 'Aviso de bonificación de conjunto activado.'), +('mod-transmog', 44, 'ruRU', 'Уведомление о бонусах набора включено.'), + +('mod-transmog', 45, 'koKR', '세트 보너스 알림이 비활성화되었습니다.'), +('mod-transmog', 45, 'frFR', 'Avertissement de bonus de set désactivé.'), +('mod-transmog', 45, 'deDE', 'Setbonus-Hinweis deaktiviert.'), +('mod-transmog', 45, 'zhCN', '套装加成提示已禁用。'), +('mod-transmog', 45, 'zhTW', '套裝加成提示已禁用。'), +('mod-transmog', 45, 'esES', 'Aviso de bonificación de conjunto desactivado.'), +('mod-transmog', 45, 'esMX', 'Aviso de bonificación de conjunto desactivado.'), +('mod-transmog', 45, 'ruRU', 'Уведомление о бонусах набора отключено.'); diff --git a/src/Transmogrification.cpp b/src/Transmogrification.cpp index 47b8ac92..fc95d49a 100644 --- a/src/Transmogrification.cpp +++ b/src/Transmogrification.cpp @@ -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); @@ -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) @@ -501,20 +501,20 @@ 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 @@ -522,7 +522,7 @@ TransmogAcoreStrings Transmogrification::Transmogrify(Player* player, Item* item 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) @@ -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 @@ -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) @@ -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()); @@ -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); } } @@ -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 diff --git a/src/Transmogrification.h b/src/Transmogrification.h index f4f731b0..48ccd0a8 100644 --- a/src/Transmogrification.h +++ b/src/Transmogrification.h @@ -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 @@ -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; diff --git a/src/cs_transmog.cpp b/src/cs_transmog.cpp index 0594d355..4cfcb338 100644 --- a/src/cs_transmog.cpp +++ b/src/cs_transmog.cpp @@ -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; } @@ -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(); @@ -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; } @@ -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; @@ -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; } @@ -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; } @@ -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; } @@ -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; } diff --git a/src/transmog_scripts.cpp b/src/transmog_scripts.cpp index dde27d35..06c0690b 100644 --- a/src/transmog_scripts.cpp +++ b/src/transmog_scripts.cpp @@ -19,7 +19,6 @@ Blizzard might have changed the quality requirements. Cant transmogrify rediculus items // Foereaper: would be fun to stab people with a fish -- Cant think of any good way to handle this easily, could rip flagged items from cata DB */ -#include #include "Transmogrification.h" #include "Chat.h" #include "ScriptedCreature.h" @@ -28,328 +27,20 @@ Cant transmogrify rediculus items // Foereaper: would be fun to stab people with #include "WorldPacket.h" #include "Opcodes.h" -#define sT sTransmogrification -#define GTS session->GetAcoreString // dropped translation support, no one using? - -const std::unordered_map TRANSMOG_TEXT_HOWWORKS = { - {LOCALE_enUS, "How does transmogrification work?"}, - {LOCALE_koKR, "형상변환은 어떻게 작동합니까?"}, - {LOCALE_frFR, "Comment fonctionne la transmogrification ?"}, - {LOCALE_deDE, "Wie funktioniert Transmogrifizierung?"}, - {LOCALE_zhCN, "变形术是如何运作的?"}, - {LOCALE_zhTW, "幻化是如何運作的?"}, - {LOCALE_esES, "¿Cómo funciona la transfiguración?"}, - {LOCALE_esMX, "¿Cómo funciona la transfiguración?"}, - {LOCALE_ruRU, "Как работает трансмогрификация?"} -}; - -const std::unordered_map TRANSMOG_TEXT_MANAGESETS = { - {LOCALE_enUS, "Manage sets"}, - {LOCALE_koKR, "세트 관리"}, - {LOCALE_frFR, "Gérer les ensembles"}, - {LOCALE_deDE, "Sets verwalten"}, - {LOCALE_zhCN, "管理套装"}, - {LOCALE_zhTW, "管理套裝"}, - {LOCALE_esES, "Administrar conjuntos"}, - {LOCALE_esMX, "Administrar conjuntos"}, - {LOCALE_ruRU, "Управление комплектами"} -}; - -const std::unordered_map TRANSMOG_TEXT_REMOVETRANSMOG = { - {LOCALE_enUS, "Remove all transmogrifications"}, - {LOCALE_koKR, "모든 변형 제거"}, - {LOCALE_frFR, "Supprimer toutes les transmogrifications"}, - {LOCALE_deDE, "Alle Transmogrifikationen entfernen"}, - {LOCALE_zhCN, "移除所有幻化"}, - {LOCALE_zhTW, "移除所有幻化"}, - {LOCALE_esES, "Eliminar todas las transfiguraciones"}, - {LOCALE_esMX, "Eliminar todas las transfiguraciones"}, - {LOCALE_ruRU, "Удалить все трансмогрификации"} -}; - -const std::unordered_map TRANSMOG_TEXT_REMOVETRANSMOG_ASK = { - {LOCALE_enUS, "Remove transmogrifications from all equipped items?"}, - {LOCALE_koKR, "장착한 모든 아이템의 변형을 제거합니까?"}, - {LOCALE_frFR, "Supprimer les transmogrifications de tous les objets équipés ?"}, - {LOCALE_deDE, "Transmogrifikationen von allen ausgerüsteten Gegenständen entfernen?"}, - {LOCALE_zhCN, "是否要从所有已装备的物品中移除幻化?"}, - {LOCALE_zhTW, "從所有已裝備物品中移除幻化?"}, - {LOCALE_esES, "¿Eliminar las transfiguraciones de todos los objetos equipados?"}, - {LOCALE_esMX, "¿Eliminar las transfiguraciones de todos los objetos equipados?"}, - {LOCALE_ruRU, "Удалить трансмогрификации со всех экипированных предметов?"} -}; - -const std::unordered_map TRANSMOG_TEXT_UPDATEMENU = { - {LOCALE_enUS, "Update menu"}, - {LOCALE_koKR, "메뉴 업데이트"}, - {LOCALE_frFR, "Mettre à jour le menu"}, - {LOCALE_deDE, "Menü aktualisieren"}, - {LOCALE_zhCN, "更新菜单"}, - {LOCALE_zhTW, "更新選單"}, - {LOCALE_esES, "Actualizar menú"}, - {LOCALE_esMX, "Actualizar menú"}, - {LOCALE_ruRU, "Обновить меню"} -}; - -const std::unordered_map TRANSMOG_TEXT_HOWSETSWORK = { - {LOCALE_enUS, "How do sets work?"}, - {LOCALE_koKR, "세트는 어떻게 작동합니까?"}, - {LOCALE_frFR, "Comment fonctionnent les ensembles ?"}, - {LOCALE_deDE, "Wie funktionieren Sets?"}, - {LOCALE_zhCN, "套装是如何运作的?"}, - {LOCALE_zhTW, "套裝如何運作?"}, - {LOCALE_esES, "¿Cómo funcionan los conjuntos?"}, - {LOCALE_esMX, "¿Cómo funcionan los conjuntos?"}, - {LOCALE_ruRU, "Как работают комплекты?"} -}; - -const std::unordered_map TRANSMOG_TEXT_SAVESET = { - {LOCALE_enUS, "Save set"}, - {LOCALE_koKR, "세트 저장"}, - {LOCALE_frFR, "Sauvegarder l'ensemble"}, - {LOCALE_deDE, "Set speichern"}, - {LOCALE_zhCN, "保存套装"}, - {LOCALE_zhTW, "儲存套裝"}, - {LOCALE_esES, "Guardar conjunto"}, - {LOCALE_esMX, "Guardar conjunto"}, - {LOCALE_ruRU, "Сохранить комплект"} -}; - -const std::unordered_map TRANSMOG_TEXT_BACK = { - {LOCALE_enUS, "Back..."}, - {LOCALE_koKR, "뒤로..."}, - {LOCALE_frFR, "Retour..."}, - {LOCALE_deDE, "Zurück..."}, - {LOCALE_zhCN, "返回..."}, - {LOCALE_zhTW, "返回..."}, - {LOCALE_esES, "Atrás..."}, - {LOCALE_esMX, "Atrás..."}, - {LOCALE_ruRU, "Назад..."} -}; - -const std::unordered_map TRANSMOG_TEXT_USESET = { - {LOCALE_enUS, "Use this set"}, - {LOCALE_koKR, "이 세트를 사용"}, - {LOCALE_frFR, "Utiliser cet ensemble"}, - {LOCALE_deDE, "Dieses Set verwenden"}, - {LOCALE_zhCN, "使用此套装"}, - {LOCALE_zhTW, "使用此套裝"}, - {LOCALE_esES, "Usar este conjunto"}, - {LOCALE_esMX, "Usar este conjunto"}, - {LOCALE_ruRU, "Использовать этот комплект"} -}; - -const std::unordered_map TRANSMOG_TEXT_CONFIRM_USESET = { - {LOCALE_enUS, "Using this set for transmogrify will bind transmogrified items to you and make them non-refundable and non-tradeable.\nDo you wish to continue?\n\n"}, - {LOCALE_koKR, "이 세트를 변형에 사용하면 변형된 아이템이 계정에 제한되어 환불 및 거래가 불가능합니다.\n계속하시겠습니까?\n\n"}, - {LOCALE_frFR, "En utilisant cet ensemble pour la transmogrification, les objets transmogrifiés seront liés à votre personnage et deviendront non remboursables et non échangeables.\nVoulez-vous continuer ?\n\n"}, - {LOCALE_deDE, "Wenn du dieses Set für die Transmogrifikation verwendest, werden die transmogrifizierten Gegenstände an dich gebunden und können nicht erstattet oder gehandelt werden.\nMöchtest du fortfahren?\n\n"}, - {LOCALE_zhCN, "将此套装用于幻化将使幻化后的物品与您绑定,并使其不可退还和不可交易。\n您是否要继续?\n\n"}, - {LOCALE_zhTW, "使用此套裝進行幻化將使幻化後的物品與您綁定,並使其無法退款和無法交易。\n您是否希望繼續?\n\n"}, - {LOCALE_esES, "Usar este conjunto para transfigurar vinculará los objetos transfigurados a ti y los volverá no reembolsables y no intercambiables.\n¿Deseas continuar?\n\n"}, - {LOCALE_esMX, "Usar este conjunto para transfigurar vinculará los objetos transfigurados a ti y los volverá no reembolsables y no intercambiables.\n¿Deseas continuar?\n\n"}, - {LOCALE_ruRU, "Использование этого комплекта для трансмогрификации привяжет трансмогрифицированные предметы к вам и сделает их неподлежащими возврату и обмену.\nЖелаете продолжить?\n\n"} -}; - -const std::unordered_map TRANSMOG_TEXT_DELETESET = { - {LOCALE_enUS, "Delete set"}, - {LOCALE_koKR, "세트 삭제"}, - {LOCALE_frFR, "Supprimer l'ensemble"}, - {LOCALE_deDE, "Set löschen"}, - {LOCALE_zhCN, "删除套装"}, - {LOCALE_zhTW, "刪除套裝"}, - {LOCALE_esES, "Eliminar conjunto"}, - {LOCALE_esMX, "Eliminar conjunto"}, - {LOCALE_ruRU, "Удалить комплект"} -}; - -const std::unordered_map TRANSMOG_TEXT_CONFIRM_DELETESET = { - {LOCALE_enUS, "Are you sure you want to delete "}, - {LOCALE_koKR, "을(를) 삭제하시겠습니까 "}, - {LOCALE_frFR, "Êtes-vous sûr de vouloir supprimer "}, - {LOCALE_deDE, "Möchten Sie wirklich löschen "}, - {LOCALE_zhCN, "您确定要删除吗 "}, - {LOCALE_zhTW, "您確定要刪除 "}, - {LOCALE_esES, "¿Estás seguro de que quieres eliminar "}, - {LOCALE_esMX, "¿Estás seguro de que quieres eliminar "}, - {LOCALE_ruRU, "Вы уверены, что хотите удалить "} -}; - -const std::unordered_map TRANSMOG_TEXT_INSERTSETNAME = { - {LOCALE_enUS, "Insert set name"}, - {LOCALE_koKR, "세트 이름 입력"}, - {LOCALE_frFR, "Insérer le nom de l'ensemble"}, - {LOCALE_deDE, "Set-Namen einfügen"}, - {LOCALE_zhCN, "插入套装名称"}, - {LOCALE_zhTW, "輸入套裝名稱"}, - {LOCALE_esES, "Insertar nombre del conjunto"}, - {LOCALE_esMX, "Insertar nombre del conjunto"}, - {LOCALE_ruRU, "Введите имя комплекта"} -}; - -const std::unordered_map TRANSMOG_TEXT_SEARCH = { - {LOCALE_enUS, "Search..."}, - {LOCALE_koKR, "검색..."}, - {LOCALE_frFR, "Rechercher..."}, - {LOCALE_deDE, "Suche..."}, - {LOCALE_zhCN, "搜索..."}, - {LOCALE_zhTW, "搜索..."}, - {LOCALE_esES, "Buscar..."}, - {LOCALE_esMX, "Buscar..."}, - {LOCALE_ruRU, "Поиск..."} -}; - -const std::unordered_map TRANSMOG_TEXT_SEARCHING_FOR = { - {LOCALE_enUS, "Searching for: "}, - {LOCALE_koKR, "검색 중: "}, - {LOCALE_frFR, "Recherche en cours: "}, - {LOCALE_deDE, "Suche nach: "}, - {LOCALE_zhCN, "正在搜索: "}, - {LOCALE_zhTW, "正在搜尋:"}, - {LOCALE_esES, "Buscando:" }, - {LOCALE_esMX, "Buscando: "}, - {LOCALE_ruRU, "Поиск: "} -}; - -const std::unordered_map TRANSMOG_TEXT_SEARCH_FOR_ITEM = { - {LOCALE_enUS, "Search for what item?"}, - {LOCALE_koKR, "어떤 아이템을 찾으시겠습니까?"}, - {LOCALE_frFR, "Rechercher quel objet ?"}, - {LOCALE_deDE, "Nach welchem Gegenstand suchen?"}, - {LOCALE_zhCN, "搜索哪个物品?"}, - {LOCALE_zhTW, "搜索哪個物品?"}, - {LOCALE_esES, "¿Buscar un objeto?"}, - {LOCALE_esMX, "¿Buscar un objeto?"}, - {LOCALE_ruRU, "Поиск предмета:"} -}; - -const std::unordered_map TRANSMOG_TEXT_CONFIRM_HIDE_ITEM = { - {LOCALE_enUS, "You are hiding the item in this slot.\nDo you wish to continue?\n\n"}, - {LOCALE_koKR, "이 슬롯에 아이템을 감추고 있습니다.\n계속하시겠습니까?\n\n"}, - {LOCALE_frFR, "Vous masquez l'objet dans cet emplacement.\nVoulez-vous continuer ?\n\n"}, - {LOCALE_deDE, "Du versteckst das Item in diesem Slot.\nMöchtest du fortfahren?\n\n"}, - {LOCALE_zhCN, "您正在隐藏此槽中的物品。\n您是否要继续?\n\n"}, - {LOCALE_zhTW, "您正在隱藏此槽中的物品。\n您是否希望繼續?\n\n"}, - {LOCALE_esES, "Estás ocultando el objeto en esta ranura.\n¿Deseas continuar?\n\n"}, - {LOCALE_esMX, "Estás ocultando el objeto en esta ranura.\n¿Deseas continuar?\n\n"}, - {LOCALE_ruRU, "Вы скрываете предмет в этом слоте.\nЖелаете продолжить?\n\n"} -}; - -const std::unordered_map TRANSMOG_TEXT_HIDESLOT = { - {LOCALE_enUS, "Hide Slot"}, - {LOCALE_koKR, "슬롯 숨기기"}, - {LOCALE_frFR, "Cacher l'emplacement"}, - {LOCALE_deDE, "Slot verbergen"}, - {LOCALE_zhCN, "隐藏槽位"}, - {LOCALE_zhTW, "隱藏槽位"}, - {LOCALE_esES, "Ocultar ranura"}, - {LOCALE_esMX, "Ocultar ranura"}, - {LOCALE_ruRU, "Скрыть слот"} -}; +#define sT sTransmogrification -const std::unordered_map TRANSMOG_TEXT_REMOVETRANSMOG_SLOT = { - {LOCALE_enUS, "Remove transmogrification from the slot?"}, - {LOCALE_koKR, "해당 슬롯의 형상변환을 제거합니까?"}, - {LOCALE_frFR, "Supprimer la transmogrification de l'emplacement ?"}, - {LOCALE_deDE, "Transmogrifikation aus dem Slot entfernen?"}, - {LOCALE_zhCN, "是否要从该槽位中移除幻化?"}, - {LOCALE_zhTW, "從該槽位移除幻化?"}, - {LOCALE_esES, "¿Eliminar la transfiguración del espacio?"}, - {LOCALE_esMX, "¿Eliminar la transfiguración del espacio?"}, - {LOCALE_ruRU, "Удалить трансмогрификацию из ячейки?"} -}; - -const std::unordered_map TRANSMOG_TEXT_CONFIRM_USEITEM = { - {LOCALE_enUS, "Using this item for transmogrify will bind it to you and make it non-refundable and non-tradeable.\nDo you wish to continue?\n\n"}, - {LOCALE_koKR, "이 아이템을 변형에 사용하면 계정에 제한되어 환불 및 거래가 불가능하게 됩니다.\n계속하시겠습니까?\n\n"}, - {LOCALE_frFR, "En utilisant cet objet pour la transmogrification, il sera lié à votre personnage et deviendra non remboursable et non échangeable.\nVoulez-vous continuer ?\n\n"}, - {LOCALE_deDE, "Wenn du diesen Gegenstand für die Transmogrifikation verwendest, wird er an dich gebunden und kann nicht erstattet oder gehandelt werden.\nMöchtest du fortfahren?\n\n"}, - {LOCALE_zhCN, "将此物品用于幻化将使其与您绑定,并使其不可退还和不可交易。\n您是否要继续?\n\n"}, - {LOCALE_zhTW, "使用此物品進行幻化將使其與您綁定,並使其無法退款和無法交易。\n您是否希望繼續?\n\n"}, - {LOCALE_esES, "Usar este objeto para transfigurar lo vinculará a ti y lo volverá no reembolsable y no intercambiable.\n¿Deseas continuar?\n\n"}, - {LOCALE_esMX, "Usar este objeto para transfigurar lo vinculará a ti y lo volverá no reembolsable y no intercambiable.\n¿Deseas continuar?\n\n"}, - {LOCALE_ruRU, "Использование этого предмета для трансмогрификации привяжет его к вам и сделает его неподлежащим возврату и обмену.\nЖелаете продолжить?\n\n"} -}; - -const std::unordered_map TRANSMOG_TEXT_PREVIOUS_PAGE = { - {LOCALE_enUS, "Previous Page"}, - {LOCALE_koKR, "이전 페이지"}, - {LOCALE_frFR, "Page précédente"}, - {LOCALE_deDE, "Vorherige Seite"}, - {LOCALE_zhCN, "上一页"}, - {LOCALE_zhTW, "上一頁"}, - {LOCALE_esES, "Página anterior"}, - {LOCALE_esMX, "Página anterior"}, - {LOCALE_ruRU, "Предыдущая страница"} -}; - -const std::unordered_map TRANSMOG_TEXT_NEXT_PAGE = { - {LOCALE_enUS, "Next Page"}, - {LOCALE_koKR, "다음 페이지"}, - {LOCALE_frFR, "Page suivante"}, - {LOCALE_deDE, "Nächste Seite"}, - {LOCALE_zhCN, "下一页"}, - {LOCALE_zhTW, "下一頁"}, - {LOCALE_esES, "Página siguiente"}, - {LOCALE_esMX, "Página siguiente"}, - {LOCALE_ruRU, "Следующая страница"} -}; +static inline const std::string& Tstr(WorldSession* session, uint32 id) +{ + return *session->GetModuleString("mod-transmog", id); +} -const std::unordered_map TRANSMOG_TEXT_ADDED_APPEARANCE = { - {LOCALE_enUS, "has been added to your appearance collection."}, - {LOCALE_koKR, "이(가) 외형 컬렉션에 추가되었습니다."}, - {LOCALE_frFR, "a été ajouté(e) à votre collection d'apparences."}, - {LOCALE_deDE, "wurde deiner Transmog-Sammlung hinzugefügt."}, - {LOCALE_zhCN, "已添加到外观收藏中。"}, - {LOCALE_zhTW, "已加入您的外觀收藏。"}, - {LOCALE_esES, "se ha añadido a tu colección de apariencias."}, - {LOCALE_esMX, "se ha agregado a tu colección de apariencias."}, - {LOCALE_ruRU, "был добавлен в вашу коллекцию обликов."} -}; -std::unordered_map*> textMaps = { - {"how_works", &TRANSMOG_TEXT_HOWWORKS}, - {"manage_sets", &TRANSMOG_TEXT_MANAGESETS}, - {"remove_transmog", &TRANSMOG_TEXT_REMOVETRANSMOG}, - {"remove_transmog_ask", &TRANSMOG_TEXT_REMOVETRANSMOG_ASK}, - {"update_menu", &TRANSMOG_TEXT_UPDATEMENU}, - {"how_sets_work", &TRANSMOG_TEXT_HOWSETSWORK}, - {"save_set", &TRANSMOG_TEXT_SAVESET}, - {"back", &TRANSMOG_TEXT_BACK}, - {"use_set", &TRANSMOG_TEXT_USESET}, - {"confirm_use_set", &TRANSMOG_TEXT_CONFIRM_USESET}, - {"delete_set", &TRANSMOG_TEXT_DELETESET}, - {"confirm_delete_set", &TRANSMOG_TEXT_CONFIRM_DELETESET}, - {"insert_set_name", &TRANSMOG_TEXT_INSERTSETNAME}, - {"search", &TRANSMOG_TEXT_SEARCH}, - {"searching_for", &TRANSMOG_TEXT_SEARCHING_FOR}, - {"search_for_item", &TRANSMOG_TEXT_SEARCH_FOR_ITEM}, - {"confirm_hide_item", &TRANSMOG_TEXT_CONFIRM_HIDE_ITEM}, - {"hide_slot", &TRANSMOG_TEXT_HIDESLOT}, - {"remove_transmog_slot", &TRANSMOG_TEXT_REMOVETRANSMOG_SLOT}, - {"confirm_use_item", &TRANSMOG_TEXT_CONFIRM_USEITEM}, - {"previous_page", &TRANSMOG_TEXT_PREVIOUS_PAGE}, - {"next_page", &TRANSMOG_TEXT_NEXT_PAGE}, - {"added_appearance", &TRANSMOG_TEXT_ADDED_APPEARANCE} -}; const uint32 FALLBACK_HIDE_ITEM_VENDOR_ID = 9172; //Invisibility potion const uint32 FALLBACK_REMOVE_TMOG_VENDOR_ID = 1049; //Tablet of Purge const uint32 CUSTOM_HIDE_ITEM_VENDOR_ID = 57575;//Custom Hide Item item const uint32 CUSTOM_REMOVE_TMOG_VENDOR_ID = 57576;//Custom Remove Transmog item -std::string GetLocaleText(LocaleConstant locale, const std::string& titleType) { - auto textMapIt = textMaps.find(titleType); - if (textMapIt != textMaps.end()) { - const std::unordered_map* textMap = textMapIt->second; - auto it = textMap->find(locale); - if (it != textMap->end()) { - return it->second; - } - } - - return ""; -} uint32 GetTransmogPrice (ItemTemplate const* targetItem) { @@ -438,13 +129,13 @@ void PerformTransmogrification (Player* player, uint32 itemEntry, uint32 cost) WorldSession* session = player->GetSession(); if (!player->HasEnoughMoney(cost)) { - ChatHandler(session).SendNotification(LANG_ERR_TRANSMOG_NOT_ENOUGH_MONEY); + ChatHandler(session).SendNotification(Tstr(session, LANG_TRANSMOG_NOT_ENOUGH_MONEY)); return; } - TransmogAcoreStrings res = sT->Transmogrify(player, itemEntry, slot); - if (res == LANG_ERR_TRANSMOG_OK) + TransmogStrings res = sT->Transmogrify(player, itemEntry, slot); + if (res == LANG_TRANSMOG_OK) { - session->SendAreaTriggerMessage("{}", GTS(LANG_ERR_TRANSMOG_OK)); + session->SendAreaTriggerMessage("{}", Tstr(session, LANG_TRANSMOG_OK)); if (sT->ShowSetDisclaimer && !player->GetPlayerSetting("mod-transmog", SETTING_HIDE_SET_DISCLAIMER).value) @@ -452,12 +143,12 @@ void PerformTransmogrification (Player* player, uint32 itemEntry, uint32 cost) if (Item* destItem = player->GetItemByPos(INVENTORY_SLOT_BAG_0, slot)) { if (destItem->GetTemplate()->ItemSet) - ChatHandler(session).SendSysMessage(LANG_TRANSMOG_SET_DISCLAIMER); + ChatHandler(session).PSendSysMessage("{}", Tstr(session, LANG_TRANSMOG_SET_DISCLAIMER)); } } } else - ChatHandler(session).SendNotification(res); + ChatHandler(session).SendNotification(Tstr(session, res)); } void RemoveTransmogrification (Player* player) @@ -469,10 +160,10 @@ void RemoveTransmogrification (Player* player) if (sT->GetFakeEntry(newItem->GetGUID())) { sT->DeleteFakeEntry(player, slot, newItem); - session->SendAreaTriggerMessage("{}", GTS(LANG_ERR_UNTRANSMOG_OK)); + session->SendAreaTriggerMessage("{}", Tstr(session, LANG_TRANSMOG_UNTRANSMOG_OK)); } else - ChatHandler(session).SendNotification(LANG_ERR_UNTRANSMOG_NO_TRANSMOGS); + ChatHandler(session).SendNotification(Tstr(session, LANG_TRANSMOG_UNTRANSMOG_NO_TRANSMOGS)); } } @@ -509,13 +200,12 @@ class npc_transmogrifier : public CreatureScript bool OnGossipHello(Player* player, Creature* creature) override { WorldSession* session = player->GetSession(); - LocaleConstant locale = session->GetSessionDbLocaleIndex(); // Clear the search string for the player sT->searchStringByPlayer.erase(player->GetGUID().GetCounter()); if (sT->GetEnableTransmogInfo()) - AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Misc_Book_11:30:30:-18:0|t" + GetLocaleText(locale, "how_works"), EQUIPMENT_SLOT_END + 9, 0); + AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Misc_Book_11:30:30:-18:0|t" + Tstr(session, LANG_TRANSMOG_HOWWORKS), EQUIPMENT_SLOT_END + 9, 0); for (uint8 slot = EQUIPMENT_SLOT_START; slot < EQUIPMENT_SLOT_END; ++slot) { if (const char* slotName = sT->GetSlotName(slot, session)) @@ -528,10 +218,10 @@ class npc_transmogrifier : public CreatureScript } #ifdef PRESETS if (sT->GetEnableSets()) - AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/RAIDFRAME/UI-RAIDFRAME-MAINASSIST:30:30:-18:0|t" + GetLocaleText(locale, "manage_sets"), EQUIPMENT_SLOT_END + 4, 0); + AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/RAIDFRAME/UI-RAIDFRAME-MAINASSIST:30:30:-18:0|t" + Tstr(session, LANG_TRANSMOG_MANAGESETS), EQUIPMENT_SLOT_END + 4, 0); #endif - AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Enchant_Disenchant:30:30:-18:0|t" + GetLocaleText(locale, "remove_transmog"), EQUIPMENT_SLOT_END + 2, 0, GetLocaleText(locale, "remove_transmog_ask"), 0, false); - AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/PaperDollInfoFrame/UI-GearManager-Undo:30:30:-18:0|t" + GetLocaleText(locale, "update_menu"), EQUIPMENT_SLOT_END + 1, 0); + AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Enchant_Disenchant:30:30:-18:0|t" + Tstr(session, LANG_TRANSMOG_REMOVETRANSMOG), EQUIPMENT_SLOT_END + 2, 0, Tstr(session, LANG_TRANSMOG_REMOVETRANSMOG_ASK), 0, false); + AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/PaperDollInfoFrame/UI-GearManager-Undo:30:30:-18:0|t" + Tstr(session, LANG_TRANSMOG_UPDATEMENU), EQUIPMENT_SLOT_END + 1, 0); SendGossipMenuFor(player, DEFAULT_GOSSIP_MESSAGE, creature->GetGUID()); return true; } @@ -540,7 +230,6 @@ class npc_transmogrifier : public CreatureScript { player->PlayerTalkClass->ClearMenus(); WorldSession* session = player->GetSession(); - LocaleConstant locale = session->GetSessionDbLocaleIndex(); // Next page if (sender > EQUIPMENT_SLOT_END + 10) { @@ -581,11 +270,11 @@ class npc_transmogrifier : public CreatureScript } if (removed) { - session->SendAreaTriggerMessage("{}", GTS(LANG_ERR_UNTRANSMOG_OK)); + session->SendAreaTriggerMessage("{}", Tstr(session, LANG_TRANSMOG_UNTRANSMOG_OK)); CharacterDatabase.CommitTransaction(trans); } else - ChatHandler(session).SendNotification(LANG_ERR_UNTRANSMOG_NO_TRANSMOGS); + ChatHandler(session).SendNotification(Tstr(session, LANG_TRANSMOG_UNTRANSMOG_NO_TRANSMOGS)); OnGossipHello(player, creature); } break; case EQUIPMENT_SLOT_END + 3: // Remove Transmogrification from single item @@ -602,13 +291,13 @@ class npc_transmogrifier : public CreatureScript return true; } if (sT->GetEnableSetInfo()) - AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Misc_Book_11:30:30:-18:0|t" + GetLocaleText(locale, "how_sets_work"), EQUIPMENT_SLOT_END + 10, 0); + AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Misc_Book_11:30:30:-18:0|t" + Tstr(session, LANG_TRANSMOG_HOWSETSWORK), EQUIPMENT_SLOT_END + 10, 0); for (Transmogrification::presetIdMap::const_iterator it = sT->presetByName[player->GetGUID()].begin(); it != sT->presetByName[player->GetGUID()].end(); ++it) AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Misc_Statue_02:30:30:-18:0|t" + it->second, EQUIPMENT_SLOT_END + 6, it->first); if (sT->presetByName[player->GetGUID()].size() < sT->GetMaxSets()) - AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/GuildBankFrame/UI-GuildBankFrame-NewTab:30:30:-18:0|t" + GetLocaleText(locale, "save_set"), EQUIPMENT_SLOT_END + 8, 0); - AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/Ability_Spy:30:30:-18:0|t" + GetLocaleText(locale, "back"), EQUIPMENT_SLOT_END + 1, 0); + AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/GuildBankFrame/UI-GuildBankFrame-NewTab:30:30:-18:0|t" + Tstr(session, LANG_TRANSMOG_SAVESET), EQUIPMENT_SLOT_END + 8, 0); + AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/Ability_Spy:30:30:-18:0|t" + Tstr(session, LANG_TRANSMOG_BACK), EQUIPMENT_SLOT_END + 1, 0); SendGossipMenuFor(player, DEFAULT_GOSSIP_MESSAGE, creature->GetGUID()); } break; case EQUIPMENT_SLOT_END + 5: // Use preset @@ -637,9 +326,9 @@ class npc_transmogrifier : public CreatureScript for (Transmogrification::slotMap::const_iterator it = sT->presetById[player->GetGUID()][action].begin(); it != sT->presetById[player->GetGUID()][action].end(); ++it) AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, sT->GetItemIcon(it->second, 30, 30, -18, 0) + sT->GetItemLink(it->second, session), sender, action); - AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Misc_Statue_02:30:30:-18:0|t" + GetLocaleText(locale, "use_set"), EQUIPMENT_SLOT_END + 5, action, GetLocaleText(locale, "confirm_use_set") + sT->presetByName[player->GetGUID()][action], 0, false); - AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/PaperDollInfoFrame/UI-GearManager-LeaveItem-Opaque:30:30:-18:0|t" + GetLocaleText(locale, "delete_set"), EQUIPMENT_SLOT_END + 7, action, GetLocaleText(locale, "confirm_delete_set") + sT->presetByName[player->GetGUID()][action] + "?", 0, false); - AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/Ability_Spy:30:30:-18:0|t" + GetLocaleText(locale, "back"), EQUIPMENT_SLOT_END + 4, 0); + AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Misc_Statue_02:30:30:-18:0|t" + Tstr(session, LANG_TRANSMOG_USESET), EQUIPMENT_SLOT_END + 5, action, Tstr(session, LANG_TRANSMOG_CONFIRM_USESET) + sT->presetByName[player->GetGUID()][action], 0, false); + AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/PaperDollInfoFrame/UI-GearManager-LeaveItem-Opaque:30:30:-18:0|t" + Tstr(session, LANG_TRANSMOG_DELETESET), EQUIPMENT_SLOT_END + 7, action, Tstr(session, LANG_TRANSMOG_CONFIRM_DELETESET) + sT->presetByName[player->GetGUID()][action] + "?", 0, false); + AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/Ability_Spy:30:30:-18:0|t" + Tstr(session, LANG_TRANSMOG_BACK), EQUIPMENT_SLOT_END + 4, 0); SendGossipMenuFor(player, DEFAULT_GOSSIP_MESSAGE, creature->GetGUID()); } break; case EQUIPMENT_SLOT_END + 7: // Delete preset @@ -686,20 +375,20 @@ class npc_transmogrifier : public CreatureScript } } if (canSave) - AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/GuildBankFrame/UI-GuildBankFrame-NewTab:30:30:-18:0|t" + GetLocaleText(locale, "save_set"), 0, 0, GetLocaleText(locale, "insert_set_name"), cost*sT->GetSetCostModifier() + sT->GetSetCopperCost(), true); - AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/PaperDollInfoFrame/UI-GearManager-Undo:30:30:-18:0|t" + GetLocaleText(locale, "update_menu"), sender, action); - AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/Ability_Spy:30:30:-18:0|t" + GetLocaleText(locale, "back"), EQUIPMENT_SLOT_END + 4, 0); + AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/GuildBankFrame/UI-GuildBankFrame-NewTab:30:30:-18:0|t" + Tstr(session, LANG_TRANSMOG_SAVESET), 0, 0, Tstr(session, LANG_TRANSMOG_INSERTSETNAME), cost*sT->GetSetCostModifier() + sT->GetSetCopperCost(), true); + AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/PaperDollInfoFrame/UI-GearManager-Undo:30:30:-18:0|t" + Tstr(session, LANG_TRANSMOG_UPDATEMENU), sender, action); + AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/Ability_Spy:30:30:-18:0|t" + Tstr(session, LANG_TRANSMOG_BACK), EQUIPMENT_SLOT_END + 4, 0); SendGossipMenuFor(player, DEFAULT_GOSSIP_MESSAGE, creature->GetGUID()); } break; case EQUIPMENT_SLOT_END + 10: // Set info { - AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/Ability_Spy:30:30:-18:0|t" + GetLocaleText(locale, "back"), EQUIPMENT_SLOT_END + 4, 0); + AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/Ability_Spy:30:30:-18:0|t" + Tstr(session, LANG_TRANSMOG_BACK), EQUIPMENT_SLOT_END + 4, 0); SendGossipMenuFor(player, sT->GetSetNpcText(), creature->GetGUID()); } break; #endif case EQUIPMENT_SLOT_END + 9: // Transmog info { - AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/Ability_Spy:30:30:-18:0|t" + GetLocaleText(locale, "back"), EQUIPMENT_SLOT_END + 1, 0); + AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/Ability_Spy:30:30:-18:0|t" + Tstr(session, LANG_TRANSMOG_BACK), EQUIPMENT_SLOT_END + 1, 0); SendGossipMenuFor(player, sT->GetTransmogNpcText(), creature->GetGUID()); } break; default: // Transmogrify @@ -740,7 +429,7 @@ class npc_transmogrifier : public CreatureScript } std::string name(code); if (name.find('"') != std::string::npos || name.find('\\') != std::string::npos) - ChatHandler(player->GetSession()).SendNotification(LANG_PRESET_ERR_INVALID_NAME); + ChatHandler(player->GetSession()).SendNotification(Tstr(player->GetSession(), LANG_TRANSMOG_PRESET_ERR_INVALID_NAME)); else { for (uint8 presetID = 0; presetID < sT->GetMaxSets(); ++presetID) // should never reach over max @@ -777,7 +466,7 @@ class npc_transmogrifier : public CreatureScript cost += sT->GetSetCopperCost(); if (!player->HasEnoughMoney(cost)) { - ChatHandler(player->GetSession()).SendNotification(LANG_ERR_TRANSMOG_NOT_ENOUGH_MONEY); + ChatHandler(player->GetSession()).SendNotification(Tstr(player->GetSession(), LANG_TRANSMOG_NOT_ENOUGH_MONEY)); break; } @@ -803,7 +492,6 @@ class npc_transmogrifier : public CreatureScript void ShowTransmogItemsInGossipMenu(Player* player, Creature* creature, uint8 slot, uint16 gossipPageNumber) // Only checks bags while can use an item from anywhere in inventory { WorldSession* session = player->GetSession(); - LocaleConstant locale = session->GetSessionDbLocaleIndex(); Item* oldItem = player->GetItemByPos(INVENTORY_SLOT_BAG_0, slot); bool hasSearchString; @@ -829,7 +517,7 @@ class npc_transmogrifier : public CreatureScript std::unordered_map::iterator searchStringIterator = sT->searchStringByPlayer.find(player->GetGUID().GetCounter()); hasSearchString = !(searchStringIterator == sT->searchStringByPlayer.end()); - std::string searchDisplayValue(hasSearchString ? searchStringIterator->second : GetLocaleText(locale, "search")); + std::string searchDisplayValue(hasSearchString ? searchStringIterator->second : Tstr(session, LANG_TRANSMOG_SEARCH)); std::vector allowedItems = GetValidTransmogs(player, oldItem, hasSearchString, searchDisplayValue); if (allowedItems.size() > 0) @@ -840,11 +528,11 @@ class npc_transmogrifier : public CreatureScript { if (hasSearchString) { - AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, sT->GetItemIcon(30620, 30, 30, -18, 0) + GetLocaleText(locale, "searching_for") + searchDisplayValue, slot + 1, 0, GetLocaleText(locale, "search_for_item"), 0, true); + AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, sT->GetItemIcon(30620, 30, 30, -18, 0) + Tstr(session, LANG_TRANSMOG_SEARCHING_FOR) + searchDisplayValue, slot + 1, 0, Tstr(session, LANG_TRANSMOG_SEARCH_FOR_ITEM), 0, true); } else { - AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, sT->GetItemIcon(30620, 30, 30, -18, 0) + GetLocaleText(locale, "search"), slot + 1, 0, GetLocaleText(locale, "search_for_item"), 0, true); + AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, sT->GetItemIcon(30620, 30, 30, -18, 0) + Tstr(session, LANG_TRANSMOG_SEARCH), slot + 1, 0, Tstr(session, LANG_TRANSMOG_SEARCH_FOR_ITEM), 0, true); } } else @@ -862,7 +550,7 @@ class npc_transmogrifier : public CreatureScript else { // Add invisible item entry - AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/inv_misc_enggizmos_27:30:30:-18:0|t" + GetLocaleText(locale, "hide_slot"), slot, UINT_MAX, GetLocaleText(locale, "confirm_hide_item") + lineEnd, 0, false); + AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/inv_misc_enggizmos_27:30:30:-18:0|t" + Tstr(session, LANG_TRANSMOG_HIDESLOT), slot, UINT_MAX, Tstr(session, LANG_TRANSMOG_CONFIRM_HIDE_ITEM) + lineEnd, 0, false); } } for (uint32 i = startValue; i <= endValue; i++) @@ -873,34 +561,30 @@ class npc_transmogrifier : public CreatureScript break; } Item* newItem = allowedItems.at(i); - AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, sT->GetItemIcon(newItem->GetEntry(), 30, 30, -18, 0) + sT->GetItemLink(newItem, session), slot, newItem->GetEntry(), GetLocaleText(locale, "confirm_use_item") + sT->GetItemIcon(newItem->GetEntry(), 40, 40, -15, -10) + sT->GetItemLink(newItem, session) + lineEnd, price, false); + AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, sT->GetItemIcon(newItem->GetEntry(), 30, 30, -18, 0) + sT->GetItemLink(newItem, session), slot, newItem->GetEntry(), Tstr(session, LANG_TRANSMOG_CONFIRM_USEITEM) + sT->GetItemIcon(newItem->GetEntry(), 40, 40, -15, -10) + sT->GetItemLink(newItem, session) + lineEnd, price, false); } } if (gossipPageNumber == EQUIPMENT_SLOT_END + 11) { - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GetLocaleText(locale, "previous_page"), EQUIPMENT_SLOT_END, slot); + AddGossipItemFor(player, GOSSIP_ICON_CHAT, Tstr(session, LANG_TRANSMOG_PREVIOUS_PAGE), EQUIPMENT_SLOT_END, slot); if (!lastPage) - { - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GetLocaleText(locale, "next_page"), gossipPageNumber + 1, slot); - } + AddGossipItemFor(player, GOSSIP_ICON_CHAT, Tstr(session, LANG_TRANSMOG_NEXT_PAGE), gossipPageNumber + 1, slot); } else if (gossipPageNumber > EQUIPMENT_SLOT_END + 11) { - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GetLocaleText(locale, "previous_page"), gossipPageNumber - 1, slot); + AddGossipItemFor(player, GOSSIP_ICON_CHAT, Tstr(session, LANG_TRANSMOG_PREVIOUS_PAGE), gossipPageNumber - 1, slot); if (!lastPage) - { - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GetLocaleText(locale, "next_page"), gossipPageNumber + 1, slot); - } + AddGossipItemFor(player, GOSSIP_ICON_CHAT, Tstr(session, LANG_TRANSMOG_NEXT_PAGE), gossipPageNumber + 1, slot); } else if (!lastPage) { - AddGossipItemFor(player, GOSSIP_ICON_CHAT, "Next Page", EQUIPMENT_SLOT_END + 11, slot); + AddGossipItemFor(player, GOSSIP_ICON_CHAT, Tstr(session, LANG_TRANSMOG_NEXT_PAGE), EQUIPMENT_SLOT_END + 11, slot); } - AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Enchant_Disenchant:30:30:-18:0|t" + GetLocaleText(locale, "remove_transmog"), EQUIPMENT_SLOT_END + 3, slot, GetLocaleText(locale, "remove_transmog_slot"), 0, false); - AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/PaperDollInfoFrame/UI-GearManager-Undo:30:30:-18:0|t" + GetLocaleText(locale, "update_menu"), EQUIPMENT_SLOT_END, slot); + AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/INV_Enchant_Disenchant:30:30:-18:0|t" + Tstr(session, LANG_TRANSMOG_REMOVETRANSMOG), EQUIPMENT_SLOT_END + 3, slot, Tstr(session, LANG_TRANSMOG_REMOVETRANSMOG_SLOT), 0, false); + AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/PaperDollInfoFrame/UI-GearManager-Undo:30:30:-18:0|t" + Tstr(session, LANG_TRANSMOG_UPDATEMENU), EQUIPMENT_SLOT_END, slot); } - AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/Ability_Spy:30:30:-18:0|t" + GetLocaleText(locale, "back"), EQUIPMENT_SLOT_END + 1, 0); + AddGossipItemFor(player, GOSSIP_ICON_MONEY_BAG, "|TInterface/ICONS/Ability_Spy:30:30:-18:0|t" + Tstr(session, LANG_TRANSMOG_BACK), EQUIPMENT_SLOT_END + 1, 0); SendGossipMenuFor(player, DEFAULT_GOSSIP_MESSAGE, creature->GetGUID()); } @@ -964,7 +648,7 @@ class npc_transmogrifier : public CreatureScript Item* targetItem = player->GetItemByPos(INVENTORY_SLOT_BAG_0, slot); if (!targetItem) { - ChatHandler(player->GetSession()).SendNotification(LANG_ERR_TRANSMOG_MISSING_DEST_ITEM); + ChatHandler(player->GetSession()).SendNotification(Tstr(player->GetSession(), LANG_TRANSMOG_MISSING_DEST_ITEM)); CloseGossipMenuFor(player); return; } @@ -1018,17 +702,16 @@ class PS_Transmogrification : public PlayerScript void AddToDatabase(Player* player, ItemTemplate const* itemTemplate) { - LocaleConstant locale = player->GetSession()->GetSessionDbLocaleIndex(); if (!sT->GetTrackUnusableItems() && !sT->SuitableForTransmogrification(player, itemTemplate)) return; if (itemTemplate->Class != ITEM_CLASS_ARMOR && itemTemplate->Class != ITEM_CLASS_WEAPON) return; uint32 itemId = itemTemplate->ItemId; - uint32 accountId = player->GetSession()->GetAccountId(); - std::string itemName = itemTemplate -> Name1; + WorldSession* session = player->GetSession(); + uint32 accountId = session->GetAccountId(); + std::string itemName = itemTemplate->Name1; - // get locale item name - int loc_idex = player->GetSession()->GetSessionDbLocaleIndex(); + int loc_idex = session->GetSessionDbLocaleIndex(); if (ItemLocale const* il = sObjectMgr->GetItemLocale(itemId)) ObjectMgr::GetLocaleString(il->Name, loc_idex, itemName); @@ -1039,9 +722,9 @@ class PS_Transmogrification : public PlayerScript if (sT->AddCollectedAppearance(accountId, itemId)) { if (showChatMessage) - ChatHandler(player->GetSession()).PSendSysMessage( R"(|c{}|Hitem:{}:0:0:0:0:0:0:0:0|h[{}]|h|r {})", itemQuality, itemId, itemName, GetLocaleText(locale, "added_appearance")); + ChatHandler(session).PSendSysMessage(R"(|c{}|Hitem:{}:0:0:0:0:0:0:0:0|h[{}]|h|r {})", itemQuality, itemId, itemName, Tstr(session, LANG_TRANSMOG_ADDED_APPEARANCE)); - CharacterDatabase.Execute( "INSERT INTO custom_unlocked_appearances (account_id, item_template_id) VALUES ({}, {})", accountId, itemId); + CharacterDatabase.Execute("INSERT INTO custom_unlocked_appearances (account_id, item_template_id) VALUES ({}, {})", accountId, itemId); } }