Commit Graph
92 Commits
Author SHA1 Message Date
AlexCubeandClaude Opus 5.5 f47dcb11c2 Чистая вода в банке: непрозрачная, нарисованная (как кровь) - тёмная сине-зелёная толща с проступающим дном
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 15:26:38 +03:00
AlexCubeandClaude Opus 5.5 ae4129367d Банки: диаметр x0.88, выше на 2 см; чистая вода - режим Fade, прозрачность 0.35
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 13:34:39 +03:00
AlexCubeandClaude Opus 5.5 eef2f59f09 Банки: размер как у ванильной консервы (хват руки), вода - Standard Specular с текстурой цвета
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 13:24:15 +03:00
AlexCubeandClaude Opus 5.5 9c0953e966 Банки с водой: вода матовее и темнее, без отражения неба (была белой)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 13:20:35 +03:00
AlexCubeandClaude Opus 5.5 d7a43318ff Испытания: названия - Кровавый запас, Фараон на минималках, Кровь за кровь земли
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 13:12:38 +03:00
AlexCubeandClaude Opus 5.5 934bc3c7f5 Испытания некромантии: 7 новых (скакун, оссуарий, сферы, камень, свиток крысы, браслет, пирамида)
- Всадник на костях: создать Костяного скакуна (2500)
- Недра платят кровью: поставить Гео-оссуарий (2000)
- Запас крови: создать 10 кровавых сфер (1000)
- Кровь, ставшая камнем: создать Кровавый камень (2500)
- Крысиный король: создать Свиток духа крысы (1000)
- Карман в пустоте: создать Пространственный браслет (2000)
- Ересь: поставить Пирамиду духов (2000)
Тексты на 13 языках.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 13:10:30 +03:00
AlexCubeandClaude Opus 5.5 fa9c5e619d Банки с мутной и кипячёной водой: свои модели с водой внутри
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 13:05:36 +03:00
AlexCubeandClaude Opus 5.5 12a5559315 Пустая консервная банка: своя модель без крышки (бандл necrocan)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 13:02:18 +03:00
AlexCubeandClaude Opus 5.5 7f1f61fe40 Книги собаки и стервятника: свои модели, обложки из референсов, новые иконки
- Префабы necroBookDogPrefab и necroBookVulturePrefab в бандле necrobooks: модель
  книги крысы, свои текстуры - рисунки z-dog и z-bird, кожа в тон шкуре зомбопса
  (серо-бурая) и перьям зомбостервятника (красно-бурая).
- bookSummonZombieDog и bookSummonZombieGriffin переведены на них, тинт снят.
- Иконки SummonZombieDog и SummonZombieGriffin - рендер моделей, как у книги крысы.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:56:39 +03:00
AlexCubeandClaude Opus 5.5 4973ac2242 Книга крысы: новая иконка - рендер модели с обложкой z-rat
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:51:32 +03:00
AlexCubeandClaude Opus 5.5 677056eaa3 Книга крысы: рисунок обложки из референса z-rat (череп крысы в рунном круге)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:49:31 +03:00
AlexCubeandClaude Opus 5.5 de5a6a22a7 Скакун: глазница гаснет вместе с фарой
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:29:54 +03:00
AlexCubeandClaude Opus 5.5 9bf3c06e6b Скакун: выключен ванильный ореол фары (розовый квадрат - материал без шейдера)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:28:03 +03:00
AlexCubeandClaude Opus 5.5 0ebf529d49 Сборка DLL: шифт-клик сфер в скакуна
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:21:28 +03:00
AlexCubeandClaude Opus 5.5 dec5d9851d Скакун: сфера и камень ставятся шифт-кликом
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:18:39 +03:00
AlexCubeandClaude Opus 5.5 d35b77be1b Кровавый камень - вечное топливо скакуна и оссуария; сферы чинятся пакетом крови
- Камень в любой ячейке скакуна - вечно полный бак, сферы рядом не тратятся.
- Камень в отсеке топлива гео-оссуария - работает вечно (FuelTypes + removeFuel).
- Кровавая сфера чинится пакетом крови: 250 прочности за пакет (2 пакета - полная).
- Описания сферы, камня, оссуария и скакуна дополнены (13 языков); в описании
  скакуна по-корейски и по-китайски название сферы приведено к принятому в моде.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:10:41 +03:00
