Урна: «Содержимое» с иконкой черепа вместо «Багажника»; «Взять» везде, как у транспорта

Команда багажника переименована в «Содержимое» (меню, заголовок окна,
описание - 13 языков), иконка - ui_game_symbol_skull. «Взять» игра даёт
станциям только внутри своего земельного камня; урне - как транспорту:
везде, кроме зоны торговца, хозяину, с пустой сумкой.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
AlexCube
2026-10-16 18:21:11 +03:00
co-authored by Claude Opus 5.5
parent 845455c6a0
commit e590fab082
3 changed files with 15 additions and 12 deletions
File diff suppressed because one or more lines are too long
+11 -8
View File
@@ -117,8 +117,8 @@ namespace NecromancerTome
}
}
/// <summary>Меню как у велосипеда (EntityVehicle.InitLocalActivationCommands): «service» - багажник (у транспорта
/// «Обслуживание», окно модификаций), «wrench» - починить, «frames» - границы, как у земельного камня. Сумку даёт
/// <summary>Меню как у велосипеда (EntityVehicle.InitLocalActivationCommands): «skull» - «Содержимое» (ячейка черепа; 16.10: «вместо пиктограммы
/// багажника... хотя бы череп» - ui_game_symbol_skull, иконка = ui_game_symbol_<имя>, XUiC_Radial), «wrench» - починить, «frames» - границы, как у земельного камня. Сумку даёт
/// TEFeatureStorage, подъём - TEFeaturePickup («Take»), обе детали игры. «Сумка» (16.10: «переименуй в Сумка») -
/// своя команда с иконкой мешка, как «Хранилище» у транспорта: открывает то же хранилище командой
/// TEFeatureStorage:Search (составной блок выполняет команду по имени, не глядя на enabled), а «Обыскать» игры у
@@ -127,7 +127,7 @@ namespace NecromancerTome
{
base.InitBlockActivationCommands(_addCallback);
_addCallback(new BlockActivationCommand("bag", "loot_sack", _enabled: false), TileEntityComposite.EBlockCommandOrder.First, FeatureData);
_addCallback(new BlockActivationCommand("trunk", "service", _enabled: false), TileEntityComposite.EBlockCommandOrder.Normal, FeatureData);
_addCallback(new BlockActivationCommand("trunk", "skull", _enabled: false), TileEntityComposite.EBlockCommandOrder.Normal, FeatureData);
_addCallback(new BlockActivationCommand("urn_repair", "wrench", _enabled: false), TileEntityComposite.EBlockCommandOrder.Normal, FeatureData);
_addCallback(new BlockActivationCommand("bounds_show", "frames", _enabled: false), TileEntityComposite.EBlockCommandOrder.Normal, FeatureData);
_addCallback(new BlockActivationCommand("bounds_hide", "frames", _enabled: false), TileEntityComposite.EBlockCommandOrder.Normal, FeatureData);
@@ -551,11 +551,14 @@ namespace NecromancerTome
}
else if (text.EndsWith(":Take"))
{
// Как у транспорта: поднять можно, только вынув вещи из сумки; череп (модификация) остаётся в урне.
if (__instance.TryGetSelfOrFeature<TEFeatureStorage>(out TEFeatureStorage bag) && !bag.IsEmpty())
{
_commands[i].enabled = false;
}
// Как у транспорта (16.10: «почему нету значка Забрать с рукой?»): игра даёт «Забрать» станциям только внутри
// своего земельного камня (TEFeaturePickup -> World.IsMyLandProtectedBlock), транспорт же поднимается где
// угодно. Урне - как транспорту: везде, кроме зоны торговца, только хозяину и только с пустой сумкой;
// череп (модификация) остаётся в урне.
World w = _world as World;
bool bagEmpty = !__instance.TryGetSelfOrFeature<TEFeatureStorage>(out TEFeatureStorage bag) || bag.IsEmpty();
bool mine = __instance.Owner == null || __instance.LocalPlayerIsOwner;
_commands[i].enabled = bagEmpty && mine && (w == null || !w.IsWithinTraderArea(_blockPos));
}
else if (text.EndsWith("bounds_show"))
{
Binary file not shown.