From e8e21d5a58f5dd8a57fa64ed5bc1d536ad0d7fb6 Mon Sep 17 00:00:00 2001 From: AlexCube Date: Sat, 26 Sep 2026 17:44:11 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B1=D0=BE=D1=80=D0=BA=D0=B0=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=B4=20=D0=B8=D0=B3=D1=80=D1=83=203.3:=20=D1=85=D1=80?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=BB=D0=B8=D1=89=D0=B5,=20=D0=9F=D0=B8?= =?UTF-8?q?=D1=80=D0=B0=D0=BC=D0=B8=D0=B4=D0=B0,=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B5=D1=80=D0=BA=D0=B0=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Пирамида: StreamModeWrite/Read теперь глобальные перечисления (в 3.2 были внутри TileEntity). - Хранилище: Bag поверх ItemStackGrid (конструктор с местом хранения, Resize, ItemGrid), запись и чтение через PooledBinaryWriter/Reader. Формат хранилища 2; формат 1 из сейвов 3.2 читается. Незнакомый номер формата больше не считается «хранилища нет» - байты сохраняются. - Сфера на браслете: ModificationCount/GetModification/SetModification. - Непустой сундук: TEFeatureStorage.IsEmpty (ITileEntityLootable в 3.3 нет). - Поиск ножа в инвентаре через ItemGrid. - GameVersionGuard пускает только 3.3. Проверено в игре на V 3.3.0 b14: хранилище из сейва 3.2 (24 стопки) прочиталось, сохранилось и перечиталось; Пирамида включается; «Жертва», обыск трупа и мешки работают. Co-Authored-By: Claude Opus 5.5 --- HarmonySrc/GameVersionGuard.cs | 8 +-- HarmonySrc/NecromancerBloodPatch.cs | 10 ++-- HarmonySrc/PyramidWardPatch.cs | 4 +- HarmonySrc/SpatialVaultPatch.cs | 12 ++--- HarmonySrc/SpatialVaultPersistence.cs | 67 ++++++++++++++++---------- HarmonySrc/SpatialVaultPickupPatch.cs | 17 +++---- NecromancerHarmony.dll | Bin 122880 -> 123392 bytes NecromancerHarmony.pdb | Bin 37588 -> 37520 bytes NecromancerTEPersistence.dll | Bin 5632 -> 5632 bytes 9 files changed, 64 insertions(+), 54 deletions(-) diff --git a/HarmonySrc/GameVersionGuard.cs b/HarmonySrc/GameVersionGuard.cs index 58d3d5f..8ecfe59 100644 --- a/HarmonySrc/GameVersionGuard.cs +++ b/HarmonySrc/GameVersionGuard.cs @@ -18,7 +18,7 @@ namespace NecromancerTome /// /// ПОЧЕМУ Minor / 10. Игра хранит версию двузначным числом: 3.2.0 = 20, 3.2.1 = 21, 3.3.0 = 30 /// (VersionInformation печатает его как {Minor/10}.{Minor%10}). Проверка по десяткам пропускает - /// любые хотфиксы 3.2.x и не пропускает 3.3 и всё, что будет после. + /// любые хотфиксы 3.3.x и не пропускает ни 3.2, ни 3.4 и всё, что будет после. /// /// ВСЁ, ЧЕМ ПОЛЬЗУЕТСЯ ЭТОТ ФАЙЛ, СВЕРЕНО С ДЕКОМПИЛЯЦИЕЙ 3.3.0 (build 25485021): Constants, /// VersionInformation, XUiC_MainMenu.OnOpen, XUiC_MessageBoxWindowGroup (класс совпадает целиком), @@ -29,10 +29,10 @@ namespace NecromancerTome /// public static class GameVersionGuard { - /// Под какую версию собран мод: Major и десяток Minor (3.2.x = 3 и 2). + /// Под какую версию собран мод: Major и десяток Minor (3.3.x = 3 и 3; сборка 1.4.x была под 3.2). public const int SupportedMajor = 3; - public const int SupportedMinorTens = 2; - public const string SupportedText = "3.2"; + public const int SupportedMinorTens = 3; + public const string SupportedText = "3.3"; private static bool? supported; diff --git a/HarmonySrc/NecromancerBloodPatch.cs b/HarmonySrc/NecromancerBloodPatch.cs index d0841ee..af901eb 100644 --- a/HarmonySrc/NecromancerBloodPatch.cs +++ b/HarmonySrc/NecromancerBloodPatch.cs @@ -130,17 +130,19 @@ namespace NecromancerTome public static bool HasAnyKnife(EntityPlayerLocal player) { - return ContainsKnife(player.inventory?.GetSlots()) || ContainsKnife(player.bag?.GetSlots()); + return ContainsKnife(player.inventory?.ItemGrid) || ContainsKnife(player.bag?.ItemGrid); } - private static bool ContainsKnife(ItemStack[] slots) + // В 3.3 у пояса и рюкзака нет GetSlots: предметы лежат в ItemStackGrid. + private static bool ContainsKnife(ItemStackGrid grid) { - if (slots == null) + if (grid == null) { return false; } - foreach (ItemStack stack in slots) + for (int i = 0; i < grid.Length; i++) { + ItemStack stack = grid.GetItem(i); if (stack == null || stack.IsEmpty()) { continue; diff --git a/HarmonySrc/PyramidWardPatch.cs b/HarmonySrc/PyramidWardPatch.cs index ad04be9..b041868 100644 --- a/HarmonySrc/PyramidWardPatch.cs +++ b/HarmonySrc/PyramidWardPatch.cs @@ -207,13 +207,13 @@ namespace NecromancerTome /// user's "как проще" - this is a brand-new feature, nothing to migrate from yet; /// PooledBinaryReader.ReadBoolean() below has no such compile restriction, confirmed /// separately, so Read() needs no equivalent workaround. - public override void Write(PooledBinaryWriter _bw, TileEntity.StreamModeWrite _eStreamMode) + public override void Write(PooledBinaryWriter _bw, StreamModeWrite _eStreamMode) { base.Write(_bw, _eStreamMode); PyramidWardWriteHelper.Write(_bw, EffectOn, ZoneShown); } - public override void Read(PooledBinaryReader _br, TileEntity.StreamModeRead _eStreamMode) + public override void Read(PooledBinaryReader _br, StreamModeRead _eStreamMode) { base.Read(_br, _eStreamMode); EffectOn = _br.ReadBoolean(); diff --git a/HarmonySrc/SpatialVaultPatch.cs b/HarmonySrc/SpatialVaultPatch.cs index fd0ba89..20fd7bf 100644 --- a/HarmonySrc/SpatialVaultPatch.cs +++ b/HarmonySrc/SpatialVaultPatch.cs @@ -139,7 +139,7 @@ namespace NecromancerTome // the safety net for when that chain does not complete: opening the bracelet must // never be what silently starts an empty vault over a saved one. Only then is a // genuinely new bag created. - bag = SpatialVaultPersistence.LastLoadedVault ?? new Bag(slotCount); + bag = SpatialVaultPersistence.LastLoadedVault ?? new Bag(new Vector2i(slotCount, 1), XUiC_ItemStack.StackLocationTypes.LootContainer, null); if (bag == SpatialVaultPersistence.LastLoadedVault) { Debug.Log("[NecromancerTome] SpatialVaultPatch: session cache was empty, adopted the last loaded vault (" + @@ -149,13 +149,9 @@ namespace NecromancerTome } else if (bag.SlotCount < slotCount) { - // Grow, never shrink - the skill level only ever goes up, so this only ever - // copies existing stacks into a bigger array, same shape - // EntityLootContainer.SetContent itself uses when it needs to resize a bag. - ItemStack[] oldSlots = bag.GetSlots(); - ItemStack[] newSlots = ItemStack.CreateArray(slotCount); - Array.Copy(oldSlots, newSlots, oldSlots.Length); - bag.SetSlots(newSlots); + // Grow, never shrink - the skill level only ever goes up. В 3.3 это Bag.Resize: + // ItemStackGrid.Resize переносит все стопки в новый массив и досоздаёт слоты. + bag.Resize(new Vector2i(slotCount, 1)); } Debug.Log("[NecromancerTome] SpatialVaultPatch: owner=" + player.entityId + " opened vault, " + slotCount + " slots (Necromancy level " + level + ")"); diff --git a/HarmonySrc/SpatialVaultPersistence.cs b/HarmonySrc/SpatialVaultPersistence.cs index 02e999e..15f1270 100644 --- a/HarmonySrc/SpatialVaultPersistence.cs +++ b/HarmonySrc/SpatialVaultPersistence.cs @@ -79,8 +79,16 @@ namespace NecromancerTome { /// Payload layout version, independent of the blob framing in /// SpatialVaultBlobIO. An unknown version is skipped, not guessed at - the framing's - /// explicit length means we can always step over a payload we do not understand. - public const byte PayloadVersion = 1; + /// explicit length means we can always step over a payload we do not understand. + /// + /// 2 = игра 3.3 (мод 1.5.0): сумка пишется новым Bag.Write (свой байт версии 2 и + /// ItemStackGrid). 1 = игра 3.2, старый формат сумки; 3.3 читает его сам (Bag.readInto, + /// ветка версии < 2), поэтому хранилище из сейва 3.2 переезжает без потерь. + /// Номер поднят, чтобы сборка под 3.2 не приняла новый формат за свой. + public const byte PayloadVersion = 2; + + /// Старейший номер, который эта сборка ещё читает. + public const byte OldestReadablePayloadVersion = 1; /// What a PlayerDataFile carries. A class rather than a bare Bag because its mere /// PRESENCE is information: "this file has been read/filled, and the answer - including a @@ -147,30 +155,34 @@ namespace NecromancerTome /// which is the part that had diagnostic value. public static string lastSaveLogged; - /// Builds the opaque payload SpatialVaultBlobIO wraps. Uses netstandard's own - /// BinaryWriter over a MemoryStream, which is why Bag serialization can stay in this - /// project instead of the satellite assembly. + /// Builds the opaque payload SpatialVaultBlobIO wraps. Заголовок (версия и + /// «есть ли сумка») пишется в MemoryStream напрямую, а сама сумка - через + /// PooledBinaryWriter поверх того же потока: в 3.3 Bag.Write принимает только его. + /// Сами Write-перегрузки PooledBinaryWriter из этого проекта не вызываются (см. + /// NecromancerTEPersistence.csproj), поэтому заголовок и не идёт через него. public static byte[] BuildPayload(Bag _bag) { using (MemoryStream ms = new MemoryStream()) - using (BinaryWriter bw = new BinaryWriter(ms)) { - bw.Write(PayloadVersion); + ms.WriteByte(PayloadVersion); bool hasBag = _bag != null; - bw.Write(hasBag); + ms.WriteByte(hasBag ? (byte)1 : (byte)0); if (hasBag) { - // Plain BinaryWriter is enough: Bag.Write only demands a PooledBinaryWriter - // when bag.preferences != null, and vault bags come from `new Bag(int)`, whose - // constructor sets nothing but the item array. - _bag.Write(bw); + using (PooledBinaryWriter pw = MemoryPools.poolBinaryWriter.AllocSync(_bReset: false)) + { + pw.SetBaseStream(ms); + _bag.Write(pw, StreamModeWrite.Persistency); + pw.Flush(); + } } - bw.Flush(); return ms.ToArray(); } } - /// Null when the payload holds no vault or is a version we do not know. + /// Null when the payload holds no vault. Незнакомый номер версии - исключение, + /// а НЕ null: null значит «хранилища нет», и следующее сохранение стёрло бы вещи. + /// Исключение ловит Read-постфикс и сохраняет байты нетронутыми (AttachRaw). public static Bag ParsePayload(byte[] _payload) { if (_payload == null || _payload.Length == 0) @@ -178,22 +190,25 @@ namespace NecromancerTome return null; } using (MemoryStream ms = new MemoryStream(_payload, false)) - using (BinaryReader br = new BinaryReader(ms)) { - byte version = br.ReadByte(); - if (version != PayloadVersion) + int version = ms.ReadByte(); + if (version < OldestReadablePayloadVersion || version > PayloadVersion) { - Debug.LogWarning("[NecromancerTome] SpatialVaultPersistence: vault payload version " + version + ", expected " + PayloadVersion + " - skipped"); - return null; + throw new InvalidDataException("vault payload version " + version + ", this build reads " + + OldestReadablePayloadVersion + ".." + PayloadVersion); } - if (!br.ReadBoolean()) + if (ms.ReadByte() != 1) { return null; } - // Bag.Read is the STATIC one and returns a new Bag; ReadInto is the instance - // version. Symmetric with BuildPayload: preferences were written as absent, so no - // PooledBinaryReader is needed here either. - return Bag.Read(br); + // Сумка сама пишет свой номер формата, и Bag.readInto 3.3 понимает оба: и старый + // (из сейва 3.2), и новый. Место хранения - как у сумки дрона (то же окно), владельца нет: + // так же игра сама создаёт сумку из старого сейва (PlayerDataFile, legacyBag). + using (PooledBinaryReader pr = MemoryPools.poolBinaryReader.AllocSync(_bReset: false)) + { + pr.SetBaseStream(ms); + return Bag.Read(pr, XUiC_ItemStack.StackLocationTypes.LootContainer, StreamModeRead.Persistency, null); + } } } @@ -212,14 +227,14 @@ namespace NecromancerTome { return "NONE"; } - ItemStack[] slots = _bag.GetSlots(); + ItemStackGrid slots = _bag.ItemGrid; StringBuilder sb = new StringBuilder(); sb.Append(_bag.SlotCount).Append(" slots, ").Append(_bag.GetUsedSlotCount()).Append(" used"); if (slots != null) { for (int i = 0; i < slots.Length; i++) { - ItemStack stack = slots[i]; + ItemStack stack = slots.GetItem(i); if (stack == null || stack.IsEmpty()) { continue; diff --git a/HarmonySrc/SpatialVaultPickupPatch.cs b/HarmonySrc/SpatialVaultPickupPatch.cs index 6182e14..b10483c 100644 --- a/HarmonySrc/SpatialVaultPickupPatch.cs +++ b/HarmonySrc/SpatialVaultPickupPatch.cs @@ -457,16 +457,16 @@ namespace NecromancerTome public static float SpendCharge(PickupJob _job) { ItemValue bracelet = _job.Bracelet; - if (bracelet == null || bracelet.Modifications == null || _job.ChannelSeconds <= 0f) + if (bracelet == null || bracelet.ModificationCount == 0 || _job.ChannelSeconds <= 0f) { return 0f; } float spent = 0f; bool emptied = false; - for (int i = 0; i < bracelet.Modifications.Length; i++) + for (int i = 0; i < bracelet.ModificationCount; i++) { - ItemValue mod = bracelet.Modifications[i]; + ItemValue mod = bracelet.GetModification(i); if (mod == null || mod.IsEmpty()) { continue; @@ -497,7 +497,7 @@ namespace NecromancerTome // ItemValue.None is what an empty mod slot holds - type 0, which is exactly // what IsEmpty() tests for, so the slot reads as free to every other piece of // code including the gate in Begin. - bracelet.Modifications[i] = ItemValue.None; + bracelet.SetModification(i, ItemValue.None); emptied = true; Debug.Log("[NecromancerTome] SpatialVaultPickup: sphere in slot " + i + " ran out (" + mod.UseTimes.ToString("0.#") + "/" + max + @@ -585,7 +585,7 @@ namespace NecromancerTome // a composite tile entity with a storage FEATURE rather than as their own class, so // the question has to be asked of the feature - the same TryGetSelfOrFeature call the // engine's own storage code uses. - if (tileEntity.TryGetSelfOrFeature(out ITileEntityLootable lootable) && !lootable.IsEmpty()) + if (tileEntity.TryGetSelfOrFeature(out TEFeatureStorage storage) && !storage.IsEmpty()) { Deny(_player, MsgNotEmpty); return false; @@ -616,15 +616,12 @@ namespace NecromancerTome if (!Patch_ItemActionEat_ExecuteAction_SpatialVault.PlayerVaults.TryGetValue(_player.entityId, out Bag bag)) { - bag = SpatialVaultPersistence.LastLoadedVault ?? new Bag(slotCount); + bag = SpatialVaultPersistence.LastLoadedVault ?? new Bag(new Vector2i(slotCount, 1), XUiC_ItemStack.StackLocationTypes.LootContainer, null); Patch_ItemActionEat_ExecuteAction_SpatialVault.PlayerVaults[_player.entityId] = bag; } if (bag.SlotCount < slotCount) { - ItemStack[] oldSlots = bag.GetSlots(); - ItemStack[] newSlots = ItemStack.CreateArray(slotCount); - System.Array.Copy(oldSlots, newSlots, oldSlots.Length); - bag.SetSlots(newSlots); + bag.Resize(new Vector2i(slotCount, 1)); } return bag; } diff --git a/NecromancerHarmony.dll b/NecromancerHarmony.dll index c2e2a0628a8adb31abccecb3a599b55370eac83d..681260c3276b323eeb69b91891b88dab9ed8111f 100644 GIT binary patch delta 34625 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 delta 8628 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 Gj{hH3(Bp6b diff --git a/NecromancerTEPersistence.dll b/NecromancerTEPersistence.dll index 2a1a9d31b4465140103a8553af77a2fb88545807..c493e6ec7f83f92b6c4b922e432f526a936dbe40 100644 GIT binary patch delta 235 zcmZqBY0#O_!D4HX^<-nu1Wti7N)tL(6Wpb)C;I`Rf zZjEPWr9bHuoHyBkXPN?3@S7u45Ttt6(E!DMH}-!@Yi=Fi{ETN7i+>t}2@sky7%(IO zNedu54aiOg@=_TrfpjW^F_1I@vP~Eg8BBp{jDVymLkf^(4pa*gF<>wQvMhk4>E`o- GhAaR!yhjuO delta 235 zcmZqBY0#O_!Sc~%>avYJ6F3D@4<|+UY}az#_o!bg$zHl(vksRPqeh~ciD|N_aax+O zp;?Mis&Sg7L1IdZp@m_Ragu4GnQ2<8X_|$3it*$=ZabEv?>ZMvzQ7$Iz{;@TQ7N;8 z|L)b9lIu)%+?;H{Gfe?1IKLVy2vn`)%_DAgRz>ukm!Iv`&ChsdvG^x4m@$|zm@*^- zu`xp$5E?TW0>x4oj2KeEB9;sW42eK~3Q*hvh?9V#NkG*gou)wbsbJEA!5pZ