AlexCubeandClaude Opus 5.5 a6e3f12eb4 Книга крысы: ещё x0.9
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:09:40 +03:00
AlexCubeandClaude Opus 5.5 427d139cad Книга крысы: ещё x0.9
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:02:45 +03:00
AlexCubeandClaude Opus 5.5 65421be787 Книга крысы: развёрнута корешком к игроку, корешок на месте ванильного среза страниц
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:01:04 +03:00
AlexCubeandClaude Opus 5.5 dbc43b5952 Книга крысы: уменьшена до 0.84 (длина как у ванильной), срез страниц и низ - по ванильной
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 12:00:15 +03:00
AlexCubeandClaude Opus 5.5 5cf66b3597 Скакун: гудок - вопль умирающей зомби-собаки
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 11:49:40 +03:00
AlexCubeandClaude Opus 5.5 1debf47717 Скакун: без стука педалей - слышны только колёса, как у мотоцикла с пустым баком
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 11:48:13 +03:00
AlexCubeandClaude Opus 5.5 f1c1e61e8d Скакун: без крови не заводится, звук велосипеда, без дыма
- Мотор не заводится без сфер и глохнет, когда кровь кончилась (ваниль заводила
  его и с пустым баком - ехал на полной тяге); вставили сферу в седле - заводится.
- Звуки мотора у скакуна молчат; на ходу - стук педалей bicycle_pedal,
  гудок и колёса - велосипедные.
- Частицы дыма/огня убраны (розовые кубы - ванильные частицы без материалов).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 11:47:42 +03:00
AlexCubeandClaude Opus 5.5 7b315cda6b Скакун: без слота покраски (краситель размножался)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 11:32:01 +03:00
AlexCubeandClaude Opus 5.5 3cd5706e7f Скакун: рога по оси ванильной рукоятки, кончики загнуты за кулаком
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 11:30:06 +03:00
AlexCubeandClaude Opus 5.5 7d4ff86dee Сборка DLL: расход сфер скакуна
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 11:29:15 +03:00
AlexCubeandClaude Opus 5.5 7496aa0944 Скакун: расход сфер только событием двигателя, прямые записи бака не сжигают сферу
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 11:26:57 +03:00
AlexCubeandClaude Opus 5.5 83b1cc47ce Скакун: выключены ванильные детали модов мотоцикла (выхлоп и др.), их меши убраны из бандла
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 11:18:00 +03:00
AlexCubeandClaude Opus 5.5 5dc1ce0e26 Книга крысы: передний срез страниц на уровне ванильной книги, лишняя ширина - к корешку
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 11:16:16 +03:00
AlexCubeandClaude Opus 5.5 c73502ad51 Сборка DLL: ячейки скакуна, кнopка заправки
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 11:15:42 +03:00
AlexCubeandClaude Opus 5.5 4ef7aac01f Скакун: 4 ячейки и старому предмету, кнопка «Заправить» выключена
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 11:13:21 +03:00
AlexCubeandClaude Opus 5.5 24d6e9f675 1.7.0: скакун на сферах в ячейках, ремонт костями; правки моделей скакуна и книги крысы
- Топливо скакуна - кровавые сферы в 4 ячейках модификаций, тратятся по очереди
  (одна сфера = 120 ед., бак 480); уровень бака считается по прочности сфер,
  выработанная сфера исчезает. Заправка канистрой убрана. В ячейки - только сферы.
- Причина «не едет» и «-2147483648%»: Extends не наследует effect_group, у предмета
  скакуна не было ни ячеек, ни прочности. Своя группа: ModSlots 4, DegradationMax 4000;
  здоровье закреплено кодом (DegradationMax сфер в ячейках его перебивал бы).
