Меловая доска игрока: рецепт, записи в обычной игре
Отдельный блок necroChalkboardPlayer (модель и надпись сюжетной доски): крафт с начала игры - краска 2, дерево 8, гвозди 4, волокна 3, кости 2; писать можно в обычной игре, записи свои у каждой доски; можно подобрать. Сюжетная necroChalkboard (чертоги) по-прежнему пишется только модом. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
197df1d307
commit
3780a69d93
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user