Decompiled source of Gator Bounty v1.0.1

GatorBounty.dll

Decompiled 2 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Sockets;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Core.Logging.Interpolation;
using BepInEx.Logging;
using BepInEx.Unity.IL2CPP;
using Bloodstone.API;
using Bloody.Core;
using Bloody.Core.API.v1;
using Bloody.Core.GameData.v1;
using Bloody.Core.Helper.v1;
using Bloody.Core.Methods;
using Bloody.Core.Models.v1;
using Bloody.Core.Models.v1.Base;
using HarmonyLib;
using Il2CppInterop.Runtime;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
using Il2CppSystem;
using Il2CppSystem.Collections.Generic;
using Microsoft.CodeAnalysis;
using ProjectM;
using ProjectM.Gameplay.Clan;
using ProjectM.Network;
using ProjectM.Scripting;
using ProjectM.Terrain;
using Stunlock.Core;
using Unity.Collections;
using Unity.Entities;
using UnityEngine;
using VampireCommandFramework;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
[assembly: AssemblyCompany("GatorBounty")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("Gator's Bounty Mod for VRising")]
[assembly: AssemblyFileVersion("0.1.10.0")]
[assembly: AssemblyInformationalVersion("0.1.10+1.Branch.main.Sha.c33d0879382e1a0da34861ec55914ba7e637a80e")]
[assembly: AssemblyProduct("GatorBounty")]
[assembly: AssemblyTitle("GatorBounty")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.1.10.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
internal static class ECSExtensions
{
	internal static void With<T>(this Entity entity, ActionRef<T> action) where T : struct
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0016: Unknown result type (might be due to invalid IL or missing references)
		//IL_001b: Unknown result type (might be due to invalid IL or missing references)
		//IL_001e: Unknown result type (might be due to invalid IL or missing references)
		T val = entity.RW<T>();
		action.Invoke(ref val);
		EntityManager entityManager = VWorld.Game.EntityManager;
		((EntityManager)(ref entityManager)).SetComponentData<T>(entity, val);
	}

	internal static bool Has<T>(this Entity entity) where T : struct
	{
		//IL_0006: Unknown result type (might be due to invalid IL or missing references)
		//IL_0016: Unknown result type (might be due to invalid IL or missing references)
		//IL_001b: Unknown result type (might be due to invalid IL or missing references)
		//IL_001e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Unknown result type (might be due to invalid IL or missing references)
		int num = TypeIndex.op_Implicit(TypeManager.GetTypeIndex(Il2CppType.Of<T>()));
		EntityManager entityManager = VWorld.Game.EntityManager;
		return ((EntityManager)(ref entityManager)).HasComponentRaw(entity, TypeIndex.op_Implicit(num));
	}

	internal static bool Has<T>(this Entity entity, out T value) where T : struct
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_000d: Unknown result type (might be due to invalid IL or missing references)
		if (entity.Has<T>())
		{
			value = entity.Read<T>();
			return true;
		}
		value = default(T);
		return false;
	}

	internal unsafe static T RW<T>(this Entity entity) where T : struct
	{
		//IL_0006: Unknown result type (might be due to invalid IL or missing references)
		//IL_0016: Unknown result type (might be due to invalid IL or missing references)
		//IL_001b: Unknown result type (might be due to invalid IL or missing references)
		//IL_001e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Unknown result type (might be due to invalid IL or missing references)
		//IL_0088: Unknown result type (might be due to invalid IL or missing references)
		int num = TypeIndex.op_Implicit(TypeManager.GetTypeIndex(Il2CppType.Of<T>()));
		EntityManager entityManager = VWorld.Game.EntityManager;
		T* componentDataRawRW = (T*)((EntityManager)(ref entityManager)).GetComponentDataRawRW(entity, TypeIndex.op_Implicit(num));
		if (componentDataRawRW == null)
		{
			throw new InvalidOperationException($"Failure to access ReadWrite <{typeof(T).Name}> typeIndex({num}) on entity({entity}).");
		}
		return *componentDataRawRW;
	}

	internal unsafe static T Read<T>(this Entity entity) where T : struct
	{
		//IL_0006: Unknown result type (might be due to invalid IL or missing references)
		//IL_0016: Unknown result type (might be due to invalid IL or missing references)
		//IL_001b: Unknown result type (might be due to invalid IL or missing references)
		//IL_001e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Unknown result type (might be due to invalid IL or missing references)
		//IL_0088: Unknown result type (might be due to invalid IL or missing references)
		int num = TypeIndex.op_Implicit(TypeManager.GetTypeIndex(Il2CppType.Of<T>()));
		EntityManager entityManager = VWorld.Game.EntityManager;
		T* componentDataRawRO = (T*)((EntityManager)(ref entityManager)).GetComponentDataRawRO(entity, TypeIndex.op_Implicit(num));
		if (componentDataRawRO == null)
		{
			throw new InvalidOperationException($"Failure to access ReadOnly <{typeof(T).Name}> typeIndex({num}) on entity({entity}).");
		}
		return *componentDataRawRO;
	}
}
namespace GatorBounty
{
	public class Commands
	{
		[Command("gatorbounty list", "gb list", null, null, null, false)]
		public void bountyListCommand(ChatCommandContext ctx)
		{
			int num = 10;
			int num2 = 5;
			DataStore.PlayerStatistics[] array = (from k in DataStore.PlayerDatas.Values
				where k.CurrentStreak >= 7
				orderby k.CurrentStreak descending
				select k).ToArray();
			DataStore.PlayerBounty[] array2 = DataStore.PlayerBounties.Values.OrderByDescending((DataStore.PlayerBounty b) => b.bountyPrice).ToArray();
			List<BountyList> list = new List<BountyList>();
			List<BountyList> list2 = new List<BountyList>();
			for (int i = 0; i < array.Length; i++)
			{
				list.Add(new BountyList(array[i].SteamId, array[i].LastName, array[i].CurrentStreak, 0));
			}
			for (int j = 0; j < array2.Length; j++)
			{
				list2.Add(new BountyList(array2[j].SteamId, array2[j].LastName, 0, array2[j].bountyPrice));
			}
			BountyList[] array3 = (from p in list.Concat(list2)
				group p by p.SteamId into g
				select new BountyList(g.Key, g.First().LastName, g.Sum((BountyList p) => p.CurrentStreak), g.Sum((BountyList p) => p.BountyPrice)) into g
				orderby g.CurrentStreak * int.Parse(Settings.bountyKillValue) + g.BountyPrice descending
				select g).ToArray();
			num2 = ((num2 > array3.Length) ? array3.Length : num2);
			num = ((num > array3.Length) ? array3.Length : num);
			StringBuilder stringBuilder = new StringBuilder();
			StringBuilder stringBuilder2 = stringBuilder;
			StringBuilder stringBuilder3 = stringBuilder2;
			StringBuilder.AppendInterpolatedStringHandler handler = new StringBuilder.AppendInterpolatedStringHandler(55, 1, stringBuilder2);
			handler.AppendFormatted(Markup.Prefix);
			handler.AppendLiteral(" <size=18><color=blue><u>Bounty List</u></color></size>");
			stringBuilder3.AppendLine(ref handler);
			Func<BountyList, string> func = (BountyList k) => $"{Markup.Highlight(k.LastName)} \t<color={"#dda"}> Price: {k.CurrentStreak * 50 + k.BountyPrice}</color>";
			for (int l = 0; l < array3.Length; l += 5)
			{
				StringBuilder stringBuilder4 = new StringBuilder();
				stringBuilder4.AppendLine(" ");
				for (int m = l; m < l + 5 && m < array3.Length; m++)
				{
					BountyList arg = array3[m];
					stringBuilder2 = stringBuilder4;
					StringBuilder stringBuilder5 = stringBuilder2;
					handler = new StringBuilder.AppendInterpolatedStringHandler(2, 2, stringBuilder2);
					handler.AppendFormatted(m + 1);
					handler.AppendLiteral(". ");
					handler.AppendFormatted(func(arg));
					stringBuilder5.AppendLine(ref handler);
				}
				ctx.Reply(stringBuilder4.ToString());
			}
		}