- Ремонт - 50 костей за ход вместо ремкомплекта; подсказка при нехватке, 13 языков.
- Модель скакуна: сиденье и рама прогнуты по ванили, рога по оси руля,
  череп меньше и короче, свет фары в глазнице, крыло над передним колесом,
  зубы под черепом убраны.
- Книга крысы: повёрнута как ванильная (палец на корешке), без металлических уголков.

В игре не проверено.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 10:51:03 +03:00
AlexCubeandClaude Opus 5.5 11db1116b0 1.7.0: костяной скакун, книга Духа крысы, турели, расход сфер в оссуарии
- Костяной скакун (necroBoneSteed): мотоцикл из костей, сухожилий и сосудов
  с черепом-циклопом вместо фары; своя модель (бандл necrobonesteed),
  ванильная система предмета-транспорта (necroBoneSteedPlaceable, предпросмотр
  при установке); топливо - кровавая сфера, одна сфера = полный бак; теги
  коллайдеров и шейдер копируются с ванильного мотоцикла; рецепт на верстаке,
  Подмастерье
- Книга Духа крысы: своя модель (бандл necrobooks) - чёрная кожа, светящийся
  узор со скелетом крысы и семиконечной звездой, ржавые уголки, ремешок
- Турели не стреляют по существам мода (питомцы, рой, змея)
- Гео-оссуарий тратит 1/10 прочности сферы на стак вместо целой сферы

В игре не проверено.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 01:58:18 +03:00
AlexCubeandClaude Opus 5.5 f2dfeed126 1.7.0: охрана питомцами, один питомец за раз, прицел книг, гео-оссуарий
Питомцы:
- охрана хозяина: враг ближе 20 м (в режиме змеи - к телу) атакуется сам,
  поводок 40 м, охраняют все кроме крысы; приказ прицелом охрана не перебивает
- IsFoe исключает существ мода (necro*): питомец выбирал целью себя
- призыв нового спутника отзывает прежнего
- прицел книг призыва - как у арбалета, краснеет на годной цели

Гео-оссуарий (necroGeoOssuary): станция добычи на кровавой сфере
- основа - коллектор росы; в 3 ячейки модов любой из 5 ресурсов
  (камень, уголь, селитра, железо, сланец), 1 сфера = стак 6000 за 5-8 ч
- работает без открытого неба; верстак, Подмастерье (ур. 25)
- своя модель (бандл necroossuary): кости, корни, сосуды, клыки, черепа
  с глазами-углями; шейдер и теги коллайдера берутся у ванильного коллектора

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 00:36:45 +03:00
AlexCubeandClaude Opus 5.5 b737dd43d0 Режим змеи: выход по R только когда тело уже лежит
В первые RagdollDelay секунд после входа игра ещё обрабатывает ввод:
можно было взять ствол, и R разом перезаряжало его и выводило из змеи.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 09:05:31 +03:00
AlexCubeandClaude Opus 5.5 888cf1ee7e FPS: утечка привязки cvar() в шкале некромантии; пирамида при качестве текстур ниже Full
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>
2026-09-29 00:11:59 +03:00
AlexCubeandClaude Opus 5.5 048307eda8 Призрачные торговцы: серые текстуры 1024 и сжатые, выгрузка из ОЗУ
Серые копии были 4096x4096 RGBA32 без сжатия (64 МБ видеопамяти каждая плюс CPU-копия) - на стриме 28.09 это добавило к переполнению 8 ГБ видеокарты. Теперь как в CorpseLoot: уменьшение до MaxTintSize, Compress, Apply(makeNoLongerReadable). При выходе из мира копии уничтожаются, а не просто забываются.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 20:52:36 +03:00
AlexCubeandClaude Opus 5.5 4b54b48d68 Описания: мультиплеер не поддерживается полностью
Вместо «Everything else works» - честно: мод изначально под одиночную
игру, переделывает механики игры (трупы, добыча, поведение зомби), и в
мультиплеере часть вещей может не работать, например трупы «Жертвы».
README (RU/EN), сайт (RU/EN), описание Nexus.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 17:06:59 +03:00
AlexCubeandClaude Opus 5.5 e71f1aef35 Режим змеи: ноль опыта за убийства змеёй
Префикс EntityPlayer.AddKillXP пропускает начисление опыта для жертв
змеи. Некромантия и урон ножа растут как прежде: их счёт - постфикс на
том же методе, Harmony вызывает его и при отменённом оригинале.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 16:56:19 +03:00
AlexCubeandClaude Opus 5.5 6ff76d174e Режим змеи для Ножа некроманта и чёрный разрыв
Ночью по R с ножом - дух змеи: тело падает (-95% HP), игрок управляет
призрачной змеёй от первого лица. Свободный ход по миру (свой наблюдатель
чанков, отрисовка, звук, спавн и спящие считаются от змеи), прыжок,
атака на ЛКМ - рывок сквозь препятствия и чёрный разрыв, ПКМ - выбраться
из текстур. Тёмное чутьё, тревога у тела, отсчёт в радиации края карты,
пурпурный фильтр зрения (necrovision). Утром змея развеивается.

