using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Logging;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using PluginConfig.API;
using PluginConfig.API.Fields;
using UnityEngine;
using UnityEngine.Networking;
[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("ScoutVoiceLines")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("ScoutVoiceLines")]
[assembly: AssemblyTitle("ScoutVoiceLines")]
[assembly: AssemblyVersion("1.0.0.0")]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[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 ScoutVoiceLines
{
public enum SubtitleColor
{
RED,
BLU
}
[BepInPlugin("scout.ultrakill.scoutvoicelines", "Scout Voice Lines", "0.1.0")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class Plugin : BaseUnityPlugin
{
internal static ManualLogSource Log;
public static Plugin me;
public static AudioSource audio;
public static Dictionary<string, AudioClip> clips = new Dictionary<string, AudioClip>();
public static string AudioFolder = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "Audio");
public static PluginConfigurator config;
public static BoolField masterEnabled;
public static IntField dashChance;
public static IntField parryChance;
public static IntField punchChance;
public static IntField hurtChance;
public static IntField coinChance;
public static IntField pumpChance;
public static IntField waveClearChance;
public static IntField fireChance;
public static IntField projectileBoostChance;
public static IntField sandChance;
public static IntField wallJumpChance;
public static IntField jumpPadChance;
public static IntField cannonballChance;
public static IntField coreEjectChance;
public static IntField pickupChance;
public static IntField failDashChance;
public static IntField rocketRideChance;
public static IntField styleChance;
public static IntField whiplashChance;
public static IntField railSwitchChance;
public static BoolField coloredSubtitles;
public static EnumField<SubtitleColor> subtitleColor;
private void Awake()
{
//IL_0034: Unknown result type (might be due to invalid IL or missing references)
me = this;
Log = ((BaseUnityPlugin)this).Logger;
audio = ((Component)this).gameObject.AddComponent<AudioSource>();
((MonoBehaviour)this).StartCoroutine(LoadAllClips());
new Harmony("scout.ultrakill.scoutvoicelines").PatchAll();
SetupConfig();
Log.LogInfo((object)"V1 Yapper Revamp loaded!");
}
private void SetupConfig()
{
//IL_004d: Unknown result type (might be due to invalid IL or missing references)
//IL_0057: Expected O, but got Unknown
//IL_006c: Unknown result type (might be due to invalid IL or missing references)
//IL_0076: Expected O, but got Unknown
//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
//IL_00b7: Expected O, but got Unknown
//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
//IL_00d9: Expected O, but got Unknown
//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
//IL_00fb: Expected O, but got Unknown
//IL_0113: Unknown result type (might be due to invalid IL or missing references)
//IL_011d: Expected O, but got Unknown
//IL_0135: Unknown result type (might be due to invalid IL or missing references)
//IL_013f: Expected O, but got Unknown
//IL_0157: Unknown result type (might be due to invalid IL or missing references)
//IL_0161: Expected O, but got Unknown
//IL_0179: Unknown result type (might be due to invalid IL or missing references)
//IL_0183: Expected O, but got Unknown
//IL_019b: Unknown result type (might be due to invalid IL or missing references)
//IL_01a5: Expected O, but got Unknown
//IL_01bd: Unknown result type (might be due to invalid IL or missing references)
//IL_01c7: Expected O, but got Unknown
//IL_01df: Unknown result type (might be due to invalid IL or missing references)
//IL_01e9: Expected O, but got Unknown
//IL_0201: Unknown result type (might be due to invalid IL or missing references)
//IL_020b: Expected O, but got Unknown
//IL_0223: Unknown result type (might be due to invalid IL or missing references)
//IL_022d: Expected O, but got Unknown
//IL_0245: Unknown result type (might be due to invalid IL or missing references)
//IL_024f: Expected O, but got Unknown
//IL_0267: Unknown result type (might be due to invalid IL or missing references)
//IL_0271: Expected O, but got Unknown
//IL_0289: Unknown result type (might be due to invalid IL or missing references)
//IL_0293: Expected O, but got Unknown
//IL_02ab: Unknown result type (might be due to invalid IL or missing references)
//IL_02b5: Expected O, but got Unknown
//IL_02cd: Unknown result type (might be due to invalid IL or missing references)
//IL_02d7: Expected O, but got Unknown
//IL_02ef: Unknown result type (might be due to invalid IL or missing references)
//IL_02f9: Expected O, but got Unknown
//IL_0311: Unknown result type (might be due to invalid IL or missing references)
//IL_031b: Expected O, but got Unknown
//IL_0333: Unknown result type (might be due to invalid IL or missing references)
//IL_033d: Expected O, but got Unknown
config = PluginConfigurator.Create("Scout Voice Lines", "scout.scoutvoicelines");
Sprite val = LoadIcon("icon.png");
if ((Object)(object)val != (Object)null)
{
config.image = val;
}
masterEnabled = new BoolField(config.rootPanel, "Mod Enabled", "masterEnabled", true);
coloredSubtitles = new BoolField(config.rootPanel, "Colored Subtitles", "coloredSubtitles", true);
subtitleColor = new EnumField<SubtitleColor>(config.rootPanel, "Subtitle Color", "subtitleColor", SubtitleColor.RED);
dashChance = new IntField(config.rootPanel, "Dash rarity (1 in X chance)", "dashChance", 3, 1, 50);
failDashChance = new IntField(config.rootPanel, "Failed dash rarity (1 in X chance)", "failDashChance", 3, 1, 50);
wallJumpChance = new IntField(config.rootPanel, "Wall jump rarity (1 in X chance)", "wallJumpChance", 3, 1, 50);
jumpPadChance = new IntField(config.rootPanel, "Jump pad rarity (1 in X chance)", "jumpPadChance", 3, 1, 50);
rocketRideChance = new IntField(config.rootPanel, "Rocket ride rarity (1 in X chance)", "rocketRideChance", 3, 1, 50);
parryChance = new IntField(config.rootPanel, "Parry rarity (1 in X chance)", "parryChance", 3, 1, 50);
punchChance = new IntField(config.rootPanel, "Punch rarity (1 in X chance)", "punchChance", 3, 1, 50);
coinChance = new IntField(config.rootPanel, "Coin toss rarity (1 in X chance)", "coinChance", 4, 1, 50);
pumpChance = new IntField(config.rootPanel, "Pump charge rarity (1 in X chance)", "pumpChance", 3, 1, 50);
projectileBoostChance = new IntField(config.rootPanel, "Projectile boost rarity (1 in X chance)", "projectileBoostChance", 4, 1, 50);
sandChance = new IntField(config.rootPanel, "Sanded enemies rarity (1 in X chance)", "sandChance", 3, 1, 50);
cannonballChance = new IntField(config.rootPanel, "Cannonball rarity (1 in X chance)", "cannonballChance", 3, 1, 50);
coreEjectChance = new IntField(config.rootPanel, "Core eject rarity (1 in X chance)", "coreEjectChance", 4, 1, 50);
railSwitchChance = new IntField(config.rootPanel, "Railcannon switch rarity (1 in X chance)", "railSwitchChance", 5, 1, 50);
whiplashChance = new IntField(config.rootPanel, "Whiplash rarity (1 in X chance)", "whiplashChance", 2, 1, 50);
hurtChance = new IntField(config.rootPanel, "Hurt rarity (1 in X chance)", "hurtChance", 2, 1, 50);
waveClearChance = new IntField(config.rootPanel, "Wave clear rarity (1 in X chance)", "waveClearChance", 3, 1, 50);
fireChance = new IntField(config.rootPanel, "Fire rarity (1 in X chance)", "fireChance", 3, 1, 50);
pickupChance = new IntField(config.rootPanel, "Pickup rarity (1 in X chance)", "pickupChance", 3, 1, 50);
styleChance = new IntField(config.rootPanel, "Style bonus rarity (1 in X chance)", "styleChance", 2, 1, 50);
}
private Sprite LoadIcon(string fileName)
{
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
//IL_004f: Expected O, but got Unknown
//IL_0070: Unknown result type (might be due to invalid IL or missing references)
//IL_007f: Unknown result type (might be due to invalid IL or missing references)
string text = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), fileName);
if (!File.Exists(text))
{
Log.LogWarning((object)("Config icon not found at: " + text));
return null;
}
byte[] array = File.ReadAllBytes(text);
Texture2D val = new Texture2D(2, 2);
ImageConversion.LoadImage(val, array);
return Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0.5f, 0.5f));
}
private IEnumerator LoadAllClips()
{
if (!Directory.Exists(AudioFolder))
{
Log.LogWarning((object)("No Audio folder found at: " + AudioFolder));
yield break;
}
string[] files = Directory.GetFiles(AudioFolder, "*.wav");
Log.LogInfo((object)("Found " + files.Length + " wav files to load."));
string[] array = files;
foreach (string filePath in array)
{
string url = "file:///" + filePath.Replace("\\", "/");
UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip(url, (AudioType)20);
try
{
yield return www.SendWebRequest();
if ((int)www.result != 1)
{
Log.LogError((object)("Failed to load " + filePath + " : " + www.error));
continue;
}
AudioClip clip = DownloadHandlerAudioClip.GetContent(www);
string name = (((Object)clip).name = Path.GetFileNameWithoutExtension(filePath));
clips[name] = clip;
Log.LogInfo((object)("Loaded clip: " + name));
}
finally
{
((IDisposable)www)?.Dispose();
}
}
Log.LogInfo((object)("Finished loading clips. Total in memory: " + clips.Count));
}
public static void Play(string clipName)
{
if (masterEnabled == null || masterEnabled.value)
{
if (!clips.ContainsKey(clipName))
{
Log.LogWarning((object)("Tried to play missing clip: " + clipName));
return;
}
audio.Stop();
audio.clip = clips[clipName];
audio.Play();
}
}
public static void Subtitle(string text)
{
if ((masterEnabled == null || masterEnabled.value) && !string.IsNullOrEmpty(text))
{
if (coloredSubtitles != null && coloredSubtitles.value)
{
string text2 = ((subtitleColor.value == SubtitleColor.BLU) ? "#5b9bd5" : "#ff3b3b");
string text3 = "<color=" + text2 + ">" + text + "</color>";
MonoSingleton<SubtitleController>.Instance.DisplaySubtitle(text3, (AudioSource)null, false);
}
else
{
MonoSingleton<SubtitleController>.Instance.DisplaySubtitle(text, (AudioSource)null, false);
}
}
}
}
public static class EncounterFlags
{
public static bool earthmoverIntro;
public static bool v2GreenArm;
public static bool v2Enrage;
public static bool gabriel2Intro;
public static bool minosHand;
public static bool minosCorpse;
public static bool intro11;
public static bool wickedFinish;
public static bool pistolPickup;
public static bool v2SkullSlide;
public static bool swordsIntro;
public static bool swordsFlee;
public static bool geryonIntro;
public static bool geryonElevator;
public static bool geryonFall;
public static bool geryonBoss;
public static bool geryonPhase2;
public static bool geryonOutro;
public static bool geryonReveal;
public static bool leviathanPhase2;
public static bool leviathanKill;
public static bool minotaurFakeKill;
public static bool minotaurPhase2;
public static bool tramStop72;
public static bool heatIntro;
public static bool heatSpawnEnemies;
}
[HarmonyPatch(typeof(HellMap), "Start")]
public class Patch_ResetEncounterFlags
{
private static void Postfix()
{
EncounterFlags.earthmoverIntro = false;
EncounterFlags.v2GreenArm = false;
EncounterFlags.v2Enrage = false;
EncounterFlags.gabriel2Intro = false;
EncounterFlags.minosHand = false;
EncounterFlags.minosCorpse = false;
EncounterFlags.intro11 = false;
EncounterFlags.wickedFinish = false;
EncounterFlags.pistolPickup = false;
EncounterFlags.v2SkullSlide = false;
MaliciousFaceState.fightActive = false;
MaliciousFaceState.killHandled = false;
EncounterFlags.swordsIntro = false;
EncounterFlags.swordsFlee = false;
SwordsmachineState.barEnableCount = 0;
SwordsmachineState.fightActive = false;
SwordsmachineState.killHandled = false;
EncounterFlags.geryonIntro = false;
EncounterFlags.geryonElevator = false;
EncounterFlags.geryonFall = false;
EncounterFlags.geryonBoss = false;
EncounterFlags.geryonPhase2 = false;
EncounterFlags.geryonOutro = false;
EncounterFlags.geryonReveal = false;
HideousMassState.fightActive = false;
HideousMassState.killHandled = false;
MindflayerState.fightActive = false;
MindflayerState.killHandled = false;
SisypheanState.fightActive = false;
SisypheanState.killHandled = false;
FerrymanState.fightActive = false;
FerrymanState.killHandled = false;
LeviathanState.fightActive = false;
LeviathanState.killHandled = false;
EncounterFlags.leviathanPhase2 = false;
EncounterFlags.leviathanKill = false;
EncounterFlags.minotaurFakeKill = false;
EncounterFlags.minotaurPhase2 = false;
MinotaurState.barEnableCount = 0;
EncounterFlags.tramStop72 = false;
EncounterFlags.heatIntro = false;
EncounterFlags.heatSpawnEnemies = false;
}
}
[HarmonyPatch(typeof(HellMap), "Start")]
public class Patch_LevelEnter
{
private static void Postfix()
{
int num = Random.Range(1, 6);
if (num == 1)
{
Plugin.Play("enter1");
((MonoBehaviour)Plugin.me).StartCoroutine(EnterLine1());
}
if (num == 2)
{
Plugin.Subtitle("I am so ready for some meatshots!");
Plugin.Play("enter2");
}
if (num == 3)
{
Plugin.Subtitle("Let's get a win, guys! I wanna rank up here!");
Plugin.Play("enter3");
}
if (num == 4)
{
Plugin.Subtitle("Meatshots! Freakin' meatshots!");
Plugin.Play("enter4");
}
if (num == 5)
{
Plugin.Play("enter5");
((MonoBehaviour)Plugin.me).StartCoroutine(EnterLine5());
}
}
private static IEnumerator EnterLine1()
{
Plugin.Subtitle("I've got a bucket of chicken, and I'm here to kick ass!");
yield return (object)new WaitForSeconds(2.75f);
Plugin.Subtitle("And I'm all out of chicken, so I lied about the chicken...");
}
private static IEnumerator EnterLine5()
{
Plugin.Subtitle("Let's win already!");
yield return (object)new WaitForSeconds(1.1f);
Plugin.Subtitle("I don't got time for this, I got a date!");
yield return (object)new WaitForSeconds(1.6f);
Plugin.Subtitle("A real one!");
yield return (object)new WaitForSeconds(0.7f);
Plugin.Subtitle("Don't look into it.");
}
}
[HarmonyPatch(typeof(Punch), "CoinFlip")]
public class Patch_CoinToss
{
private static void Postfix()
{
if (!Plugin.audio.isPlaying && Random.Range(1, Plugin.coinChance.value + 1) == 1)
{
int num = Random.Range(1, 3);
if (num == 1)
{
Plugin.Subtitle("Catch this!");
Plugin.Play("coin1");
}
if (num == 2)
{
Plugin.Subtitle("Hey, wimps!");
Plugin.Play("coin2");
}
if (num == 3)
{
Plugin.Subtitle("Yo, heads up!");
Plugin.Play("coin3");
}
}
}
}
[HarmonyPatch(typeof(NewMovement), "GetHurt")]
public class Patch_Death
{
private static bool alreadyDied;
private static void Postfix(NewMovement __instance)
{
if (__instance.dead)
{
if (!alreadyDied)
{
alreadyDied = true;
int num = Random.Range(1, 4);
if (num == 1)
{
Plugin.Subtitle("Scout_paincriticaldeath01.wav");
Plugin.Play("death1");
}
if (num == 2)
{
Plugin.Subtitle("Scout_paincriticaldeath02.wav");
Plugin.Play("death2");
}
if (num == 3)
{
Plugin.Subtitle("Scout_paincriticaldeath03.wav");
Plugin.Play("death3");
}
}
}
else
{
alreadyDied = false;
}
}
}
[HarmonyPatch(typeof(NewMovement), "GetHurt")]
public class Patch_Hurt
{
private static void Postfix(NewMovement __instance)
{
if (!__instance.dead && !Plugin.audio.isPlaying && Random.Range(1, Plugin.hurtChance.value + 1) == 1)
{
int num = Random.Range(1, 6);
if (num == 1)
{
Plugin.Subtitle("Ah!");
Plugin.Play("hurt1");
}
if (num == 2)
{
Plugin.Subtitle("Aaaaah!");
Plugin.Play("hurt2");
}
if (num == 3)
{
Plugin.Subtitle("Ugh!");
Plugin.Play("hurt3");
}
if (num == 4)
{
Plugin.Subtitle("Uh!");
Plugin.Play("hurt4");
}
if (num == 5)
{
Plugin.Subtitle("Nnrg!");
Plugin.Play("hurt5");
}
}
}
}
[HarmonyPatch(typeof(Shotgun), "Pump")]
public class Patch_PumpCharge
{
private static void Postfix()
{
if (!Plugin.audio.isPlaying && Random.Range(1, Plugin.pumpChance.value + 1) == 1)
{
int num = Random.Range(1, 6);
if (num == 1)
{
Plugin.Subtitle("I'm gonna beat on your skull 'till I hit tonsils.");
Plugin.Play("pump1");
}
if (num == 2)
{
Plugin.Play("pump2");
((MonoBehaviour)Plugin.me).StartCoroutine(PumpLine2());
}
if (num == 3)
{
Plugin.Subtitle("Yeah, come get some, you frickin' wuss!");
Plugin.Play("pump3");
}
if (num == 4)
{
Plugin.Subtitle("Put 'em up, pal.");
Plugin.Play("pump4");
}
if (num == 5)
{
Plugin.Subtitle("What are you lookin at?!");
Plugin.Play("pump5");
}
}
}
private static IEnumerator PumpLine2()
{
Plugin.Subtitle("I'M GONNA HEADBUTT CHA'!");
yield return (object)new WaitForSeconds(1f);
Plugin.Subtitle("I'M GONNA HEADBUTT CHA'!");
yield return (object)new WaitForSeconds(1f);
Plugin.Subtitle("I'M GONNA HEADBUTT CHA'!");
}
}
[HarmonyPatch(typeof(NewMovement), "Parry")]
public class Patch_Parry
{
private static void Postfix()
{
if (!Plugin.audio.isPlaying && Random.Range(1, Plugin.parryChance.value + 1) == 1)
{
int num = Random.Range(1, 6);
if (num == 1)
{
Plugin.Subtitle("Batter up!");
Plugin.Play("parry1");
}
if (num == 2)
{
Plugin.Subtitle("Major league!");
Plugin.Play("parry2");
}
if (num == 3)
{
Plugin.Subtitle("Think fast, chucklenuts!");
Plugin.Play("parry3");
}
if (num == 4)
{
Plugin.Subtitle("Good hands, buddy!");
Plugin.Play("parry4");
}
if (num == 5)
{
Plugin.Subtitle("Denied!");
Plugin.Play("parry5");
}
}
}
}
[HarmonyPatch(typeof(ActivateNextWave), "EndWaves")]
public class Patch_WaveClear
{
private static void Postfix()
{
if (!MaliciousFaceState.fightActive && !MaliciousFaceState.killHandled && !MaliciousFaceState.fightActive && !MaliciousFaceState.killHandled && !SwordsmachineState.fightActive && !SwordsmachineState.killHandled && !HideousMassState.fightActive && !HideousMassState.killHandled && !MindflayerState.fightActive && !MindflayerState.killHandled && !SisypheanState.fightActive && !SisypheanState.killHandled && !FerrymanState.fightActive && !FerrymanState.killHandled && !Plugin.audio.isPlaying && Random.Range(1, Plugin.waveClearChance.value + 1) == 1)
{
int num = Random.Range(1, 6);
if (num == 1)
{
Plugin.Subtitle("How ya like me now, blockhead?");
Plugin.Play("wave1");
}
if (num == 2)
{
Plugin.Subtitle("I did it!");
Plugin.Play("wave2");
}
if (num == 3)
{
Plugin.Subtitle("What did we learn? I always win!");
Plugin.Play("wave3");
}
if (num == 4)
{
Plugin.Subtitle("Remember me? Yeah you do!");
Plugin.Play("wave4");
}
if (num == 5)
{
Plugin.Subtitle("You got anything smart to say now?!");
Plugin.Play("wave5");
}
}
}
}
[HarmonyPatch(typeof(Punch), "PunchSuccess", new Type[]
{
typeof(Vector3),
typeof(Transform)
})]
public class Patch_PunchHit
{
private static void Postfix()
{
if (!Plugin.audio.isPlaying && Random.Range(1, Plugin.punchChance.value + 1) == 1)
{
int num = Random.Range(1, 6);
if (num == 1)
{
Plugin.Subtitle("Bonk!");
Plugin.Play("punch1");
}
if (num == 2)
{
Plugin.Subtitle("Boink!");
Plugin.Play("punch2");
}
if (num == 3)
{
Plugin.Subtitle("Eat it, fatty!");
Plugin.Play("punch3");
}
if (num == 4)
{
Plugin.Subtitle("Ya head's a freakin' bat matgnet!");
Plugin.Play("punch4");
}
if (num == 5)
{
Plugin.Subtitle("Man, your skull's so soft you're makin' this easy!");
Plugin.Play("punch5");
}
}
}
}
[HarmonyPatch(typeof(Revolver), "LateUpdate")]
public class Patch_Spin
{
private static bool wasSpinning;
private static float nextAllowedTime;
private const float COOLDOWN = 4f;
private static void Postfix(Revolver __instance)
{
if (__instance.gunVariation != 2)
{
wasSpinning = false;
return;
}
bool value = Traverse.Create((object)__instance).Field("chargingPierce").GetValue<bool>();
if (value && !wasSpinning && !Plugin.audio.isPlaying && Time.time >= nextAllowedTime)
{
nextAllowedTime = Time.time + 4f;
Plugin.Subtitle("You morons are about to catch a real beatin'.");
Plugin.Play("spin1");
}
wasSpinning = value;
}
}
[HarmonyPatch(typeof(NewMovement), "TryDash")]
public class Patch_Dash
{
private static void Postfix()
{
if (!Plugin.audio.isPlaying && Random.Range(1, Plugin.dashChance.value + 1) == 1)
{
int num = Random.Range(1, 6);
if (num == 1)
{
Plugin.Subtitle("(Whooshing sound)");
Plugin.Play("dash1");
}
if (num == 2)
{
Plugin.Subtitle("Woosh!");
Plugin.Play("dash2");
}
if (num == 3)
{
Plugin.Subtitle("Wa-ha!");
Plugin.Play("dash3");
}
if (num == 4)
{
Plugin.Subtitle("Haha!");
Plugin.Play("dash4");
}
if (num == 5)
{
Plugin.Subtitle("Yoink!");
Plugin.Play("dash5");
}
}
}
}
[HarmonyPatch(typeof(NewMovement), "TryDash")]
public class Patch_FailDash
{
private static void Prefix(NewMovement __instance)
{
if (!(__instance.boostCharge >= 100f) && !Plugin.audio.isPlaying && Random.Range(1, Plugin.failDashChance.value + 1) == 1)
{
int num = Random.Range(1, 4);
if (num == 1)
{
Plugin.Subtitle("Work, dammit!");
Plugin.Play("faildash1");
}
if (num == 2)
{
Plugin.Subtitle("C'mon, c'mon!");
Plugin.Play("faildash2");
}
if (num == 3)
{
Plugin.Subtitle("I'm not even winded!");
Plugin.Play("faildash3");
}
}
}
}
[HarmonyPatch(typeof(StyleHUD), "AscendRank")]
public class Patch_UltrakillRank
{
private static void Postfix(StyleHUD __instance)
{
if (__instance.rankIndex == 7 && !Plugin.audio.isPlaying)
{
int num = Random.Range(1, 6);
if (num == 1)
{
Plugin.Subtitle("Hey look at me, look at me!");
Plugin.Play("rank1");
}
if (num == 2)
{
Plugin.Subtitle("You seein' dis?");
Plugin.Play("rank2");
}
if (num == 3)
{
Plugin.Subtitle("You see dat?");
Plugin.Play("rank3");
}
if (num == 4)
{
Plugin.Subtitle("Bang! I make it look easy.");
Plugin.Play("rank4");
}
if (num == 5)
{
Plugin.Subtitle("No otha' class gonna do dat!");
Plugin.Play("rank5");
}
}
}
}
[HarmonyPatch(typeof(EnemyIdentifier), "StartBurning")]
public class Patch_Fire
{
private static HashSet<EnemyIdentifier> alreadyBurned = new HashSet<EnemyIdentifier>();
private static void Postfix(EnemyIdentifier __instance)
{
if (alreadyBurned.Contains(__instance))
{
return;
}
alreadyBurned.Add(__instance);
if (!Plugin.audio.isPlaying && Random.Range(1, Plugin.fireChance.value + 1) == 1)
{
int num = Random.Range(1, 3);
if (num == 1)
{
Plugin.Subtitle("Hey, who's on fire now?");
Plugin.Play("fire1");
}
if (num == 2)
{
Plugin.Subtitle("Fire! Fire! Fire!");
Plugin.Play("fire2");
}
}
}
}
[HarmonyPatch(typeof(Punch), "ParryProjectile")]
public class Patch_ProjectileBoost
{
private static void Postfix(Projectile proj)
{
if (proj.boosted && !Plugin.audio.isPlaying && Random.Range(1, Plugin.projectileBoostChance.value + 1) == 1)
{
int num = Random.Range(1, 4);
if (num == 1)
{
Plugin.Subtitle("Hey, lotta' good that gun didya!");
Plugin.Play("boost1");
}
if (num == 2)
{
Plugin.Subtitle("You knuckleheads ain't even worth the effort.");
Plugin.Play("boost2");
}
if (num == 3)
{
Plugin.Subtitle("Say goodbye to ya kneecaps, chucklehead!");
Plugin.Play("boost3");
}
}
}
}
[HarmonyPatch(typeof(SandificationZone), "Enter")]
public class Patch_Sand
{
private static void Postfix()
{
if (!Plugin.audio.isPlaying && Random.Range(1, Plugin.sandChance.value + 1) == 1)
{
int num = Random.Range(1, 4);
if (num == 1)
{
Plugin.Subtitle("This did not just happen!");
Plugin.Play("sand1");
}
if (num == 2)
{
Plugin.Subtitle("'Kay this does not look good here, uhmm...");
Plugin.Play("sand2");
}
if (num == 3)
{
Plugin.Subtitle("We are screwed!");
Plugin.Play("sand3");
}
}
}
}
[HarmonyPatch(typeof(NewMovement), "HandleInputs")]
public class Patch_WallJump
{
private static int lastWallJumps;
private static void Postfix(NewMovement __instance)
{
int currentWallJumps = __instance.currentWallJumps;
if (currentWallJumps > lastWallJumps && !Plugin.audio.isPlaying && Random.Range(1, Plugin.wallJumpChance.value + 1) == 1)
{
int num = Random.Range(1, 4);
if (num == 1)
{
Plugin.Subtitle("Go go go!");
Plugin.Play("walljump1");
}
if (num == 2)
{
Plugin.Subtitle("Keep it movin', guys!");
Plugin.Play("walljump2");
}
if (num == 3)
{
Plugin.Subtitle("Wall climbin'! Yeah!");
Plugin.Play("walljump3");
}
}
lastWallJumps = currentWallJumps;
}
}
[HarmonyPatch(typeof(JumpPad), "OnTriggerEnter")]
public class Patch_JumpPad
{
private static void Postfix(Component other)
{
if (other.gameObject.CompareTag("Player") && !Plugin.audio.isPlaying && Random.Range(1, Plugin.jumpPadChance.value + 1) == 1)
{
int num = Random.Range(1, 4);
if (num == 1)
{
Plugin.Subtitle("Look at you chuckleheads down there!");
Plugin.Play("jumppad1");
}
if (num == 2)
{
Plugin.Subtitle("Hehey, I'm flyin'!");
Plugin.Play("jumppad2");
}
if (num == 3)
{
Plugin.Subtitle("Hey, I can see my base from here!");
Plugin.Play("jumppad3");
}
}
}
}
[HarmonyPatch(typeof(RocketLauncher), "ShootCannonball")]
public class Patch_Cannonball
{
private static void Postfix()
{
if (!Plugin.audio.isPlaying && Random.Range(1, Plugin.cannonballChance.value + 1) == 1)
{
int num = Random.Range(1, 4);
if (num == 1)
{
Plugin.Subtitle("Good catch, dummy!");
Plugin.Play("cannonball1");
}
if (num == 2)
{
Plugin.Subtitle("Play ball!");
Plugin.Play("cannonball2");
}
if (num == 3)
{
Plugin.Subtitle("Home freakin' run!");
Plugin.Play("cannonball3");
}
}
}
}
[HarmonyPatch(typeof(Grenade), "Explode")]
public class Patch_CoreNuke
{
private static void Prefix(ref bool super, ref float sizeMultiplier)
{
if (super && sizeMultiplier == 2f && !Plugin.audio.isPlaying)
{
int num = Random.Range(1, 4);
if (num == 1)
{
Plugin.Subtitle("Head bomb! Head bomb! Comin' through!");
Plugin.Play("nuke1");
}
if (num == 2)
{
Plugin.Subtitle("Bomb on my head! Bomb on my head!");
Plugin.Play("nuke2");
}
if (num == 3)
{
Plugin.Subtitle("Blow that up, cyclops.");
Plugin.Play("nuke3");
}
}
}
}
[HarmonyPatch(typeof(Shotgun), "ShootSinks")]
public class Patch_CoreEject
{
private static void Postfix()
{
if (!Plugin.audio.isPlaying && Random.Range(1, Plugin.coreEjectChance.value + 1) == 1)
{
int num = Random.Range(1, 4);
if (num == 1)
{
Plugin.Subtitle("Eat my dust!");
Plugin.Play("coreeject1");
}
if (num == 2)
{
Plugin.Subtitle("Let's get 'em!");
Plugin.Play("coreeject2");
}
if (num == 3)
{
Plugin.Subtitle("Let's waste 'em!");
Plugin.Play("coreeject3");
}
}
}
}
[HarmonyPatch(typeof(ItemIdentifier), "PickUp")]
public class Patch_Pickup
{
private static void Postfix()
{
if (!Plugin.audio.isPlaying && Random.Range(1, Plugin.pickupChance.value + 1) == 1)
{
int num = Random.Range(1, 4);
if (num == 1)
{
Plugin.Subtitle("Yeah.");
Plugin.Play("pickup1");
}
if (num == 2)
{
Plugin.Subtitle("Nice.");
Plugin.Play("pickup2");
}
if (num == 3)
{
Plugin.Subtitle("Haha, aw yeah.");
Plugin.Play("pickup3");
}
}
}
}
[HarmonyPatch(typeof(Railcannon), "OnEnable")]
public class Patch_Railcannon
{
private static float nextAllowedTime;
private const float COOLDOWN = 6f;
private static void Postfix()
{
if (!Plugin.audio.isPlaying && !(Time.time < nextAllowedTime) && Random.Range(1, Plugin.railSwitchChance.value + 1) == 1)
{
nextAllowedTime = Time.time + 6f;
int num = Random.Range(1, 4);
if (num == 1)
{
Plugin.Subtitle("Let's do dis.");
Plugin.Play("railcannon1");
}
if (num == 2)
{
Plugin.Subtitle("Bring it.");
Plugin.Play("railcannon2");
}
if (num == 3)
{
Plugin.Subtitle("Let's go.");
Plugin.Play("railcannon3");
}
}
}
}
[HarmonyPatch(typeof(ObjectActivator), "Activate", new Type[] { typeof(bool) })]
public class Patch_FakeExit81
{
private static bool alreadyFired;
private static void Postfix(ObjectActivator __instance)
{
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_003f: Unknown result type (might be due to invalid IL or missing references)
if (SceneHelper.CurrentScene != "Level 8-1")
{
alreadyFired = false;
}
else if (!alreadyFired)
{
string name = ((Object)((Component)__instance).gameObject).name;
string text = ((object)((Component)__instance).transform.position/*cast due to .constrained prefix*/).ToString();
if (name == "FakeExitOutsideMusicTrigger" && text == "(504.00, -913.50, 689.00)")
{
alreadyFired = true;
((MonoBehaviour)Plugin.me).StartCoroutine(FakeExit());
}
}
}
private static IEnumerator FakeExit()
{
Plugin.Subtitle("IT'S HAPPENING!");
Plugin.Play("fakeout1");
yield return (object)new WaitForSeconds(0.85f);
Plugin.Subtitle(" OH, GOD! IT'S HAPPENING!");
}
}
[HarmonyPatch(typeof(ObjectActivator), "Activate", new Type[] { typeof(bool) })]
public class Patch_SpaceyRoom
{
private static bool alreadyFired;
private static void Postfix(ObjectActivator __instance)
{
//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)
if (SceneHelper.CurrentScene != "Level 8-3")
{
alreadyFired = false;
}
else if (!alreadyFired && ((Object)((Component)__instance).gameObject).name == "GravityChanger" && ((object)((Component)__instance).transform.position/*cast due to .constrained prefix*/).ToString() == "(300.00, 40.00, 615.00)")
{
alreadyFired = true;
Plugin.Play("space1");
((MonoBehaviour)Plugin.me).StartCoroutine(SpaceLine1());
}
}
private static IEnumerator SpaceLine1()
{
yield return (object)new WaitForSeconds(3f);
Plugin.Subtitle("OH.");
yield return (object)new WaitForSeconds(0.57f);
Plugin.Subtitle("MY.");
yield return (object)new WaitForSeconds(0.43f);
Plugin.Subtitle("HOLY.");
yield return (object)new WaitForSeconds(0.6f);
Plugin.Subtitle("FREAKIN'.");
yield return (object)new WaitForSeconds(0.5f);
Plugin.Subtitle("STUPID.");
yield return (object)new WaitForSeconds(0.7f);
Plugin.Subtitle("CRAP!");
}
}
[HarmonyPatch(typeof(ObjectActivator), "Activate", new Type[] { typeof(bool) })]
public class Patch_FakeStartingRoom83
{
private static bool alreadyFired;
private static void Postfix(ObjectActivator __instance)
{
//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)
if (SceneHelper.CurrentScene != "Level 8-3")
{
alreadyFired = false;
}
else if (!alreadyFired && ((Object)((Component)__instance).gameObject).name == "False Starts" && ((object)((Component)__instance).transform.position/*cast due to .constrained prefix*/).ToString() == "(0.00, -10.00, 300.00)")
{
alreadyFired = true;
Plugin.Subtitle("What da hell's goin' on?");
Plugin.Play("8-3");
}
}
}
[HarmonyPatch(typeof(NewMovement), "Update")]
public class Patch_MirrorRoom82
{
private static bool insideLastFrame;
private static void Postfix(NewMovement __instance)
{
//IL_0026: Unknown result type (might be due to invalid IL or missing references)
//IL_002b: Unknown result type (might be due to invalid IL or missing references)
//IL_002c: 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_0046: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: 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)
if (SceneHelper.CurrentScene != "Level 8-2")
{
insideLastFrame = false;
return;
}
Vector3 position = ((Component)__instance).transform.position;
bool flag = position.x > 20f && position.x < 30f && position.y > 12f && position.y < 21f && position.z > 498f && position.z < 510f;
if (flag && !insideLastFrame)
{
Plugin.Subtitle("Oh man, that's beautiful.");
Plugin.Play("mirror1");
}
insideLastFrame = flag;
}
}
public static class ReaperState
{
public static bool armed;
}
[HarmonyPatch(typeof(BossHealthBar), "Awake")]
public class Patch_MirrorReaper_Arm
{
private static void Postfix(BossHealthBar __instance)
{
if (__instance.bossName == "MIRROR REAPER")
{
ReaperState.armed = true;
}
}
}
[HarmonyPatch(typeof(BossHealthBar), "OnEnable")]
public class Patch_MirrorReaper_Reveal
{
private static void Postfix(BossHealthBar __instance)
{
if (!(SceneHelper.CurrentScene != "Level 8-2") && !(__instance.bossName != "MIRROR REAPER") && ReaperState.armed)
{
ReaperState.armed = false;
Plugin.Subtitle("OH MY GOD, DAT IS ALMOST AS SCARY AS MY HAT!");
Plugin.Play("mirrorreaper1");
}
}
}
[HarmonyPatch(typeof(V2), "Start")]
public class Patch_V2Intro
{
private static void Postfix(V2 __instance)
{
if (__instance.inIntro)
{
((MonoBehaviour)Plugin.me).StartCoroutine(IntroLine());
}
}
private static IEnumerator IntroLine()
{
Plugin.Subtitle("You're like a car crash in slow motion,");
Plugin.Play("v2intro1");
yield return (object)new WaitForSeconds(2f);
Plugin.Subtitle("It's like I'm watchin' ya fly through a windshield.");
}
}
[HarmonyPatch(typeof(V2), "KnockedOut")]
public class Patch_V2CoinCheese
{
private static void Prefix(V2 __instance)
{
if (__instance.inIntro)
{
((MonoBehaviour)Plugin.me).StartCoroutine(CheeseLine());
}
}
private static IEnumerator CheeseLine()
{
Plugin.Subtitle("Yeah, I dare ya, rage quit.");
Plugin.Play("v2cheese1");
yield return (object)new WaitForSeconds(1.45f);
Plugin.Subtitle("C'mon make us both happy!");
}
}
[HarmonyPatch(typeof(Animator), "Play", new Type[]
{
typeof(string),
typeof(int),
typeof(float)
})]
public class Patch_V2GreenArm
{
private static void Postfix(Animator __instance)
{
if (!(((Object)((Component)__instance).gameObject).name != "v2_GreenArm") && !EncounterFlags.v2GreenArm)
{
EncounterFlags.v2GreenArm = true;
((MonoBehaviour)Plugin.me).StartCoroutine(GreenArmLine());
}
}
private static IEnumerator GreenArmLine()
{
Plugin.Subtitle("Hey, knucklehead, you ain't gonna win.");
Plugin.Play("v2intro2");
yield return (object)new WaitForSeconds(1.45f);
Plugin.Subtitle("This map ain't big enough for the two of us.");
}
}
[HarmonyPatch(typeof(V2), "InstaEnrage")]
public class Patch_V2Enrage
{
private static void Postfix(V2 __instance)
{
if (!EncounterFlags.v2Enrage)
{
EncounterFlags.v2Enrage = true;
((MonoBehaviour)Plugin.me).StartCoroutine(EnrageLine());
}
}
private static IEnumerator EnrageLine()
{
Plugin.Subtitle("Oh, what, you gonna cry?");
Plugin.Play("v2enrage1");
yield return (object)new WaitForSeconds(1f);
Plugin.Subtitle("You gonna cry now?");
}
}
[HarmonyPatch(typeof(WeaponPickUp), "GotActivated")]
public class Patch_V2ArmPickup
{
private static void Postfix(WeaponPickUp __instance)
{
if (((Object)__instance).name == "RedArmPickup" && SceneHelper.CurrentScene == "Level 1-4")
{
((MonoBehaviour)Plugin.me).StartCoroutine(KnuckleLine());
}
else if (((Object)__instance).name == "RedArmPickup" && SceneHelper.CurrentScene == "Level 4-4")
{
((MonoBehaviour)Plugin.me).StartCoroutine(WhiplashLine());
}
}
private static IEnumerator KnuckleLine()
{
Plugin.Subtitle("You.");
Plugin.Play("v2arm1");
yield return (object)new WaitForSeconds(0.65f);
Plugin.Subtitle("Are.");
yield return (object)new WaitForSeconds(0.65f);
Plugin.Subtitle("Terrible!");
}
private static IEnumerator WhiplashLine()
{
Plugin.Subtitle("Not so tough now, are ya?");
Plugin.Play("v2arm2");
yield return (object)new WaitForSeconds(1.4f);
Plugin.Subtitle("Are ya?!");
}
}
[HarmonyPatch(typeof(SlowMo), "OnEnable")]
public class Patch_V2Death
{
private static void Postfix(SlowMo __instance)
{
if (((Object)__instance).name == "ToActivate" && SceneHelper.CurrentScene == "Level 4-4")
{
Plugin.Subtitle("I am the Scout here!");
Plugin.Play("v2die1");
}
}
}
[HarmonyPatch(typeof(HudMessage), "PlayMessage")]
public class Patch_Maxor
{
private static void Postfix(ref string ___message)
{
if (___message == "You're not getting away this time.")
{
Plugin.Play("maxor1");
}
}
}
[HarmonyPatch(typeof(ObjectActivator), "Activate", new Type[] { typeof(bool) })]
public class Patch_EarthmoverIntro
{
private static void Postfix(ObjectActivator __instance)
{
if (!(((Object)((Component)__instance).gameObject).name != "Centaur Full") && !EncounterFlags.earthmoverIntro)
{
EncounterFlags.earthmoverIntro = true;
Plugin.Subtitle("ARE YOU FREAKIN' KIDDING ME?!");
Plugin.Play("earthmoverintro1");
}
}
}
[HarmonyPatch(typeof(AddStylePoints), "Activate")]
public class Patch_EarthmoverOutro
{
private static void Postfix(AddStylePoints __instance)
{
if (!(__instance.styleName != "RAISON D'ETRE"))
{
((MonoBehaviour)Plugin.me).StartCoroutine(EarthmoverOutro());
}
}
private static IEnumerator EarthmoverOutro()
{
Plugin.Subtitle("For the first time in my life...");
Plugin.Play("earthmoveroutro1");
yield return (object)new WaitForSeconds(2f);
Plugin.Subtitle("I'm at a loss for words.");
}
}
[HarmonyPatch(typeof(NewMovement), "Update")]
public class Patch_RocketRide
{
private static int lastRides;
private static void Postfix(NewMovement __instance)
{
int rocketRides = __instance.rocketRides;
if (rocketRides > lastRides && !Plugin.audio.isPlaying && Random.Range(1, Plugin.rocketRideChance.value + 1) == 1)
{
int num = Random.Range(1, 4);
if (num == 1)
{
Plugin.Subtitle("It's the witchin' hour, let's go!");
Plugin.Play("rocketride1");
}
if (num == 2)
{
Plugin.Subtitle("I AM A FREAKIN' WIZARD!");
Plugin.Play("rocketride2");
}
if (num == 3)
{
Plugin.Subtitle("I AM FULL OF FREAKIN' MAGIC!");
Plugin.Play("rocketride3");
}
}
lastRides = rocketRides;
}
}
[HarmonyPatch(typeof(ObjectActivator), "OnEnable")]
public class Patch_Cerberus
{
private static bool alreadyFired;
private static void Postfix(ObjectActivator __instance)
{
if (SceneHelper.CurrentScene != "Level 0-5")
{
alreadyFired = false;
}
else if (!alreadyFired && __instance.delay == 0f && !(((Object)((Component)__instance).gameObject).name != "Cube") && Object.op_Implicit((Object)(object)((Component)__instance).gameObject.GetComponent("ActivateArena")))
{
alreadyFired = true;
((MonoBehaviour)Plugin.me).StartCoroutine(CerberusLine());
}
}
private static IEnumerator CerberusLine()
{
Plugin.Subtitle("Hey, Houdini!");
Plugin.Play("cerberus1");
yield return (object)new WaitForSeconds(1.5f);
Plugin.Subtitle("Where ya hidin'?");
yield return (object)new WaitForSeconds(1.5f);
Plugin.Subtitle("Where da hell is that wizard?");
yield return (object)new WaitForSeconds(4f);
Plugin.Subtitle("Holy crap, you're even taller in person!");
yield return (object)new WaitForSeconds(2f);
Plugin.Subtitle("Is it too late to back out?");
}
}
[HarmonyPatch(typeof(SubtitledAudioSource), "OnEnable")]
public class Patch_GabrielIntro
{
private static void Postfix(SubtitledAudioSource __instance)
{
switch (((Object)((Component)__instance).gameObject).name)
{
case "gab_Intro1":
((MonoBehaviour)Plugin.me).StartCoroutine(GabIntro1());
break;
case "gab_Intro2":
((MonoBehaviour)Plugin.me).StartCoroutine(GabIntro2());
break;
case "gab_Intro3":
((MonoBehaviour)Plugin.me).StartCoroutine(GabIntro3());
break;
case "Speech":
if (!EncounterFlags.gabriel2Intro)
{
EncounterFlags.gabriel2Intro = true;
Plugin.Subtitle("Get out here, spellcakes!");
Plugin.Play("gabriel21");
}
break;
}
}
private static IEnumerator GabIntro1()
{
Plugin.Subtitle("Where you at, Merasmus?");
Plugin.Play("gabriel1");
yield return (object)new WaitForSeconds(1.5f);
Plugin.Subtitle("Calling you out, ya stupid wizard!");
}
private static IEnumerator GabIntro2()
{
Plugin.Subtitle("Nobody likes wizards, ya hear me?");
Plugin.Play("gabriel2");
yield return (object)new WaitForSeconds(2f);
Plugin.Subtitle("You're doomed to die alone!");
}
private static IEnumerator GabIntro3()
{
Plugin.Subtitle("I am gonna mess...");
Plugin.Play("gabriel3");
yield return (object)new WaitForSeconds(1f);
Plugin.Subtitle("you...");
yield return (object)new WaitForSeconds(0.4f);
Plugin.Subtitle("up!");
}
}
[HarmonyPatch(typeof(GabrielBase), "EnrageNow")]
public class Patch_GabrielEnrage
{
private static void Postfix(GabrielBase __instance)
{
if (SceneHelper.CurrentScene == "Level 3-2")
{
Plugin.Subtitle("Oh man! I am going to screw that wizard up!");
Plugin.Play("gabrieltaunt");
}
else if (SceneHelper.CurrentScene == "Level 6-2")
{
Plugin.Subtitle("Ya know what, you're not scary, you're just weird.");
Plugin.Play("gabriel22");
}
}
}
[HarmonyPatch(typeof(GabrielBase), "UnEnrage")]
public class Patch_GabrielUnenrage
{
private static void Postfix(GabrielBase __instance)
{
Plugin.Subtitle("I'm gonna cave your little ghost skull in, magic man!");
Plugin.Play("gabriel2taunt");
}
}
[HarmonyPatch(typeof(GabrielOutro), "Disappear")]
public class Patch_GabrielOutro
{
private static void Postfix()
{
((MonoBehaviour)Plugin.me).StartCoroutine(OutroLine());
}
private static IEnumerator OutroLine()
{
Plugin.Subtitle("Yeah, you better hide, you wand-wavin' moron!");
Plugin.Play("gabriel4");
yield return (object)new WaitForSeconds(0f);
}
}
[HarmonyPatch(typeof(ObjectActivator), "Activate", new Type[] { typeof(bool) })]
public class Patch_MinosHand
{
private static void Postfix(ObjectActivator __instance)
{
//IL_003e: 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)
if (!(SceneHelper.CurrentScene != "Level 2-4") && !EncounterFlags.minosHand && ((Object)((Component)__instance).gameObject).name == "BossActivator" && ((object)((Component)__instance).transform.position/*cast due to .constrained prefix*/).ToString() == "(142.50, 5.50, 702.50)")
{
EncounterFlags.minosHand = true;
Plugin.Play("minoshand1");
((MonoBehaviour)Plugin.me).StartCoroutine(MinosHand());
}
}
private static IEnumerator MinosHand()
{
yield return (object)new WaitForSeconds(7f);
Plugin.Subtitle("Don't look, scary hat!");
}
}
[HarmonyPatch(typeof(ObjectActivator), "Activate", new Type[] { typeof(bool) })]
public class Patch_MinosCorpse
{
private static void Postfix(ObjectActivator __instance)
{
//IL_003e: 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)
if (!(SceneHelper.CurrentScene != "Level 2-4") && !EncounterFlags.minosCorpse && ((Object)((Component)__instance).gameObject).name == "BlackHoleSpawnPos" && ((object)((Component)__instance).transform.position/*cast due to .constrained prefix*/).ToString() == "(457.00, 1.00, 570.00)")
{
EncounterFlags.minosCorpse = true;
((MonoBehaviour)Plugin.me).StartCoroutine(MinosCorpse());
}
}
private static IEnumerator MinosCorpse()
{
Plugin.Subtitle("AAAHHH!");
Plugin.Play("minoscorpse1");
yield return (object)new WaitForSeconds(0.8f);
Plugin.Subtitle("SAVE YOURSELF, SCARY HAT!");
}
}
[HarmonyPatch(typeof(ObjectActivator), "Activate", new Type[] { typeof(bool) })]
public class Patch_Intro11
{
private static void Postfix(ObjectActivator __instance)
{
//IL_003e: 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)
if (!(SceneHelper.CurrentScene != "Level 1-1") && !EncounterFlags.intro11 && ((Object)((Component)__instance).gameObject).name == "Cube (1)" && ((object)((Component)__instance).transform.position/*cast due to .constrained prefix*/).ToString() == "(0.00, 0.00, 296.50)")
{
EncounterFlags.intro11 = true;
Plugin.Subtitle("Oh! Dat is beautiful!");
Plugin.Play("intro11");
}
}
}
public static class WickedState
{
public static bool inWicked;
}
[HarmonyPatch(typeof(HudMessage), "PlayMessage")]
public class Patch_WickedMessages
{
private static void Postfix(ref string ___message)
{
if (___message == "Just kidding :)")
{
Plugin.Subtitle("You've got to be kidding me!");
Plugin.Play("wickedtroll1");
}
}
}
[HarmonyPatch(typeof(ObjectActivator), "Activate", new Type[] { typeof(bool) })]
public class Patch_WickedBlueSkull
{
private static bool cubeFired;
private static int soundCount;
private static void Postfix(ObjectActivator __instance)
{
if (SceneHelper.CurrentScene != "Level 0-S")
{
cubeFired = false;
soundCount = 0;
return;
}
string name = ((Object)((Component)__instance).gameObject).name;
if (name == "Cube (1)")
{
cubeFired = true;
soundCount = 0;
}
else if (cubeFired && name == "SoundActivator")
{
soundCount++;
if (soundCount == 2)
{
Plugin.Subtitle("Oh, dis ain't good...");
Plugin.Play("blueskullwicked1");
}
}
}
}
[HarmonyPatch(typeof(ObjectActivator), "Activate", new Type[] { typeof(bool) })]
public class Patch_WickedFinish
{
private static void Postfix(ObjectActivator __instance)
{
//IL_004c: Unknown result type (might be due to invalid IL or missing references)
//IL_0051: Unknown result type (might be due to invalid IL or missing references)
if (!(SceneHelper.CurrentScene != "Level 0-S") && WickedState.inWicked && !EncounterFlags.wickedFinish && ((Object)((Component)__instance).gameObject).name == "Cube" && ((object)((Component)__instance).transform.position/*cast due to .constrained prefix*/).ToString() == "(-56.60, -21.39, -5.92)")
{
EncounterFlags.wickedFinish = true;
((MonoBehaviour)Plugin.me).StartCoroutine(FinishWicked());
}
}
private static IEnumerator FinishWicked()
{
Plugin.Subtitle("We did it, scary hat.");
Plugin.Play("finishwicked1");
yield return (object)new WaitForSeconds(2f);
Plugin.Subtitle("We did it together.");
}
}
[HarmonyPatch(typeof(ObjectActivator), "Activate", new Type[] { typeof(bool) })]
public class Patch_PistolPickup
{
private static void Postfix(ObjectActivator __instance)
{
//IL_003e: 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)
if (!(SceneHelper.CurrentScene != "Level 0-1") && !EncounterFlags.pistolPickup && ((Object)((Component)__instance).gameObject).name == "TitleActivator" && ((object)((Component)__instance).transform.position/*cast due to .constrained prefix*/).ToString() == "(40.00, 13.00, 393.00)")
{
EncounterFlags.pistolPickup = true;
((MonoBehaviour)Plugin.me).StartCoroutine(RevolverPickup());
}
}
private static IEnumerator RevolverPickup()
{
Plugin.Subtitle("C'mon, bat.");
Plugin.Play("pistol1");
yield return (object)new WaitForSeconds(1.25f);
Plugin.Subtitle("Let's go introduce you to some skulls.");
}
}
[HarmonyPatch(typeof(WeaponPickUp), "GotActivated")]
public class Patch_WeaponPickups
{
private static void Postfix(WeaponPickUp __instance)
{
switch (((Object)__instance).name)
{
case "ShotgunPickUp":
Plugin.Subtitle("Come to daddy.");
Plugin.Play("shotgunpickup1");
break;
case "Weapon Pickup":
Plugin.Subtitle("Sweet!");
Plugin.Play("nailgunpickup1");
break;
case "Railcannon (1)":
((MonoBehaviour)Plugin.me).StartCoroutine(RailcannonLine());
break;
case "WeaponPickUp":
Plugin.Subtitle("Ooooh! Yeah!");
Plugin.Play("rocketpickup1");
break;
}
}
private static IEnumerator RailcannonLine()
{
Plugin.Subtitle("Oh, absolutely!");
Plugin.Play("railcannonpickup1");
yield return (object)new WaitForSeconds(1f);
Plugin.Subtitle("Abso-freakin-lutely!");
}
}
[HarmonyPatch(typeof(SlowMo), "OnEnable")]
public class Patch_V2SkullSlide
{
private static void Postfix(SlowMo __instance)
{
//IL_0027: Unknown result type (might be due to invalid IL or missing references)
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
if (!(SceneHelper.CurrentScene != "Level 1-4") && !EncounterFlags.v2SkullSlide && ((object)((Component)__instance).transform.position/*cast due to .constrained prefix*/).ToString() == "(0.00, -8.00, 507.00)")
{
EncounterFlags.v2SkullSlide = true;
((MonoBehaviour)Plugin.me).StartCoroutine(V2SlideIn());
}
}
private static IEnumerator V2SlideIn()
{
Plugin.Play("v2slide1");
yield return (object)new WaitForSeconds(0.5f);
Plugin.Subtitle("What the hell was that crap?");
}
}
public static class MaliciousFaceState
{
public static bool fightActive;
public static bool killHandled;
}
[HarmonyPatch(typeof(BossHealthBar), "OnEnable")]
public class Patch_MaliciousFace
{
private static void Postfix(BossHealthBar __instance)
{
if (!(__instance.bossName != "MALICIOUS FACE"))
{
MaliciousFaceState.fightActive = true;
MaliciousFaceState.killHandled = false;
Plugin.Subtitle("C'mon, tough guy!");
Plugin.Play("maliciousface1");
}
}
}
[HarmonyPatch(typeof(ActivateNextWave), "EndWaves")]
public class Patch_MaliciousFaceKill
{
private static void Postfix()
{
if (MaliciousFaceState.fightActive && !MaliciousFaceState.killHandled)
{
MaliciousFaceState.killHandled = true;
MaliciousFaceState.fightActive = false;
Plugin.Subtitle("I wasted you!");
Plugin.Play("maliciouskill1");
}
}
}
public static class SwordsmachineState
{
public static int barEnableCount;
public static bool fightActive;
public static bool killHandled;
}
[HarmonyPatch(typeof(ObjectActivator), "Activate", new Type[] { typeof(bool) })]
public class Patch_SwordsmachineIntro
{
private static void Postfix(ObjectActivator __instance)
{
//IL_003e: 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)
if (!(SceneHelper.CurrentScene != "Level 0-3") && !EncounterFlags.swordsIntro && ((Object)((Component)__instance).gameObject).name == "Cube" && ((object)((Component)__instance).transform.position/*cast due to .constrained prefix*/).ToString() == "(-94.50, -18.00, 413.00)")
{
EncounterFlags.swordsIntro = true;
Plugin.Subtitle("Ooooh yeah, you're real scary!");
Plugin.Play("swordsintro1");
}
}
}
[HarmonyPatch(typeof(ObjectActivator), "Activate", new Type[] { typeof(bool) })]
public class Patch_SwordsmachineFlee
{
private static void Postfix(ObjectActivator __instance)
{
//IL_003e: 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)
if (!(SceneHelper.CurrentScene != "Level 0-3") && !EncounterFlags.swordsFlee && ((Object)((Component)__instance).gameObject).name == "Cube" && ((object)((Component)__instance).transform.position/*cast due to .constrained prefix*/).ToString() == "(-88.00, -12.00, 413.00)")
{
EncounterFlags.swordsFlee = true;
Plugin.Subtitle("Wassamatter, y'freakin' stupid?");
Plugin.Play("swordsflee1");
}
}
}
[HarmonyPatch(typeof(BossHealthBar), "OnEnable")]
public class Patch_SwordsmachineReappear
{
private static void Postfix(BossHealthBar __instance)
{
if (!(__instance.bossName != "SWORDSMACHINE"))
{
SwordsmachineState.barEnableCount++;
SwordsmachineState.fightActive = true;
if (SwordsmachineState.barEnableCount == 2)
{
Plugin.Subtitle("Boom! I'm back, dummy!");
Plugin.Play("swordsreappear1");
}
}
}
}
[HarmonyPatch(typeof(ActivateNextWave), "EndWaves")]
public class Patch_SwordsmachineKill
{
private static void Postfix()
{
if (!(SceneHelper.CurrentScene != "Level 0-3") && SwordsmachineState.fightActive && !SwordsmachineState.killHandled)
{
SwordsmachineState.killHandled = true;
SwordsmachineState.fightActive = false;
Plugin.Subtitle("Don't you ever cross me again!");
Plugin.Play("swordskill1");
}
}
}
[HarmonyPatch(typeof(ObjectActivator), "Activate", new Type[] { typeof(bool) })]
public class Patch_Geryon84
{
private static void Postfix(ObjectActivator __instance)
{
//IL_002b: 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)
if (SceneHelper.CurrentScene != "Level 8-4")
{
return;
}
string name = ((Object)((Component)__instance).gameObject).name;
string text = ((object)((Component)__instance).transform.position/*cast due to .constrained prefix*/).ToString();
if (name == "MuffleController" && !EncounterFlags.geryonIntro)
{
EncounterFlags.geryonIntro = true;
Plugin.Subtitle("Wow!");
Plugin.Play("geryonintro1");
}
else if (name == "TeleporterDelay" && text == "(-28.50, 87.83, 63.25)" && !EncounterFlags.geryonElevator)
{
EncounterFlags.geryonElevator = true;
Plugin.Subtitle("Uh oh...");
Plugin.Play("geryonelevator1");
}
else if (name == "The Fall" && text == "(0.00, -10.00, -200.00)" && !EncounterFlags.geryonFall)
{
EncounterFlags.geryonFall = true;
if (Random.Range(1, 4) == 1)
{
((MonoBehaviour)Plugin.me).StartCoroutine(FallingLine());
return;
}
Plugin.Subtitle("(Screams of horror)");
Plugin.Play("geryonfall1");
}
else if (name == "GeryonIntro" && !EncounterFlags.geryonBoss)
{
EncounterFlags.geryonBoss = true;
((MonoBehaviour)Plugin.me).StartCoroutine(GeryonBoss());
}
else if (name == "RotationStarter" && !EncounterFlags.geryonPhase2)
{
EncounterFlags.geryonPhase2 = true;
((MonoBehaviour)Plugin.me).StartCoroutine(GeryonPhase2());
}
else if (name == "OutroDelay" && !EncounterFlags.geryonOutro)
{
EncounterFlags.geryonOutro = true;
Plugin.Subtitle("What?");
Plugin.Play("geryonoutro1");
}
else if (name == "PlayerReactivator" && !EncounterFlags.geryonReveal)
{
EncounterFlags.geryonReveal = true;
Plugin.Subtitle("'Bout time we got a little recognition around here!");
Plugin.Play("geryontheatre1");
}
}
private static IEnumerator FallingLine()
{
Plugin.Subtitle("(Screams of horror)");
Plugin.Play("geryonfall2");
yield return (object)new WaitForSeconds(2.7f);
Plugin.Subtitle("Holy crap, this goes on forever.");
}
private static IEnumerator GeryonBoss()
{
Plugin.Subtitle("Oh no! I knew dis would happen!");
Plugin.Play("geryonboss1");
yield return (object)new WaitForSeconds(2f);
Plugin.Subtitle("I FORESAW DIS!");
}
private static IEnumerator GeryonPhase2()
{
Plugin.Subtitle("IT'S TOO MUCH MAGIC!");
Plugin.Play("geryonphase2");
yield return (object)new WaitForSeconds(1.3f);
Plugin.Subtitle("IT'S TOO MUCH MAGIC!!!");
}
}
public static class HideousMassState
{
public static bool fightActive;
public static bool killHandled;
}
[HarmonyPatch(typeof(BossHealthBar), "OnEnable")]
public class Patch_HideousMass
{
private static void Postfix(BossHealthBar __instance)
{
if (!(__instance.bossName != "HIDEOUS MASS"))
{
HideousMassState.fightActive = true;
HideousMassState.killHandled = false;
Plugin.Subtitle("Auugghh!");
Plugin.Play("hideousintro1");
}
}
}
[HarmonyPatch(typeof(ActivateNextWave), "EndWaves")]
public class Patch_HideousMassKill
{
private static void Postfix()
{
if (!(SceneHelper.CurrentScene != "Level 1-3") && HideousMassState.fightActive && !HideousMassState.killHandled)
{
HideousMassState.killHandled = true;
HideousMassState.fightActive = false;
Plugin.Subtitle("Dude, you'd get a closed casket at the ugly cemetery.");
Plugin.Play("hideouskill1");
}
}
}
public static class MindflayerState
{
public static bool fightActive;
public static bool killHandled;
}
[HarmonyPatch(typeof(BossHealthBar), "OnEnable")]
public class Patch_Mindflayer
{
private static void Postfix(BossHealthBar __instance)
{
if (!(SceneHelper.CurrentScene != "Level 2-3") && !(__instance.bossName != "MINDFLAYER"))
{
MindflayerState.fightActive = true;
MindflayerState.killHandled = false;
((MonoBehaviour)Plugin.me).StartCoroutine(MindflayerIntro());
}
}
private static IEnumerator MindflayerIntro()
{
Plugin.Subtitle("Ppf, this guy's nothin'!");
Plugin.Play("mindflayerintro1");
yield return (object)new WaitForSeconds(1.7f);
Plugin.Subtitle("Can I get your autograph after this?");
yield return (object)new WaitForSeconds(2f);
Plugin.Subtitle("...As a joke, obviously.");
}
}
[HarmonyPatch(typeof(ActivateNextWave), "EndWaves")]
public class Patch_MindflayerKill
{
private static void Postfix()
{
if (!(SceneHelper.CurrentScene != "Level 2-3") && MindflayerState.fightActive && !MindflayerState.killHandled)
{
MindflayerState.killHandled = true;
MindflayerState.fightActive = false;
Plugin.Subtitle("You're all losers!");
Plugin.Play("mindflayerkill1");
}
}
}
public static class SisypheanState
{
public static bool fightActive;
public static bool killHandled;
}
[HarmonyPatch(typeof(BossHealthBar), "OnEnable")]
public class Patch_Sisyphean
{
private static void Postfix(BossHealthBar __instance)
{
if (!(SceneHelper.CurrentScene != "Level 4-2") && !(__instance.bossName != "SISYPHEAN INSURRECTIONIST"))
{
SisypheanState.fightActive = true;
SisypheanState.killHandled = false;
((MonoBehaviour)Plugin.me).StartCoroutine(SisypheanIntro());
}
}
private static IEnumerator SisypheanIntro()
{
Plugin.Subtitle("Hey, lard-fat!");
Plugin.Play("sisypheanintro1");
yield return (object)new WaitForSeconds(0.9f);
Plugin.Subtitle("Those hard arteries don't stop bullets, do they?");
}
}
[HarmonyPatch(typeof(ActivateNextWave), "EndWaves")]
public class Patch_SisypheanKill
{
private static void Postfix()
{
if (!(SceneHelper.CurrentScene != "Level 4-2") && SisypheanState.fightActive && !SisypheanState.killHandled)
{
SisypheanState.killHandled = true;
SisypheanState.fightActive = false;
((MonoBehaviour)Plugin.me).StartCoroutine(SisypheanKill());
}
}
private static IEnumerator SisypheanKill()
{
Plugin.Subtitle("Nice hustle, tons-a-fun!");
Plugin.Play("sisypheankill1");
yield return (object)new WaitForSeconds(1.25f);
Plugin.Subtitle("Next time, eat a salad!");
}
}
public static class FerrymanState
{
public static bool fightActive;
public static bool killHandled;
}
[HarmonyPatch(typeof(BossHealthBar), "OnEnable")]
public class Patch_Ferryman
{
private static void Postfix(BossHealthBar __instance)
{
if (!(SceneHelper.CurrentScene != "Level 5-2") && !(__instance.bossName != "FERRYMAN"))
{
FerrymanState.fightActive = true;
FerrymanState.killHandled = false;
((MonoBehaviour)Plugin.me).StartCoroutine(FerrymanIntro());
}
}
private static IEnumerator FerrymanIntro()
{
Plugin.Subtitle("Would you look at you?");
Plugin.Play("ferrymanintro1");
yield return (object)new WaitForSeconds(0.8f);
Plugin.Subtitle("I mean, look at you!");
}
}
[HarmonyPatch(typeof(ActivateNextWave), "EndWaves")]
public class Patch_FerrymanKill
{
private static void Postfix()
{
if (!(SceneHelper.CurrentScene != "Level 5-2") && FerrymanState.fightActive && !FerrymanState.killHandled)
{
FerrymanState.killHandled = true;
FerrymanState.fightActive = false;
Plugin.Subtitle("Don't bring a wrench to a gunfight!");
Plugin.Play("ferrymankill1");
}
}
}
[HarmonyPatch(typeof(StyleHUD), "GetLocalizedName")]
public class Patch_StyleIconoclasm
{
private static void Prefix(string id)
{
if (id != null && (id == "ultrakill.iconoclasm" || id == "ultrakill.heartbreak") && !Plugin.audio.isPlaying && Random.Range(1, Plugin.styleChance.value + 1) == 1)
{
Plugin.Subtitle("I broke your stupid crap, moron!");
Plugin.Play("iconoclasm1");
}
}
}
public static class LeviathanState
{
public static bool fightActive;
public static bool killHandled;
}
[HarmonyPatch(typeof(BossHealthBar), "OnEnable")]
public class Patch_Leviathan
{
private static void Postfix(BossHealthBar __instance)
{
if (!(SceneHelper.CurrentScene != "Level 5-4") && !(__instance.bossName != "LEVIATHAN"))
{
LeviathanState.fightActive = true;
LeviathanState.killHandled = false;
((MonoBehaviour)Plugin.me).StartCoroutine(LeviathanIntro());
}
}
private static IEnumerator LeviathanIntro()
{
Plugin.Subtitle("Man, every new person I meet is bigger thatn the last!");
Plugin.Play("leviathanintro1");
yield return (object)new WaitForSeconds(2.65f);
Plugin.Subtitle("What do they have you eatin'?");
}
}
[HarmonyPatch(typeof(ObjectActivator), "Activate", new Type[] { typeof(bool) })]
public class Patch_LeviathanPhase2
{
private static void Postfix(ObjectActivator __instance)
{
//IL_003e: 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)
if (!(SceneHelper.CurrentScene != "Level 5-4") && !EncounterFlags.leviathanPhase2 && ((Object)((Component)__instance).gameObject).name == "BoatExplode" && ((object)((Component)__instance).transform.position/*cast due to .constrained prefix*/).ToString() == "(640.50, 686.81, 522.29)")
{
EncounterFlags.leviathanPhase2 = true;
Plugin.Subtitle("Holy crap!");
Plugin.Play("leviathanphase2");
}
}
}
[HarmonyPatch(typeof(ObjectActivator), "Activate", new Type[] { typeof(bool) })]
public class Patch_LeviathanKill
{
private static void Postfix(ObjectActivator __instance)
{
//IL_003e: 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)
if (!(SceneHelper.CurrentScene != "Level 5-4") && !EncounterFlags.leviathanKill && ((Object)((Component)__instance).gameObject).name == "DeathSound" && ((object)((Component)__instance).transform.position/*cast due to .constrained prefix*/).ToString() == "(641.42, 680.44, 596.91)")
{
EncounterFlags.leviathanKill = true;
LeviathanState.fightActive = false;
((MonoBehaviour)Plugin.me).StartCoroutine(LeviathanKill());
}
}
private static IEnumerator LeviathanKill()
{
Plugin.Subtitle("I am owning you!");
Plugin.Play("leviathankill1");
yield return (object)new WaitForSeconds(1f);
Plugin.Subtitle("You fat bald fatty fat...");
yield return (object)new WaitForSeconds(1.5f);
Plugin.Subtitle("Fat fat!");
}
}
public static class MinotaurState
{
public static int barEnableCount;
}
[HarmonyPatch(typeof(BossHealthBar), "OnEnable")]
public class Patch_Minotaur
{
private static void Postfix(BossHealthBar __instance)
{
if (!(SceneHelper.CurrentScene != "Level 7-1") && __instance.bossName != null && __instance.bossName.Contains("MINOTAUR"))
{
MinotaurState.barEnableCount++;
if (MinotaurState.barEnableCount == 1)
{
Plugin.Subtitle("(Shrieks)");
Plugin.Play("minotaurintro1");
}
}
}
}
[HarmonyPatch(typeof(ObjectActivator), "Activate", new Type[] { typeof(bool) })]
public class Patch_MinotaurFakeKill
{
private static void Postfix(ObjectActivator __instance)
{
//IL_003e: 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)
if (!(SceneHelper.CurrentScene != "Level 7-1") && !EncounterFlags.minotaurFakeKill && ((Object)((Component)__instance).gameObject).name == "PlayerTeleported" && ((object)((Component)__instance).transform.position/*cast due to .constrained prefix*/).ToString() == "(-242.50, 0.00, 0.00)")
{
EncounterFlags.minotaurFakeKill = true;
Plugin.Subtitle("Nice work, scary hat.");
Plugin.Play("minotaurkill1");
}
}
}
[HarmonyPatch(typeof(ObjectActivator), "Activate", new Type[] { typeof(bool) })]
public class Patch_MinotaurPhase2
{
private static void Postfix(ObjectActivator __instance)
{
//IL_003e: 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)
if (!(SceneHelper.CurrentScene != "Level 7-1") && !EncounterFlags.minotaurPhase2 && ((Object)((Component)__instance).gameObject).name == "FightStart" && ((object)((Component)__instance).transform.position/*cast due to .constrained prefix*/).ToString() == "(-242.50, 120.00, -399.75)")
{
EncounterFlags.minotaurPhase2 = true;
((MonoBehaviour)Plugin.me).StartCoroutine(MinotaurPhase2());
}
}
private static IEnumerator MinotaurPhase2()
{
Plugin.Subtitle("AAH! SCARY HAT!");
Plugin.Play("minotaurphase2");
yield return (object)new WaitForSeconds(1.3f);
Plugin.Subtitle("THIS IS ALL YOUR FAULT!");
}
}
[HarmonyPatch(typeof(StyleHUD), "GetLocalizedName")]
public class Patch_StyleConductor
{
private static void Prefix(string id)
{
if (id != null && id == "<color=#00ffffff>CONDUCTOR</color>" && !Plugin.audio.isPlaying && Random.Range(1, Plugin.styleChance.value + 1) == 1)
{
int num = Random.Range(1, 4);
if (num == 1)
{
Plugin.Subtitle("So much magic!");
Plugin.Play("conductor1");
}
if (num == 2)
{
((MonoBehaviour)Plugin.me).StartCoroutine(Conduct2());
}
if (num == 3)
{
Plugin.Subtitle("I am the lord of all magic!");
Plugin.Play("conductor3");
}
}
}
private static IEnumerator Conduct2()
{
Plugin.Subtitle("I!");
Plugin.Play("conductor2");
yield return (object)new WaitForSeconds(0.75f);
Plugin.Subtitle("LOVE!");
yield return (object)new WaitForSeconds(0.75f);
Plugin.Subtitle("MAGIC!");
}
}
[HarmonyPatch(typeof(HookArm), "Update")]
public class Patch_WhiplashPull
{
private static bool wasPulling;
private static float nextAllowedTime;
private const float COOLDOWN = 5f;
private static void Postfix(HookArm __instance)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Invalid comparison between Unknown and I4
bool flag = (int)__instance.state == 3;
if (flag && !wasPulling && Time.time >= nextAllowedTime && !Plugin.audio.isPlaying && Random.Range(1, Plugin.whiplashChance.value + 1) == 1)
{
nextAllowedTime = Time.time + 5f;
if (Traverse.Create((object)__instance).Field("lightTarget").GetValue<bool>())
{
int num = Random.Range(1, 4);
if (num == 1)
{
Plugin.Subtitle("Would you kindly move ya ass to the freakin' point?");
Plugin.Play("whiplashpull1");
}
if (num == 2)
{
Plugin.Subtitle("Get over here and help me defend!");
Plugin.Play("whiplashpull2");
}
if (num == 3)
{
Plugin.Subtitle("How's the weather over there, dumbass? Get to the freakin' point!");
Plugin.Play("whiplashpull3");
}
}
else
{
int num2 = Random.Range(1, 4);
if (num2 == 1)
{
Plugin.Subtitle("Yo, incoming!");
Plugin.Play("whiplashself1");
}
if (num2 == 2)
{
Plugin.Subtitle("Incoming!");
Plugin.Play("whiplashself2");
}
if (num2 == 3)
{
Plugin.Subtitle("Incoming!");
Plugin.Play("whiplashself3");
}
}
}
wasPulling = flag;
}
}
[HarmonyPatch(typeof(ObjectActivator), "Activate", new Type[] { typeof(bool) })]
public class Patch_TramStop72
{
private static void Postfix(ObjectActivator __instance)
{
//IL_003e: 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)
if (!(SceneHelper.CurrentScene != "Level 7-2") && !EncounterFlags.tramStop72 && ((Object)((Component)__instance).gameObject).name == "Trigger" && ((object)((Component)__instance).transform.position/*cast due to .constrained prefix*/).ToString() == "(-218.50, 65.00, 836.50)")
{
EncounterFlags.tramStop72 = true;
Plugin.Subtitle("What da hell, who stopped pushin' the cart?!");
Plugin.Play("tramstop1");
}
}
}
[HarmonyPatch(typeof(StyleHUD), "GetLocalizedName")]
public class Patch_StyleMultikill
{
private static void Prefix(string id)
{
if (id != null && id == "ultrakill.multikill" && !Plugin.audio.isPlaying && Random.Range(1, Plugin.styleChance.value + 1) == 1)
{
int num = Random.Range(1, 9);
if (num == 1)
{
Plugin.Subtitle("That's what I'm talking about!");
Plugin.Play("multikill1");
}
if (num == 2)
{
Plugin.Subtitle("(Evil laughter)");
Plugin.Play("multikill2");
}
if (num == 3)
{
Plugin.Subtitle("(Happy laughter)");
Plugin.Play("multikill3");
}
if (num == 4)
{
Plugin.Subtitle("(Happy laughter)");
Plugin.Play("multikill4");
}
if (num == 5)
{
Plugin.Subtitle("(Happy laughter)");
Plugin.Play("multikill5");
}
if (num == 6)
{
((MonoBehaviour)Plugin.me).StartCoroutine(Multikill6());
}
if (num == 7)
{
Plugin.Subtitle("(Insufferable laughter)");
Plugin.Play("multikill7");
}
if (num == 8)
{
Plugin.Subtitle("You knuckleheads ain't even worth the effort!");
Plugin.Play("multikill8");
}
}
}
private static IEnumerator Multikill6()
{
Plugin.Subtitle("(Long laughter)");
Plugin.Play("multikill6");
yield return (object)new WaitForSeconds(4f);
Plugin.Subtitle("Yeah.");
yield return (object)new WaitForSeconds(1.1f);
Plugin.Subtitle("Yeah.");
}
}
[HarmonyPatch(typeof(ObjectActivator), "Activate", new Type[] { typeof(bool) })]
public class Patch_Heat0E
{
private static bool resistanceFired;
private static void Postfix(ObjectActivator __instance)
{
if (SceneHelper.CurrentScene != "Level 0-E")
{
resistanceFired = false;
return;
}
string name = ((Object)((Component)__instance).gameObject).name;
if (name == "Hot Stuff Activator" && !EncounterFlags.heatIntro)
{
EncounterFlags.heatIntro = true;
Plugin.Subtitle("Aw crap...");
Plugin.Play("heatup1");
}
else if (name == "Heat Resistance")
{
resistanceFired = true;
}
else if (name == "HeatActivation" && resistanceFired && !EncounterFlags.heatSpawnEnemies)
{
EncounterFlags.heatSpawnEnemies = true;
((MonoBehaviour)Plugin.me).StartCoroutine(Heatup2());
}
}
private static IEnumerator Heatup2()
{
Plugin.Subtitle("OH MY GOD!");
Plugin.Play("heatup2");
yield return (object)new WaitForSeconds(0.65f);
Plugin.Subtitle("OH MY GOD!");
yield return (object)new WaitForSeconds(0.54f);
Plugin.Subtitle("OH MY GOD!");
}
}
[HarmonyPatch(typeof(StyleHUD), "GetLocalizedName")]
public class Patch_StyleGuardBreak
{
private static void Prefix(string id)
{
if (id != null && id == "<color=green>GUARD BREAK</color>")
{
int num = Random.Range(1, 6);
if (num == 1)
{
((MonoBehaviour)Plugin.me).StartCoroutine(GuardBreak1());
}
if (num == 2)
{
Plugin.Subtitle("I got him!");
Plugin.Play("guardbreak2");
}
if (num == 3)
{
Plugin.Subtitle("Ooh, ya gonna die now!");
Plugin.Play("guardbreak3");
}
if (num == 4)
{
Plugin.Subtitle("You just got marked, muscle man!");
Plugin.Play("guardbreak4");
}
if (num == 5)
{
Plugin.Subtitle("I got him!");
Plugin.Play("guardbreak5");
}
}
}
private static IEnumerator GuardBreak1()
{
Plugin.Subtitle("YOU!");
Plugin.Play("guardbreak1");
yield return (object)new WaitForSeconds(0.38f);
Plugin.Subtitle("HAVE!");
yield return (object)new WaitForSeconds(0.4f);
Plugin.Subtitle("BEEN!");
yield return (object)new WaitForSeconds(0.4f);
Plugin.Subtitle("MARKED!");
}
}
[HarmonyPatch(typeof(FleshPrison), "Start")]
public class Patch_FleshIntro
{
private static void Postfix(FleshPrison __instance)
{
if (!__instance.altVersion)
{
Plugin.Subtitle("ARE YOU FREAKIN' KIDDING ME?!");
Plugin.Play("flesh1");
}
else
{
Plugin.Subtitle("WE TOILED IN GOD'S DOMAIN!");
Plugin.Play("flesh2");
}
}
}
[HarmonyPatch(typeof(MinosPrime), "Start")]
public class Patch_MinosPrimeIntro
{
private static void Postfix(MinosPrime __instance)
{
if (Traverse.Create((object)__instance).Field("bossVersion").GetValue<bool>())
{
Plugin.Subtitle("All right, let's do this!");
Plugin.Play("minosintro1");
}
}
}
[HarmonyPatch(typeof(SisyphusPrime), "Start")]
public class Patch_SisyphusPrimeIntro
{
private static void Postfix(SisyphusPrime __instance)
{
if (Traverse.Create((object)__instance).Field("bossVersion").GetValue<bool>())
{
((MonoBehaviour)Plugin.me).StartCoroutine(SisyIntro1());
}
}
private static IEnumerator SisyIntro1()
{
Plugin.Subtitle("Oh my god..!");
Plugin.Play("sisyintro1");
yield return (object)new WaitForSeconds(0.59f);
Plugin.Subtitle("OH MY GOD!");
yield return (object)new WaitForSeconds(0.467f);
Plugin.Subtitle("OH MY GOD!");
yield return (object)new WaitForSeconds(0.412f);
Plugin.Subtitle("IT'S SAXTON HALE!");
}
}
[HarmonyPatch(typeof(MinosPrime), "OutroEnd")]
public class Patch_MinosPrimeOutro
{
private static void Postfix(MinosPrime __instance)
{
if (Traverse.Create((object)__instance).Field("bossVersion").GetValue<bool>())
{
Plugin.Subtitle("Yeah, next time, try two eyes!");
Plugin.Play("minosoutro1");
}
}
}
[HarmonyPatch(typeof(SisyphusPrime), "OutroEnd")]
public class Patch_SisyphusPrimeOutro
{
private static void Postfix(SisyphusPrime __instance)
{
if (Traverse.Create((object)__instance).Field("bossVersion").GetValue<bool>())
{
((MonoBehaviour)Plugin.me).StartCoroutine(SisyphusOutroLine());
}
}
private static IEnumerator SisyphusOutroLine()
{
Plugin.Subtitle("Grass grows,");
Plugin.Play("sisyoutro1");
yield return (object)new WaitForSeconds(1.1f);
Plugin.Subtitle("Birds fly,");
yield return (object)new WaitForSeconds(0.8f);
Plugin.Subtitle("Sun shines...");
yield return (object)new WaitForSeconds(0.7f);
Plugin.Subtitle("And brotha,");
yield return (object)new WaitForSeconds(0.7f);
Plugin.Subtitle("We are da freakin' best!");
}
}
[HarmonyPatch(typeof(StyleHUD), "GetLocalizedName")]
public class Patch_StyleEnraged
{
private static void Prefix(string id)
{
if (id != null && id == "ultrakill.enraged" && !Plugin.audio.isPlaying && Random.Range(1, Plugin.styleChance.value + 1) == 1)
{
int num = Random.Range(1, 4);
if (num == 1)
{
Plugin.Subtitle("'Domination'. Look it up.");
Plugin.Play("enraged1");
}
if (num == 2)
{
Plugin.Subtitle("You're gettin' dominated, chucklehead!");
Plugin.Play("enraged2");
}
if (num == 3)
{
Plugin.Subtitle("Yeah, that's right!");
Plugin.Play("enraged3");
}
}
}
}
[HarmonyPatch(typeof(StatsManager), "GetFinalRank")]
public class Patch_LevelComplete
{
private static void Postfix(StatsManager __instance)
{
if (!Plugin.audio.isPlaying)
{
int num = Random.Range(1, 6);
if (num == 1)
{
Plugin.Subtitle("Hey, I was just gettin' started!");
Plugin.Play("finish1");
}
if (num == 2)
{
Plugin.Subtitle("Oh, we done already?");
Plugin.Play("finish2");
}
if (num == 3)
{
Plugin.Subtitle("We make it look easy!");
Plugin.Play("finish3");
}
if (num == 4)
{
Plugin.Subtitle("Yeah, boom! Dat's right!");
Plugin.Play("finish4");
}
if (num == 5)
{
Plugin.Subtitle("Dat is how you do it!");
Plugin.Play("finish5");
}
}
}
}
[HarmonyPatch(typeof(BossHealthBar), "OnEnable")]
public class Patch_CancerousRodent
{
private static void Postfix(BossHealthBar __instance)
{
if (!(SceneHelper.CurrentScene != "Level 1-2") && !(__instance.bossName != "CANCEROUS RODENT"))
{
((MonoBehaviour)Plugin.me).StartCoroutine(Rodent1());
}
}
private static IEnumerator Rodent1()
{
Plugin.Play("rodent1");
yield return (object)new WaitForSeconds(1f);
Plugin.Subtitle("...What?");
}
}
[HarmonyPatch(typeof(BossHealthBar), "OnEnable")]
public class Patch_VeryCancerousRodent
{
private static void Postfix(BossHealthBar __instance)
{
if (!(SceneHelper.CurrentScene != "Level 1-2") && !(__instance.bossName != "VERY CANCEROUS RODENT"))
{
Plugin.Subtitle("OH MY GOD!");
Plugin.Play("rodent2");
}
}
}
[HarmonyPatch(typeof(DualWield), "Start")]
public class Patch_DualWield
{
private static void Postfix()
{
if (!Plugin.audio.isPlaying)
{
int num = Random.Range(1, 4);
if (num == 1)
{
Plugin.Subtitle("SO MUCH MAGIC!");
Plugin.Play("dualwield1");
}
if (num == 2)
{
Plugin.Subtitle("NO! NO, IT'S TOO MUCH MAGIC!");
Plugin.Play("dualwield2");
}
if (num == 3)
{
Plugin.Subtitle("CAN'T. STOP. DA MASGIC!");
Plugin.Play("dualwield3");
}
}
}
}
}