7da12f562a68db068b62ea2a9dd4e3630c84bd5e
6
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
ed5fea5192 |
1.3.0: шкала 20 убийств за уровень, два индикатора, мир между подчинёнными
Уровень навыка игра хранит ОДНИМ БАЙТОМ (ProgressionValue.Write/Read), поэтому старая шкала "одно убийство - один уровень" при max_level=5000 на каждом сохранении откатывала уровень на 256 назад. Снаружи это выглядело как самопроизвольно закрывающиеся рецепты (жалоба со стрима: Слёзы мертвеца открыты, Пир падальщика под замком при 250+ убитых), а тиры 500/2000/3000/5000 были недостижимы в принципе. Подтверждено на двух живых сейвах: sezon8 - 384 убийства при уровне 129, test8 - 303 при уровне 48. Шкала переведена на 20 убийств = 1 уровень, max_level=250 - влезает в байт с запасом. Уровень больше не накапливается, а вычисляется из necroZombieKillsCVar (float, сохраняется честно) и на каждом убийстве, и постфиксом на PlayerDataFile.ToPlayer - последнее чинит старые сейвы само, без команд и новой игры. Открытое при этом не теряется: в старой шкале уровень всегда был не больше счётчика, так что пересчёт может только вернуть украденное переполнением. Отдельно закрыт случай "счётчик пуст, а уровень есть" - счётчик восстанавливается из уровня по старой шкале. Все пороги пересчитаны в уровни, числа убийств не тронуты, кроме воды: 30 на сетку шагом 20 не ложится, по указанию пользователя мод переехал на 20 - туда же, где браслет и Кровавая сфера. Тег necroNecromancyLvl30 удалён. Сходимость всех 18 рецептов (тег -> RecipeTagUnlocked -> unlock_tier) проверена скриптом. Два индикатора: череп в статус-баре показывает уровень (раньше - общее число убийств), фиолетовая шкала над полосой опыта - продвижение внутри уровня, 0..20. Шкала сделана вёрсткой, а не баффом (бафф умеет число, но не полосу), заполнение привязано через XUi-выражение cvar(). Закрывающая скобка у выражения - одна "}", а не "%}": лишний "%" NCalc читает как остаток от деления и ждёт правый операнд, на чём первая проверка в игре и споткнулась. Третья правка: подчинённые зомби больше не дерутся между собой. Девиация выдаёт приказ "бей зомби", а подчинённый сам EntityZombie, и в targetClasses выражается только тип. Постфикс на EAITarget.check вычёркивает подчинённого из кандидатов (зомби выбирает следующего, настоящего врага), префикс на EntityAlive.SetAttackTarget гасит цель на путях мимо выбора - прежде всего месть, когда подчиняют уже дерущихся. Тексты на 13 языках, README (RU+EN), описания для сайта и Nexus приведены к новой шкале. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|
|
8c5636b523 |
Версия 1.2.0: заряд браслета и починенный счёт убийств
Проверка в игре прошла, версия поднята с 1.1.0 до 1.2.0, описания доведены до
текущего состояния мода.
ПОЧЕМУ МИНОРНАЯ, А НЕ ПАТЧ. Тег v1.1.0 указывает на
|
||
|
|
7172681353 |
Версия 1.1.0: описания под забор блоков и торговцев
Номер по публичной линии Nexus: после 1.0.1 идёт 1.1.0, а не 1.0.2 - вышла не починка, а две новые механики. Описания приведены в соответствие с модом во всех четырёх местах, где они живут: обе половины README, обе половины SITE_DESCRIPTION.html и NEXUS_DESCRIPTION.bbcode. - Забор блоков дописан в пункт про Пространственный браслет: десять секунд вплотную плюс секунда за блок расстояния, тот же круглый индикатор, что у разбора верстака, обесцвечивание мира на время ожидания, перечень того, что не поддаётся, и прерывание силовой атакой. До этой правки там стояло "обычная атака пока ничего не делает". - Торговцы - отдельным пунктом в "По мелочи", а на Nexus своим абзацем в тон остальному тексту: чёрно-белые, полупрозрачные и матовые, торговля не меняется. - Счётчик строк 123 -> 130 в трёх местах. Он врал и до сегодня: ключей было 124. ЗАОДНО ЭТО ЧИСЛО СТАЛО ЧЕСТНЫМ. Рядом со счётчиком все описания утверждают "пустых ячеек нет", и это было неправдой: у txName_NecroAsh пустовали семь языков (японский, корейский, польский, бразильский, турецкий и оба китайских). Заполнены - теперь в файле 130 ключей и ноль пустых ячеек перевода. Раздел "Статус" переписан под 1.1.0, прежний текст про 1.0.1 сохранён абзацем ниже: он не устарел, он просто стал предысторией. NEXUS_FILE_DESCRIPTION_1.0.1.bbcode намеренно не тронут - он описывает конкретную уже залитую загрузку. Новой версии понадобится свой файл. --- Version 1.1.0: descriptions updated for the block pull and the traders The number follows the public Nexus line: after 1.0.1 comes 1.1.0 rather than 1.0.2, because what shipped is two new mechanics, not a fix. The descriptions now match the mod in all four places they live: both halves of the README, both halves of SITE_DESCRIPTION.html, and NEXUS_DESCRIPTION.bbcode. - The block pull was added to the Spatial Bracelet entry: ten seconds up close plus one per block of distance, the same circular indicator a workbench pickup uses, the world draining to black and white for the wait, what refuses to be taken, and the power attack as the interrupt. Until this change the text still said the regular attack does nothing. - The traders got their own bullet under "Small things", and on Nexus their own paragraph in the tone of the rest: black and white, half-transparent and matte, with the trading itself unchanged. - The string count went 123 -> 130 in three places. It was already wrong before today: there were 124 keys. AND THAT NUMBER IS NOW HONEST. Next to the count, every description claims there are no empty cells, which was untrue: txName_NecroAsh was missing seven languages (Japanese, Korean, Polish, Brazilian Portuguese, Turkish and both Chinese). They are filled in - the file now has 130 keys and zero empty translation cells. The "Status" section is rewritten for 1.1.0, with the old 1.0.1 text kept as a paragraph below it: it did not become wrong, it became backstory. NEXUS_FILE_DESCRIPTION_1.0.1.bbcode is deliberately untouched - it describes one specific upload that already happened. The new version will need its own file. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XN8J75vnum2qAVrtRUMKf7 |
||
|
|
4801341676 |
Версия 1.0.1
Номер выбран под то, что видят игроки: на Nexus опубликована 1.0, а 2.0.0 в ModInfo проставлялась для внутренней работы и наружу не выходила. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FEXvXg1FSAQJHrvYbeAKqq |
||
|
|
ab1b3eadaf |
Версия 2.0: свои модели ножа и крови, своя краска блоков через патч атласа
Нож некроманта и Кровь некроманта получили собственные модели, а Пирамида духов - собственную поверхность. Три разных способа, каждый выбран по тому, как устроен сам предмет. НОЖ И КРОВЬ - свои префабы в бандлах мода. Форма записи "#@modfolder(...)?prefab" подтверждена живым примером; геометрия у обоих ванильная, меняются материал и текстура. Текстуры генерируются скриптами (см. _private/tools), а не рисуются: правка вида сводится к правке констант и одному запуску. Нож: состаренная кость, почти чёрная обмотка, пурпур во впадинах, плюс слой под ручную роспись рун - он подмешивается в альбедо и в эмиссию, поэтому руны светятся. Слой пользовательский, генератор его никогда не перезаписывает. Положение росписи посчитано по геометрии: развёртка выгружена из меша, и подобрано смещение, при котором вся роспись ложится на одну плоскую грань. Раньше она перегибалась через кромку, обращённую к игроку. Кровь: банка вместо мешка. Заодно чинится расхождение, жившее с самого начала - описание предмета говорило "Банка, наполненная кровью", а наследуемый medicalBloodBag показывал sackPrefab, обычный мешок. Жидкость перерисована по маскам мешей, а не перекрашена тинтом: тинт предмета на этот меш не действует вовсе, у шейдера Game_EntityTintMaskSSS выигрывает _Color материала. ПИРАМИДА - своя краска в атласе блоков через собственный Harmony-патч. Ваниль своих текстур блоков не умеет: Texture у блока это индекс в готовом атласе, а запись краски несёт только TextureId/PaintCost/Group/SortIndex и никогда путь к картинке. Поэтому CustomBlockPaintPatch дописывает наш слой в массивы атласа на лету. Путь через свою модель (Shape="ModelEntity") пробовался и отложен: там остались нерешёнными столкновения и маджента на дальних экземплярах. Краска лучше тем, что блок остаётся обычным Shape="New" - со всеми работающими столкновениями, наведением по E и правильной посадкой, - а поверхность у него своя. Побочно краска доступна кисточкой под именем "Некротический прах". Параметры атласа не угаданы, а замерены в игре (BlockAtlasProbePatch): 512x512, DXT1 для альбедо и DXT5 для нормалей со specular, 10 мип-уровней, массивы нечитаемые - отсюда GPU-копирование и явные настройки импорта текстур. Зонд оставлен намеренно: номер краски в blocks.xml (608) это длина ванильного uvMapping, и после обновления игры он может сдвинуться - зонд печатает фактические числа при каждом запуске. Патчи обёрнуты целиком: они работают внутри загрузки игры, где вылетевшее исключение срывает шаг загрузки. Resources/necropyramid в коммит не идёт - на него никто не ссылается. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W5F3AVwsusZHMqPBcSQcVJ |
||
|
|
e8f064f5ec |
Книга некроманта 1.0 — первая публичная версия
Мод для 7 Days to Die 3.2: навык «Некромантия», растущий от счётчика убитых зомби, тёмное оружие с шестью собственными модами, призывная нежить, пирамида духов и сюжетный финал через Чёрный портал. Локализация на 13 языках. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MaNro5hAGTzcQ7rJNN2tCX |