Чёрный разрыв (NecroBurst.cs): клон частиц confetti в чёрном, команда
necroburst. Проверено в игре 28.09.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 15:31:37 +03:00
AlexCubeandClaude Opus 5.5 4cdd315b98 1.5.0: сборка под игру 3.3, документы релиза
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>
2026-09-28 10:12:51 +03:00
AlexCubeandClaude Opus 5.5 e25544521d Труп «Жертвы» открывается сам, как ящик: без мешка
Обыск больше не превращает труп в мешок. Труп получает сумку со списком добычи zPackVictim
и открывается игровым путём (LockRequestLocal -> LootBagOpened -> окно добычи с игровым
таймером обыска). Запрет открывать мёртвых у EntityAlive снят префиксами только для таких
трупов. Открытый и не опустошённый труп лежит час, опустошённый убирается сразу.
После загрузки труп узнаётся по сохранённой сумке (баффы зомби в сейв не пишутся).
LockRequestLocal вызывается из TEPersistence (перегрузка с ReadOnlySpan не компилируется
в основном проекте). Класс EntityLootContainerVictim оставлен ради старых сейвов.
Описание ножа исправлено на всех языках, README - текущее описание.

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

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 19:33:52 +03:00
AlexCubeandClaude Opus 5.5 1c2e3f2cdf Метка «Жертвы» вешается до урона: работает и при убийстве с одного удара
Метка висела на onSelfAttackedOther, которое приходит после DamageEntity; при смертельном
ударе добыча успевала разыграться без неё. Перенесена на onSelfPrimary/SecondaryActionRayHit
(до урона, как лечение ножом), с гейтом Health GT 0 - трупы больше не метятся.
Отзыв sanovskiy на Nexus. Проверено в игре на 3.3: три убийства с одного удара дали «Жертву».

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 17:54:07 +03:00
AlexCubeandClaude Opus 5.5 e8e21d5a58 Сборка под игру 3.3: хранилище, Пирамида, проверка версии
- Пирамида: 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>
2026-09-26 17:44:11 +03:00
AlexCubeandClaude Opus 5.5 f4470b784f 1.4.2: проверка версии игры и хранилище, которое не стирается
Повод: 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>
2026-09-25 00:09:01 +03:00
AlexCubeandClaude Opus 5.5 77b56be9ae 1.4.1: утечка видеопамяти от трупов «Жертвы», труп лежит 5 минут
Было: 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>
2026-09-24 23:36:51 +03:00
AlexCubeandClaude Opus 5 67dd410358 1.4.0: кровати и нож проверены в игре - снята пометка «не проверено»
Пользователь проверил: поднятая и заново поставленная кровать становится точкой
возрождения, финальный вид ножа (гарда над кулаком, светящиеся руны) и иконки на месте.
README (обе половины): кровати перенесены в проверенное, во врезке из новшеств 1.4.0
осталось только поведение питомцев в кровавую луну и на транспорте. Changelog: «should
become ... Not tested in game yet» -> утверждение.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-22 00:01:58 +03:00
AlexCubeandClaude Opus 5 01aa054177 1.4.0: своя модель Ножа некроманта, иконки ножа и Свитка духа крысы, документы релиза
НОЖ ПОЛУЧИЛ СВОЮ ФОРМУ. До сих пор в бандле necroknife стояла ванильная геометрия
костяной заточки с нашей текстурой - на Nexus это заметили (Scarlettdruid: нож не похож
на свою иконку). Форма сделана в Blender поверх ванильного меша: головка и шейка бедра
срезаны, срез закрыт; лезвие выпрямлено в ампутационный нож с клиновым сечением;
костяная гарда стоит над кулаком (место выбрано по игре: девятый виток обмотки от
прежней гарды); рукоять обмотана верёвкой. Весь нож повёрнут на 180° вокруг оси -
режущая кромка смотрела не в ту сторону, "получается, что я обухом режу". Поворот, а
не зеркало: так руны на клинке не отражаются.

