Upload from upload_mods.ps1
This commit is contained in:
116
Harmony/Harmony_TileEntityLootContainer.cs
Normal file
116
Harmony/Harmony_TileEntityLootContainer.cs
Normal file
@@ -0,0 +1,116 @@
|
||||
namespace Harmony.TileEntityLootContainerAdditionRebirth
|
||||
{
|
||||
public class TileEntityLootContainerPatches
|
||||
{
|
||||
[HarmonyPatch(typeof(TileEntityLootContainer))]
|
||||
[HarmonyPatch("UpdateTick")]
|
||||
public class UpdateTickPatch
|
||||
{
|
||||
public static bool Prefix(TileEntityLootContainer __instance, World world)
|
||||
{
|
||||
if (RebirthVariables.customScenario == "purge")
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
[HarmonyPatch(typeof(TileEntityLootContainer))]
|
||||
[HarmonyPatch("write")]
|
||||
public class WritePatch
|
||||
{
|
||||
public static bool Prefix(TileEntityLootContainer __instance, PooledBinaryWriter stream, TileEntity.StreamModeWrite _eStreamMode)
|
||||
{
|
||||
if (__instance.lootListName == "traderNPC")
|
||||
{
|
||||
if (!SingletonMonoBehaviour<ConnectionManager>.Instance.IsServer)
|
||||
{
|
||||
//Log.Out("TileEntityLootContainerPatches-write __instance.EntityId: " + __instance.EntityId);
|
||||
SingletonMonoBehaviour<ConnectionManager>.Instance.SendToServer(NetPackageManager.GetPackage<NetPackageEntityLootContainerWriteRebirth>().Setup(__instance.EntityId, __instance.items), false);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
[HarmonyPatch(typeof(TileEntityLootContainer))]
|
||||
[HarmonyPatch("read")]
|
||||
public class ReadPatch
|
||||
{
|
||||
public static bool Prefix(TileEntityLootContainer __instance, PooledBinaryReader _br, TileEntity.StreamModeRead _eStreamMode)
|
||||
{
|
||||
if (_eStreamMode == TileEntity.StreamModeRead.Persistency)
|
||||
{
|
||||
__instance.readVersion = (int)_br.ReadUInt16();
|
||||
__instance.localChunkPos = StreamUtils.ReadVector3i((BinaryReader)_br);
|
||||
__instance.entityId = _br.ReadInt32();
|
||||
if (__instance.readVersion <= 1)
|
||||
return false;
|
||||
__instance.heapMapUpdateTime = _br.ReadUInt64();
|
||||
__instance.heapMapLastTime = __instance.heapMapUpdateTime - AIDirector.GetActivityWorldTimeDelay();
|
||||
}
|
||||
else
|
||||
{
|
||||
__instance.localChunkPos = StreamUtils.ReadVector3i((BinaryReader)_br);
|
||||
__instance.entityId = _br.ReadInt32();
|
||||
}
|
||||
if (_eStreamMode == TileEntity.StreamModeRead.Persistency && __instance.readVersion <= 8)
|
||||
throw new Exception("Outdated loot data");
|
||||
if (_br.ReadBoolean())
|
||||
__instance.lootListName = _br.ReadString();
|
||||
__instance.containerSize = new Vector2i();
|
||||
__instance.containerSize.x = (int)_br.ReadUInt16();
|
||||
__instance.containerSize.y = (int)_br.ReadUInt16();
|
||||
__instance.bTouched = _br.ReadBoolean();
|
||||
__instance.worldTimeTouched = (ulong)_br.ReadUInt32();
|
||||
__instance.bPlayerBackpack = _br.ReadBoolean();
|
||||
int num = Math.Min((int)_br.ReadInt16(), __instance.containerSize.x * __instance.containerSize.y);
|
||||
if (__instance.bUserAccessing)
|
||||
{
|
||||
ItemStack itemStack = ItemStack.Empty.Clone();
|
||||
if (_eStreamMode == TileEntity.StreamModeRead.Persistency && __instance.readVersion < 3)
|
||||
{
|
||||
for (int index = 0; index < num; ++index)
|
||||
itemStack.ReadOld((BinaryReader)_br);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int index = 0; index < num; ++index)
|
||||
itemStack.Read((BinaryReader)_br);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (__instance.containerSize.x * __instance.containerSize.y != __instance.items.Length)
|
||||
__instance.items = ItemStack.CreateArray(__instance.containerSize.x * __instance.containerSize.y);
|
||||
if (_eStreamMode == TileEntity.StreamModeRead.Persistency && __instance.readVersion < 3)
|
||||
{
|
||||
for (int index = 0; index < num; ++index)
|
||||
{
|
||||
__instance.items[index].Clear();
|
||||
__instance.items[index].ReadOld((BinaryReader)_br);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int index = 0; index < num; ++index)
|
||||
{
|
||||
__instance.items[index].Clear();
|
||||
__instance.items[index].Read((BinaryReader)_br);
|
||||
}
|
||||
}
|
||||
}
|
||||
__instance.bPlayerStorage = _br.ReadBoolean();
|
||||
if (_eStreamMode == TileEntity.StreamModeRead.Persistency && __instance.readVersion <= 9 || !_br.ReadBoolean())
|
||||
return false;
|
||||
__instance.preferences = new PreferenceTracker(-1);
|
||||
__instance.preferences.Read(_br);
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user