Decompiled source of ExtraLethalCompany v1.2.2

ExtraLethalCompany.dll

Decompiled 11 months ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text.RegularExpressions;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Logging;
using ExtraLethalCompany.Extra.Creatures;
using ExtraLethalCompany.Extra.ExtraTraitor;
using ExtraLethalCompany.Extra.Furniture.ExtraItemCharger;
using ExtraLethalCompany.Patches;
using GameNetcodeStuff;
using HarmonyLib;
using LC_API.ClientAPI;
using LC_API.Data;
using LC_API.GameInterfaceAPI;
using LC_API.ServerAPI;
using Microsoft.CodeAnalysis;
using Steamworks.Data;
using TMPro;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.Controls;
using UnityEngine.Rendering.HighDefinition;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("ExtraLethalCompany")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("My first plugin")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("ExtraLethalCompany")]
[assembly: AssemblyTitle("ExtraLethalCompany")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.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;
		}
	}
}
namespace ExtraLethalCompany
{
	internal static class Disabler
	{
		public static int MinimumToExplode;

		internal static void Init()
		{
			foreach (PluginInfo value in Chainloader.PluginInfos.Values)
			{
				MethodInfo method = typeof(Disabler).GetMethod(value.Metadata.GUID.Replace('.', '_').Replace(' ', '_'), BindingFlags.Static | BindingFlags.NonPublic);
				if (method != null)
				{
					ExtraLethalCompany.LogSource.LogInfo((object)("Disabling: " + ((object)value.Instance).GetType().Name));
					method.Invoke(typeof(Disabler), new object[1] { value.Instance });
				}
			}
		}

		private static void LethalCompanyMinimap(object inst)
		{
			DisableHarmony(inst, "harmony");
			Object.DestroyImmediate((Object)(object)GameObject.Find("MinimapGUI"));
		}

		private static void dev_alexanderdiaz_biggerbattery(object _)
		{
			MinimumToExplode = -3;
		}

		private static void stormytuna_RouteRandom(object inst)
		{
			DisableHarmony(inst, "harmony");
		}

		private static void NoPenalty(object inst)
		{
			DisableHarmony(inst, "harmonymain");
		}