Текстура осталась от ножа некроманта. Верёвка нарисована в свободном углу её же атласа
(второй материал импорт в Unity отбрасывает), старые руны заменены светящимися
рублеными знаками, одинаковыми на обеих сторонах клинка. Меш 2823 вершины / 4360
треугольников. Сама цепочка сборки (скрипты Blender и сборки текстур) - в _private,
в репозиторий не входит.

ИКОНКИ нарисованы пользователем: NecromancersKnife.png - под новую модель, RatBook.png -
первая своя у Свитка духа крысы. У свитка снят CustomIconTint: он множится на иконку
и гасил бы нарисованные цвета, он был нужен только перекрашенной волчьей иконке.

ДОКУМЕНТЫ. README (обе половины), SITE_DESCRIPTION.html, NEXUS_DESCRIPTION.bbcode:
версия 1.4.0, новый вид ножа, добыча Жертвы в самом трупе (краснеет, лежит час, при
обыске оставляет мешок - проверено в игре), подбор кроватей-точек возрождения (в игре
НЕ проверено, так и написано). В "Статусе" - абзац 1.4.0 и напоминание о шкале 1.3.0:
на Nexus 21.09 игрок принял уровень "1 из 250" за застывший счётчик и решил, что
прогресс сбросился - уровень растёт раз в 20 убийств, а с 1.0.1 он пересчитывается и
становится в 20 раз меньше.

Тексты для Nexus в принятых сайтом форматах: NEXUS_FILE_SUMMARY_1.4.0.txt (254 знака
из 255) и NEXUS_CHANGELOG_1.4.0.txt (20 строк = 20 пунктов, без номера версии в начале).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-21 23:57:18 +03:00
AlexCubeandClaude Opus 5 98ddcd7bce Добыча «Жертвы» переехала в сам труп: он красится, лежит час и обыскивается
Указание: «зомби после упокоения оставляет свой труп. Можем ли мы подменять
этот труп точно таким же, но с другой текстурой и с функцией мешка жертвы?»

ПОДМЕНЯТЬ НЕ ПРИШЛОСЬ НИЧЕГО. Труп - не отдельная модель, а та же скелетная
модель зомби в позе смерти, так что «такой же, но другой текстуры» делается
перекраской уже лежащего трупа. Ни нового префаба, ни новой сущности.

Три части, каждая на своём ванильном механизме:

  НЕ ИСЧЕЗАЕТ. EntityAlive.timeStayAfterDeath - обычное публичное поле в тиках,
  у зомби 30 секунд, у ванильного мешка 3600. Пишем второе.

  ОБЫСКИВАЕТСЯ. У сущностей своя система команд, отдельная от блочной:
  InitLocalActivationCommands / AllowActivationCommand / OnEntityActivated.
  Объявляем ту же команду "search", что и ванильный мешок (EntityItem), поэтому
  подпись достаётся готовой и локализованной. Список команд кешируется при
  первом обращении - пока зомби жив, - поэтому на смерти он обнуляется.

  ВНУТРИ ЛУТ. Обход сознательный: хранилище живёт внутри EntityLootContainer
  вместе со своим сейвом и сетевой синхронизацией, и приделывать это трупу
  значит трогать сейвы. Поэтому обыск ПРЕВРАЩАЕТ труп в мешок «Жертва».

