Пирамида отрицания: своя костяная модель, новое имя, иконка
- модель: ступени из костей, черепа с тлеющими глазницами, костяная ось насквозь, наверху цветок из рваной плоти на коротком шипастом стебле из скрученных жил, в нём фиолетовый кристалл; бандл necroward (копия префаба оссуария) - блок на Shape="ModelEntity" как оссуарий; шейдер и теги коллайдера ставит GeoOssuaryPatch (теперь для обоих префабов); свой коллайдер-коробка - «Пирамида духов» переименована в «Пирамиду отрицания» (13 языков, и в описаниях); внутреннее имя блока прежнее - уже поставленные пирамиды в сейвах сохранятся - иконка - рендер модели Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
0dcb449f25
commit
20ee89323d
File diff suppressed because one or more lines are too long
+7
-2
@@ -80,10 +80,15 @@
|
|||||||
_private/tools/make_pyramid_textures.py, сборка _private/Extracted/ShapesUnityProject,
|
_private/tools/make_pyramid_textures.py, сборка _private/Extracted/ShapesUnityProject,
|
||||||
бандл Resources/necropyramid. Чтобы вернуться к нему, достаточно заменить Shape на
|
бандл Resources/necropyramid. Чтобы вернуться к нему, достаточно заменить Shape на
|
||||||
ModelEntity и раскомментировать строку Model ниже. -->
|
ModelEntity и раскомментировать строку Model ниже. -->
|
||||||
<property name="Shape" value="New" />
|
<!-- СВОЯ КОСТЯНАЯ МОДЕЛЬ, 01.10.2026 («пирамида отрицания»): ступени из костей, черепа с
|
||||||
|
тлеющими глазницами, ось насквозь, наверху цветок из рваной плоти на шипастом стебле
|
||||||
|
из жил, в нём кристалл. Путь тот же, что у гео-оссуария (там он отлажен): ModelEntity,
|
||||||
|
префаб - копия оссуария (бандл necroward), шейдер и теги коллайдера ставит
|
||||||
|
GeoOssuaryPatch по ванильному коллектору росы. Свой коллайдер-коробка 0.95x0.5x0.95. -->
|
||||||
|
<property name="Shape" value="ModelEntity" />
|
||||||
<!-- Своя модель отключена вместе с возвратом на Shape="New" (см. комментарий выше).
|
<!-- Своя модель отключена вместе с возвратом на 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" /> -->
|
<!-- <property name="Model" value="#@modfolder(NecromancerTome):Resources/necropyramid?necroPyramidPrefab.prefab" /> -->
|
||||||
<!-- ModelOffset - ПОЛОЖЕНИЕ МОДЕЛИ, и задавать его надо именно здесь.
|
<!-- ModelOffset - ПОЛОЖЕНИЕ МОДЕЛИ, и задавать его надо именно здесь.
|
||||||
|
|
||||||
|
|||||||
@@ -139,15 +139,17 @@ namespace NecromancerTome
|
|||||||
[HarmonyPatch(typeof(BlockShapeModelEntity), nameof(BlockShapeModelEntity.getPrefab))]
|
[HarmonyPatch(typeof(BlockShapeModelEntity), nameof(BlockShapeModelEntity.getPrefab))]
|
||||||
public static class Patch_BlockShapeModelEntity_getPrefab_GeoOssuaryShader
|
public static class Patch_BlockShapeModelEntity_getPrefab_GeoOssuaryShader
|
||||||
{
|
{
|
||||||
const string ModelName = "necroOssuaryPrefab";
|
|
||||||
const string VanillaModel = "@:Entities/Furniture/collectorDewPrefab.prefab";
|
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)
|
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;
|
return;
|
||||||
done = true;
|
|
||||||
Transform vanilla = DataLoader.LoadAsset<Transform>(VanillaModel);
|
Transform vanilla = DataLoader.LoadAsset<Transform>(VanillaModel);
|
||||||
Renderer src = vanilla != null ? vanilla.GetComponentInChildren<Renderer>(true) : null;
|
Renderer src = vanilla != null ? vanilla.GetComponentInChildren<Renderer>(true) : null;
|
||||||
Shader shader = src != null && src.sharedMaterial != null ? src.sharedMaterial.shader : 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 |
Reference in New Issue
Block a user