		[Command("gatorbounty add", "gb add", null, null, null, false)]
		public static void bountyAddCommand(ChatCommandContext ctx, string playerName, int amount)
		{
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: Unknown result type (might be due to invalid IL or missing references)
			UserModel userByCharacterName = GameData.Users.GetUserByCharacterName(playerName);
			Users users = GameData.Users;
			User user = ctx.User;
			UserModel userByCharacterName2 = users.GetUserByCharacterName(((FixedString64Bytes)(ref user.CharacterName)).Value);
			if (userByCharacterName == null)
			{
				Plugin.Logger.LogDebug((object)"Player was not found");
				ctx.Reply("Player does not exist.");
			}
			else if (amount < int.Parse(Settings.bountyAnnounceValueReward))
			{
				ctx.Reply("Bounty value must be atleast " + Settings.bountyAnnounceValueReward);
			}
			else
			{
				int num = DataStore.handleBountyAddition(userByCharacterName2, userByCharacterName, amount);
				if (num == -1)
				{
					ctx.Reply("You don't have enough " + Settings.bountyCurrencyName + "!");
				}
			}
			int bounty = DataStore.getBounty(userByCharacterName.PlatformId);
			if (bounty >= int.Parse(Settings.bountyMapValueReward))
			{
				VampireDownedHook.AddIcon(((EntityModel)userByCharacterName).Entity);
			}
		}

		[Command("gatorbounty remove", "gb remove", null, null, null, true)]
		public static void bountyRemoveIcons(ChatCommandContext ctx)
		{
			VampireDownedHook.RemoveAllIcons();
		}
	}
	public class BountyList
	{
		public ulong SteamId;

		public string LastName;

		public int CurrentStreak;

		public int BountyPrice;

		public BountyList(ulong SteamId, string LastName, int CurrentStreak, int bountyPrice)
		{
			this.SteamId = SteamId;
			this.LastName = LastName;
			this.CurrentStreak = CurrentStreak;
			BountyPrice = bountyPrice;
		}

		public int getTotalBounty()
		{
			int num = CurrentStreak * int.Parse(Settings.bountyKillValue);
			return num + BountyPrice;
		}
	}
	internal static class Core
	{
		private static MonoBehaviour monoBehaviour;

		public static bool hasInitialized;

		public static World Server { get; } = GetWorld("Server") ?? throw new Exception("There is no Server world (yet). Did you install a server mod on the client?");


		public static EntityManager EntityManager { get; } = Server.EntityManager;


		public static ChunkObjectManager ChunkObjectManager { get; } = Server.GetExistingSystemManaged<ChunkObjectManager>();


		public static PrefabCollectionSystem PrefabCollection { get; } = Server.GetExistingSystemManaged<PrefabCollectionSystem>();


		public static ServerGameSettingsSystem ServerGameSettingsSystem { get; internal set; }

		public static ServerScriptMapper ServerScriptMapper { get; internal set; }

		public static ServerGameManager ServerGameManager => ServerScriptMapper.GetServerGameManager();

		public static double ServerTime => ServerGameManager.ServerTime;