ПЕРЕКРАСКА ЧЕРЕЗ ТЕКСТУРУ, А НЕ ЧЕРЕЗ _Color. Первая версия не работала вовсе:
у шейдеров Game/Character и Game/Animal/Fur свойства цвета НЕТ (видно в пробе,
которую печатает GhostTraderPatch: "tint property: <none>"). Красится сама
текстура - прогоном через RenderTexture, как обесцвечиваются торговцы, только
вместо сведения к яркости умножение на цвет. Результат кешируется по исходной
текстуре. Если модель на кадре смерти не собрана, труп встаёт в очередь и
докрашивается односекундным тиком.

ПОДСКАЗКА ПРИ НАВЕДЕНИИ - отдельный механизм, и сначала я настроил не тот.
Иконка EntityActivationCommand рисуется в РАДИАЛЬНОМ меню, то есть на зажатии.
А то, что видно при простом наведении, приходит из Entity.GetActivationText(),
и у EntityAlive он для существа возвращает пустую строку. Теперь возвращает то
же, что ванильный лутаемый объект: строку lootTooltipNew со значком клавиши из
разметки [action:...]. Имя берётся у зомби, так что читается «обыскать Арлин».

ОБЫСК НЕ МГНОВЕННЫЙ: три секунды с круговым индикатором (XUiC_Timer, тот же,
что при снятии верстака). Поле activateTime у команды не подошло - по нему игра
дёргает игровое событие из entity_class, а не наш код.

Обычный мешок это не отменяет: бросок вероятности остался как был, и теперь он
печатается в лог целиком (шанс против броска) - чтобы «не повезло» отличалось
от «сломано» без гадания. У ванильного зомби шанс 4%, то есть ноль мешков на
два десятка убийств - исход с вероятностью около 40%.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 23:23:15 +03:00
AlexCubeandClaude Opus 5 b6a892cadd Подбор кроватей: включены те, что становятся точкой возрождения
Исправление промаха по цели. Кровати класса SleepingBag (bed02*, bunkBed*) были
исключены из подбора НАМЕРЕННО, с формулировкой "это respawn-anchor блоки, не
декорация, трогать не просил" - и подбирались только декоративные
bedMadeNoFrame*/bedMessyNoFrame*.

Пользователь объяснил, что смысл подбора кроватей ровно обратный: "поглощённые
блоки сохраняют состояние, которое было до поглощения. Кровати до поглощения не
являются точкой возрождения. Точкой возрождения они могли бы стать при подборе".
То есть мы подбирали ровно те кровати, которые не нужны, и не подбирали те, ради
которых всё затевалось.

Проверено декомпиляцией BlockSleepingBag: PlaceBlock ставит игроку
selectedSpawnPointKey и запоминает BedrollPos - поставленная своими руками
кровать действительно становится точкой возрождения, а стоящая в POI нет.
Значит подбор и поглощение браслетом решают РАЗНЫЕ задачи.

Новых патчей не понадобилось, и это проверялось до правки: BlockSleepingBag
переопределяет только CanPlaceBlockAt, PlaceBlock, GetActivationText и
ЧЕТЫРЁХаргументный OnBlockActivated. Наши три патча висят на
HasBlockActivationCommands, GetBlockActivationCommands и ПЯТИаргументном
OnBlockActivated - ни одного из них он не перекрывает. С BlockCompositeTileEntity
(кулеры, коробки) в своё время так не вышло и понадобился отдельный набор.

Добавлены два префикса: bed02 и bunkBed. Полсотни цветовых вариантов наследуют
Class="SleepingBag" через Extends и покрываются ими же. bedroll НЕ включён:
собственный предмет игрока, ставится и снимается штатно, а bedrollPOI от него не
наследуется и точкой возрождения не является.

В ИГРЕ НЕ ПРОВЕРЕНО. Смотреть надо одно: становится ли поднятая и заново
поставленная кровать точкой возрождения на самом деле.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 21:21:36 +03:00