Книга: главы ножа и Могильной крысы; плакат ножа, грифельная доска, дверь-шкаф; чертоги 25x8x25; плата силовой ножа 20/40
- Книга некроманта: главы «Нож некроманта» и «Могильная крыса» - лист-чертёж сверху (Textures/, три вида из Blender, подписи на эсперанто), управление и лор; окно книги непрозрачное, текст с контуром - «Дух крысы» переименован в «Могильную крысу» на 13 языках (ключи прежние) - Блоки (Dev): плакат-синька ножа (necroPosterKnife, 3:2 под полотно рамки), грифельная доска necroChalkboard (надписи - TEFeatureSignable, писать только в редакторе/творческом; шрифт Neucha OFL, свой шейдер текста с тестом глубины), дверь-книжный шкаф necroBookDoor (своя модель с аниматором, хитбокс створки через RootTransformRefParent) - Чертоги: префаб 25x8x25 (промежуточный); открываются только межкомнатные двери; надписи на досках по дням игры: «Отомсти архимагу!», с 5-го дня «Берегись излучения красной луны» - Нож: силовая атака стоит 20 здоровья, с «Мёртвой бурей» 40; не хватает - itembreak, «Недостаточно здоровья» и обычный удар; описания на 13 языках - Консольная команда necromodel - устройство модели блока в лог Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
e94e967b8e
commit
4e14a0562b
+25
-11
File diff suppressed because one or more lines are too long
@@ -122,14 +122,16 @@
|
||||
чертогах (BlockNecroMemoryBook.Open) и консольная команда necrotome. -->
|
||||
<append xpath="/windows">
|
||||
<window name="necroTome" anchor="Center" pos="-650,420" width="1300" height="840" cursor_area="true" depth="1001" lock_navigation="true" controller="NecromancerTome.NecroTome, NecromancerHarmony">
|
||||
<sprite depth="0" name="bg" sprite="menu_empty" color="14,10,10,250" type="sliced" />
|
||||
<sprite depth="1" name="frame" sprite="menu_empty2px" color="120,18,14,255" type="sliced" fillcenter="false" />
|
||||
<sprite depth="0" name="bg" sprite="menu_empty" color="14,10,10,250" type="sliced" globalopacitymod="0" />
|
||||
<sprite depth="1" name="frame" sprite="menu_empty2px" color="120,18,14,255" type="sliced" fillcenter="false" globalopacitymod="0" />
|
||||
<label depth="2" name="lblTitle" pos="0,-22" width="1300" height="50" justify="center" font_size="38" color="205,40,30,255" effect="outline" upper_case="false" />
|
||||
<sprite depth="1" name="rule" pos="200,-82" width="900" height="2" sprite="menu_empty" color="120,18,14,255" />
|
||||
<label depth="2" name="lblText" pos="60,-104" width="1180" height="640" justify="left" font_size="27" color="215,205,190,255" overflow="shrinkcontent" upper_case="false" />
|
||||
<sprite depth="1" name="rule" pos="200,-82" width="900" height="2" sprite="menu_empty" color="120,18,14,255" globalopacitymod="0" />
|
||||
<label depth="2" name="lblText" pos="60,-104" width="1180" height="640" justify="left" font_size="27" color="215,205,190,255" overflow="shrinkcontent" upper_case="false" effect="outline" effect_color="0,0,0,255" />
|
||||
<!-- Иллюстрация страницы справа (Chapter.Image / Chapter.Video в NecroTome.cs); при ней
|
||||
текст сужается до левой половины. Видео - тот же XUiV_Video, что фон главного меню. -->
|
||||
<texture depth="2" name="imgPage" pos="680,-104" width="560" height="640" visible="false" />
|
||||
<!-- globalopacitymod="0" (09.10): иначе фон и иллюстрация берут настройку прозрачности интерфейса и
|
||||
просвечивают обоями чертогов - красные заголовки сливались, картинка была полупрозрачной. -->
|
||||
<texture depth="2" name="imgPage" pos="680,-104" width="560" height="640" visible="false" globalopacitymod="0" />
|
||||
<video depth="2" name="vidPage" pos="680,-104" width="560" height="640" videoaspect="FitInside" loop="true" visible="false" />
|
||||
<simplebutton name="btnCh1" depth="3" pos="350,-130" width="600" height="48" font_size="30" visible="false" />
|
||||
<simplebutton name="btnCh2" depth="3" pos="350,-190" width="600" height="48" font_size="30" visible="false" />
|
||||
|
||||
@@ -283,6 +283,57 @@
|
||||
necroposters (на каждый плакат свой префаб с тем же багетом). Исходник рамки:
|
||||
BlenderWork/necroSchemeFramePrefab/build_frame.py. -->
|
||||
<append xpath="/blocks">
|
||||
<block name="necroBookDoor">
|
||||
<!-- Дверь-книжный шкаф 1x2 (09.10.2026): «замаскирована под книжную полку, закрыта, откроется только по событию».
|
||||
Механика, звуки и прочность - ванильной межкомнатной двери; модель своя (бандл necroposters, собирает
|
||||
ItemsUnityProject Assets/Editor/NecroBookDoor.cs): створка 0.98x1.98x0.12 с полками на обеих сторонах, петля
|
||||
слева, Animator IsOpen/OpenTrigger, состояния Open/Close (как ждёт TEFeatureDoor). Чертоги её не открывают
|
||||
(MindPalace.OpenDoors трогает только exteriorHouseDoorWhite). -->
|
||||
<property name="Extends" value="interiorHouseDoorWhite" param1="TintColor,CustomIconTint,MeshDamage"/>
|
||||
<!-- MeshDamage не наследуем: он ищет в модели Door/DMG0..DMG3 (у ванильной двери они есть, у нашей нет) - тест 09.10:
|
||||
NullReferenceException в BlockShapeModelEntity.UpdateDamageState при постановке. -->
|
||||
<property name="CreativeMode" value="Dev"/>
|
||||
<property name="CustomIcon" value="necroBookDoor"/>
|
||||
<property name="Model" value="#@modfolder(NecromancerTome):Resources/necroposters?necroBookDoorPrefab.prefab"/>
|
||||
<property name="ModelOffset" value="0,0,0"/>
|
||||
<property name="MultiBlockDim" value="1,2,1"/>
|
||||
</block>
|
||||
<block name="necroChalkboard">
|
||||
<!-- Грифельная доска (09.10.2026): «как рамка, только тёмная винтажная доска; вписаться в 2x2; надписи как
|
||||
на ящиках - для сюжета». Модель - бандл necroposters (собирает ItemsUnityProject Assets/Editor/NecroChalkboard.cs):
|
||||
рама 1.90x1.40 м, полочка для мела, дочерний TextMesh (шрифт Neucha, OFL). Надпись - TEFeatureSignable,
|
||||
писать можно только в редакторе префабов / творческом режиме / отладке (ChalkboardPatch.cs).
|
||||
Размер букв: em = FontSize x 0.01 / 10 м; 110 -> ~9 строк по ~30 знаков. -->
|
||||
<property name="Extends" value="pictureFrame_01a"/>
|
||||
<property name="CreativeMode" value="Dev"/>
|
||||
<property name="CustomIcon" value="necroChalkboard"/>
|
||||
<property name="Material" value="Mwood_weak"/>
|
||||
<property name="Class" value="CompositeTileEntity"/>
|
||||
<property class="CompositeFeatures">
|
||||
<property class="TEFeatureSignable">
|
||||
<property name="FontSize" value="110"/>
|
||||
<property name="LineCount" value="9"/>
|
||||
<property name="LineWidth" value="1.68"/>
|
||||
<property name="LineSpacing" value="1"/>
|
||||
</property>
|
||||
</property>
|
||||
<property name="Model" value="#@modfolder(NecromancerTome):Resources/necroposters?necroPosterChalkboardPrefab.prefab"/>
|
||||
<property name="ModelOffset" value="0,0,-0.5"/>
|
||||
<property name="MultiBlockDim" value="2,2,1"/>
|
||||
<property name="OnlySimpleRotations" value="true"/>
|
||||
<property name="CanPickup" value="false"/>
|
||||
</block>
|
||||
<block name="necroPosterKnife">
|
||||
<!-- Схема ножа некроманта (09.10.2026): синька в стиле ванильного чертежа пистолета, три вида из Blender
|
||||
(BlenderWork/necroTomePets/make_knife.py poster). Тот же багет; пользователь повесит сам в чертогах. -->
|
||||
<property name="Extends" value="pictureFrame_01a"/>
|
||||
<property name="CreativeMode" value="Dev"/>
|
||||
<property name="CustomIcon" value="necroPosterKnife"/>
|
||||
<property name="Model" value="#@modfolder(NecromancerTome):Resources/necroposters?necroPosterKnifePrefab.prefab"/>
|
||||
<property name="ModelOffset" value="0,0,-0.5"/>
|
||||
<property name="MultiBlockDim" value="2,1,1"/>
|
||||
<property name="CanPickup" value="false"/>
|
||||
</block>
|
||||
<block name="necroPosterAnatomy">
|
||||
<property name="Extends" value="pictureFrame_01a"/>
|
||||
<property name="CreativeMode" value="Dev"/>
|
||||
|
||||
@@ -274,8 +274,9 @@
|
||||
<!-- Вдвое дороже по стамине, только силовая. -->
|
||||
<passive_effect name="StaminaLoss" operation="perc_add" value="1" tags="secondary"/>
|
||||
|
||||
<!-- Вторая половина платы: базовые 5 + эти 5 = 10 HP. -->
|
||||
<triggered_effect trigger="onSelfSecondaryActionRayHit" action="ModifyStats" stat="Health" operation="subtract" value="5">
|
||||
<!-- Вторая половина платы: базовые 20 + эти 20 = 40 HP (было 5 + 5; указание 09.10). Не хватает 40 -
|
||||
KnifePowerCostPatch.cs меняет силовую на обычный удар. -->
|
||||
<triggered_effect trigger="onSelfSecondaryActionRayHit" action="ModifyStats" stat="Health" operation="subtract" value="20">
|
||||
<requirement name="EntityTagCompare" target="other" tags="zombie"/>
|
||||
<!-- "Health GT 0" на цели - тот же гейт на трупы, что у самого ножа, чтобы
|
||||
силовой удар по трупу не брал 5 HP впустую; подробный разбор в items.xml
|
||||
|
||||
+4
-2
@@ -1543,10 +1543,12 @@
|
||||
<requirement name="EntityTagCompare" target="other" tags="zombie"/>
|
||||
<requirement name="StatCompareCurrent" target="other" stat="Health" operation="GT" value="0"/>
|
||||
</triggered_effect>
|
||||
<triggered_effect trigger="onSelfSecondaryActionRayHit" action="ModifyStats" stat="Health" operation="subtract" value="5">
|
||||
<!-- Плата 20 (было 5; указание 09.10: лечение удара - убийства/20, прежние 5 окупались одним ударом).
|
||||
Не хватает здоровья - KnifePowerCostPatch.cs меняет силовую на обычный удар ещё до замаха. -->
|
||||
<triggered_effect trigger="onSelfSecondaryActionRayHit" action="ModifyStats" stat="Health" operation="subtract" value="20">
|
||||
<requirement name="EntityTagCompare" target="other" tags="zombie"/>
|
||||
<requirement name="StatCompareCurrent" target="other" stat="Health" operation="GT" value="0"/>
|
||||
<requirement name="StatCompareCurrent" stat="Health" operation="GT" value="5"/>
|
||||
<requirement name="StatCompareCurrent" stat="Health" operation="GT" value="20"/>
|
||||
</triggered_effect>
|
||||
</effect_group>
|
||||
</item>
|
||||
|
||||
Reference in New Issue
Block a user