AlexCubeandClaude Opus 5 a6e19f9b97 Браслет утаскивает блоки в хранилище; обесцвечивание на время каналов
Обычная атака Пространственного браслета до сих пор ничего не делала. Теперь
она наводится на блок, показывает тот же круглый индикатор, что и демонтаж
верстака, и по его заполнении блок исчезает из мира и появляется в хранилище.

ВЕСЬ РЕЦЕПТ ВАНИЛЬНЫЙ. Block.TakeItemWithTimer и TakeItemWithTimerDone - это и
есть демонтаж верстака; взяты как есть, с двумя заменами: длительность и Bag
хранилища вместо рюкзака. Сообщения об отказе тоже ванильные
(ttRepairBeforePickup, ttBlockMissingPickup, ttCantPickupInUse,
ttWorkstationNotEmpty) - уже переведены на все языки игры, и игрок, хоть раз
забиравший верстак, знает, что они значат. Повреждённый блок отсекается первой
строкой, до открытия таймера: сообщение есть, индикатора нет.

Все проверки делаются ДВАЖДЫ, на старте и на финише: за десять секунд блок
можно расстрелять, выкопать, подменить, кто-то может открыть контейнер. Порядок
в финале принципиален - предмет кладётся в хранилище ПЕРВЫМ, и блок сносится,
только если он туда лёг; обратный порядок удалял бы блок из мира, когда
хранилище успело заполниться.

Цель - любой блок под прицелом, а не только то, что ваниль и так разрешает
поднимать. Отсюда две вещи, которых у узкого варианта не было бы: мультиблок
(дверь, кровать) приводится к родительской клетке через
multiBlockPos.GetParentPos, иначе половина модели осталась бы стоять; блоки без
предметной формы (ToItemValue пуст) отсекаются, иначе блок исчезал бы в обмен
на ничто.

СОДЕРЖИМОЕ КОНТЕЙНЕРОВ ПЕРЕЕХАТЬ НЕ МОЖЕТ: ItemStack в этой игре некуда
положить чужой инвентарь. Ваниль решает отказом, тем же и здесь, расширенным на
сундуки - в этой версии игры они моделируются композитным tile entity со
storage-фичей, поэтому вопрос задаётся фиче через
TryGetSelfOrFeature<ITileEntityLootable>.

ОТМЕНА СИЛОВОЙ АТАКОЙ, потому что десять секунд неподвижности после случайного
клика - долго, а ванильные выходы оба плохие: урон игрок не выбирает, а кнопка
активации не та, на которой уже лежит рука. Патч на XUiC_Timer.Update, как у
Синего портала, и вместе с его уроком: семантической PlayerActionsLocal.Secondary
недостаточно (модальное окно таймера держит фокус ввода - это выяснилось
багрепортом 29.08), поэтому рядом стоит сырой Input.GetMouseButtonDown(1).
Отдельная страховка от двойного открытия: отмена ловит НАЖАТИЕ, а обычная
силовая атака - ОТПУСКАНИЕ, и это одно нажатие.

ТЕРРИТОРИЯ ТОРГОВЦА И ДНО МИРА. Оба случая выглядят изнутри игры одинаково
("здесь ничего не ломается") и устроены совершенно по-разному. У торговца блоки
обычные, защищена ТЕРРИТОРИЯ: ваниль просто не зовёт DamageBlock внутри неё,
поэтому кирка не берёт, а браслет брал - он спрашивал про блок, а спрашивать
надо про место. Условие скопировано целиком, вместе с песочничной половиной
(World.SandboxUseTraderArea != Default || !IsWithinTraderArea): защита торговца
- серверная настройка, и сервер, который её выключил, не должен обнаружить, что
мод навязывает её сам. Дно мира - обратный случай: у бедрока CanDestroy=false на
МАТЕРИАЛЕ, и это спрошено как вопрос о материале, а не по имени блока.

Оба отказа с сообщением, хотя ваниль молчит: кирка, которая ничего не делает,
объясняет сама себя, а индикатор, который не появляется, выглядит как поломка
мода.

