You are viewing a potentially older version of this package. View all versions.
SoulEmper0r-SharedRecipeFinderReborn-0.1.0 icon

SharedRecipeFinderReborn

On container open, shows which unknown materials and foods a shared chest contains. Successor of SharedRecipeFinder. Author: SoulEmper0r

Date uploaded 2 weeks ago
Version 0.1.0
Download link SoulEmper0r-SharedRecipeFinderReborn-0.1.0.zip
Downloads 17
Dependency string SoulEmper0r-SharedRecipeFinderReborn-0.1.0

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2202 icon
denikson-BepInExPack_Valheim

BepInEx pack for Valheim. Preconfigured and includes unstripped Unity DLLs.

Preferred version: 5.4.2202

README

SharedRecipeFinderReborn

Замена легаси-мода SharedRecipeFinder (SoulEmper0r, 28.03.2024) под актуальную Valheim.

Что делает

При открытии сундука/контейнера показывает через MessageHud материалы и еду, которых игрок ещё ни разу не получал (Player.IsKnownMaterial == false):

  • на каждый неизвестный предмет — unlock-уведомление с иконкой и названием ($msg_newitem);
  • одно итоговое сообщение TopLeft, если неизвестные кандидаты нашлись;
  • при Debug.Logging=true — строка в BepInEx-лог: имя контейнера и число неизвестных.

Работает на клиенте, ничего не разблокирует, серверу ничего не шлёт. Повторяющиеся стаки схлопываются в одно уведомление (иконка берётся у первого стака).

Почему замена, а не «починить DLL»

Старой DLL 6 КБ, исходников нет; декомпилят показал вызов старой сигнатуры Character.Message(MessageType, string, int, Sprite) — в установленной игре она всё ещё существует (проверено декомпиляцией Player), но бинарник собран против другого API-среза, поэтому продолжать с него нельзя. Логика крошечная — переписана начисто.

Отличия от оригинала: работает на открытии контейнера (а не инвентаря), добавлены названия предметов, дедупликация, конфиг General.Enabled и Debug.Logging, BepInIncompatibility против старого GUID vnoisy.sharedrecipefinder.plugin.

Сборка

dotnet build E:\Storage\Personal\Pet-Projects\SharedRecipeFinderReborn\SharedRecipeFinderReborn.csproj -c Release
# DLL: bin\Release\SharedRecipeFinderReborn.dll

Тесты (вне игры; Harmony-тест вне игры помечается [skip] — десктопный рантайм не может читать тела Unity-методов, то же ограничение у TerraHoe.WireTest):

dotnet build E:\Storage\Personal\Pet-Projects\SharedRecipeFinderReborn\tests\SharedRecipeFinderReborn.Tests\SharedRecipeFinderReborn.Tests.csproj -c Release
E:\Storage\Personal\Pet-Projects\SharedRecipeFinderReborn\tests\SharedRecipeFinderReborn.Tests\bin\Release\net462\SharedRecipeFinderReborn.Tests.exe

Установка

Скопировать DLL в профиль r2modman: profiles\2.0\BepInEx\plugins\SoulEmper0r-SharedRecipeFinderReborn\ (или импортировать как локальный мод в r2modman).

Известные ограничения

  • Внутриигровое поведение (появление уведомлений при открытии сундука) автоматическими тестами не проверяется — вне игры Unity-типы не загружаются. Проверять в игре.
  • Дедупликация в пределах одного открытия сундука; между открытиями напоминание повторяется, пока предмет не получен — так задумано.
  • Патчится InventoryGui.Show(Container, int); если IronGate сменит сигнатуру, тест patch target resolves on installed game это поймает.

Дисклеймер

На серверах с усиленным анти-читом/кастомными правилами использование клиентских модов — на свой страх и риск; мод только читает инвентарь контейнера и пишет в HUD.

CHANGELOG

Changelog

1.0.1

  • Открытие сундука теперь изучает его предметы и разблокирует доступные рецепты, а не просто показывает уведомления.
  • Изучаются все типы предметов. Содержимое сундука остаётся на месте.
  • В мультиплеере знания получает только игрок, открывший сундук.

1.0.0

  • Мод обновлён под актуальную версию Valheim.
  • Оригинальный мод — SharedRecipeFinder (VAG).