From 98ddcd7bcedc5135f196fc48178a6c8d65e1064b Mon Sep 17 00:00:00 2001 From: AlexCube Date: Fri, 18 Sep 2026 23:23:15 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D1=8B=D1=87=D0=B0=20=C2=AB?= =?UTF-8?q?=D0=96=D0=B5=D1=80=D1=82=D0=B2=D1=8B=C2=BB=20=D0=BF=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=B5=D1=85=D0=B0=D0=BB=D0=B0=20=D0=B2=20=D1=81=D0=B0?= =?UTF-8?q?=D0=BC=20=D1=82=D1=80=D1=83=D0=BF:=20=D0=BE=D0=BD=20=D0=BA?= =?UTF-8?q?=D1=80=D0=B0=D1=81=D0=B8=D1=82=D1=81=D1=8F,=20=D0=BB=D0=B5?= =?UTF-8?q?=D0=B6=D0=B8=D1=82=20=D1=87=D0=B0=D1=81=20=D0=B8=20=D0=BE=D0=B1?= =?UTF-8?q?=D1=8B=D1=81=D0=BA=D0=B8=D0=B2=D0=B0=D0=B5=D1=82=D1=81=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Указание: «зомби после упокоения оставляет свой труп. Можем ли мы подменять этот труп точно таким же, но с другой текстурой и с функцией мешка жертвы?» ПОДМЕНЯТЬ НЕ ПРИШЛОСЬ НИЧЕГО. Труп - не отдельная модель, а та же скелетная модель зомби в позе смерти, так что «такой же, но другой текстуры» делается перекраской уже лежащего трупа. Ни нового префаба, ни новой сущности. Три части, каждая на своём ванильном механизме: НЕ ИСЧЕЗАЕТ. EntityAlive.timeStayAfterDeath - обычное публичное поле в тиках, у зомби 30 секунд, у ванильного мешка 3600. Пишем второе. ОБЫСКИВАЕТСЯ. У сущностей своя система команд, отдельная от блочной: InitLocalActivationCommands / AllowActivationCommand / OnEntityActivated. Объявляем ту же команду "search", что и ванильный мешок (EntityItem), поэтому подпись достаётся готовой и локализованной. Список команд кешируется при первом обращении - пока зомби жив, - поэтому на смерти он обнуляется. ВНУТРИ ЛУТ. Обход сознательный: хранилище живёт внутри EntityLootContainer вместе со своим сейвом и сетевой синхронизацией, и приделывать это трупу значит трогать сейвы. Поэтому обыск ПРЕВРАЩАЕТ труп в мешок «Жертва». ПЕРЕКРАСКА ЧЕРЕЗ ТЕКСТУРУ, А НЕ ЧЕРЕЗ _Color. Первая версия не работала вовсе: у шейдеров Game/Character и Game/Animal/Fur свойства цвета НЕТ (видно в пробе, которую печатает GhostTraderPatch: "tint property: "). Красится сама текстура - прогоном через RenderTexture, как обесцвечиваются торговцы, только вместо сведения к яркости умножение на цвет. Результат кешируется по исходной текстуре. Если модель на кадре смерти не собрана, труп встаёт в очередь и докрашивается односекундным тиком. ПОДСКАЗКА ПРИ НАВЕДЕНИИ - отдельный механизм, и сначала я настроил не тот. Иконка EntityActivationCommand рисуется в РАДИАЛЬНОМ меню, то есть на зажатии. А то, что видно при простом наведении, приходит из Entity.GetActivationText(), и у EntityAlive он для существа возвращает пустую строку. Теперь возвращает то же, что ванильный лутаемый объект: строку lootTooltipNew со значком клавиши из разметки [action:...]. Имя берётся у зомби, так что читается «обыскать Арлин». ОБЫСК НЕ МГНОВЕННЫЙ: три секунды с круговым индикатором (XUiC_Timer, тот же, что при снятии верстака). Поле activateTime у команды не подошло - по нему игра дёргает игровое событие из entity_class, а не наш код. Обычный мешок это не отменяет: бросок вероятности остался как был, и теперь он печатается в лог целиком (шанс против броска) - чтобы «не повезло» отличалось от «сломано» без гадания. У ванильного зомби шанс 4%, то есть ноль мешков на два десятка убийств - исход с вероятностью около 40%. Co-Authored-By: Claude Opus 5 --- HarmonySrc/CorpseLootPatch.cs | 399 ++++++++++++++++++++++++++++++++++ HarmonySrc/ModEntry.cs | 4 +- HarmonySrc/ParticlePatch.cs | 2 +- HarmonySrc/PetFollowPatch.cs | 12 +- HarmonySrc/VictimPatch.cs | 182 +++++++++++----- NecromancerHarmony.dll | Bin 111104 -> 115712 bytes NecromancerHarmony.pdb | Bin 34336 -> 35776 bytes 7 files changed, 535 insertions(+), 64 deletions(-) create mode 100644 HarmonySrc/CorpseLootPatch.cs diff --git a/HarmonySrc/CorpseLootPatch.cs b/HarmonySrc/CorpseLootPatch.cs new file mode 100644 index 0000000..9780567 --- /dev/null +++ b/HarmonySrc/CorpseLootPatch.cs @@ -0,0 +1,399 @@ +using System; +using System.Collections.Generic; +using HarmonyLib; +using UnityEngine; + +namespace NecromancerTome +{ + /// + /// ТРУП ПОМЕЧЕННОГО ЗОМБИ САМ СТАНОВИТСЯ ДОБЫЧЕЙ — указание 2026-09-18: «зомби после упокоения + /// оставляет свой труп. Можем ли мы подменять этот труп в момент смерти точно таким же, но с + /// другой текстурой и с функцией мешка жертвы (не исчезает, можно забрать лут)?» + /// + /// ПОДМЕНЯТЬ НЕ ПРИШЛОСЬ НИЧЕГО, и это главное, что стоит знать. Труп — не отдельная модель, а + /// та же скелетная модель зомби в позе смерти, поэтому «такой же, но с другой текстурой» — это + /// перекраска материалов уже лежащего трупа, тем же приёмом, что призрачные питомцы и глаза + /// собаки. Ни нового префаба, ни новой сущности. + /// + /// ТРИ ЧАСТИ, И КАЖДАЯ ДЕРЖИТСЯ НА СВОЁМ ВАНИЛЬНОМ МЕХАНИЗМЕ: + /// + /// 1. НЕ ИСЧЕЗАЕТ. `EntityAlive.timeStayAfterDeath` — обычное публичное поле экземпляра, + /// которое при спавне заполняется из entity_class (`TimeStayAfterDeath * 20`). У зомби + /// там 30 секунд, у ванильного мешка с лутом — 3600. Достаточно записать другое число. + /// + /// 2. ЕГО МОЖНО ОБЫСКАТЬ. У сущностей есть своя система команд взаимодействия, отдельная от + /// блочной: `Entity.GetActivationCommands()` собирает список из виртуального + /// `InitLocalActivationCommands`, `AllowActivationCommand` решает, доступна ли команда + /// сейчас, `OnEntityActivated` её исполняет. Мешок с лутом объявляет свою так + /// (EntityItem, от которого он наследуется): + /// + /// _addCallback(new EntityActivationCommand("search", "search")); + /// + /// Мы объявляем ровно такую же — с тем же идентификатором и той же иконкой. Значит и + /// подпись на экране, и значок берутся готовые, локализованные на все языки игры, и + /// игроку это выглядит ровно как обыск мешка, потому что это и есть он. + /// + /// 3. ВНУТРИ ЛУТ. А вот здесь сознательный обход. Само хранилище живёт внутри + /// `EntityLootContainer`: его `bag`, его `Read`/`Write` для сейва, его сетевая + /// синхронизация. Приделать всё это трупу зомби — работа масштаба Пространственного + /// хранилища, с выходом на сейвы, то есть на риск номер один этого проекта. + /// + /// Поэтому обыск НЕ открывает труп, а ПРЕВРАЩАЕТ его в мешок «Жертва»: мешок спавнится + /// на месте трупа, труп убирается. Снаружи читается как «обыскал и нашёл», внутри — + /// обычный ванильный контейнер, который сам себя сохраняет, синхронизирует и открывает. + /// Ни одной новой сущности с состоянием. + /// + /// ОБЫЧНЫЙ МЕШОК ЭТО НЕ ОТМЕНЯЕТ. Бросок вероятности в VictimPatch.cs остаётся как был: выпал + /// — обычный мешок лежит рядом, не выпал — только труп. «Жертва» переехала из «падает сразу» в + /// «лежит внутри трупа», и больше ничего не изменилось. + /// + /// ПОЧЕМУ СПИСОК КОМАНД СБРАСЫВАЕТСЯ. `GetActivationCommands` кеширует результат в + /// `activationCommands` при первом обращении — а первое обращение случается, пока зомби ещё + /// жив и командой не обладает. Обнуление поля на смерти заставляет пересобрать список; тем же + /// приёмом пользуется сама игра в CopyPropertiesFromEntityClass. + /// + public static class CorpseLoot + { + /// Сколько секунд лежит помеченный труп. У ванильного мешка с лутом 3600, и + /// причин быть скромнее нет: труп и есть мешок. + public const float CorpseSecondsAfterDeath = 3600f; + + /// Во что красится труп. Тёмно-багровый: издалека видно, что этот не как все, и + /// при этом не выглядит подсветкой из другой игры. + public static readonly Color CorpseTint = new Color(0.55f, 0.12f, 0.16f); + + /// Идентификатор берётся у ванильного мешка (EntityItem), чтобы подпись досталась + /// готовой и локализованной на все языки игры. ИКОНКА - "hand", а не "search", по указанию + /// 2026-09-18 («при наведении на зомби пиктограмма руки»); имена иконок к идентификатору + /// команды не привязаны, у ванильного "take" стоит ровно эта. + public const string SearchCommand = "search"; + public const string SearchIcon = "hand"; + + /// Секунды удержания. Круговой индикатор рисует сама игра - XUiC_Timer, тот же, + /// что крутится при снятии верстака. + public const float SearchSeconds = 3f; + + /// Трупы, которые ещё не обысканы. Ключ — entityId. Чистится сама: запись + /// снимается при обыске, а остальные уходят вместе с миром. + public static readonly HashSet SearchableCorpses = new HashSet(); + + /// Трупы, которые ещё не удалось перекрасить: модель бывает не собрана на том + /// кадре, когда сущность умирает. Добивается односекундным тиком PetFollowPatch. + public static readonly HashSet PendingTint = new HashSet(); + + /// Повторная попытка перекраски. Зовётся из общего тика раз в секунду. + public static void RetryPendingTints(World _world) + { + if (PendingTint.Count == 0 || _world == null) + { + return; + } + List done = new List(); + foreach (int id in PendingTint) + { + Entity corpse = _world.GetEntity(id); + if (corpse == null || TintCorpse(corpse)) + { + done.Add(id); + } + } + foreach (int id in done) + { + PendingTint.Remove(id); + } + } + + public static bool IsSearchable(Entity _entity) + { + return _entity != null && SearchableCorpses.Contains(_entity.entityId); + } + + /// Зовётся из VictimPatch, когда помеченный зомби умер. + public static void MarkCorpse(EntityAlive _victim) + { + if (_victim == null) + { + return; + } + SearchableCorpses.Add(_victim.entityId); + + // timeStayAfterDeath хранится в ТИКАХ: игра заполняет его как TimeStayAfterDeath * 20 + // (EntityAlive.CopyPropertiesFromEntityClass), то есть двадцать тиков на секунду. + _victim.timeStayAfterDeath = (int)(CorpseSecondsAfterDeath * 20f); + + // Список команд уже собран и закеширован, пока зомби был жив и обыскивать его было + // нельзя. Обнуляем, чтобы собрался заново - уже с "search". + _victim.activationCommands = null; + + if (!TintCorpse(_victim)) + { + // Модель на этом кадре может быть ещё не готова - ровно тем же болели призрачные + // торговцы и разведение коллайдеров у питомцев. Кладём в очередь, тик добьёт. + PendingTint.Add(_victim.entityId); + } + Debug.Log("[NecromancerTome] CorpseLoot: труп " + _victim.entityId + + " помечен как обыскиваемый, лежит " + CorpseSecondsAfterDeath + " с"); + } + + /// Перекраска трупа. ПЕРЕПИСАНА 2026-09-18, первая версия не работала вообще: + /// пользователь сообщил «труп не перекрасился», и причина нашлась в нашем же логе. + /// + /// Первая версия ставила `_Color` на материалах - ровно как сделано у глаз собаки. Но у + /// собаки глаз сидит на шейдере `Standard`, а тело зомби и шкура зверей - на собственных + /// шейдерах игры, и проба, которую печатает GhostTraderPatch, по ним говорит прямо: + /// + /// shader 'Game/Character' ... tint property: <none> + /// shader 'Game/Animal/Fur' ... tint property: <none> + /// + /// Свойства цвета у них НЕТ ВООБЩЕ. `HasProperty("_Color")` возвращал false, цикл не делал + /// ни одной итерации, и метод честно печатал «материалов 0» - которое никто не прочитал. + /// + /// Поэтому красится САМА ТЕКСТУРА, тем же приёмом, которым мод обесцвечивает торговцев: + /// прогон через RenderTexture (игровые текстуры сжаты и с isReadable=false, напрямую + /// GetPixels по ним падает), затем попиксельное умножение на цвет. Разница с + /// обесцвечиванием ровно в одной строке арифметики, всё остальное - тот же путь, уже + /// проверенный на шести торговцах. + /// + /// Результат кешируется по исходной текстуре: они 2048x2048 и больше, а помеченных трупов + /// за игру будет много - пересчитывать на каждый незачем. + public static readonly Dictionary TintedTextures = new Dictionary(); + + public static bool TintCorpse(Entity _corpse) + { + Renderer[] renderers = _corpse.GetComponentsInChildren(true); + if (renderers == null || renderers.Length == 0) + { + return false; + } + int tinted = 0; + foreach (Renderer renderer in renderers) + { + if (renderer == null || renderer is ParticleSystemRenderer) + { + continue; + } + Material[] shared = renderer.sharedMaterials; + if (shared == null || shared.Length == 0) + { + continue; + } + Material[] instances = renderer.materials; + for (int i = 0; i < instances.Length && i < shared.Length; i++) + { + Material material = instances[i]; + if (material == null) + { + continue; + } + string albedo = GhostTraderPatch.FindAlbedoProperty(material); + if (albedo == null) + { + continue; + } + Texture2D repainted = Tint(material.GetTexture(albedo)); + if (repainted == null) + { + continue; + } + material.SetTexture(albedo, repainted); + tinted++; + } + } + Debug.Log("[NecromancerTome] CorpseLoot: труп " + _corpse.entityId + " перекрашен, материалов " + tinted); + return tinted > 0; + } + + /// Копия GhostTraderPatch.Desaturate с одной изменённой строкой: вместо сведения + /// каналов к яркости - умножение на CorpseTint. Прогон через RenderTexture обязателен и там + /// и здесь по одной причине: игровые текстуры сжаты и не читаются процессором напрямую. + public static Texture2D Tint(Texture _source) + { + if (_source == null) + { + return null; + } + if (TintedTextures.TryGetValue(_source, out Texture2D cached)) + { + return cached; + } + + Texture2D painted = null; + RenderTexture rt = null; + RenderTexture previous = RenderTexture.active; + try + { + rt = RenderTexture.GetTemporary(_source.width, _source.height, 0, + RenderTextureFormat.ARGB32, RenderTextureReadWrite.sRGB); + Graphics.Blit(_source, rt); + RenderTexture.active = rt; + + painted = new Texture2D(_source.width, _source.height, TextureFormat.RGBA32, false); + painted.ReadPixels(new Rect(0f, 0f, _source.width, _source.height), 0, 0); + + Color32[] pixels = painted.GetPixels32(); + for (int i = 0; i < pixels.Length; i++) + { + Color32 p = pixels[i]; + p.r = (byte)(p.r * CorpseTint.r); + p.g = (byte)(p.g * CorpseTint.g); + p.b = (byte)(p.b * CorpseTint.b); + pixels[i] = p; + } + painted.SetPixels32(pixels); + painted.Apply(false, false); + } + catch (Exception e) + { + Debug.LogError("[NecromancerTome] CorpseLoot: не удалось перекрасить текстуру '" + + _source.name + "': " + e.Message); + painted = null; + } + finally + { + RenderTexture.active = previous; + if (rt != null) + { + RenderTexture.ReleaseTemporary(rt); + } + } + + TintedTextures[_source] = painted; + return painted; + } + + /// Обыск: труп превращается в мешок «Жертва» на своём же месте. + public static void SearchCorpse(EntityAlive _corpse) + { + SearchableCorpses.Remove(_corpse.entityId); + Patch_EntityAlive_dropItemOnDeath_VictimBag.SpawnVictimBag(_corpse, false); + Debug.Log("[NecromancerTome] CorpseLoot: труп " + _corpse.entityId + " обыскан, заменён мешком"); + if (_corpse.world != null) + { + _corpse.world.RemoveEntity(_corpse.entityId, EnumRemoveEntityReason.Despawned); + } + } + } + + /// Добавляет команду «обыскать» в список. Постфикс, а не префикс: ванильные команды + /// сущности (у EntityAlive это «подобрать» для тех, у кого задан PickupItem) должны остаться. + [HarmonyPatch(typeof(EntityAlive), "InitLocalActivationCommands")] + public static class Patch_EntityAlive_InitLocalActivationCommands_Corpse + { + public static void Postfix(EntityAlive __instance, Action _addCallback) + { + if (!CorpseLoot.IsSearchable(__instance)) + { + return; + } + _addCallback(new EntityActivationCommand(CorpseLoot.SearchCommand, CorpseLoot.SearchIcon)); + } + } + + /// Разрешает команду только помеченному трупу. Без этого «обыскать» досталось бы + /// любому существу, у которого список команд пересобрался бы по любой причине. + [HarmonyPatch(typeof(EntityAlive), "AllowActivationCommand")] + public static class Patch_EntityAlive_AllowActivationCommand_Corpse + { + public static void Postfix(EntityAlive __instance, ReadOnlySpan _commandName, ref bool __result) + { + if (!MemoryExtensions.Equals(_commandName, CorpseLoot.SearchCommand.AsSpan(), StringComparison.Ordinal)) + { + return; + } + __result = CorpseLoot.IsSearchable(__instance); + } + } + + /// ПОДСКАЗКА ПРИ НАВЕДЕНИИ. Баг-репорт 2026-09-18: «при наведении пиктограмма руки так + /// и не появилась. А без неё интуитивно непонятно что тут можно лутать». + /// + /// Оказалось, я настроил не то место. Иконка у EntityActivationCommand рисуется в РАДИАЛЬНОМ + /// МЕНЮ (XUiC_Radial.SetCurrentEntityData -> CreateRadialEntry со спрайтом + /// $"ui_game_symbol_{icon}"), то есть только когда игрок ЗАЖМЁТ кнопку взаимодействия. А + /// подпись, которая появляется просто при наведении, берётся совсем из другого места - из + /// виртуального Entity.GetActivationText(), и у EntityAlive он для обычного существа + /// возвращает пустую строку. + /// + /// Здесь возвращается ровно то же, что у ванильного лутаемого объекта (EntityItem): + /// + /// string arg = playerInput.Activate.GetBindingXuiMarkupString() + /// + playerInput.PermanentActions.Activate.GetBindingXuiMarkupString(); + /// return string.Format(Localization.Get("lootTooltipNew"), arg, имя); + /// + /// `lootTooltipNew` - штатная строка лутаемых объектов, «{0} Search {1} (Untouched)» / + /// «{0}: обыскать {1} (нетронуто)», уже переведённая на все языки игры. Значок кнопки + /// подставляется разметкой [action:...] из первого аргумента, поэтому у игрока он будет ровно + /// такой же, как на любом мешке, и подпишется его собственной раскладкой. + /// + /// Имя берётся у самого зомби (LocalizedEntityName), так что подсказка читается как + /// «обыскать Арлин», а не «обыскать мешок». + [HarmonyPatch(typeof(EntityAlive), "GetActivationText")] + public static class Patch_EntityAlive_GetActivationText_Corpse + { + public static void Postfix(EntityAlive __instance, ref string __result) + { + if (!CorpseLoot.IsSearchable(__instance)) + { + return; + } + EntityPlayerLocal player = GameManager.Instance?.World?.GetPrimaryPlayer(); + if (player == null) + { + return; + } + PlayerActionsLocal input = player.playerInput; + string key = input.Activate.GetBindingXuiMarkupString() + + input.PermanentActions.Activate.GetBindingXuiMarkupString(); + __result = string.Format(Localization.Get("lootTooltipNew"), key, + Localization.Get(__instance.LocalizedEntityName)); + } + } + + /// Запускает обыск - НЕ мгновенно, а с трёхсекундным круговым индикатором (указание + /// 2026-09-18). Индикатор рисует сама игра: XUiC_Timer.OpenTimer, тот же механизм, что крутится + /// при снятии верстака, и знакомый игроку без объяснений. + /// + /// ПОЧЕМУ НЕ ЧЕРЕЗ activateTime У КОМАНДЫ. У EntityActivationCommand есть поле activateTime, и + /// Entity.ActivateEntityCommand действительно открывает по нему таймер - но по завершении он + /// дёргает ИГРОВОЕ СОБЫТИЕ из entity_class (`onActivateEvent`), а не наш код, и запускается + /// только если у команды заполнено eventName. Нам нужен свой обработчик в конце, поэтому таймер + /// открывается вручную, а не описанием команды. + /// + /// CloseOnHit=true: если по игроку ударили посреди обыска, полоса закрывается и труп остаётся + /// нетронутым. Обыскивать труп посреди боя не должно быть бесплатно. + [HarmonyPatch(typeof(EntityAlive), "OnEntityActivated")] + public static class Patch_EntityAlive_OnEntityActivated_Corpse + { + public static void Postfix(EntityAlive __instance, EntityActivationCommand _command, + EntityPlayerLocal _playerFocusing) + { + if (_command.commandId != CorpseLoot.SearchCommand || !CorpseLoot.IsSearchable(__instance)) + { + return; + } + if (_playerFocusing == null || _playerFocusing.PlayerUI == null) + { + CorpseLoot.SearchCorpse(__instance); + return; + } + + EntityAlive corpse = __instance; + TimerEventData timer = new TimerEventData + { + Data = corpse, + CloseOnHit = true, + }; + timer.FullTimeFinishEvent += delegate + { + // Повторная проверка на финише: за три секунды труп мог истлеть, а игрок - уйти. + if (CorpseLoot.IsSearchable(corpse)) + { + CorpseLoot.SearchCorpse(corpse); + } + }; + XUiC_Timer.OpenTimer(_playerFocusing.PlayerUI.xui, CorpseLoot.SearchSeconds, timer); + Debug.Log("[NecromancerTome] CorpseLoot: начат обыск трупа " + corpse.entityId + + ", " + CorpseLoot.SearchSeconds + " с"); + } + } +} diff --git a/HarmonySrc/ModEntry.cs b/HarmonySrc/ModEntry.cs index 088b7dc..357881f 100644 --- a/HarmonySrc/ModEntry.cs +++ b/HarmonySrc/ModEntry.cs @@ -41,7 +41,9 @@ namespace NecromancerTome // that method at all - rules "patch never applied" in or out without waiting on // another in-game death. VerifyPrefixAttached(typeof(EntityAlive), "dropItemOnDeath"); - VerifyPrefixAttached(typeof(Entity), "DropBagServer"); + // Патч на Entity.DropBagServer снят 2026-09-18 вместе с переделкой мешка «Жертвы»: + // он подменял собой ОБЫЧНЫЙ мешок, а тот теперь должен доставаться игроку как есть. + // Проверять нечего - см. VictimPatch.cs. // Добавлено 2026-09-17 вместе с правкой "подчинённые не дерутся между собой" // (CharmPatch.cs). Метод EAITarget.check в исходнике protected и назван со строчной diff --git a/HarmonySrc/ParticlePatch.cs b/HarmonySrc/ParticlePatch.cs index c043739..1becff9 100644 --- a/HarmonySrc/ParticlePatch.cs +++ b/HarmonySrc/ParticlePatch.cs @@ -90,7 +90,7 @@ namespace NecromancerTome return; } bool isPortalChannel = entity.Buffs.HasBuff(Patch_ItemActionEat_ExecuteAction_PortalStones.ChannelBuffName); - bool isVictim = entity.Buffs.HasBuff(Patch_Entity_DropBagServer_VictimBag.VictimBuffName); + bool isVictim = entity.Buffs.HasBuff(Patch_EntityAlive_dropItemOnDeath_VictimBag.VictimBuffName); bool isCharm = entity.Buffs.HasBuff(Patch_EntityBuffs_AddBuff_DeviatorCharm.CharmBuffName); if (!isPortalChannel && !isVictim && !isCharm) { diff --git a/HarmonySrc/PetFollowPatch.cs b/HarmonySrc/PetFollowPatch.cs index 68a65a3..c52116b 100644 --- a/HarmonySrc/PetFollowPatch.cs +++ b/HarmonySrc/PetFollowPatch.cs @@ -322,13 +322,19 @@ namespace NecromancerTome return; } timer = 0f; - if (TrackedPets.Count == 0) + World world = GameManager.Instance != null ? GameManager.Instance.World : null; + if (world == null) { return; } - World world = GameManager.Instance != null ? GameManager.Instance.World : null; - if (world == null) + // Трупы, которые не удалось перекрасить в момент смерти (модель бывает ещё не + // собрана) - добиваем здесь: тик всё равно уже идёт. См. CorpseLootPatch.cs. + // ВЫШЕ проверки на пустой список питомцев намеренно: трупы помечает Нож некроманта, + // и к тому, есть ли у игрока сейчас призванный питомец, они отношения не имеют. + CorpseLoot.RetryPendingTints(world); + + if (TrackedPets.Count == 0) { return; } diff --git a/HarmonySrc/VictimPatch.cs b/HarmonySrc/VictimPatch.cs index 1e0b3d1..540d14a 100644 --- a/HarmonySrc/VictimPatch.cs +++ b/HarmonySrc/VictimPatch.cs @@ -4,97 +4,161 @@ using UnityEngine; namespace NecromancerTome { /// - /// Necromancer's Knife (BACKLOG.md item 5, user request 2026-08-28): a zombie hit by the - /// knife carries buffNecroVictim (buffs.xml) until it dies. On death, it's guaranteed to drop - /// a green "Жертва" loot bag (EntityLootContainerVictim in entityclasses.xml) instead of - /// whatever the normal random loot roll would have given it. + /// Нож некроманта (BACKLOG.md, п.5): зомби, задетый ножом, носит buffNecroVictim (buffs.xml) до + /// самой смерти. На смерти он роняет мешок «Жертва» (EntityLootContainerVictim в + /// entityclasses.xml). /// - /// Two patch points, found the hard way (2026-08-28, "лута всё ещё нет" after confirming via - /// the CharmPatch.cs-style AddBuff log that the debuff itself WAS being applied fine): + /// ПОВЕДЕНИЕ ИСПРАВЛЕНО 2026-09-18, И ЭТО ВОЗВРАТ К ТОМУ, О ЧЁМ ДОГОВАРИВАЛИСЬ. Баг-репорт + /// пользователя: «мы договаривались, что он выпадает только если не должен был выпасть мешок с + /// лутом. Но похоже падает только мешок жертвы». /// - /// 1. Patch_EntityAlive_dropItemOnDeath_VictimBag - the actual gate. Confirmed by - /// decompiling EntityAlive.dropItemOnDeath(): it only calls DropBagServer() at all if - /// `lootDropProb > rand.RandomFloat` passes first - vanilla zombies have LootDropProb - /// around .04 (4%), so DropBagServer() simply never runs for ~96% of deaths. The first - /// version of this file only patched DropBagServer() itself, which was correct once - /// inside it but never got a chance to run for most kills - confirmed by the "AddBuff - /// Added" log firing repeatedly while the "zombie died" log from the DropBagServer patch - /// never fired even once for a real, logged kill. This Prefix on dropItemOnDeath() calls - /// DropBagServer() directly for a Victim-tagged zombie, bypassing the probability roll - /// entirely, then skips the rest of the original method (the only other thing it does - - /// dropping a non-AI entity's own inventory - never applies to a zombie anyway, hasAI is - /// always true for those). - /// 2. Patch_Entity_DropBagServer_VictimBag - decides WHICH bag. Confirmed by decompiling - /// Entity.DropBagServer(): it reads entityClass.lootDrops/LootDropPick(rand) - a STATIC - /// per-species value from the zombie's own entity_class (XML's LootDropEntityClass - /// property), not anything a live buff or CVar can influence declaratively (unlike the - /// knife's damage, which only needed a CVar the passive_effect system already reads - /// live) - this needed an actual Harmony patch, not an XML trick. + /// Так и было. Прежняя версия состояла из двух префиксов, и оба возвращали false: /// - /// Both are Prefixes returning false: they fully replace what they intercept rather than - /// running alongside it. + /// 1. на dropItemOnDeath - при дебафе звала DropBagServer() НАПРЯМУЮ, минуя ванильный + /// бросок вероятности, и обрывала оригинал; + /// 2. на DropBagServer - при дебафе спавнила «Жертву» ВМЕСТО обычного мешка. + /// + /// Вместе это означало: помеченный зомби роняет «Жертву» ВСЕГДА и обычный мешок НИКОГДА. То + /// есть нож не добавлял добычу, а подменял её - и в редких 4% случаев, когда игроку и так + /// причитался нормальный мешок, он его терял. + /// + /// СТАЛО (уточнено пользователем в тот же день - «а можно сделать так, чтобы в случае когда + /// положен лут, падало два мешка»): «Жертва» не заменяет обычный мешок и не ждёт его отсутствия, + /// а ДОБАВЛЯЕТСЯ. Ванильный бросок делается как есть (формула скопирована из + /// EntityAlive.dropItemOnDeath дословно, включая модификатор от оружия убийцы и множитель + /// LootContainer.LootBagChance), и дальше: + /// + /// бросок прошёл -> обычный мешок рядом И добыча в трупе; + /// бросок не прошёл -> только добыча в трупе. + /// + /// То есть помеченный ножом зомби никогда не оставляет игрока ни с чем, а в удачном случае + /// даёт вдвое больше обычного. Это осознанно щедро: метку ещё надо поставить ножом, которым + /// по зомби надо попасть. + /// + /// УТОЧНЕНО В ТОТ ЖЕ ДЕНЬ: «Жертва» больше не падает мешком в момент смерти - она остаётся + /// ВНУТРИ ТРУПА, который перекрашивается, перестаёт исчезать и получает команду «обыскать» + /// (CorpseLootPatch.cs). Мешок появляется только по обыску. Сам бросок и вся арифметика ниже + /// от этого не изменились: они по-прежнему решают судьбу ОБЫЧНОГО мешка. + /// + /// Второй префикс (на DropBagServer) УДАЛЁН ЦЕЛИКОМ - он теперь вреден: подменял бы и тот + /// обычный мешок, который мы как раз хотим оставить. Спавн «Жертвы» переехал сюда, в + /// SpawnVictimBag. + /// + /// ПОЧЕМУ ВООБЩЕ НУЖЕН ПРЕФИКС, А НЕ ПОСТФИКС. Узнать «выпал ли мешок» после оригинала нечем: + /// dropItemOnDeath ничего не возвращает и следов не оставляет. Поэтому бросок повторяется + /// здесь, а оригинал не запускается. Ветка оригинала, которая при этом теряется, - выброс + /// собственного инвентаря для сущностей БЕЗ ИИ (`if (!hasAI)`), и к зомби она не относится + /// никогда; на всякий случай она всё равно отдана оригиналу проверкой hasAI ниже. + /// + /// LootContainer.NoLoot УВАЖАЕТСЯ: если в настройках мира мешки выключены, «Жертва» тоже не + /// падает. Это мировая настройка игрока, а не место мода спорить с ней. /// [HarmonyPatch(typeof(EntityAlive), "dropItemOnDeath")] public static class Patch_EntityAlive_dropItemOnDeath_VictimBag - { - public static bool Prefix(EntityAlive __instance) - { - // Diagnostic-only, added 2026-08-28: unconditional, before any branching, to answer - // definitively whether Harmony is even entering this method at all - "лута всё ещё - // нет" after the first fix, but with zero sign of even the unconditional part of this - // Prefix ever running (not even a false-branch silently returning - literally no log - // line at all), which is otherwise unexplained since decompiling - // EntityAlive.OnEntityDeath() confirms it calls dropItemOnDeath() directly, - // unconditionally, right after the exact "Entity X killed by Y" line seen in the log. - Debug.Log("[NecromancerTome] VictimPatch: dropItemOnDeath Prefix entered for " + __instance.entityId + " (" + __instance.GetType().Name + "), hasVictimBuff=" + (__instance.Buffs != null && __instance.Buffs.HasBuff(Patch_Entity_DropBagServer_VictimBag.VictimBuffName))); - if (__instance.Buffs == null || !__instance.Buffs.HasBuff(Patch_Entity_DropBagServer_VictimBag.VictimBuffName)) - { - return true; - } - Debug.Log("[NecromancerTome] VictimPatch: " + __instance.entityId + " died carrying buffNecroVictim - forcing guaranteed bag, bypassing LootDropProb roll"); - __instance.DropBagServer(); - return false; - } - } - - [HarmonyPatch(typeof(Entity), "DropBagServer")] - public static class Patch_Entity_DropBagServer_VictimBag { public const string VictimBuffName = "buffNecroVictim"; public const string VictimContainerClassName = "EntityLootContainerVictim"; - public static bool Prefix(Entity __instance) + public static bool Prefix(EntityAlive __instance) { - if (!(__instance is EntityAlive alive) || alive.Buffs == null || !alive.Buffs.HasBuff(VictimBuffName)) + if (__instance.Buffs == null || !__instance.Buffs.HasBuff(VictimBuffName)) { return true; } - if (!SingletonMonoBehaviour.Instance.IsServer || __instance is EntityLootContainer) + if (!__instance.hasAI) + { + // Не наш случай: у оригинала для таких сущностей своя работа (выброс инвентаря), + // и дублировать её здесь незачем. Зомби сюда не попадают. + return true; + } + if (!SingletonMonoBehaviour.Instance.IsServer) { - // Same guard the original method opens with - not our place to override these cases. return true; } + // Ванильный расчёт, скопированный из EntityAlive.dropItemOnDeath дословно. + float prob = __instance.lootDropProb; + if ((bool)__instance.entityThatKilledMe) + { + prob = EffectManager.GetValue(PassiveEffects.LootDropProb, + __instance.entityThatKilledMe.inventory.holdingItemItemValue, prob, + __instance.entityThatKilledMe); + } + prob *= LootContainer.LootBagChance; + + if (LootContainer.NoLoot) + { + Debug.Log("[NecromancerTome] VictimPatch: " + __instance.entityId + + " - мешки выключены настройками мира, «Жертва» не падает"); + return false; + } + + // Сам бросок печатается ВСЕГДА, и это не отладочный мусор, а ответ на вопрос, который + // уже задавали: «на 25 Арлин ни одного мешка с обычным лутом». У ванильного зомби + // LootDropProb = .04, то есть ноль мешков на два десятка убийств - исход с + // вероятностью около 40%, совершенно рядовой. Без этой строки отличить «не повезло» + // от «ролл сломан» можно только гаданием. + float roll = __instance.rand.RandomFloat; + Debug.Log("[NecromancerTome] VictimPatch: " + __instance.entityId + " - бросок на обычный мешок: шанс " + + prob.ToCultureInvariantString("0.000") + " против " + roll.ToCultureInvariantString("0.000") + + " -> " + (prob > roll ? "ВЫПАЛ" : "не выпал")); + if (prob > roll) + { + // Поле пишется ПЕРЕД вызовом намеренно, ровно как это делает сам оригинал: + // DropBagServer читает lootDropProb (`if (lootDropProb != 0f)`) и по нему решает, + // брать ли добычу из entityClass.lootDrops или из инвентаря. Посчитай мы в + // локальную и не запиши - редкий зомби с нулевым собственным lootDropProb, чей + // убийца поднял шанс оружием, пошёл бы не по той ветке. + __instance.lootDropProb = prob; + __instance.DropBagServer(); + Debug.Log("[NecromancerTome] VictimPatch: " + __instance.entityId + + " - обычный мешок выпал по ролу; «Жертва» ждёт в трупе"); + } + + // «Жертва» БОЛЬШЕ НЕ ПАДАЕТ МЕШКОМ СРАЗУ (указание 2026-09-18): она остаётся внутри + // трупа, а труп становится обыскиваемым. Разбор целиком - в CorpseLootPatch.cs. + // Обычный мешок при этом по-прежнему выпадает по своему ролу и лежит рядом, так что + // прежняя договорённость «выпал рол - два источника добычи» сохраняется. + CorpseLoot.MarkCorpse(__instance); + return false; + } + + /// Спавнит мешок «Жертва». Раньше это жило в префиксе на Entity.DropBagServer и + /// подменяло собой обычный мешок; теперь ничего не подменяет, поэтому тот патч снят. + /// + /// _offsetAside - сдвинуть в сторону, потому что рядом уже лёг обычный мешок. Ваниль + /// кладёт свой ровно в GetPosition() + 0.9 по Y (декомпилировано, Entity.DropBagServer), + /// то есть без сдвига два мешка встали бы в одну точку и выглядели как один. + public static void SpawnVictimBag(EntityAlive _victim, bool _offsetAside) + { int containerClassId = EntityClass.GetId(VictimContainerClassName); if (containerClassId == -1) { - Debug.LogWarning("[NecromancerTome] VictimPatch: entity class '" + VictimContainerClassName + "' not found, falling back to normal loot"); - return true; + Debug.LogWarning("[NecromancerTome] VictimPatch: класс '" + VictimContainerClassName + + "' не найден, мешок не выпадет"); + return; } - Vector3 pos = __instance.GetPosition(); + Vector3 pos = _victim.GetPosition(); pos.y += 0.9f; + if (_offsetAside) + { + // Полметра вбок - достаточно, чтобы мешки читались как два и оба брались + // прицелом, и мало, чтобы «Жертва» уехала за стену или в соседнюю комнату. + pos += _victim.qrotation * new Vector3(0.6f, 0f, 0f); + } Entity spawned = EntityFactory.CreateEntity(containerClassId, pos, Vector3.zero); if (spawned is EntityLootContainer lootContainer) { GameManager.Instance.World.SpawnEntityInWorld(lootContainer); - Debug.Log("[NecromancerTome] VictimPatch: " + __instance.entityId + " (victim) dropped guaranteed loot bag " + lootContainer.entityId); + Debug.Log("[NecromancerTome] VictimPatch: " + _victim.entityId + " уронил «Жертву» " + + lootContainer.entityId + (_offsetAside ? " (вторым мешком, со сдвигом)" : " (единственным мешком)")); } else { - Debug.LogWarning("[NecromancerTome] VictimPatch: created entity for '" + VictimContainerClassName + "' wasn't an EntityLootContainer"); + Debug.LogWarning("[NecromancerTome] VictimPatch: созданная сущность для '" + + VictimContainerClassName + "' не оказалась EntityLootContainer"); } - return false; } } } diff --git a/NecromancerHarmony.dll b/NecromancerHarmony.dll index 94dffef20b47d05776118ab8d2bfed991e8ebf3d..afe57573cf871fd83360c16d4817cbcce94cbd6b 100644 GIT binary patch literal 115712 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 j6RCf5X5Il@!mE($T@oKbn=aTq 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 Uj-`3VUYpi!KZAwh&87PP17HhMK>z>% diff --git a/NecromancerHarmony.pdb b/NecromancerHarmony.pdb index 38ab14bca343251f25d8dd681082ab047478e36f..ba3476c8b8aaef2e28ec80892e45148a4a034c7f 100644 GIT binary patch delta 12314 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