		private static void DisableHarmony(object inst, string harmonyName)
		{
			Traverse.Create(inst).Field(harmonyName).GetValue<Harmony>()
				.UnpatchSelf();
		}
	}
	[BepInPlugin("ExtraLethalCompany", "ExtraLethalCompany", "1.1.5")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class ExtraLethalCompany : BaseUnityPlugin
	{
		public static ManualLogSource LogSource;

		private static readonly Harmony Harmony = new Harmony("ExtraLethalCompany");

		private void Awake()
		{
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Expected O, but got Unknown
			if (((Object)((Component)this).gameObject).name != "ExtraLethalCompany")
			{
				GameObject val = new GameObject("ExtraLethalCompany");
				val.AddComponent<ExtraLethalCompany>();
				val.AddComponent<ExtraSporeLizzard>();
				val.AddComponent<ExtraTraitor>();
				Object.DontDestroyOnLoad((Object)(object)val);
				((Object)val).hideFlags = (HideFlags)61;
			}
			else
			{
				LogSource = ((BaseUnityPlugin)this).Logger;
				ModdedServer.SetServerModdedOnly();
				Disabler.Init();
				Harmony.PatchAll(typeof(HUDManager_Patch));
				Harmony.PatchAll(typeof(Terminal_Patch));
				Harmony.PatchAll(typeof(ItemCharger_Patch));
				Harmony.PatchAll(typeof(StartOfRound_Patch));
				Harmony.PatchAll(typeof(TimeOfDay_Patch));
				Harmony.PatchAll(typeof(BlobAI_Patch));
				((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin ExtraLethalCompany is loaded!");
			}
		}

		private void Update()
		{
			//IL_003c: 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_0049: Invalid comparison between Unknown and I4
			BlobAI[] array = Object.FindObjectsOfType<BlobAI>();
			foreach (BlobAI val in array)
			{
				GameObject gameObject = ((Component)val).gameObject;
				if ((Object)(object)gameObject.GetComponent<ExtraBlob>() == (Object)null)
				{
					gameObject.AddComponent<ExtraBlob>();
				}
			}
			if ((int)GameState.ShipState != 0 && (int)GameState.ShipState != 1)
			{
				return;
			}
			ItemCharger[] array2 = Object.FindObjectsOfType<ItemCharger>();
			foreach (ItemCharger val2 in array2)
			{
				GameObject gameObject2 = ((Component)val2).gameObject;
				if ((Object)(object)gameObject2.GetComponent<ExtraItemCharger>() == (Object)null)
				{
					gameObject2.AddComponent<ExtraItemCharger>();
				}
			}
		}

		private void LobbyEntered(Lobby lobby)
		{
			throw new NotImplementedException();
		}
	}
	public static class PluginInfo
	{
		public const string PLUGIN_GUID = "ExtraLethalCompany";

		public const string PLUGIN_NAME = "ExtraLethalCompany";

		public const string PLUGIN_VERSION = "1.0.0";
	}
}
namespace ExtraLethalCompany.Patches
{
	internal static class HUDManager_Patch
	{
		[HarmonyPatch(typeof(HUDManager), "ApplyPenalty")]
		[HarmonyPrefix]
		private static bool ApplyPenaltyPrefix(HUDManager __instance, int playersDead, ref int bodiesInsured)
		{
			Terminal val = Object.FindObjectOfType<Terminal>();
			int profitQuota = TimeOfDay.Instance.profitQuota;
			int num = (int)((float)profitQuota * ((float)(playersDead - bodiesInsured) * 0.2f) + (float)profitQuota * ((float)bodiesInsured * 0.08f));
			int num2 = -Math.Min(val.groupCredits - num, 0);
			val.groupCredits -= num - num2;
			TimeOfDay instance = TimeOfDay.Instance;
			instance.profitQuota += num2;
			((TMP_Text)__instance.statsUIElements.penaltyAddition).text = $"{playersDead} casualties: -{20f * (float)(playersDead - bodiesInsured)}%\n" + $"{bodiesInsured} injuries: -{8f * (float)bodiesInsured}%\n" + "\nAll unpaid fines will be added to your quota.";
			((TMP_Text)__instance.statsUIElements.penaltyTotal).text = $"PAID: {num - num2}" + "\n" + $"DUE: {num2}";
			return false;
		}
	}
	internal static class StartOfRound_Patch
	{
		[HarmonyPatch(typeof(StartOfRound), "PowerSurgeShip")]
		[HarmonyPrefix]
		private static bool PowerSurgeShipPrefix(StartOfRound __instance)
		{
			__instance.mapScreen.SwitchScreenOn(false);
			if (!((NetworkBehaviour)__instance).IsServer)
			{
				return false;
			}
			CollectionExtensions.Do<TVScript>((IEnumerable<TVScript>)Object.FindObjectsOfType<TVScript>(), (Action<TVScript>)delegate(TVScript obj)
			{
				obj.TurnOffTVServerRpc();
			});
			__instance.shipRoomLights.SetShipLightsServerRpc(false);
			if (Random.Range(0, 10) == 0)
			{
				TimeOfDay.Instance.SetShipLeaveEarlyClientRpc(TimeOfDay.Instance.normalizedTimeOfDay + 0.04167f, TimeOfDay.Instance.votesForShipToLeaveEarly);
			}
			return false;
		}

		[HarmonyPatch(typeof(StartOfRound), "SetMapScreenInfoToCurrentLevel")]
		[HarmonyPostfix]
		private static void SetMapScreenInfoToCurrentLevelPrefix(StartOfRound __instance)
		{
			((TMP_Text)__instance.screenLevelDescription).text = "Orbiting: " + __instance.currentLevel.PlanetName + "\n" + __instance.currentLevel.LevelDescription + "\n" + "{Sensor Err}";
		}
	}
	internal static class Terminal_Patch
	{
		[HarmonyPatch(typeof(Terminal), "TextPostProcess")]
		[HarmonyPrefix]
		private static bool TextPostProcessPrefix(Terminal __instance, ref string __result, ref string modifiedDisplayText, TerminalNode node)
		{
			int num = modifiedDisplayText.Split("[planetTime]").Length - 1;
			if (num > 0)
			{
				Regex regex = new Regex(Regex.Escape("[planetTime]"));
				for (int i = 0; i < num && i < __instance.moonsCatalogueList.Length; i++)
				{
					modifiedDisplayText = regex.Replace(modifiedDisplayText, "{SENSOR ERR}", 1);
				}
			}
			if (node == null || node.displayPlanetInfo != -1)
			{
				modifiedDisplayText = modifiedDisplayText?.Replace("[currentPlanetTime]", "{SENSOR ERR}");
			}
			__result = modifiedDisplayText;
			return true;
		}
	}
	internal static class TimeOfDay_Patch
	{
		[HarmonyPatch(typeof(TimeOfDay), "SetBuyingRateForDay")]
		[HarmonyPrefix]
		private static bool SetBuyingRateForDayPrefix(TimeOfDay __instance)
		{
			__instance.daysUntilDeadline = (int)(__instance.timeUntilDeadline / __instance.totalTime);
			StartOfRound.Instance.companyBuyingRate = 1.15f - (float)(__instance.quotaVariables.deadlineDaysAmount - __instance.daysUntilDeadline) * (0.54f / (float)__instance.quotaVariables.deadlineDaysAmount);
			return false;
		}

		[HarmonyPatch(typeof(TimeOfDay), "SetShipLeaveEarlyServerRpc")]
		[HarmonyPostfix]
		private static void SetShipLeaveEarlyServerRpcPostfix(TimeOfDay __insntance)
		{
			int num = StartOfRound.Instance.connectedPlayersAmount + 1 - StartOfRound.Instance.livingPlayers;
			if (__insntance.votesForShipToLeaveEarly >= num)
			{
				__insntance.SetShipLeaveEarlyClientRpc(__insntance.normalizedTimeOfDay + 0.01f, __insntance.votesForShipToLeaveEarly);
			}
		}
	}
}
namespace ExtraLethalCompany.Extra.Furniture.ExtraItemCharger
{
	public class ExtraItemCharger : MonoBehaviour
	{
		private ItemCharger Charger;

		private GrabbableObject Item;

		private Coroutine Coroutine;

		public string ID { get; private set; }

		private void Awake()
		{
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: 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_003c: Unknown result type (might be due to invalid IL or missing references)
			Charger = ((Component)this).gameObject.GetComponent<ItemCharger>();
			Vector3 position = ((Component)this).transform.position;
			ID = $"{(int)position.x}-{(int)position.y}-{(int)position.z}";
			GameState.ShipStartedLeaving += delegate
			{
				Networking.SetSyncVariable("IsBroken" + ID, "False");
			};
		}

		private void Update()
		{
			if (Networking.GetSyncVariable("IsActive" + ID) == "")
			{
				Networking.RegisterSyncVariable("IsActive" + ID);
				Networking.SetSyncVariable("IsActive" + ID, "False");
			}
			if (Networking.GetSyncVariable("IsBroken" + ID) == "")
			{
				Networking.RegisterSyncVariable("IsBroken" + ID);
				Networking.SetSyncVariable("IsBroken" + ID, "False");
			}
			if (Coroutine == null && Networking.GetSyncVariable("IsActive" + ID) == "True")
			{
				Coroutine = ((MonoBehaviour)this).StartCoroutine(ChargeItemDelayed(Charger, Item));
			}
		}

		public void AskStartCharging(GrabbableObject item)
		{
			if (!(Networking.GetSyncVariable("IsBroken" + ID) == "True") && !(Networking.GetSyncVariable("IsActive" + ID) == "True"))
			{
				Item = item;
				bool flag = item.itemProperties.isConductiveMetal || Random.RandomRangeInt(-10, (int)(item.insertedBattery.charge * 10f) + 1) >= Disabler.MinimumToExplode;
				Networking.SetSyncVariable("IsBroken" + ID, flag.ToString());
				Networking.SetSyncVariable("IsActive" + ID, "True");
			}
		}

		private IEnumerator ChargeItemDelayed(ItemCharger inst, GrabbableObject item)
		{
			inst.zapAudio.Play();
			yield return (object)new WaitForSeconds(0.75f);
			inst.chargeStationAnimator.SetTrigger("zap");
			if ((Object)(object)item != (Object)null && item.itemProperties.requiresBattery)
			{
				item.SyncBatteryServerRpc(100);
				Item = null;
			}
			if (Networking.GetSyncVariable("IsBroken" + ID) == "True")
			{
				Landmine.SpawnExplosion(((Component)this).transform.position, true, 2.4f, 5f);
				StartOfRound.Instance.PowerSurgeShip();
			}
			Networking.SetSyncVariable("IsActive" + ID, "False");
			Coroutine = null;
		}
	}
	internal static class ItemCharger_Patch
	{
		[HarmonyPatch(typeof(ItemCharger), "ChargeItem")]
		[HarmonyPrefix]
		private static bool ChargeItemPrefix(ItemCharger __instance)
		{
			if (!StartOfRound.Instance.shipHasLanded)
			{
				return false;
			}
			GrabbableObject currentlyHeldObjectServer = GameNetworkManager.Instance.localPlayerController.currentlyHeldObjectServer;
			if ((Object)(object)currentlyHeldObjectServer == (Object)null)
			{
				return false;
			}
			if (!currentlyHeldObjectServer.itemProperties.requiresBattery && !currentlyHeldObjectServer.itemProperties.isConductiveMetal)
			{
				return false;
			}
			ExtraItemCharger component = ((Component)__instance).gameObject.GetComponent<ExtraItemCharger>();
			component.AskStartCharging(currentlyHeldObjectServer);
			return false;
		}

		[HarmonyPatch(typeof(ItemCharger), "Update")]
		[HarmonyPrefix]
		private static bool UpdatePrefix(ItemCharger __instance)
		{
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)NetworkManager.Singleton == (Object)null)
			{
				return false;
			}
			ExtraItemCharger component = ((Component)__instance).gameObject.GetComponent<ExtraItemCharger>();
			Traverse val = Traverse.Create((object)__instance).Field("updateInterval");
			val.SetValue((object)(val.GetValue<float>() + Time.deltaTime));
			if (val.GetValue<float>() > 1f)
			{
				val.SetValue((object)0f);
				ShipState shipState = GameState.ShipState;
				if (!((object)(ShipState)(ref shipState)).Equals((object)(ShipState)1))
				{
					__instance.triggerScript.interactable = false;
					__instance.triggerScript.disabledHoverTip = "[Wait for ship to land]";
					return false;
				}
				if ((Object)(object)component != (Object)null && Networking.GetSyncVariable("IsBroken" + component.ID) == "True")
				{
					__instance.triggerScript.interactable = false;
					__instance.triggerScript.disabledHoverTip = "[Charger broken for the round]";
					return false;
				}
				GrabbableObject val2 = GameNetworkManager.Instance.localPlayerController?.currentlyHeldObjectServer;
				__instance.triggerScript.interactable = (Object)(object)val2 != (Object)null && (val2.itemProperties.requiresBattery || val2.itemProperties.isConductiveMetal);
				__instance.triggerScript.disabledHoverTip = "";
			}
			return false;
		}
	}
}
namespace ExtraLethalCompany.Extra.ExtraTraitor
{
	public class EnemyPlayerController : MonoBehaviour
	{
		public static EnemyPlayerController Instance;

