From 3780a69d9323e10a800f0a7a4096cf5dbcf38d1d Mon Sep 17 00:00:00 2001 From: AlexCube Date: Sat, 10 Oct 2026 14:04:48 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9C=D0=B5=D0=BB=D0=BE=D0=B2=D0=B0=D1=8F=20?= =?UTF-8?q?=D0=B4=D0=BE=D1=81=D0=BA=D0=B0=20=D0=B8=D0=B3=D1=80=D0=BE=D0=BA?= =?UTF-8?q?=D0=B0:=20=D1=80=D0=B5=D1=86=D0=B5=D0=BF=D1=82,=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=BF=D0=B8=D1=81=D0=B8=20=D0=B2=20=D0=BE=D0=B1=D1=8B=D1=87?= =?UTF-8?q?=D0=BD=D0=BE=D0=B9=20=D0=B8=D0=B3=D1=80=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Отдельный блок necroChalkboardPlayer (модель и надпись сюжетной доски): крафт с начала игры - краска 2, дерево 8, гвозди 4, волокна 3, кости 2; писать можно в обычной игре, записи свои у каждой доски; можно подобрать. Сюжетная necroChalkboard (чертоги) по-прежнему пишется только модом. Co-Authored-By: Claude Opus 5.5 --- Config/Localization.csv | 2 ++ Config/blocks.xml | 19 +++++++++++++++++++ Config/recipes.xml | 9 +++++++++ HarmonySrc/ChalkboardPatch.cs | 22 +++++++++++++++++++--- 4 files changed, 49 insertions(+), 3 deletions(-) diff --git a/Config/Localization.csv b/Config/Localization.csv index cab02c1..44ddb7a 100644 --- a/Config/Localization.csv +++ b/Config/Localization.csv @@ -372,6 +372,8 @@ necroPalaceBed,blocks,Block,,,,"White Bunk Bed, Made",Stackable metal framed bed necroPosterAnatomy,blocks,Block,,,,Chart: Structure of the Body,,Schautafel: Aufbau des Körpers,Lámina: estructura del cuerpo,Planche : structure du corps,Tavola: struttura del corpo,図表:身体の構造,도표: 신체의 구조,Plansza: budowa ciała,Prancha: estrutura do corpo,Схема: строение тела,Şema: Vücudun yapısı,图表:身体结构,圖表:身體結構 necroPosterKnife,blocks,Block,,,,Chart: Necromancer's Knife,,Schautafel: Messer des Nekromanten,Lámina: cuchillo del nigromante,Planche : couteau du nécromancien,Tavola: coltello del negromante,図表:ネクロマンサーのナイフ,도표: 강령술사의 단검,Plansza: nóż nekromanty,Prancha: faca do necromante,Схема: нож некроманта,Şema: Nekromantın Bıçağı,图表:亡灵法师之刃,圖表:亡靈法師之刃 necroChalkboard,blocks,Block,,,,Chalkboard,,Kreidetafel,Pizarra,Tableau noir,Lavagna,黒板,칠판,Tablica szkolna,Quadro-negro,Грифельная доска,Kara tahta,黑板,黑板 +necroChalkboardPlayer,blocks,Block,,,,Chalkboard (for notes),,Kreidetafel (für Notizen),Pizarra (para notas),Tableau noir (pour notes),Lavagna (per appunti),黒板(メモ用),칠판 (메모용),Tablica (na notatki),Quadro-negro (para anotações),Меловая доска (для записей),Kara tahta (not için),黑板(记事用),黑板(記事用) +necroChalkboardPlayerDesc,blocks,Block,,,,"A blackboard in a bone-trimmed frame. Write on it with chalk: each board keeps its own notes, like a labelled crate.",,"Eine Tafel in einem Rahmen mit Knochenbesatz. Mit Kreide beschreibbar: Jede Tafel behält ihre eigenen Notizen, wie eine beschriftete Kiste.","Una pizarra con marco adornado con huesos. Escribe en ella con tiza: cada pizarra guarda sus propias notas, como una caja rotulada.","Un tableau noir dans un cadre orné d'os. Écris dessus à la craie : chaque tableau garde ses propres notes, comme une caisse étiquetée.","Una lavagna con cornice decorata d'ossa. Scrivici col gesso: ogni lavagna conserva i propri appunti, come una cassa etichettata.",骨で飾られた枠の黒板。チョークで書き込める:ラベル付きの木箱のように、黒板ごとに自分のメモを保持する。,뼈로 장식한 틀의 칠판. 분필로 쓸 수 있다: 이름표 붙은 상자처럼 칠판마다 자기 메모를 간직한다.,"Tablica w ramie zdobionej kośćmi. Pisz na niej kredą: każda tablica przechowuje własne notatki, jak podpisana skrzynia.","Um quadro-negro com moldura enfeitada de ossos. Escreva nele com giz: cada quadro guarda suas próprias anotações, como um caixote etiquetado.","Чёрная доска в раме, отделанной костью. На ней пишут мелом: у каждой доски свои записи, как надписи на ящике.","Kemikle süslenmiş çerçeveli bir kara tahta. Üzerine tebeşirle yazılır: her tahta, etiketli bir sandık gibi kendi notlarını saklar.",骨饰边框的黑板。可以用粉笔书写:每块黑板都保存自己的笔记,就像贴了标签的箱子。,骨飾邊框的黑板。可以用粉筆書寫:每塊黑板都保存自己的筆記,就像貼了標籤的箱子。 necroPalaceBoardRevenge,blocks,Block,,,,Take revenge on the archmage!,,Räche dich am Erzmagier!,¡Véngate del archimago!,Venge-toi de l'archimage !,Vendicati dell'arcimago!,大魔導師に復讐せよ!,대마법사에게 복수하라!,Zemścij się na arcymagu!,Vingue-se do arquimago!,Отомсти архимагу!,Başbüyücüden intikam al!,向大法师复仇!,向大法師復仇! necroPalaceBoardTide,blocks,Block,,,,Careful! The lunar tide is approaching!,,Vorsicht! Die Mondflut naht!,¡Cuidado! ¡Se acerca la marea lunar!,Attention ! La marée lunaire approche !,Attenzione! Si avvicina la marea lunare!,気をつけろ!月の潮が迫っている!,조심하라! 달의 조수가 다가온다!,Uwaga! Nadchodzi księżycowy przypływ!,Cuidado! A maré lunar se aproxima!,Осторожно! Приближается лунный прилив!,Dikkat! Ay gelgiti yaklaşıyor!,小心!月潮将至!,小心!月潮將至! necroBookDoor,blocks,Block,,,,Bookshelf Door,,Bücherregaltür,Puerta-estantería,Porte-bibliothèque,Porta-libreria,本棚の扉,책장 문,Drzwi-regał,Porta-estante,Дверь-книжный шкаф,Kitaplık kapı,书架暗门,書架暗門 diff --git a/Config/blocks.xml b/Config/blocks.xml index 8a2bffe..bde00bd 100644 --- a/Config/blocks.xml +++ b/Config/blocks.xml @@ -330,6 +330,25 @@ + + + + + + + + + + + + + + + + diff --git a/Config/recipes.xml b/Config/recipes.xml index 9c59a3d..1fbd811 100644 --- a/Config/recipes.xml +++ b/Config/recipes.xml @@ -518,6 +518,15 @@ + + + + + + + + diff --git a/HarmonySrc/ChalkboardPatch.cs b/HarmonySrc/ChalkboardPatch.cs index 8cfdfa2..784f564 100644 --- a/HarmonySrc/ChalkboardPatch.cs +++ b/HarmonySrc/ChalkboardPatch.cs @@ -13,11 +13,27 @@ namespace NecromancerTome /// public static class Chalkboard { + /// Сюжетная доска (чертоги, локации): пишет мод или автор префаба. public const string BlockName = "necroChalkboard"; + /// Доска игрока (10.10): крафтится, пишется в обычной игре - записи свои у каждой доски. + public const string PlayerBlockName = "necroChalkboardPlayer"; + static string NameOf(TEFeatureSignable _sign) + { + return _sign?.Parent?.TeData?.Block?.GetBlockName(); + } + + /// Любая из досок - для материала надписи. 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; + } + + /// Сюжетная доска - писать только в редакторе, творческом режиме, отладке. + public static bool IsLocked(TEFeatureSignable _sign) + { + return NameOf(_sign) == BlockName && !CanWrite(); } /// Кто может писать: редактор префабов, творческий режим, отладка. @@ -85,7 +101,7 @@ namespace NecromancerTome public static void Postfix(TEFeatureSignable __instance, ITileEntityFeature _module, ReadOnlySpan _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; }