Меловая доска игрока: рецепт, записи в обычной игре

Отдельный блок necroChalkboardPlayer (модель и надпись сюжетной доски):
крафт с начала игры - краска 2, дерево 8, гвозди 4, волокна 3, кости 2;
писать можно в обычной игре, записи свои у каждой доски; можно подобрать.
Сюжетная necroChalkboard (чертоги) по-прежнему пишется только модом.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
AlexCube
2026-10-10 14:04:48 +03:00
co-authored by Claude Opus 5.5
parent 197df1d307
commit 3780a69d93
4 changed files with 49 additions and 3 deletions
+19 -3
View File
@@ -13,11 +13,27 @@ namespace NecromancerTome
/// </summary>
public static class Chalkboard
{
/// <summary>Сюжетная доска (чертоги, локации): пишет мод или автор префаба.</summary>
public const string BlockName = "necroChalkboard";
/// <summary>Доска игрока (10.10): крафтится, пишется в обычной игре - записи свои у каждой доски.</summary>
public const string PlayerBlockName = "necroChalkboardPlayer";
static string NameOf(TEFeatureSignable _sign)
{
return _sign?.Parent?.TeData?.Block?.GetBlockName();
}
/// <summary>Любая из досок - для материала надписи.</summary>
public static bool Is(TEFeatureSignable _sign)
{
return _sign?.Parent?.TeData?.Block != null && _sign.Parent.TeData.Block.GetBlockName() == BlockName;
string n = NameOf(_sign);
return n == BlockName || n == PlayerBlockName;
}
/// <summary>Сюжетная доска - писать только в редакторе, творческом режиме, отладке.</summary>
public static bool IsLocked(TEFeatureSignable _sign)
{
return NameOf(_sign) == BlockName && !CanWrite();
}
/// <summary>Кто может писать: редактор префабов, творческий режим, отладка.</summary>
@@ -85,7 +101,7 @@ namespace NecromancerTome
public static void Postfix(TEFeatureSignable __instance, ITileEntityFeature _module, ReadOnlySpan<char> _commandName, ref bool __result)
{
if (__result && __instance.Equals(_module) && _commandName.SequenceEqual("edit".AsSpan()) &&
Chalkboard.Is(__instance) && !Chalkboard.CanWrite())
Chalkboard.IsLocked(__instance))
{
__result = false;
}
@@ -97,7 +113,7 @@ namespace NecromancerTome
{
public static void Postfix(TEFeatureSignable __instance, ref string __result)
{
if (Chalkboard.Is(__instance) && !Chalkboard.CanWrite())
if (Chalkboard.IsLocked(__instance))
{
__result = null;
}