ДЛИТЕЛЬНОСТЬ РАСТЁТ С РАССТОЯНИЕМ - десять секунд вплотную, плюс секунда за
каждый полный блок. Расстояние не вычисляется заново: HitInfoDetails.distanceSq
- это квадрат длины ТОГО САМОГО луча, которым блок и выбран, а вычислять между
позициями значило бы выбрать точку в игроке (ноги? глаза?) и точку в блоке
(центр? грань?) и ошибиться хотя бы в одной. Пол, а не округление: только так
сходятся обе заданные точки - вплотную ровно 10, в пяти блоках ровно 15.

МИР ОБЕСЦВЕЧИВАЕТСЯ НА ВРЕМЯ ЛЮБОГО КАНАЛА - и утаскивания блока, и обоих
порталов (HarmonySrc/ChannelVision.cs, общий на оба, чтобы вид и время жили в
одном месте). Это штатный ScreenEffects игры: SetScreenEffect(name, intensity,
fadeTime), и плавность досталась даром - три секунды туда и три обратно это
третий аргумент. Эффект "Greyscale" выбран по тому, с кем НЕ придётся драться:
в него пишут только twitch_buffMonochrome и sandbox_blackandwhite, которых в
обычной сессии не бывает. "Dying"/"Dead" - те самые эффекты смерти, но их пишет
EntityPlayerLocal.Update из здоровья игрока при каждом изменении, и любой урон
посреди канала перехватил бы эффект. "Dark" дал бы затемнение, но принадлежит
buffCrouching и срабатывает на каждое приседание - поэтому затемнения нет
сознательно. Возврат красок вызывается на КАЖДОМ пути выхода, а в завершении
утаскивания - первой строкой, до всех проверок: десять секунд кончились и когда
блок забрали, и когда отказали.

Локализация: шесть новых ключей на 13 языков. Описание браслета переписано
(дважды за правку, вслед за механикой) - оно утверждало сначала "обычная атака
ничего не делает", потом "через десять секунд".

В игре проверено: забор блока работает. Отмена, обесцвечивание и рост
длительности - ещё нет.

---

The bracelet pulls blocks into the vault; colour drains during channels

The Spatial Bracelet's regular attack did nothing until now. It aims at a block,
shows the same circular indicator a workbench pickup does, and when it fills the
block leaves the world and appears in the vault.

THE WHOLE RECIPE IS VANILLA'S. Block.TakeItemWithTimer and TakeItemWithTimerDone
are the workbench pickup; taken as they are, with two substitutions - the
duration, and the vault's Bag instead of the backpack. The refusal messages are
vanilla's own keys too (ttRepairBeforePickup, ttBlockMissingPickup,
ttCantPickupInUse, ttWorkstationNotEmpty), already translated into every language
the game ships, and a player who has taken a workbench already knows them. A
damaged block is refused on the first line, before the timer opens: a message,
and no indicator.

Every guard is checked TWICE, once to open and once to finish: in ten seconds a
block can be shot, mined, replaced, or opened by someone else. The order at the
end matters - the item goes into the vault FIRST and the block is only removed if
it got there; the other way round deletes a block out of the world in exchange
for nothing when the vault filled up meanwhile.

The target is any block under the crosshair, not only what vanilla already lets
you take. Two things follow that the narrow version would never have faced: a
multiblock (a door, a bed) is resolved to its parent cell through
multiBlockPos.GetParentPos, or half the model would be left standing; and blocks
with no item form (ToItemValue comes back empty) are refused, or a block would
vanish in exchange for nothing.

CONTENTS CANNOT TRAVEL: an ItemStack in this game has nowhere to put another
container's inventory. Vanilla solves this by refusing, and so does this,
extended to chests - this version of the game models them as a composite tile
entity with a storage feature, so the question is asked of the feature through
TryGetSelfOrFeature<ITileEntityLootable>.

THE POWER ATTACK CANCELS, because ten seconds of standing still after a misclick
is long and vanilla's two escapes are both poor here: getting hit is not a
choice, and the activate key is not the button a hand is already on. The patch
sits on XUiC_Timer.Update like the Blue Portal Stone's, and carries its lesson:
the semantic PlayerActionsLocal.Secondary is not enough, because the modal timer
window holds input focus (found by a bug report on 29 Aug), so a raw
Input.GetMouseButtonDown(1) sits next to it. A separate guard stops one press
opening the vault twice: the cancel catches the button going DOWN, the ordinary
power attack catches it coming UP, and that is one press.

