using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Serialization;
using System.Runtime.Versioning;
using System.Text;
using ArtifactOfDoom;
using ArtifactOfDoomTinyJson;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using On.RoR2;
using On.RoR2.UI;
using R2API;
using RoR2;
using RoR2.Stats;
using RoR2.UI;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
[assembly: AssemblyTitle("ArtifactOfDoom")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyCompany("ArtifactOfDoom")]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: CompilationRelaxations(8)]
[assembly: AssemblyProduct("ArtifactOfDoom")]
[assembly: AssemblyVersion("1.0.0.0")]
public class NetworkClass
{
internal static GameObject CentralNetworkObject;
internal static GameObject _centralNetworkObjectSpawned;
public NetworkClass()
{
SetupConfig();
}
public void SetupConfig()
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: Expected O, but got Unknown
GameObject val = new GameObject("ArtifactOfDoomNetworkingPrefab");
val.AddComponent<NetworkIdentity>();
CentralNetworkObject = PrefabAPI.InstantiateClone(val, "ArtifactOfDoomNetworking", true);
CentralNetworkObject.AddComponent<Networking>();
}
internal static void EnsureNetworking()
{
if (!Object.op_Implicit((Object)(object)_centralNetworkObjectSpawned))
{
_centralNetworkObjectSpawned = Object.Instantiate<GameObject>(CentralNetworkObject);
NetworkServer.Spawn(_centralNetworkObjectSpawned);
}
}
}
public class Networking : NetworkBehaviour
{
public static Networking _instance;
[SyncVar]
public bool IsArtifactEnabled = false;
[SyncVar]
public bool IsCalculationSacrifice = false;
internal static readonly List<NetworkConnection> checkedConnections;
private static int kTargetRpcTargetUpdateProgressBar;
private static int kTargetRpcTargetAddGainedItemsToPlayers;
private static int kTargetRpcTargetAddLostItemsOfPlayers;
public bool NetworkIsArtifactEnabled
{
get
{
return IsArtifactEnabled;
}
[param: In]
set
{
((NetworkBehaviour)this).SetSyncVar<bool>(value, ref IsArtifactEnabled, 1u);
}
}
public bool NetworkIsCalculationSacrifice
{
get
{
return IsCalculationSacrifice;
}
[param: In]
set
{
((NetworkBehaviour)this).SetSyncVar<bool>(value, ref IsCalculationSacrifice, 2u);
}
}
private void Awake()
{
_instance = this;
}
public static void ServerEnsureNetworking()
{
NetworkClass.EnsureNetworking();
}
[TargetRpc]
public void TargetUpdateProgressBar(NetworkConnection target, string killedNeededEnemies)
{
//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
//IL_0121: Unknown result type (might be due to invalid IL or missing references)
//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
NetworkClass.EnsureNetworking();
if (killedNeededEnemies == null)
{
Debug.LogError((object)"killedNeededEnemies == null");
}
if (ArtifactOfDoomConfig.disableItemProgressBar.Value || _instance.IsCalculationSacrifice)
{
return;
}
string[] array = killedNeededEnemies.Split(',');
if (array == null)
{
Debug.LogError((object)"stringkilledneededEnemies=null");
}
int num = Convert.ToInt32(array[0]);
int num2 = Convert.ToInt32(array[1]) + 2;
double num3 = (double)num / (double)num2;
if (0.35f + (float)(num3 * 0.3) > 0.65f)
{
_ = ArtifactOfDoomUI.itemGainBar.GetComponent<RectTransform>().anchorMax;
if (false)
{
Debug.LogError((object)"itemGainBar.GetComponent<RectTransform>().anchorMax==null");
}
ArtifactOfDoomUI.itemGainBar.GetComponent<RectTransform>().anchorMax = new Vector2(0.65f, 0.06f);
}
else
{
ArtifactOfDoomUI.itemGainBar.GetComponent<RectTransform>().anchorMin = new Vector2(0.35f, 0.05f);
ArtifactOfDoomUI.itemGainBar.GetComponent<RectTransform>().anchorMax = new Vector2(0.35f + (float)(num3 * 0.3), 0.06f);
}
}
[TargetRpc]
public void TargetAddGainedItemsToPlayers(NetworkConnection target, string QueueGainedItemSpriteToString)
{
//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
NetworkClass.EnsureNetworking();
if (ArtifactOfDoomConfig.disableSideBars.Value)
{
return;
}
string[] array = QueueGainedItemSpriteToString.Split(' ');
int num = 0;
string[] array2 = array;
foreach (string text in array2)
{
if (text != "")
{
if (ArtifactOfDoomUI.listGainedImages.Count <= num)
{
break;
}
if ((Object)(object)ArtifactOfDoomUI.listGainedImages[num].GetComponent<Image>() == (Object)null)
{
ArtifactOfDoomUI.listGainedImages[num].AddComponent<Image>();
}
ArtifactOfDoomUI.listGainedImages[num].GetComponent<Image>().sprite = ItemCatalog.GetItemDef(ItemCatalog.FindItemIndex(text)).pickupIconSprite;
num++;
}
}
}
[TargetRpc]
public void TargetAddLostItemsOfPlayers(NetworkConnection target, string QueueLostItemSpriteToString)
{
//IL_0083: Unknown result type (might be due to invalid IL or missing references)
if (ArtifactOfDoomConfig.disableSideBars.Value)
{
return;
}
string[] array = QueueLostItemSpriteToString.Split(' ');
int num = 0;
string[] array2 = array;
foreach (string text in array2)
{
if (text != "")
{
if ((Object)(object)ArtifactOfDoomUI.listLostImages[num].GetComponent<Image>() == (Object)null)
{
ArtifactOfDoomUI.listLostImages[num].AddComponent<Image>();
}
ArtifactOfDoomUI.listLostImages[num].GetComponent<Image>().sprite = ItemCatalog.GetItemDef(ItemCatalog.FindItemIndex(text)).pickupIconSprite;
num++;
}
}
}
static Networking()
{
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_0034: Expected O, but got Unknown
//IL_0054: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Expected O, but got Unknown
//IL_007e: Unknown result type (might be due to invalid IL or missing references)
//IL_0088: Expected O, but got Unknown
checkedConnections = new List<NetworkConnection>();
kTargetRpcTargetUpdateProgressBar = 1238139520;
NetworkBehaviour.RegisterRpcDelegate(typeof(Networking), kTargetRpcTargetUpdateProgressBar, new CmdDelegate(InvokeRpcTargetUpdateProgressBar));
kTargetRpcTargetAddGainedItemsToPlayers = 691277625;
NetworkBehaviour.RegisterRpcDelegate(typeof(Networking), kTargetRpcTargetAddGainedItemsToPlayers, new CmdDelegate(InvokeRpcTargetAddGainedItemsToPlayers));
kTargetRpcTargetAddLostItemsOfPlayers = -678159965;
NetworkBehaviour.RegisterRpcDelegate(typeof(Networking), kTargetRpcTargetAddLostItemsOfPlayers, new CmdDelegate(InvokeRpcTargetAddLostItemsOfPlayers));
NetworkCRC.RegisterBehaviour("Networking", 0);
}
private void UNetVersion()
{
}
protected static void InvokeRpcTargetUpdateProgressBar(NetworkBehaviour obj, NetworkReader reader)
{
if (!NetworkClient.active)
{
Debug.LogError((object)"TargetRPC TargetUpdateProgressBar called on server.");
}
else
{
((Networking)(object)obj).TargetUpdateProgressBar(ClientScene.readyConnection, reader.ReadString());
}
}
protected static void InvokeRpcTargetAddGainedItemsToPlayers(NetworkBehaviour obj, NetworkReader reader)
{
if (!NetworkClient.active)
{
Debug.LogError((object)"TargetRPC TargetAddGainedItemsToPlayers called on server.");
}
else
{
((Networking)(object)obj).TargetAddGainedItemsToPlayers(ClientScene.readyConnection, reader.ReadString());
}
}
protected static void InvokeRpcTargetAddLostItemsOfPlayers(NetworkBehaviour obj, NetworkReader reader)
{
if (!NetworkClient.active)
{
Debug.LogError((object)"TargetRPC TargetAddLostItemsOfPlayers called on server.");
}
else
{
((Networking)(object)obj).TargetAddLostItemsOfPlayers(ClientScene.readyConnection, reader.ReadString());
}
}
public void CallTargetUpdateProgressBar(NetworkConnection target, string killedNeededEnemies)
{
//IL_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: Expected O, but got Unknown
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
if (!NetworkServer.active)
{
Debug.LogError((object)"TargetRPC Function TargetUpdateProgressBar called on client.");
return;
}
if (target is ULocalConnectionToServer)
{
Debug.LogError((object)"TargetRPC Function TargetUpdateProgressBar called on connection to server");
return;
}
NetworkWriter val = new NetworkWriter();
val.Write((short)0);
val.Write((short)2);
val.WritePackedUInt32((uint)kTargetRpcTargetUpdateProgressBar);
val.Write(((Component)this).GetComponent<NetworkIdentity>().netId);
val.Write(killedNeededEnemies);
((NetworkBehaviour)this).SendTargetRPCInternal(target, val, 0, "TargetUpdateProgressBar");
}
public void CallTargetAddGainedItemsToPlayers(NetworkConnection target, string QueueGainedItemSpriteToString)
{
//IL_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: Expected O, but got Unknown
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
if (!NetworkServer.active)
{
Debug.LogError((object)"TargetRPC Function TargetAddGainedItemsToPlayers called on client.");
return;
}
if (target is ULocalConnectionToServer)
{
Debug.LogError((object)"TargetRPC Function TargetAddGainedItemsToPlayers called on connection to server");
return;
}
NetworkWriter val = new NetworkWriter();
val.Write((short)0);
val.Write((short)2);
val.WritePackedUInt32((uint)kTargetRpcTargetAddGainedItemsToPlayers);
val.Write(((Component)this).GetComponent<NetworkIdentity>().netId);
val.Write(QueueGainedItemSpriteToString);
((NetworkBehaviour)this).SendTargetRPCInternal(target, val, 0, "TargetAddGainedItemsToPlayers");
}
public void CallTargetAddLostItemsOfPlayers(NetworkConnection target, string QueueLostItemSpriteToString)
{
//IL_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: Expected O, but got Unknown
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
if (!NetworkServer.active)
{
Debug.LogError((object)"TargetRPC Function TargetAddLostItemsOfPlayers called on client.");
return;
}
if (target is ULocalConnectionToServer)
{
Debug.LogError((object)"TargetRPC Function TargetAddLostItemsOfPlayers called on connection to server");
return;
}
NetworkWriter val = new NetworkWriter();
val.Write((short)0);
val.Write((short)2);
val.WritePackedUInt32((uint)kTargetRpcTargetAddLostItemsOfPlayers);
val.Write(((Component)this).GetComponent<NetworkIdentity>().netId);
val.Write(QueueLostItemSpriteToString);
((NetworkBehaviour)this).SendTargetRPCInternal(target, val, 0, "TargetAddLostItemsOfPlayers");
}
public override bool OnSerialize(NetworkWriter writer, bool forceAll)
{
if (forceAll)
{
writer.Write(IsArtifactEnabled);
writer.Write(IsCalculationSacrifice);
return true;
}
bool flag = false;
if ((((NetworkBehaviour)this).syncVarDirtyBits & (true ? 1u : 0u)) != 0)
{
if (!flag)
{
writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits);
flag = true;
}
writer.Write(IsArtifactEnabled);
}
if ((((NetworkBehaviour)this).syncVarDirtyBits & 2u) != 0)
{
if (!flag)
{
writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits);
flag = true;
}
writer.Write(IsCalculationSacrifice);
}
if (!flag)
{
writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits);
}
return flag;
}
public override void OnDeserialize(NetworkReader reader, bool initialState)
{
if (initialState)
{
IsArtifactEnabled = reader.ReadBoolean();
IsCalculationSacrifice = reader.ReadBoolean();
return;
}
int num = (int)reader.ReadPackedUInt32();
if (((uint)num & (true ? 1u : 0u)) != 0)
{
IsArtifactEnabled = reader.ReadBoolean();
}
if (((uint)num & 2u) != 0)
{
IsCalculationSacrifice = reader.ReadBoolean();
}
}
}
namespace ArtifactOfDoomTinyJson
{
public static class JSONParser
{
[ThreadStatic]
private static Stack<List<string>> splitArrayPool;
[ThreadStatic]
private static StringBuilder stringBuilder;
[ThreadStatic]
private static Dictionary<Type, Dictionary<string, FieldInfo>> fieldInfoCache;
[ThreadStatic]
private static Dictionary<Type, Dictionary<string, PropertyInfo>> propertyInfoCache;
public static T FromJson<T>(this string json)
{
if (propertyInfoCache == null)
{
propertyInfoCache = new Dictionary<Type, Dictionary<string, PropertyInfo>>();
}
if (fieldInfoCache == null)
{
fieldInfoCache = new Dictionary<Type, Dictionary<string, FieldInfo>>();
}
if (stringBuilder == null)
{
stringBuilder = new StringBuilder();
}
if (splitArrayPool == null)
{
splitArrayPool = new Stack<List<string>>();
}
stringBuilder.Length = 0;
for (int i = 0; i < json.Length; i++)
{
char c = json[i];
if (c == '"')
{
i = AppendUntilStringEnd(appendEscapeCharacter: true, i, json);
}
else if (!char.IsWhiteSpace(c))
{
stringBuilder.Append(c);
}
}
return (T)ParseValue(typeof(T), stringBuilder.ToString());
}
private static int AppendUntilStringEnd(bool appendEscapeCharacter, int startIdx, string json)
{
stringBuilder.Append(json[startIdx]);
for (int i = startIdx + 1; i < json.Length; i++)
{
if (json[i] == '\\')
{
if (appendEscapeCharacter)
{
stringBuilder.Append(json[i]);
}
stringBuilder.Append(json[i + 1]);
i++;
}
else
{
if (json[i] == '"')
{
stringBuilder.Append(json[i]);
return i;
}
stringBuilder.Append(json[i]);
}
}
return json.Length - 1;
}
private static List<string> Split(string json)
{
List<string> list = ((splitArrayPool.Count > 0) ? splitArrayPool.Pop() : new List<string>());
list.Clear();
if (json.Length == 2)
{
return list;
}
int num = 0;
stringBuilder.Length = 0;
for (int i = 1; i < json.Length - 1; i++)
{
switch (json[i])
{
case '[':
case '{':
num++;
break;
case ']':
case '}':
num--;
break;
case '"':
i = AppendUntilStringEnd(appendEscapeCharacter: true, i, json);
continue;
case ',':
case ':':
if (num == 0)
{
list.Add(stringBuilder.ToString());
stringBuilder.Length = 0;
continue;
}
break;
}
stringBuilder.Append(json[i]);
}
list.Add(stringBuilder.ToString());
return list;
}
internal static object ParseValue(Type type, string json)
{
if (type == typeof(string))
{
if (json.Length <= 2)
{
return string.Empty;
}
StringBuilder stringBuilder = new StringBuilder(json.Length);
for (int i = 1; i < json.Length - 1; i++)
{
if (json[i] == '\\' && i + 1 < json.Length - 1)
{
int num = "\"\\nrtbf/".IndexOf(json[i + 1]);
if (num >= 0)
{
stringBuilder.Append("\"\\\n\r\t\b\f/"[num]);
i++;
continue;
}
if (json[i + 1] == 'u' && i + 5 < json.Length - 1)
{
uint result = 0u;
if (uint.TryParse(json.Substring(i + 2, 4), NumberStyles.AllowHexSpecifier, null, out result))
{
stringBuilder.Append((char)result);
i += 5;
continue;
}
}
}
stringBuilder.Append(json[i]);
}
return stringBuilder.ToString();
}
if (type.IsPrimitive)
{
return Convert.ChangeType(json, type, CultureInfo.InvariantCulture);
}
if (type == typeof(decimal))
{
decimal.TryParse(json, NumberStyles.Float, CultureInfo.InvariantCulture, out var result2);
return result2;
}
if (json == "null")
{
return null;
}
if (type.IsEnum)
{
if (json[0] == '"')
{
json = json.Substring(1, json.Length - 2);
}
try
{
return Enum.Parse(type, json, ignoreCase: false);
}
catch
{
return 0;
}
}
if (type.IsArray)
{
Type elementType = type.GetElementType();
if (json[0] != '[' || json[json.Length - 1] != ']')
{
return null;
}
List<string> list = Split(json);
Array array = Array.CreateInstance(elementType, list.Count);
for (int j = 0; j < list.Count; j++)
{
array.SetValue(ParseValue(elementType, list[j]), j);
}
splitArrayPool.Push(list);
return array;
}
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(List<>))
{
Type type2 = type.GetGenericArguments()[0];
if (json[0] != '[' || json[json.Length - 1] != ']')
{
return null;
}
List<string> list2 = Split(json);
IList list3 = (IList)type.GetConstructor(new Type[1] { typeof(int) }).Invoke(new object[1] { list2.Count });
for (int k = 0; k < list2.Count; k++)
{
list3.Add(ParseValue(type2, list2[k]));
}
splitArrayPool.Push(list2);
return list3;
}
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Dictionary<, >))
{
Type[] genericArguments = type.GetGenericArguments();
Type type3 = genericArguments[0];
Type type4 = genericArguments[1];
if (type3 != typeof(string))
{
return null;
}
if (json[0] != '{' || json[json.Length - 1] != '}')
{
return null;
}
List<string> list4 = Split(json);
if (list4.Count % 2 != 0)
{
return null;
}
IDictionary dictionary = (IDictionary)type.GetConstructor(new Type[1] { typeof(int) }).Invoke(new object[1] { list4.Count / 2 });
for (int l = 0; l < list4.Count; l += 2)
{
if (list4[l].Length > 2)
{
string key = list4[l].Substring(1, list4[l].Length - 2);
object value = ParseValue(type4, list4[l + 1]);
dictionary.Add(key, value);
}
}
return dictionary;
}
if (type == typeof(object))
{
return ParseAnonymousValue(json);
}
if (json[0] == '{' && json[json.Length - 1] == '}')
{
return ParseObject(type, json);
}
return null;
}
private static object ParseAnonymousValue(string json)
{
if (json.Length == 0)
{
return null;
}
if (json[0] == '{' && json[json.Length - 1] == '}')
{
List<string> list = Split(json);
if (list.Count % 2 != 0)
{
return null;
}
Dictionary<string, object> dictionary = new Dictionary<string, object>(list.Count / 2);
for (int i = 0; i < list.Count; i += 2)
{
dictionary.Add(list[i].Substring(1, list[i].Length - 2), ParseAnonymousValue(list[i + 1]));
}
return dictionary;
}
if (json[0] == '[' && json[json.Length - 1] == ']')
{
List<string> list2 = Split(json);
List<object> list3 = new List<object>(list2.Count);
for (int j = 0; j < list2.Count; j++)
{
list3.Add(ParseAnonymousValue(list2[j]));
}
return list3;
}
if (json[0] == '"' && json[json.Length - 1] == '"')
{
string text = json.Substring(1, json.Length - 2);
return text.Replace("\\", string.Empty);
}
if (char.IsDigit(json[0]) || json[0] == '-')
{
if (json.Contains("."))
{
double.TryParse(json, NumberStyles.Float, CultureInfo.InvariantCulture, out var result);
return result;
}
int.TryParse(json, out var result2);
return result2;
}
if (json == "true")
{
return true;
}
if (json == "false")
{
return false;
}
return null;
}
private static Dictionary<string, T> CreateMemberNameDictionary<T>(T[] members) where T : MemberInfo
{
Dictionary<string, T> dictionary = new Dictionary<string, T>(StringComparer.OrdinalIgnoreCase);
foreach (T val in members)
{
if (val.IsDefined(typeof(IgnoreDataMemberAttribute), inherit: true))
{
continue;
}
string name = val.Name;
if (val.IsDefined(typeof(DataMemberAttribute), inherit: true))
{
DataMemberAttribute dataMemberAttribute = (DataMemberAttribute)Attribute.GetCustomAttribute(val, typeof(DataMemberAttribute), inherit: true);
if (!string.IsNullOrEmpty(dataMemberAttribute.Name))
{
name = dataMemberAttribute.Name;
}
}
dictionary.Add(name, val);
}
return dictionary;
}
private static object ParseObject(Type type, string json)
{
object uninitializedObject = FormatterServices.GetUninitializedObject(type);
List<string> list = Split(json);
if (list.Count % 2 != 0)
{
return uninitializedObject;
}
if (!fieldInfoCache.TryGetValue(type, out var value))
{
value = CreateMemberNameDictionary(type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.FlattenHierarchy));
fieldInfoCache.Add(type, value);
}
if (!propertyInfoCache.TryGetValue(type, out var value2))
{
value2 = CreateMemberNameDictionary(type.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.FlattenHierarchy));
propertyInfoCache.Add(type, value2);
}
for (int i = 0; i < list.Count; i += 2)
{
if (list[i].Length > 2)
{
string key = list[i].Substring(1, list[i].Length - 2);
string json2 = list[i + 1];
PropertyInfo value4;
if (value.TryGetValue(key, out var value3))
{
value3.SetValue(uninitializedObject, ParseValue(value3.FieldType, json2));
}
else if (value2.TryGetValue(key, out value4))
{
value4.SetValue(uninitializedObject, ParseValue(value4.PropertyType, json2), null);
}
}
}
return uninitializedObject;
}
}
}
namespace ArtifactOfDoom
{
[BepInPlugin("com.SirHamburger.ArtifactOfDoom", "ArtifactOfDoom", "2.0.6")]
public class ArtifactOfDoomConfig : BaseUnityPlugin
{
public const string ModVer = "2.0.6";
public const string ModName = "ArtifactOfDoom";
public const string ModGuid = "com.SirHamburger.ArtifactOfDoom";
public static BuffDef ArtifactOfDoomBuff = ScriptableObject.CreateInstance<BuffDef>();
public static GameObject GameObjectReference;
private static ConfigFile cfgFile;
internal static ManualLogSource _logger;
public static ConfigEntry<int> averageItemsPerStage;
public static ConfigEntry<int> minItemsPerStage;
public static ConfigEntry<int> maxItemsPerStage;
public static ConfigEntry<double> exponentailFactorIfYouAreUnderAverageItemsPerStage;
public static ConfigEntry<double> exponentailFactorToCalculateSumOfLostItems;
public static ConfigEntry<bool> artifactOfSwarmNerf;
public static ConfigEntry<string> CustomChars;
public static ConfigEntry<bool> useArtifactOfSacrificeCalculation;
public static ConfigEntry<double> multiplayerForArtifactOfSacrificeDropRate;
public static ConfigEntry<bool> disableItemProgressBar;
public static ConfigEntry<double> timeAfterHitToNotLoseItemMonsoon;
public static ConfigEntry<double> timeAfterHitToNotLoseItemDrizzly;
public static ConfigEntry<double> timeAfterHitToNotLoseItemRainstorm;
public static ConfigEntry<string> timeAfterHitToNotLoseItemOtherDifficulty;
public static ConfigEntry<double> CommandoBonusItems;
public static ConfigEntry<double> CommandoMultiplierForTimedBuff;
public static ConfigEntry<double> HuntressBonusItems;
public static ConfigEntry<double> HuntressMultiplierForTimedBuff;
public static ConfigEntry<double> MULTBonusItems;
public static ConfigEntry<double> MULTMultiplierForTimedBuff;
public static ConfigEntry<double> EngineerBonusItems;
public static ConfigEntry<double> EngineerMultiplierForTimedBuff;
public static ConfigEntry<double> ArtificerBonusItems;
public static ConfigEntry<double> ArtificerMultiplierForTimedBuff;
public static ConfigEntry<double> MercenaryBonusItems;
public static ConfigEntry<double> MercenaryMultiplierForTimedBuff;
public static ConfigEntry<double> RexBonusItems;
public static ConfigEntry<double> RexMultiplierForTimedBuff;
public static ConfigEntry<double> LoaderBonusItems;
public static ConfigEntry<double> LoaderMultiplierForTimedBuff;
public static ConfigEntry<double> AcridBonusItems;
public static ConfigEntry<double> AcridMultiplierForTimedBuff;
public static ConfigEntry<double> CaptainBonusItems;
public static ConfigEntry<double> CaptainMultiplierForTimedBuff;
public static ConfigEntry<double> BanditBonusItems;
public static ConfigEntry<double> BanditMultiplierForTimedBuff;
public static ConfigEntry<double> RailgunnerBonusItems;
public static ConfigEntry<double> RailgunnerMultiplierForTimedBuff;
public static ConfigEntry<double> VoidSurvivorBonusItems;
public static ConfigEntry<double> VoidSurvivorMultiplierForTimedBuff;
public static ConfigEntry<double> CustomSurvivorBonusItems;
public static ConfigEntry<double> CustomSurvivorMultiplierForTimedBuff;
public static ConfigEntry<double> sizeOfSideBars;
public static ConfigEntry<bool> disableSideBars;
public static ConfigEntry<bool> enableChatItemOutput;
public static List<ArtifactDef> artifactDefs = new List<ArtifactDef>();
private void Awake()
{
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
//IL_0026: Expected O, but got Unknown
//IL_0047: 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_0062: Expected O, but got Unknown
//IL_0062: Expected O, but got Unknown
//IL_0076: 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_0091: Expected O, but got Unknown
//IL_0091: Expected O, but got Unknown
//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
//IL_00c0: Expected O, but got Unknown
//IL_00c0: Expected O, but got Unknown
//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
//IL_00f7: Expected O, but got Unknown
//IL_00f7: Expected O, but got Unknown
//IL_010b: Unknown result type (might be due to invalid IL or missing references)
//IL_0124: Unknown result type (might be due to invalid IL or missing references)
//IL_012e: Expected O, but got Unknown
//IL_012e: Expected O, but got Unknown
//IL_0142: 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)
//IL_015d: Expected O, but got Unknown
//IL_015d: Expected O, but got Unknown
//IL_0171: Unknown result type (might be due to invalid IL or missing references)
//IL_0182: Unknown result type (might be due to invalid IL or missing references)
//IL_018c: Expected O, but got Unknown
//IL_018c: Expected O, but got Unknown
//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
//IL_01b9: Unknown result type (might be due to invalid IL or missing references)
//IL_01c3: Expected O, but got Unknown
//IL_01c3: Expected O, but got Unknown
//IL_01d7: Unknown result type (might be due to invalid IL or missing references)
//IL_01e8: Unknown result type (might be due to invalid IL or missing references)
//IL_01f2: Expected O, but got Unknown
//IL_01f2: Expected O, but got Unknown
//IL_0206: Unknown result type (might be due to invalid IL or missing references)
//IL_0217: Unknown result type (might be due to invalid IL or missing references)
//IL_0221: Expected O, but got Unknown
//IL_0221: Expected O, but got Unknown
//IL_0235: Unknown result type (might be due to invalid IL or missing references)
//IL_0246: Unknown result type (might be due to invalid IL or missing references)
//IL_0250: Expected O, but got Unknown
//IL_0250: Expected O, but got Unknown
//IL_0264: Unknown result type (might be due to invalid IL or missing references)
//IL_027d: Unknown result type (might be due to invalid IL or missing references)
//IL_0287: Expected O, but got Unknown
//IL_0287: Expected O, but got Unknown
//IL_029b: Unknown result type (might be due to invalid IL or missing references)
//IL_02b4: Unknown result type (might be due to invalid IL or missing references)
//IL_02be: Expected O, but got Unknown
//IL_02be: Expected O, but got Unknown
//IL_02d2: Unknown result type (might be due to invalid IL or missing references)
//IL_02eb: Unknown result type (might be due to invalid IL or missing references)
//IL_02f5: Expected O, but got Unknown
//IL_02f5: Expected O, but got Unknown
//IL_0309: Unknown result type (might be due to invalid IL or missing references)
//IL_0322: Unknown result type (might be due to invalid IL or missing references)
//IL_032c: Expected O, but got Unknown
//IL_032c: Expected O, but got Unknown
//IL_0340: Unknown result type (might be due to invalid IL or missing references)
//IL_0355: Unknown result type (might be due to invalid IL or missing references)
//IL_035f: Expected O, but got Unknown
//IL_035f: Expected O, but got Unknown
//IL_0373: Unknown result type (might be due to invalid IL or missing references)
//IL_038c: Unknown result type (might be due to invalid IL or missing references)
//IL_0396: Expected O, but got Unknown
//IL_0396: Expected O, but got Unknown
//IL_03aa: Unknown result type (might be due to invalid IL or missing references)
//IL_03c3: Unknown result type (might be due to invalid IL or missing references)
//IL_03cd: Expected O, but got Unknown
//IL_03cd: Expected O, but got Unknown
//IL_03e1: Unknown result type (might be due to invalid IL or missing references)
//IL_03fa: Unknown result type (might be due to invalid IL or missing references)
//IL_0404: Expected O, but got Unknown
//IL_0404: Expected O, but got Unknown
//IL_0418: Unknown result type (might be due to invalid IL or missing references)
//IL_0431: Unknown result type (might be due to invalid IL or missing references)
//IL_043b: Expected O, but got Unknown
//IL_043b: Expected O, but got Unknown
//IL_044f: Unknown result type (might be due to invalid IL or missing references)
//IL_0468: Unknown result type (might be due to invalid IL or missing references)
//IL_0472: Expected O, but got Unknown
//IL_0472: Expected O, but got Unknown
//IL_0486: Unknown result type (might be due to invalid IL or missing references)
//IL_049f: Unknown result type (might be due to invalid IL or missing references)
//IL_04a9: Expected O, but got Unknown
//IL_04a9: Expected O, but got Unknown
//IL_04bd: Unknown result type (might be due to invalid IL or missing references)
//IL_04d6: Unknown result type (might be due to invalid IL or missing references)
//IL_04e0: Expected O, but got Unknown
//IL_04e0: Expected O, but got Unknown
//IL_04f4: Unknown result type (might be due to invalid IL or missing references)
//IL_050d: Unknown result type (might be due to invalid IL or missing references)
//IL_0517: Expected O, but got Unknown
//IL_0517: Expected O, but got Unknown
//IL_052b: Unknown result type (might be due to invalid IL or missing references)
//IL_0544: Unknown result type (might be due to invalid IL or missing references)
//IL_054e: Expected O, but got Unknown
//IL_054e: Expected O, but got Unknown
//IL_0562: Unknown result type (might be due to invalid IL or missing references)
//IL_057b: Unknown result type (might be due to invalid IL or missing references)
//IL_0585: Expected O, but got Unknown
//IL_0585: Expected O, but got Unknown
//IL_0599: Unknown result type (might be due to invalid IL or missing references)
//IL_05b2: Unknown result type (might be due to invalid IL or missing references)
//IL_05bc: Expected O, but got Unknown
//IL_05bc: Expected O, but got Unknown
//IL_05d0: Unknown result type (might be due to invalid IL or missing references)
//IL_05e9: Unknown result type (might be due to invalid IL or missing references)
//IL_05f3: Expected O, but got Unknown
//IL_05f3: Expected O, but got Unknown
//IL_0607: Unknown result type (might be due to invalid IL or missing references)
//IL_0620: Unknown result type (might be due to invalid IL or missing references)
//IL_062a: Expected O, but got Unknown
//IL_062a: Expected O, but got Unknown
//IL_063e: Unknown result type (might be due to invalid IL or missing references)
//IL_0657: Unknown result type (might be due to invalid IL or missing references)
//IL_0661: Expected O, but got Unknown
//IL_0661: Expected O, but got Unknown
//IL_0675: Unknown result type (might be due to invalid IL or missing references)
//IL_068e: Unknown result type (might be due to invalid IL or missing references)
//IL_0698: Expected O, but got Unknown
//IL_0698: Expected O, but got Unknown
//IL_06ac: Unknown result type (might be due to invalid IL or missing references)
//IL_06c5: Unknown result type (might be due to invalid IL or missing references)
//IL_06cf: Expected O, but got Unknown
//IL_06cf: Expected O, but got Unknown
//IL_06e3: Unknown result type (might be due to invalid IL or missing references)
//IL_06fc: Unknown result type (might be due to invalid IL or missing references)
//IL_0706: Expected O, but got Unknown
//IL_0706: Expected O, but got Unknown
//IL_071a: Unknown result type (might be due to invalid IL or missing references)
//IL_0733: Unknown result type (might be due to invalid IL or missing references)
//IL_073d: Expected O, but got Unknown
//IL_073d: Expected O, but got Unknown
//IL_0751: Unknown result type (might be due to invalid IL or missing references)
//IL_076a: Unknown result type (might be due to invalid IL or missing references)
//IL_0774: Expected O, but got Unknown
//IL_0774: Expected O, but got Unknown
//IL_0788: Unknown result type (might be due to invalid IL or missing references)
//IL_07a1: Unknown result type (might be due to invalid IL or missing references)
//IL_07ab: Expected O, but got Unknown
//IL_07ab: Expected O, but got Unknown
//IL_07bf: Unknown result type (might be due to invalid IL or missing references)
//IL_07d8: Unknown result type (might be due to invalid IL or missing references)
//IL_07e2: Expected O, but got Unknown
//IL_07e2: Expected O, but got Unknown
//IL_07f6: Unknown result type (might be due to invalid IL or missing references)
//IL_080f: Unknown result type (might be due to invalid IL or missing references)
//IL_0819: Expected O, but got Unknown
//IL_0819: Expected O, but got Unknown
//IL_082d: Unknown result type (might be due to invalid IL or missing references)
//IL_0846: Unknown result type (might be due to invalid IL or missing references)
//IL_0850: Expected O, but got Unknown
//IL_0850: Expected O, but got Unknown
//IL_0864: Unknown result type (might be due to invalid IL or missing references)
//IL_087d: Unknown result type (might be due to invalid IL or missing references)
//IL_0887: Expected O, but got Unknown
//IL_0887: Expected O, but got Unknown
//IL_089b: Unknown result type (might be due to invalid IL or missing references)
//IL_08b4: Unknown result type (might be due to invalid IL or missing references)
//IL_08be: Expected O, but got Unknown
//IL_08be: Expected O, but got Unknown
//IL_08d2: Unknown result type (might be due to invalid IL or missing references)
//IL_08eb: Unknown result type (might be due to invalid IL or missing references)
//IL_08f5: Expected O, but got Unknown
//IL_08f5: Expected O, but got Unknown
//IL_0909: Unknown result type (might be due to invalid IL or missing references)
//IL_0922: Unknown result type (might be due to invalid IL or missing references)
//IL_092c: Expected O, but got Unknown
//IL_092c: Expected O, but got Unknown
//IL_0940: Unknown result type (might be due to invalid IL or missing references)
//IL_0959: Unknown result type (might be due to invalid IL or missing references)
//IL_0963: Expected O, but got Unknown
//IL_0963: Expected O, but got Unknown
//IL_0977: Unknown result type (might be due to invalid IL or missing references)
//IL_098c: Unknown result type (might be due to invalid IL or missing references)
//IL_0996: Expected O, but got Unknown
//IL_0996: Expected O, but got Unknown
//IL_09b0: Unknown result type (might be due to invalid IL or missing references)
//IL_09b5: Unknown result type (might be due to invalid IL or missing references)
_logger = ((BaseUnityPlugin)this).Logger;
cfgFile = new ConfigFile(Path.Combine(Paths.ConfigPath, "com.SirHamburger.ArtifactOfDoom.cfg"), true);
ArtifactOfDoomUI artifactOfDoomUI = new ArtifactOfDoomUI();
ArtifactOfDoom artifactOfDoom = new ArtifactOfDoom();
NetworkClass networkClass = new NetworkClass();
averageItemsPerStage = cfgFile.Bind<int>(new ConfigDefinition("Gameplay Settings", "averageItemsPerStage"), 5, new ConfigDescription("Excpected items per stage. If below you may get more items if aboth you'll need more kills to get an item", (AcceptableValueBase)null, Array.Empty<object>()));
minItemsPerStage = cfgFile.Bind<int>(new ConfigDefinition("Gameplay Settings", "minItemsPerStage"), 2, new ConfigDescription("The expected minimum item count per stage. If you have less Items than that you'll have a decreased chance that you lose items", (AcceptableValueBase)null, Array.Empty<object>()));
maxItemsPerStage = cfgFile.Bind<int>(new ConfigDefinition("Gameplay Settings", "maxItemsPerStage"), 7, new ConfigDescription("The expected maximum item count per stage. If you have more Items than that you'll have a chance to lose more than one item per hit", (AcceptableValueBase)null, Array.Empty<object>()));
exponentailFactorToCalculateSumOfLostItems = cfgFile.Bind<double>(new ConfigDefinition("Gameplay Settings", "exponentailFactorToCalculateSumOfLostItems"), 1.5, new ConfigDescription("The exponent to Calculate how many items you'll lose if you're over maxItemsPerStage", (AcceptableValueBase)null, Array.Empty<object>()));
exponentailFactorIfYouAreUnderAverageItemsPerStage = cfgFile.Bind<double>(new ConfigDefinition("Gameplay Settings", "exponentailFactorIfYouAreUnderAverageItemsPerStage"), 0.0, new ConfigDescription("The exponent to Calculate how many kills you'll need if you're under averageItemsPerStage. The formula is totalitems^exponentailFactorIfYouAreUnderAverageItemsPerStage. Default is 0 so you'll need always two kills.", (AcceptableValueBase)null, Array.Empty<object>()));
artifactOfSwarmNerf = cfgFile.Bind<bool>(new ConfigDefinition("Gameplay Settings", "artifactOfSwarmNerf"), false, new ConfigDescription("Enable the nerf for Artifact of Swarm where you've to kill double as many enemies", (AcceptableValueBase)null, Array.Empty<object>()));
useArtifactOfSacrificeCalculation = cfgFile.Bind<bool>(new ConfigDefinition("Gameplay Settings", "useArtifactOfSacreficeCalculation"), false, new ConfigDescription("Chance the item gain to a specific drop rate of enemys", (AcceptableValueBase)null, Array.Empty<object>()));
multiplayerForArtifactOfSacrificeDropRate = cfgFile.Bind<double>(new ConfigDefinition("Gameplay Settings", "multiplayerForArtifactOfSacrificeDropRate"), 2.0, new ConfigDescription("Multiplier for the drop rate (base Chance is 5)", (AcceptableValueBase)null, Array.Empty<object>()));
disableItemProgressBar = cfgFile.Bind<bool>(new ConfigDefinition("UI Settings", "disableItemProgressBar"), false, new ConfigDescription("If true it disables the Progress bar in the bottom of the UI", (AcceptableValueBase)null, Array.Empty<object>()));
disableSideBars = cfgFile.Bind<bool>(new ConfigDefinition("UI Settings", "disableSideBars"), false, new ConfigDescription("Disables the item Sidebars", (AcceptableValueBase)null, Array.Empty<object>()));
enableChatItemOutput = cfgFile.Bind<bool>(new ConfigDefinition("UI Settings", "enableChatItemOutput"), false, new ConfigDescription("Enables the chat output for gained/lost Items. This setting is not synced.", (AcceptableValueBase)null, Array.Empty<object>()));
sizeOfSideBars = cfgFile.Bind<double>(new ConfigDefinition("UI Settings", "sizeOfSideBars"), 0.02, new ConfigDescription("Spezifies the size of the sidebars. 1 is whole window 0 is invisible (but for that plase use the disable setting).", (AcceptableValueBase)null, Array.Empty<object>()));
timeAfterHitToNotLoseItemDrizzly = cfgFile.Bind<double>(new ConfigDefinition("Gameplay Settings", "timeAfterHitToNotLooseItemDrizzly"), 0.8, new ConfigDescription("The time in seconds where you will not lose items after you lost one on drizzly", (AcceptableValueBase)null, Array.Empty<object>()));
timeAfterHitToNotLoseItemRainstorm = cfgFile.Bind<double>(new ConfigDefinition("Gameplay Settings", "timeAfterHitToNotLooseItemRainstorm"), 0.2, new ConfigDescription("The time in seconds where you will not lose items after you lost one on rainstorm", (AcceptableValueBase)null, Array.Empty<object>()));
timeAfterHitToNotLoseItemMonsoon = cfgFile.Bind<double>(new ConfigDefinition("Gameplay Settings", "timeAfterHitToNotLooseItemMonsoon"), 0.05, new ConfigDescription("The time in seconds where you will not lose items after you lost one on monsoon", (AcceptableValueBase)null, Array.Empty<object>()));
timeAfterHitToNotLoseItemOtherDifficulty = cfgFile.Bind<string>(new ConfigDefinition("Gameplay Settings", "timeAfterHitToNotLooseOtherDifficulty"), "[{\"DifficultyIndex\": \"DIFFICULTYINDEX\", \"time\": 1.0}]", new ConfigDescription("The time in seconds where you will not lose items after you lost one on monsoon", (AcceptableValueBase)null, Array.Empty<object>()));
CommandoBonusItems = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "CommandoBonusItems"), 1.0, new ConfigDescription("The count of items which you get if you kill enough enemies", (AcceptableValueBase)null, Array.Empty<object>()));
CommandoMultiplierForTimedBuff = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "commandoMultiplyerForTimedBuff"), 1.0, new ConfigDescription("The Multiplier for that specific character for the length of timeAfterHitToNotLooseItems", (AcceptableValueBase)null, Array.Empty<object>()));
HuntressBonusItems = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "HuntressBonusItems"), 1.0, new ConfigDescription("The count of items which you get if you kill enough enemies", (AcceptableValueBase)null, Array.Empty<object>()));
HuntressMultiplierForTimedBuff = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "HuntressMultiplierForTimedBuff"), 1.0, new ConfigDescription("The Multiplier for that specific character for the length of timeAfterHitToNotLooseItems", (AcceptableValueBase)null, Array.Empty<object>()));
MULTBonusItems = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "MULTBonusItems"), 1.0, new ConfigDescription("The count of items which you get if you kill enough enemies", (AcceptableValueBase)null, Array.Empty<object>()));
MULTMultiplierForTimedBuff = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "MULTMultiplierForTimedBuff"), 1.0, new ConfigDescription("The Multiplier for that specific character for the length of timeAfterHitToNotLooseItems", (AcceptableValueBase)null, Array.Empty<object>()));
EngineerBonusItems = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "EngineerBonusItems"), 1.0, new ConfigDescription("The count of items which you get if you kill enough enemies", (AcceptableValueBase)null, Array.Empty<object>()));
EngineerMultiplierForTimedBuff = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "EngineerMultiplierForTimedBuff"), 1.0, new ConfigDescription("The Multiplier for that specific character for the length of timeAfterHitToNotLooseItems", (AcceptableValueBase)null, Array.Empty<object>()));
ArtificerBonusItems = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "ArtificerBonusItems"), 2.0, new ConfigDescription("The count of items which you get if you kill enough enemies", (AcceptableValueBase)null, Array.Empty<object>()));
ArtificerMultiplierForTimedBuff = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "ArtificerMultiplierForTimedBuff"), 1.0, new ConfigDescription("The Multiplier for that specific character for the length of timeAfterHitToNotLooseItems", (AcceptableValueBase)null, Array.Empty<object>()));
MercenaryBonusItems = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "MercenaryBonusItems"), 1.0, new ConfigDescription("The count of items which you get if you kill enough enemies", (AcceptableValueBase)null, Array.Empty<object>()));
MercenaryMultiplierForTimedBuff = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "MercenaryMultiplierForTimedBuff"), 4.0, new ConfigDescription("The Multiplier for that specific character for the length of timeAfterHitToNotLooseItems", (AcceptableValueBase)null, Array.Empty<object>()));
RexBonusItems = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "RexBonusItems"), 1.0, new ConfigDescription("The count of items which you get if you kill enough enemies", (AcceptableValueBase)null, Array.Empty<object>()));
RexMultiplierForTimedBuff = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "RexMultiplierForTimedBuff"), 1.0, new ConfigDescription("The Multiplier for that specific character for the length of timeAfterHitToNotLooseItems", (AcceptableValueBase)null, Array.Empty<object>()));
LoaderBonusItems = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "LoaderBonusItems"), 1.0, new ConfigDescription("The count of items which you get if you kill enough enemies", (AcceptableValueBase)null, Array.Empty<object>()));
LoaderMultiplierForTimedBuff = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "LoaderMultiplierForTimedBuff"), 4.0, new ConfigDescription("The Multiplier for that specific character for the length of timeAfterHitToNotLooseItems", (AcceptableValueBase)null, Array.Empty<object>()));
AcridBonusItems = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "AcridBonusItems"), 1.0, new ConfigDescription("The count of items which you get if you kill enough enemies", (AcceptableValueBase)null, Array.Empty<object>()));
AcridMultiplierForTimedBuff = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "AcridMultiplierForTimedBuff"), 4.0, new ConfigDescription("The Multiplier for that specific character for the length of timeAfterHitToNotLooseItems", (AcceptableValueBase)null, Array.Empty<object>()));
CaptainBonusItems = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "CaptainBonusItems"), 1.0, new ConfigDescription("The count of items which you get if you kill enough enemies", (AcceptableValueBase)null, Array.Empty<object>()));
CaptainMultiplierForTimedBuff = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "BanditMultiplierForTimedBuff"), 1.0, new ConfigDescription("The Multiplier for that specific character for the length of timeAfterHitToNotLooseItems", (AcceptableValueBase)null, Array.Empty<object>()));
BanditBonusItems = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "BanditBonusItems"), 1.0, new ConfigDescription("The count of items which you get if you kill enough enemies", (AcceptableValueBase)null, Array.Empty<object>()));
BanditMultiplierForTimedBuff = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "BanditMultiplierForTimedBuff"), 1.0, new ConfigDescription("The Multiplier for that specific character for the length of timeAfterHitToNotLooseItems", (AcceptableValueBase)null, Array.Empty<object>()));
RailgunnerBonusItems = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "RailgunnerBonusItems"), 2.0, new ConfigDescription("The count of items which you get if you kill enough enemies", (AcceptableValueBase)null, Array.Empty<object>()));
RailgunnerMultiplierForTimedBuff = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "RailgunnerMultiplierForTimedBuff"), 1.0, new ConfigDescription("The Multiplier for that specific character for the length of timeAfterHitToNotLooseItems", (AcceptableValueBase)null, Array.Empty<object>()));
VoidSurvivorBonusItems = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "VoidSurvivorBonusItems"), 2.0, new ConfigDescription("The count of items which you get if you kill enough enemies", (AcceptableValueBase)null, Array.Empty<object>()));
VoidSurvivorMultiplierForTimedBuff = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "VoidSurvivorMultiplierForTimedBuff"), 1.0, new ConfigDescription("The Multiplier for that specific character for the length of timeAfterHitToNotLooseItems", (AcceptableValueBase)null, Array.Empty<object>()));
CustomSurvivorBonusItems = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "CustomSurvivorBonusItems"), 1.0, new ConfigDescription("The count of items which you get if you kill enough enemies", (AcceptableValueBase)null, Array.Empty<object>()));
CustomSurvivorMultiplierForTimedBuff = cfgFile.Bind<double>(new ConfigDefinition("Character specific settings", "CustomSurvivorMultiplierForTimedBuff"), 1.0, new ConfigDescription("The Multiplier for that specific character for the length of timeAfterHitToNotLoseItems", (AcceptableValueBase)null, Array.Empty<object>()));
CustomChars = cfgFile.Bind<string>(new ConfigDefinition("Character specific settings", "CustomCharacters"), "[{\"Name\": \"CUSTOM_CHAR_BODY_NAME1\", \"MultiplierForTimedBuff\": 1.0, \"BonusItems\": 1.0},{\"Name\": \"CUSTOM_CHAR_BODY_NAME2\", \"MultiplierForTimedBuff\": 2.0, \"BonusItems\": 2.0}]", new ConfigDescription("The Multiplier for that specific character for the length of timeAfterHitToNotLoseItems", (AcceptableValueBase)null, Array.Empty<object>()));
((Object)ArtifactOfDoomBuff).name = "ArtifactOfDoomDidLoseItem";
ArtifactOfDoomBuff.buffColor = Color.black;
ArtifactOfDoomBuff.canStack = false;
ArtifactOfDoomBuff.isDebuff = false;
ContentAddition.AddBuffDef(ArtifactOfDoomBuff);
}
}
public class ArtifactOfDoom
{
public class Character
{
public string Name { get; set; }
public float MultiplierForTimedBuff { get; set; }
public float BonusItems { get; set; }
}
public class Difficulty
{
public int DifficultyIndex { get; set; }
public float time { get; set; }
}
[Serializable]
[CompilerGenerated]
private sealed class <>c
{
public static readonly <>c <>9 = new <>c();
public static hook_Awake <>9__15_0;
internal void <LoadBehavior>b__15_0(orig_Awake orig, GameEndReportPanelController self)
{
orig.Invoke(self);
if (Networking._instance.IsArtifactEnabled)
{
string[] array = new string[self.statsToDisplay.Length + 2];
self.statsToDisplay.CopyTo(array, 0);
array[^2] = "Lostitems";
array[^1] = "Gainitems";
self.statsToDisplay = array;
}
}
}
public static ArtifactDef artifactOfDoomDefinition = ScriptableObject.CreateInstance<ArtifactDef>();
private const string GrayColor = "7e91af";
private const string ErrorColor = "ff0000";
public static bool debug = false;
private static List<CharacterBody> Playername = new List<CharacterBody>();
private static List<int> counter = new List<int>();
private int currentStage = 0;
private Dictionary<NetworkUser, bool> LockNetworkUser = new Dictionary<NetworkUser, bool>();
private Dictionary<NetworkUser, bool> LockItemGainNetworkUser = new Dictionary<NetworkUser, bool>();
private static StatDef statsLostItems;
private static StatDef statsGainItems;
public static Dictionary<uint, Queue<ItemDef>> QueueLostItemSprite = new Dictionary<uint, Queue<ItemDef>>();
public static Dictionary<uint, Queue<ItemDef>> QueueGainedItemSprite = new Dictionary<uint, Queue<ItemDef>>();
private static double timeForBuff = -1.0;
public ArtifactOfDoom()
{
artifactOfDoomDefinition.nameToken = "Artifact of Doom";
artifactOfDoomDefinition.descriptionToken = "You get items on enemy kills but lose items every time you take damage.";
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("ArtifactOfDoom.artifactofdoom"))
{
AssetBundle val = AssetBundle.LoadFromStream(stream);
artifactOfDoomDefinition.smallIconSelectedSprite = val.LoadAsset<Sprite>("Assets/Import/artifactofdoom_icon/ArtifactDoomEnabled.png");
artifactOfDoomDefinition.smallIconDeselectedSprite = val.LoadAsset<Sprite>("Assets/Import/artifactofdoom_icon/ArtifactDoomDisabled.png");
ContentAddition.AddArtifactDef(artifactOfDoomDefinition);
}
LoadBehavior();
}
protected void LoadBehavior()
{
//IL_008a: Unknown result type (might be due to invalid IL or missing references)
//IL_0094: Expected O, but got Unknown
//IL_009c: Unknown result type (might be due to invalid IL or missing references)
//IL_00a6: Expected O, but got Unknown
//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
//IL_00b8: Expected O, but got Unknown
//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
//IL_00ca: Expected O, but got Unknown
//IL_0072: Unknown result type (might be due to invalid IL or missing references)
//IL_0077: Unknown result type (might be due to invalid IL or missing references)
//IL_007d: Expected O, but got Unknown
Playername = new List<CharacterBody>();
counter = new List<int>();
currentStage = 0;
statsLostItems = null;
statsGainItems = null;
statsLostItems = StatDef.Register("Lostitems", (StatRecordType)0, (StatDataType)0, 0.0, (DisplayValueFormatterDelegate)null);
statsGainItems = StatDef.Register("Gainitems", (StatRecordType)0, (StatDataType)0, 0.0, (DisplayValueFormatterDelegate)null);
object obj = <>c.<>9__15_0;
if (obj == null)
{
hook_Awake val = delegate(orig_Awake orig, GameEndReportPanelController self)
{
orig.Invoke(self);
if (Networking._instance.IsArtifactEnabled)
{
string[] array = new string[self.statsToDisplay.Length + 2];
self.statsToDisplay.CopyTo(array, 0);
array[^2] = "Lostitems";
array[^1] = "Gainitems";
self.statsToDisplay = array;
}
};
<>c.<>9__15_0 = val;
obj = (object)val;
}
GameEndReportPanelController.Awake += (hook_Awake)obj;
SceneDirector.PopulateScene += (hook_PopulateScene)delegate(orig_PopulateScene orig, SceneDirector self)
{
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
//IL_0026: Invalid comparison between Unknown and I4
//IL_0040: Unknown result type (might be due to invalid IL or missing references)
//IL_0046: Invalid comparison between Unknown and I4
//IL_0060: Unknown result type (might be due to invalid IL or missing references)
//IL_0066: Invalid comparison between Unknown and I4
//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
//IL_00cb: Invalid comparison between Unknown and I4
//IL_011c: Unknown result type (might be due to invalid IL or missing references)
//IL_0121: Unknown result type (might be due to invalid IL or missing references)
orig.Invoke(self);
currentStage = Run.instance.stageClearCount + 1;
if ((int)Run.instance.selectedDifficulty == 0)
{
timeForBuff = ArtifactOfDoomConfig.timeAfterHitToNotLoseItemDrizzly.Value;
}
if ((int)Run.instance.selectedDifficulty == 1)
{
timeForBuff = ArtifactOfDoomConfig.timeAfterHitToNotLoseItemRainstorm.Value;
}
if ((int)Run.instance.selectedDifficulty == 2)
{
timeForBuff = ArtifactOfDoomConfig.timeAfterHitToNotLoseItemMonsoon.Value;
}
if (timeForBuff == -1.0)
{
List<Difficulty> list2 = ArtifactOfDoomConfig.timeAfterHitToNotLoseItemOtherDifficulty.Value.FromJson<List<Difficulty>>();
foreach (Difficulty item in list2)
{
if ((int)Run.instance.selectedDifficulty == item.DifficultyIndex)
{
timeForBuff = item.time;
}
}
if (timeForBuff == -1.0)
{
DifficultyIndex selectedDifficulty = Run.instance.selectedDifficulty;
Debug.LogWarning((object)("Didn't find valid Configuration for Selected Difficulty. Falling back to 0.1 seconds for Buff. If you want a own definition fill out timeAfterHitToNotLoseItemOtherDifficulty in the Config. DifficultyIndex=" + ((object)(DifficultyIndex)(ref selectedDifficulty)).ToString()));
timeForBuff = 0.1;
}
}
QueueLostItemSprite = new Dictionary<uint, Queue<ItemDef>>();
QueueGainedItemSprite = new Dictionary<uint, Queue<ItemDef>>();
Playername = new List<CharacterBody>();
counter = new List<int>();
LockNetworkUser.Clear();
};
CharacterBody.OnInventoryChanged += (hook_OnInventoryChanged)delegate(orig_OnInventoryChanged orig, CharacterBody self)
{
orig.Invoke(self);
if (!((Object)(object)Networking._instance == (Object)null) && Networking._instance.IsArtifactEnabled && self.isPlayerControlled)
{
NetworkUser networkUserOfCharacterBody2 = getNetworkUserOfCharacterBody(self);
int num6 = calculateEnemyCountToTrigger(self.inventory);
if (!Playername.Contains(self))
{
Playername.Add(self);
counter.Add(0);
}
if ((Object)(object)networkUserOfCharacterBody2 != (Object)null)
{
string killedNeededEnemies4 = counter[Playername.IndexOf(self)] + "," + num6;
if (NetworkServer.active)
{
Networking.ServerEnsureNetworking();
Networking._instance.CallTargetUpdateProgressBar(((NetworkBehaviour)networkUserOfCharacterBody2).connectionToClient, killedNeededEnemies4);
}
}
}
};
GlobalEventManager.OnCharacterDeath += (hook_OnCharacterDeath)delegate(orig_OnCharacterDeath orig, GlobalEventManager self, DamageReport damageReport)
{
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
//IL_058b: Unknown result type (might be due to invalid IL or missing references)
//IL_0461: Unknown result type (might be due to invalid IL or missing references)
//IL_0466: Unknown result type (might be due to invalid IL or missing references)
//IL_050d: Unknown result type (might be due to invalid IL or missing references)
//IL_0512: Unknown result type (might be due to invalid IL or missing references)
//IL_0479: Unknown result type (might be due to invalid IL or missing references)
//IL_04a2: Unknown result type (might be due to invalid IL or missing references)
//IL_04ae: Unknown result type (might be due to invalid IL or missing references)
//IL_04b3: Unknown result type (might be due to invalid IL or missing references)
//IL_0528: Unknown result type (might be due to invalid IL or missing references)
//IL_052d: Unknown result type (might be due to invalid IL or missing references)
//IL_04f0: Expected O, but got Unknown
//IL_0542: Unknown result type (might be due to invalid IL or missing references)
//IL_0547: Unknown result type (might be due to invalid IL or missing references)
//IL_055d: Unknown result type (might be due to invalid IL or missing references)
//IL_0562: Unknown result type (might be due to invalid IL or missing references)
//IL_02b8: Unknown result type (might be due to invalid IL or missing references)
//IL_02bd: Unknown result type (might be due to invalid IL or missing references)
//IL_0382: Unknown result type (might be due to invalid IL or missing references)
//IL_0387: Unknown result type (might be due to invalid IL or missing references)
//IL_02d3: Unknown result type (might be due to invalid IL or missing references)
//IL_030e: Unknown result type (might be due to invalid IL or missing references)
//IL_031a: Unknown result type (might be due to invalid IL or missing references)
//IL_031f: Unknown result type (might be due to invalid IL or missing references)
//IL_03b6: Unknown result type (might be due to invalid IL or missing references)
//IL_03bb: Unknown result type (might be due to invalid IL or missing references)
//IL_03d1: Unknown result type (might be due to invalid IL or missing references)
//IL_03d6: Unknown result type (might be due to invalid IL or missing references)
//IL_039d: Unknown result type (might be due to invalid IL or missing references)
//IL_03a2: Unknown result type (might be due to invalid IL or missing references)
//IL_0365: Expected O, but got Unknown
//IL_03ec: Unknown result type (might be due to invalid IL or missing references)
orig.Invoke(self, damageReport);
Networking._instance.NetworkIsArtifactEnabled = RunArtifactManager.instance.IsArtifactEnabled(artifactOfDoomDefinition.artifactIndex);
Networking._instance.NetworkIsCalculationSacrifice = ArtifactOfDoomConfig.useArtifactOfSacrificeCalculation.Value;
if (Networking._instance.IsArtifactEnabled && !Run.instance.isGameOverServer && !damageReport.victimBody.isPlayerControlled && !((Object)(object)damageReport.attackerBody == (Object)null) && !((Object)(object)damageReport.attackerBody.inventory == (Object)null) && !((Object)(object)damageReport.victimBody.inventory == (Object)null))
{
if ((Object)(object)damageReport.attackerOwnerMaster != (Object)null && !Playername.Contains(damageReport.attackerBody))
{
Playername.Add(damageReport.attackerOwnerMaster.GetBody());
counter.Add(0);
}
if (!Playername.Contains(damageReport.attackerBody))
{
Playername.Add(damageReport.attackerBody);
counter.Add(0);
}
CharacterBody val3 = ((!((Object)(object)damageReport.attackerOwnerMaster != (Object)null)) ? damageReport.attackerBody : damageReport.attackerOwnerMaster.GetBody());
if (val3.isPlayerControlled)
{
uint key2 = 0u;
int num5 = calculateEnemyCountToTrigger(val3.inventory);
bool flag = doesEnemyTrigger(damageReport);
if (counter[Playername.IndexOf(val3)] <= num5 && !ArtifactOfDoomConfig.useArtifactOfSacrificeCalculation.Value)
{
counter[Playername.IndexOf(val3)]++;
NetworkUser networkUserOfDamageReport = getNetworkUserOfDamageReport(damageReport, withMaster: true);
string killedNeededEnemies2 = counter[Playername.IndexOf(val3)] + "," + num5;
if (NetworkServer.active)
{
Networking.ServerEnsureNetworking();
Networking._instance.CallTargetUpdateProgressBar(((NetworkBehaviour)networkUserOfDamageReport).connectionToClient, killedNeededEnemies2);
}
}
else if (!ArtifactOfDoomConfig.useArtifactOfSacrificeCalculation.Value || flag)
{
NetworkInstanceId netId2;
if ((Object)(object)damageReport.attackerOwnerMaster != (Object)null)
{
CharacterBody body = damageReport.attackerOwnerMaster.GetBody();
double characterSpezificBuffLengthMultiplier2 = getCharacterSpezificBuffLengthMultiplier(body.baseNameToken);
characterSpezificBuffLengthMultiplier2 *= 100.0;
Random random2 = new Random();
while (characterSpezificBuffLengthMultiplier2 > (double)random2.Next(0, 99))
{
ItemIndex val4 = GiveAndReturnRandomItem(body.inventory);
if (ArtifactOfDoomConfig.enableChatItemOutput.Value)
{
ItemDef itemDef2 = ItemCatalog.GetItemDef(val4);
string string2 = Language.GetString(itemDef2.nameToken);
string coloredUserName2 = damageReport.attackerOwnerMaster.GetBody().GetColoredUserName();
int itemCount2 = damageReport.attackerOwnerMaster.GetBody().inventory.GetItemCount(itemDef2.itemIndex);
Chat.SendBroadcastChat((ChatMessageBase)new SimpleChatMessage
{
baseToken = damageReport.attackerOwnerMaster.GetBody().GetColoredUserName() + "<color=#7e91af> gained</color> " + string.Format("{0} ({1})</color> <color=#{2}></color>", string2 ?? "???", itemCount2, "7e91af")
});
}
PlayerStatsComponent.FindBodyStatSheet(body).PushStatValue(statsGainItems, 1uL);
Dictionary<uint, Queue<ItemDef>> queueGainedItemSprite = QueueGainedItemSprite;
netId2 = ((NetworkBehaviour)body).netId;
if (queueGainedItemSprite.ContainsKey(((NetworkInstanceId)(ref netId2)).Value))
{
netId2 = ((NetworkBehaviour)body).netId;
key2 = ((NetworkInstanceId)(ref netId2)).Value;
}
else
{
Dictionary<uint, Queue<ItemDef>> queueGainedItemSprite2 = QueueGainedItemSprite;
netId2 = ((NetworkBehaviour)body).netId;
queueGainedItemSprite2.Add(((NetworkInstanceId)(ref netId2)).Value, new Queue<ItemDef>());
netId2 = ((NetworkBehaviour)body).netId;
key2 = ((NetworkInstanceId)(ref netId2)).Value;
}
QueueGainedItemSprite[key2].Enqueue(ItemCatalog.GetItemDef(val4));
characterSpezificBuffLengthMultiplier2 -= 100.0;
}
}
else
{
CharacterBody body = damageReport.attackerBody;
double characterSpezificItemCount = getCharacterSpezificItemCount(body.baseNameToken);
characterSpezificItemCount *= 100.0;
Random random3 = new Random();
while (characterSpezificItemCount > (double)random3.Next(0, 99))
{
ItemIndex val5 = GiveAndReturnRandomItem(body.inventory);
if (ArtifactOfDoomConfig.enableChatItemOutput.Value)
{
ItemDef itemDef3 = ItemCatalog.GetItemDef(val5);
string string3 = Language.GetString(itemDef3.nameToken);
string coloredUserName3 = body.GetColoredUserName();
int itemCount3 = body.inventory.GetItemCount(itemDef3.itemIndex);
Chat.SendBroadcastChat((ChatMessageBase)new SimpleChatMessage
{
baseToken = body.GetColoredUserName() + "<color=#7e91af> gained</color> " + string.Format("{0} ({1})</color> <color=#{2}></color>", string3 ?? "???", itemCount3, "7e91af")
});
}
PlayerStatsComponent.FindBodyStatSheet(body).PushStatValue(statsGainItems, 1uL);
Dictionary<uint, Queue<ItemDef>> queueGainedItemSprite3 = QueueGainedItemSprite;
netId2 = ((NetworkBehaviour)body).netId;
if (queueGainedItemSprite3.ContainsKey(((NetworkInstanceId)(ref netId2)).Value))
{
netId2 = ((NetworkBehaviour)body).netId;
key2 = ((NetworkInstanceId)(ref netId2)).Value;
}
else
{
try
{
Dictionary<uint, Queue<ItemDef>> queueGainedItemSprite4 = QueueGainedItemSprite;
netId2 = ((NetworkBehaviour)body).netId;
queueGainedItemSprite4.Add(((NetworkInstanceId)(ref netId2)).Value, new Queue<ItemDef>());
netId2 = ((NetworkBehaviour)body).netId;
key2 = ((NetworkInstanceId)(ref netId2)).Value;
}
catch (Exception)
{
Debug.LogError((object)"[SirHamburger ArtifactOfDoom] Error while excecuting : QueueGainedItemSprite.Add(body.netId.Value, new Queue<Sprite>()); (line 203)");
}
}
QueueGainedItemSprite[key2].Enqueue(ItemCatalog.GetItemDef(val5));
characterSpezificItemCount -= 100.0;
}
}
if (QueueGainedItemSprite[key2].Count > 10)
{
QueueGainedItemSprite[key2].Dequeue();
}
string text2 = "";
foreach (ItemDef item2 in QueueGainedItemSprite[key2])
{
text2 = text2 + ((Object)item2).name + " ";
}
NetworkUser networkUserOfDamageReport2 = getNetworkUserOfDamageReport(damageReport, withMaster: true);
if (!LockItemGainNetworkUser.ContainsKey(networkUserOfDamageReport2))
{
LockItemGainNetworkUser.Add(networkUserOfDamageReport2, value: false);
}
counter[Playername.IndexOf(val3)]++;
if (!LockItemGainNetworkUser[networkUserOfDamageReport2])
{
LockItemGainNetworkUser[networkUserOfDamageReport2] = false;
LockItemGainNetworkUser[networkUserOfDamageReport2] = false;
string killedNeededEnemies3 = counter[Playername.IndexOf(val3)] + "," + num5;
if (NetworkServer.active)
{
Networking._instance.CallTargetAddGainedItemsToPlayers(((NetworkBehaviour)networkUserOfDamageReport2).connectionToClient, text2);
Networking.ServerEnsureNetworking();
Networking._instance.CallTargetUpdateProgressBar(((NetworkBehaviour)networkUserOfDamageReport2).connectionToClient, killedNeededEnemies3);
}
}
counter[Playername.IndexOf(val3)] = 0;
}
}
}
};
HealthComponent.TakeDamage += (hook_TakeDamage)delegate(orig_TakeDamage orig, HealthComponent self, DamageInfo damageinfo)
{
//IL_031d: Unknown result type (might be due to invalid IL or missing references)
//IL_0322: Unknown result type (might be due to invalid IL or missing references)
//IL_0346: Unknown result type (might be due to invalid IL or missing references)
//IL_033d: Unknown result type (might be due to invalid IL or missing references)
//IL_0342: Unknown result type (might be due to invalid IL or missing references)
//IL_0357: Unknown result type (might be due to invalid IL or missing references)
//IL_0359: Unknown result type (might be due to invalid IL or missing references)
//IL_035c: Unknown result type (might be due to invalid IL or missing references)
//IL_0365: Unknown result type (might be due to invalid IL or missing references)
//IL_0376: Unknown result type (might be due to invalid IL or missing references)
//IL_00cb: 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_00d4: Unknown result type (might be due to invalid IL or missing references)
//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
//IL_037f: Unknown result type (might be due to invalid IL or missing references)
//IL_0386: Unknown result type (might be due to invalid IL or missing references)
//IL_038c: Invalid comparison between Unknown and I4
//IL_038e: Unknown result type (might be due to invalid IL or missing references)
//IL_0395: Unknown result type (might be due to invalid IL or missing references)
//IL_03ba: Unknown result type (might be due to invalid IL or missing references)
//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_00f2: Unknown result type (might be due to invalid IL or missing references)
//IL_0480: Unknown result type (might be due to invalid IL or missing references)
//IL_03d7: Unknown result type (might be due to invalid IL or missing references)
//IL_0408: Unknown result type (might be due to invalid IL or missing references)
//IL_0414: Unknown result type (might be due to invalid IL or missing references)
//IL_0419: Unknown result type (might be due to invalid IL or missing references)
//IL_0104: Unknown result type (might be due to invalid IL or missing references)
//IL_0111: Unknown result type (might be due to invalid IL or missing references)
//IL_0120: Unknown result type (might be due to invalid IL or missing references)
//IL_0265: Unknown result type (might be due to invalid IL or missing references)
//IL_026a: Unknown result type (might be due to invalid IL or missing references)
//IL_045a: Expected O, but got Unknown
//IL_0284: Unknown result type (might be due to invalid IL or missing references)
//IL_0289: Unknown result type (might be due to invalid IL or missing references)
//IL_02a3: Unknown result type (might be due to invalid IL or missing references)
//IL_02a8: Unknown result type (might be due to invalid IL or missing references)
//IL_02c2: Unknown result type (might be due to invalid IL or missing references)
//IL_02c7: Unknown result type (might be due to invalid IL or missing references)
orig.Invoke(self, damageinfo);
if (Networking._instance.IsArtifactEnabled && !damageinfo.rejected && !((Object)(object)self.body == (Object)null) && !((Object)(object)self.body.inventory == (Object)null) && !Run.instance.isGameOverServer && damageinfo != null && !((Object)(object)damageinfo.attacker == (Object)null) && !self.body.HasBuff(ArtifactOfDoomConfig.ArtifactOfDoomBuff))
{
int totalItemCountOfPlayer = getTotalItemCountOfPlayer(self.body.inventory);
if (self.body.isPlayerControlled && totalItemCountOfPlayer > 0 && ((Object)self).name != ((Object)damageinfo.attacker).name)
{
Dictionary<ItemIndex, int> dictionary = new Dictionary<ItemIndex, int>();
List<ItemIndex> list = new List<ItemIndex>();
GenericStaticEnumerable<ItemIndex, AllItemsEnumerator> allItems = ItemCatalog.allItems;
AllItemsEnumerator enumerator = allItems.GetEnumerator();
try
{
while (((AllItemsEnumerator)(ref enumerator)).MoveNext())
{
ItemIndex current = ((AllItemsEnumerator)(ref enumerator)).Current;
if (self.body.inventory.GetItemCount(current) > 0)
{
dictionary.Add(current, self.body.inventory.GetItemCount(current));
list.Add(current);
}
}
}
finally
{
((IDisposable)(AllItemsEnumerator)(ref enumerator)).Dispose();
}
double num = 100.0;
if (totalItemCountOfPlayer <= ArtifactOfDoomConfig.minItemsPerStage.Value * currentStage)
{
num = Math.Sqrt((double)totalItemCountOfPlayer / ((double)currentStage * (double)ArtifactOfDoomConfig.minItemsPerStage.Value));
num *= 100.0;
}
Random random = new Random();
for (int i = 0; i < self.body.inventory.GetItemCount(Items.Clover) + 1; i++)
{
int num2 = random.Next(1, 100);
if (num < (double)num2)
{
return;
}
}
num = 100.0;
if (totalItemCountOfPlayer > ArtifactOfDoomConfig.maxItemsPerStage.Value * currentStage)
{
num = Math.Pow((double)totalItemCountOfPlayer / ((double)ArtifactOfDoomConfig.maxItemsPerStage.Value * (double)currentStage), ArtifactOfDoomConfig.exponentailFactorToCalculateSumOfLostItems.Value);
num *= 100.0;
}
int num3 = 0;
uint key = 50000u;
while (num > 0.0)
{
Dictionary<uint, Queue<ItemDef>> queueLostItemSprite = QueueLostItemSprite;
NetworkInstanceId netId = ((NetworkBehaviour)self.body).netId;
if (queueLostItemSprite.ContainsKey(((NetworkInstanceId)(ref netId)).Value))
{
netId = ((NetworkBehaviour)self.body).netId;
key = ((NetworkInstanceId)(ref netId)).Value;
}
else
{
try
{
Dictionary<uint, Queue<ItemDef>> queueLostItemSprite2 = QueueLostItemSprite;
netId = ((NetworkBehaviour)self.body).netId;
queueLostItemSprite2.Add(((NetworkInstanceId)(ref netId)).Value, new Queue<ItemDef>());
netId = ((NetworkBehaviour)self.body).netId;
key = ((NetworkInstanceId)(ref netId)).Value;
}
catch (Exception)
{
Debug.Log((object)"[SirHamburger ArtifactOfDoom] Error in Line 311");
}
}
if (num < (double)random.Next(0, 99))
{
break;
}
num3++;
int index = random.Next(0, dictionary.Count - 1);
ItemIndex val2 = list[index];
while (dictionary[val2] == 0)
{
index = random.Next(0, dictionary.Count - 1);
val2 = list[index];
}
dictionary[val2]--;
if (!ItemCatalog.lunarItemList.Contains(val2) && (int)ItemCatalog.GetItemDef(val2).tier != 5 && val2 != Items.CaptainDefenseMatrix.itemIndex)
{
self.body.inventory.RemoveItem(val2, 1);
if (ArtifactOfDoomConfig.enableChatItemOutput.Value)
{
ItemDef itemDef = ItemCatalog.GetItemDef(val2);
string @string = Language.GetString(itemDef.nameToken);
string coloredUserName = self.body.GetColoredUserName();
int itemCount = self.body.inventory.GetItemCount(itemDef.itemIndex);
Chat.SendBroadcastChat((ChatMessageBase)new SimpleChatMessage
{
baseToken = self.body.GetColoredUserName() + "<color=#7e91af> lost</color> " + string.Format("{0} ({1})</color> <color=#{2}></color>", @string ?? "???", itemCount, "7e91af")
});
}
PlayerStatsComponent.FindBodyStatSheet(self.body).PushStatValue(statsLostItems, 1uL);
QueueLostItemSprite[key].Enqueue(ItemCatalog.GetItemDef(val2));
if (QueueLostItemSprite[key].Count > 10)
{
QueueLostItemSprite[key].Dequeue();
}
double characterSpezificBuffLengthMultiplier = getCharacterSpezificBuffLengthMultiplier(self.body.baseNameToken);
self.body.AddTimedBuff(ArtifactOfDoomConfig.ArtifactOfDoomBuff, (float)(timeForBuff * (double)(float)characterSpezificBuffLengthMultiplier));
}
num -= 100.0;
}
string text = "";
foreach (ItemDef item3 in QueueLostItemSprite[key])
{
text = text + ((Object)item3).name + " ";
}
NetworkUser networkUserOfCharacterBody = getNetworkUserOfCharacterBody(self.body);
if ((Object)(object)networkUserOfCharacterBody == (Object)null)
{
Debug.LogError((object)"--------------------------------tempNetworkUser(lostitems)==null---------------------------");
}
if (!LockNetworkUser.ContainsKey(networkUserOfCharacterBody))
{
LockNetworkUser.Add(networkUserOfCharacterBody, value: false);
}
if (!LockNetworkUser[networkUserOfCharacterBody])
{
LockNetworkUser[networkUserOfCharacterBody] = false;
int num4 = calculateEnemyCountToTrigger(self.body.inventory);
string killedNeededEnemies = counter[Playername.IndexOf(self.body)] + "," + num4;
if (NetworkServer.active)
{
Networking._instance.CallTargetAddLostItemsOfPlayers(((NetworkBehaviour)networkUserOfCharacterBody).connectionToClient, text);
Networking.ServerEnsureNetworking();
Networking._instance.CallTargetUpdateProgressBar(((NetworkBehaviour)networkUserOfCharacterBody).connectionToClient, killedNeededEnemies);
}
}
}
}
};
}
private NetworkUser getNetworkUserOfDamageReport(DamageReport report, bool withMaster)
{
//IL_008a: Unknown result type (might be due to invalid IL or missing references)
//IL_0095: 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)
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
NetworkUser result = null;
foreach (NetworkUser readOnlyInstances in NetworkUser.readOnlyInstancesList)
{
if ((Object)(object)report.attackerOwnerMaster != (Object)null && withMaster)
{
if ((Object)(object)readOnlyInstances.GetCurrentBody() != (Object)null && ((NetworkBehaviour)readOnlyInstances.GetCurrentBody()).netId == ((NetworkBehaviour)report.attackerOwnerMaster.GetBody()).netId)
{
result = readOnlyInstances;
}
}
else if ((Object)(object)readOnlyInstances.GetCurrentBody() != (Object)null && ((NetworkBehaviour)readOnlyInstances.GetCurrentBody()).netId == ((NetworkBehaviour)report.attackerBody).netId)
{
result = readOnlyInstances;
}
}
return result;
}
private NetworkUser getNetworkUserOfCharacterBody(CharacterBody body)
{
//IL_0030: 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)
NetworkUser result = null;
foreach (NetworkUser readOnlyInstances in NetworkUser.readOnlyInstancesList)
{
if ((Object)(object)readOnlyInstances.GetCurrentBody() != (Object)null && ((NetworkBehaviour)readOnlyInstances.GetCurrentBody()).netId == ((NetworkBehaviour)body).netId)
{
result = readOnlyInstances;
}
}
return result;
}
private int getTotalItemCountOfPlayer(Inventory inventory)
{
return inventory.GetTotalItemCountOfTier((ItemTier)0) + inventory.GetTotalItemCountOfTier((ItemTier)1) + inventory.GetTotalItemCountOfTier((ItemTier)2);
}
private int calculateEnemyCountToTrigger(Inventory inventory)
{
int totalItemCountOfPlayer = getTotalItemCountOfPlayer(inventory);
int num = 0;
num = (int)((0.5 + 0.5 * (double)Mathf.Atan(0.4f * (float)totalItemCountOfPlayer - (float)(ArtifactOfDoomConfig.averageItemsPerStage.Value * (1 + currentStage) / 2)) / 2.0) * 40.0 - 3.0);
if (num < 1)
{
num = 1;
}
if (RunArtifactManager.instance.IsArtifactEnabled(Artifacts.swarmsArtifactDef) && ArtifactOfDoomConfig.artifactOfSwarmNerf.Value)
{
num *= 2;
}
return num;
}
private double getCharacterSpezificItemCount(string baseNameToken)
{
switch (baseNameToken)
{
case "COMMANDO_BODY_NAME":
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: Commando"));
}
return ArtifactOfDoomConfig.CommandoBonusItems.Value;
case "HUNTRESS_BODY_NAME":
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: Huntress"));
}
return ArtifactOfDoomConfig.HuntressBonusItems.Value;
case "ENGI_BODY_NAME":
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: Engineer"));
}
return ArtifactOfDoomConfig.EngineerBonusItems.Value;
case "TOOLBOT_BODY_NAME":
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: MULT"));
}
return ArtifactOfDoomConfig.MULTBonusItems.Value;
case "MAGE_BODY_NAME":
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: Artificer"));
}
return ArtifactOfDoomConfig.ArtificerBonusItems.Value;
case "MERC_BODY_NAME":
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: Mercenary"));
}
return ArtifactOfDoomConfig.MercenaryBonusItems.Value;
case "TREEBOT_BODY_NAME":
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: Rex"));
}
return ArtifactOfDoomConfig.RexBonusItems.Value;
case "LOADER_BODY_NAME":
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: Loader"));
}
return ArtifactOfDoomConfig.LoaderBonusItems.Value;
case "CROCO_BODY_NAME":
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: Acrid"));
}
return ArtifactOfDoomConfig.AcridBonusItems.Value;
case "CAPTAIN_BODY_NAME":
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: Captain"));
}
return ArtifactOfDoomConfig.CaptainBonusItems.Value;
case "BANDIT2_BODY_NAME":
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: Bandit"));
}
return ArtifactOfDoomConfig.BanditBonusItems.Value;
case "RAILGUNNER_BODY_NAME":
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: Railgunner"));
}
return ArtifactOfDoomConfig.RailgunnerBonusItems.Value;
case "VOIDSURVIVOR_BODY_NAME":
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: VoidSurvivor"));
}
return ArtifactOfDoomConfig.VoidSurvivorBonusItems.Value;
default:
{
string value = ArtifactOfDoomConfig.CustomChars.Value;
List<Character> list = value.FromJson<List<Character>>();
foreach (Character item in list)
{
if (baseNameToken == item.Name)
{
return item.BonusItems;
}
}
Debug.LogWarning((object)("did not find a valid configuation setting for Character " + baseNameToken + " you can add one in the settings"));
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: Acrid"));
}
return ArtifactOfDoomConfig.CustomSurvivorBonusItems.Value;
}
}
}
private double getCharacterSpezificBuffLengthMultiplier(string baseNameToken)
{
switch (baseNameToken)
{
case "COMMANDO_BODY_NAME":
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: Commando"));
}
return ArtifactOfDoomConfig.CommandoMultiplierForTimedBuff.Value;
case "HUNTRESS_BODY_NAME":
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: Huntress"));
}
return ArtifactOfDoomConfig.HuntressMultiplierForTimedBuff.Value;
case "ENGI_BODY_NAME":
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: Engineer"));
}
return ArtifactOfDoomConfig.EngineerMultiplierForTimedBuff.Value;
case "TOOLBOT_BODY_NAME":
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: MULT"));
}
return ArtifactOfDoomConfig.MULTMultiplierForTimedBuff.Value;
case "MAGE_BODY_NAME":
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: Artificer"));
}
return ArtifactOfDoomConfig.ArtificerMultiplierForTimedBuff.Value;
case "MERC_BODY_NAME":
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: Mercenary"));
}
return ArtifactOfDoomConfig.MercenaryMultiplierForTimedBuff.Value;
case "TREEBOT_BODY_NAME":
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: Rex"));
}
return ArtifactOfDoomConfig.RexMultiplierForTimedBuff.Value;
case "LOADER_BODY_NAME":
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: Loader"));
}
return ArtifactOfDoomConfig.LoaderMultiplierForTimedBuff.Value;
case "CROCO_BODY_NAME":
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: Acrid"));
}
return ArtifactOfDoomConfig.AcridMultiplierForTimedBuff.Value;
case "CAPTAIN_BODY_NAME":
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: Captain"));
}
return ArtifactOfDoomConfig.CaptainMultiplierForTimedBuff.Value;
case "BANDIT2_BODY_NAME":
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: Bandit"));
}
return ArtifactOfDoomConfig.BanditMultiplierForTimedBuff.Value;
case "RAILGUNNER_BODY_NAME":
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: Railgunner"));
}
return ArtifactOfDoomConfig.RailgunnerMultiplierForTimedBuff.Value;
case "VOIDSURVIVOR_BODY_NAME":
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: VoidSurvivor"));
}
return ArtifactOfDoomConfig.VoidSurvivorMultiplierForTimedBuff.Value;
default:
{
string value = ArtifactOfDoomConfig.CustomChars.Value;
List<Character> list = value.FromJson<List<Character>>();
foreach (Character item in list)
{
if (baseNameToken == item.Name)
{
return item.MultiplierForTimedBuff;
}
}
Debug.LogWarning((object)("did not find a valid configuation setting for Character " + baseNameToken + " you can add one in the settings"));
if (debug)
{
Debug.LogWarning((object)("Character baseNameToken = " + baseNameToken + " returning: Acrid"));
}
return ArtifactOfDoomConfig.CustomSurvivorMultiplierForTimedBuff.Value;
}
}
}
public ItemIndex GiveAndReturnRandomItem(Inventory inventory)
{
//IL_005d: Unknown result type (might be due to invalid IL or missing references)
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_0065: 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_0070: Unknown result type (might be due to invalid IL or missing references)
//IL_0074: Unknown result type (might be due to invalid IL or missing references)
List<ItemIndex> tier1ItemList = ItemCatalog.tier1ItemList;
List<ItemIndex> tier2ItemList = ItemCatalog.tier2ItemList;
List<ItemIndex> tier3ItemList = ItemCatalog.tier3ItemList;
WeightedSelection<List<ItemIndex>> val = new WeightedSelection<List<ItemIndex>>(8);
val.AddChoice(tier1ItemList, 80f);
val.AddChoice(tier2ItemList, 19f);
val.AddChoice(tier3ItemList, 1f);
List<ItemIndex> list = val.Evaluate(Random.value);
ItemIndex val2 = list[Random.Range(0, list.Count)];
inventory.GiveItem(val2, 1);
return val2;
}
protected void OnDestroy()
{
QueueLostItemSprite = new Dictionary<uint, Queue<ItemDef>>();
QueueGainedItemSprite = new Dictionary<uint, Queue<ItemDef>>();
statsLostItems = null;
statsGainItems = null;
Playername = new List<CharacterBody>();
counter = new List<int>();
}
private bool doesEnemyTrigger(DamageReport damageReport)
{
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: Unknown result type (might be due to invalid IL or missing references)
if (!ArtifactOfDoomConfig.useArtifactOfSacrificeCalculation.Value || !Object.op_Implicit((Object)(object)damageReport.victimMaster) || (damageReport.attackerTeamIndex == damageReport.victimTeamIndex && Object.op_Implicit((Object)(object)damageReport.victimMaster.minionOwnership.ownerMaster)))
{
return false;
}
float expAdjustedDropChancePercent = Util.GetExpAdjustedDropChancePercent(5f * (float)ArtifactOfDoomConfig.multiplayerForArtifactOfSacrificeDropRate.Value, ((Component)damageReport.victim).gameObject);
return Util.CheckRoll(expAdjustedDropChancePercent, 0f, (CharacterMaster)null);
}
}
public class ArtifactOfDoomUI
{
[Serializable]
[CompilerGenerated]
private sealed class <>c
{
public static readonly <>c <>9 = new <>c();
public static hook_RemoveItem_ItemIndex_int <>9__1_0;
internal void <.ctor>b__1_0(orig_RemoveItem_ItemIndex_int orig, Inventory self, ItemIndex itemindex1, int ItemIndex2)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
orig.Invoke(self, itemindex1, ItemIndex2);
}
}
public GameObject ModCanvas = null;
public Transform HUDRoot = null;
public GameObject ModExpBarGroup = null;
public static List<GameObject> listGainedImages = new List<GameObject>();
public static List<GameObject> listLostImages = new List<GameObject>();
public static GameObject itemGainBar;
public static GameObject itemGainFrame;
public ArtifactOfDoomUI()
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Expected O, but got Unknown
//IL_0043: 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)
//IL_004e: Expected O, but got Unknown
HUD.Awake += new hook_Awake(HUDAwake);
object obj = <>c.<>9__1_0;
if (obj == null)
{
hook_RemoveItem_ItemIndex_int val = delegate(orig_RemoveItem_ItemIndex_int orig, Inventory self, ItemIndex itemindex1, int ItemIndex2)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
orig.Invoke(self, itemindex1, ItemIndex2);
};
<>c.<>9__1_0 = val;
obj = (object)val;
}
Inventory.RemoveItem_ItemIndex_int += (hook_RemoveItem_ItemIndex_int)obj;
}
private void SetUpModCanvas()
{
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0025: Expected O, but got Unknown
//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
if ((Object)(object)ModCanvas == (Object)null)
{
ModCanvas = new GameObject("UIModifierCanvas");
ModCanvas.AddComponent<Canvas>();
ModCanvas.GetComponent<Canvas>().renderMode = (RenderMode)1;
if ((Object)(object)HUDRoot != (Object)null)
{
ModCanvas.GetComponent<Canvas>().worldCamera = ((Component)((Component)HUDRoot).transform.root).gameObject.GetComponent<Canvas>().worldCamera;
}
ModCanvas.AddComponent<CanvasScaler>();
ModCanvas.GetComponent<CanvasScaler>().uiScaleMode = (ScaleMode)1;
ModCanvas.GetComponent<CanvasScaler>().referenceResolution = new Vector2(1920f, 1080f);
ModCanvas.GetComponent<CanvasScaler>().screenMatchMode = (ScreenMatchMode)1;
}
}
public void HUDAwake(orig_Awake orig, HUD self)
{
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
orig.Invoke(self);
NetworkClass.EnsureNetworking();
Networking._instance.NetworkIsArtifactEnabled = RunArtifactManager.instance.IsArtifactEnabled(ArtifactOfDoom.artifactOfDoomDefinition.artifactIndex);
Networking._instance.NetworkIsCalculationSacrifice = ArtifactOfDoomConfig.useArtifactOfSacrificeCalculation.Value;
if (Networking._instance.IsArtifactEnabled)
{
HUDRoot = ((Component)self).transform.root;
MainExpBarStart();
}
}
private void MainExpBarStart()
{
//IL_0043: 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)
//IL_0052: 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_008b: Unknown result type (might be due to invalid IL or missing references)
//IL_0095: Expected O, but got Unknown
//IL_00df: Unknown result type (might be due to invalid IL or missing references)
//IL_010b: Unknown result type (might be due to invalid IL or missing references)
//IL_0121: Unknown result type (might be due to invalid IL or missing references)
//IL_0137: Unknown result type (might be due to invalid IL or missing references)
//IL_0165: Unknown result type (might be due to invalid IL or missing references)
//IL_016f: Expected O, but got Unknown
//IL_01bb: Unknown result type (might be due to invalid IL or missing references)
//IL_01eb: Unknown result type (might be due to invalid IL or missing references)
//IL_0201: Unknown result type (might be due to invalid IL or missing references)
//IL_0217: Unknown result type (might be due to invalid IL or missing references)
//IL_0275: Unknown result type (might be due to invalid IL or missing references)
//IL_027f: Expected O, but got Unknown
//IL_02bc: Unknown result type (might be due to invalid IL or missing references)
//IL_02dc: Unknown result type (might be due to invalid IL or missing references)
//IL_02f2: Unknown result type (might be due to invalid IL or missing references)
//IL_0308: Unknown result type (might be due to invalid IL or missing references)
//IL_0347: Unknown result type (might be due to invalid IL or missing references)
//IL_0358: Unknown result type (might be due to invalid IL or missing references)
//IL_0362: Expected O, but got Unknown
//IL_039f: Unknown result type (might be due to invalid IL or missing references)
//IL_03bf: Unknown result type (might be due to invalid IL or missing references)
//IL_03d5: Unknown result type (might be due to invalid IL or missing references)
//IL_03eb: Unknown result type (might be due to invalid IL or missing references)
//IL_042a: Unknown result type (might be due to invalid IL or missing references)
if ((Object)(object)HUDRoot != (Object)null)
{
try
{
SetUpModCanvas();
listGainedImages.Clear();
listLostImages.Clear();
float num = Convert.ToSingle(ArtifactOfDoomConfig.sizeOfSideBars.Value);
Resolution currentResolution = Screen.currentResolution;
float num2 = ((Resolution)(ref currentResolution)).width;
currentResolution = Screen.currentResolution;
float num3 = num2 / (float)((Resolution)(ref currentResolution)).height;
float num4 = num * num3;
float num5 = num4 + 0.01f;
for (int i = 0; i < 10; i++)
{
ModExpBarGroup = new GameObject("GainedItems" + i);
ModExpBarGroup.transform.SetParent(ModCanvas.transform);
ModExpBarGroup.AddComponent<RectTransform>();
ModExpBarGroup.GetComponent<RectTransform>().anchorMin = new Vector2(0f, (float)(0.2 + (double)((float)i * num5)));
ModExpBarGroup.GetComponent<RectTransform>().anchorMax = new Vector2(num, (float)(0.2 + (double)num4 + (double)((float)i * num5)));
ModExpBarGroup.GetComponent<RectTransform>().sizeDelta = Vector2.zero;
ModExpBarGroup.GetComponent<RectTransform>().anchoredPosition = Vector2.zero;
listGainedImages.Add(ModExpBarGroup);
ModExpBarGroup = new GameObject("LostItems" + i);
ModExpBarGroup.transform.SetParent(ModCanvas.transform);
ModExpBarGroup.AddComponent<RectTransform>();
ModExpBarGroup.GetComponent<RectTransform>().anchorMin = new Vector2(1f - num, (float)(0.2 + (double)((float)i * num5)));
ModExpBarGroup.GetComponent<RectTransform>().anchorMax = new Vector2(1f, (float)(0.2 + (double)num4 + (double)((float)i * num5)));
ModExpBarGroup.GetComponent<RectTransform>().sizeDelta = Vector2.zero;
ModExpBarGroup.GetComponent<RectTransform>().anchoredPosition = Vector2.zero;
listLostImages.Add(ModExpBarGroup);
}
if (!ArtifactOfDoomConfig.disableItemProgressBar.Value && !Networking._instance.IsCalculationSacrifice)
{
ModExpBarGroup = new GameObject("ItemGainBar");
ModExpBarGroup.transform.SetParent(ModCanvas.transform);
ModExpBarGroup.AddComponent<RectTransform>();
ModExpBarGroup.GetComponent<RectTransform>().anchorMin = new Vector2(0.35f, 0.05f);
ModExpBarGroup.GetComponent<RectTransform>().anchorMax = new Vector2(0.35f, 0.06f);
ModExpBarGroup.GetComponent<RectTransform>().sizeDelta = Vector2.zero;
ModExpBarGroup.GetComponent<RectTransform>().anchoredPosition = Vector2.zero;
itemGainBar = ModExpBarGroup;
itemGainBar.AddComponent<Image>();
((Graphic)itemGainBar.GetComponent<Image>()).color = new Color(255f, 255f, 255f, 0.3f);
ModExpBarGroup = new GameObject("ItemGainFrame");
ModExpBarGroup.transform.SetParent(ModCanvas.transform);
ModExpBarGroup.AddComponent<RectTransform>();
ModExpBarGroup.GetComponent<RectTransform>().anchorMin = new Vector2(0.35f, 0.05f);
ModExpBarGroup.GetComponent<RectTransform>().anchorMax = new Vector2(0.65f, 0.06f);
ModExpBarGroup.GetComponent<RectTransform>().sizeDelta = Vector2.zero;
ModExpBarGroup.GetComponent<RectTransform>().anchoredPosition = Vector2.zero;
itemGainFrame = ModExpBarGroup;
itemGainFrame.AddComponent<Image>();
((Graphic)itemGainFrame.GetComponent<Image>()).color = new Color(255f, 0f, 0f, 0.1f);
}
return;
}
catch (Exception)
{
Debug.Log((object)"[SirHamburger Error] while Adding UI elements");
return;
}
}
Debug.LogError((object)"HUDRoot == null");
}
private void OnDestroy()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Expected O, but got Unknown
HUD.Awake -= new hook_Awake(HUDAwake);
}
}
}