using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Timers;
using BepInEx;
using BepInEx.Configuration;
using EntityStates.GoldGat;
using EntityStates.ScavBackpack;
using EntityStates.Scrapper;
using HG.Reflection;
using IL.EntityStates.GoldGat;
using IL.RoR2;
using Mono.Cecil;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using On.EntityStates.GoldGat;
using On.EntityStates.ScavBackpack;
using On.EntityStates.Scrapper;
using On.RoR2;
using On.RoR2.Artifacts;
using On.RoR2.Networking;
using R2API.Utils;
using RoR2;
using RoR2.Networking;
using ShareSuite.Networking;
using UnityEngine;
using UnityEngine.Networking;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: OptIn]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("ShareSuite")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("ShareSuite")]
[assembly: AssemblyTitle("ShareSuite")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace ShareSuite
{
public static class Blacklist
{
private static ItemMask _cachedAvailableItems = new ItemMask();
private static ItemMask _items = new ItemMask();
private static EquipmentMask _equipment = new EquipmentMask();
private static readonly List<PickupIndex> _availableTier1DropList = new List<PickupIndex>();
private static readonly List<PickupIndex> _availableTier2DropList = new List<PickupIndex>();
private static readonly List<PickupIndex> _availableTier3DropList = new List<PickupIndex>();
private static readonly List<PickupIndex> _availableLunarDropList = new List<PickupIndex>();
private static readonly List<PickupIndex> _availableBossDropList = new List<PickupIndex>();
private static readonly List<PickupIndex> _availableVoidDropList = new List<PickupIndex>();
public static List<PickupIndex> AvailableTier1DropList => Get(_availableTier1DropList);
public static List<PickupIndex> AvailableTier2DropList => Get(_availableTier2DropList);
public static List<PickupIndex> AvailableTier3DropList => Get(_availableTier3DropList);
public static List<PickupIndex> AvailableLunarDropList => Get(_availableLunarDropList);
public static List<PickupIndex> AvailableBossDropList => Get(_availableBossDropList);
public static List<PickupIndex> AvailableVoidDropList => Get(_availableVoidDropList);
private static void LoadBlackListItems()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Expected O, but got Unknown
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Unknown result type (might be due to invalid IL or missing references)
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Invalid comparison between Unknown and I4
//IL_0040: Unknown result type (might be due to invalid IL or missing references)
_items = new ItemMask();
string[] array = ShareSuite.ItemBlacklist.Value.Split(',');
foreach (string text in array)
{
ItemIndex val = ItemCatalog.FindItemIndex(text);
if ((int)val != -1)
{
_items.Add(val);
}
}
}
private static void LoadBlackListEquipment()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Expected O, but got Unknown
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Unknown result type (might be due to invalid IL or missing references)
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Invalid comparison between Unknown and I4
//IL_0040: Unknown result type (might be due to invalid IL or missing references)
_equipment = new EquipmentMask();
string[] array = ShareSuite.EquipmentBlacklist.Value.Split(',');
foreach (string text in array)
{
EquipmentIndex val = EquipmentCatalog.FindEquipmentIndex(text);
if ((int)val != -1)
{
_equipment.Add(val);
}
}
}
public static bool HasItem(ItemIndex itemIndex)
{
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
ValidateItemCache();
return _items.Contains(itemIndex);
}
public static bool HasEquipment(EquipmentIndex equipmentIndex)
{
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
ValidateItemCache();
return _equipment.Contains(equipmentIndex);
}
public static void Recalculate()
{
//IL_0000: Unknown result type (might be due to invalid IL or missing references)
//IL_000a: Expected O, but got Unknown
_cachedAvailableItems = new ItemMask();
}
private static void ValidateItemCache()
{
if ((Object)(object)Run.instance == (Object)null)
{
Recalculate();
}
else
{
if (((object)_cachedAvailableItems).Equals((object?)Run.instance.availableItems))
{
return;
}
_cachedAvailableItems = Run.instance.availableItems;
LoadBlackListItems();
LoadBlackListEquipment();
IEnumerable<PickupIndex> item = new List<PickupIndex>().Concat(Run.instance.availableVoidTier1DropList).Concat(Run.instance.availableVoidTier2DropList).Concat(Run.instance.availableVoidTier3DropList)
.Concat(Run.instance.availableVoidBossDropList);
(List<PickupIndex>, IEnumerable<PickupIndex>)[] array = new(List<PickupIndex>, IEnumerable<PickupIndex>)[6]
{
(_availableTier1DropList, Run.instance.availableTier1DropList),
(_availableTier2DropList, Run.instance.availableTier2DropList),
(_availableTier3DropList, Run.instance.availableTier3DropList),
(_availableLunarDropList, Run.instance.availableLunarItemDropList),
(_availableBossDropList, Run.instance.availableBossDropList),
(_availableVoidDropList, item)
};
(List<PickupIndex>, IEnumerable<PickupIndex>)[] array2 = array;
for (int i = 0; i < array2.Length; i++)
{
var (list, source) = array2[i];
list.Clear();
list.AddRange(source.Where(delegate(PickupIndex pickupIndex)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
PickupDef pickupDef = PickupCatalog.GetPickupDef(pickupIndex);
return pickupDef != null && !_items.Contains(pickupDef.itemIndex);
}));
}
}
}
private static List<PickupIndex> Get(List<PickupIndex> list)
{
ValidateItemCache();
return list;
}
}
public static class ChatHandler
{
public delegate void SendPickupMessageDelegate(CharacterMaster master, PickupIndex pickupIndex);
private const string GrayColor = "7e91af";
private const string RedColor = "ed4c40";
private const string LinkColor = "5cb1ed";
private const string ErrorColor = "ff0000";
private const string NotSharingColor = "f07d6e";
private static readonly string[] PlayerColors = new string[8] { "f23030", "2083fc", "f1f41a", "4dc344", "f27b0c", "3cdede", "db46bd", "9400ea" };
public static readonly SendPickupMessageDelegate SendPickupMessage = (SendPickupMessageDelegate)Delegate.CreateDelegate(typeof(SendPickupMessageDelegate), typeof(GenericPickupController).GetMethod("SendPickupMessage", BindingFlags.Static | BindingFlags.Public) ?? throw new MissingMethodException("Unable to find SendPickupMessage"));
public static void UnHook()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Expected O, but got Unknown
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Expected O, but got Unknown
GenericPickupController.SendPickupMessage -= new hook_SendPickupMessage(RemoveDefaultPickupMessage);
Chat.SendPlayerConnectedMessage -= new hook_SendPlayerConnectedMessage(SendIntroMessage);
}
public static void Hook()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Expected O, but got Unknown
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Expected O, but got Unknown
GenericPickupController.SendPickupMessage += new hook_SendPickupMessage(RemoveDefaultPickupMessage);
Chat.SendPlayerConnectedMessage += new hook_SendPlayerConnectedMessage(SendIntroMessage);
}
public static void SendIntroMessage(orig_SendPlayerConnectedMessage orig, NetworkUser user)
{
orig.Invoke(user);
if (!ShareSuite.LastMessageSent.Value.Equals(ShareSuite.MessageSendVer))
{
ShareSuite.LastMessageSent.Value = ShareSuite.MessageSendVer;
string notRepeatedMessage = "<color=#7e91af>(This message will </color><color=#ed4c40>NOT</color><color=#7e91af> display again!) </color>";
string message = "<color=#7e91af>Hey there! Thanks for installing </color><color=#ed4c40>ShareSuite 2.9.0 CommandHelper Beta</color><color=#7e91af>! This release may still contain problems. Have fun!</color>";
string clickChatBox = "<color=#ed4c40>(Click the chat box to view the full message)</color>";
Timer timer = new Timer(5000.0);
timer.Elapsed += delegate
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_0017: Expected O, but got Unknown
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Expected O, but got Unknown
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0034: Unknown result type (might be due to invalid IL or missing references)
//IL_0045: Expected O, but got Unknown
Chat.SendBroadcastChat((ChatMessageBase)new SimpleChatMessage
{
baseToken = notRepeatedMessage
});
Chat.SendBroadcastChat((ChatMessageBase)new SimpleChatMessage
{
baseToken = message
});
Chat.SendBroadcastChat((ChatMessageBase)new SimpleChatMessage
{
baseToken = clickChatBox
});
};
timer.AutoReset = false;
timer.Start();
}
}
public static void RemoveDefaultPickupMessage(orig_SendPickupMessage orig, CharacterMaster master, PickupIndex pickupIndex)
{
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
if (!ShareSuite.RichMessagesEnabled.Value)
{
orig.Invoke(master, pickupIndex);
}
}
public static void SendRichPickupMessage(CharacterMaster player, PickupDef pickupDef)
{
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_0067: Unknown result type (might be due to invalid IL or missing references)
//IL_0087: Unknown result type (might be due to invalid IL or missing references)
//IL_012f: Unknown result type (might be due to invalid IL or missing references)
//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
//IL_0051: Unknown result type (might be due to invalid IL or missing references)
//IL_013c: Unknown result type (might be due to invalid IL or missing references)
//IL_0116: Unknown result type (might be due to invalid IL or missing references)
//IL_011b: Unknown result type (might be due to invalid IL or missing references)
//IL_0128: Expected O, but got Unknown
//IL_0211: Unknown result type (might be due to invalid IL or missing references)
//IL_0184: Unknown result type (might be due to invalid IL or missing references)
//IL_0262: Unknown result type (might be due to invalid IL or missing references)
//IL_0267: Unknown result type (might be due to invalid IL or missing references)
//IL_0274: Expected O, but got Unknown
//IL_01cb: Unknown result type (might be due to invalid IL or missing references)
//IL_01d0: Unknown result type (might be due to invalid IL or missing references)
//IL_01dd: Expected O, but got Unknown
CharacterBody val = (player.hasBody ? player.GetBody() : null);
if (!GeneralHooks.IsMultiplayer() || (Object)(object)val == (Object)null || !ShareSuite.RichMessagesEnabled.Value)
{
if (ShareSuite.RichMessagesEnabled.Value)
{
SendPickupMessage(player, pickupDef.pickupIndex);
}
return;
}
Color baseColor = pickupDef.baseColor;
string @string = Language.GetString(pickupDef.nameToken);
string playerColor = GetPlayerColor(player.playerCharacterMasterController);
int itemCount = player.inventory.GetItemCount(pickupDef.itemIndex);
if (pickupDef.coinValue != 0)
{
string baseToken = "<color=#" + playerColor + ">" + val.GetUserName() + "</color> <color=#7e91af>picked up</color> <color=#" + ColorUtility.ToHtmlStringRGB(baseColor) + ">" + string.Format("{0} ({1})</color> <color=#{2}>for themselves.</color>", string.IsNullOrEmpty(@string) ? "???" : @string, pickupDef.coinValue, "7e91af");
Chat.SendBroadcastChat((ChatMessageBase)new SimpleChatMessage
{
baseToken = baseToken
});
}
else if (Blacklist.HasItem(pickupDef.itemIndex) || !ItemSharingHooks.IsValidItemPickup(pickupDef.pickupIndex))
{
string baseToken2 = "<color=#" + playerColor + ">" + val.GetUserName() + "</color> <color=#7e91af>picked up</color> <color=#" + ColorUtility.ToHtmlStringRGB(baseColor) + ">" + string.Format("{0} ({1})</color> <color=#{2}>for themselves. </color>", string.IsNullOrEmpty(@string) ? "???" : @string, itemCount, "7e91af") + "<color=#f07d6e>(Item Set to NOT be Shared)</color>";
Chat.SendBroadcastChat((ChatMessageBase)new SimpleChatMessage
{
baseToken = baseToken2
});
}
else
{
string baseToken3 = "<color=#" + playerColor + ">" + val.GetUserName() + "</color> <color=#7e91af>picked up</color> <color=#" + ColorUtility.ToHtmlStringRGB(baseColor) + ">" + string.Format("{0} ({1})</color> <color=#{2}>for themselves</color>", string.IsNullOrEmpty(@string) ? "???" : @string, itemCount, "7e91af") + ItemPickupFormatter(val) + "<color=#7e91af>.</color>";
Chat.SendBroadcastChat((ChatMessageBase)new SimpleChatMessage
{
baseToken = baseToken3
});
}
}
public static void SendRichCauldronMessage(CharacterMaster player, PickupIndex index)
{
//IL_005c: Unknown result type (might be due to invalid IL or missing references)
//IL_0064: Unknown result type (might be due to invalid IL or missing references)
//IL_0069: Unknown result type (might be due to invalid IL or missing references)
//IL_008a: Unknown result type (might be due to invalid IL or missing references)
//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
//IL_0103: Unknown result type (might be due to invalid IL or missing references)
//IL_0108: Unknown result type (might be due to invalid IL or missing references)
//IL_0115: Expected O, but got Unknown
CharacterBody val = (player.hasBody ? player.GetBody() : null);
if (!GeneralHooks.IsMultiplayer() || (Object)(object)val == (Object)null || !ShareSuite.RichMessagesEnabled.Value)
{
if (ShareSuite.RichMessagesEnabled.Value)
{
SendPickupMessage(player, index);
}
return;
}
PickupDef pickupDef = PickupCatalog.GetPickupDef(index);
Color baseColor = pickupDef.baseColor;
string @string = Language.GetString(pickupDef.nameToken);
string playerColor = GetPlayerColor(player.playerCharacterMasterController);
int itemCount = player.inventory.GetItemCount(pickupDef.itemIndex);
string baseToken = "<color=#" + playerColor + ">" + val.GetUserName() + "</color> <color=#7e91af>traded for</color> <color=#" + ColorUtility.ToHtmlStringRGB(baseColor) + ">" + string.Format("{0} ({1})</color><color=#{2}>.</color>", string.IsNullOrEmpty(@string) ? "???" : @string, itemCount, "7e91af");
Chat.SendBroadcastChat((ChatMessageBase)new SimpleChatMessage
{
baseToken = baseToken
});
}
public static void SendRichRandomizedPickupMessage(CharacterMaster origPlayer, PickupDef origPickup, Dictionary<CharacterMaster, PickupDef> pickupIndices)
{
//IL_0032: Unknown result type (might be due to invalid IL or missing references)
//IL_008b: Unknown result type (might be due to invalid IL or missing references)
//IL_0090: Unknown result type (might be due to invalid IL or missing references)
//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
//IL_0169: Unknown result type (might be due to invalid IL or missing references)
//IL_01c3: Unknown result type (might be due to invalid IL or missing references)
//IL_01c8: Unknown result type (might be due to invalid IL or missing references)
//IL_01d4: Expected O, but got Unknown
if (!GeneralHooks.IsMultiplayer() || !ShareSuite.RichMessagesEnabled.Value)
{
if (ShareSuite.RichMessagesEnabled.Value)
{
SendPickupMessage(origPlayer, origPickup.pickupIndex);
}
return;
}
if (pickupIndices.Count == 1)
{
SendRichPickupMessage(origPlayer, origPickup);
return;
}
int num = pickupIndices.Count;
string text = "";
foreach (KeyValuePair<CharacterMaster, PickupDef> pickupIndex in pickupIndices)
{
Color baseColor = pickupIndex.Value.baseColor;
string @string = Language.GetString(pickupIndex.Value.nameToken);
string playerColor = GetPlayerColor(pickupIndex.Key.playerCharacterMasterController);
int itemCount = pickupIndex.Key.playerCharacterMasterController.master.inventory.GetItemCount(pickupIndex.Value.itemIndex);
if (num != pickupIndices.Count)
{
if (num > 1)
{
text += "<color=#7e91af>,</color> ";
}
else if (num == 1)
{
text += "<color=#7e91af>, and</color> ";
}
}
num--;
text = text + "<color=#" + playerColor + ">" + pickupIndex.Key.playerCharacterMasterController.GetDisplayName() + "</color> <color=#7e91af>got</color> <color=#" + ColorUtility.ToHtmlStringRGB(baseColor) + ">" + string.Format("{0} ({1})</color>", string.IsNullOrEmpty(@string) ? "???" : @string, itemCount);
}
Chat.SendBroadcastChat((ChatMessageBase)new SimpleChatMessage
{
baseToken = text
});
}
private static string ItemPickupFormatter(CharacterBody body)
{
int num = GetEligiblePlayers(body);
if (num < 1)
{
return " <color=#7e91af>and no-one else</color>";
}
if (num == 1)
{
foreach (PlayerCharacterMasterController instance in PlayerCharacterMasterController.instances)
{
CharacterMaster master = instance.master;
if (!master.hasBody || (Object)(object)master.GetBody() == (Object)(object)body)
{
continue;
}
string playerColor = GetPlayerColor(instance);
return " <color=#7e91af>and</color> <color=#" + playerColor + ">" + instance.GetDisplayName() + "</color>";
}
return "<color=#ff0000>???</color>";
}
string text = "";
foreach (PlayerCharacterMasterController instance2 in PlayerCharacterMasterController.instances)
{
CharacterMaster master2 = instance2.master;
if (master2.hasBody && !((Object)(object)master2.GetBody() == (Object)(object)body) && (!master2.IsDeadAndOutOfLivesServer() || ShareSuite.DeadPlayersGetItems.Value))
{
string playerColor2 = GetPlayerColor(instance2);
if (num > 1)
{
text += "<color=#7e91af>,</color> ";
}
else if (num == 1)
{
text += "<color=#7e91af>, and</color> ";
}
num--;
text = text + "<color=#" + playerColor2 + ">" + instance2.GetDisplayName() + "</color>";
}
}
return text;
}
private static string GetPlayerColor(PlayerCharacterMasterController controllerMaster)
{
int num = PlayerCharacterMasterController.instances.IndexOf(controllerMaster);
return PlayerColors[num % 8];
}
private static int GetEligiblePlayers(CharacterBody body)
{
int num = 0;
foreach (PlayerCharacterMasterController instance in PlayerCharacterMasterController.instances)
{
CharacterMaster master = instance.master;
if (Object.op_Implicit((Object)(object)master.inventory) && !((Object)(object)master.GetBody() == (Object)(object)body) && (!master.IsDeadAndOutOfLivesServer() || ShareSuite.DeadPlayersGetItems.Value))
{
num++;
}
}
return num;
}
}
public static class EquipmentSharingHooks
{
public static void UnHook()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Expected O, but got Unknown
GenericPickupController.AttemptGrant -= new hook_AttemptGrant(OnGrantEquipment);
}
public static void Hook()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Expected O, but got Unknown
GenericPickupController.AttemptGrant += new hook_AttemptGrant(OnGrantEquipment);
}
private static void OnGrantEquipment(orig_AttemptGrant orig, GenericPickupController self, CharacterBody body)
{
//IL_0051: Unknown result type (might be due to invalid IL or missing references)
//IL_0056: Unknown result type (might be due to invalid IL or missing references)
//IL_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
//IL_005d: Unknown result type (might be due to invalid IL or missing references)
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0069: Unknown result type (might be due to invalid IL or missing references)
//IL_006e: Unknown result type (might be due to invalid IL or missing references)
//IL_0080: Unknown result type (might be due to invalid IL or missing references)
//IL_0096: Unknown result type (might be due to invalid IL or missing references)
//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
//IL_00da: Unknown result type (might be due to invalid IL or missing references)
//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
//IL_0105: Unknown result type (might be due to invalid IL or missing references)
//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
//IL_0132: Unknown result type (might be due to invalid IL or missing references)
//IL_011b: Unknown result type (might be due to invalid IL or missing references)
//IL_0122: Unknown result type (might be due to invalid IL or missing references)
//IL_013e: Unknown result type (might be due to invalid IL or missing references)
//IL_0145: Unknown result type (might be due to invalid IL or missing references)
//IL_01c8: Unknown result type (might be due to invalid IL or missing references)
//IL_01cd: Unknown result type (might be due to invalid IL or missing references)
//IL_01cf: Unknown result type (might be due to invalid IL or missing references)
//IL_0230: Unknown result type (might be due to invalid IL or missing references)
//IL_0238: Unknown result type (might be due to invalid IL or missing references)
//IL_0239: Unknown result type (might be due to invalid IL or missing references)
//IL_0204: Unknown result type (might be due to invalid IL or missing references)
//IL_0206: Unknown result type (might be due to invalid IL or missing references)
//IL_020b: Unknown result type (might be due to invalid IL or missing references)
//IL_020d: Unknown result type (might be due to invalid IL or missing references)
//IL_0211: Unknown result type (might be due to invalid IL or missing references)
//IL_0218: Unknown result type (might be due to invalid IL or missing references)
//IL_0222: Unknown result type (might be due to invalid IL or missing references)
if (!ShareSuite.EquipmentShared.Value || !GeneralHooks.IsMultiplayer() || !NetworkServer.active)
{
orig.Invoke(self, body);
return;
}
EquipmentIndex currentEquipmentIndex = body.inventory.currentEquipmentIndex;
PickupIndex pickupIndex = GetPickupIndex(currentEquipmentIndex);
EquipmentIndex equip = PickupCatalog.GetPickupDef(self.pickupIndex).equipmentIndex;
ChatHandler.SendPickupMessage(body.master, self.pickupIndex);
body.inventory.SetEquipmentIndex(equip);
Object.Destroy((Object)(object)((Component)self).gameObject);
if (!EquipmentShared(currentEquipmentIndex) && EquipmentShared(equip))
{
CreateDropletIfExists(pickupIndex, ((Component)self).transform.position);
DropAllOtherSharedEquipment(self, body, currentEquipmentIndex);
}
else
{
if ((EquipmentShared(currentEquipmentIndex) && !EquipmentShared(equip) && GetLivingPlayersWithEquipment(currentEquipmentIndex) < 1) || (!EquipmentShared(currentEquipmentIndex) && !EquipmentShared(equip)))
{
CreateDropletIfExists(pickupIndex, ((Component)self).transform.position);
return;
}
if (!EquipmentShared(equip))
{
return;
}
CreateDropletIfExists(pickupIndex, ((Component)self).transform.position);
}
foreach (CharacterMaster item in from p in PlayerCharacterMasterController.instances
select p.master into p
where Object.op_Implicit((Object)(object)p.inventory) && (Object)(object)p != (Object)(object)body.master
select p)
{
Inventory inventory = item.inventory;
EquipmentIndex currentEquipmentIndex2 = inventory.currentEquipmentIndex;
if (!EquipmentShared(currentEquipmentIndex2))
{
if (!ShareSuite.DropBlacklistedEquipmentOnShare.Value)
{
continue;
}
Transform transform = item.GetBodyObject().transform;
PickupIndex val = PickupCatalog.FindPickupIndex(currentEquipmentIndex2);
PickupDropletController.CreatePickupDroplet(val, transform.position, transform.forward * 20f);
}
inventory.SetEquipmentIndex(equip);
self.NetworkpickupIndex = PickupCatalog.FindPickupIndex(equip);
SyncToolbotEquip(item, ref equip);
}
}
private static void DropAllOtherSharedEquipment(GenericPickupController self, CharacterBody body, EquipmentIndex originalEquip)
{
//IL_007a: Unknown result type (might be due to invalid IL or missing references)
//IL_007f: Unknown result type (might be due to invalid IL or missing references)
//IL_0081: Unknown result type (might be due to invalid IL or missing references)
//IL_008b: Unknown result type (might be due to invalid IL or missing references)
//IL_0094: Unknown result type (might be due to invalid IL or missing references)
//IL_0096: Unknown result type (might be due to invalid IL or missing references)
//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
List<EquipmentIndex> list = new List<EquipmentIndex>();
foreach (CharacterMaster item in from p in PlayerCharacterMasterController.instances
select p.master into p
where Object.op_Implicit((Object)(object)p.inventory) && (Object)(object)p != (Object)(object)body.master
select p)
{
EquipmentIndex equipmentIndex = item.inventory.GetEquipmentIndex();
if (EquipmentShared(equipmentIndex) && !list.Contains(equipmentIndex) && equipmentIndex != originalEquip)
{
CreateDropletIfExists(GetPickupIndex(equipmentIndex), ((Component)self).transform.position);
list.Add(equipmentIndex);
}
}
}
private static PickupIndex GetPickupIndex(EquipmentIndex originalEquip)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0003: Invalid comparison between Unknown and I4
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0017: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
return ((int)originalEquip != -1) ? PickupCatalog.GetPickupDef(PickupCatalog.FindPickupIndex(originalEquip)).pickupIndex : PickupIndex.none;
}
public static void RemoveAllUnBlacklistedEquipment()
{
//IL_0065: Unknown result type (might be due to invalid IL or missing references)
foreach (CharacterMaster item in from p in PlayerCharacterMasterController.instances
select p.master into p
where Object.op_Implicit((Object)(object)p.inventory)
select p)
{
if (!Blacklist.HasEquipment(item.inventory.currentEquipmentIndex))
{
item.inventory.SetEquipmentIndex((EquipmentIndex)(-1));
}
}
}
private static void SetEquipmentIndex(Inventory self, EquipmentIndex newEquipmentIndex, uint slot)
{
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
//IL_0025: Unknown result type (might be due to invalid IL or missing references)
//IL_0026: Unknown result type (might be due to invalid IL or missing references)
//IL_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Unknown result type (might be due to invalid IL or missing references)
//IL_0034: Invalid comparison between Unknown and I4
//IL_003f: Unknown result type (might be due to invalid IL or missing references)
//IL_0040: Unknown result type (might be due to invalid IL or missing references)
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
//IL_0048: Unknown result type (might be due to invalid IL or missing references)
if (NetworkServer.active && self.currentEquipmentIndex != newEquipmentIndex)
{
EquipmentState equipment = self.GetEquipment(0u);
byte b = equipment.charges;
if ((int)equipment.equipmentIndex == -1)
{
b = 1;
}
self.SetEquipment(new EquipmentState(newEquipmentIndex, equipment.chargeFinishTime, b, false), slot);
}
}
private static void SyncToolbotEquip(CharacterMaster characterMaster, ref EquipmentIndex equip)
{
if (!(((Object)characterMaster.bodyPrefab).name != "ToolbotBody"))
{
SetEquipmentIndex(characterMaster.inventory, equip, (uint)(characterMaster.inventory.activeEquipmentSlot + 1) % 2u);
}
}
private static void CreateDropletIfExists(PickupIndex pickupIndex, Vector3 position)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
if (pickupIndex != PickupIndex.none)
{
PickupDropletController.CreatePickupDroplet(pickupIndex, position, new Vector3(Random.Range(-200f, 200f), 50f, Random.Range(-200f, 200f)));
}
}
private static int GetLivingPlayersWithEquipment(EquipmentIndex originalEquip)
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
return (from p in PlayerCharacterMasterController.instances
select p.master into p
where Object.op_Implicit((Object)(object)p.inventory) && !p.IsDeadAndOutOfLivesServer()
select p).Count((CharacterMaster master) => master.inventory.currentEquipmentIndex == originalEquip);
}
private static bool EquipmentShared(EquipmentIndex pickup)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0003: Invalid comparison between Unknown and I4
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
if ((int)pickup == -1)
{
return true;
}
return IsEquipment(pickup) && !Blacklist.HasEquipment(pickup);
}
private static bool IsEquipment(EquipmentIndex index)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
return ((IEnumerable<EquipmentIndex>)(object)EquipmentCatalog.allEquipment).Contains(index);
}
}
public static class GeneralHooks
{
private static int _sacrificeOffset = 1;
private static int _bossItems = 1;
private static List<string> NoInteractibleOverrideScenes = new List<string> { "MAP_BAZAAR_TITLE", "MAP_ARENA_TITLE", "MAP_LIMBO_TITLE", "MAP_MYSTERYSPACE_TITLE" };
internal static void Hook()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Expected O, but got Unknown
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Expected O, but got Unknown
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Expected O, but got Unknown
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_0048: Expected O, but got Unknown
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
//IL_005a: Expected O, but got Unknown
BossGroup.DropRewards += new hook_DropRewards(BossGroup_DropRewards);
SceneDirector.PlaceTeleporter += new hook_PlaceTeleporter(InteractibleCreditOverride);
TeleporterInteraction.OnInteractionBegin += new hook_OnInteractionBegin(OverrideBossLootScaling);
SacrificeArtifactManager.OnPrePopulateSceneServer += new hook_OnPrePopulateSceneServer(SetSacrificeOffset);
Util.GetExpAdjustedDropChancePercent += new hook_GetExpAdjustedDropChancePercent(GetExpAdjustedDropChancePercent);
}
internal static void UnHook()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Expected O, but got Unknown
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Expected O, but got Unknown
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Expected O, but got Unknown
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_0048: Expected O, but got Unknown
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
//IL_005a: Expected O, but got Unknown
BossGroup.DropRewards -= new hook_DropRewards(BossGroup_DropRewards);
SceneDirector.PlaceTeleporter -= new hook_PlaceTeleporter(InteractibleCreditOverride);
TeleporterInteraction.OnInteractionBegin -= new hook_OnInteractionBegin(OverrideBossLootScaling);
SacrificeArtifactManager.OnPrePopulateSceneServer -= new hook_OnPrePopulateSceneServer(SetSacrificeOffset);
Util.GetExpAdjustedDropChancePercent -= new hook_GetExpAdjustedDropChancePercent(GetExpAdjustedDropChancePercent);
}
private static void BossGroup_DropRewards(orig_DropRewards orig, BossGroup group)
{
group.scaleRewardsByPlayerCount = false;
group.bonusRewardCount += _bossItems - 1;
orig.Invoke(group);
}
private static void SetSacrificeOffset(orig_OnPrePopulateSceneServer orig, SceneDirector sceneDirector)
{
_sacrificeOffset = 2;
orig.Invoke(sceneDirector);
}
private static void OverrideBossLootScaling(orig_OnInteractionBegin orig, TeleporterInteraction self, Interactor activator)
{
_bossItems = (ShareSuite.OverrideBossLootScalingEnabled.Value ? ShareSuite.BossLootCredit.Value : Run.instance.participatingPlayerCount);
orig.Invoke(self, activator);
}
public static bool IsMultiplayer()
{
return ShareSuite.OverrideMultiplayerCheck.Value || PlayerCharacterMasterController.instances.Count > 1;
}
private static void InteractibleCreditOverride(orig_PlaceTeleporter orig, SceneDirector self)
{
//IL_00df: Unknown result type (might be due to invalid IL or missing references)
//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
orig.Invoke(self);
Debug.Log((object)SceneInfo.instance.sceneDef.nameToken);
int num = 200;
ClassicStageInfo component = ((Component)SceneInfo.instance).GetComponent<ClassicStageInfo>();
if (Object.op_Implicit((Object)(object)component))
{
num = component.sceneDirectorInteractibleCredits;
int num2 = Math.Min(Run.instance.participatingPlayerCount, 8);
float num3 = (float)(0.95 + (double)num2 * 0.05);
num3 *= (float)Math.Max(1.0 + 0.1 * (double)Math.Min(Run.instance.participatingPlayerCount * 2 - Run.instance.stageClearCount - 2, 3), 1.0);
num = (int)((float)num / num3);
if (component.bonusInteractibleCreditObjects != null)
{
BonusInteractibleCreditObject[] bonusInteractibleCreditObjects = component.bonusInteractibleCreditObjects;
foreach (BonusInteractibleCreditObject val in bonusInteractibleCreditObjects)
{
if (val.objectThatGrantsPointsIfEnabled.activeSelf)
{
num += val.points / num2;
}
}
}
}
if (ShareSuite.OverridePlayerScalingEnabled.Value && (!Object.op_Implicit((Object)(object)SceneInfo.instance) || !NoInteractibleOverrideScenes.Contains(SceneInfo.instance.sceneDef.nameToken)))
{
self.interactableCredit = (int)((double)num * ShareSuite.InteractablesCredit.Value / (double)_sacrificeOffset) + ShareSuite.InteractablesOffset.Value;
}
_sacrificeOffset = 1;
}
private static float GetExpAdjustedDropChancePercent(orig_GetExpAdjustedDropChancePercent orig, float baseChancePercent, GameObject characterBodyObject)
{
if (ShareSuite.SacrificeFixEnabled.Value)
{
baseChancePercent /= (float)PlayerCharacterMasterController.instances.Count;
}
return orig.Invoke(baseChancePercent, characterBodyObject);
}
}
public static class ItemSharingHooks
{
private static bool _itemLock = false;
private static readonly List<CostTypeIndex> PrinterCosts = new List<CostTypeIndex>
{
(CostTypeIndex)4,
(CostTypeIndex)5,
(CostTypeIndex)6,
(CostTypeIndex)10,
(CostTypeIndex)9
};
public static event Func<GenericPickupController, CharacterBody, bool> AdditionalPickupValidityChecks;
public static void UnHook()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Expected O, but got Unknown
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Expected O, but got Unknown
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Expected O, but got Unknown
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_0048: Expected O, but got Unknown
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
//IL_005a: Expected O, but got Unknown
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_006c: Expected O, but got Unknown
//IL_0074: Unknown result type (might be due to invalid IL or missing references)
//IL_007e: Expected O, but got Unknown
//IL_0086: Unknown result type (might be due to invalid IL or missing references)
//IL_0090: Expected O, but got Unknown
//IL_0098: Unknown result type (might be due to invalid IL or missing references)
//IL_00a2: Expected O, but got Unknown
PurchaseInteraction.OnInteractionBegin -= new hook_OnInteractionBegin(OnShopPurchase);
ShopTerminalBehavior.DropPickup -= new hook_DropPickup(OnPurchaseDrop);
GenericPickupController.AttemptGrant -= new hook_AttemptGrant(OnGrantItem);
Opening.OnEnter -= new hook_OnEnter(OnScavengerDrop);
PlayerPickupChatMessage.ConstructChatString -= new hook_ConstructChatString(FixZeroItemCount);
ScrappingToIdle.OnEnter -= new hook_OnEnter(ScrappingToIdle_OnEnter);
PickupCatalog.FindPickupIndex_string -= new hook_FindPickupIndex_string(ItemLock);
ArenaMissionController.EndRound -= new Manipulator(ArenaDropEnable);
InfiniteTowerWaveController.DropRewards -= new Manipulator(SimulacrumArenaDropEnable);
}
public static void Hook()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Expected O, but got Unknown
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Expected O, but got Unknown
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Expected O, but got Unknown
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_0048: Expected O, but got Unknown
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
//IL_005a: Expected O, but got Unknown
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_006c: Expected O, but got Unknown
//IL_0074: Unknown result type (might be due to invalid IL or missing references)
//IL_007e: Expected O, but got Unknown
//IL_0095: Unknown result type (might be due to invalid IL or missing references)
//IL_009f: Expected O, but got Unknown
//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
//IL_00b1: Expected O, but got Unknown
PurchaseInteraction.OnInteractionBegin += new hook_OnInteractionBegin(OnShopPurchase);
ShopTerminalBehavior.DropPickup += new hook_DropPickup(OnPurchaseDrop);
GenericPickupController.AttemptGrant += new hook_AttemptGrant(OnGrantItem);
Opening.OnEnter += new hook_OnEnter(OnScavengerDrop);
PlayerPickupChatMessage.ConstructChatString += new hook_ConstructChatString(FixZeroItemCount);
ScrappingToIdle.OnEnter += new hook_OnEnter(ScrappingToIdle_OnEnter);
PickupCatalog.FindPickupIndex_string += new hook_FindPickupIndex_string(ItemLock);
if (ShareSuite.OverrideVoidFieldLootScalingEnabled.Value)
{
ArenaMissionController.EndRound += new Manipulator(ArenaDropEnable);
InfiniteTowerWaveController.DropRewards += new Manipulator(SimulacrumArenaDropEnable);
}
}
private static PickupIndex ItemLock(orig_FindPickupIndex_string orig, string pickupName)
{
//IL_0021: Unknown result type (might be due to invalid IL or missing references)
//IL_0026: Unknown result type (might be due to invalid IL or missing references)
//IL_0017: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
if (_itemLock)
{
_itemLock = false;
return orig.Invoke("This is not an item!");
}
return orig.Invoke(pickupName);
}
private static void ScrappingToIdle_OnEnter(orig_OnEnter orig, ScrappingToIdle self)
{
//IL_007f: Unknown result type (might be due to invalid IL or missing references)
//IL_0084: Unknown result type (might be due to invalid IL or missing references)
//IL_0086: Unknown result type (might be due to invalid IL or missing references)
//IL_0100: Unknown result type (might be due to invalid IL or missing references)
//IL_0101: Unknown result type (might be due to invalid IL or missing references)
//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
//IL_00c9: Expected I4, but got Unknown
//IL_013d: Unknown result type (might be due to invalid IL or missing references)
//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
//IL_0198: Unknown result type (might be due to invalid IL or missing references)
if (!ShareSuite.PrinterCauldronFixEnabled.Value || !NetworkServer.active || !GeneralHooks.IsMultiplayer())
{
orig.Invoke(self);
return;
}
_itemLock = true;
orig.Invoke(self);
object instanceField = GetInstanceField(typeof(ScrapperBaseState), self, "scrapperController");
ScrapperController val = (ScrapperController)((instanceField is ScrapperController) ? instanceField : null);
Debug.Log((object)val);
Debug.Log((object)_itemLock);
if (!Object.op_Implicit((Object)(object)val))
{
return;
}
PickupIndex val2 = PickupIndex.none;
ItemDef itemDef = ItemCatalog.GetItemDef(val.lastScrappedItemIndex);
if ((Object)(object)itemDef != (Object)null)
{
ItemTier tier = itemDef.tier;
ItemTier val3 = tier;
switch ((int)val3)
{
case 0:
val2 = PickupCatalog.FindPickupIndex("ItemIndex.ScrapWhite");
break;
case 1:
val2 = PickupCatalog.FindPickupIndex("ItemIndex.ScrapGreen");
break;
case 2:
val2 = PickupCatalog.FindPickupIndex("ItemIndex.ScrapRed");
break;
case 4:
val2 = PickupCatalog.FindPickupIndex("ItemIndex.ScrapYellow");
break;
}
}
if (!(val2 == PickupIndex.none))
{
object instanceField2 = GetInstanceField(typeof(ScrapperController), val, "interactor");
Interactor val4 = (Interactor)((instanceField2 is Interactor) ? instanceField2 : null);
Debug.Log((object)"Interactor Established");
PickupDef pickupDef = PickupCatalog.GetPickupDef(val2);
if (Object.op_Implicit((Object)(object)val4))
{
SetInstanceField(typeof(ScrappingToIdle), self, "foundValidScrap", true);
CharacterBody component = ((Component)val4).GetComponent<CharacterBody>();
HandleGiveItem(component.master, pickupDef);
ChatHandler.SendRichCauldronMessage(((Component)component.inventory).GetComponent<CharacterMaster>(), val2);
val.itemsEaten -= 1;
}
}
}
private static void OnGrantItem(orig_AttemptGrant orig, GenericPickupController self, CharacterBody body)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
//IL_0043: Unknown result type (might be due to invalid IL or missing references)
//IL_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_0209: Unknown result type (might be due to invalid IL or missing references)
//IL_015c: Unknown result type (might be due to invalid IL or missing references)
//IL_0162: Unknown result type (might be due to invalid IL or missing references)
//IL_013d: Unknown result type (might be due to invalid IL or missing references)
//IL_0183: Unknown result type (might be due to invalid IL or missing references)
PickupDef pickupDef = PickupCatalog.GetPickupDef(self.pickupIndex);
ItemDef itemDef = ItemCatalog.GetItemDef(pickupDef.itemIndex);
Dictionary<CharacterMaster, PickupDef> dictionary = new Dictionary<CharacterMaster, PickupDef>();
object obj = ((body != null) ? body.master : null);
if (obj == null)
{
Inventory inventory = body.inventory;
obj = ((inventory != null) ? ((Component)inventory).GetComponent<CharacterMaster>() : null);
}
CharacterMaster val = (CharacterMaster)obj;
if (!Blacklist.HasItem(pickupDef.itemIndex) && NetworkServer.active && IsValidItemPickup(self.pickupIndex) && IsValidPickupObject(self, body) && GeneralHooks.IsMultiplayer())
{
if (ShareSuite.RandomizeSharedPickups.Value)
{
dictionary.Add(val, pickupDef);
}
foreach (CharacterMaster item in PlayerCharacterMasterController.instances.Select((PlayerCharacterMasterController p) => p.master))
{
if (!ShareSuite.DeadPlayersGetItems.Value && item.IsDeadAndOutOfLivesServer())
{
continue;
}
if ((Object)(object)item.inventory == (Object)(object)body.inventory)
{
if (!((NetworkBehaviour)item).isLocalPlayer)
{
NetworkHandler.SendItemPickupMessage(((NetworkBehaviour)item.playerCharacterMasterController.networkUser).connectionToClient.connectionId, pickupDef.pickupIndex);
}
}
else if (ShareSuite.RandomizeSharedPickups.Value)
{
PickupIndex? randomItemOfTier = GetRandomItemOfTier(itemDef.tier, pickupDef.pickupIndex);
if (randomItemOfTier.HasValue)
{
PickupDef pickupDef2 = PickupCatalog.GetPickupDef(randomItemOfTier.Value);
HandleGiveItem(item, pickupDef2);
dictionary.Add(item, pickupDef2);
}
}
else
{
HandleGiveItem(item, pickupDef);
}
}
if (ShareSuite.RandomizeSharedPickups.Value)
{
orig.Invoke(self, body);
ChatHandler.SendRichRandomizedPickupMessage(val, pickupDef, dictionary);
return;
}
}
orig.Invoke(self, body);
ChatHandler.SendRichPickupMessage(val, pickupDef);
HandleRichMessageUnlockAndNotification(val, pickupDef.pickupIndex);
}
private static string FixZeroItemCount(orig_ConstructChatString orig, PlayerPickupChatMessage self)
{
self.pickupQuantity = Math.Max(1u, self.pickupQuantity);
return orig.Invoke(self);
}
private static void OnPurchaseDrop(orig_DropPickup orig, ShopTerminalBehavior self)
{
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_004b: Invalid comparison between Unknown and I4
//IL_004d: Unknown result type (might be due to invalid IL or missing references)
//IL_004f: Invalid comparison between Unknown and I4
//IL_0079: Unknown result type (might be due to invalid IL or missing references)
//IL_0051: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: Invalid comparison between Unknown and I4
if (!NetworkServer.active)
{
orig.Invoke(self);
return;
}
CostTypeIndex costType = ((Component)self).GetComponent<PurchaseInteraction>().costType;
if (!GeneralHooks.IsMultiplayer() || (!IsValidItemPickup(self.CurrentPickupIndex()) && !ShareSuite.PrinterCauldronFixEnabled.Value) || (int)self.itemTier == 3 || (int)costType == 1 || (int)costType == 0)
{
orig.Invoke(self);
}
else if (!ShareSuite.PrinterCauldronFixEnabled.Value && PrinterCosts.Contains(costType))
{
orig.Invoke(self);
}
}
private static void OnShopPurchase(orig_OnInteractionBegin orig, PurchaseInteraction self, Interactor activator)
{
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Invalid comparison between Unknown and I4
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
//IL_0166: Unknown result type (might be due to invalid IL or missing references)
//IL_016c: Invalid comparison between Unknown and I4
//IL_0092: Unknown result type (might be due to invalid IL or missing references)
//IL_017e: Unknown result type (might be due to invalid IL or missing references)
//IL_0181: Unknown result type (might be due to invalid IL or missing references)
//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
//IL_01be: Unknown result type (might be due to invalid IL or missing references)
//IL_019b: Unknown result type (might be due to invalid IL or missing references)
//IL_01a5: Unknown result type (might be due to invalid IL or missing references)
//IL_01aa: Unknown result type (might be due to invalid IL or missing references)
//IL_011c: Unknown result type (might be due to invalid IL or missing references)
//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
//IL_0140: Unknown result type (might be due to invalid IL or missing references)
if (!self.CanBeAffordedByInteractor(activator))
{
return;
}
if (!GeneralHooks.IsMultiplayer())
{
orig.Invoke(self, activator);
return;
}
if ((int)self.costType == 0)
{
orig.Invoke(self, activator);
return;
}
ShopTerminalBehavior component = ((Component)self).GetComponent<ShopTerminalBehavior>();
if (PrinterCosts.Contains(self.costType) && ShareSuite.PrinterCauldronFixEnabled.Value)
{
CharacterBody component2 = ((Component)activator).GetComponent<CharacterBody>();
Inventory inventory = component2.inventory;
if (!(PickupCatalog.GetPickupDef(component.CurrentPickupIndex())?.itemIndex).HasValue)
{
MonoBehaviour.print((object)"ShareSuite: PickupCatalog is null.");
}
else if (((Object)((Component)component).gameObject).name.Contains("Duplicator"))
{
HandleGiveItem(component2.master, PickupCatalog.GetPickupDef(component.CurrentPickupIndex()), self.cost);
}
else
{
HandleGiveItem(component2.master, PickupCatalog.GetPickupDef(component.CurrentPickupIndex()));
}
orig.Invoke(self, activator);
ChatHandler.SendRichCauldronMessage(((Component)inventory).GetComponent<CharacterMaster>(), component.CurrentPickupIndex());
return;
}
if (ShareSuite.EquipmentShared.Value && (int)self.costType == 7)
{
Xoroshiro128Plus component3 = ((Component)self).GetComponent<Xoroshiro128Plus>();
ItemIndex val = (ItemIndex)(-1);
CostTypeDef costTypeDef = CostTypeCatalog.GetCostTypeDef(self.costType);
if (Object.op_Implicit((Object)(object)component))
{
val = PickupCatalog.GetPickupDef(component.CurrentPickupIndex()).itemIndex;
}
PayCostResults val2 = costTypeDef.PayCost(self.cost, activator, ((Component)self).gameObject, component3, val);
if (val2.equipmentTaken.Count >= 1)
{
orig.Invoke(self, activator);
EquipmentSharingHooks.RemoveAllUnBlacklistedEquipment();
return;
}
}
orig.Invoke(self, activator);
}
private static void OnScavengerDrop(orig_OnEnter orig, Opening self)
{
orig.Invoke(self);
ShareSuite.DefaultMaxScavItemDropCount = Math.Max(Opening.maxItemDropCount, ShareSuite.DefaultMaxScavItemDropCount);
ChestBehavior fieldValue = Reflection.GetFieldValue<ChestBehavior>((object)self, "chestBehavior");
if (fieldValue.tier1Chance > 0f)
{
int val = Math.Max((int)Math.Ceiling((double)ShareSuite.DefaultMaxScavItemDropCount / (double)Run.instance.participatingPlayerCount), 2);
Opening.maxItemDropCount = Math.Min(val, ShareSuite.DefaultMaxScavItemDropCount);
}
else
{
Opening.maxItemDropCount = ShareSuite.DefaultMaxScavItemDropCount;
}
}
public static void ArenaDropEnable(ILContext il)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Expected O, but got Unknown
ILCursor val = new ILCursor(il);
int num3 = default(int);
float num2 = default(float);
int num = default(int);
val.GotoNext(new Func<Instruction, bool>[4]
{
(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 1),
(Instruction x) => ILPatternMatchingExt.MatchStloc(x, ref num3),
(Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, ref num2),
(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, ref num)
});
int index = val.Index;
val.Index = index + 1;
val.EmitDelegate<Func<int, int>>((Func<int, int>)((int i) => ShareSuite.VoidFieldLootCredit.Value));
}
public static void SimulacrumArenaDropEnable(ILContext il)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Expected O, but got Unknown
ILCursor val = new ILCursor(il);
float num = default(float);
val.GotoNext(new Func<Instruction, bool>[4]
{
(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 0),
(Instruction x) => ILPatternMatchingExt.MatchStloc(x, 1),
(Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, ref num),
(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 1)
});
int index = val.Index;
val.Index = index + 1;
val.EmitDelegate<Func<int, int>>((Func<int, int>)((int i) => ShareSuite.SimulacrumLootCredit.Value));
}
public static bool IsValidItemPickup(PickupIndex pickup)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Invalid comparison between Unknown and I4
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0034: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
//IL_0038: Unknown result type (might be due to invalid IL or missing references)
//IL_0039: Unknown result type (might be due to invalid IL or missing references)
//IL_006b: Expected I4, but got Unknown
//IL_0108: Unknown result type (might be due to invalid IL or missing references)
//IL_010e: Invalid comparison between Unknown and I4
PickupDef pickupDef = PickupCatalog.GetPickupDef(pickup);
if (pickupDef != null && (int)pickupDef.itemIndex != -1)
{
ItemDef itemDef = ItemCatalog.GetItemDef(pickupDef.itemIndex);
ItemTier tier = itemDef.tier;
ItemTier val = tier;
switch ((int)val)
{
case 0:
return ShareSuite.WhiteItemsShared.Value;
case 1:
return ShareSuite.GreenItemsShared.Value;
case 2:
return ShareSuite.RedItemsShared.Value;
case 3:
return ShareSuite.LunarItemsShared.Value;
case 4:
return ShareSuite.BossItemsShared.Value;
case 6:
return ShareSuite.VoidItemsShared.Value;
case 7:
return ShareSuite.VoidItemsShared.Value;
case 8:
return ShareSuite.VoidItemsShared.Value;
case 9:
return ShareSuite.VoidItemsShared.Value;
case 10:
return true;
default:
return false;
case 5:
break;
}
}
if (pickupDef != null && (int)pickupDef.equipmentIndex != -1)
{
return false;
}
return false;
}
public static bool IsValidPickupObject(GenericPickupController pickup, CharacterBody picker)
{
if (ItemSharingHooks.AdditionalPickupValidityChecks == null)
{
return true;
}
bool flag = true;
Delegate[] invocationList = ItemSharingHooks.AdditionalPickupValidityChecks.GetInvocationList();
for (int i = 0; i < invocationList.Length; i++)
{
Func<GenericPickupController, CharacterBody, bool> func = (Func<GenericPickupController, CharacterBody, bool>)invocationList[i];
flag &= func(pickup, picker);
}
return flag;
}
private static PickupIndex? GetRandomItemOfTier(ItemTier tier, PickupIndex orDefault)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_0004: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: Expected I4, but got Unknown
//IL_012e: Unknown result type (might be due to invalid IL or missing references)
//IL_0136: Unknown result type (might be due to invalid IL or missing references)
//IL_0153: Unknown result type (might be due to invalid IL or missing references)
switch ((int)tier)
{
case 0:
return PickRandomOf<PickupIndex>((IList<PickupIndex>)Blacklist.AvailableTier1DropList);
case 1:
return PickRandomOf<PickupIndex>((IList<PickupIndex>)Blacklist.AvailableTier2DropList);
case 2:
return PickRandomOf<PickupIndex>((IList<PickupIndex>)Blacklist.AvailableTier3DropList);
case 3:
if (ShareSuite.LunarItemsRandomized.Value)
{
return PickRandomOf<PickupIndex>((IList<PickupIndex>)Blacklist.AvailableLunarDropList);
}
break;
case 4:
if (ShareSuite.BossItemsRandomized.Value)
{
return PickRandomOf<PickupIndex>((IList<PickupIndex>)Blacklist.AvailableBossDropList);
}
break;
case 9:
if (ShareSuite.VoidItemsRandomized.Value)
{
return PickRandomOf<PickupIndex>((IList<PickupIndex>)Blacklist.AvailableVoidDropList);
}
break;
case 6:
if (ShareSuite.VoidItemsRandomized.Value)
{
return PickRandomOf<PickupIndex>((IList<PickupIndex>)Blacklist.AvailableVoidDropList);
}
break;
case 7:
if (ShareSuite.VoidItemsRandomized.Value)
{
return PickRandomOf<PickupIndex>((IList<PickupIndex>)Blacklist.AvailableVoidDropList);
}
break;
case 8:
if (ShareSuite.VoidItemsRandomized.Value)
{
return PickRandomOf<PickupIndex>((IList<PickupIndex>)Blacklist.AvailableVoidDropList);
}
break;
}
PickupDef pickupDef = PickupCatalog.GetPickupDef(orDefault);
if (Blacklist.HasItem(pickupDef.itemIndex))
{
return null;
}
return orDefault;
}
internal static object GetInstanceField(Type type, object instance, string fieldName)
{
BindingFlags bindingAttr = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.GetField;
FieldInfo field = type.GetField(fieldName, bindingAttr);
return field.GetValue(instance);
}
internal static void SetInstanceField(Type type, object instance, string fieldName, object value)
{
BindingFlags bindingAttr = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
FieldInfo field = type.GetField(fieldName, bindingAttr);
field.SetValue(instance, value);
}
private static T? PickRandomOf<T>(IList<T> collection) where T : struct
{
return (collection.Count > 0) ? new T?(collection[Random.Range(0, collection.Count)]) : null;
}
private static void HandleGiveItem(CharacterMaster characterMaster, PickupDef pickupDef, int amount = 1)
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0075: Unknown result type (might be due to invalid IL or missing references)
for (int i = 0; i < amount; i++)
{
characterMaster.inventory.GiveItem(pickupDef.itemIndex, 1);
}
NetworkUser networkUser = characterMaster.playerCharacterMasterController.networkUser;
int? num = ((networkUser == null) ? null : ((NetworkBehaviour)networkUser).connectionToClient?.connectionId);
if (num.HasValue)
{
NetworkHandler.SendItemPickupMessage(num.Value, pickupDef.pickupIndex);
}
}
public static void HandleRichMessageUnlockAndNotification(CharacterMaster characterMaster, PickupIndex pickupIndex)
{
//IL_0054: Unknown result type (might be due to invalid IL or missing references)
//IL_005a: Unknown result type (might be due to invalid IL or missing references)
//IL_0047: Unknown result type (might be due to invalid IL or missing references)
//IL_0070: Unknown result type (might be due to invalid IL or missing references)
if (!ShareSuite.RichMessagesEnabled.Value || !((NetworkBehaviour)characterMaster).isLocalPlayer)
{
return;
}
PlayerCharacterMasterController playerCharacterMasterController = characterMaster.playerCharacterMasterController;
if (playerCharacterMasterController != null)
{
NetworkUser networkUser = playerCharacterMasterController.networkUser;
if (networkUser != null)
{
LocalUser localUser = networkUser.localUser;
if (localUser != null)
{
localUser.userProfile.DiscoverPickup(pickupIndex);
}
}
}
if (characterMaster.inventory.GetItemCount(PickupCatalog.GetPickupDef(pickupIndex).itemIndex) <= 1)
{
CharacterMasterNotificationQueue.PushPickupNotification(characterMaster, pickupIndex);
}
}
}
public static class MoneySharingHooks
{
public static bool MapTransitionActive;
public static int SharedMoneyValue;
internal static void UnHook()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Expected O, but got Unknown
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Expected O, but got Unknown
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Expected O, but got Unknown
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_0048: Expected O, but got Unknown
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
//IL_005a: Expected O, but got Unknown
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_006c: Expected O, but got Unknown
//IL_0074: Unknown result type (might be due to invalid IL or missing references)
//IL_007e: Expected O, but got Unknown
//IL_0086: Unknown result type (might be due to invalid IL or missing references)
//IL_0090: Expected O, but got Unknown
//IL_0098: Unknown result type (might be due to invalid IL or missing references)
//IL_00a2: Expected O, but got Unknown
//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
//IL_00b4: Expected O, but got Unknown
//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
//IL_00c6: Expected O, but got Unknown
//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
//IL_00d8: Expected O, but got Unknown
//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
//IL_00ea: Expected O, but got Unknown
SceneDirector.Start -= new hook_Start(ResetClassValues);
HealthComponent.TakeDamage -= new hook_TakeDamage(BrittleCrownDamageHook);
GlobalEventManager.OnHitEnemy -= new hook_OnHitEnemy(BrittleCrownOnHitHook);
DeathRewards.OnKilledServer -= new hook_OnKilledServer(ShareKillMoney);
BarrelInteraction.OnInteractionBegin -= new hook_OnInteractionBegin(ShareBarrelMoney);
MoneyPickup.OnTriggerStay -= new hook_OnTriggerStay(ShareTomeMoney);
SceneExitController.Begin -= new hook_Begin(SplitExitMoney);
PurchaseInteraction.OnInteractionBegin -= new hook_OnInteractionBegin(OnShopPurchase);
GoldGatFire.FireBullet -= new hook_FireBullet(GoldGatFireHook);
NetworkManagerSystem.OnClientConnect -= new hook_OnClientConnect(GoldGatConnect);
NetworkManagerSystem.OnClientDisconnect -= new hook_OnClientDisconnect(GoldGatDisconnect);
HealthComponent.TakeDamage -= new hook_TakeDamage(RollOfPenniesDamageHook);
GoldGatFire.FireBullet -= new Manipulator(RemoveGoldGatMoneyLine);
}
internal static void Hook()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Expected O, but got Unknown
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Expected O, but got Unknown
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Expected O, but got Unknown
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_0048: Expected O, but got Unknown
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
//IL_005a: Expected O, but got Unknown
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_006c: Expected O, but got Unknown
//IL_0074: Unknown result type (might be due to invalid IL or missing references)
//IL_007e: Expected O, but got Unknown
//IL_0086: Unknown result type (might be due to invalid IL or missing references)
//IL_0090: Expected O, but got Unknown
//IL_0098: Unknown result type (might be due to invalid IL or missing references)
//IL_00a2: Expected O, but got Unknown
//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
//IL_00b4: Expected O, but got Unknown
//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
//IL_00c6: Expected O, but got Unknown
//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
//IL_00d8: Expected O, but got Unknown
//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
//IL_0102: Expected O, but got Unknown
SceneDirector.Start += new hook_Start(ResetClassValues);
HealthComponent.TakeDamage += new hook_TakeDamage(BrittleCrownDamageHook);
GlobalEventManager.OnHitEnemy += new hook_OnHitEnemy(BrittleCrownOnHitHook);
DeathRewards.OnKilledServer += new hook_OnKilledServer(ShareKillMoney);
BarrelInteraction.OnInteractionBegin += new hook_OnInteractionBegin(ShareBarrelMoney);
MoneyPickup.OnTriggerStay += new hook_OnTriggerStay(ShareTomeMoney);
SceneExitController.Begin += new hook_Begin(SplitExitMoney);
PurchaseInteraction.OnInteractionBegin += new hook_OnInteractionBegin(OnShopPurchase);
GoldGatFire.FireBullet += new hook_FireBullet(GoldGatFireHook);
NetworkManagerSystem.OnClientConnect += new hook_OnClientConnect(GoldGatConnect);
NetworkManagerSystem.OnClientDisconnect += new hook_OnClientDisconnect(GoldGatDisconnect);
HealthComponent.TakeDamage += new hook_TakeDamage(RollOfPenniesDamageHook);
if (ShareSuite.MoneyIsShared.Value && GeneralHooks.IsMultiplayer())
{
GoldGatFire.FireBullet += new Manipulator(RemoveGoldGatMoneyLine);
}
}
private static void ShareTomeMoney(orig_OnTriggerStay orig, MoneyPickup self, Collider other)
{
if ((Object)(object)self.baseObject == (Object)null || !ShareSuite.MoneyIsShared.Value)
{
orig.Invoke(self, other);
return;
}
int num = ((!self.shouldScale) ? self.baseGoldReward : ((int)((float)self.baseGoldReward * Mathf.Pow(Run.instance.difficultyCoefficient, 1.25f))));
orig.Invoke(self, other);
if (!Reflection.GetFieldValue<bool>((object)self, "alive"))
{
SharedMoneyValue += num;
if (ShareSuite.MoneyScalarEnabled.Value && NetworkServer.active)
{
AddToSharedMoneyValue(num);
}
}
}
public static void AddMoneyExternal(int amount)
{
if (ShareSuite.MoneyIsShared.Value)
{
SharedMoneyValue += amount;
return;
}
foreach (CharacterMaster item in PlayerCharacterMasterController.instances.Select((PlayerCharacterMasterController p) => p.master))
{
item.money += (uint)amount;
}
}
public static bool SharedMoneyEnabled()
{
return ShareSuite.MoneyIsShared.Value;
}
private static void OnShopPurchase(orig_OnInteractionBegin orig, PurchaseInteraction self, Interactor activator)
{
//IL_0026: Unknown result type (might be due to invalid IL or missing references)
//IL_002b: Unknown result type (might be due to invalid IL or missing references)
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Invalid comparison between Unknown and I4
//IL_0034: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Invalid comparison between Unknown and I4
if (ShareSuite.MoneyIsShared.Value && GeneralHooks.IsMultiplayer() && Object.op_Implicit((Object)(object)self))
{
CostTypeIndex costType = self.costType;
CostTypeIndex val = costType;
if ((int)val == 1)
{
if (self.cost <= SharedMoneyValue)
{
orig.Invoke(self, activator);
SharedMoneyValue -= self.cost;
}
return;
}
if ((int)val == 2)
{
orig.Invoke(self, activator);
int num = 0;
foreach (PlayerCharacterMasterController instance in PlayerCharacterMasterController.instances)
{
float maxHealth = instance.master.GetBody().maxHealth;
if (maxHealth > (float)num)
{
num = (int)maxHealth;
}
}
PurchaseInteraction component = ((Component)self).GetComponent<PurchaseInteraction>();
ShrineBloodBehavior component2 = ((Component)self).GetComponent<ShrineBloodBehavior>();
uint num2 = (uint)((double)(num * component.cost) / 100.0 * (double)component2.goldToPaidHpRatio);
if (ShareSuite.MoneyScalarEnabled.Value)
{
num2 = (uint)((double)num2 * ShareSuite.MoneyScalar.Value);
}
SharedMoneyValue += (int)num2;
return;
}
}
orig.Invoke(self, activator);
}
private static void SplitExitMoney(orig_Begin orig, SceneExitController self)
{
MapTransitionActive = true;
if (!ShareSuite.MoneyIsShared.Value || !GeneralHooks.IsMultiplayer())
{
orig.Invoke(self);
return;
}
int count = PlayerCharacterMasterController.instances.Count;
foreach (PlayerCharacterMasterController instance in PlayerCharacterMasterController.instances)
{
instance.master.money = (uint)Mathf.FloorToInt((float)(instance.master.money / count));
}
orig.Invoke(self);
}
private static void ShareBarrelMoney(orig_OnInteractionBegin orig, BarrelInteraction self, Interactor activator)
{
orig.Invoke(self, activator);
if (GeneralHooks.IsMultiplayer())
{
SharedMoneyValue += self.goldReward;
if (ShareSuite.MoneyScalarEnabled.Value && NetworkServer.active)
{
AddToSharedMoneyValue(self.goldReward);
}
}
}
private static void ShareKillMoney(orig_OnKilledServer orig, DeathRewards self, DamageReport damageReport)
{
orig.Invoke(self, damageReport);
if (GeneralHooks.IsMultiplayer())
{
SharedMoneyValue += (int)self.goldReward;
if (ShareSuite.MoneyScalarEnabled.Value && NetworkServer.active)
{
AddToSharedMoneyValue(self.goldReward);
}
}
}
private static void ResetClassValues(orig_Start orig, SceneDirector self)
{
SetTeleporterActive(active: false);
if (ShareSuite.MoneyIsShared.Value && GeneralHooks.IsMultiplayer())
{
SharedMoneyValue = 15;
}
orig.Invoke(self);
}
private static void GoldGatFireHook(orig_FireBullet orig, GoldGatFire self)
{
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
if (!GeneralHooks.IsMultiplayer() || !ShareSuite.MoneyIsShared.Value)
{
orig.Invoke(self);
return;
}
CharacterMaster fieldValue = Reflection.GetFieldValue<CharacterMaster>((object)self, "bodyMaster");
int num = (int)((float)GoldGatFire.baseMoneyCostPerBullet * (1f + ((float)TeamManager.instance.GetTeamLevel(fieldValue.teamIndex) - 1f) * 0.25f));
SharedMoneyValue = Math.Max(SharedMoneyValue - num, 0);
orig.Invoke(self);
}
public static void RemoveGoldGatMoneyLine(ILContext il)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Expected O, but got Unknown
ILCursor val = new ILCursor(il);
FieldReference val4 = default(FieldReference);
float num = default(float);
FieldReference val3 = default(FieldReference);
MethodReference val2 = default(MethodReference);
val.GotoNext(new Func<Instruction, bool>[6]
{
(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
(Instruction x) => ILPatternMatchingExt.MatchLdfld(x, ref val4),
(Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, ref num),
(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
(Instruction x) => ILPatternMatchingExt.MatchLdfld(x, ref val3),
(Instruction x) => ILPatternMatchingExt.MatchCallvirt(x, ref val2)
});
val.RemoveRange(14);
}
private static void GoldGatDisconnect(orig_OnClientDisconnect orig, NetworkManagerSystem self, NetworkConnection conn)
{
bool wasMultiplayer = GeneralHooks.IsMultiplayer();
orig.Invoke(self, conn);
ToggleGoldGat(wasMultiplayer);
}
private static void GoldGatConnect(orig_OnClientConnect orig, NetworkManagerSystem self, NetworkConnection conn)
{
bool wasMultiplayer = GeneralHooks.IsMultiplayer();
orig.Invoke(self, conn);
ToggleGoldGat(wasMultiplayer);
}
private static void ToggleGoldGat(bool wasMultiplayer)
{
//IL_003f: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Expected O, but got Unknown
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: Expected O, but got Unknown
bool flag = GeneralHooks.IsMultiplayer();
if (wasMultiplayer != flag)
{
if (ShareSuite.MoneyIsShared.Value && flag)
{
GoldGatFire.FireBullet += new Manipulator(RemoveGoldGatMoneyLine);
}
else
{
GoldGatFire.FireBullet -= new Manipulator(RemoveGoldGatMoneyLine);
}
}
}
private static void BrittleCrownDamageHook(orig_TakeDamage orig, HealthComponent self, DamageInfo info)
{
//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
//IL_0141: Unknown result type (might be due to invalid IL or missing references)
//IL_0146: Unknown result type (might be due to invalid IL or missing references)
if (!NetworkServer.active)
{
orig.Invoke(self, info);
return;
}
if (!ShareSuite.MoneyIsShared.Value || !GeneralHooks.IsMultiplayer() || !Object.op_Implicit((Object)(object)self.body) || !Object.op_Implicit((Object)(object)self.body.inventory))
{
orig.Invoke(self, info);
return;
}
CharacterBody body = self.body;
uint money = self.body.master.money;
orig.Invoke(self, info);
if (!self.alive)
{
return;
}
uint money2 = self.body.master.money;
if (body.inventory.GetItemCount(ItemCatalog.FindItemIndex("GoldOnHit")) <= 0)
{
return;
}
SharedMoneyValue += (int)(money2 - money);
foreach (PlayerCharacterMasterController instance in PlayerCharacterMasterController.instances)
{
if (Object.op_Implicit((Object)(object)instance.master.GetBody()) && !((Object)(object)instance.master.GetBody() == (Object)(object)body))
{
EffectManager.SimpleImpactEffect(Resources.Load<GameObject>("Prefabs/Effects/ImpactEffects/CoinImpact"), instance.master.GetBody().corePosition, Vector3.up, true);
}
}
}
private static void RollOfPenniesDamageHook(orig_TakeDamage orig, HealthComponent self, DamageInfo info)
{
//IL_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_0148: Unknown result type (might be due to invalid IL or missing references)
//IL_014d: Unknown result type (might be due to invalid IL or missing references)
orig.Invoke(self, info);
if (!NetworkServer.active || !ShareSuite.MoneyIsShared.Value || !GeneralHooks.IsMultiplayer() || !self.alive)
{
return;
}
CharacterBody body = self.body;
if (!Object.op_Implicit((Object)(object)((body != null) ? body.inventory : null)))
{
return;
}
int itemCount = self.body.inventory.GetItemCount(ItemCatalog.FindItemIndex("GoldOnHurt"));
if (itemCount <= 0)
{
return;
}
CharacterBody val = null;
if (Object.op_Implicit((Object)(object)info.attacker))
{
val = info.attacker.GetComponent<CharacterBody>();
}
if ((Object)(object)val == (Object)null || (Object)(object)val == (Object)(object)self.body)
{
return;
}
SharedMoneyValue += Mathf.FloorToInt((float)(itemCount * 3) * Run.instance.difficultyCoefficient);
foreach (PlayerCharacterMasterController instance in PlayerCharacterMasterController.instances)
{
if (Object.op_Implicit((Object)(object)instance.master.GetBody()) && !((Object)(object)instance.master.GetBody() == (Object)(object)self.body))
{
EffectManager.SimpleImpactEffect(Resources.Load<GameObject>("Prefabs/Effects/ImpactEffects/CoinImpact"), instance.master.GetBody().corePosition, Vector3.up, true);
}
}
}
private static void BrittleCrownOnHitHook(orig_OnHitEnemy orig, GlobalEventManager self, DamageInfo info, GameObject victim)
{
//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
if (!ShareSuite.MoneyIsShared.Value || !GeneralHooks.IsMultiplayer() || !Object.op_Implicit((Object)(object)info.attacker) || !Object.op_Implicit((Object)(object)info.attacker.GetComponent<CharacterBody>()) || !Object.op_Implicit((Object)(object)info.attacker.GetComponent<CharacterBody>().master))
{
orig.Invoke(self, info, victim);
return;
}
CharacterBody component = info.attacker.GetComponent<CharacterBody>();
uint money = component.master.money;
orig.Invoke(self, info, victim);
uint money2 = component.master.money;
if (Object.op_Implicit((Object)(object)component.inventory) && component.inventory.GetItemCount(ItemCatalog.FindItemIndex("GoldOnHit")) > 0)
{
SharedMoneyValue += (int)(money2 - money);
}
}
private static void AddToSharedMoneyValue(float goldReward)
{
SharedMoneyValue = Math.Max(SharedMoneyValue + (int)Mathf.Floor(goldReward * (float)ShareSuite.MoneyScalar.Value - goldReward), 0);
}
public static void SetTeleporterActive(bool active)
{
MapTransitionActive = active;
}
}
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInPlugin("com.funkfrog_sipondo.sharesuite", "ShareSuite", "2.9.0")]
[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
public class ShareSuite : BaseUnityPlugin
{
public static string MessageSendVer = "2.9";
public static ConfigEntry<bool> ModIsEnabled;
public static ConfigEntry<bool> MoneyIsShared;
public static ConfigEntry<bool> WhiteItemsShared;
public static ConfigEntry<bool> GreenItemsShared;
public static ConfigEntry<bool> RedItemsShared;
public static ConfigEntry<bool> EquipmentShared;
public static ConfigEntry<bool> LunarItemsShared;
public static ConfigEntry<bool> BossItemsShared;
public static ConfigEntry<bool> VoidItemsShared;
public static ConfigEntry<bool> RichMessagesEnabled;
public static ConfigEntry<bool> DropBlacklistedEquipmentOnShare;
public static ConfigEntry<bool> PrinterCauldronFixEnabled;
public static ConfigEntry<bool> DeadPlayersGetItems;
public static ConfigEntry<bool> OverridePlayerScalingEnabled;
public static ConfigEntry<bool> OverrideBossLootScalingEnabled;
public static ConfigEntry<bool> OverrideVoidFieldLootScalingEnabled;
public static ConfigEntry<bool> OverrideSimulacrumLootScalingEnabled;
public static ConfigEntry<bool> SacrificeFixEnabled;
public static ConfigEntry<bool> MoneyScalarEnabled;
public static ConfigEntry<bool> RandomizeSharedPickups;
public static ConfigEntry<bool> LunarItemsRandomized;
public static ConfigEntry<bool> BossItemsRandomized;
public static ConfigEntry<bool> VoidItemsRandomized;
public static ConfigEntry<bool> OverrideMultiplayerCheck;
public static ConfigEntry<int> BossLootCredit;
public static ConfigEntry<int> VoidFieldLootCredit;
public static ConfigEntry<int> SimulacrumLootCredit;
public static ConfigEntry<int> InteractablesOffset;
public static ConfigEntry<double> InteractablesCredit;
public static ConfigEntry<double> MoneyScalar;
public static ConfigEntry<string> ItemBlacklist;
public static ConfigEntry<string> EquipmentBlacklist;
public static ConfigEntry<string> LastMessageSent;
public static ConfigEntry<short> NetworkMessageType;
private bool _previouslyEnabled;
public static int DefaultMaxScavItemDropCount = 0;
public void Update()
{
if (!ModIsEnabled.Value || !MoneyIsShared.Value || MoneySharingHooks.MapTransitionActive || !GeneralHooks.IsMultiplayer())
{
return;
}
NetworkHandler.RegisterHandlers();
if (!NetworkServer.active)
{
return;
}
foreach (PlayerCharacterMasterController instance in PlayerCharacterMasterController.instances)
{
if (!instance.master.IsDeadAndOutOfLivesServer() && instance.master.money != MoneySharingHooks.SharedMoneyValue)
{
instance.master.money = (uint)MoneySharingHooks.SharedMoneyValue;
}
}
}
public ShareSuite()
{
InitConfig();
CommandHelper.AddToConsoleWhenReady();
ReloadHooks();
MoneySharingHooks.SharedMoneyValue = 15;
}
private void ReloadHooks(object _ = null, EventArgs __ = null)
{
if (_previouslyEnabled && !ModIsEnabled.Value)
{
GeneralHooks.UnHook();
MoneySharingHooks.UnHook();
ItemSharingHooks.UnHook();
EquipmentSharingHooks.UnHook();
ChatHandler.UnHook();
_previouslyEnabled = false;
}
if (!_previouslyEnabled && ModIsEnabled.Value)
{
_previouslyEnabled = true;
GeneralHooks.Hook();
MoneySharingHooks.Hook();
ItemSharingHooks.Hook();
EquipmentSharingHooks.Hook();
ChatHandler.Hook();
}
}
private void InitConfig()
{
ModIsEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>("Settings", "ModEnabled", true, "Toggles whether or not the mod is enabled. If turned off while in-game, it will unhook everything and reset the game to it's default behaviors.");
ModIsEnabled.SettingChanged += ReloadHooks;
MoneyIsShared = ((BaseUnityPlugin)this).Config.Bind<bool>("Settings", "MoneyShared", true, "Toggles money sharing between teammates. Every player gains money together and spends it from one central pool of money.");
WhiteItemsShared = ((BaseUnityPlugin)this).Config.Bind<bool>("Settings", "WhiteItemsShared", true, "Toggles item sharing for common (white color) items.");
GreenItemsShared = ((BaseUnityPlugin)this).Config.Bind<bool>("Settings", "GreenItemsShared", true, "Toggles item sharing for rare (green color) items.");
RedItemsShared = ((BaseUnityPlugin)this).Config.Bind<bool>("Settings", "RedItemsShared", true, "Toggles item sharing for legendary (red color) items.");
EquipmentShared = ((BaseUnityPlugin)this).Config.Bind<bool>("Settings", "EquipmentShared", false, "Toggles item sharing for equipment.");
LunarItemsShared = ((BaseUnityPlugin)this).Config.Bind<bool>("Settings", "LunarItemsShared", false, "Toggles item sharing for Lunar (blue color) items.");
BossItemsShared = ((BaseUnityPlugin)this).Config.Bind<bool>("Settings", "BossItemsShared", true, "Toggles item sharing for boss (yellow color) items.");
VoidItemsShared = ((BaseUnityPlugin)this).Config.Bind<bool>("Settings", "VoidItemsShared", false, "Toggles item sharing for void (purple/corrupted) items.");
RichMessagesEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>("Settings", "RichMessagesEnabled", true, "Toggles detailed item pickup messages with information on who picked the item up and who all received the item.");
DropBlacklistedEquipmentOnShare = ((BaseUnityPlugin)this).Config.Bind<bool>("Balance", "DropBlacklistedEquipmentOnShare", false, "Changes the way shared equipment handles blacklisted equipment. If true, blacklisted equipment will be dropped on the ground once a new equipment is shared. If false, blacklisted equipment is left untouched when new equipment is shared.");
RandomizeSharedPickups = ((BaseUnityPlugin)this).Config.Bind<bool>("Balance", "RandomizeSharedPickups", false, "When enabled each player (except the player who picked up the item) will get a randomized item of the same rarity.");
LunarItemsRandomized = ((BaseUnityPlugin)this).Config.Bind<bool>("Balance", "LunarItemsRandomized", true, "Toggles randomizing Lunar items in RandomizeSharedPickups mode.");
BossItemsRandomized = ((BaseUnityPlugin)this).Config.Bind<bool>("Balance", "BossItemsRandomized", false, "Toggles randomizing Boss items in RandomizeSharedPickups mode.");
VoidItemsRandomized = ((BaseUnityPlugin)this).Config.Bind<bool>("Balance", "VoidItemsRandomized", false, "Toggles randomizing Void items in RandomizeSharedPickups mode.");
PrinterCauldronFixEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>("Balance", "PrinterCauldronFix", true, "Toggles 3D printer and Cauldron item dupe fix by giving the item directly instead of dropping it on the ground.");
DeadPlayersGetItems = ((BaseUnityPlugin)this).Config.Bind<bool>("Balance", "DeadPlayersGetItems", true, "Toggles whether or not dead players should get copies of picked up items.");
OverridePlayerScalingEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>("Balance", "OverridePlayerScaling", true, "Toggles override of the scalar of interactables (chests, shrines, etc) that spawn in the world to your configured credit.");
InteractablesCredit = ((BaseUnityPlugin)this).Config.Bind<double>("Balance", "InteractablesCredit", 1.0, "If player scaling via this mod is enabled, the amount of players the game should think are playing in terms of chest spawns.");
InteractablesOffset = ((BaseUnityPlugin)this).Config.Bind<int>("Balance", "InteractablesOffset", 0, "If player scaling via this mod is enabled, the offset from base scaling for interactables credit (e.g. 100 would add 100 interactables credit (not 100 interactables), can also be negative).");
OverrideBossLootScalingEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>("Balance", "OverrideBossLootScaling", true, "Toggles override of the scalar of boss loot drops to your configured balance.");
BossLootCredit = ((BaseUnityPlugin)this).Config.Bind<int>("Balance", "BossLootCredit", 1, "Specifies the amount of boss items dropped when the boss drop override is true.");
OverrideVoidFieldLootScalingEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>("Balance", "OverrideVoidLootScaling", true, "Toggles override of the scalar of Void Field loot drops to your configured balance.");
OverrideSimulacrumLootScalingEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>("Balance", "OverrideSimulacrumLootScaling", true, "Toggles override of the scalar of Simulacrum loot drops to your configured balance.");
OverrideMultiplayerCheck = ((BaseUnityPlugin)this).Config.Bind<bool>("Debug", "OverrideMultiplayerCheck", false, "Forces ShareSuite to think that the game is running in a multiplayer instance.");
LastMessageSent = ((BaseUnityPlugin)this).Config.Bind<string>("Debug", "LastMessageSent", "none", "Keeps track of the last mod version that sent you a message. Prevents spam, don't touch.");
VoidFieldLootCredit = ((BaseUnityPlugin)this).Config.Bind<int>("Balance", "VoidFieldLootCredit", 1, "Specifies the amount of items dropped from completed Void Fields when the Void Field scaling override is true.");
SimulacrumLootCredit = ((BaseUnityPlugin)this).Config.Bind<int>("Balance", "SimulacrumLootCredit", 1, "Specifies the amount of items dropped after each Simulacrum round when the Simulacrum scaling override is true.");
SacrificeFixEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>("Balance", "SacrificeFixEnabled", true, "Toggles the reduction in sacrifice loot drops to be balanced with shared items enabled.");
MoneyScalarEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>("Settings", "MoneyScalarEnabled", false, "Toggles the money scalar, set MoneyScalar to an amount to fine-tune the amount of gold you recieve.");
MoneyScalar = ((BaseUnityPlugin)this).Config.Bind<double>("Settings", "MoneyScalar", 1.0, "Modifies player count used in calculations of gold earned when money sharing is on.");
ItemBlacklist = ((BaseUnityPlugin)this).Config.Bind<string>("Settings", "ItemBlacklist", "BeetleGland,TreasureCache,TitanGoldDuringTP,TPHealingNova,ArtifactKey,FreeChest,RoboBallBuddy,MinorConstructOnKill", "Items (by internal name) that you do not want to share, comma separated. Please find the item \"Code Names\" at: https://github.com/risk-of-thunder/R2Wiki/wiki/Item-&-Equipment-IDs-and-Names");
ItemBlacklist.SettingChanged += delegate
{
Blacklist.Recalculate();
};
EquipmentBlacklist = ((BaseUnityPlugin)this).Config.Bind<string>("Settings", "EquipmentBlacklist", "", "Equipment (by internal name) that you do not want to share, comma separated. Please find the \"Code Names\"s at: https://github.com/risk-of-thunder/R2Wiki/wiki/Item-&-Equipment-IDs-and-Names");
EquipmentBlacklist.SettingChanged += delegate
{
Blacklist.Recalculate();
};
NetworkMessageType = ((BaseUnityPlugin)this).Config.Bind<short>("Settings", "NetworkMessageType", (short)1021, "The identifier for network message for this mod. Must be unique across all mods.");
}
[ConCommand(/*Could not decode attribute arguments.*/)]
private static void CcModIsEnabled(ConCommandArgs args)
{
if (((ConCommandArgs)(ref args)).Count == 0)
{
Debug.Log((object)ModIsEnabled.Value);
return;
}
bool? flag = TryGetBool(((ConCommandArgs)(ref args))[0]);
if (!flag.HasValue)
{
Debug.Log((object)"Couldn't parse to boolean.");
return;
}
ModIsEnabled.Value = flag.Value;
Debug.Log((object)$"Mod status set to {ModIsEnabled.Value}.");
}
[ConCommand(/*Could not decode attribute arguments.*/)]
private static void CcMoneyIsShared(ConCommandArgs args)
{
//IL_0099: Unknown result type (might be due to invalid IL or missing references)
//IL_00a3: Expected O, but got Unknown
//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
//IL_00c4: Expected O, but got Unknown
if (((ConCommandArgs)(ref args)).Count == 0)
{
Debug.Log((object)MoneyIsShared.Value);
return;
}
bool? flag = TryGetBool(((ConCommandArgs)(ref args))[0]);
if (!flag.HasValue)
{
Debug.Log((object)"Couldn't parse to boolean.");
return;
}
if (MoneyIsShared.Value != flag.Value)
{
if (MoneyIsShared.Value && !flag.Value)
{
GoldGatFire.FireBullet -= new Manipulator(MoneySharingHooks.RemoveGoldGatMoneyLine);
}
else if (GeneralHooks.IsMultiplayer())
{
GoldGatFire.FireBullet += new Manipulator(MoneySharingHooks.RemoveGoldGatMoneyLine);
}
}
MoneyIsShared.Value = flag.Value;
Debug.Log((object)$"Money sharing status set to {MoneyIsShared.Value}.");
}
[ConCommand(/*Could not decode attribute arguments.*/)]
private static void CcMoneyScalarEnabled(ConCommandArgs args)
{
if (((ConCommandArgs)(ref args)).Count == 0)
{
Debug.Log((object)MoneyScalarEnabled.Value);
return;
}
bool? flag = TryGetBool(((ConCommandArgs)(ref args))[0]);
if (!flag.HasValue)
{
Debug.Log((object)"Couldn't parse to boolean.");
return;
}
MoneyScalarEnabled.Value = flag.Value;
Debug.Log((object)$"Money sharing scalar status set to {MoneyScalarEnabled.Value}.");
}
[ConCommand(/*Could not decode attribute arguments.*/)]
private static void CcMoneyScalar(ConCommandArgs args)
{
if (((ConCommandArgs)(ref args)).Count == 0)
{
Debug.Log((object)MoneyScalar.Value);
return;
}
double? num = ((ConCommandArgs)(ref args)).TryGetArgDouble(0);
if (!num.HasValue)
{
Debug.Log((object)"Couldn't parse to a number.");
return;
}
MoneyScalar.Value = num.Value;
Debug.Log((object)$"Mod status set to {MoneyScalar.Value}.");
}
[ConCommand(/*Could not decode attribute arguments.*/)]
private static void CcWhiteShared(ConCommandArgs args)
{
if (((ConCommandArgs)(ref args)).Count == 0)
{
Debug.Log((object)WhiteItemsShared.Value);
return;
}
bool? flag = TryGetBool(((ConCommandArgs)(ref args))[0]);
if (!flag.HasValue)
{
Debug.Log((object)"Couldn't parse to boolean.");
return;
}
WhiteItemsShared.Value = flag.Value;
Debug.Log((object)$"White items sharing set to {WhiteItemsShared.Value}.");
}
[ConCommand(/*Could not decode attribute arguments.*/)]
private static void CcGreenShared(ConCommandArgs args)
{
if (((ConCommandArgs)(ref args)).Count == 0)
{
Debug.Log((object)GreenItemsShared.Value);
return;
}
bool? flag = TryGetBool(((ConCommandArgs)(ref args))[0]);
if (!flag.HasValue)
{
Debug.Log((object)"Couldn't parse to boolean.");
return;
}
GreenItemsShared.Value = flag.Value;
Debug.Log((object)$"Green items sharing set to {GreenItemsShared.Value}.");
}
[ConCommand(/*Could not decode attribute arguments.*/)]
private static void CcRedShared(ConCommandArgs args)
{
if (((ConCommandArgs)(ref args)).Count == 0)
{
Debug.Log((object)RedItemsShared.Value);
return;
}
bool? flag = TryGetBool(((ConCommandArgs)(ref args))[0]);
if (!flag.HasValue)
{
Debug.Log((object)"Couldn't parse to boolean.");
return;
}
RedItemsShared.Value = flag.Value;
Debug.Log((object)$"Red item sharing set to {RedItemsShared.Value}.");
}
[ConCommand(/*Could not decode attribute arguments.*/)]
private static void CcEquipmentShared(ConCommandArgs args)
{
if (((ConCommandArgs)(ref args)).Count == 0)
{
Debug.Log((object)EquipmentShared.Value);
return;
}
bool? flag = TryGetBool(((ConCommandArgs)(ref args))[0]);
if (!flag.HasValue)
{
Debug.Log((object)"Couldn't parse to boolean.");
return;
}
EquipmentShared.Value = flag.Value;
Debug.Log((object)$"Equipment sharing set to {EquipmentShared.Value}.");
}
[ConCommand(/*Could not decode attribute arguments.*/)]
private static void CcLunarShared(ConCommandArgs args)
{
if (((ConCommandArgs)(ref args)).Count == 0)
{
Debug.Log((object)LunarItemsShared.Value);
return;
}
bool? flag = TryGetBool(((ConCommandArgs)(ref args))[0]);
if (!flag.HasValue)
{
Debug.Log((object)"Couldn't parse to boolean.");
return;
}
LunarItemsShared.Value = flag.Value;
Debug.Log((object)$"Lunar item sharing set to {LunarItemsShared.Value}.");
}
[ConCommand(/*Could not decode attribute arguments.*/)]
private static void CcBossShared(ConCommandArgs args)
{
if (((ConCommandArgs)(ref args)).Count == 0)
{
Debug.Log((object)BossItemsShared.Value);
return;
}
bool? flag = TryGetBool(((ConCommandArgs)(ref args))[0]);
if (!flag.HasValue)
{
Debug.Log((object)"Couldn't parse to boolean.");
return;
}
BossItemsShared.Value = flag.Value;
Debug.Log((object)$"Boss item sharing set to {BossItemsShared.Value}.");
}
[ConCommand(/*Could not decode attribute arguments.*/)]
private static void CcVoidItemsShared(ConCommandArgs args)
{
if (((ConCommandArgs)(ref args)).Count == 0)
{
Debug.Log((object)VoidItemsShared.Value);
return;
}
bool? flag = TryGetBool(((ConCommandArgs)(ref args))[0]);
if (!flag.HasValue)
{
Debug.Log((object)"Couldn't parse to boolean.");
return;
}
VoidItemsShared.Value = flag.Value;
Debug.Log((object)$"Void item sharing set to {VoidItemsShared.Value}.");
}
[ConCommand(/*Could not decode attribute arguments.*/)]
private static void CcMessagesEnabled(ConCommandArgs args)
{
if (((ConCommandArgs)(ref args)).Count == 0)
{
Debug.Log((object)RichMessagesEnabled.Value);
return;
}
bool? flag = TryGetBool(((ConCommandArgs)(ref args))[0]);
if (!flag.HasValue)
{
Debug.Log((object)"Couldn't parse to boolean.");
return;
}
RichMessagesEnabled.Value = flag.Value;
Debug.Log((object)$"Rich Messages Enabled set to {RichMessagesEnabled.Value}.");
}
[ConCommand(/*Could not decode attribute arguments.*/)]
private static void CcDropBlacklistedEquipmentOnShare(ConCommandArgs args)
{
if (((ConCommandArgs)(ref args)).Count == 0)
{
Debug.Log((object)DropBlacklistedEquipmentOnShare.Value);
return;
}
bool? flag = TryGetBool(((ConCommandArgs)(ref args))[0]);
if (!flag.HasValue)
{
Debug.Log((object)"Couldn't parse to boolean.");
return;
}
DropBlacklistedEquipmentOnShare.Value = flag.Value;
Debug.Log((object)$"Drop Blacklisted Equipment on Share set to {DropBlacklistedEquipmentOnShare.Value}.");
}
[ConCommand(/*Could not decode attribute arguments.*/)]
private static void CcRandomizeSharedPickups(ConCommandArgs args)
{
if (((ConCommandArgs)(ref args)).Count == 0)
{
Debug.Log((object)RandomizeSharedPickups.Value);
return;
}
bool? flag = TryGetBool(((ConCommandArgs)(ref args))[0]);
if (!flag.HasValue)
{
Debug.Log((object)"Couldn't parse to boolean.");
return;
}
RandomizeSharedPickups.Value = flag.Value;
Debug.Log((object)$"Randomize pickups per player set to {RandomizeSharedPickups.Value}.");
}
[ConCommand(/*Could not decode attribute arguments.*/)]
priva