A TRADER'S GROUND AND THE WORLD'S FLOOR look identical from inside the game
("nothing breaks here") and are nothing alike underneath. A trader's blocks are
ordinary; it is the AREA that is protected - vanilla simply skips DamageBlock
inside it, which is why a pickaxe does nothing while the bracelet did not: it was
asking about the block when it had to ask about the place. The condition is
copied whole, sandbox half included (World.SandboxUseTraderArea != Default ||
!IsWithinTraderArea): trader protection is a server setting, and a server that
turned it off should not find this mod enforcing it anyway. The world's floor is
the opposite case - bedrock carries CanDestroy=false on its MATERIAL, and that is
asked as a question about the material rather than by block name.

Both refusals speak, where vanilla stays silent: a pickaxe that does nothing
explains itself, an indicator that never appears looks like this mod is broken.

THE CHANNEL GROWS WITH REACH - ten seconds up close, one more per full block.
The distance is not recomputed: HitInfoDetails.distanceSq is the squared length
of the very ray that chose this block, while measuring between positions would
mean picking a point in the player (feet? eyes?) and a point in the block
(centre? face?) and being wrong about one. Floor rather than round, because only
that makes both given anchors come out right - exactly 10 up close, exactly 15 at
five blocks.

COLOUR DRAINS OUT DURING ANY CHANNEL - the block pull and both portals
(HarmonySrc/ChannelVision.cs, shared so the look and the timing live in one
place). This is the game's own ScreenEffects: SetScreenEffect(name, intensity,
fadeTime), and the smoothness came free - three seconds each way is that third
argument. "Greyscale" was chosen by who else writes to it: only
twitch_buffMonochrome and sandbox_blackandwhite, neither of which happens in an
ordinary session. "Dying"/"Dead" are the death visuals being imitated, but
EntityPlayerLocal.Update writes "Dying" from the player's health on every change,
so any damage mid-channel would take it over. "Dark" would have supplied the
darkening half, but it belongs to buffCrouching and fires on every crouch - so
the darkening is deliberately absent. The colour is restored on EVERY exit path,
and in the pull's completion on the first line, before any check: the ten seconds
are over whether the block was taken or refused.

Localization: six new keys in 13 languages. The bracelet's description was
rewritten (twice in this change, following the mechanics) - it claimed first that
the regular attack does nothing, then that the pull takes ten seconds.

Confirmed in game: taking a block works. The cancel, the desaturation and the
distance scaling are not tested yet.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XN8J75vnum2qAVrtRUMKf7
2026-09-14 16:22:55 +03:00
2026-09-13 19:55:50 +03:00

Книга некроманта / Necromancer's Tome (NecromancerTome)

English version below — scroll past the Russian half.

Версия 1.0.1 — для 7 Days to Die 3.2. Автор: Alex Cube.

Мод для 7 Days to Die о пути от обычного выжившего до некроманта — с собственной веткой прогрессии, тёмным оружием, призываемыми существами и сюжетной концовкой.

Завязка

Всё начинается с записки, читая которую персонаж видит неясный флэшбек.

Некромантия в этом моде — ответ на проклятие, а не побочная ветка крафта. Вместо того чтобы однажды пасть перед ордой и присоединиться к ней, игрок учится подчинять мёртвых себе: заражать зомби безумием, стравливать их друг с другом, поднимать против них собственных тварей. Не выживание вопреки смерти, а власть.

Прогрессия

Отдельный скилл "Некромантия" растёт не от опыта, а от счётчика упокоенных зомби — свой счётчик, своя механика. Пять тиров, каждый открывает часть арсенала:

Тир Порог Что открывается
Адепт сразу Камень духов, Нож некроманта, Синий портальный камень, Пирамида духов
Адепт (доп.) 20 зомби Пространственный браслет
Адепт (доп.) 30 / 60 / 100 / 300 зомби Моды ножа: Слёзы мертвеца, Пир падальщика, Могильный покой, Тёмное чутьё
Подмастерье 500 зомби Свиток девиации
Подмастерье (доп.) 1400 / 1700 зомби Моды ножа: Хватка мертвеца, Мёртвая буря
Ученик 2000 зомби Призыв зомбособаки, Жуки Властелина, Призыв зомбогрифа
Некромант 3000 зомби Призыв зомбомедведя, Призыв зомбоволка, Свиток банши
Мастер 5000 зомби Чёрный портальный камень

