using System;
using System.Collections;
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 BepInEx;
using BepInEx.Logging;
using DamagePopups.Behaviours;
using DamagePopups.Patches;
using Microsoft.CodeAnalysis;
using On;
using Photon.Pun;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: IgnoresAccessChecksTo("Ashley.MeshSplitter")]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp-firstpass")]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp")]
[assembly: IgnoresAccessChecksTo("com.rlabrecque.steamworks.net")]
[assembly: IgnoresAccessChecksTo("Discord")]
[assembly: IgnoresAccessChecksTo("HBAO.Demo.Universal.Runtime")]
[assembly: IgnoresAccessChecksTo("HBAO.Runtime")]
[assembly: IgnoresAccessChecksTo("HBAO.Universal.Runtime")]
[assembly: IgnoresAccessChecksTo("MeshSplit")]
[assembly: IgnoresAccessChecksTo("Photon3Unity3D")]
[assembly: IgnoresAccessChecksTo("PhotonChat")]
[assembly: IgnoresAccessChecksTo("PhotonRealtime")]
[assembly: IgnoresAccessChecksTo("PhotonUnityNetworking")]
[assembly: IgnoresAccessChecksTo("PhotonUnityNetworking.Utilities")]
[assembly: IgnoresAccessChecksTo("PhotonVoice.API")]
[assembly: IgnoresAccessChecksTo("PhotonVoice")]
[assembly: IgnoresAccessChecksTo("PhotonVoice.PUN")]
[assembly: IgnoresAccessChecksTo("pworld")]
[assembly: IgnoresAccessChecksTo("sc.posteffects.runtime")]
[assembly: IgnoresAccessChecksTo("Sirenix.OdinInspector.Attributes")]
[assembly: IgnoresAccessChecksTo("Sirenix.OdinInspector.Modules.Unity.Addressables")]
[assembly: IgnoresAccessChecksTo("Sirenix.OdinInspector.Modules.UnityLocalization")]
[assembly: IgnoresAccessChecksTo("Sirenix.Serialization.Config")]
[assembly: IgnoresAccessChecksTo("Sirenix.Serialization")]
[assembly: IgnoresAccessChecksTo("Sirenix.Utilities")]
[assembly: IgnoresAccessChecksTo("Tayx.Graphy")]
[assembly: IgnoresAccessChecksTo("Unity.Addressables")]
[assembly: IgnoresAccessChecksTo("Unity.AI.Navigation")]
[assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging")]
[assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging.DocCodeExamples")]
[assembly: IgnoresAccessChecksTo("Unity.Burst")]
[assembly: IgnoresAccessChecksTo("Unity.Burst.Unsafe")]
[assembly: IgnoresAccessChecksTo("Unity.Collections")]
[assembly: IgnoresAccessChecksTo("Unity.Collections.LowLevel.ILSupport")]
[assembly: IgnoresAccessChecksTo("Unity.InternalAPIEngineBridge.013")]
[assembly: IgnoresAccessChecksTo("Unity.Localization")]
[assembly: IgnoresAccessChecksTo("Unity.Mathematics")]
[assembly: IgnoresAccessChecksTo("Unity.PlayableGraphVisualizer")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipeline.Universal.ShaderLibrary")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.ShaderLibrary")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Universal.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Universal.Shaders")]
[assembly: IgnoresAccessChecksTo("Unity.ResourceManager")]
[assembly: IgnoresAccessChecksTo("Unity.ScriptableBuildPipeline")]
[assembly: IgnoresAccessChecksTo("Unity.Splines")]
[assembly: IgnoresAccessChecksTo("Unity.TextMeshPro")]
[assembly: IgnoresAccessChecksTo("Unity.Timeline")]
[assembly: IgnoresAccessChecksTo("UnityEngine.ARModule")]
[assembly: IgnoresAccessChecksTo("UnityEngine.NVIDIAModule")]
[assembly: IgnoresAccessChecksTo("UnityEngine.UI")]
[assembly: IgnoresAccessChecksTo("Zorro.Core.Runtime")]
[assembly: IgnoresAccessChecksTo("Zorro.PhotonUtility")]
[assembly: IgnoresAccessChecksTo("Zorro.Recorder")]
[assembly: IgnoresAccessChecksTo("Zorro.Settings.Runtime")]
[assembly: IgnoresAccessChecksTo("Zorro.UI.Runtime")]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("cyclozarin.contentwarning.DamagePopups")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.2.0")]
[assembly: AssemblyInformationalVersion("1.0.2+e3dae7da6dc030ab594daaaeeb0ab76134f44610")]
[assembly: AssemblyProduct("DamagePopups")]
[assembly: AssemblyTitle("cyclozarin.contentwarning.DamagePopups")]
[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.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
internal sealed class NullableAttribute : Attribute
{
public readonly byte[] NullableFlags;
public NullableAttribute(byte P_0)
{
NullableFlags = new byte[1] { P_0 };
}
public NullableAttribute(byte[] P_0)
{
NullableFlags = P_0;
}
}
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
internal sealed class NullableContextAttribute : Attribute
{
public readonly byte Flag;
public NullableContextAttribute(byte P_0)
{
Flag = P_0;
}
}
[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 DamagePopups
{
[ContentWarningPlugin("cyclozarin.contentwarning.DamagePopups", "1.0.2", true)]
[BepInPlugin("cyclozarin.contentwarning.DamagePopups", "DamagePopups", "1.0.2")]
public class DamagePopups : BaseUnityPlugin
{
[Serializable]
[CompilerGenerated]
private sealed class <>c
{
public static readonly <>c <>9 = new <>c();
public static hook_Start <>9__12_0;
internal void <Awake>b__12_0(orig_Start orig, MainMenuHandler self)
{
orig.Invoke(self);
PopupFont = ((TMP_Text)GameObject.Find("Canvas/MainPage/HIGH SERVER LOAD").GetComponent<TextMeshProUGUI>()).font;
}
}
public static DamagePopups Instance { get; private set; }
internal static ManualLogSource Logger { get; private set; }
internal static TMP_FontAsset PopupFont { get; private set; }
private void Awake()
{
//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_0035: Expected O, but got Unknown
Logger = ((BaseUnityPlugin)this).Logger;
Instance = this;
HookAll();
object obj = <>c.<>9__12_0;
if (obj == null)
{
hook_Start val = delegate(orig_Start orig, MainMenuHandler self)
{
orig.Invoke(self);
PopupFont = ((TMP_Text)GameObject.Find("Canvas/MainPage/HIGH SERVER LOAD").GetComponent<TextMeshProUGUI>()).font;
};
<>c.<>9__12_0 = val;
obj = (object)val;
}
MainMenuHandler.Start += (hook_Start)obj;
Logger.LogInfo((object)("DamagePopups v1.0.2 by " + "cyclozarin.contentwarning.DamagePopups".Split(".")[0] + " has loaded!"));
}
internal static void HookAll()
{
Logger.LogDebug((object)"Hooking...");
PlayerHook.Init();
Logger.LogDebug((object)"Finished hooking!");
}
}
public static class MyPluginInfo
{
public const string PLUGIN_GUID = "cyclozarin.contentwarning.DamagePopups";
public const string PLUGIN_NAME = "DamagePopups";
public const string PLUGIN_VERSION = "1.0.2";
}
}
namespace DamagePopups.Patches
{
public class PlayerHook
{
[CompilerGenerated]
private static class <>O
{
public static hook_TakeDamage <0>__MMHook_Postfix_ShowDamagePopup;
public static hook_RPCA_Heal <1>__MMHook_Postfix_ShowHealPopup;
public static hook_RPCA_PlayerDie <2>__MMHook_Postfix_ShowInstakillPopup;
public static hook_CallRevive <3>__MMHook_Postfix_ShowRevivePopup;
}
internal static void Init()
{
//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_001b: Expected O, but got Unknown
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_003b: Expected O, but got Unknown
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
//IL_0055: Unknown result type (might be due to invalid IL or missing references)
//IL_005b: Expected O, but got Unknown
//IL_0070: Unknown result type (might be due to invalid IL or missing references)
//IL_0075: Unknown result type (might be due to invalid IL or missing references)
//IL_007b: Expected O, but got Unknown
object obj = <>O.<0>__MMHook_Postfix_ShowDamagePopup;
if (obj == null)
{
hook_TakeDamage val = MMHook_Postfix_ShowDamagePopup;
<>O.<0>__MMHook_Postfix_ShowDamagePopup = val;
obj = (object)val;
}
Player.TakeDamage += (hook_TakeDamage)obj;
object obj2 = <>O.<1>__MMHook_Postfix_ShowHealPopup;
if (obj2 == null)
{
hook_RPCA_Heal val2 = MMHook_Postfix_ShowHealPopup;
<>O.<1>__MMHook_Postfix_ShowHealPopup = val2;
obj2 = (object)val2;
}
Player.RPCA_Heal += (hook_RPCA_Heal)obj2;
object obj3 = <>O.<2>__MMHook_Postfix_ShowInstakillPopup;
if (obj3 == null)
{
hook_RPCA_PlayerDie val3 = MMHook_Postfix_ShowInstakillPopup;
<>O.<2>__MMHook_Postfix_ShowInstakillPopup = val3;
obj3 = (object)val3;
}
Player.RPCA_PlayerDie += (hook_RPCA_PlayerDie)obj3;
object obj4 = <>O.<3>__MMHook_Postfix_ShowRevivePopup;
if (obj4 == null)
{
hook_CallRevive val4 = MMHook_Postfix_ShowRevivePopup;
<>O.<3>__MMHook_Postfix_ShowRevivePopup = val4;
obj4 = (object)val4;
}
Player.CallRevive += (hook_CallRevive)obj4;
}
private static void MMHook_Postfix_ShowHealPopup(orig_RPCA_Heal orig, Player self, float healAmount)
{
//IL_0036: 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)
orig.Invoke(self, healAmount);
if (((MonoBehaviourPun)self).photonView.IsMine)
{
InstantiateLocalPopup(Color.green, $"+{Mathf.RoundToInt(healAmount)}");
}
else
{
InstantiatePopupAtPlayer(self, Color.green, $"+{Mathf.RoundToInt(healAmount)}");
}
}
private static void MMHook_Postfix_ShowDamagePopup(orig_TakeDamage orig, Player self, float damage)
{
//IL_0024: 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_00c3: 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)
orig.Invoke(self, damage);
if (!self.ai && !self.data.dead && !(self.Center().y < -100f) && !(self.Center().y > 100f))
{
string text = ((self.data.recentDamage.Sum((UniqueDamage x) => x.damage) >= PlayerData.maxHealth) ? "INSTAKILL!" : $"-{Mathf.RoundToInt(damage)}") ?? "";
if (((MonoBehaviourPun)self).photonView.IsMine)
{
InstantiateLocalPopup(Color.red, text);
}
else
{
InstantiatePopupAtPlayer(self, Color.red, text);
}
}
}
private static void MMHook_Postfix_ShowInstakillPopup(orig_RPCA_PlayerDie orig, Player self)
{
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: 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_0055: Unknown result type (might be due to invalid IL or missing references)
//IL_005a: Unknown result type (might be due to invalid IL or missing references)
//IL_0064: Unknown result type (might be due to invalid IL or missing references)
orig.Invoke(self);
if (!self.data.recentDamage.Any() && self.data.remainingOxygen >= 0f && !(self.Center().y < -100f) && !(self.Center().y > 100f))
{
InstantiatePopupAtPlayer(self, (Color.red + Color.black) / 2f, "INSTAKILL!");
}
}
private static void MMHook_Postfix_ShowRevivePopup(orig_CallRevive orig, Player self)
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
orig.Invoke(self);
InstantiatePopupAtPlayer(self, Color.blue, "REVIVE!");
}
private static void InstantiatePopupAtPlayer(Player player, Color color, string text)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_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_001a: 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_0026: Expected O, but got Unknown
//IL_002e: 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)
Vector3 position = player.HeadPosition() + Vector3.up * 0.5f;
GameObject val = new GameObject("DMG Popup");
Transform transform = val.transform;
transform.position = position;
TextMeshPro val2 = val.AddComponent<TextMeshPro>();
((TMP_Text)val2).alignment = (TextAlignmentOptions)514;
((Graphic)val2).color = color;
((TMP_Text)val2).text = text;
((TMP_Text)val2).fontSize = 5f;
((TMP_Text)val2).font = DamagePopups.PopupFont;
val.AddComponent<PopupFadeOuter>();
Object.Destroy((Object)(object)GameObject.Find("New Game Object"));
}
private static void InstantiateLocalPopup(Color color, string text)
{
//IL_0073: Unknown result type (might be due to invalid IL or missing references)
//IL_0078: 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_00ac: Unknown result type (might be due to invalid IL or missing references)
GameObject val = GameObject.Find("GAME/HelmetUI/Pivot/Others/NextStep");
GameObject val2 = Object.Instantiate<GameObject>(val, GameObject.Find("GAME/HelmetUI/Pivot/Others").transform);
((Object)val2).name = "Local DMG popup";
Object.Destroy((Object)(object)val2.GetComponent<NextStepUI>());
Object.Destroy((Object)(object)((Component)val2.transform.Find("List")).gameObject);
GameObject gameObject = ((Component)val2.transform.Find("Item Name")).gameObject;
Transform transform = gameObject.transform;
Vector3 localPosition = val.transform.localPosition;
localPosition.x = 460f;
localPosition.y = -650f;
transform.localPosition = localPosition;
TextMeshProUGUI component = gameObject.GetComponent<TextMeshProUGUI>();
((TMP_Text)component).alignment = (TextAlignmentOptions)514;
((Graphic)component).color = color;
((TMP_Text)component).text = text;
((TMP_Text)component).fontSize = 60f;
((TMP_Text)component).font = DamagePopups.PopupFont;
gameObject.AddComponent<UiPopupFadeOuter>();
Object.Destroy((Object)(object)GameObject.Find("New Game Object"));
}
}
}
namespace DamagePopups.Behaviours
{
internal class PopupFadeOuter : MonoBehaviour
{
private Vector3 _randomDesiredFadeOutPosition;
private float _fadeOutTime = 3f;
private TextMeshPro _textMesh;
private void Start()
{
//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_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)
_textMesh = ((Component)this).GetComponent<TextMeshPro>();
_randomDesiredFadeOutPosition = ((Component)this).gameObject.transform.position + Random.insideUnitSphere;
((MonoBehaviour)this).StartCoroutine(MoveAndFadeOut());
}
private IEnumerator MoveAndFadeOut()
{
float _counter = 0f;
while (_counter < _fadeOutTime)
{
_counter += Time.deltaTime;
float num = _counter / _fadeOutTime;
((Component)this).gameObject.transform.LookAt(((Component)MainCamera.instance).transform.position);
((Component)this).gameObject.transform.Rotate(new Vector3(0f, 180f, 0f));
((Component)this).gameObject.transform.position = Vector3.Lerp(((Component)this).gameObject.transform.position, _randomDesiredFadeOutPosition, _fadeOutTime);
((Graphic)_textMesh).color = Color.Lerp(((Graphic)_textMesh).color, Color.black, num);
((TMP_Text)_textMesh).alpha = Mathf.Lerp(((TMP_Text)_textMesh).alpha, 0f, num);
yield return null;
}
Object.Destroy((Object)(object)((Component)this).gameObject);
}
}
internal class UiPopupFadeOuter : MonoBehaviour
{
private float _fadeOutTime = 3f;
private TextMeshProUGUI _textMesh;
private void Start()
{
_textMesh = ((Component)this).GetComponent<TextMeshProUGUI>();
((MonoBehaviour)this).StartCoroutine(MoveAndFadeOut());
}
private IEnumerator MoveAndFadeOut()
{
float _counter = 0f;
while (_counter < _fadeOutTime)
{
_counter += Time.deltaTime;
float num = _counter / _fadeOutTime;
((Component)this).gameObject.transform.localPosition = Vector3.Lerp(((Component)this).gameObject.transform.localPosition, ((Component)this).gameObject.transform.localPosition + ((Component)this).gameObject.transform.right, _fadeOutTime);
((Graphic)_textMesh).color = Color.Lerp(((Graphic)_textMesh).color, Color.black, num);
((TMP_Text)_textMesh).alpha = Mathf.Lerp(((TMP_Text)_textMesh).alpha, 0f, num);
yield return null;
}
Object.Destroy((Object)(object)((Component)this).gameObject);
}
}
}
namespace System.Runtime.CompilerServices
{
[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
internal sealed class IgnoresAccessChecksToAttribute : Attribute
{
public IgnoresAccessChecksToAttribute(string assemblyName)
{
}
}
}