Сборка под игру 3.3: хранилище, Пирамида, проверка версии
- Пирамида: 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 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
f4470b784f
commit
e8e21d5a58
@@ -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 + ")");
|
||||
|
||||
Reference in New Issue
Block a user