Арсенал

  • Камень духов — брошенный камень, светящийся некромантской энергией. Задевает одного зомби: тот переходит на вашу сторону и начинает атаковать других зомби вместо вас.
  • Свиток девиации — тот же эффект, но мощнее: при броске переманивает на вашу сторону сразу всех зомби в области взрыва, а не одного. Расходуется при использовании.
  • Нож некроманта — почерневший костяной клинок. Урон растёт вместе с навыком Некромантии: почти бесполезен в неопытных руках, смертоносен у прокачанного игрока. Лечит владельца на половину нанесённого урона и метит раненого зомби как Жертву — тот при смерти гарантированно оставляет особый мешок с ингредиентами.
  • Шесть модов только для Ножа некроманта — обычные моды для ножей в это оружие не встают, а эти не встают ни во что другое: Слёзы мертвеца (2 воды с каждого убитого клинком зомби), Пир падальщика (2 еды за труп), Могильный покой (защита от перегрева и переохлаждения, пока нож в руках), Хватка мертвеца (раненый клинком зомби замедляется), Мёртвая буря (силовая атака бьёт по площади с кровотечением, за 10 здоровья вместо 5 и двойную выносливость), Тёмное чутьё (все зомби поблизости отмечены на компасе и карте, пока нож в руках).
  • Кровь некроманта — ритуальный ресурс: чтобы получить банку, нужны пустая банка, любой нож в руках и 90% текущего здоровья за одну порцию. Ингредиент для самых тёмных рецептов — Чёрного портала и самого Ножа.
  • Кожа жертвы и Прах зомби — остаются от зомби, помеченного Ножом некроманта как Жертва. Ингредиенты для книг призыва и большинства некромантских рецептов соответственно.
  • Синий портальный камень — держите кнопку использования 10 секунд, чтобы телепортироваться к своему спальному мешку. Прерывается любым уроном или силовой атакой раньше времени. Не расходуется.
  • Пространственный браслет — силовая атака открывает личный разлом-хранилище, чей размер растёт вместе с уровнем Некромантии. Обычная атака пока ничего не делает.
  • Консервные банки (пустая / с речной водой / с кипячёной) — расходный цикл вместо одноразовых банок: наполняются водой, кипятятся прямо на костре без кастрюли, выпиваются, банка возвращается пустой. Речная вода из банки может вызвать дизентерию, как обычная мутная вода; кипячёная безопасна. Вмещают меньше воды, чем стеклянные банки.

Питомцы

Призывные книги поднимают союзных существ, которые дерутся с зомби, а не с игроком. Питомец не «следует» за игроком в строгом смысле — просто бродит сам по себе, а если отойдёт дальше 32 блоков и в этот момент не занят боем, его телепортирует обратно к владельцу:

  • Зомбособака, Зомбомедведь, Зомбоволк, Зомбогриф — постоянные спутники. Можно держать по одному экземпляру каждого вида одновременно; отзываются обратно в книгу силовой атакой.
  • Жуки Властелина — разовый свиток, выпускающий рой. Жуки сами разлетаются по широкому радиусу и жалят зомби; ужаленный переходит на вашу сторону, как от Камня духов. Рой нельзя отозвать обратно, активен может быть только один. Расходуется при использовании.
  • Свиток банши — одноразовый: при открытии вопит голосом банши и поднимает рядом с игроком небольшую враждебную орду. Это не союзники — эти зомби так же опасны для вас, как любые другие.

Оборона базы

  • Пирамида духов — деплоябл-блок, не удержимый предмет. Пока вы стоите в её радиусе, она сама заряжает девиацией любого незаряженного зомби поблизости и поджигает его холодным фиолетовым пламенем, обращая против других зомби вместо вас или вашей базы. В меню блока можно включать/выключать эффект и показывать границу радиуса действия.

Чёрный портал — финал истории