		private Keyboard Keyboard = Keyboard.current;

		private void Awake()
		{
			Instance = this;
		}

		private void Update()
		{
			if (!((ButtonControl)Keyboard.f1Key).wasPressedThisFrame)
			{
			}
		}
	}
	public class ExtraTraitor : MonoBehaviour
	{
		private void Awake()
		{
			Networking.RegisterSyncVariable("TraitorID");
			GameState.LandOnMoon += Landing;
			GameState.ShipStartedLeaving += Leaving;
			CommandHandler.RegisterCommand("morph", (Action<string[]>)delegate(string[] args)
			{
				if (StartOfRound.Instance.thisClientPlayerId == int.Parse(Networking.GetSyncVariable("TraitorID")) && args.Length >= 1)
				{
					ExtraLethalCompany.LogSource.LogInfo((object)args[0]);
					string text = args[0].ToLower();
					string text2 = text;
					if (text2 != null)
					{
						switch (text2.Length)
						{
						case 5:
							switch (text2[1])
							{
							case 'p':
								if (text2 == "spore")
								{
								}
								break;
							case 'l':
								if (text2 == "slime")
								{
								}
								break;
							case 'h':
								if (text2 == "ghost")
								{
								}
								break;
							case 'i':
								if (text2 == "giant")
								{
								}
								break;
							}
							break;
						case 7:
							switch (text2[0])
							{
							case 'h':
								if (text2 == "hoarder")
								{
								}
								break;
							case 'b':
								if (text2 == "bracken")
								{
								}
								break;
							case 't':
								if (text2 == "thumper")
								{
								}
								break;
							}
							break;
						case 6:
							switch (text2[0])
							{
							case 'm':
								if (text2 == "masked")
								{
								}
								break;
							case 's':
								if (text2 == "spider")
								{
								}
								break;
							case 'j':
								if (text2 == "jester")
								{
								}
								break;
							}
							break;
						case 4:
							switch (text2[0])
							{
							case 'f':
								if (text2 == "flea")
								{
								}
								break;
							case 'c':
								if (text2 == "coil")
								{
								}
								break;
							case 'h':
								if (text2 == "hawk")
								{
								}
								break;
							case 'w':
								if (text2 == "worm")
								{
								}
								break;
							}
							break;
						case 10:
							if (text2 == "nutcracker")
							{
							}
							break;
						case 3:
							if (text2 == "dog")
							{
							}
							break;
						case 8:
						case 9:
							break;
						}
					}
				}
			});
		}

