Труп «Жертвы» открывается сам, как ящик: без мешка

Обыск больше не превращает труп в мешок. Труп получает сумку со списком добычи zPackVictim
и открывается игровым путём (LockRequestLocal -> LootBagOpened -> окно добычи с игровым
таймером обыска). Запрет открывать мёртвых у EntityAlive снят префиксами только для таких
трупов. Открытый и не опустошённый труп лежит час, опустошённый убирается сразу.
После загрузки труп узнаётся по сохранённой сумке (баффы зомби в сейв не пишутся).
LockRequestLocal вызывается из TEPersistence (перегрузка с ReadOnlySpan не компилируется
в основном проекте). Класс EntityLootContainerVictim оставлен ради старых сейвов.
Описание ножа исправлено на всех языках, README - текущее описание.

Проверено в игре на 3.3: открытие, таймер, уборка опустошённых, восстановление после загрузки.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
AlexCube
2026-09-26 19:33:52 +03:00
co-authored by Claude Opus 5.5
parent 1c2e3f2cdf
commit e25544521d
10 changed files with 239 additions and 104 deletions
+19
View File
@@ -0,0 +1,19 @@
namespace NecromancerTome
{
/// <summary>
/// Та же причина, что у PyramidWardWriteHelper: среди перегрузок LockManager.LockRequestLocal
/// есть вариант с ReadOnlySpan&lt;ILockTarget&gt;, и основной проект (netstandard2.1) не может
/// разобрать набор перегрузок целиком - CS7069 «ReadOnlySpan&lt;&gt; требует определения в
/// mscorlib». Отсюда вызов собирается.
///
/// Зовётся из HarmonySrc/CorpseLootPatch.cs: открытие трупа «Жертвы» тем же запросом, которым
/// игра открывает мешок (EntityItem.OnEntityActivated, команда "search").
/// </summary>
public static class LockRequestHelper
{
public static void RequestLocal(ILockTarget _target)
{
LockManager.Instance.LockRequestLocal(_target, 0);
}
}
}