Чёрный портальный камень открывается на вершине прогрессии (5000 зомби) и является концовкой мода. Активация запускает диалог подтверждения, останавливает игру и разворачивает полноэкранную финальную сцену — она досказывает историю, начатую запиской в первый день. Заканчивается сцена выбором из двух вариантов: один закрывает историю и выходит в главное меню, другой возвращает игрока в мир и позволяет играть дальше.

Сюжетные тексты — в Config/Localization.csv, ключи necroFinal*. Здесь они не пересказываются намеренно: README читают до прохождения.

По мелочи

  • Стартовая записка при открытии тоже ставит игру на паузу и проигрывает короткий флэшбек.
  • Некоторые декоративные блоки (кровати, кулеры, картонные коробки) можно разобрать удержанием, как верстак.

Локализация

13 языков полностью: русский, английский, немецкий, испанский, французский, итальянский, японский, корейский, польский, португальский (Бразилия), турецкий, китайский упрощённый и традиционный. Все 123 ключа Config/Localization.csv заполнены, пустых ячеек нет.

Установка

Распакуйте папку NecromancerTome в <папка игры>/Mods/ (или в %APPDATA%/7DaysToDie/Mods/) и запустите игру. Мод содержит Harmony-библиотеки, поэтому EAC должен быть выключен.

Рассчитан на одиночную игру: ванильная пауза работает только в сингле, поэтому в мультиплеере сюжетные сцены проиграются без остановки времени.

Статус

Версия 1.0.1 — исправление по первому баг-репорту с Nexus: содержимое Пространственного браслета больше не пропадает после выхода из игры (хранилище теперь сохраняется в файле игрока, рядом с рюкзаком). Весь заявленный контент реализован и проходит тесты в игре. Из запланированного не сделана только часть фирменных звуков. Текст описания для сайта (RU + EN) — в SITE_DESCRIPTION.html (разметка блоков WordPress). Полная техническая история разработки и текст финала лежат рядом с модом в BACKLOG.md и FINAL_TEXT.md — в репозиторий они не входят (спойлеры и внутренняя кухня).


Necromancer's Tome (English)

Version 1.0.1 - for 7 Days to Die 3.2. By Alex Cube.

A 7 Days to Die mod about the road from ordinary survivor to necromancer - with its own progression tree, cursed weapons, summonable creatures and a story ending.

Premise

It all starts with a note, and reading it shows the character a blurred flashback.

Necromancy in this mod is an answer to a curse, not a side branch of crafting. Instead of falling before the horde one day and joining it, the player learns to bend the dead to their will: to infect zombies with madness, turn them on each other, raise their own creatures against them. Not survival in spite of death, but power over it.

Progression

A dedicated "Necromancy" skill grows not from experience but from a count of zombies put to rest - its own counter, its own mechanic. Five tiers, each opening part of the arsenal:

Tier Threshold What unlocks
Adept from the start Spirit Stone, Necromancer's Knife, Blue Portal Stone, Pyramid of Spirits
Adept (extra) 20 zombies Spatial Bracelet
Adept (extra) 30 / 60 / 100 / 300 zombies Knife mods: Tears of the Dead, Scavenger's Feast, Grave's Repose, Dark Sense
Journeyman 500 zombies Scroll of Deviation
Journeyman (extra) 1400 / 1700 zombies Knife mods: Dead Man's Grip, Dead Storm
Apprentice 2000 zombies Summon Zombie Dog, Beetles of the Lord, Summon Zombie Griffin
Necromancer 3000 zombies Summon Zombie Bear, Summon Zombie Wolf, Banshee's Scroll
Master 5000 zombies Black Portal Stone