		private void Landing()
		{
			if (((NetworkBehaviour)StartOfRound.Instance).IsHost)
			{
				Networking.SetSyncVariable("TraitorID", Random.RandomRangeInt(-1, StartOfRound.Instance.allPlayerScripts.Length).ToString());
			}
		}

		private void Leaving()
		{
			if (((NetworkBehaviour)StartOfRound.Instance).IsHost)
			{
				Networking.SetSyncVariable("TraitorID", "");
			}
		}
	}
}
namespace ExtraLethalCompany.Extra.Creatures
{
	internal static class BlobAI_Patch
	{
		[HarmonyPatch(typeof(BlobAI), "SlimeKillPlayerEffectServerRpc")]
		[HarmonyPostfix]
		private static void SlimeKillPlayerEffectServerRpc(BlobAI __instance, int playerKilled)
		{
			if (((NetworkBehaviour)__instance).IsHost)
			{
				((Component)__instance).gameObject.GetComponent<ExtraBlob>()?.AskEatPlayerBody(playerKilled);
			}
		}
	}
	public class ExtraBlob : MonoBehaviour
	{
		public Coroutine EatPlayerBodyCoroutine;

		private BlobAI Blob;

		private void Awake()
		{
			Blob = ((Component)this).gameObject.GetComponent<BlobAI>();
		}