		public static void LogException(Exception e, [CallerMemberName] string caller = null)
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected O, but got Unknown
			ManualLogSource logger = Plugin.Logger;
			bool flag = default(bool);
			BepInExErrorLogInterpolatedStringHandler val = new BepInExErrorLogInterpolatedStringHandler(51, 5, ref flag);
			if (flag)
			{
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Failure in ");
				((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(caller);
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral("\nMessage: ");
				((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(e.Message);
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" Inner:");
				((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(e.InnerException?.Message);
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral("\n\nStack: ");
				((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(e.StackTrace);
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral("\nInner Stack: ");
				((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(e.InnerException?.StackTrace);
			}
			logger.LogError(val);
		}

		public static void Initialize()
		{
			if (!hasInitialized)
			{
				ServerGameSettingsSystem = Server.GetExistingSystemManaged<ServerGameSettingsSystem>();
				ServerScriptMapper = Server.GetExistingSystemManaged<ServerScriptMapper>();
				string text = Dns.GetHostAddresses(Dns.GetHostName()).FirstOrDefault((IPAddress ip) => ip.AddressFamily == AddressFamily.InterNetwork)?.ToString();
				Plugin.Logger.LogError((object)("Server IP: " + text));
				Plugin.Logger.LogInfo((object)"GatorBounty initialized");
				hasInitialized = true;
			}
		}

		private static World GetWorld(string name)
		{
			Enumerator<World> enumerator = World.s_AllWorlds.GetEnumerator();
			while (enumerator.MoveNext())
			{
				World current = enumerator.Current;
				if (current.Name == name)
				{
					return current;
				}
			}
			return null;
		}
	}
	public class DataStore
	{
		public record struct PlayerStatistics(ulong SteamId, string LastName, int Kills, int Deaths, int CurrentStreak, int HighestStreak, string LastClanName, int CurrentLevel, int MaxLevel)
		{
			public string FormattedName
			{
				get
				{
					string text = Markup.Highlight(LastName);
					return text ?? "";
				}
			}

			private static string SafeCSVName(string s)
			{
				return s.Replace(",", "");
			}

			public string ToCsv()
			{
				return $"{SteamId},{SafeCSVName(LastName)},{Kills},{Deaths},{CurrentStreak},{HighestStreak},{SafeCSVName(LastClanName)},{CurrentLevel},{MaxLevel}";
			}

			public static PlayerStatistics Parse(string csv)
			{
				string[] array = csv.Split(',');
				PlayerStatistics result = default(PlayerStatistics);
				result.SteamId = ulong.Parse(array[0]);
				result.LastName = array[1];
				result.Kills = int.Parse(array[2]);
				result.Deaths = int.Parse(array[3]);
				result.CurrentStreak = int.Parse(array[4]);
				result.HighestStreak = int.Parse(array[5]);
				result.LastClanName = ((array.Length > 6) ? array[6] : "");
				result.CurrentLevel = ((array.Length > 7) ? int.Parse(array[7]) : (-1));
				result.MaxLevel = ((array.Length > 8) ? int.Parse(array[8]) : (-1));
				return result;
			}
		}

		public record struct PlayerBounty(ulong SteamId, string LastName, int bountyPrice)
		{
			public string FormattedNameBounty
			{
				get
				{
					string text = Markup.Highlight(LastName);
					return text ?? "";
				}
			}

			private static string SafeCSVNameBounty(string s)
			{
				return s.Replace(",", "");
			}

			public string ToCsv()
			{
				return $"{SteamId},{SafeCSVNameBounty(LastName)},{bountyPrice}";
			}

			public static PlayerBounty Parse(string csv)
			{
				string[] array = csv.Split(',');
				PlayerBounty result = default(PlayerBounty);
				result.SteamId = ulong.Parse(array[0]);
				result.LastName = array[1];
				result.bountyPrice = int.Parse(array[2]);
				return result;
			}
		}

		public static int lostStreakBounty;

		public static Dictionary<ulong, PlayerBounty> PlayerBounties = new Dictionary<ulong, PlayerBounty>();

		public static Dictionary<ulong, PlayerStatistics> PlayerDatas = new Dictionary<ulong, PlayerStatistics>();

		private const string STATS_FILE_NAME = "stats.v1.csv";

		private const string STATS_FILE_PATH = "BepInEx/config/Killfeed/stats.v1.csv";

		private const string BOUNTY_FILE_NAME = "bounty.v1.csv";

		private const string BOUNTY_FILE_PATH = "BepInEx/config/GatorBounty/bounty.v1.csv";

		public static void WriteToDisk()
		{
			string directoryName = Path.GetDirectoryName("BepInEx/config/GatorBounty/bounty.v1.csv");
			if (!Directory.Exists(directoryName))
			{
				Directory.CreateDirectory(directoryName);
			}
			using StreamWriter streamWriter = new StreamWriter("BepInEx/config/GatorBounty/bounty.v1.csv", append: false);
			foreach (PlayerBounty value in PlayerBounties.Values)
			{
				streamWriter.WriteLine(value.ToCsv());
			}
		}

		public static void LoadFromDisk()
		{
			LoadPlayerBountyData();
			LoadPlayerData();
		}

		private static void LoadPlayerBountyData()
		{
			//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00de: Expected O, but got Unknown
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Expected O, but got Unknown
			if (!File.Exists("BepInEx/config/GatorBounty/bounty.v1.csv"))
			{
				return;
			}
			using StreamReader streamReader = new StreamReader("BepInEx/config/GatorBounty/bounty.v1.csv");
			bool flag = default(bool);
			while (!streamReader.EndOfStream)
			{
				string text = streamReader.ReadLine();
				if (string.IsNullOrWhiteSpace(text))
				{
					continue;
				}
				try
				{
					PlayerBounty playerBounty = PlayerBounty.Parse(text);
					if (PlayerBounties.TryGetValue(playerBounty.SteamId, out var value))
					{
						ManualLogSource logger = Plugin.Logger;
						BepInExWarningLogInterpolatedStringHandler val = new BepInExWarningLogInterpolatedStringHandler(54, 2, ref flag);
						if (flag)
						{
							((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Duplicate player bounty data found, overwriting ");
							((BepInExLogInterpolatedStringHandler)val).AppendFormatted<PlayerBounty>(value);
							((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" with ");
							((BepInExLogInterpolatedStringHandler)val).AppendFormatted<PlayerBounty>(playerBounty);
						}
						logger.LogWarning(val);
					}
					PlayerBounties[playerBounty.SteamId] = playerBounty;
				}
				catch (Exception)
				{
					ManualLogSource logger2 = Plugin.Logger;
					BepInExErrorLogInterpolatedStringHandler val2 = new BepInExErrorLogInterpolatedStringHandler(38, 1, ref flag);
					if (flag)
					{
						((BepInExLogInterpolatedStringHandler)val2).AppendLiteral("Failed to parse player bounty line: \"");
						((BepInExLogInterpolatedStringHandler)val2).AppendFormatted<string>(text);
						((BepInExLogInterpolatedStringHandler)val2).AppendLiteral("\"");
					}
					logger2.LogError(val2);
				}
			}
		}

		private static void LoadPlayerData()
		{
			//IL_0067: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Expected O, but got Unknown
			if (!File.Exists("BepInEx/config/Killfeed/stats.v1.csv"))
			{
				return;
			}
			using StreamReader streamReader = new StreamReader("BepInEx/config/Killfeed/stats.v1.csv");
			bool flag = default(bool);
			while (!streamReader.EndOfStream)
			{
				string text = streamReader.ReadLine();
				if (string.IsNullOrWhiteSpace(text))
				{
					continue;
				}
				try
				{
					PlayerStatistics value = PlayerStatistics.Parse(text);
					PlayerDatas[value.SteamId] = value;
				}
				catch (Exception)
				{
					ManualLogSource logger = Plugin.Logger;
					BepInExErrorLogInterpolatedStringHandler val = new BepInExErrorLogInterpolatedStringHandler(31, 1, ref flag);
					if (flag)
					{
						((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Failed to parse player line: \"");
						((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(text);
						((BepInExLogInterpolatedStringHandler)val).AppendLiteral("\"");
					}
					logger.LogError(val);
				}
			}
		}

		public static int handleBountyAddition(UserModel user, UserModel player, int bountyPrice)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0035: Expected O, but got Unknown
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			User val = ((EntityModel)player).Entity.Read<User>();
			searchTotalPrefabsInInventory(user, new PrefabGUID(int.Parse(Settings.bountyCurrency)), out var total);
			ManualLogSource logger = Plugin.Logger;
			bool flag = default(bool);
			BepInExErrorLogInterpolatedStringHandler val2 = new BepInExErrorLogInterpolatedStringHandler(0, 1, ref flag);
			if (flag)
			{
				((BepInExLogInterpolatedStringHandler)val2).AppendFormatted<int>(total);
			}
			logger.LogError(val2);
			if (total >= bountyPrice)
			{
				getPrefabFromInventory(user, new PrefabGUID(int.Parse(Settings.bountyCurrency)), bountyPrice);
				PlayerBounty bounty = UpsertName(val.PlatformId, ((object)(FixedString64Bytes)(ref val.CharacterName)).ToString(), bountyPrice);
				AnnounceBounty(bounty);
				WriteToDisk();
				return 0;
			}
			return -1;
			static PlayerBounty UpsertName(ulong steamID, string name, int bountyPrice)
			{
				if (PlayerBounties.TryGetValue(steamID, out var value))
				{
					value.SteamId = steamID;
					value.LastName = name;
					value.bountyPrice += bountyPrice;
					PlayerBounties[steamID] = value;
				}
				else
				{
					PlayerBounties[steamID] = new PlayerBounty
					{
						SteamId = steamID,
						LastName = name,
						bountyPrice = bountyPrice
					};
				}
				return PlayerBounties[steamID];
			}
		}

		public static void DeleteLineFromBountyFile(ulong steamId)
		{
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Expected O, but got Unknown
			//IL_0127: Unknown result type (might be due to invalid IL or missing references)
			//IL_012e: Expected O, but got Unknown
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Expected O, but got Unknown
			//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ef: Expected O, but got Unknown
			bool flag = default(bool);
			if (!File.Exists("BepInEx/config/GatorBounty/bounty.v1.csv"))
			{
				ManualLogSource logger = Plugin.Logger;
				BepInExErrorLogInterpolatedStringHandler val = new BepInExErrorLogInterpolatedStringHandler(23, 1, ref flag);
				if (flag)
				{
					((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Bounty file not found: ");
					((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>("BepInEx/config/GatorBounty/bounty.v1.csv");
				}
				logger.LogError(val);
				return;
			}
			List<string> list = File.ReadAllLines("BepInEx/config/GatorBounty/bounty.v1.csv").ToList();
			string text = list.FirstOrDefault(delegate(string line)
			{
				string[] array = line.Split(',');
				ulong result;
				return array.Length != 0 && ulong.TryParse(array[0], out result) && result == steamId;
			});
			if (text != null)
			{
				list.Remove(text);
				ManualLogSource logger2 = Plugin.Logger;
				BepInExInfoLogInterpolatedStringHandler val2 = new BepInExInfoLogInterpolatedStringHandler(14, 1, ref flag);
				if (flag)
				{
					((BepInExLogInterpolatedStringHandler)val2).AppendLiteral("Removed line: ");
					((BepInExLogInterpolatedStringHandler)val2).AppendFormatted<string>(text);
				}
				logger2.LogInfo(val2);
				File.WriteAllLines("BepInEx/config/GatorBounty/bounty.v1.csv", list);
				ManualLogSource logger3 = Plugin.Logger;
				val2 = new BepInExInfoLogInterpolatedStringHandler(25, 1, ref flag);
				if (flag)
				{
					((BepInExLogInterpolatedStringHandler)val2).AppendLiteral("Updated file written to: ");
					((BepInExLogInterpolatedStringHandler)val2).AppendFormatted<string>("BepInEx/config/GatorBounty/bounty.v1.csv");
				}
				logger3.LogInfo(val2);
			}
			else
			{
				ManualLogSource logger4 = Plugin.Logger;
				BepInExWarningLogInterpolatedStringHandler val3 = new BepInExWarningLogInterpolatedStringHandler(28, 1, ref flag);
				if (flag)
				{
					((BepInExLogInterpolatedStringHandler)val3).AppendLiteral("No line found with SteamId: ");
					((BepInExLogInterpolatedStringHandler)val3).AppendFormatted<ulong>(steamId);
				}
				logger4.LogWarning(val3);
			}
		}

		public static void handleBountyDeath(User player)
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			PlayerDatas.TryGetValue(player.PlatformId, out var value);
			lostStreakBounty = value.CurrentStreak;
			DeleteLineFromBountyFile(player.PlatformId);
			PlayerBounties.Remove(player.PlatformId);
			LoadFromDisk();
		}

		private static void AnnounceBounty(PlayerBounty bounty)
		{
			//IL_008a: Unknown result type (might be due to invalid IL or missing references)
			if (Settings.AnnounceBounty)
			{
				string formattedNameBounty = bounty.FormattedNameBounty;
				string text = $"Someone has put a bounty of <color=red>{bounty.bountyPrice} {Settings.bountyCurrencyName}</color> on <color=white>{formattedNameBounty}'s</color> head!";
				ServerChatUtils.SendSystemMessageToAllClients(VWorld.Server.EntityManager, Markup.Prefix + text);
			}
		}

		public static int getStreak(ulong steamId)
		{
			if (PlayerDatas.TryGetValue(steamId, out var value))
			{
				return value.CurrentStreak;
			}
			return 0;
		}

		public static int getBounty(ulong steamId)
		{
			if (PlayerBounties.TryGetValue(steamId, out var value))
			{
				return value.bountyPrice;
			}
			return 0;
		}

		public static bool searchTotalPrefabsInInventory(UserModel player, PrefabGUID prefabCurrencyGUID, out int total)
		{
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Expected O, but got Unknown
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//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)
			total = 0;
			try
			{
				Entity entity = player.Character.Entity;
				total = InventoryUtilities.GetItemAmount(Core.EntityManager, entity, prefabCurrencyGUID, default(Nullable_Unboxed<int>));
				if (total >= 0)
				{
					return true;
				}
				return false;
			}
			catch (Exception ex)
			{
				ManualLogSource logger = Plugin.Logger;
				bool flag = default(bool);
				BepInExErrorLogInterpolatedStringHandler val = new BepInExErrorLogInterpolatedStringHandler(7, 1, ref flag);
				if (flag)
				{
					((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Error: ");
					((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(ex.Message);
				}
				logger.LogError(val);
				return false;
			}
		}

		public static bool getPrefabFromInventory(UserModel player, PrefabGUID prefabGUID, int quantity)
		{
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Expected O, but got Unknown
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			try
			{
				ItemModel prefabById = GameData.Items.GetPrefabById(prefabGUID);
				Entity entity = player.Character.Entity;
				if (InventoryUtilitiesServer.TryRemoveItem(Core.EntityManager, entity, ((EntityModel)prefabById).PrefabGUID, quantity))
				{
					return true;
				}
				return false;
			}
			catch (Exception ex)
			{
				ManualLogSource logger = Plugin.Logger;
				bool flag = default(bool);
				BepInExErrorLogInterpolatedStringHandler val = new BepInExErrorLogInterpolatedStringHandler(6, 1, ref flag);
				if (flag)
				{
					((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Error ");
					((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(ex.Message);
				}
				logger.LogError(val);
				return false;
			}
		}
	}
	internal static class Helper
	{
		public static AdminAuthSystem adminAuthSystem = Core.Server.GetExistingSystemManaged<AdminAuthSystem>();

		public static ClanSystem_Server clanSystem = Core.Server.GetExistingSystemManaged<ClanSystem_Server>();

		public static EntityCommandBufferSystem entityCommandBufferSystem = Core.Server.GetExistingSystemManaged<EntityCommandBufferSystem>();

		public static NativeArray<Entity> GetEntitiesByComponentType<T1>(bool includeAll = false, bool includeDisabled = false, bool includeSpawn = false, bool includePrefab = false, bool includeDestroyed = false)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_004b: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_009d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
			EntityQueryOptions val = (EntityQueryOptions)0;
			if (includeAll)
			{
				val = (EntityQueryOptions)(val | 0xC3);
			}
			if (includeDisabled)
			{
				val = (EntityQueryOptions)(val | 2);
			}
			if (includeSpawn)
			{
				val = (EntityQueryOptions)(val | 0x40);
			}
			if (includePrefab)
			{
				val = (EntityQueryOptions)(val | 1);
			}
			if (includeDestroyed)
			{
				val = (EntityQueryOptions)(val | 0x80);
			}
			EntityQueryDesc val2 = new EntityQueryDesc();
			val2.All = Il2CppStructArray<ComponentType>.op_Implicit((ComponentType[])(object)new ComponentType[1]
			{
				new ComponentType(Il2CppType.Of<T1>(), (AccessMode)0)
			});
			val2.Options = val;
			EntityQueryDesc val3 = val2;
			EntityManager entityManager = Core.EntityManager;
			EntityQuery val4 = ((EntityManager)(ref entityManager)).CreateEntityQuery((EntityQueryDesc[])(object)new EntityQueryDesc[1] { val3 });
			return ((EntityQuery)(ref val4)).ToEntityArray(AllocatorHandle.op_Implicit((Allocator)2));
		}

		public static NativeArray<Entity> GetEntitiesByComponentTypes<T1, T2>(bool includeAll = false, bool includeDisabled = false, bool includeSpawn = false, bool includePrefab = false, bool includeDestroyed = false)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_004b: Expected O, but got Unknown
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: 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_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
			EntityQueryOptions val = (EntityQueryOptions)0;
			if (includeAll)
			{
				val = (EntityQueryOptions)(val | 0xC3);
			}
			if (includeDisabled)
			{
				val = (EntityQueryOptions)(val | 2);
			}
			if (includeSpawn)
			{
				val = (EntityQueryOptions)(val | 0x40);
			}
			if (includePrefab)
			{
				val = (EntityQueryOptions)(val | 1);
			}
			if (includeDestroyed)
			{
				val = (EntityQueryOptions)(val | 0x80);
			}
			EntityQueryDesc val2 = new EntityQueryDesc();
			val2.All = Il2CppStructArray<ComponentType>.op_Implicit((ComponentType[])(object)new ComponentType[2]
			{
				new ComponentType(Il2CppType.Of<T1>(), (AccessMode)0),
				new ComponentType(Il2CppType.Of<T2>(), (AccessMode)0)
			});
			val2.Options = val;
			EntityQueryDesc val3 = val2;
			EntityManager entityManager = Core.EntityManager;
			EntityQuery val4 = ((EntityManager)(ref entityManager)).CreateEntityQuery((EntityQueryDesc[])(object)new EntityQueryDesc[1] { val3 });
			return ((EntityQuery)(ref val4)).ToEntityArray(AllocatorHandle.op_Implicit((Allocator)2));
		}
	}
	internal static class Markup
	{
		public const string HighlightColor = "#def";

		public const string SecondaryColor = "#dda";

		public static string Prefix = Format.Bold(Format.Color("[GB] ", "#ed1"));

		public static string Highlight(int i)
		{
			return Highlight(i.ToString());
		}

		public static string Highlight(string s)
		{
			return Format.Color(Format.Bold(s), "#def");
		}

		public static string Secondary(int i)
		{
			return Secondary(i.ToString());
		}

		public static string Secondary(string s)
		{
			return Format.Color(Format.Bold(s), "#dda");
		}
	}
	[BepInPlugin("GatorBounty", "GatorBounty", "0.1.10")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[Reloadable]
	public class Plugin : BasePlugin
	{
		[CompilerGenerated]
		private static class <>O
		{
			public static OnGameDataInitializedEventHandler <0>__GameDataOnInitialize;
		}

		private Harmony _harmony;

		public static ManualLogSource Logger;

		private static readonly HttpClient httpClient = new HttpClient();

		internal static Plugin Instance { get; private set; }

		public override void Load()
		{
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Expected O, but got Unknown
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Expected O, but got Unknown
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c0: Expected O, but got Unknown
			Logger = ((BasePlugin)this).Log;
			ManualLogSource log = ((BasePlugin)this).Log;
			bool flag = default(bool);
			BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(27, 2, ref flag);
			if (flag)
			{
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Plugin ");
				((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>("GatorBounty");
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" version ");
				((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>("0.1.10");
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" is loaded!");
			}
			log.LogInfo(val);
			Instance = this;
			_harmony = new Harmony("GatorBounty");
			_harmony.PatchAll(Assembly.GetExecutingAssembly());
			CommandRegistry.RegisterAll();
			Settings.Initialize(((BasePlugin)this).Config);
			DataStore.LoadFromDisk();
			object obj = <>O.<0>__GameDataOnInitialize;
			if (obj == null)
			{
				OnGameDataInitializedEventHandler val2 = GameDataOnInitialize;
				<>O.<0>__GameDataOnInitialize = val2;
				obj = (object)val2;
			}
			EventsHandlerSystem.OnInitialize += (OnGameDataInitializedEventHandler)obj;
		}

		public override bool Unload()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Expected O, but got Unknown
			object obj = <>O.<0>__GameDataOnInitialize;
			if (obj == null)
			{
				OnGameDataInitializedEventHandler val = GameDataOnInitialize;
				<>O.<0>__GameDataOnInitialize = val;
				obj = (object)val;
			}
			EventsHandlerSystem.OnInitialize -= (OnGameDataInitializedEventHandler)obj;
			CommandRegistry.UnregisterAssembly();
			Harmony harmony = _harmony;
			if (harmony != null)
			{
				harmony.UnpatchSelf();
			}
			return true;
		}

		private static void GameDataOnInitialize(World world)
		{
			Core.Initialize();
		}

		private static World GetWorld(string name)
		{
			Enumerator<World> enumerator = World.s_AllWorlds.GetEnumerator();
			while (enumerator.MoveNext())
			{
				World current = enumerator.Current;
				if (current.Name == name)
				{
					return current;
				}
			}
			return null;
		}
	}
	internal class Settings
	{
		internal static bool AnnounceBounty { get; private set; }

		internal static string bountyCurrency { get; private set; }

		internal static string bountyCurrencyName { get; private set; }

		internal static string bountyAnnounceValueKill { get; private set; }

		internal static string bountyAnnounceValueReward { get; private set; }

		internal static string bountyMapValueKill { get; private set; }

		internal static string bountyMapValueReward { get; private set; }

		internal static string bountyKillValue { get; private set; }

		internal static void Initialize(ConfigFile config)
		{
			AnnounceBounty = config.Bind<bool>("General", "AnnounceBounty", true, "Announce bounties in chat").Value;
			bountyCurrency = config.Bind<string>("General", "bountyCurrency", "576389135", "Prefab GUID for the currency for bounty system").Value;
			bountyCurrencyName = config.Bind<string>("General", "bountyCurrencyName", "Greater Stygian Shards", "Name of currency for bounty system").Value;
			bountyKillValue = config.Bind<string>("General", "bountyKillValue", "50", "How much each kill is worth towards bounty").Value;
			bountyAnnounceValueKill = config.Bind<string>("General", "bountyAnnounceValueKill", "7", "Killstreak size for bounty to start").Value;
			bountyMapValueKill = config.Bind<string>("General", "bountyMapValueKill", "12", "Killstreak size for bounty map icon to start").Value;
			bountyAnnounceValueReward = config.Bind<string>("General", "bountyAnnounceValueReward", "500", "Bounty price amount for bounty to start").Value;
			bountyMapValueReward = config.Bind<string>("General", "bountyMapValueReward", "1000", "Bounty price amount for bounty map icon to start").Value;
		}
	}
	[HarmonyPatch(typeof(VampireDownedServerEventSystem), "OnUpdate")]
	public class VampireDownedHook
	{
		private Entity icontEntity;

		private static Entity mapIconProxyPrefab;

		public static PrefabGUID mapIconPrefab = new PrefabGUID(1501929529);

		public static EntityQuery mapIconProxyQuery;

		public static void Prefix(VampireDownedServerEventSystem __instance)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			EntityQuery _query_1174204813_ = __instance.__query_1174204813_0;
			Enumerator<Entity> enumerator = ((EntityQuery)(ref _query_1174204813_)).ToEntityArray(AllocatorHandle.op_Implicit((Allocator)2)).GetEnumerator();
			while (enumerator.MoveNext())
			{
				Entity current = enumerator.Current;
				ProcessVampireDowned(current);
			}
		}

		private static void ProcessVampireDowned(Entity entity)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//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_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Expected O, but got Unknown
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0091: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_0106: 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)
			//IL_00d8: Expected O, but got Unknown
			//IL_0168: Unknown result type (might be due to invalid IL or missing references)
			//IL_0169: Unknown result type (might be due to invalid IL or missing references)
			//IL_016e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0170: Unknown result type (might be due to invalid IL or missing references)
			//IL_0172: Unknown result type (might be due to invalid IL or missing references)
			//IL_0177: Unknown result type (might be due to invalid IL or missing references)
			//IL_0178: Unknown result type (might be due to invalid IL or missing references)
			//IL_0126: Unknown result type (might be due to invalid IL or missing references)
			//IL_012d: Expected O, but got Unknown
			//IL_00de: 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_01ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01de: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e6: 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_01ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0204: Unknown result type (might be due to invalid IL or missing references)
			//IL_021e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0225: Expected O, but got Unknown
			//IL_0195: Unknown result type (might be due to invalid IL or missing references)
			//IL_019c: Expected O, but got Unknown
			//IL_0140: Unknown result type (might be due to invalid IL or missing references)
			//IL_0141: Unknown result type (might be due to invalid IL or missing references)
			//IL_024a: Unknown result type (might be due to invalid IL or missing references)
			//IL_028a: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0325: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_0349: Unknown result type (might be due to invalid IL or missing references)
			//IL_0367: Unknown result type (might be due to invalid IL or missing references)
			//IL_0369: Unknown result type (might be due to invalid IL or missing references)
			//IL_038e: Unknown result type (might be due to invalid IL or missing references)
			//IL_049c: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0432: Unknown result type (might be due to invalid IL or missing references)
			//IL_0433: Unknown result type (might be due to invalid IL or missing references)
			//IL_0489: Unknown result type (might be due to invalid IL or missing references)
			//IL_0493: Unknown result type (might be due to invalid IL or missing references)
			Entity val = default(Entity);
			if (!VampireDownedServerEventSystem.TryFindRootOwner(entity, 1, VWorld.Server.EntityManager, ref val))
			{
				Plugin.Logger.LogMessage((object)"Couldn't get victim entity");
				return;
			}
			VampireDownedBuff val2 = entity.Read<VampireDownedBuff>();
			Entity val3 = default(Entity);
			if (!VampireDownedServerEventSystem.TryFindRootOwner(val2.Source, 1, VWorld.Server.EntityManager, ref val3))
			{
				Plugin.Logger.LogMessage((object)"Couldn't get victim entity");
				return;
			}
			PlayerCharacter val4 = val.Read<PlayerCharacter>();
			ManualLogSource logger = Plugin.Logger;
			bool flag = default(bool);
			BepInExMessageLogInterpolatedStringHandler val5 = new BepInExMessageLogInterpolatedStringHandler(10, 1, ref flag);
			if (flag)
			{
				((BepInExLogInterpolatedStringHandler)val5).AppendFormatted<FixedString64Bytes>(val4.Name);
				((BepInExLogInterpolatedStringHandler)val5).AppendLiteral(" is victim");
			}
			logger.LogMessage(val5);
			BepInExInfoLogInterpolatedStringHandler val6;
			if (val3.Has<UnitLevel>())
			{
				ManualLogSource logger2 = Plugin.Logger;
				val6 = new BepInExInfoLogInterpolatedStringHandler(46, 1, ref flag);
				if (flag)
				{
					((BepInExLogInterpolatedStringHandler)val6).AppendFormatted<FixedString64Bytes>(val4.Name);
					((BepInExLogInterpolatedStringHandler)val6).AppendLiteral(" was killed by a unit. [Not currently tracked]");
				}
				logger2.LogInfo(val6);
				return;
			}
			if (!val3.Has<PlayerCharacter>())
			{
				ManualLogSource logger3 = Plugin.Logger;
				BepInExWarningLogInterpolatedStringHandler val7 = new BepInExWarningLogInterpolatedStringHandler(121, 1, ref flag);
				if (flag)
				{
					((BepInExLogInterpolatedStringHandler)val7).AppendLiteral("Killer could not be identified for ");
					((BepInExLogInterpolatedStringHandler)val7).AppendFormatted<FixedString64Bytes>(val4.Name);
					((BepInExLogInterpolatedStringHandler)val7).AppendLiteral(", if you know how to reproduce this please contact deca on discord or report on github");
				}
				logger3.LogWarning(val7);
				return;
			}
			PlayerCharacter val8 = val3.Read<PlayerCharacter>();
			if (val8.UserEntity == val4.UserEntity)
			{
				ManualLogSource logger4 = Plugin.Logger;
				val6 = new BepInExInfoLogInterpolatedStringHandler(43, 1, ref flag);
				if (flag)
				{
					((BepInExLogInterpolatedStringHandler)val6).AppendFormatted<FixedString64Bytes>(val4.Name);
					((BepInExLogInterpolatedStringHandler)val6).AppendLiteral(" killed themselves. [Not currently tracked]");
				}
				logger4.LogInfo(val6);
				return;
			}
			PlayerCharacter val9 = val3.Read<PlayerCharacter>();
			User val10 = val9.UserEntity.Read<User>();
			PlayerCharacter val11 = val.Read<PlayerCharacter>();
			User val12 = val11.UserEntity.Read<User>();
			int streak = DataStore.getStreak(val10.PlatformId);
			int streak2 = DataStore.getStreak(val12.PlatformId);
			ManualLogSource logger5 = Plugin.Logger;
			val6 = new BepInExInfoLogInterpolatedStringHandler(12, 1, ref flag);
			if (flag)
			{
				((BepInExLogInterpolatedStringHandler)val6).AppendLiteral("LostStreak: ");
				((BepInExLogInterpolatedStringHandler)val6).AppendFormatted<int>(streak2);
			}
			logger5.LogInfo(val6);
			int bounty = DataStore.getBounty(val12.PlatformId);
			int num = streak2 * int.Parse(Settings.bountyKillValue);
			int num2 = streak * int.Parse(Settings.bountyKillValue);
			num += bounty;
			num2 += bounty;
			DataStore.LoadFromDisk();
			if (DataStore.getStreak(val10.PlatformId) == int.Parse(Settings.bountyAnnounceValueKill))
			{
				ServerChatUtils.SendSystemMessageToAllClients(VWorld.Server.EntityManager, $"<color=red>{val8.Name}</color> now has a killstreak bounty on their head! Current bounty price: <color=white>{num2} {Settings.bountyCurrencyName}</color>");
			}
			if (DataStore.getStreak(val10.PlatformId) == int.Parse(Settings.bountyMapValueKill))
			{
				ServerChatUtils.SendSystemMessageToAllClients(VWorld.Server.EntityManager, $"<color=red>{val8.Name}</color> is now marked on the map. Happy hunting!");
				AddIcon(val3);
			}
			if (streak2 >= int.Parse(Settings.bountyAnnounceValueKill) || num >= int.Parse(Settings.bountyAnnounceValueReward))
			{
				ServerChatUtils.SendSystemMessageToAllClients(VWorld.Server.EntityManager, $"<color=green>{val8.Name}</color> has claimed the <color=white>{num} {Settings.bountyCurrencyName}</color> bounty on <color=red>{val4.Name}</color>'s head!");
				UserModel userByCharacterName = GameData.Users.GetUserByCharacterName(((object)(FixedString64Bytes)(ref val8.Name)).ToString());
				PrefabGUID val13 = default(PrefabGUID);
				((PrefabGUID)(ref val13))..ctor(int.Parse(Settings.bountyCurrency));
				UserModelMethods.DropItemNearby(userByCharacterName, val13, num);
				DataStore.handleBountyDeath(val12);
			}
			RemoveIcon(val);
		}

		public static void AddIcon(Entity player)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_0086: Unknown result type (might be due to invalid IL or missing references)
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: Expected O, but got Unknown
			//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0103: Unknown result type (might be due to invalid IL or missing references)
			//IL_0108: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
			CleanIcons(player);
			if (!Core.PrefabCollection._PrefabGuidToEntityMap.TryGetValue(mapIconPrefab, ref mapIconProxyPrefab))
			{
				Plugin.Logger.LogError((object)"Failed to find MapIcon_ProxyObject_POI_Unknown Prefab entity");
			}
			EntityManager entityManager = Core.EntityManager;
			Entity val = ((EntityManager)(ref entityManager)).Instantiate(mapIconProxyPrefab);
			ECSExtensions.Add<MapIconTargetEntity>(val);
			ECSExtensions.Add<AttachMapIconsToEntity>(val);
			MapIconTargetEntity val2 = default(MapIconTargetEntity);
			val2.TargetEntity = NetworkedEntity.op_Implicit(player.Read<Entity>());
			val2.TargetNetworkId = player.Read<NetworkId>();
			ECSExtensions.Write<MapIconTargetEntity>(val, val2);
			ECSExtensions.Remove<SyncToUserBitMask>(val);
			ECSExtensions.Remove<SyncToUserBuffer>(val);
			ECSExtensions.Remove<OnlySyncToUsersTag>(val);
			entityManager = Core.EntityManager;
			DynamicBuffer<AttachMapIconsToEntity> buffer = ((EntityManager)(ref entityManager)).GetBuffer<AttachMapIconsToEntity>(val, false);
			ManualLogSource logger = Plugin.Logger;
			bool flag = default(bool);
			BepInExInfoLogInterpolatedStringHandler val3 = new BepInExInfoLogInterpolatedStringHandler(12, 1, ref flag);
			if (flag)
			{
				((BepInExLogInterpolatedStringHandler)val3).AppendLiteral("AttachMITE: ");
				((BepInExLogInterpolatedStringHandler)val3).AppendFormatted<DynamicBuffer<AttachMapIconsToEntity>>(buffer);
			}
			logger.LogInfo(val3);
			buffer.Clear();
			buffer.Add(new AttachMapIconsToEntity
			{
				Prefab = mapIconPrefab
			});
		}

		public static bool RemoveIcon(Entity player)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Expected O, but got Unknown
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//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_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: Expected O, but got Unknown
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_0102: Unknown result type (might be due to invalid IL or missing references)
			//IL_0107: 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_030b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0312: Expected O, but got Unknown
			//IL_012b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0132: Expected O, but got Unknown
			//IL_016d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0174: Expected O, but got Unknown
			//IL_0145: Unknown result type (might be due to invalid IL or missing references)
			//IL_0147: Unknown result type (might be due to invalid IL or missing references)
			//IL_014c: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b5: Expected O, but got Unknown
			//IL_0188: Unknown result type (might be due to invalid IL or missing references)
			//IL_018d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0200: Unknown result type (might be due to invalid IL or missing references)
			//IL_0207: Expected O, but got Unknown
			//IL_01c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01da: Unknown result type (might be due to invalid IL or missing references)
			//IL_0350: 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_0364: Unknown result type (might be due to invalid IL or missing references)
			//IL_036b: Expected O, but got Unknown
			//IL_0247: Unknown result type (might be due to invalid IL or missing references)
			//IL_024e: Expected O, but got Unknown
			//IL_021a: Unknown result type (might be due to invalid IL or missing references)
			//IL_021c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0221: Unknown result type (might be due to invalid IL or missing references)
			//IL_0226: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a8: Expected O, but got Unknown
			//IL_037e: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0288: Unknown result type (might be due to invalid IL or missing references)
			//IL_028f: Expected O, but got Unknown
			//IL_0262: Unknown result type (might be due to invalid IL or missing references)
			//IL_0267: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ea: Expected O, but got Unknown
			//IL_03bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_03bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ae: 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_02b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02be: 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_041b: Unknown result type (might be due to invalid IL or missing references)
			//IL_03fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0404: Unknown result type (might be due to invalid IL or missing references)
			//IL_0444: Unknown result type (might be due to invalid IL or missing references)
			//IL_054c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0465: Unknown result type (might be due to invalid IL or missing references)
			//IL_046a: Unknown result type (might be due to invalid IL or missing references)
			//IL_046e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0471: Unknown result type (might be due to invalid IL or missing references)
			//IL_0476: Unknown result type (might be due to invalid IL or missing references)
			//IL_0563: Unknown result type (might be due to invalid IL or missing references)
			//IL_055a: Unknown result type (might be due to invalid IL or missing references)
			//IL_058a: Unknown result type (might be due to invalid IL or missing references)
			//IL_058f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0591: Unknown result type (might be due to invalid IL or missing references)
			//IL_0592: Unknown result type (might be due to invalid IL or missing references)
			//IL_0571: Unknown result type (might be due to invalid IL or missing references)
			//IL_0485: Unknown result type (might be due to invalid IL or missing references)
			//IL_048a: Unknown result type (might be due to invalid IL or missing references)
			//IL_048f: Unknown result type (might be due to invalid IL or missing references)
			//IL_049c: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a3: Expected O, but got Unknown
			//IL_04bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_04bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_04cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_04df: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f9: Expected O, but got Unknown
			//IL_0516: Unknown result type (might be due to invalid IL or missing references)
			//IL_051b: Unknown result type (might be due to invalid IL or missing references)
			//IL_051d: Unknown result type (might be due to invalid IL or missing references)
			//IL_051e: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ff: Unknown result type (might be due to invalid IL or missing references)
			ManualLogSource logger = Plugin.Logger;
			bool flag = default(bool);
			BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(14, 0, ref flag);
			if (flag)
			{
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral("REMOVING ICONS");
			}
			logger.LogInfo(val);
			if (!Core.PrefabCollection._PrefabGuidToEntityMap.TryGetValue(mapIconPrefab, ref mapIconProxyPrefab))
			{
				Plugin.Logger.LogError((object)"Failed to find MapIcon_ProxyObject_POI_Unknown Prefab entity");
			}
			EntityManager entityManager = Core.EntityManager;
			EntityQueryDesc[] array = new EntityQueryDesc[1];
			EntityQueryDesc val2 = new EntityQueryDesc();
			val2.All = Il2CppStructArray<ComponentType>.op_Implicit((ComponentType[])(object)new ComponentType[1] { ComponentType.ReadOnly<AttachMapIconsToEntity>() });
			val2.Options = (EntityQueryOptions)2;
			array[0] = val2;
			mapIconProxyQuery = ((EntityManager)(ref entityManager)).CreateEntityQuery((EntityQueryDesc[])(object)array);
			UserModel val3 = GameData.Users.All.FirstOrDefault();
			Entity entity = ((EntityModel)val3).Entity;
			NativeArray<Entity> val4 = ((EntityQuery)(ref mapIconProxyQuery)).ToEntityArray(AllocatorHandle.op_Implicit((Allocator)2));
			Enumerator<Entity> enumerator = val4.GetEnumerator();
			while (enumerator.MoveNext())
			{
				Entity current = enumerator.Current;
				PrefabGUID val5 = current.Read<PrefabGUID>();
				if (((PrefabGUID)(ref val5)).Equals(mapIconPrefab))
				{
					ManualLogSource logger2 = Plugin.Logger;
					val = new BepInExInfoLogInterpolatedStringHandler(11, 1, ref flag);
					if (flag)
					{
						((BepInExLogInterpolatedStringHandler)val).AppendLiteral("NetworkID: ");
						((BepInExLogInterpolatedStringHandler)val).AppendFormatted<NetworkId>(current.Read<MapIconTargetEntity>().TargetNetworkId);
					}
					logger2.LogInfo(val);
					ManualLogSource logger3 = Plugin.Logger;
					val = new BepInExInfoLogInterpolatedStringHandler(9, 1, ref flag);
					if (flag)
					{
						((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Players: ");
						((BepInExLogInterpolatedStringHandler)val).AppendFormatted<NetworkId>(player.Read<NetworkId>());
					}
					logger3.LogInfo(val);
					ManualLogSource logger4 = Plugin.Logger;
					val = new BepInExInfoLogInterpolatedStringHandler(11, 1, ref flag);
					if (flag)
					{
						((BepInExLogInterpolatedStringHandler)val).AppendLiteral("NetworkID: ");
						((BepInExLogInterpolatedStringHandler)val).AppendFormatted<bool>(current.Read<MapIconTargetEntity>().TargetNetworkId == player.Read<NetworkId>());
					}
					logger4.LogInfo(val);
					ManualLogSource logger5 = Plugin.Logger;
					val = new BepInExInfoLogInterpolatedStringHandler(14, 1, ref flag);
					if (flag)
					{
						((BepInExLogInterpolatedStringHandler)val).AppendLiteral("TargetEntity: ");
						((BepInExLogInterpolatedStringHandler)val).AppendFormatted<Entity>(current.Read<MapIconTargetEntity>().TargetEntity._Entity);
					}
					logger5.LogInfo(val);
					ManualLogSource logger6 = Plugin.Logger;
					val = new BepInExInfoLogInterpolatedStringHandler(9, 1, ref flag);
					if (flag)
					{
						((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Players: ");
						((BepInExLogInterpolatedStringHandler)val).AppendFormatted<Entity>(player.Read<Entity>());
					}
					logger6.LogInfo(val);
					ManualLogSource logger7 = Plugin.Logger;
					val = new BepInExInfoLogInterpolatedStringHandler(14, 1, ref flag);
					if (flag)
					{
						((BepInExLogInterpolatedStringHandler)val).AppendLiteral("TargetEntity: ");
						((BepInExLogInterpolatedStringHandler)val).AppendFormatted<bool>(current.Read<MapIconTargetEntity>().TargetEntity._Entity == player.Read<PlayerCharacter>().UserEntity);
					}
					logger7.LogInfo(val);
				}
			}
			IEnumerable<Entity> enumerable = ((IEnumerable<Entity>)val4.ToArray()).Where(delegate(Entity x)
			{
				//IL_0000: Unknown result type (might be due to invalid IL or missing references)
				//IL_0008: Unknown result type (might be due to invalid IL or missing references)
				//IL_0009: Unknown result type (might be due to invalid IL or missing references)
				//IL_000e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0011: Unknown result type (might be due to invalid IL or missing references)
				//IL_001d: Unknown result type (might be due to invalid IL or missing references)
				//IL_001e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0023: Unknown result type (might be due to invalid IL or missing references)
				//IL_0028: Unknown result type (might be due to invalid IL or missing references)
				//IL_002e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0033: Unknown result type (might be due to invalid IL or missing references)
				//IL_0038: Unknown result type (might be due to invalid IL or missing references)
				int result;
				if (x.Has<PrefabGUID>())
				{
					PrefabGUID val6 = x.Read<PrefabGUID>();
					if (((PrefabGUID)(ref val6)).Equals(mapIconPrefab))
					{
						result = ((x.Read<MapIconTargetEntity>().TargetEntity._Entity == player.Read<PlayerCharacter>().UserEntity) ? 1 : 0);
						goto IL_0045;
					}
				}
				result = 0;
				goto IL_0045;
				IL_0045:
				return (byte)result != 0;
			});
			ManualLogSource logger8 = Plugin.Logger;
			val = new BepInExInfoLogInterpolatedStringHandler(7, 1, ref flag);
			if (flag)
			{
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Array: ");
				((BepInExLogInterpolatedStringHandler)val).AppendFormatted<IEnumerable<Entity>>(enumerable);
			}
			logger8.LogInfo(val);
			val4.Dispose();
			foreach (Entity item in enumerable)
			{
				ManualLogSource logger9 = Plugin.Logger;
				val = new BepInExInfoLogInterpolatedStringHandler(22, 1, ref flag);
				if (flag)
				{
					((BepInExLogInterpolatedStringHandler)val).AppendLiteral("icontodestroy exists: ");
					((BepInExLogInterpolatedStringHandler)val).AppendFormatted<bool>(ECSExtensions.Exists(item));
				}
				logger9.LogInfo(val);
				ManualLogSource logger10 = Plugin.Logger;
				val = new BepInExInfoLogInterpolatedStringHandler(28, 1, ref flag);
				if (flag)
				{
					((BepInExLogInterpolatedStringHandler)val).AppendLiteral("icontodestroy targetEntity: ");
					((BepInExLogInterpolatedStringHandler)val).AppendFormatted<NetworkedEntity>(item.Read<MapIconTargetEntity>().TargetEntity);
				}
				logger10.LogInfo(val);
				ManualLogSource logger11 = Plugin.Logger;
				val = new BepInExInfoLogInterpolatedStringHandler(26, 1, ref flag);
				if (flag)
				{
					((BepInExLogInterpolatedStringHandler)val).AppendLiteral("icontodestroy network ID: ");
					((BepInExLogInterpolatedStringHandler)val).AppendFormatted<NetworkId>(item.Read<MapIconTargetEntity>().TargetNetworkId);
				}
				logger11.LogInfo(val);
				if (item == Entity.Null)
				{
					Plugin.Logger.LogInfo((object)"IconToDestroy is null");
					return false;
				}
				if (item.Has<AttachedBuffer>())
				{
					Plugin.Logger.LogInfo((object)"Has Attached Buffer");
					entityManager = Core.EntityManager;
					DynamicBuffer<AttachedBuffer> buffer = ((EntityManager)(ref entityManager)).GetBuffer<AttachedBuffer>(item, false);
					for (int i = 0; i < buffer.Length; i++)
					{
						Entity entity2 = buffer[i].Entity;
						ManualLogSource logger12 = Plugin.Logger;
						val = new BepInExInfoLogInterpolatedStringHandler(0, 1, ref flag);
						if (flag)
						{
							((BepInExLogInterpolatedStringHandler)val).AppendFormatted<Entity>(entity2);
						}
						logger12.LogInfo(val);
						if (!(entity2 == Entity.Null))
						{
							ECSExtensions.Remove<Attached>(entity2);
							ECSExtensions.Remove<MapIconTargetEntity>(entity2);
							ECSExtensions.Remove<AttachMapIconsToEntity>(entity2);
							ManualLogSource logger13 = Plugin.Logger;
							val = new BepInExInfoLogInterpolatedStringHandler(0, 1, ref flag);
							if (flag)
							{
								((BepInExLogInterpolatedStringHandler)val).AppendFormatted<bool>(entity2.Has<MapIconTargetEntity>());
							}
							logger13.LogInfo(val);
							StatChangeUtility.KillOrDestroyEntity(Core.EntityManager, entity2, entity, entity, 0.0, (StatChangeReason)0, true);
						}
					}
				}
				if (item.Has<MapIconTargetEntity>())
				{
					ECSExtensions.Remove<MapIconTargetEntity>(item);
				}
				if (item.Has<AttachMapIconsToEntity>())
				{
					ECSExtensions.Remove<AttachMapIconsToEntity>(item);
				}
				Plugin.Logger.LogInfo((object)"Destroying icon...");
				StatChangeUtility.KillOrDestroyEntity(Core.EntityManager, item, entity, entity, 0.0, (StatChangeReason)0, true);
				Plugin.Logger.LogInfo((object)"Icon Destroyed");
			}
			CleanIcons(player);
			return true;
		}

		public static bool RemoveAllIcons()
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Expected O, but got Unknown
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: 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_006a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Expected O, but got Unknown
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cf: 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_0111: Unknown result type (might be due to invalid IL or missing references)
			//IL_0118: Expected O, but got Unknown
			//IL_0154: Unknown result type (might be due to invalid IL or missing references)
			//IL_0159: Unknown result type (might be due to invalid IL or missing references)
			//IL_0168: Unknown result type (might be due to invalid IL or missing references)
			//IL_016f: Expected O, but got Unknown
			//IL_01aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b1: Expected O, but got Unknown
			//IL_0182: Unknown result type (might be due to invalid IL or missing references)
			//IL_0184: Unknown result type (might be due to invalid IL or missing references)
			//IL_0189: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_020b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0313: Unknown result type (might be due to invalid IL or missing references)
			//IL_022c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0231: Unknown result type (might be due to invalid IL or missing references)
			//IL_0235: Unknown result type (might be due to invalid IL or missing references)
			//IL_0238: Unknown result type (might be due to invalid IL or missing references)
			//IL_023d: Unknown result type (might be due to invalid IL or missing references)
			//IL_032a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0321: Unknown result type (might be due to invalid IL or missing references)
			//IL_0351: Unknown result type (might be due to invalid IL or missing references)
			//IL_0356: 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_0359: Unknown result type (might be due to invalid IL or missing references)
			//IL_0338: Unknown result type (might be due to invalid IL or missing references)
			//IL_024c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0251: Unknown result type (might be due to invalid IL or missing references)
			//IL_0256: Unknown result type (might be due to invalid IL or missing references)
			//IL_0263: Unknown result type (might be due to invalid IL or missing references)
			//IL_026a: Expected O, but got Unknown
			//IL_0282: Unknown result type (might be due to invalid IL or missing references)
			//IL_0284: Unknown result type (might be due to invalid IL or missing references)
			//IL_0270: Unknown result type (might be due to invalid IL or missing references)
			//IL_0296: Unknown result type (might be due to invalid IL or missing references)
			//IL_029e: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c0: Expected O, but got Unknown
			//IL_02dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c6: Unknown result type (might be due to invalid IL or missing references)
			ManualLogSource logger = Plugin.Logger;
			bool flag = default(bool);
			BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(14, 0, ref flag);
			if (flag)
			{
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral("REMOVING ICONS");
			}
			logger.LogInfo(val);
			if (!Core.PrefabCollection._PrefabGuidToEntityMap.TryGetValue(mapIconPrefab, ref mapIconProxyPrefab))
			{
				Plugin.Logger.LogError((object)"Failed to find MapIcon_ProxyObject_POI_Unknown Prefab entity");
			}
			EntityManager entityManager = Core.EntityManager;
			EntityQueryDesc[] array = new EntityQueryDesc[1];
			EntityQueryDesc val2 = new EntityQueryDesc();
			val2.All = Il2CppStructArray<ComponentType>.op_Implicit((ComponentType[])(object)new ComponentType[1] { ComponentType.ReadOnly<AttachMapIconsToEntity>() });
			val2.Options = (EntityQueryOptions)2;
			array[0] = val2;
			mapIconProxyQuery = ((EntityManager)(ref entityManager)).CreateEntityQuery((EntityQueryDesc[])(object)array);
			UserModel val3 = GameData.Users.All.FirstOrDefault();
			Entity entity = ((EntityModel)val3).Entity;
			NativeArray<Entity> val4 = ((EntityQuery)(ref mapIconProxyQuery)).ToEntityArray(AllocatorHandle.op_Implicit((Allocator)2));
			IEnumerable<Entity> enumerable = ((IEnumerable<Entity>)val4.ToArray()).Where(delegate(Entity x)
			{
				//IL_0000: Unknown result type (might be due to invalid IL or missing references)
				//IL_0008: Unknown result type (might be due to invalid IL or missing references)
				//IL_0009: Unknown result type (might be due to invalid IL or missing references)
				//IL_000e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0011: Unknown result type (might be due to invalid IL or missing references)
				int result;
				if (x.Has<PrefabGUID>())
				{
					PrefabGUID val5 = x.Read<PrefabGUID>();
					result = (((PrefabGUID)(ref val5)).Equals(mapIconPrefab) ? 1 : 0);
				}
				else
				{
					result = 0;
				}
				return (byte)result != 0;
			});
			ManualLogSource logger2 = Plugin.Logger;
			val = new BepInExInfoLogInterpolatedStringHandler(7, 1, ref flag);
			if (flag)
			{
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Array: ");
				((BepInExLogInterpolatedStringHandler)val).AppendFormatted<IEnumerable<Entity>>(enumerable);
			}
			logger2.LogInfo(val);
			val4.Dispose();
			foreach (Entity item in enumerable)
			{
				ManualLogSource logger3 = Plugin.Logger;
				val = new BepInExInfoLogInterpolatedStringHandler(28, 1, ref flag);
				if (flag)
				{
					((BepInExLogInterpolatedStringHandler)val).AppendLiteral("icontodestroy targetEntity: ");
					((BepInExLogInterpolatedStringHandler)val).AppendFormatted<NetworkedEntity>(item.Read<MapIconTargetEntity>().TargetEntity);
				}
				logger3.LogInfo(val);
				ManualLogSource logger4 = Plugin.Logger;
				val = new BepInExInfoLogInterpolatedStringHandler(26, 1, ref flag);
				if (flag)
				{
					((BepInExLogInterpolatedStringHandler)val).AppendLiteral("icontodestroy network ID: ");
					((BepInExLogInterpolatedStringHandler)val).AppendFormatted<NetworkId>(item.Read<MapIconTargetEntity>().TargetNetworkId);
				}
				logger4.LogInfo(val);
				if (item == Entity.Null)
				{
					Plugin.Logger.LogInfo((object)"IconToDestroy is null");
					return false;
				}
				if (item.Has<AttachedBuffer>())
				{
					Plugin.Logger.LogInfo((object)"Has Attached Buffer");
					entityManager = Core.EntityManager;
					DynamicBuffer<AttachedBuffer> buffer = ((EntityManager)(ref entityManager)).GetBuffer<AttachedBuffer>(item, false);
					for (int i = 0; i < buffer.Length; i++)
					{
						Entity entity2 = buffer[i].Entity;
						ManualLogSource logger5 = Plugin.Logger;
						val = new BepInExInfoLogInterpolatedStringHandler(0, 1, ref flag);
						if (flag)
						{
							((BepInExLogInterpolatedStringHandler)val).AppendFormatted<Entity>(entity2);
						}
						logger5.LogInfo(val);
						if (!(entity2 == Entity.Null))
						{
							ECSExtensions.Remove<Attached>(entity2);
							ECSExtensions.Remove<MapIconTargetEntity>(entity2);
							ECSExtensions.Remove<AttachMapIconsToEntity>(entity2);
							ManualLogSource logger6 = Plugin.Logger;
							val = new BepInExInfoLogInterpolatedStringHandler(0, 1, ref flag);
							if (flag)
							{
								((BepInExLogInterpolatedStringHandler)val).AppendFormatted<bool>(entity2.Has<MapIconTargetEntity>());
							}
							logger6.LogInfo(val);
							StatChangeUtility.KillOrDestroyEntity(Core.EntityManager, entity2, entity, entity, 0.0, (StatChangeReason)0, true);
						}
					}
				}
				if (item.Has<MapIconTargetEntity>())
				{
					ECSExtensions.Remove<MapIconTargetEntity>(item);
				}
				if (item.Has<AttachMapIconsToEntity>())
				{
					ECSExtensions.Remove<AttachMapIconsToEntity>(item);
				}
				Plugin.Logger.LogInfo((object)"Destroying icon...");
				StatChangeUtility.KillOrDestroyEntity(Core.EntityManager, item, entity, entity, 0.0, (StatChangeReason)0, true);
				Plugin.Logger.LogInfo((object)"Icon Destroyed");
			}
			return true;
		}

		public static void CleanIcons(Entity player)
		{
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: 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_0067: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: 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_009e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
			Plugin.Logger.LogInfo((object)"CLEANING ICONS");
			UserModel val = GameData.Users.All.FirstOrDefault();
			Entity entity = ((EntityModel)val).Entity;
			NativeArray<Entity> entitiesByComponentTypes = QueryComponents.GetEntitiesByComponentTypes<MapIconData>((EntityQueryOptions)2, false);
			Enumerator<Entity> enumerator = entitiesByComponentTypes.GetEnumerator();
			while (enumerator.MoveNext())
			{
				Entity current = enumerator.Current;
				PrefabGUID val2 = current.Read<PrefabGUID>();
				if (val2 == mapIconPrefab && (!current.Has<MapIconTargetEntity>() || current.Read<MapIconTargetEntity>().TargetEntity._Entity == player.Read<Entity>()))
				{
					Plugin.Logger.LogInfo((object)"Icon Destroyed CLEAN ICONS");
					StatChangeUtility.KillOrDestroyEntity(Core.EntityManager, current, entity, entity, 0.0, (StatChangeReason)0, true);
				}
			}
			entitiesByComponentTypes.Dispose();
		}
	}
	public static class MyPluginInfo
	{
		public const string PLUGIN_GUID = "GatorBounty";

		public const string PLUGIN_NAME = "GatorBounty";

		public const string PLUGIN_VERSION = "0.1.10";
	}
}