Arsenal

  • Spirit Stone - a thrown stone lit with necromantic energy. It catches a single zombie: that one switches to your side and starts attacking other zombies instead of you.
  • Scroll of Deviation - the same effect, but stronger: on impact it wins over every zombie in the blast area at once rather than one. Consumed on use.
  • Necromancer's Knife - a blackened bone blade. Its damage grows with the Necromancy skill: nearly useless in unskilled hands, lethal for a levelled player. Heals the wielder for half the damage dealt and marks the wounded zombie as a Victim - on death it is guaranteed to leave a special bag of ingredients.
  • Six mods for the Necromancer's Knife only - ordinary knife mods will not fit this weapon, and these will not fit any other: Tears of the Dead (2 water from every zombie killed with the blade), Scavenger's Feast (2 food per corpse), Grave's Repose (protection from heat and cold while the knife is held), Dead Man's Grip (a zombie wounded by the blade is slowed), Dead Storm (the power attack hits an area and causes bleeding, for 10 health instead of 5 and double the stamina), Dark Sense (every nearby zombie is marked on the compass and map while the knife is held).
  • Necromancer's Blood - a ritual resource: a jar takes an empty jar, any knife in hand and 90% of your current health per portion. An ingredient for the darkest recipes - the Black Portal and the Knife itself.
  • Victim's Skin and Zombie Ash - left by a zombie marked as a Victim by the Necromancer's Knife. Ingredients for the summoning books and for most necromantic recipes respectively.
  • Blue Portal Stone - hold the use button for 10 seconds to teleport to your bedroll. Interrupted by any damage, or by a power attack before the time is up. Not consumed.
  • Spatial Bracelet - a power attack opens a personal storage rift whose size grows with your Necromancy level. The normal attack does nothing yet.
  • Tin cans (empty / with river water / with boiled water) - a reusable cycle instead of single-use jars: fill them with water, boil it right on a campfire without a pot, drink, and the can comes back empty. River water from a can can cause dysentery, like any murky water; boiled water is safe. They hold less water than glass jars.

Pets

Summoning books raise allied creatures that fight zombies rather than the player. A pet does not "follow" in any strict sense - it wanders on its own, and if it strays further than 32 blocks while not in combat, it is teleported back to its owner:

  • Zombie Dog, Zombie Bear, Zombie Wolf, Zombie Griffin - permanent companions. One of each kind can be kept at a time; a power attack recalls them into the book.
  • Beetles of the Lord - a one-shot scroll releasing a swarm. The beetles scatter over a wide radius on their own and sting zombies; a stung zombie switches to your side just like with the Spirit Stone. The swarm cannot be recalled and only one can be active. Consumed on use.
  • Banshee's Scroll - single use: on opening it screams with a banshee's voice and raises a small hostile horde next to the player. These are not allies - they are as dangerous to you as any other zombies.

Base defence

  • Pyramid of Spirits - a deployable block, not a held item. While you stand in its radius it charms any uncharmed zombie nearby on its own and sets it alight with cold purple flame, turning it against the other zombies instead of you or your base. Its block menu toggles the effect and shows the edge of the radius.

The Black Portal - the story's ending

The Black Portal Stone unlocks at the top of the progression (5000 zombies) and is the mod's ending. Activating it opens a confirmation dialogue, stops the game and unfolds a full-screen finale - it finishes the story the note started on day one. The scene closes on a choice of two: one ends the story and returns to the main menu, the other puts the player back into the world to keep playing.

The story texts live in Config/Localization.csv under the necroFinal* keys. They are deliberately not retold here: a README gets read before the playthrough.

Small things

  • The opening note also pauses the game and plays a short flashback.
  • Some decorative blocks (beds, water coolers, cardboard boxes) can be disassembled by holding the key, like a workbench.

Localization

13 languages, complete: Russian, English, German, Spanish, French, Italian, Japanese, Korean, Polish, Brazilian Portuguese, Turkish, Simplified and Traditional Chinese. All 123 keys in Config/Localization.csv are filled in, with no empty cells.

Installation

Unpack the NecromancerTome folder into <game folder>/Mods/ (or into %APPDATA%/7DaysToDie/Mods/) and launch the game. The mod ships Harmony libraries, so EAC must be turned off.

Built for single-player: the vanilla pause only works in single-player, so in multiplayer the story scenes play without stopping time.

Status

Version 1.0.1 - a fix for the first bug report from Nexus: the contents of the Spatial Bracelet no longer disappear after leaving the game (the storage is now saved in the player's own file, next to the backpack). All the announced content is implemented and passes testing in game. Of what was planned, only part of the mod's own sound effects is missing. The description text for the website (RU + EN) is in SITE_DESCRIPTION.html (WordPress block markup). The full technical history of development and the text of the finale sit next to the mod in BACKLOG.md and FINAL_TEXT.md - they are not part of the repository (spoilers and back-of-house).

S
Description
No description provided
Readme
34 MiB
Languages
C# 93.7%
HTML 6.3%