- скакун: меш коллайдеров колёс - свой цилиндр тех же размеров; у материалов
выключенных ореола и стекла фары сняты ванильные текстуры
- оссуарий: коллайдер - своя коробка по габаритам ванильного меша
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Префабы necroBookDogPrefab и necroBookVulturePrefab в бандле necrobooks: модель
книги крысы, свои текстуры - рисунки z-dog и z-bird, кожа в тон шкуре зомбопса
(серо-бурая) и перьям зомбостервятника (красно-бурая).
- bookSummonZombieDog и bookSummonZombieGriffin переведены на них, тинт снят.
- Иконки SummonZombieDog и SummonZombieGriffin - рендер моделей, как у книги крысы.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Камень в любой ячейке скакуна - вечно полный бак, сферы рядом не тратятся.
- Камень в отсеке топлива гео-оссуария - работает вечно (FuelTypes + removeFuel).
- Кровавая сфера чинится пакетом крови: 250 прочности за пакет (2 пакета - полная).
- Описания сферы, камня, оссуария и скакуна дополнены (13 языков); в описании
скакуна по-корейски и по-китайски название сферы приведено к принятому в моде.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Мотор не заводится без сфер и глохнет, когда кровь кончилась (ваниль заводила
его и с пустым баком - ехал на полной тяге); вставили сферу в седле - заводится.
- Звуки мотора у скакуна молчат; на ходу - стук педалей bicycle_pedal,
гудок и колёса - велосипедные.
- Частицы дыма/огня убраны (розовые кубы - ванильные частицы без материалов).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Топливо скакуна - кровавые сферы в 4 ячейках модификаций, тратятся по очереди
(одна сфера = 120 ед., бак 480); уровень бака считается по прочности сфер,
выработанная сфера исчезает. Заправка канистрой убрана. В ячейки - только сферы.
- Причина «не едет» и «-2147483648%»: Extends не наследует effect_group, у предмета
скакуна не было ни ячеек, ни прочности. Своя группа: ModSlots 4, DegradationMax 4000;
здоровье закреплено кодом (DegradationMax сфер в ячейках его перебивал бы).
- Ремонт - 50 костей за ход вместо ремкомплекта; подсказка при нехватке, 13 языков.
- Модель скакуна: сиденье и рама прогнуты по ванили, рога по оси руля,
череп меньше и короче, свет фары в глазнице, крыло над передним колесом,
зубы под черепом убраны.
- Книга крысы: повёрнута как ванильная (палец на корешке), без металлических уголков.
В игре не проверено.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Костяной скакун (necroBoneSteed): мотоцикл из костей, сухожилий и сосудов
с черепом-циклопом вместо фары; своя модель (бандл necrobonesteed),
ванильная система предмета-транспорта (necroBoneSteedPlaceable, предпросмотр
при установке); топливо - кровавая сфера, одна сфера = полный бак; теги
коллайдеров и шейдер копируются с ванильного мотоцикла; рецепт на верстаке,
Подмастерье
- Книга Духа крысы: своя модель (бандл necrobooks) - чёрная кожа, светящийся
узор со скелетом крысы и семиконечной звездой, ржавые уголки, ремешок
- Турели не стреляют по существам мода (питомцы, рой, змея)
- Гео-оссуарий тратит 1/10 прочности сферы на стак вместо целой сферы
В игре не проверено.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Питомцы:
- охрана хозяина: враг ближе 20 м (в режиме змеи - к телу) атакуется сам,
поводок 40 м, охраняют все кроме крысы; приказ прицелом охрана не перебивает
- IsFoe исключает существ мода (necro*): питомец выбирал целью себя
- призыв нового спутника отзывает прежнего
- прицел книг призыва - как у арбалета, краснеет на годной цели
Гео-оссуарий (necroGeoOssuary): станция добычи на кровавой сфере
- основа - коллектор росы; в 3 ячейки модов любой из 5 ресурсов
(камень, уголь, селитра, железо, сланец), 1 сфера = стак 6000 за 5-8 ч
- работает без открытого неба; верстак, Подмастерье (ур. 25)
- своя модель (бандл necroossuary): кости, корни, сосуды, клыки, черепа
с глазами-углями; шейдер и теги коллайдера берутся у ванильного коллектора
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
В первые RagdollDelay секунд после входа игра ещё обрабатывает ввод:
можно было взять ствол, и R разом перезаряжало его и выводило из змеи.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
FPS сползал 60 -> 15-30 за 10-15 минут в любом мире; перезаход сбрасывал, в режиме
змеи (пояс скрыт) тормозов не было. Замер показал: группа окон toolbelt 2 -> 23 мс/кадр
при неизменном числе элементов. Причина - ошибка игры: BindingNcalcFunctions.cvar при
каждом вычислении регистрирует новый VariableStateCVar, RegisterVariable добавляет без
проверки, новая переменная стартует с 0 и в следующем кадре снова вызывает пересчёт.
Шкала fill="{% cvar('necroNecromancyProgressCVar') / 20 }" (с 1.3.0) набирала по одной
переменной за кадр. CVarBindingLeakPatch: одна CVar регистрируется в привязке один раз.
Проверено: 15 мин, 25 убийств - FPS 55-58 ровно, toolbelt ~1 мс/кадр.
Пирамида: на Texture Quality ниже Full атлас блоков игры меньше нашей текстуры 512, и
CustomBlockPaint её пропускал. Теперь берётся мип под размер атласа; бандл necroatlas
пересобран с ignoreMipmapLimit (иначе CopyTexture отказывает и пирамида чёрная).
Проверено на Half.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Серые копии были 4096x4096 RGBA32 без сжатия (64 МБ видеопамяти каждая плюс CPU-копия) - на стриме 28.09 это добавило к переполнению 8 ГБ видеокарты. Теперь как в CorpseLoot: уменьшение до MaxTintSize, Compress, Apply(makeNoLongerReadable). При выходе из мира копии уничтожаются, а не просто забываются.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Вместо «Everything else works» - честно: мод изначально под одиночную
игру, переделывает механики игры (трупы, добыча, поведение зомби), и в
мультиплеере часть вещей может не работать, например трупы «Жертвы».
README (RU/EN), сайт (RU/EN), описание Nexus.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Префикс EntityPlayer.AddKillXP пропускает начисление опыта для жертв
змеи. Некромантия и урон ножа растут как прежде: их счёт - постфикс на
том же методе, Harmony вызывает его и при отменённом оригинале.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ночью по R с ножом - дух змеи: тело падает (-95% HP), игрок управляет
призрачной змеёй от первого лица. Свободный ход по миру (свой наблюдатель
чанков, отрисовка, звук, спавн и спящие считаются от змеи), прыжок,
атака на ЛКМ - рывок сквозь препятствия и чёрный разрыв, ПКМ - выбраться
из текстур. Тёмное чутьё, тревога у тела, отсчёт в радиации края карты,
пурпурный фильтр зрения (necrovision). Утром змея развеивается.
Чёрный разрыв (NecroBurst.cs): клон частиц confetti в чёрном, команда
necroburst. Проверено в игре 28.09.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ModInfo 1.5.0. README (обе половины), описание для сайта и для Nexus: мод для 3.3,
для игры 3.2 остаётся 1.4.2; Нож метит Жертву и с одного удара; красный труп
открывается как ящик, без мешка. Тексты для Nexus: NEXUS_FILE_SUMMARY_1.5.0.txt
(<=255 знаков) и NEXUS_CHANGELOG_1.5.0.txt (строка = пункт).
DLL пересобраны против 3.3 из текущих исходников.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Обыск больше не превращает труп в мешок. Труп получает сумку со списком добычи zPackVictim
и открывается игровым путём (LockRequestLocal -> LootBagOpened -> окно добычи с игровым
таймером обыска). Запрет открывать мёртвых у EntityAlive снят префиксами только для таких
трупов. Открытый и не опустошённый труп лежит час, опустошённый убирается сразу.
После загрузки труп узнаётся по сохранённой сумке (баффы зомби в сейв не пишутся).
LockRequestLocal вызывается из TEPersistence (перегрузка с ReadOnlySpan не компилируется
в основном проекте). Класс EntityLootContainerVictim оставлен ради старых сейвов.
Описание ножа исправлено на всех языках, README - текущее описание.
Проверено в игре на 3.3: открытие, таймер, уборка опустошённых, восстановление после загрузки.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Метка висела на onSelfAttackedOther, которое приходит после DamageEntity; при смертельном
ударе добыча успевала разыграться без неё. Перенесена на onSelfPrimary/SecondaryActionRayHit
(до урона, как лечение ножом), с гейтом Health GT 0 - трупы больше не метятся.
Отзыв sanovskiy на Nexus. Проверено в игре на 3.3: три убийства с одного удара дали «Жертву».
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Пирамида: StreamModeWrite/Read теперь глобальные перечисления (в 3.2 были внутри TileEntity).
- Хранилище: Bag поверх ItemStackGrid (конструктор с местом хранения, Resize, ItemGrid),
запись и чтение через PooledBinaryWriter/Reader. Формат хранилища 2; формат 1 из сейвов 3.2
читается. Незнакомый номер формата больше не считается «хранилища нет» - байты сохраняются.
- Сфера на браслете: ModificationCount/GetModification/SetModification.
- Непустой сундук: TEFeatureStorage.IsEmpty (ITileEntityLootable в 3.3 нет).
- Поиск ножа в инвентаре через ItemGrid.
- GameVersionGuard пускает только 3.3.
Проверено в игре на V 3.3.0 b14: хранилище из сейва 3.2 (24 стопки) прочиталось, сохранилось
и перечиталось; Пирамида включается; «Жертва», обыск трупа и мешки работают.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Повод: 1.4.1 на игре 3.3.0 experimental не смогла прочитать Пространственное
хранилище (Bag переписан) и при сохранении записала пустой маркер - вещи
пропали навсегда.
GameVersionGuard: версия из Constants.cVersionInformation (не из const
cVersionMinor - та вшивается в DLL), поддерживается Major 3 и Minor/10 == 2,
то есть любая 3.2.x. На другой версии в главном меню окно «мод несовместим,
обновите» с единственной кнопкой «Выйти из игры» (решение пользователя), а
вместо PatchAll ставятся по отдельности только окно и четыре патча
сохранения хранилища. Всё, чем пользуется защита, сверено с декомпиляцией 3.3.
Хранилище: непрочитанные байты (чужая версия или упавший разбор) проходят
Read -> ToPlayer -> FromPlayer -> Write нетронутыми, ключ - entityId, сброс
при открытии главного меню (последнее сохранение игрока делается раньше,
внутри SaveAndCleanupWorld - проверено по коду игры). Пока байты не
прочитаны, хранилище не открывается и не пополняется, с подсказкой.
Проверено в игре на 3.2 через отладочные файлы FORCE_VAULT_UNREAD и
FORCE_VERSION_GUARD (в .gitignore, в архив не попадают): 603 байта
хранилища прошли сохранение и прочитались обратно совпадающими с исходными
(26 ячеек, 24 предмета); окно появляется, Esc его не закрывает, кнопка
закрывает игру. На настоящей 3.3 не проверено.
Localization: 4 новых ключа на 13 языках, всего 165; README - статус и
число ключей (было 149).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Было: CorpseLootPatch перекрашивал труп через renderer.materials и Tint(),
и ничего за собой не убирал. Копии материалов Unity с объектом не удаляет,
перекрашенная текстура была несжатой RGBA32 (16-64 МБ) и читаемой (копия
ещё и в RAM), кеш только рос. Лог игры: Texture.currentTextureMemory
1,2 -> 7,4 ГБ за два часа при desired ~3,5 ГБ, FPS 60 -> 11. Те же жалобы
на Nexus (sanovskiy, Kriloko, Megaladon43).
Стало: каждый перекрашенный труп записан (рендереры, материалы, текстуры),
тик раз в секунду удаляет всё за трупом, которого нет в мире, текстура
удаляется со счётчиком пользователей. Текстура не больше 1024, DXT,
makeNoLongerReadable. Проверено в игре: обыск и истечение срока доводят
счёт до «трупов 0, текстур 0».
Необысканный труп лежит 300 с вместо 3600 (указание пользователя).
buffNecroZombieKillTrackerDisplay: update_rate .1 -> 1 (отзыв zomb1);
урон ножа растёт после убийства, проверено.
Документы: версия 1.4.1, README (статус + несовместимость с 3.3
experimental), описания Nexus и сайта (пять минут вместо часа),
NEXUS_CHANGELOG/FILE_SUMMARY_1.4.1.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Пользователь проверил: поднятая и заново поставленная кровать становится точкой
возрождения, финальный вид ножа (гарда над кулаком, светящиеся руны) и иконки на месте.
README (обе половины): кровати перенесены в проверенное, во врезке из новшеств 1.4.0
осталось только поведение питомцев в кровавую луну и на транспорте. Changelog: «should
become ... Not tested in game yet» -> утверждение.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>