Пирамида отрицания: своя костяная модель, новое имя, иконка

- модель: ступени из костей, черепа с тлеющими глазницами, костяная ось насквозь,
  наверху цветок из рваной плоти на коротком шипастом стебле из скрученных жил,
  в нём фиолетовый кристалл; бандл necroward (копия префаба оссуария)
- блок на Shape="ModelEntity" как оссуарий; шейдер и теги коллайдера ставит
  GeoOssuaryPatch (теперь для обоих префабов); свой коллайдер-коробка
- «Пирамида духов» переименована в «Пирамиду отрицания» (13 языков, и в описаниях);
  внутреннее имя блока прежнее - уже поставленные пирамиды в сейвах сохранятся
- иконка - рендер модели

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
AlexCube
2026-10-01 17:08:52 +03:00
co-authored by Claude Opus 5.5
parent 0dcb449f25
commit 20ee89323d
8 changed files with 15 additions and 8 deletions
File diff suppressed because one or more lines are too long
+7 -2
View File
@@ -80,10 +80,15 @@
_private/tools/make_pyramid_textures.py, сборка _private/Extracted/ShapesUnityProject,
бандл Resources/necropyramid. Чтобы вернуться к нему, достаточно заменить Shape на
ModelEntity и раскомментировать строку Model ниже. -->
<property name="Shape" value="New" />
<!-- СВОЯ КОСТЯНАЯ МОДЕЛЬ, 01.10.2026 («пирамида отрицания»): ступени из костей, черепа с
тлеющими глазницами, ось насквозь, наверху цветок из рваной плоти на шипастом стебле
из жил, в нём кристалл. Путь тот же, что у гео-оссуария (там он отлажен): ModelEntity,
префаб - копия оссуария (бандл necroward), шейдер и теги коллайдера ставит
GeoOssuaryPatch по ванильному коллектору росы. Свой коллайдер-коробка 0.95x0.5x0.95. -->
<property name="Shape" value="ModelEntity" />
<!-- Своя модель отключена вместе с возвратом на Shape="New" (см. комментарий выше).
Строка сохранена: она рабочая, ею подключается наш бандл. -->
<property name="Model" value="@:Shapes/pyramid.fbx" />
<property name="Model" value="#@modfolder(NecromancerTome):Resources/necroward?necroWardPrefab.prefab" />
<!-- <property name="Model" value="#@modfolder(NecromancerTome):Resources/necropyramid?necroPyramidPrefab.prefab" /> -->
<!-- ModelOffset - ПОЛОЖЕНИЕ МОДЕЛИ, и задавать его надо именно здесь.
+6 -4
View File
@@ -139,15 +139,17 @@ namespace NecromancerTome
[HarmonyPatch(typeof(BlockShapeModelEntity), nameof(BlockShapeModelEntity.getPrefab))]
public static class Patch_BlockShapeModelEntity_getPrefab_GeoOssuaryShader
{
const string ModelName = "necroOssuaryPrefab";
const string VanillaModel = "@:Entities/Furniture/collectorDewPrefab.prefab";
static bool done;
// Пирамида отрицания (01.10) собрана из копии префаба оссуария - те же имена объектов,
// тот же запасной шейдер, поэтому лечится тем же постфиксом.
static readonly System.Collections.Generic.HashSet<string> models =
new System.Collections.Generic.HashSet<string> { "necroOssuaryPrefab", "necroWardPrefab" };
static readonly System.Collections.Generic.HashSet<string> done = new System.Collections.Generic.HashSet<string>();
public static void Postfix(Transform __result)
{
if (done || __result == null || __result.name != ModelName)
if (__result == null || !models.Contains(__result.name) || !done.Add(__result.name))
return;
done = true;
Transform vanilla = DataLoader.LoadAsset<Transform>(VanillaModel);
Renderer src = vanilla != null ? vanilla.GetComponentInChildren<Renderer>(true) : null;
Shader shader = src != null && src.sharedMaterial != null ? src.sharedMaterial.shader : null;
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 23 KiB