Сумка одержимого зомби: 2 ячейки, Tab; при выходе - мешком, при гибели - мешком с меткой

ZombieBag: своя сумка на одно вселение у зомби с видом от первого лица (число ячеек по виду, пока 2), окно как у сумки волка; пишется в отдельный файл сейва, остаток после вылета выпадает у тела при следующем вселении. Мешок и метка - общие с сумкой волка (WolfBag.DropSack/AddWaypoint). Подсказка Tab - 13 языков.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
AlexCube
2026-10-13 16:47:20 +03:00
co-authored by Claude Opus 5.5
parent c98e3f8b74
commit eb6c5fb4f1
6 changed files with 191 additions and 4 deletions
+21
View File
@@ -317,6 +317,10 @@ namespace NecromancerTome
_loggedCamera = false;
FirstPerson = false;
BeltSlot = 0;
if (ZombieBag.Has(_zombie, _pet))
{
ZombieBag.Begin(_player0, _zombie); // сумка зомби на это вселение (13.10)
}
// Пояс одержимому питомцу ни к чему (указание 06.10); открыться заново не даёт
// Patch_GUIWindowManager_openInternal_SnakeToolbelt, после выхода игра откроет его сама.
if (_pet)
@@ -372,6 +376,7 @@ namespace NecromancerTome
ShowPlayerBelt(true);
RatLoot.CloseIfViewing();
WolfBag.CloseWindow();
ZombieBag.End(Zombie); // сумка - мешком на месте зомби (13.10), погиб - с меткой
RatPhase.Stop(GameManager.Instance?.World, Zombie, "выход из одержимости");
DogSense.Clear();
WolfControl.Clear();
@@ -520,6 +525,7 @@ namespace NecromancerTome
DogSense.Clear();
WolfControl.Clear();
WolfBag.Forget();
ZombieBag.Forget();
_zoomCam = null;
_zoomBaseFov = -1f;
_zoom = 0f;
@@ -798,6 +804,17 @@ namespace NecromancerTome
// ПКМ (держать) - сквозь постройки, без полёта (BACKLOG, «Могильная крыса» п.4).
RatPhase.Tick(world, z, rangedHeld);
}
if (ZombieBag.Active)
{
// Tab в зомби - окно его сумки, а не рюкзак персонажа (указание 13.10), как у волка.
GUIWindowManager zwm = LocalPlayerUI.GetUIForPlayer(_player)?.windowManager;
if (zwm != null && zwm.IsWindowOpen("windowpaging") && !ZombieBag.WindowOpen && !RatLoot.Viewing)
{
zwm.CloseAllOpenModalWindows();
zwm.Close("windowpaging");
ZombieBag.OpenWindow(_player, z);
}
}
if (IsPet && WolfControl.Is(z))
{
// Tab в волке - окно его сумки, а не рюкзак персонажа (тест 10.10: «в волке Tab - вижу сумку игрока»).
@@ -1565,6 +1582,10 @@ namespace NecromancerTome
{
text += ", " + Localization.Get("necroPossessHintView");
}
if (ZombieBag.Has(_z, IsPet))
{
text += ", " + Localization.Get("necroPossessHintZombieBag");
}
if (Flying)
{
text += ", " + Localization.Get("necroPossessHintFly");