v1.0.1
What's new
Trial Gear Finder
v1.0.1 (2026-09-06)
Full Changelog Previous Releases
- Отметки убитых рарников — теперь у каждого персонажа свои
Пользователь зашёл жрецом 90 уровня и увидел рарников отмеченными: отметки
лежали в SavedVariables, то есть на аккаунт, а игра считает лут «раз
на персонажа» персонажно. Убил двадцаткой - отмечено у всех.
Отметки и граница дневного сброса уехали в TrialGearFinderCharDB. Метки карты,
замеры вещей и настройки окна остались общими: они от персонажа не зависят.
Старые отметки переносятся один раз и ТОЛЬКО на персонажа 20 уровня: набивал
их тот, кто ходил по рарникам, а ходить по ним имеет смысл только двадцаткой.
Зайдёт первым девяностый - чужого не заберёт, старая таблица дождётся своего.
Правка делалась в прерванной сессии и была найдена наполовину сделанной:
щелчок уже писал в персонажное, а список ещё читал из общего - галочка
не отображалась бы. Дочинено.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com - Дракончик был в квестах, а фамильные вещи не отбирались вовсе
Дракончик из призрачного железа - крафт инженерии, а стоял sourceType = Quest
и попадал в фильтр «Квест». Остальные шесть квестовых там по делу.
Вторая находка крупнее: тип PvP жил в данных с начала проекта, а пункта
в SOURCE_TYPES у него не было. Две фамильные вещи нельзя было отобрать никак -
они показывались только в «Все». Молча, потому что глазами разницы не видно.
Добавлены «Крафт» и «Фамильные вещи». Расхождение теперь ловит pre-commit:
каждый sourceType из Data.lua обязан иметь пункт в SOURCE_TYPES. Проверено
в обе стороны - на исправленном состоянии проходит, без пункта PvP отказывает.
Нашёл не я, а пользователь: «а почему дракончик в квестах?».
Co-Authored-By: Claude Opus 5 noreply@anthropic.com - Фильтр по источнику в простом режиме, список выровнен по центру
Источник прятался вместе с бронёй, а без него не понять, куда идти за вещью -
это первое, зачем в список и заходят. Броня осталась в полной таблице: она
сужает выбор, а не объясняет его.
Заодно найден перекос, который я же и внёс при переделке прокрутки: область
прокрутки шире шапки на место под полосу, а полоса висит СНАРУЖИ справа.
Центрировали одну шапку - и видимый блок «список + полоса» съезжал вправо
ровно на её ширину. Шапка сдвинута влево на половину, блок встал по центру.
Проверено арифметикой, а не на глаз: футер и шапка считаются от одного центра
окна, отступы 12 и -12 симметричны.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com - Рарники BfA разведены по материкам: Кул-Тирас и Зандалар
Все 18 записей носили общий источник «Кул-Тирас/Зандалар», и по списку нельзя
было понять, куда лететь: зона называлась только в заметке под вещью.
Теперь Кул-Тирас (14) и Зандалар (4) - отдельные источники, и фильтр по ним
даёт готовый маршрут на один вылет. Зона осталась в заметке.
Заодно починена группировка: при фильтре по рарникам сортировка шла по mapID,
а у рарников он не проставлен - группировка молча не работала, и материки
чередовались по слотам. Сортируем по источнику, mapID остался тонкой доводкой.
Метки на карте не задеты: у рарников они ключуются по item:<id>, не по строке
источника.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com - Недоказанное владение больше не закрашивает кружок
Игрок снимал отметку убийства - и кружок возвращался серым, будто ничего
не снялось. На деле это была другая отметка: два разных смысла делили один
значок и различались лишь оттенком.
Теперь кружок закрашен, только когда что-то известно ТОЧНО: вещь сверена
или рарник отмечен убитым. «Счётчик насчитал копию, а прочитать нечего» -
это не знание, и значка оно больше не занимает. Число никуда не делось,
оно в подсказке у пустого кружка: иначе игрок пошёл бы фармить вещь,
которая лежит у него в банке.
Приглушение строки переведено на то же правило - иначе строка выглядела бы
закрытой при пустом кружке.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com - Щелчок по галочке глох у вещей, которые лишь числятся
Запрет «вещь на руках - отметка не наша» срабатывал и тогда, когда владение
недоказано: счётчик насчитал копию, прочитать нечего. Игрок при этом не мог
ни поставить свою отметку, ни снять - строка была замороженной без причины.
Теперь запрет только при СВЕРЕННОМ владении, как и цвет кружка.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com - Недоказанное владение больше не перебивает отметку убийства
Рарника убили, лут не выпал - а кружок оставался серым «сверить не удалось».
Счётчик игры насчитывал копию, прочитать её было нечем (банк закрыт либо копия
у другого персонажа), и эта неопределённость забивала то, что мы знаем точно.
Новый порядок: проверенное владение бьёт всё (вещь в руках - факт), убийство
бьёт НЕпроверенное владение, серое остаётся только когда рарник не отмечен.
Подсказка переставлена тем же порядком - иначе она объясняла не тот цвет,
который человек видит, - и в красной ветке честно говорит, что копия
где-то числится, но недоступна.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com - Искали копию вещи в банке по мёртвым номерам контейнеров
«Вещь есть, но сверить не удалось» висела вечно и не менялась: счётчик копию
видел, а поиск ссылки шёл по -1 и 6..11 - номерам старого банка. В нынешнем
ретейле банк персонажа стал вкладками CharacterBankTab_1..6, и в прежних
номерах не лежит ничего. Подсказка при этом писала «ни в банке», хотя в банк
никто и не заглядывал.
Номера теперь берутся из Enum.BagIndex, а не пишутся числами, плюс добавлены
вкладки общего банка ратной кампании - их счётчик тоже видит. Старая ветка
оставлена для клиентов до перехода на вкладки.
Найдено не по памяти: определения сверены с Syndicator (движок Baganator),
который живёт под текущий патч.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com - Вернуть терминологию в .toc: твинки -> триалы
Коммит 0b3f907 поменял Notes на «trial accounts», а 4319d5b про README через
час молча откатил обратно. Регрессия уехала бы в релиз: Notes видно в списке
аддонов у игрока и читает CurseForge.
Найдено при подготовке 1.0.1 сверкой .toc с историей файла.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com - Project ID CurseForge в .toc - последнее звено автосборки
По этой строке упаковщик понимает, в какой проект заливать. Без неё сборка
шла целиком, но заливка молча пропускалась - проверено прогоном на одноразовой
метке v0.0.0-pipeline-test.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com - Автосборка релиза по метке
Поставил тег vX.Y.Z - архив собрался и уехал на CurseForge сам, заодно
появился релиз на GitHub. Архив 1.0.0 собирался руками, и это ровно то место,
где легко ошибиться: забыть поднять версию или собрать zip без папки внутри.
Берём стандартный BigWigsMods/packager, а не свой скрипт: он уже знает
и требование WoW к папке внутри архива, и капризы CurseForge API с числовыми
идентификаторами версий игры.
Версию в .toc подставляет workflow, а не keyword @project-version@, как принято.
Причина местная: папка аддона в игре И ЕСТЬ рабочая копия репозитория, и
подстановочная строка висела бы в списке аддонов вместо номера версии.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com - Отметка у рарника «раз на персонажа» не снимается щелчком
Прошлая правка запирала только отметку, поставленную самим аддоном, - и
не сработала: галочки, проставленные до неё, лежали прежним значением и
снимались по-старому. Запрос был проще, чем я его прочитал: у рарника
«раз на персонажа» отметка не снимается, и неважно, кто её поставил.
Теперь так. У ежедневного снимается по-прежнему - она и сама уйдёт на дневном
сбросе. Ctrl+щелчок снимает любую: без лазейки один промах по галочке выбивал
бы строку из списка навсегда. Про Ctrl написано в самой подсказке.
Различие "auto"/true больше ни на что не влияет и убрано вместе с надстройкой
вокруг него.
Заодно диагностика к серой отметке «вещь есть, но сверить не удалось»:
подсказка теперь называет число, которое вернул счётчик игры. По нему и видно,
считает ли он копию, которой у персонажа нет.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com - Имена рарников сравниваем без апострофов и дефисов
Темноуст Джо'ла убит, а Скипетр темноуста не отметился: в игре моб с апострофом,
в заметке базы без него. Второй раз подряд имя разошлось не смыслом, а знаком -
до этого был регистр.
Поэтому чиним не запись, а сравнение: LowerRU стала NormalizeName и, кроме
регистра, выбрасывает апострофы и дефисы. В именах WoW это украшение, а не смысл,
и заметка гайда повторять их не обязана.
Типографский апостроф убирается целой последовательностью E2 80 99, а не набором
байтов: 80 и 99 встречаются хвостами в других буквах (у «р» это D1 80), и выброс
их поодиночке рвал бы кириллицу.
Заметку у Скипетра всё равно поправил на «Темноуст Джо'ла» - её видно в строке,
и пусть она называет моба так же, как игра.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com - Карту открываем через C_Map, а не через глобальную OpenWorldMap
Тестер поймал ADDON_ACTION_BLOCKED с нашим именем в цепочке, где нашего кода
нет вовсе: поставщик меток бонусных заданий встроенной карты упирался
в защищённую Button:SetPassThroughButtons.
Причина - глобальная OpenWorldMap живёт в Lua (Blizzard_WorldMap.lua), и наш
вызов пачкает WorldMapFrame. После этого любая защищённая функция в его
обработчиках блокируется, а виноватым игра называет того, кто испачкал.
C_Map.OpenWorldMap открывает карту из защищённого слоя. Глобальная оставлена
запасным путём на случай, если C_API в клиенте не окажется.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com - Свою отметку убитого рарника снять нельзя, если лут раз на персонажа
Аддон увидел смерть и поставил галочку - а её можно было снять щелчком, и список
снова обещал вещь, которой уже не будет.
Отметка аддона теперь пишется значением "auto", а не true: строка отличает её от
поставленной игроком. Снять нельзя только автоматическую и только у рарника,
который отдаёт лут раз на персонажа - у ежедневного отметка и так уйдёт на
сбросе, а ручную игрок вправе снять, промахнуться по галочке он мог.
Значение остаётся истинным, поэтому все прежние проверкиif done[id]целы.
Ручная отметка поднимается до "auto", когда смерть увидели сами - заодно так
чинятся галочки, поставленные до этой правки.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com - Убитый рарник не отмечался из-за регистра в имени
В игре моб зовётся «Сквиргл-Из-Глубин», в заметке базы — «Сквиргл-из-Глубин».
Сравнение было прямым и точным, поэтому имя не находилось и отметка не ставилась.
Место сравнения одно на весь аддон, поэтому чиним там: обе стороны опускаем
в нижний регистр.
string.lower для этого не годится — кириллица в UTF-8 двухбайтная, а он смотрит
на байты выше 127 по локали и в Windows-1251 порвал бы строку пополам. Свой
LowerRU переводит латиницу по A-Z и кириллицу по таблице (А-Я плюс Ё).
Заметки опускаются один раз при сборке списка рарников, а не на каждую смерть.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com - Полосу прокрутки легче поймать мышью
Ползунок тонкий, и попадать в него надо было ровно. Ширина полосы прежняя -
вид тонкий и не спорит со списком, - расширен только хитбокс: по 6 пикселей
влево и вправо у дорожки и у самого ползунка. Влево ровно на зазор до списка,
дальше строки перехватят мышь.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com - Плавная прокрутка: список переведён на WowScrollBox, как в Cap20
FauxScrollFrameTemplate не давал плавности принципиально: FauxScrollFrame_Update
ставит полосе шаг в высоту строки, и полоса округляет к нему любое значение -
дробный сдвиг отбрасывался, список прыгал рядами.
Теперь строки лежат одной длинной стопкой в content, а scrollBox двигает её
целиком и по пикселям. Строки создаются по мере надобности (GetRow) и
переиспользуются, окно обрезки и подмена данных при сдвиге больше не нужны.
Заодно: своя раскраска полосы удалена (MinimalScrollBar уже такой), нижний
скруглённый угол списка отдаёт последняя строка через SetLastInList - какая
она, теперь зависит от фильтра, а не от NUM_VISIBLE_ROWS.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com - Аксессуары по классам, красная отметка у безнадёжных рарников, починка полосы прокрутки
Данные: 8 записей исправлено по двум независимым сканам (гнёзда, искусность вместо универсальности), аксессуары ограничены по классам - танковские, на силу и на ловкость больше не показываются тем, кто их не носит.
Полоса прокрутки: убран thumb:SetSize - высоту ползунка игра считает сама, по доле видимого списка, и от неё же считает ход. С прибитой высотой полоса то прыгала, то стояла. Ширина 8 -> 12, это область захвата мышью.
Плавная прокрутка: значение полосы разведено на номер строки и сдвиг в пикселях, добавлено окно обрезки, шаг полосы сброшен в пиксель.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com - README: в таблице отметок названо само действие - сравнение
Уточнение от тестера: непонятно было не то, что речь о вещах, а то, что идёт СРАВНЕНИЕ. Прошлая правка добавила слово «вещь», но глагола не было, и таблица читалась как список статусов.
Колонка переименована в «Результат сравнения», в подводке назван весь ход: находит твою копию, сверяет характеристики и гнёзда, показывает итог. В строках стоит «твоя вещь» - видно, что сравниваются две.
Английский не тронут: тестер сказал, там читается нормально.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com - README: таблица отметок переписана понятнее
По замечанию тестера: из русской таблицы не было видно, что речь о предметах, пока не начнёшь вчитываться. На английском читалось нормально - там в каждой строке стоит «you own it», предмет назван.
В русском было «ещё не был» и «вещь есть» без уточнения: со стороны похоже на статусы посещения подземелий. Теперь слово «вещь» в каждой строке, колонка названа «Кружок у вещи».
Co-Authored-By: Claude Opus 5 noreply@anthropic.com - README: убрано перечисление дополнений
Тестер заметил Пандарию - её в базе нет вообще, она была только у двух шей из Залов Алого ордена, удалённых вместе с остальными.
Перечисление убрано целиком, а не поправлено: дополнений в базе восемь, и любой список устареет при следующей правке данных.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com - README: убрано утверждение, противоречащее авторству базы
Было «собрать этот список по сайтам не выходит» - но список собран именно по сайту, и это сайт автора гайда, которому двумя абзацами ниже отдаётся авторство.
Граница проведена по факту: гайд отвечает, КАКИЕ вещи брать, аддон - какие у них цифры на двадцатке. Второе с сайтов действительно не берётся, базы предметов не воспроизводят пересчёт.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com - Терминология: твинки -> триалы в описаниях
В .toc, README и описании для CurseForge. Имя аддона Trial Gear Finder, и слово должно совпадать с ним; «твинк» — жаргон, «триальный аккаунт» понятен без пояснений.
SavedVariables TwinkGearFinderDB не тронут: на нём держится перенос отметок со старого имени аддона.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com
This mod has no additional files