Фильтр логиста: семена (и кровавые) - «Семена»; новые группы «Живность» и «Транспорт» (#18)

Проверка всех предметов: кровавые семена были в «Некромантии» и уходили от сборщика; куры и сложенный
транспорт падали в «Прочее». Новые группы у старых урн берут выбор «Прочего». Пятый ряд значков.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
AlexCube
2026-10-23 22:14:32 +03:00
co-authored by Claude Opus 5.5
parent aa26e97b71
commit 60d84ff739
4 changed files with 34 additions and 8 deletions
+2
View File
@@ -64,6 +64,8 @@ necroGroup19,UI,Tooltip,,,,Blocks,,Blöcke,Bloques,Blocs,Blocchi,ブロック,
necroGroup20,UI,Tooltip,,,,Necromancy,,Nekromantie,Nigromancia,Nécromancie,Negromanzia,降霊術,강령술,Nekromancja,Necromancia,Некромантия,Nekromansi,亡灵法术,亡靈法術
necroGroup21,UI,Tooltip,,,,Other,,Sonstiges,Otros,Divers,Altro,その他,기타,Inne,Outros,Прочее,Diğer,其他,其他
necroGroup22,UI,Tooltip,,,,Chicken feed,,Hühnerfutter,Pienso para gallinas,Nourriture pour poules,Mangime per galline,鶏の餌,닭 모이,Karma dla kur,Ração para galinhas,Корм для кур,Tavuk yemi,鸡饲料,雞飼料
necroGroup23,UI,Tooltip,,,,Livestock,,Nutztiere,Animales de granja,Animaux de ferme,Animali da cortile,家畜,가축,Zwierzęta hodowlane,Criação,Живность,Çiftlik hayvanları,家畜,家畜
necroGroup24,UI,Tooltip,,,,Vehicles,,Fahrzeuge,Vehículos,Véhicules,Veicoli,乗り物,탈것,Pojazdy,Veículos,Транспорт,Araçlar,载具,載具
necroGroupOn,UI,Tooltip,,,,carried,,wird getragen,se transporta,transporté,si trasporta,運ぶ,옮김,przenoszone,transportado,носит,taşınır,搬运,搬運
necroGroupOff,UI,Tooltip,,,,not carried,,wird nicht getragen,no se transporta,pas transporté,non si trasporta,運ばない,옮기지 않음,nieprzenoszone,não transportado,не носит,taşınmaz,不搬运,不搬運
necroUrnFilterTitle,UI,Tooltip,,,,What to carry,,Was tragen,Qué llevar,Quoi porter,Cosa portare,運ぶもの,옮길 것,Co nosić,O que levar,Что носить,Ne taşınsın,搬运什么,搬運什麼
1 Key File Type UsedInMainMenu NoTranslate KeepLoaded english Context / Alternate Text german spanish french italian japanese koreana polish brazilian russian turkish schinese tchinese
64 necroGroup20 UI Tooltip Necromancy Nekromantie Nigromancia Nécromancie Negromanzia 降霊術 강령술 Nekromancja Necromancia Некромантия Nekromansi 亡灵法术 亡靈法術
65 necroGroup21 UI Tooltip Other Sonstiges Otros Divers Altro その他 기타 Inne Outros Прочее Diğer 其他 其他
66 necroGroup22 UI Tooltip Chicken feed Hühnerfutter Pienso para gallinas Nourriture pour poules Mangime per galline 鶏の餌 닭 모이 Karma dla kur Ração para galinhas Корм для кур Tavuk yemi 鸡饲料 雞飼料
67 necroGroup23 UI Tooltip Livestock Nutztiere Animales de granja Animaux de ferme Animali da cortile 家畜 가축 Zwierzęta hodowlane Criação Живность Çiftlik hayvanları 家畜 家畜
68 necroGroup24 UI Tooltip Vehicles Fahrzeuge Vehículos Véhicules Veicoli 乗り物 탈것 Pojazdy Veículos Транспорт Araçlar 载具 載具
69 necroGroupOn UI Tooltip carried wird getragen se transporta transporté si trasporta 運ぶ 옮김 przenoszone transportado носит taşınır 搬运 搬運
70 necroGroupOff UI Tooltip not carried wird nicht getragen no se transporta pas transporté non si trasporta 運ばない 옮기지 않음 nieprzenoszone não transportado не носит taşınmaz 不搬运 不搬運
71 necroUrnFilterTitle UI Tooltip What to carry Was tragen Qué llevar Quoi porter Cosa portare 運ぶもの 옮길 것 Co nosić O que levar Что носить Ne taşınsın 搬运什么 搬運什麼
+6 -2
View File
@@ -210,9 +210,9 @@
</append>
<!-- Фильтр урны-логиста (16.10.2026, HarmonySrc/CinerariumFilterWindow.cs, CinerariumGroups.cs): значки групп предметов
в окне «Содержимое» рядом с ячейкой черепа. Окно в группе bagStorage (xui.xml) - контроллер прячет его, если окно
открыто не урной-логистом (сумки транспорта и волка). f0..f21 - рамки, g0..g21 - значки (иконки ставит контроллер). -->
открыто не урной-логистом (сумки транспорта и волка). f0..f24 - рамки, g0..g24 - значки (иконки ставит контроллер). -->
<append xpath="/windows">
<window name="necroUrnFilter" width="348" height="279" depth="5" panel="Left" backgroundcolor="[black]" cursor_area="true" controller="NecromancerTome.NecroUrnFilter, NecromancerHarmony">
<window name="necroUrnFilter" width="348" height="335" depth="5" panel="Left" backgroundcolor="[black]" cursor_area="true" controller="NecromancerTome.NecroUrnFilter, NecromancerHarmony">
<rect name="header" height="43" depth="0">
<sprite depth="1" name="headerbackground" sprite="ui_game_panel_header" width="348" height="43" />
<sprite depth="3" name="windowIcon" style="icon32px" pivot="center" pos="21,-21" sprite="ui_game_symbol_sort" />
@@ -264,6 +264,10 @@
<sprite depth="3" name="g21" pos="176,-219" width="48" height="48" atlas="ItemIconAtlas" sprite="oldCash" on_press="true" sound="[paging_click]" foregroundlayer="true" />
<sprite depth="2" name="f22" pos="230,-217" width="52" height="52" sprite="menu_empty2px" type="sliced" fillcenter="false" />
<sprite depth="3" name="g22" pos="232,-219" width="48" height="48" atlas="ItemIconAtlas" sprite="oldCash" on_press="true" sound="[paging_click]" foregroundlayer="true" />
<sprite depth="2" name="f23" pos="286,-217" width="52" height="52" sprite="menu_empty2px" type="sliced" fillcenter="false" />
<sprite depth="3" name="g23" pos="288,-219" width="48" height="48" atlas="ItemIconAtlas" sprite="oldCash" on_press="true" sound="[paging_click]" foregroundlayer="true" />
<sprite depth="2" name="f24" pos="6,-273" width="52" height="52" sprite="menu_empty2px" type="sliced" fillcenter="false" />
<sprite depth="3" name="g24" pos="8,-275" width="48" height="48" atlas="ItemIconAtlas" sprite="oldCash" on_press="true" sound="[paging_click]" foregroundlayer="true" />
</window>
</append>
<!-- Лимит урн (#65, 23.10.2026; HarmonySrc/CinerariumLimitPanel.cs): блок справа от ячеек урны в «Содержимом» - всего,
+5 -2
View File
@@ -355,10 +355,13 @@ namespace NecromancerTome
known = v;
}
}
// Группы, которых урна ещё не знала: корм кур раньше ехал с «Сырым» - берёт его выбор, прочие новые - включены.
// Группы, которых урна ещё не знала, берут выбор группы, где их предметы лежали раньше: корм кур - «Сырое»,
// живность и транспорт (23.10) - «Прочее»; остальные новые - включены.
for (int g = known; g < CinerariumGroups.Count; g++)
{
bool on = g == CinerariumGroups.ChickenFeed ? (GroupMask & (1u << CinerariumGroups.Raw)) != 0 : true;
int from = g == CinerariumGroups.ChickenFeed ? CinerariumGroups.Raw :
g == CinerariumGroups.Livestock || g == CinerariumGroups.Vehicles ? CinerariumGroups.Other : -1;
bool on = from < 0 || (GroupMask & (1u << from)) != 0;
GroupMask = on ? GroupMask | (1u << g) : GroupMask & ~(1u << g);
}
}
+21 -4
View File
@@ -19,8 +19,10 @@ namespace NecromancerTome
Ingots = 9, Parts = 10, Materials = 11, Chemicals = 12, Tools = 13, Weapons = 14, Ammo = 15, Armor = 16, Mods = 17,
Books = 18, Blocks = 19, Necro = 20, Other = 21,
// 17.10: «Корм для кур вынеси в отдельную группу» (был в «Сыром»).
ChickenFeed = 22;
public const int Count = 23;
ChickenFeed = 22,
// 23.10 (проверка всех предметов: куры и сложенный транспорт падали в «Прочее»; «Можно и добавить группы»).
Livestock = 23, Vehicles = 24;
public const int Count = 25;
public const uint All = (1u << Count) - 1;
/// <summary>Значок группы - иконка типичного предмета (ItemIconAtlas).</summary>
@@ -30,10 +32,10 @@ namespace NecromancerTome
"drinkJarBoiledWater", "medicalFirstAidKit", "resourceRockSmall", "resourceForgedSteel", "resourceMechanicalParts",
"resourceWood", "resourceGunPowder", "meleeToolPickT1IronPickaxe", "gunHandgunT1Pistol", "ammo9mmBulletBall",
"armorMinerHelmet", "modGunLaserSight", "bookArtOfMiningLuckyStrike", "cobblestoneMaster", "necroSkull", "oldCash",
"resourceChickenFeed"
"resourceChickenFeed", "domesticatedChicken", "vehicleMinibikePlaceable"
};
/// <summary>Ключ названия группы в Localization.csv: necroGroup0..necroGroup22.</summary>
/// <summary>Ключ названия группы в Localization.csv: necroGroup0..necroGroup24.</summary>
public static string NameKey(int _g) => "necroGroup" + _g;
static readonly HashSet<string> OreNames = new HashSet<string>
@@ -124,6 +126,21 @@ namespace NecromancerTome
static int Classify(ItemClass _ic, ItemValue _iv)
{
string n = _ic.GetItemName() ?? "";
// 23.10: семена - раньше «Некромантии»: кровавые семена (plantedNecroBloodRose1) уходили с грядок к логисту
// «только некромантия», и сборщику нечего было сеять. Всё, что сажается на грядку, - «Семена».
if (_ic.IsBlock() && new ItemValue(_ic.Id).ToBlockValue().Block is BlockPlantGrowing)
{
return Seeds;
}
// 23.10: живность (куры для курятника, кролик в мешке) и сложенный транспорт - свои группы.
if (n.StartsWith("domesticated") || n == RabbitGrab.SackItem)
{
return Livestock;
}
if (n.StartsWith("vehicle") && n.EndsWith("Placeable"))
{
return Vehicles;
}
// 23.10: жестяные банки - предметы мода, но по смыслу это стеклянные банки игры (кипятить воду) - к ним, не в «Некромантию».
if (n.StartsWith("tinCan"))
{