		private void OnCollisionEnter(Collision collision)
		{
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			if (((NetworkBehaviour)Blob).IsHost && ((EnemyAI)Blob).ventAnimationFinished && !((EnemyAI)Blob).isEnemyDead)
			{
				GrabbableObject component = ((Component)collision.collider).gameObject.GetComponent<GrabbableObject>();
				if ((Object)(object)component != (Object)null)
				{
					Object.DestroyImmediate((Object)(object)component);
					Transform transform = ((Component)this).gameObject.transform;
					transform.localScale *= 1.05f;
				}
			}
		}

		public void AskEatPlayerBody(int playerKilled)
		{
			if (EatPlayerBodyCoroutine == null)
			{
				EatPlayerBodyCoroutine = ((MonoBehaviour)this).StartCoroutine(EatPlayerBody(playerKilled));
			}
		}

		private IEnumerator EatPlayerBody(int playerKilled)
		{
			yield return null;
			PlayerControllerB playerScript = StartOfRound.Instance.allPlayerScripts[playerKilled];
			float startTime = Time.realtimeSinceStartup;
			yield return (object)new WaitUntil((Func<bool>)(() => (Object)(object)playerScript.deadBody != (Object)null || Time.realtimeSinceStartup - startTime > 2f));
			if ((Object)(object)playerScript.deadBody == (Object)null)
			{
				Debug.Log((object)"Blob: Player body was not spawned or found within 2 seconds.");
				yield break;
			}
			yield return (object)new WaitForSeconds(2f);
			Transform transform = ((Component)this).gameObject.transform;
			transform.localScale *= 1.1f;
		}
	}
	public class ExtraSporeLizzard : MonoBehaviour
	{
		private void Update()
		{
			//IL_0075: 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_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)StartOfRound.Instance == (Object)null)
			{
				return;
			}
			LocalVolumetricFog[] array = (from g in Object.FindObjectsOfType<LocalVolumetricFog>()
				where ((Object)g).name.Contains("PufferSmoke", StringComparison.OrdinalIgnoreCase)
				select g).ToArray();
			if (array.Length == 0)
			{
				return;
			}
			PlayerControllerB val = StartOfRound.Instance.allPlayerScripts[StartOfRound.Instance.thisClientPlayerId];
			Vector3 position = ((Component)val).gameObject.transform.position;
			for (int i = 0; i < array.Length; i++)
			{
				if (!(Vector3.Distance(position, ((Component)array[i]).transform.position) >= 1f))
				{
					val.DamagePlayer((int)(15f * Time.deltaTime), true, true, (CauseOfDeath)5, 0, false, default(Vector3));
				}
			}
		}
	}
}