using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using Configgy;
using HarmonyLib;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("CantStopWinning")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("CantStopWinning")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("28c1fe7a-0b6b-44a6-ad3a-e26c2a4d7974")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace TwentyFirstCenturyHumor;
[BepInPlugin("doomahreal.ultrakill.TwentyFirstCenturyHumor", "TwentyFirstCenturyHumor", "1.0.0")]
public class Plugin : BaseUnityPlugin
{
private const string modGUID = "doomahreal.ultrakill.TwentyFirstCenturyHumor";
private const string modName = "TwentyFirstCenturyHumor";
private const string modVersion = "1.0.0";
private static readonly Harmony Harmony = new Harmony("doomahreal.ultrakill.TwentyFirstCenturyHumor");
private ConfigBuilder config;
public static AudioClip[] Penitr = (AudioClip[])(object)new AudioClip[30];
public static GameObject ThereBeTreasure;
public static GameObject treasureInstance;
public static GameObject CoinPrefab;
private Dictionary<GameObject, Coroutine> activeCoroutines = new Dictionary<GameObject, Coroutine>();
[Configgable("", "Enable Mod", 0, null)]
public static ConfigToggle enableMod = new ConfigToggle(true);
[Configgable("", "Randomize Audio", 0, null)]
public static ConfigToggle randomizeAudio = new ConfigToggle(false);
[Configgable("", "Randomize Images", 0, null)]
public static ConfigToggle randomizeImages = new ConfigToggle(false);
[Configgable("", "Remove 'Bro Switched His Weapons'", 0, null)]
public static ConfigToggle removeBroSwitchedWeapons = new ConfigToggle(false);
[Configgable("", "Volume Slider", 0, null)]
public static FloatSlider volumeSlider = new FloatSlider(1f, 0f, 2f);
[Configgable("", "Fade Speed", 0, null)]
public static ConfigInputField<float> fadeSpeed = new ConfigInputField<float>(1f, (Func<float, bool>)null, (Func<string, ValueTuple<bool, float>>)null);
public static Plugin Instance { get; private set; }
private void Awake()
{
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
Harmony.PatchAll();
Instance = this;
LOADSOFMONEY();
SceneManager.sceneLoaded += OnSceneLoaded;
AsyncOperationHandle<GameObject> val = Addressables.LoadAssetAsync<GameObject>((object)"Assets/Prefabs/Attacks and Projectiles/Coin.prefab");
val.Completed += delegate(AsyncOperationHandle<GameObject> handle)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_0009: Invalid comparison between Unknown and I4
if ((int)handle.Status == 1)
{
CoinPrefab = handle.Result;
}
};
}
private void Start()
{
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Expected O, but got Unknown
config = new ConfigBuilder("doomahreal.ultrakill.TwentyFirstCenturyHumor", "ADHD Be Like:");
config.BuildAll();
}
private void OnSceneLoaded(Scene scene, LoadSceneMode mode)
{
InstantiateTreasure();
}
private void LOADSOFMONEY()
{
try
{
Stream manifestResourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("TwentyFirstCenturyHumor.guh.bundle");
if (manifestResourceStream != null)
{
byte[] array = new byte[manifestResourceStream.Length];
manifestResourceStream.Read(array, 0, array.Length);
AssetBundle val = AssetBundle.LoadFromMemory(array);
string[] array2 = new string[14]
{
"ding", "win", "vine", "ah dang it", "hopemusic", "BALLER", "Get out", "Zelda bell", "damn", "goku",
"aww", "prowler", "yams", "laugh at you"
};
for (int i = 0; i < array2.Length; i++)
{
Penitr[i] = val.LoadAsset<AudioClip>(array2[i]);
}
ThereBeTreasure = val.LoadAsset<GameObject>("canvas");
}
}
catch (Exception ex)
{
Debug.LogError((object)("Error in LOADSOFMONEY: " + ex.Message));
}
}
private void InstantiateTreasure()
{
if ((Object)(object)ThereBeTreasure != (Object)null)
{
treasureInstance = Object.Instantiate<GameObject>(ThereBeTreasure);
}
}
public void ActivateImageAndAudio(string transformName, int audioClipIndex, float delay = 0f, bool fadeOut = false, bool audioOnly = false, float pitch = 1f)
{
if (!((ConfigValueElement<bool>)(object)enableMod).Value || (((ConfigValueElement<bool>)(object)removeBroSwitchedWeapons).Value && transformName == "BroSwitchedWeapons"))
{
return;
}
if (((ConfigValueElement<bool>)(object)randomizeAudio).Value)
{
audioClipIndex = Random.Range(0, 14);
}
if (audioClipIndex < 0 || audioClipIndex >= Penitr.Length || (Object)(object)Penitr[audioClipIndex] == (Object)null)
{
return;
}
AudioClip val = Penitr[audioClipIndex];
float num = val.length / Mathf.Max(((ConfigValueElement<float>)(object)fadeSpeed).Value, 0.01f);
if (!audioOnly)
{
GameObject obj = treasureInstance;
Transform val2 = ((obj != null) ? obj.transform : null);
if ((Object)(object)val2 == (Object)null)
{
return;
}
if (((ConfigValueElement<bool>)(object)randomizeImages).Value)
{
List<Transform> list = (from Transform t in (IEnumerable)val2
where ((Object)t).name != "Coins"
select t).ToList();
if (list.Count == 0)
{
return;
}
val2 = list[Random.Range(0, list.Count)];
}
else
{
val2 = val2.Find(transformName);
}
if ((Object)(object)val2 == (Object)null)
{
return;
}
if (activeCoroutines.TryGetValue(((Component)val2).gameObject, out var value))
{
((MonoBehaviour)this).StopCoroutine(value);
activeCoroutines.Remove(((Component)val2).gameObject);
}
Image component = ((Component)val2).GetComponent<Image>();
if (component != null)
{
((Graphic)component).canvasRenderer.SetAlpha(1f);
}
if (delay <= 0f)
{
((Component)val2).gameObject.SetActive(true);
if (fadeOut && num > 0f)
{
Image component2 = ((Component)val2).GetComponent<Image>();
if (component2 != null)
{
((Graphic)component2).CrossFadeAlpha(0f, num, false);
activeCoroutines[((Component)val2).gameObject] = ((MonoBehaviour)this).StartCoroutine(DeactivateAfterFade(((Component)val2).gameObject, num));
}
}
}
else
{
((MonoBehaviour)this).StartCoroutine(ShowImageWithDelay(((Component)val2).gameObject, delay, fadeOut, num));
}
}
((MonoBehaviour)this).StartCoroutine(PlayAudioWithDelay(audioClipIndex, delay, pitch));
}
private IEnumerator ShowImageWithDelay(GameObject target, float delay, bool fadeOut, float fadeDuration)
{
yield return (object)new WaitForSeconds(delay);
target.SetActive(true);
Image fadeImage = default(Image);
int num;
if (fadeOut && fadeDuration > 0f)
{
fadeImage = target.GetComponent<Image>();
num = ((fadeImage != null) ? 1 : 0);
}
else
{
num = 0;
}
if (num != 0)
{
fadeDuration /= Mathf.Max(((ConfigValueElement<float>)(object)fadeSpeed).Value, 0.01f);
((Graphic)fadeImage).CrossFadeAlpha(0f, fadeDuration, false);
activeCoroutines[target] = ((MonoBehaviour)this).StartCoroutine(DeactivateAfterFade(target, fadeDuration));
}
}
private IEnumerator PlayAudioWithDelay(int audioClipIndex, float delay, float pitch)
{
yield return (object)new WaitForSeconds(delay);
AudioSource audioSource = new GameObject("AudioObject").AddComponent<AudioSource>();
audioSource.clip = Penitr[audioClipIndex];
audioSource.volume = ((ConfigValueElement<float>)(object)volumeSlider).Value;
audioSource.pitch = pitch;
audioSource.Play();
Object.Destroy((Object)(object)((Component)audioSource).gameObject, audioSource.clip.length / Mathf.Abs(audioSource.pitch));
}
private IEnumerator DeactivateAfterFade(GameObject obj, float duration)
{
yield return (object)new WaitForSeconds(duration);
if ((Object)(object)obj != (Object)null)
{
obj.SetActive(false);
if (activeCoroutines.ContainsKey(obj))
{
activeCoroutines.Remove(obj);
}
}
}
private void OnDestroy()
{
SceneManager.sceneLoaded -= OnSceneLoaded;
}
}
[HarmonyPatch(typeof(Punch), "TryParryProjectile")]
public static class Balls
{
private static void Postfix(Punch __instance, Transform target, bool canProjectileBoost = false)
{
Cannonball val = default(Cannonball);
if (((Component)target).TryGetComponent<Cannonball>(ref val) && val.launchable)
{
Plugin.Instance.ActivateImageAndAudio("GRANDSLAM", 5, 0f, fadeOut: true);
}
}
}
[HarmonyPatch(typeof(Punch), "PunchSuccess")]
public static class KBPunch
{
private static void Postfix(Punch __instance)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Invalid comparison between Unknown and I4
if ((int)__instance.type == 1)
{
Plugin.Instance.ActivateImageAndAudio("kbpunch", 8, 0f, fadeOut: true);
}
}
}
[HarmonyPatch(typeof(NewMovement), "Update")]
public static class NoStamina
{
private static bool wasAboveSpeedThreshold;
private static void Postfix(NewMovement __instance)
{
//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
if (MonoSingleton<InputManager>.Instance.InputSource.Dodge.WasPerformedThisFrame && __instance.activated && !__instance.slowMode && !GameStateManager.Instance.PlayerInputLocked)
{
bool flag = __instance.groundProperties?.canDash ?? true;
Plugin.Instance.ActivateImageAndAudio((__instance.modNoDashSlide || !flag || __instance.boostCharge < 100f) ? "NoStamina" : "dash", (__instance.modNoDashSlide || !flag || __instance.boostCharge < 100f) ? 2 : 9, 0f, fadeOut: true);
}
Vector3 velocity = __instance.rb.velocity;
float magnitude = ((Vector3)(ref velocity)).magnitude;
if (magnitude > 200f)
{
if (!wasAboveSpeedThreshold)
{
Plugin.Instance.ActivateImageAndAudio("ToMuchSpeed", 13, 0f, fadeOut: true);
wasAboveSpeedThreshold = true;
}
}
else
{
wasAboveSpeedThreshold = false;
}
}
}
[HarmonyPatch(typeof(NewMovement), "SuperCharge")]
public static class bouttasuperchargeyourmother
{
private static void Postfix(NewMovement __instance)
{
Plugin.Instance.ActivateImageAndAudio("Overheal", 8, 0f, fadeOut: true);
}
}
[HarmonyPatch(typeof(NewMovement), "Launch")]
public static class launchingdeeznuts
{
private static void Postfix(NewMovement __instance)
{
Plugin.Instance.ActivateImageAndAudio("smth1", 6, 0f, fadeOut: true);
}
}
[HarmonyPatch(typeof(DualWieldPickup), "PickedUp")]
public static class Dualwieldingtime
{
private static void Postfix(NewMovement __instance)
{
Plugin.Instance.ActivateImageAndAudio("DualWield", 6, 0f, fadeOut: true);
}
}
[HarmonyPatch(typeof(Revolver), "ThrowCoin")]
public static class PEACHES
{
private static void Postfix(Revolver __instance)
{
Plugin.Instance.ActivateImageAndAudio("coin", 7, 0f, fadeOut: true);
}
}
[HarmonyPatch(typeof(V2), "SwitchWeapon")]
public static class V2ISALIVEV2ISALIVEV2ISALIVEV2ISALIVEV2ISALIVEV2ISALIVEV2ISALIVEV2ISALIVEV2ISALIVE
{
private static void Postfix(V2 __instance)
{
Plugin.Instance.ActivateImageAndAudio("smth4", 13, 0f, fadeOut: true);
}
}
[HarmonyPatch(typeof(MinosPrime), "Dropkick")]
public static class JUDGEMENT
{
private static void Postfix(MinosPrime __instance)
{
Plugin.Instance.ActivateImageAndAudio("Dance", 2, 0f, fadeOut: true);
}
}
[HarmonyPatch(typeof(GunControl))]
internal class OnWeaponSwapTrigger
{
[HarmonyPatch("SwitchVariant")]
[HarmonyPatch("SwitchWeapon", new Type[]
{
typeof(int),
typeof(List<GameObject>),
typeof(bool),
typeof(bool),
typeof(bool),
typeof(bool)
})]
public static void Postfix()
{
Plugin.Instance.ActivateImageAndAudio("BroSwitchedWeapons", 7, 0f, fadeOut: true);
}
}
[HarmonyPatch(typeof(Punch), "ActiveFrame")]
public static class ImagineParryingWithKnuckle
{
private static void Postfix(Punch __instance, bool firstFrame = false)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Invalid comparison between Unknown and I4
//IL_025e: Unknown result type (might be due to invalid IL or missing references)
//IL_0264: Invalid comparison between Unknown and I4
//IL_0024: 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_00cb: Unknown result type (might be due to invalid IL or missing references)
//IL_00db: Unknown result type (might be due to invalid IL or missing references)
//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
//IL_010d: Unknown result type (might be due to invalid IL or missing references)
//IL_0112: Unknown result type (might be due to invalid IL or missing references)
//IL_011c: Unknown result type (might be due to invalid IL or missing references)
//IL_012c: Unknown result type (might be due to invalid IL or missing references)
//IL_0142: Unknown result type (might be due to invalid IL or missing references)
//IL_014d: Unknown result type (might be due to invalid IL or missing references)
if ((int)__instance.type == 1 && !__instance.parriedSomething)
{
Collider[] array = Physics.OverlapSphere(__instance.cc.GetDefaultPos(), 0.01f, LayerMask.op_Implicit(__instance.deflectionLayerMask), (QueryTriggerInteraction)2);
List<Transform> list = new List<Transform>();
Collider[] array2 = array;
foreach (Collider val in array2)
{
list.Add(((Component)val).transform);
if (TryParryProjectile(__instance, ((Object)(object)val.attachedRigidbody != (Object)null) ? ((Component)val.attachedRigidbody).transform : ((Component)val).transform, firstFrame))
{
Plugin.Instance.ActivateImageAndAudio("Hakita", 6, 0f, fadeOut: true);
break;
}
}
bool flag = Physics.Raycast(__instance.cc.GetDefaultPos(), __instance.camObj.transform.forward, ref __instance.hit, 4f, LayerMask.op_Implicit(__instance.deflectionLayerMask));
if (!flag)
{
flag = Physics.BoxCast(__instance.cc.GetDefaultPos(), Vector3.one * 0.3f, __instance.camObj.transform.forward, ref __instance.hit, __instance.camObj.transform.rotation, 4f, LayerMask.op_Implicit(__instance.deflectionLayerMask));
}
if (!flag || list.Contains(((RaycastHit)(ref __instance.hit)).transform) || !TryParryProjectile(__instance, ((RaycastHit)(ref __instance.hit)).transform, firstFrame))
{
if ((Object)(object)__instance.ppz == (Object)null)
{
__instance.ppz = ((Component)((Component)__instance).transform.parent).GetComponentInChildren<ProjectileParryZone>();
}
if ((Object)(object)__instance.ppz != (Object)null)
{
Projectile val2 = __instance.ppz.CheckParryZone();
if ((Object)(object)val2 != (Object)null)
{
bool flag2 = !__instance.alreadyBoostedProjectile && firstFrame;
if (!list.Contains(((Component)val2).transform) && !val2.unparryable && !val2.undeflectable && (flag2 || !val2.playerBullet))
{
Plugin.Instance.ActivateImageAndAudio("Hakita", 6, 0f, fadeOut: true);
}
}
}
}
}
if ((int)__instance.type == 0)
{
Debug.Log((object)"Standard punch type detected.");
if (__instance.parriedSomething)
{
Debug.Log((object)"Parry success! Activating 'parry success' image and audio.");
Plugin.Instance.ActivateImageAndAudio("parry success", 7, 0f, fadeOut: true);
}
else
{
Debug.Log((object)"Parry failed. Activating 'parry fail' image and audio.");
Plugin.Instance.ActivateImageAndAudio("parry fail", 10, 0f, fadeOut: true);
}
}
}
private static bool TryParryProjectile(Punch __instance, Transform target, bool canProjectileBoost = false)
{
ParryHelper val = default(ParryHelper);
if (((Component)target).TryGetComponent<ParryHelper>(ref val))
{
target = val.target;
}
Projectile val2 = default(Projectile);
if (((Component)target).TryGetComponent<Projectile>(ref val2) && !val2.unparryable && !val2.undeflectable && ((!__instance.alreadyBoostedProjectile && canProjectileBoost) || !val2.playerBullet))
{
return true;
}
Cannonball val3 = default(Cannonball);
if (((Component)target).TryGetComponent<Cannonball>(ref val3) && val3.launchable)
{
return true;
}
ParryReceiver val4 = default(ParryReceiver);
if (((Component)target).TryGetComponent<ParryReceiver>(ref val4) && ((Behaviour)val4).enabled)
{
return true;
}
ThrownSword val5 = default(ThrownSword);
if (((Component)target).TryGetComponent<ThrownSword>(ref val5) && !val5.friendly && val5.active)
{
return true;
}
MassSpear val6 = default(MassSpear);
if (((Component)target).TryGetComponent<MassSpear>(ref val6) && (!val6.beenStopped || val6.hittingPlayer))
{
return true;
}
Landmine val7 = default(Landmine);
if (((Component)target).TryGetComponent<Landmine>(ref val7))
{
return true;
}
Chainsaw val8 = default(Chainsaw);
if (((Component)target).TryGetComponent<Chainsaw>(ref val8))
{
return true;
}
return false;
}
}
[HarmonyPatch(typeof(ActivateNextWave), "EndWaves")]
public static class whenyoulowkeysupermanbutyouviolentlytouchbro
{
private static void Postfix(ActivateNextWave __instance)
{
if (__instance.toActivate.Length != 0 && !__instance.objectsActivated && __instance.currentDoor >= __instance.doors.Length && !__instance.forEnemies)
{
Plugin.Instance.ActivateImageAndAudio("Hope", 4, 0f, fadeOut: true);
}
}
}
[HarmonyPatch(typeof(StyleHUD), "UpdateMeter")]
public static class menaresohot
{
private static float previousSection;
private static void Postfix(StyleHUD __instance)
{
if (!((Object)(object)__instance == (Object)null) && Plugin.Penitr != null && Plugin.Penitr.Length != 0 && !((Object)(object)Plugin.Penitr[0] == (Object)null))
{
float currentMeter = __instance.currentMeter;
float num = __instance.currentRank.maxMeter;
float num2 = num / 5f;
float num3 = currentMeter / num2;
if (currentMeter != 0f)
{
Plugin.Instance.ActivateImageAndAudio("", 0, 0f, fadeOut: false, audioOnly: true, (num3 > previousSection) ? (1f + num3 * 0.1f) : (-1f));
previousSection = num3;
}
}
}
}
[HarmonyPatch(typeof(StyleHUD), "AscendRank")]
public static class pingmeondiscordifyouseethis
{
private const float MinForce = 10f;
private const float MaxForce = 20f;
private static void Postfix()
{
//IL_0055: Unknown result type (might be due to invalid IL or missing references)
//IL_005c: Expected O, but got Unknown
//IL_010c: 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_0163: 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_016c: Unknown result type (might be due to invalid IL or missing references)
//IL_0180: Unknown result type (might be due to invalid IL or missing references)
Plugin.Instance.ActivateImageAndAudio("", 1, 0f, fadeOut: false, audioOnly: true);
GameObject treasureInstance = Plugin.treasureInstance;
Transform val = ((treasureInstance != null) ? treasureInstance.transform.Find("Coins") : null);
if (val != null)
{
foreach (Transform item in val)
{
Transform val2 = item;
if ((Object)(object)((Component)val2).gameObject != (Object)null)
{
((Component)val2).gameObject.SetActive(true);
((Component)val2).GetComponent<MonoBehaviour>().StartCoroutine(DeactivateAfterDelay(((Component)val2).gameObject, 1f + Random.Range(0f, 1f)));
}
}
}
if ((Object)(object)Plugin.CoinPrefab != (Object)null)
{
NewMovement instance = MonoSingleton<NewMovement>.Instance;
Transform val3 = ((instance != null) ? ((Component)instance).transform : null);
if (val3 != null)
{
for (int i = 0; i < 25; i++)
{
GameObject val4 = Object.Instantiate<GameObject>(Plugin.CoinPrefab, val3.position, Quaternion.identity);
Rigidbody component = val4.GetComponent<Rigidbody>();
if ((Object)(object)component != (Object)null)
{
Vector3 val5 = new Vector3(Random.Range(-1f, 1f), Random.Range(0.5f, 1f), Random.Range(-1f, 1f));
component.AddForce(((Vector3)(ref val5)).normalized * Random.Range(10f, 20f), (ForceMode)1);
}
}
return;
}
}
Debug.LogError((object)"Failed to find player transform.");
}
private static IEnumerator DeactivateAfterDelay(GameObject obj, float delay)
{
yield return (object)new WaitForSeconds(delay);
if ((Object)(object)obj != (Object)null)
{
obj.SetActive(false);
}
}
}
[HarmonyPatch(typeof(StyleHUD), "DescendRank")]
public static class UncreativeNameNumber99991
{
private static void Postfix(StyleHUD __instance)
{
if (Plugin.Penitr == null || Plugin.Penitr.Length < 4 || !__instance.comboActive || __instance.currentMeter <= 0f)
{
return;
}
GameObject treasureInstance = Plugin.treasureInstance;
if ((Object)(object)treasureInstance != (Object)null)
{
Transform val = treasureInstance.transform.Find("Concern");
if ((Object)(object)val != (Object)null && (Object)(object)Plugin.Penitr[2] != (Object)null)
{
Plugin.Instance.ActivateImageAndAudio("Concern", 2, 0f, fadeOut: true);
}
Plugin.Instance.ActivateImageAndAudio("", 3, 0f, fadeOut: false, audioOnly: true);
}
}
}
[HarmonyPatch(typeof(GabrielVoice), "TauntNow")]
public static class GabrielVoiceTauntPatch
{
private static void Postfix(GabrielVoice __instance, AudioClip[] clips, string[] subs)
{
float delay = __instance.aud.clip.length + 0.1f;
Plugin.Instance.ActivateImageAndAudio("smth2", 6, delay, fadeOut: true);
}
}
[HarmonyPatch(typeof(Coin), "ReflectRevolver")]
public class ReflectRevolverPatch
{
private static void Postfix(Coin __instance)
{
if ((__instance.hitTimes > 1 && !__instance.shotByEnemy) || __instance.doubled)
{
Plugin.Instance.ActivateImageAndAudio("splitshot", 12, Plugin.Penitr[12].length, fadeOut: true);
}
}
}
[HarmonyPatch(typeof(IEnrage), "Enrage")]
public static class angrybritishdude
{
private static void PostFix(IEnrage __instance)
{
Plugin.Instance.ActivateImageAndAudio("smth", 11, 0f, fadeOut: true);
}
}
[HarmonyPatch(typeof(StatueBoss), "OrbSpawn")]
public static class butherestheballer
{
private static void Postfix(StatueBoss __instance)
{
Plugin.Instance.ActivateImageAndAudio("ball", 5, 0f, fadeOut: true);
}
}
[HarmonyPatch(typeof(StatueBoss), "Stomp")]
public static class bigshoelmfao
{
private static void Postfix(StatueBoss __instance)
{
Plugin.Instance.ActivateImageAndAudio("big shoe", 2, 0f, fadeOut: true);
}
}
[HarmonyPatch(typeof(Stalker), "SandExplode")]
public static class sandinyoureyes
{
private static void Postfix(Stalker __instance)
{
Plugin.Instance.ActivateImageAndAudio("stalker", 2, 0f, fadeOut: true);
}
}
[HarmonyPatch(typeof(NewMovement), "GetHurt")]
public class GetHurtPatch
{
private static void Postfix(NewMovement __instance)
{
if (__instance.hp < 25)
{
Plugin.Instance.ActivateImageAndAudio("jesus", 7, 0f, fadeOut: true);
}
}
}
[HarmonyPatch(typeof(ZombieMelee), "MouthOpen")]
public class GetHurtPatcha
{
private static void Postfix(ZombieMelee __instance)
{
Plugin.Instance.ActivateImageAndAudio("filth bite", 6, 0f, fadeOut: true);
}
}
[HarmonyPatch(typeof(UnderwaterController), "InWater")]
public class GetHurtPatchb
{
private static void Postfix(UnderwaterController __instance)
{
Plugin.Instance.ActivateImageAndAudio("water_enter", 2, 0f, fadeOut: true);
}
}
[HarmonyPatch(typeof(HookArm), "Update")]
public class GetHurtPatchc
{
private static void Postfix(HookArm __instance)
{
if (MonoSingleton<InputManager>.Instance.InputSource.Hook.WasPerformedThisFrame)
{
Plugin.Instance.ActivateImageAndAudio("whiplash", 6, 0f, fadeOut: true);
}
}
}
[HarmonyPatch(typeof(HurtZone), "FixedUpdate")]
public class GetHurtPatchd
{
private static void Postfix(HurtZone __instance)
{
//IL_002c: 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)
//IL_0035: 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_0040: 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_004f: Unknown result type (might be due to invalid IL or missing references)
BoxCollider component = ((Component)__instance).GetComponent<BoxCollider>();
if ((Object)(object)component == (Object)null || __instance.playerHurtCooldown > 0f)
{
return;
}
Bounds bounds = ((Collider)component).bounds;
Vector3 center = ((Bounds)(ref bounds)).center;
bounds = ((Collider)component).bounds;
Collider[] array = Physics.OverlapBox(center, ((Bounds)(ref bounds)).extents, ((Component)component).transform.rotation);
foreach (Collider val in array)
{
if (((Component)val).CompareTag("Player"))
{
Plugin.Instance.ActivateImageAndAudio("fire_damage", 2, 0f, fadeOut: true);
__instance.playerHurtCooldown = __instance.hurtCooldown;
break;
}
}
}
}
[HarmonyPatch(typeof(NewMovement), "Respawn")]
public class rerepawned
{
private static void Postfix(NewMovement __instance)
{
Plugin.Instance.ActivateImageAndAudio("player_death", 13, 0f, fadeOut: true);
}
}
[HarmonyPatch(typeof(Railcannon), "Shoot")]
public class rererepawned
{
private static void Postfix(Railcannon __instance)
{
Plugin.Instance.ActivateImageAndAudio("railcannon_shoot", 8, 0f, fadeOut: true);
}
}