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 Configgy;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using TMPro;
using UnityEngine;
using UnityEngine.SceneManagement;
[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 = "")]
[assembly: AssemblyCompany("V1YapperRework")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("V1YapperRework")]
[assembly: AssemblyTitle("V1YapperRework")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Embedded]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
internal sealed class NullableAttribute : Attribute
{
public readonly byte[] NullableFlags;
public NullableAttribute(byte P_0)
{
NullableFlags = new byte[1] { P_0 };
}
public NullableAttribute(byte[] P_0)
{
NullableFlags = P_0;
}
}
[CompilerGenerated]
[Embedded]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
internal sealed class NullableContextAttribute : Attribute
{
public readonly byte Flag;
public NullableContextAttribute(byte P_0)
{
Flag = P_0;
}
}
}
namespace V1Yapper
{
[BepInPlugin("arandomdumbass.ultrakill.v1yapper", "V1 Yapper", "2.0.0")]
public class Plugin : BaseUnityPlugin
{
[HarmonyPatch(typeof(NewMovement))]
[HarmonyPatch("Update")]
public static class DodgeCheck
{
public static void Prefix(NewMovement __instance)
{
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
if (!__instance.boost)
{
return;
}
Collider[] array = Physics.OverlapSphere(((Component)__instance).transform.position, 2f, -1, (QueryTriggerInteraction)2);
Collider[] array2 = array;
foreach (Collider val in array2)
{
if (!((Object)(object)((Component)val).transform.root == (Object)(object)((Component)__instance).transform.root) && ((((Object)((Component)val).gameObject).name.Contains("Projectile") && !((Component)val).GetComponent<Projectile>().friendly) || ((Object)((Component)val).gameObject).name.Contains("SwingCheck") || ((Object)((Component)val).gameObject).name.Contains("Explosion")))
{
if (Random.Range(1, ((ConfigValueElement<int>)(object)dodgechance).Value + 1) != 1)
{
break;
}
Yap("Dodge");
}
}
}
}
[HarmonyPatch(typeof(GroundCheck))]
[HarmonyPatch("OnTriggerEnter")]
public class Patch_Groundslam
{
private static void Prefix(GroundCheck __instance, ref Collider other)
{
if (__instance.heavyFall && Object.op_Implicit((Object)(object)((Component)other).gameObject.GetComponent<EnemyIdentifierIdentifier>()) && Random.Range(1, ((ConfigValueElement<int>)(object)slamchance).Value + 1) == 1)
{
Yap("Slam");
}
}
}
[HarmonyPatch(typeof(NewMovement))]
[HarmonyPatch("GetHurt")]
public class Patch_Hurt
{
private static void Postfix(NewMovement __instance, ref int damage)
{
if (__instance.dead && __instance.endlessMode)
{
Yap("CGDie");
}
else if (__instance.dead && !((ConfigValueElement<bool>)(object)deathtoggle).Value)
{
if (audio.isPlaying)
{
audio.Stop();
}
}
else
{
if (damage <= 0 || __instance.dead)
{
return;
}
if (__instance.hp < 26)
{
if (Random.Range(1, ((ConfigValueElement<int>)(object)injhurtchance).Value + 1) == 1)
{
Yap("InjHurt");
}
}
else if (Random.Range(1, ((ConfigValueElement<int>)(object)hurtchance).Value + 1) == 1)
{
Yap("Hurt");
}
}
}
}
[HarmonyPatch(typeof(DeathSequence))]
[HarmonyPatch("OnEnable")]
public class Patch_Die
{
private static void Postfix(DeathSequence __instance)
{
if (((ConfigValueElement<bool>)(object)deathtoggle).Value)
{
Speak("death.wav");
}
}
}
[HarmonyPatch(typeof(Punch))]
[HarmonyPatch("ForceHold")]
public class Patch_Pickup
{
private static void Postfix(Punch __instance, ref ItemIdentifier itid)
{
if (!((Object)itid).name.Contains("Book") && (!(SceneHelper.CurrentScene == "Level 7-1") || me.violencebeginskull))
{
if (((Object)itid).name.Contains("Crystal"))
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("Ghosty228reference"));
}
else if (((Object)itid).name.Contains("Florp"))
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("Florp"));
}
else
{
Yap("Pickup");
}
}
}
}
[HarmonyPatch(typeof(Punch))]
[HarmonyPatch("ForceThrow")]
public class Patch_FuckReading
{
private static void Prefix(Punch __instance)
{
if (((Object)__instance.heldItem).name.Contains("Book"))
{
Yap("BookThrow");
}
}
}
[HarmonyPatch(typeof(NewMovement))]
[HarmonyPatch("Parry")]
public class Patch_Parry
{
private static void Postfix(NewMovement __instance, ref string customParryText)
{
if (customParryText == "GUARD BREAK")
{
if (Random.Range(1, ((ConfigValueElement<int>)(object)guardbreakchance).Value + 1) == 1)
{
Yap("FuckYouGutterman");
}
}
else if (Random.Range(1, ((ConfigValueElement<int>)(object)parrychance).Value + 1) == 1)
{
Yap("Parry");
}
}
}
[HarmonyPatch(typeof(Punch))]
[HarmonyPatch("CoinFlip")]
public class Patch_Coinflip
{
private static void Postfix(Punch __instance)
{
if (Random.Range(1, ((ConfigValueElement<int>)(object)coinchance).Value + 1) == 1)
{
Yap("Coin");
}
}
}
[HarmonyPatch(typeof(Punch))]
[HarmonyPatch("ParryProjectile")]
public class Patch_Boost
{
private static void Postfix(Projectile proj)
{
if (proj.boosted && Random.Range(1, ((ConfigValueElement<int>)(object)pjbchance).Value + 1) == 1)
{
Yap("ProjBoost");
}
}
}
[HarmonyPatch(typeof(Shotgun))]
[HarmonyPatch("Pump", new Type[] { })]
public class Patch_Pump
{
private static void Postfix(Shotgun __instance)
{
if (Random.Range(1, ((ConfigValueElement<int>)(object)pumpchance).Value + 1) == 1)
{
Yap("Pump");
}
}
}
[HarmonyPatch(typeof(Shotgun))]
[HarmonyPatch("ShootSaw", new Type[] { })]
public class Patch_Saw
{
private static void Postfix(Shotgun __instance)
{
if (Random.Range(1, ((ConfigValueElement<int>)(object)sawchance).Value + 1) == 1)
{
Yap("Saw");
}
}
}
[HarmonyPatch(typeof(ShotgunHammer))]
[HarmonyPatch("Pump", new Type[] { })]
public class Patch_Pump2
{
private static void Postfix(ShotgunHammer __instance)
{
if (Random.Range(1, ((ConfigValueElement<int>)(object)pumpchance).Value + 1) == 1)
{
Yap("Pump");
}
}
}
[HarmonyPatch(typeof(ShotgunHammer))]
[HarmonyPatch("ShootSaw", new Type[] { })]
public class Patch_Saw2
{
private static void Postfix(ShotgunHammer __instance)
{
if (Random.Range(1, ((ConfigValueElement<int>)(object)sawchance).Value + 1) == 1)
{
Yap("Saw");
}
}
}
[HarmonyPatch(typeof(ShotgunHammer))]
[HarmonyPatch("Impact", new Type[] { })]
public class Patch_Impact
{
private static void Postfix(ShotgunHammer __instance)
{
if (Random.Range(1, ((ConfigValueElement<int>)(object)hammerchance).Value + 1) == 1)
{
Traverse val = Traverse.Create((object)__instance);
if (val.Field("tier").GetValue<int>() > 1)
{
Yap("FullImpact");
}
}
}
}
[HarmonyPatch(typeof(Railcannon))]
[HarmonyPatch("OnEnable", new Type[] { })]
public class Patch_Railcannon
{
private static void Postfix(Railcannon __instance)
{
if (Random.Range(1, ((ConfigValueElement<int>)(object)railchance).Value + 1) == 1)
{
Yap("Railcannon");
}
}
}
[HarmonyPatch(typeof(RocketLauncher))]
[HarmonyPatch("FreezeRockets")]
public class Patch_RLFreeze
{
private static void Postfix(RocketLauncher __instance)
{
if (Random.Range(1, ((ConfigValueElement<int>)(object)freezechance).Value + 1) == 1)
{
Yap("Freeze");
}
}
}
[HarmonyPatch(typeof(RocketLauncher))]
[HarmonyPatch("UnfreezeRockets")]
public class Patch_RLUnFreeze
{
private static void Postfix(RocketLauncher __instance)
{
if (Random.Range(1, ((ConfigValueElement<int>)(object)freezechance).Value + 1) == 1)
{
Yap("Unfreeze");
}
}
}
[HarmonyPatch(typeof(RocketLauncher))]
[HarmonyPatch("ShootCannonball")]
public class Patch_RLCannonball
{
private static void Postfix(RocketLauncher __instance)
{
if (Random.Range(1, ((ConfigValueElement<int>)(object)srschance).Value + 1) == 1)
{
Yap("Ball");
}
}
}
[HarmonyPatch(typeof(HookArm))]
[HarmonyPatch("Update")]
public class Patch_Hook
{
private static void Prefix(HookArm __instance)
{
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_000f: Invalid comparison between Unknown and I4
//IL_0088: Unknown result type (might be due to invalid IL or missing references)
//IL_008e: Invalid comparison between Unknown and I4
Traverse val = Traverse.Create((object)__instance);
if ((int)__instance.state == 3 && me.beforepull)
{
me.beforepull = false;
if (Random.Range(1, ((ConfigValueElement<int>)(object)whiplashchance).Value + 1) == 1)
{
if (val.Field("lightTarget").GetValue().Equals(true))
{
Yap("WhiplashEnemyPull");
}
else
{
Yap("WhiplashV1Pull");
}
}
}
else if ((int)__instance.state != 3)
{
me.beforepull = true;
}
}
}
[HarmonyPatch(typeof(ActivateNextWave))]
[HarmonyPatch("EndWaves")]
public class Patch_WaveComplete
{
private static void Postfix(ActivateNextWave __instance)
{
if (Random.Range(1, ((ConfigValueElement<int>)(object)arenachance).Value + 1) == 1)
{
Yap("ArenaEnd");
}
}
}
[HarmonyPatch(typeof(StyleHUD))]
[HarmonyPatch("AscendRank")]
public class Patch_ULTRAKILL
{
private static void Postfix(StyleHUD __instance)
{
if (__instance.rankIndex == 7)
{
Yap("ULTRAKILL");
}
}
}
[HarmonyPatch(typeof(V2))]
[HarmonyPatch("Start")]
public class Patch_V2Start
{
private static void Postfix(V2 __instance)
{
if (SceneHelper.CurrentScene == "Level 1-4" && __instance.longIntro)
{
Speak("v2bustwindow.wav");
Subtitle("What the!?");
}
}
}
[HarmonyPatch(typeof(V2))]
[HarmonyPatch("KnockedOut")]
public class Patch_V2Knockdown
{
private static void Postfix(V2 __instance)
{
if (SceneHelper.CurrentScene == "Level 1-4")
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("V2Knockdown"));
}
}
}
[HarmonyPatch(typeof(MassAnimationReceiver))]
[HarmonyPatch("GroundBreak")]
public class Patch_Swordsmachine
{
private static void Postfix(MassAnimationReceiver __instance)
{
if (SceneHelper.CurrentScene == "Level 0-3" && !(((Object)__instance).name != "Swordsmachine_New"))
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("SMEncounter"));
}
}
}
[HarmonyPatch(typeof(GabrielBase))]
[HarmonyPatch("EnrageNow")]
public class Patch_GabEnrage
{
private static void Postfix(GabrielBase __instance)
{
if (SceneHelper.CurrentScene == "Level 3-2")
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("GabEnrage"));
}
if (SceneHelper.CurrentScene == "Level 6-2")
{
Speak("angrygabeboss.wav");
Subtitle("Oh so now we're getting serious huh?");
}
}
}
[HarmonyPatch(typeof(GabrielBase))]
[HarmonyPatch("UnEnrage")]
public class Patch_GabUnEnrage
{
private static void Postfix(GabrielBase __instance)
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("GabUnEnrage"));
}
}
[HarmonyPatch(typeof(AddStylePoints))]
[HarmonyPatch("Activate")]
public class Patch_Style
{
private static void Postfix(AddStylePoints __instance)
{
if (__instance.styleName == "RAISON D'ETRE")
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("Aurevoir"));
}
}
}
[HarmonyPatch(typeof(BossHealthBar))]
[HarmonyPatch("Start")]
public class Patch_BossReaction
{
private static void Postfix(BossHealthBar __instance)
{
if (me.bossnorepeat || __instance.bossName == "SWORDSMACHINE" || __instance.bossName == "GABRIEL, THE APOSTATE OF HATE")
{
return;
}
if (audio.isPlaying)
{
audio.Stop();
}
if (__instance.bossName == "MALICIOUS FACE")
{
Speak("mauriceboss.wav");
Subtitle("What are you looking at rock face?");
}
else if (__instance.bossName == "CERBERUS" || __instance.bossName == "CERBERUS, GUARDIAN OF HELL" || __instance.bossName == "RADIANT CERBERUS, GUARDIAN OF HELL")
{
if (!me.second)
{
Speak("cerberusboss.wav");
Subtitle("Seriously!? More moving cobblestone?");
me.second = true;
}
else
{
Speak("cerberus2ndboss.wav");
Subtitle("There's two of you now!?");
}
}
else if (__instance.bossName == "HIDEOUS MASS" && !me.second)
{
if (SceneHelper.CurrentScene == "Level 6-1")
{
me.second = true;
Speak("hideousmass6-1.wav");
Subtitle("In the name of human-made machinery: Holy shit!");
}
else
{
Speak("hideousmassboss.wav");
Subtitle("What a horrific thing, time to put it out of it's misery");
}
}
else if (__instance.bossName == "V2")
{
if (SceneHelper.CurrentScene == "Level 1-4")
{
((MonoBehaviour)me).StartCoroutine(V2React());
return;
}
Speak("v22boss.wav");
Subtitle("I wont be holding back this time");
me.bossnorepeat = true;
}
else if (__instance.bossName == "THE CORPSE OF KING MINOS")
{
Speak("corpseboss.wav");
Subtitle("Oh, hello there");
}
else if (__instance.bossName == "MINDFLAYER")
{
Speak("mindflayerboss.wav");
Subtitle("What a waste of resources you have");
}
else if (__instance.bossName == "SISYPHEAN INSURRECTIONIST")
{
Speak("insurrectionistboss.wav");
Subtitle("You need a doctor, too bad I'm the opposite of that");
}
else if (__instance.bossName == "FERRYMAN")
{
((MonoBehaviour)me).StartCoroutine(FerryReact());
}
else if (__instance.bossName == "LEVIATHAN")
{
((MonoBehaviour)me).StartCoroutine(LeviReact());
}
else if (__instance.bossName == "VERY CANCEROUS RODENT")
{
Speak("verycancerrodentboss.wav");
Subtitle("Excuse me what the fuck is this");
}
else if (__instance.bossName == "<s>MINOTAUR")
{
if (!me.second)
{
Speak("minotaurboss.wav");
Subtitle("Oh that's some bullshit right there.");
me.second = true;
}
else
{
Speak("minotaurphase2.wav");
Subtitle("This stupid bovine AGAIN!?");
}
}
else if (__instance.bossName == "1000-THR \"EARTHMOVER\"")
{
me.bossnorepeat = true;
((MonoBehaviour)me).StartCoroutine(EarthmoverReact());
}
else if (__instance.bossName == "GUTTERMAN")
{
Speak("guttermanboss.wav");
Subtitle("Oh come on I was enjoying the view of this interior. Piss off");
}
else if (__instance.bossName == "POWER \"MANADEL\"" || __instance.bossName == "POWER")
{
me.bossnorepeat = true;
Speak("powerboss.wav");
Subtitle("Who the hell are you!? What the hell is going on!?");
}
else if (__instance.bossName == "MIRROR REAPER")
{
Speak("mirrorreaperboss.wav");
Subtitle("What, Who, Where, How!?");
}
else if (__instance.bossName == "GERYON, WATCHER OF THE SKIES")
{
Speak("geryonboss.wav");
Subtitle("As if I thought my victim's couldn't get more hideous");
}
else if (__instance.bossName == "GABRIEL, JUDGE OF HELL")
{
Speak("gabrielboss.wav");
Subtitle("Angel blood, neat");
}
else if (__instance.bossName == "FLESH PRISON")
{
Speak("flesh1boss.wav");
Subtitle("WHAT IN THE HELL IS THAT THING!?");
}
else if (__instance.bossName == "FLESH PRISON")
{
Speak("flesh1boss.wav");
Subtitle("What in the HELL is THAT!?");
}
else if (__instance.bossName == "FLESH PANOPTICON")
{
Speak("flesh2boss.wav");
Subtitle("Oh good heavens: What the HELL!?");
}
else if (__instance.bossName == "MINOS PRIME")
{
Speak("minosprimeboss.wav");
Subtitle("And it shall be your punishment aswell");
}
else if (__instance.bossName == "SISYPHUS PRIME")
{
Speak("sisyphusprimeboss.wav");
Subtitle("Oh goodness I think I'm fucked!");
}
else if (!(__instance.bossName == "V2") && !(__instance.bossName == "CERBERUS, GUARDIAN OF HELL") && !(__instance.bossName == "POWER \"LEHAHIAH\"") && !(__instance.bossName == "POWER \"CHAUAKIAH\"") && !(SceneHelper.CurrentScene == "Level 1-E"))
{
Speak("unknownboss.wav");
Subtitle("This... doesn't seem right at all");
}
}
private static IEnumerator V2React()
{
yield return (object)new WaitForSeconds(0.5f);
Speak("v2boss.wav");
Subtitle("Oh fuck you");
yield return (object)new WaitForSeconds(1.15f);
Subtitle("Just because your me with a better upgrade doesn't mean you can overpower me");
yield return (object)new WaitForSeconds(5.25f);
Subtitle("Let me show you a example, you imposter!");
}
private static IEnumerator LeviReact()
{
yield return (object)new WaitForSeconds(1f);
Speak("leviathanboss.wav");
Subtitle("Well, here comes the water snake");
}
private static IEnumerator FerryReact()
{
Speak("ferrymanboss.wav");
Subtitle("Oh, not letting me pass for that piece of marble, huh?");
yield return (object)new WaitForSeconds(3.4f);
Subtitle("Brute force it is!");
}
private static IEnumerator EarthmoverReact()
{
yield return (object)new WaitForSeconds(0.15f);
Speak("earthmoverboss.wav");
Subtitle("<color=yellow>OVERRIDING PREVIOUS OBJECTIVE: DESTROY THE MOVER</color>");
yield return (object)new WaitForSeconds(3.1f);
Subtitle("And it was about time.");
}
}
[HarmonyPatch(typeof(HudMessage))]
[HarmonyPatch("PlayMessage", new Type[] { typeof(bool) })]
public class Patch_MessageTrigger
{
private static void Prefix(HudMessage __instance)
{
if (__instance.message.Contains("You're not getting away this time."))
{
Speak("v2escape.wav");
}
}
}
[HarmonyPatch(typeof(Subtitle))]
[HarmonyPatch("OnEnable")]
public class Patch_SubtitleTrigger
{
private static void Postfix(HudMessage __instance)
{
Traverse val = Traverse.Create((object)__instance);
if (val.Field("uiText").GetValue<TMP_Text>().text == "Machine" && SceneHelper.CurrentScene == "Level 3-2")
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("GabIntro1"));
}
if (val.Field("uiText").GetValue<TMP_Text>().text.Contains("Turn back or you will be crossing the will of God"))
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("GabIntro2"));
}
if (val.Field("uiText").GetValue<TMP_Text>().text.Contains("And you will become inanimate once more"))
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("GabIntro3"));
}
if (val.Field("uiText").GetValue<TMP_Text>().text.Contains("WHERE IS HE!?"))
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("Power"));
}
}
}
[HarmonyPatch(typeof(GabrielOutro))]
[HarmonyPatch("Disappear")]
public class Patch_Gab1Outro
{
private static void Postfix(GabrielIntro __instance)
{
if (SceneHelper.CurrentScene == "Level 3-2")
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("Soda"));
}
if (SceneHelper.CurrentScene == "Level 6-2")
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("Ouch"));
}
}
}
[HarmonyPatch(typeof(ObjectActivator))]
[HarmonyPatch("Activate", new Type[] { typeof(bool) })]
public class Patch_ObjectActivatorPrefix
{
private static void Prefix(ObjectActivator __instance)
{
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
if (((object)((Component)__instance).gameObject.transform.position/*cast due to .constrained prefix*/).ToString() == "(-61.00, 17.75, 268.00)" && SceneHelper.CurrentScene == "Level P-2" && !__instance.activated)
{
Speak("weezerjumpscare.wav");
Subtitle("Hey! I'm not here for your stupid band and your stupid blue album!");
}
}
}
[HarmonyPatch(typeof(ObjectActivator))]
[HarmonyPatch("Activate", new Type[] { typeof(bool) })]
public class Patch_ObjectActivator
{
private static void Postfix(ObjectActivator __instance)
{
if (((Object)((Component)__instance).gameObject).name == "End" && SceneHelper.CurrentScene == "Level 0-E")
{
Speak("evilheatend.wav");
Subtitle("Thank god, it's over");
me.evilheat = false;
}
if (((Object)((Component)__instance).gameObject).name == "SM Attack Point")
{
Speak("swordsmachinekillsteal.wav");
Subtitle("Wha... Who the hell...");
}
if (((Object)((Component)__instance).gameObject).name == "CountdownActivator")
{
Speak("earthmoverescape.wav");
Subtitle("Time to get out and finish this");
}
if (((Object)((Component)__instance).gameObject).name == "FlashLightDelay")
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("Flashlight"));
}
if (((Object)((Component)__instance).gameObject).name == "RedSkullPickedUp" && SceneHelper.CurrentScene == "Level 7-1")
{
Speak("pickup7-1.wav");
Subtitle("I... don't feel good about this one");
me.violencebeginskull = true;
}
if (((Object)((Component)__instance).gameObject).name == "LevelMusicStart")
{
me.violencebeginskull = true;
}
if (((Object)((Component)__instance).gameObject).name == "RevolverPickUp")
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("ULTRAKILLTime"));
}
if (((Object)((Component)__instance).gameObject).name == "Target" && SceneHelper.CurrentScene == "Level 1-4")
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("V2ohshit"));
}
if (((Object)((Component)__instance).gameObject).name == "Impact" && SceneHelper.CurrentScene == "Level 8-4")
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("Faked"));
}
}
}
[HarmonyPatch(typeof(PlayOnAwakeTracker))]
[HarmonyPatch("OnEnable")]
public class Patch_PlayOnAwakeTracker
{
private static void Postfix(PlayOnAwakeTracker __instance)
{
if (((Object)((Component)__instance).gameObject).name.Contains("DashJumpSound"))
{
Yap("DashJump");
}
if (((Object)((Component)__instance).gameObject).name == "ArmMusic")
{
Speak("corpsehandboss.wav");
Subtitle("Hey stop it! I'm not giving you five!");
}
if (((Object)((Component)__instance).gameObject).name == "AlarmLight" && SceneHelper.CurrentScene == "Level 0-2")
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("Number1SwordsmachineHater"));
}
if (((Object)((Component)__instance).gameObject).name.Contains("Main Music") && SceneHelper.CurrentScene == "Level 8-4" && !me.stoprepeatingohmygod)
{
me.stoprepeatingohmygod = true;
Speak("freefall.wav");
Subtitle("Uh oh...");
}
}
}
[HarmonyPatch(typeof(HeatResistance))]
[HarmonyPatch("OnEnable")]
public class Patch_HeatResistance
{
private static void Postfix(HeatResistance __instance)
{
if (audio.isPlaying)
{
audio.Stop();
}
Speak("eek.wav");
Subtitle("EEK!");
me.evilheat = true;
}
}
[HarmonyPatch(typeof(EnemySpawnRadius))]
[HarmonyPatch("SpawnEnemy")]
public class Patch_FEEDIT
{
private static void Postfix(EnemySpawnRadius __instance)
{
if (SceneHelper.CurrentScene == "Level 7-3" && !me.firstspawnedenemy)
{
me.firstspawnedenemy = true;
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("FEEDIT"));
}
}
}
[HarmonyPatch(typeof(FinalPit))]
[HarmonyPatch("OnTriggerEnter")]
public class Patch_FinalPit
{
private static void Postfix(FinalPit __instance, ref Collider other)
{
Traverse val = Traverse.Create((object)__instance);
if (((Component)other).gameObject == val.Field("player").GetValue() && Object.op_Implicit((Object)(object)MonoSingleton<NewMovement>.Instance) && MonoSingleton<NewMovement>.Instance.hp > 0)
{
if (SceneHelper.CurrentScene == "Level 8-4")
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("8-4"));
}
if (SceneHelper.CurrentScene == "Level 7-4")
{
Speak("7-4end.wav");
Subtitle("<color=yellow>RESTORING PREVIOUS OBJECTIVE</color>");
}
}
}
}
[HarmonyPatch(typeof(FinalDoor))]
[HarmonyPatch("OpenDoors")]
public class Patch_FinalDoor
{
private static void Postfix(FinalPit __instance)
{
if (!me.firstfinaldoor)
{
me.firstfinaldoor = true;
if (SceneHelper.CurrentScene == "Level 4-3" || SceneHelper.CurrentScene == "Level 7-3" || SceneHelper.CurrentScene == "Level P-1" || SceneHelper.CurrentScene == "Level 0-S" || SceneHelper.CurrentScene == "Level P-1")
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("Dark"));
}
if (SceneHelper.CurrentScene == "Level 6-2")
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("AngryGabIntro"));
}
}
}
}
[HarmonyPatch(typeof(Animator))]
[HarmonyPatch("Play", new Type[]
{
typeof(string),
typeof(int),
typeof(float)
})]
public class Patch_V2Anim
{
private static void Postfix(Animator __instance)
{
if (SceneHelper.CurrentScene == "Level 4-4" && !(((Object)((Component)__instance).gameObject).name != "v2_GreenArm") && !me.specificvariablesothatv1doesnotrepeathimself)
{
Speak("v22.wav");
Subtitle("Not you again...");
me.specificvariablesothatv1doesnotrepeathimself = true;
}
}
}
[HarmonyPatch(typeof(V2))]
[HarmonyPatch("InstaEnrage")]
public class Patch_FuckYouV2
{
private static void Postfix(V2 __instance)
{
if (!audio.isPlaying && !me.stoprepeatingohmygod)
{
me.stoprepeatingohmygod = true;
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("STOPHITTINGYOURSELF"));
}
}
}
[HarmonyPatch(typeof(SlowMo))]
[HarmonyPatch("OnEnable")]
public class Patch_ReconstructWHAT
{
private static void Postfix(SlowMo __instance)
{
if (((Object)__instance).name == "ToActivate" && SceneHelper.CurrentScene == "Level 4-4")
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("AssertDominance"));
}
}
}
[HarmonyPatch(typeof(MinosPrime))]
[HarmonyPatch("OutroEnd")]
public class Patch_MPOutro
{
private static void Postfix(MinosPrime __instance)
{
Traverse val = Traverse.Create((object)__instance);
if (!val.Field("bossVersion").GetValue().Equals(false))
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("MinosPrime"));
}
}
}
[HarmonyPatch(typeof(SisyphusPrime))]
[HarmonyPatch("OutroEnd")]
public class Patch_SPOutro
{
private static void Postfix(SisyphusPrime __instance)
{
Traverse val = Traverse.Create((object)__instance);
if (!val.Field("bossVersion").GetValue().Equals(false))
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("SisyphusPrime"));
}
}
}
[HarmonyPatch(typeof(EnemyIdentifier))]
[HarmonyPatch("StartBurning")]
public class Patch_Fire
{
private static void Postfix(EnemyIdentifier __instance)
{
Traverse val = Traverse.Create((object)__instance);
foreach (Flammable flammable in __instance.flammables)
{
Yap("Burn");
}
}
}
[HarmonyPatch(typeof(SandificationZone))]
[HarmonyPatch("Enter")]
public class Patch_Sand
{
private static void Postfix(SandificationZone __instance)
{
Yap("Sand");
}
}
[HarmonyPatch(typeof(HellMap))]
[HarmonyPatch("Start")]
public class Patch_LevelEnter
{
private static void Postfix(HellMap __instance)
{
if (SceneHelper.CurrentScene == "uk_construct" || SceneHelper.CurrentScene == "Level 0-S" || SceneHelper.CurrentScene == "Level 1-S" || SceneHelper.CurrentScene == "Level 4-S" || SceneHelper.CurrentScene == "Level 5-S" || SceneHelper.CurrentScene == "Level 7-S" || SceneHelper.CurrentScene == "Level 8-S")
{
Speak("secretlevel.wav");
Subtitle("Lets take a look");
}
else if (SceneHelper.CurrentScene == "Endless")
{
if (!me.wasincybergrindbefore)
{
Yap("Cybergrind");
me.wasincybergrindbefore = true;
}
else
{
Speak("descendcgrestart.wav");
Subtitle("Let's run that back");
me.wasincybergrindbefore = true;
}
}
else
{
Yap("NewLevel");
}
}
}
[HarmonyPatch(typeof(LevelNameActivator))]
[HarmonyPatch("Start")]
public class Patch_LevelName
{
private static void Postfix(LevelNameActivator __instance)
{
if (SceneHelper.CurrentScene == "Level 1-1")
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("Limbo"));
}
if (SceneHelper.CurrentScene == "Level 1-2")
{
Speak("theburningworld.wav");
Subtitle("Woah, uh, someone really cleaned this place up");
}
if (SceneHelper.CurrentScene == "Level 8-3")
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("wtf"));
}
}
}
[HarmonyPatch(typeof(MenuEsc))]
[HarmonyPatch("OnDisable")]
public class Patch_Tutorial
{
private static void Postfix(MenuEsc __instance)
{
if (!(SceneHelper.CurrentScene != "Tutorial"))
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("Tutorial"));
}
}
}
[HarmonyPatch(typeof(EndlessGrid))]
[HarmonyPatch("NextWave")]
public class Patch_CGWave
{
private static void Postfix(EndlessGrid __instance)
{
if (__instance.startWave != __instance.currentWave && Random.Range(1, ((ConfigValueElement<int>)(object)arenachance).Value + 1) == 1)
{
Yap("CGWaveEnd");
}
}
}
[HarmonyPatch(typeof(WeaponPickUp))]
[HarmonyPatch("GotActivated")]
public class Patch_WeaponPickups
{
private static void Postfix(WeaponPickUp __instance)
{
if (((Object)__instance).name == "RedArmPickup" && SceneHelper.CurrentScene == "Level 1-4")
{
Speak("knuckleblastersteal.wav");
Subtitle("The arm of the red bastard. Neat");
}
if (((Object)__instance).name == "RedArmPickup" && SceneHelper.CurrentScene == "Level 4-4")
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("Whiplash"));
}
if (((Object)__instance).name == "ShotgunPickUp")
{
Speak("shotgunpickup.wav");
Subtitle("Ooo! What is this?");
}
if (((Object)__instance).name == "Weapon Pickup")
{
Speak("nailgunpickup.wav");
Subtitle("Who would even drop this? It looks sick");
}
if (((Object)__instance).name == "Railcannon (1)")
{
Speak("railcannonpickup.wav");
Subtitle("Now we're talking!");
}
if (((Object)__instance).name == "WeaponPickUp")
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("RocketLauncher"));
}
}
}
internal static ManualLogSource Logger;
public static Plugin me;
public static AudioSource audio;
public bool beforepull = true;
public bool second = false;
public bool specificvariablesothatv1doesnotrepeathimself = false;
public bool wasincybergrindbefore = false;
public bool bossnorepeat = false;
public bool violencebeginskull = false;
public bool stoprepeatingohmygod = false;
public bool firstfinaldoor = false;
public bool firstspawnedenemy = false;
public bool evilheat = false;
public List<string> tips = new List<string> { "Also try: V1Oneliner by funyslookalike! :D", "Contrary to popular belief, I did not keep Ultravoice in mind while making this mod", "This mod still does not have very good writing", "Put this feature in here for no reason lol", "Have you tried collecting one of the chaos emeralds?", "V1 can get very annoying. Feel free to adjust the settings as much as you like!", "I have a really small voice I cant voice V1. So I'm chickening out. Sorry", "I am NOT a good mod maker. This mod sucks ASS" };
[Configgable("", "Tipoftheday", 1, null)]
public static ConfigButton tipText = new ConfigButton((Action)LilTip, "Tip of the day");
[Configgable("Visual", "Colored Subtitles", 0, "Gives V1's subtitles some <color=#0464ff>fancy</color> colors :D")]
private static ConfigToggle colortoggle = new ConfigToggle(false);
[Configgable("Yapping", "Death sound", 0, "Toggles normal death sound. Disabled default because it doesn't make sense lore-wise according to the death message")]
private static ConfigToggle deathtoggle = new ConfigToggle(false);
[Configgable("Yapping", "Cybergrind Death lines", 0, "Toggles cybergrind death lines.")]
private static ConfigToggle deathcgtoggle = new ConfigToggle(true);
[Configgable("Yapping", "Arena end/CG Wave end line chance", 0, "The higher the value, the more rare the line is. (For example: setting the value to 4 will make the line have 1/4 chance to play)")]
public static IntegerSlider arenachance = new IntegerSlider(1, 0, 50);
[Configgable("Yapping", "Dodge line chance", 0, "The higher the value, the more rare the line is. (For example: setting the value to 4 will make the line have 1/4 chance to play)")]
public static IntegerSlider dodgechance = new IntegerSlider(1, 0, 50);
[Configgable("Yapping", "Dash Jump line chance", 0, "The higher the value, the more rare the line is. (For example: setting the value to 4 will make the line have 1/4 chance to play)")]
public static IntegerSlider dashjumpchance = new IntegerSlider(2, 0, 50);
[Configgable("Yapping", "Slam line chance", 0, "The higher the value, the more rare the line is. (For example: setting the value to 4 will make the line have 1/4 chance to play)")]
public static IntegerSlider slamchance = new IntegerSlider(1, 0, 50);
[Configgable("Yapping", "Hurt line chance", 0, "The higher the value, the more rare the line is. (For example: setting the value to 4 will make the line have 1/4 chance to play)")]
public static IntegerSlider hurtchance = new IntegerSlider(2, 0, 50);
[Configgable("Yapping", "Low HP Hurt line chance", 0, "The higher the value, the more rare the line is. (For example: setting the value to 4 will make the line have 1/4 chance to play)")]
public static IntegerSlider injhurtchance = new IntegerSlider(2, 0, 50);
[Configgable("Yapping", "Parry line chance", 0, "The higher the value, the more rare the line is. (For example: setting the value to 4 will make the line have 1/4 chance to play)")]
public static IntegerSlider parrychance = new IntegerSlider(1, 0, 50);
[Configgable("Yapping", "Guard Break line chance", 0, "The higher the value, the more rare the line is. (For example: setting the value to 4 will make the line have 1/4 chance to play)")]
public static IntegerSlider guardbreakchance = new IntegerSlider(1, 0, 50);
[Configgable("Yapping", "Ignite line chance", 0, "The higher the value, the more rare the line is. (For example: setting the value to 4 will make the line have 1/4 chance to play)")]
public static IntegerSlider burnchance = new IntegerSlider(2, 0, 50);
[Configgable("Yapping", "Sand line chance", 0, "The higher the value, the more rare the line is. (For example: setting the value to 4 will make the line have 1/4 chance to play)")]
public static IntegerSlider sandchance = new IntegerSlider(2, 0, 50);
[Configgable("Yapping", "Sand line chance", 0, "The higher the value, the more rare the line is. (For example: setting the value to 4 will make the line have 1/4 chance to play)")]
public static IntegerSlider coinchance = new IntegerSlider(4, 0, 50);
[Configgable("Yapping", "Projectile Boost line chance", 0, "The higher the value, the more rare the line is. (For example: setting the value to 4 will make the line have 1/4 chance to play)")]
public static IntegerSlider pjbchance = new IntegerSlider(2, 0, 50);
[Configgable("Yapping", "Whiplash line chance", 0, "The higher the value, the more rare the line is. (For example: setting the value to 4 will make the line have 1/4 chance to play)")]
public static IntegerSlider whiplashchance = new IntegerSlider(4, 0, 50);
[Configgable("Yapping", "Pump Shotgun line chance", 0, "The higher the value, the more rare the line is. (For example: setting the value to 4 will make the line have 1/4 chance to play)")]
public static IntegerSlider pumpchance = new IntegerSlider(3, 0, 50);
[Configgable("Yapping", "Saw Shotgun line chance", 0, "The higher the value, the more rare the line is. (For example: setting the value to 4 will make the line have 1/4 chance to play)")]
public static IntegerSlider sawchance = new IntegerSlider(3, 0, 50);
[Configgable("Yapping", "Jackhammer line chance", 0, "The higher the value, the more rare the line is. (For example: setting the value to 4 will make the line have 1/4 chance to play)")]
public static IntegerSlider hammerchance = new IntegerSlider(1, 0, 50);
[Configgable("Yapping", "Railcannon line chance", 0, "The higher the value, the more rare the line is. (For example: setting the value to 4 will make the line have 1/4 chance to play)")]
public static IntegerSlider railchance = new IntegerSlider(2, 0, 50);
[Configgable("Yapping", "Freezeframe Rocket Launcher line chance", 0, "The higher the value, the more rare the line is. (For example: setting the value to 4 will make the line have 1/4 chance to play)")]
public static IntegerSlider freezechance = new IntegerSlider(1, 0, 50);
[Configgable("Yapping", "S.R.S Rocket Launcher line chance", 0, "The higher the value, the more rare the line is. (For example: setting the value to 4 will make the line have 1/4 chance to play)")]
public static IntegerSlider srschance = new IntegerSlider(2, 0, 50);
[Configgable("Audio", "Voice Volume", 0, "Self-explanatory. Recommend to set this between 0-1")]
private static float vol = 0.75f;
public static string FolderPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
private ConfigBuilder config;
public static AssetBundle V1AssetBundle { get; private set; }
private void Awake()
{
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
//IL_004c: Unknown result type (might be due to invalid IL or missing references)
//IL_0056: Expected O, but got Unknown
me = this;
audio = ((Component)this).gameObject.AddComponent<AudioSource>();
V1AssetBundle = AssetBundle.LoadFromFile(Path.Combine(FolderPath, "v1yapper"));
new Harmony("arandomdumbass.ultrakill.v1yapper").PatchAll();
config = new ConfigBuilder("arandomdumbass.v1yapper", "V1 Yapper");
config.BuildAll();
Logger = ((BaseUnityPlugin)this).Logger;
Logger.LogInfo((object)"theres no limit to the v1 larp");
SceneManager.sceneLoaded += OnSceneLoaded;
((Object)((Component)this).gameObject).hideFlags = (HideFlags)4;
}
private void Update()
{
audio.volume = vol;
}
private static void LilTip()
{
int index = Random.Range(0, me.tips.Count);
string text = me.tips[index];
tipText.SetLabel("<color=#ffff00><b>Tip of the day:</b></color> " + text);
}
public static void Speak(string audioname)
{
audio.clip = V1AssetBundle.LoadAsset<AudioClip>(audioname);
if ((Object)(object)audio.clip == (Object)null)
{
Logger.LogError((object)"ay that file doesn't exist shithead FIX YOUR CODE");
}
else
{
audio.Play();
}
}
public static void Subtitle(string text)
{
if (((ConfigValueElement<bool>)(object)colortoggle).Value)
{
string text2 = "<color=#0464ff>" + text + "</color>";
MonoSingleton<SubtitleController>.Instance.DisplaySubtitle(text2, (AudioSource)null, false);
}
else
{
MonoSingleton<SubtitleController>.Instance.DisplaySubtitle(text, (AudioSource)null, false);
}
}
private static IEnumerator DelayedSpeak(string chattype)
{
if (chattype == "Tutorial")
{
if (audio.isPlaying)
{
audio.Stop();
}
Speak("tutorial.wav");
Subtitle("<color=green>VOCAL INTERFACE LOADED</color>");
yield return (object)new WaitForSeconds(1.33f);
Subtitle("<color=green>SUCCESSFULLY ESTABLISHED CONNECTION WITH INTER THINKING PROCESS</color>");
yield return (object)new WaitForSeconds(3.1f);
Subtitle("<color=yellow>PRINTING OUTPUT</color>");
yield return (object)new WaitForSeconds(2.26f);
Subtitle("Well, time to find a weapon");
yield return (object)new WaitForSeconds(1.77f);
Subtitle("If theres even one in hell");
}
if (chattype == "Number1SwordsmachineHater")
{
yield return (object)new WaitForSeconds(1f);
if (audio.isPlaying)
{
audio.Stop();
}
Speak("swordsmachinespectate.wav");
Subtitle("Hey you!");
yield return (object)new WaitForSeconds(0.7f);
Subtitle("Not nice of you steal my source of fuel like that");
yield return (object)new WaitForSeconds(3.6f);
Subtitle("You will regret that");
}
if (chattype == "Limbo")
{
yield return (object)new WaitForSeconds(0.25f);
if (audio.isPlaying)
{
audio.Stop();
}
Speak("limbo.wav");
yield return (object)new WaitForSeconds(0.5f);
Subtitle("Yes this totally looks like a place of torment and despair");
}
if (chattype == "V2ohshit")
{
if (audio.isPlaying)
{
audio.Stop();
}
yield return (object)new WaitForSeconds(0.3f);
Speak("v2firstsighting.wav");
Subtitle("Wait a second.");
yield return (object)new WaitForSeconds(1.4f);
Subtitle("That's another...");
yield return (object)new WaitForSeconds(2.3f);
Subtitle("It... Cant be...");
}
if (chattype == "V2Knockdown")
{
if (audio.isPlaying)
{
audio.Stop();
}
yield return (object)new WaitForSeconds(2f);
Speak("v2knockdown.wav");
Subtitle("Where the fuck do you think you're going!?");
yield return (object)new WaitForSeconds(1.5f);
Subtitle("I'm not done with you yet!");
}
if (chattype == "AssertDominance")
{
if (audio.isPlaying)
{
audio.Stop();
}
Speak("v2die.wav");
Subtitle("I. AM. THE. SUPERIOR.");
yield return (object)new WaitForSeconds(1.6f);
Subtitle("MODEL!!");
yield return (object)new WaitForSeconds(0.9f);
Subtitle("YOU RECOLORED PIECE OF SHIT");
}
if (chattype == "STOPHITTINGYOURSELF")
{
Speak("v2instaenrage.wav");
Subtitle("Stop hitting yourself!");
yield return (object)new WaitForSeconds(2.67f);
me.stoprepeatingohmygod = false;
}
if (chattype == "Whiplash")
{
Subtitle("Such Potential put to waste");
yield return (object)new WaitForSeconds(1.75f);
Subtitle("And I know I wont put it to waste");
}
if (chattype == "RocketLauncher")
{
Subtitle("Hey, it's my favorite weapon from my last test!");
yield return (object)new WaitForSeconds(3.1f);
Subtitle("Love to see it back on my hands!");
}
if (chattype == "SMEncounter")
{
yield return (object)new WaitForSeconds(0.5f);
if (audio.isPlaying)
{
audio.Stop();
}
Speak("swordsmachineboss.wav");
Subtitle("Oh it's you");
yield return (object)new WaitForSeconds(1f);
Subtitle("Fine then, lets duel!");
}
if (chattype == "Descend1")
{
Subtitle("How deep is this place?");
yield return (object)new WaitForSeconds(1.8f);
Subtitle("It feels like forever");
}
if (chattype == "Descend2")
{
Subtitle("This is what they wanted");
yield return (object)new WaitForSeconds(1.95f);
Subtitle("I was built for this");
}
if (chattype == "Descend5-4")
{
yield return (object)new WaitForSeconds(1.25f);
Speak("descend5-4.wav");
Subtitle("Oh...");
yield return (object)new WaitForSeconds(1.4f);
Subtitle("This might be bad");
}
if (chattype == "Hurt1")
{
yield return (object)new WaitForSeconds(0.7f);
Subtitle("FUCK!");
}
if (chattype == "Hurt2")
{
yield return (object)new WaitForSeconds(0.6f);
Subtitle("Stop that!");
}
if (chattype == "CGWaveEnd1")
{
yield return (object)new WaitForSeconds(0.5f);
Subtitle("Is that all you got for me!?");
}
if (chattype == "Aurevoir")
{
if (audio.isPlaying)
{
audio.Stop();
}
yield return (object)new WaitForSeconds(1f);
Speak("aurevoirearthmover.wav");
Subtitle("Au revoir, vieil ami");
}
if (chattype == "GabIntro1")
{
yield return (object)new WaitForSeconds(3.5f);
if (audio.isPlaying)
{
audio.Stop();
}
Speak("gabrielintro1.wav");
Subtitle("Identify yourself");
}
if (chattype == "GabIntro2")
{
yield return (object)new WaitForSeconds(4.2f);
if (audio.isPlaying)
{
audio.Stop();
}
Speak("gabrielintro2.wav");
Subtitle("You're not really giving me answers here to be honest");
}
if (chattype == "GabIntro3")
{
yield return (object)new WaitForSeconds(3f);
if (audio.isPlaying)
{
audio.Stop();
}
Speak("gabrielintro3.wav");
Subtitle("So you must Archangel Gabriel then");
yield return (object)new WaitForSeconds(3.5f);
Subtitle("That's...");
yield return (object)new WaitForSeconds(1.5f);
Subtitle("Special");
}
if (chattype == "AngryGabIntro")
{
yield return (object)new WaitForSeconds(2f);
if (audio.isPlaying)
{
audio.Stop();
}
Speak("angrygabeintro.wav");
Subtitle("Good morning my friendly little angel");
}
if (chattype == "Soda")
{
if (audio.isPlaying)
{
audio.Stop();
}
Speak("gabrieloutro.wav");
Subtitle("Maybe some soda would cheer him up");
yield return (object)new WaitForSeconds(2.7f);
Subtitle("Do I have that...");
yield return (object)new WaitForSeconds(2.3f);
Subtitle("Nope");
}
if (chattype == "Ouch")
{
if (audio.isPlaying)
{
audio.Stop();
}
Speak("angrygabeoutro.wav");
Subtitle("Uh");
yield return (object)new WaitForSeconds(0.5f);
Subtitle("I think I knocked something into his head there.");
yield return (object)new WaitForSeconds(3f);
Subtitle("Oh well");
}
if (chattype == "GabEnrage")
{
if (audio.isPlaying)
{
audio.Stop();
}
Speak("gabrielphase2.wav");
Subtitle("Sorry didn't mean to hit you like that");
yield return (object)new WaitForSeconds(2.5f);
Subtitle("Just needed your uh...");
yield return (object)new WaitForSeconds(2.1f);
Subtitle("Blood");
}
if (chattype == "GabUnEnrage")
{
yield return (object)new WaitForSeconds(0.25f);
if (audio.isPlaying)
{
audio.Stop();
}
Speak("angrygabrielunenrage.wav");
Subtitle("What do you THINK!?");
}
if (chattype == "Dark")
{
if (audio.isPlaying)
{
audio.Stop();
}
Speak("darklevel.wav");
yield return (object)new WaitForSeconds(0.5f);
Subtitle("It's pretty dark in here");
}
if (chattype == "Flashlight")
{
if (audio.isPlaying)
{
audio.Stop();
}
Speak("7-3flashlight.wav");
Subtitle("Wait a second...");
yield return (object)new WaitForSeconds(1.3f);
Subtitle("I had a flashlight this entire time!?");
}
if (chattype == "FEEDIT")
{
if (audio.isPlaying)
{
audio.Stop();
}
Speak("FEEDIT.wav");
Subtitle("Uh...");
yield return (object)new WaitForSeconds(1.1f);
Subtitle("Understood");
}
if (chattype == "MinosPrime")
{
yield return (object)new WaitForSeconds(1.5f);
if (audio.isPlaying)
{
audio.Stop();
}
Speak("minosprimeoutro.wav");
Subtitle("And thats a soul down");
}
if (chattype == "SisyphusPrime")
{
yield return (object)new WaitForSeconds(1.5f);
if (audio.isPlaying)
{
audio.Stop();
}
Speak("sisyphusprimeoutro.wav");
Subtitle("That guy...");
yield return (object)new WaitForSeconds(1.2f);
Subtitle("Was so much worse than Minos");
yield return (object)new WaitForSeconds(1.7f);
Subtitle("I hope the next prime soul is nothing like that");
}
if (chattype == "wtf")
{
yield return (object)new WaitForSeconds(0.25f);
if (audio.isPlaying)
{
audio.Stop();
}
Speak("wtf.wav");
Subtitle("What the fuck?");
}
if (chattype == "Power")
{
yield return (object)new WaitForSeconds(2f);
if (audio.isPlaying)
{
audio.Stop();
}
Speak("powerboss2.wav");
Subtitle("What the FUCK is your guys PROBLEM!?");
yield return (object)new WaitForSeconds(2.01f);
Subtitle("I dont even have Gabriel with ME!");
yield return (object)new WaitForSeconds(2.45f);
Subtitle("FUCK OFF!");
}
if (chattype == "Faked")
{
if (audio.isPlaying)
{
audio.Stop();
}
yield return (object)new WaitForSeconds(1.1f);
Speak("geryondefeat.wav");
Subtitle("Wait...");
yield return (object)new WaitForSeconds(1.7f);
Subtitle("S-So that was all...");
yield return (object)new WaitForSeconds(3.2f);
Subtitle("I hate being in HELL so much");
}
if (chattype == "8-4")
{
if (audio.isPlaying)
{
audio.Stop();
}
if (((Object)audio.clip).name != "8-4end")
{
Speak("8-4end.wav");
Subtitle("I must be reaching the end...");
yield return (object)new WaitForSeconds(2.9f);
Subtitle("At least I hope I am...");
}
}
if (chattype == "ULTRAKILLTime")
{
if (audio.isPlaying)
{
audio.Stop();
}
Speak("revolverpickup.wav");
Subtitle("<color=green>COMPLETED OBJECTIVE</color>");
yield return (object)new WaitForSeconds(0.9f);
Subtitle("<color=yellow>SETTING UP NEW OBJECTIVE</color>");
yield return (object)new WaitForSeconds(1.2f);
Subtitle("<color=green>CURRENT OBJECTIVE SET TO</color>");
yield return (object)new WaitForSeconds(1.1f);
Subtitle("<size=30><color=#ff0000>ULTRAKILL");
}
if (chattype == "Ghosty228reference")
{
Speak("chaosemerald.wav");
Subtitle("Hey! It's one of the chaos emeralds!");
yield return (object)new WaitForSeconds(2.9f);
Subtitle("If I collect seven of those,");
yield return (object)new WaitForSeconds(2.2f);
Subtitle("<color=#ffd100>Nothing will happen");
yield return (object)new WaitForSeconds(2.1f);
Subtitle("actually wasn't this gem supposed to be a dusk reference");
}
if (chattype == "Florp")
{
Speak("florp.wav");
Subtitle("florp");
yield return (object)new WaitForSeconds(1f);
Subtitle(":D");
}
}
public static void Yap(string chattype)
{
if (audio.isPlaying)
{
return;
}
if (chattype == "NewLevel")
{
if (SceneHelper.CurrentScene == "Level 5-4")
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("Descend5-4"));
return;
}
if (SceneHelper.CurrentScene == "Level 8-1")
{
Subtitle("Something about this next one feels off...");
Speak("descend8-1.wav");
return;
}
int num = Random.Range(1, 11);
Speak($"descend{num}.wav");
if (num == 1)
{
Subtitle("This shouldn't be this hard...");
}
if (num == 2)
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("Descend1"));
}
if (num == 3)
{
Subtitle("Today's another day");
}
if (num == 4)
{
Subtitle("Where am I even going?");
}
if (num == 5)
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("Descend2"));
}
if (num == 6)
{
Subtitle("I must be getting closer to the objective, right?");
}
if (num == 7)
{
Subtitle("Hopefully my operating systems are still working");
}
if (num == 8)
{
Subtitle("Just more and more for me...");
}
if (num == 9)
{
Subtitle("All here for one purpose");
}
if (num == 10)
{
Subtitle("Oh, I'm here");
}
}
if (chattype == "Cybergrind")
{
int num2 = Random.Range(1, 4);
Speak($"descendcybergrind{num2}.wav");
if (num2 == 1)
{
Subtitle("Let's see if I can reach a new high");
}
if (num2 == 2)
{
Subtitle("This should sharpen up my skills a bit");
}
if (num2 == 3)
{
Subtitle("Time to grind for a bit");
}
}
if (chattype == "ArenaEnd")
{
if (me.evilheat)
{
int num3 = Random.Range(1, 5);
Speak($"waveendheat{num3}.wav");
if (num3 == 1)
{
Subtitle("GET ME OUT OF HERE!");
}
if (num3 == 2)
{
Subtitle("GET OUT OF THE WAY!");
}
if (num3 == 3)
{
Subtitle("I HAVE NO TIME FOR YOU!");
}
if (num3 == 4)
{
Subtitle("IT BURNS IT BURNS!");
}
return;
}
int num4 = Random.Range(1, 11);
Speak($"waveend{num4}.wav");
if (num4 == 1)
{
Subtitle("Easy as pie!");
}
if (num4 == 2)
{
Subtitle("Learn who you're dealing with next time morons");
}
if (num4 == 3)
{
Subtitle("Still got it");
}
if (num4 == 4)
{
Subtitle("Well, thanks for the fuel");
}
if (num4 == 5)
{
Subtitle("I've had more experience than any of you idiots");
}
if (num4 == 6)
{
Subtitle("Who keeps locking me in here with people who want me dead?");
}
if (num4 == 7)
{
Subtitle("I'm having a pretty rough day, bad luck on your part");
}
if (num4 == 8)
{
Subtitle("You're all just dying like flies, stop trying");
}
if (num4 == 9)
{
Subtitle("Oh, I guess that's all");
}
if (num4 == 10)
{
Subtitle("I'd like my victims to not move and try to kill me please");
}
}
if (chattype == "CGWaveEnd")
{
int num5 = Random.Range(1, 6);
Speak($"cgnewwave{num5}.wav");
if (num5 == 1)
{
Subtitle("Hell yeah!");
}
if (num5 == 2)
{
Subtitle("Keep em coming!");
}
if (num5 == 3)
{
Subtitle("Oh I feel awesome!");
}
if (num5 == 4)
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("CGWaveEnd1"));
}
if (num5 == 5)
{
Subtitle("Come one give me a challenge!");
}
}
if (chattype == "Dodge")
{
int num6 = Random.Range(1, 6);
Speak($"dodged{num6}.wav");
if (num6 == 1)
{
Subtitle("No thank you");
}
if (num6 == 2)
{
Subtitle("Missed me");
}
if (num6 == 3)
{
Subtitle("Why are you trying so hard?");
}
if (num6 == 4)
{
Subtitle("Sure, have a tantrum at the air");
}
if (num6 == 5)
{
Subtitle("Come on, come on!");
}
}
if (chattype == "DashJump")
{
int num7 = Random.Range(1, 4);
Speak($"dashjump{num7}.wav");
if (num7 == 1)
{
Subtitle("Increasing travel speed");
}
if (num7 == 2)
{
Subtitle("Covering long distance");
}
if (num7 == 3)
{
Subtitle("Navigating");
}
}
if (chattype == "Slam")
{
int num8 = Random.Range(1, 6);
Speak($"slam{num8}.wav");
if (num8 == 1)
{
Subtitle("Slam!");
}
if (num8 == 2)
{
Subtitle("Crush!");
}
if (num8 == 3)
{
Subtitle("Stomp!");
}
if (num8 == 4)
{
Subtitle("Whoops");
}
if (num8 == 5)
{
Subtitle("Squish!");
}
}
if (chattype == "Hurt")
{
int num9 = Random.Range(1, 6);
Speak($"hurt{num9}.wav");
if (num9 == 1)
{
Subtitle("Ow! Stop it! Stop it!");
}
if (num9 == 2)
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("Hurt1"));
}
if (num9 == 3)
{
Subtitle("Oh now you've done it!");
}
if (num9 == 4)
{
((MonoBehaviour)me).StartCoroutine(DelayedSpeak("Hurt2"));
}
if (num9 == 5)
{
Subtitle("Mother f...");
}
}
if (chattype == "InjHurt")
{
int num10 = Random.Range(1, 6);
Speak($"lowhphurt{num10}.wav");
if (num10 == 1)
{
Subtitle("STOP STOP STOP...");
}
if (num10 == 2)
{
Subtitle("NO NO NO...");
}
if (num10 == 3)
{
Subtitle("NO... I CANT...");
}
if (num10 == 4)
{
Subtitle("IT HURTS. IT HURTS SO...");
}
if (num10 == 5)
{
Subtitle("DONT DO THIS TO ME...");
}
}
if (chattype == "Parry")
{
int num11 = Random.Range(1, 6);
Speak($"parry{num11}.wav");
if (num11 == 1)
{
Subtitle("Parry!");
}
if (num11 == 2)
{
Subtitle("For yourself");
}
if (num11 == 3)
{
Subtitle("Take your scum");
}
if (num11 == 4)
{
Subtitle("Predictable");
}
if (num11 == 5)
{
Subtitle("Ping pong");
}
}
if (chattype == "FuckYouGutterman")
{
int num12 = Random.Range(1, 6);
Speak($"guardbreak{num12}.wav");
if (num12 == 1)
{
Subtitle("Down goes the guard");
}
if (num12 == 2)
{
Subtitle("You can't stop a unstoppable force");
}
if (num12 == 3)
{
Subtitle("Stop hiding behind that");
}
if (num12 == 4)
{
Subtitle("Using cardboard for defense aren't you fatass?");
}
if (num12 == 5)
{
Subtitle("Use something harder to break next time");
}
}
if (chattype == "Burn")
{
int num13 = Random.Range(1, 6);
Speak($"ignite{num13}.wav");
if (num13 == 1)
{
Subtitle("Burn. Burn! BURN!");
}
if (num13 == 2)
{
Subtitle("Your my star now!");
}
if (num13 == 3)
{
Subtitle("Fuel the flames");
}
if (num13 == 4)
{
Subtitle("Spicy");
}
if (num13 == 5)
{
Subtitle("Torrefy");
}
}
if (chattype == "Sand")
{
int num14 = Random.Range(1, 6);
Speak($"sanded{num14}.wav");
if (num14 == 1)
{
Subtitle("NO! Not the sand!");
}
if (num14 == 2)
{
Subtitle("Oh come on, I hate the taste of sand");
}
if (num14 == 3)
{
Subtitle("Oh great, the WORST taste in the world: fucking sand");
}
if (num14 == 4)
{
Subtitle("Ew! Seriously!?");
}
if (num14 == 5)
{
Subtitle("God damn it, I hate absorbing sand");
}
}
if (chattype == "Pickup")
{
int num15 = Random.Range(1, 6);
Speak($"pickup{num15}.wav");
if (num15 == 1)
{
Subtitle("I'll be taking that");
}
if (num15 == 2)
{
Subtitle("This could be useful");
}
if (num15 == 3)
{
Subtitle("This'll come in handy");
}
if (num15 == 4)
{
Subtitle("Your coming with me");
}
if (num15 == 5)
{
Subtitle("This is mine now");
}
}
if (chattype == "BookThrow")
{
int num16 = Random.Range(1, 4);
Speak($"bookthrow{num16}.wav");
if (num16 == 1)
{
Subtitle("Waste of my time");
}
if (num16 == 2)
{
Subtitle("Meh, it's mildly helpful");
}
if (num16 == 3)
{
Subtitle("Overall just junk");
}
}
if (chattype == "Coin")
{
int num17 = Random.Range(1, 6);
Speak($"coin{num17}.wav");
if (num17 == 1)
{
Subtitle("Here's some payment");
}
if (num17 == 2)
{
Subtitle("Raining some bits");
}
if (num17 == 3)
{
Subtitle("You deserve a piece of this!");
}
if (num17 == 4)
{
Subtitle("Check this out!");
}
if (num17 == 5)
{
Subtitle("You'll pay for this");
}
}
if (chattype == "ProjBoost")
{
int num18 = Random.Range(1, 6);
Speak($"projboost{num18}.wav");
if (num18 == 1)
{
Subtitle("Let's shake it up a notch");
}
if (num18 == 2)
{
Subtitle("And here's one for the road");
}
if (num18 == 3)
{
Subtitle("Let's get this heated up");
}
if (num18 == 4)
{
Subtitle("Prepare yourself");
}
if (num18 == 5)
{
Subtitle("Work it harder, make it better");
}
}
if (chattype == "WhiplashEnemyPull")
{
int num19 = Random.Range(1, 4);
Speak($"whiplight{num19}.wav");
if (num19 == 1)
{
Subtitle("Come here");
}
if (num19 == 2)
{
Subtitle("Gotcha");
}
if (num19 == 3)
{
Subtitle("Get over here");
}
}
if (chattype == "WhiplashV1Pull")
{
int num20 = Random.Range(1, 4);
Speak($"whiphard{num20}.wav");
if (num20 == 1)
{
Subtitle("Here I come");
}
if (num20 == 2)
{
Subtitle("Weeeeeeeeee!");
}
if (num20 == 3)
{
Subtitle("Thank you sir");
}
}
if (chattype == "Pump")
{
int num21 = Random.Range(1, 6);
Speak($"pump{num21}.wav");
if (num21 == 1)
{
Subtitle("Anyone move and their brains getting blasted!");
}
if (num21 == 2)
{
Subtitle("I'm so sick of you");
}
if (num21 == 3)
{
Subtitle("I know where I'm aiming at today and it aint so fucking pretty");
}
if (num21 == 4)
{
Subtitle("Know your place");
}
if (num21 == 5)
{
Subtitle("Who want a shitload?");
}
}
if (chattype == "Saw")
{
int num22 = Random.Range(1, 6);
Speak($"saw{num22}.wav");
if (num22 == 1)
{
Subtitle("Meet my little friend");
}
if (num22 == 2)
{
Subtitle("Slice'n dice!");
}
if (num22 == 3)
{
Subtitle("This will hurt");
}
if (num22 == 4)
{
Subtitle("That'll leave a mark");
}
if (num22 == 5)
{
Subtitle("Cut cut cut!");
}
}
if (chattype == "FullImpact")
{
int num23 = Random.Range(1, 6);
Speak($"fullimpact{num23}.wav");
if (num23 == 1)
{
Subtitle("See you later");
}
if (num23 == 2)
{
Subtitle("Below hell you go");
}
if (num23 == 3)
{
Subtitle("Goodbye");
}
if (num23 == 4)
{
Subtitle("Bonk!");
}
if (num23 == 5)
{
Subtitle("You shall fall");
}
}
if (chattype == "Railcannon")
{
int num24 = Random.Range(1, 6);
Speak($"railcannon{num24}.wav");
if (num24 == 1)
{
Subtitle("More firepower is required");
}
if (num24 == 2)
{
Subtitle("Suprise!");
}
if (num24 == 3)
{
Subtitle("Stand still...");
}
if (num24 == 4)
{
Subtitle("Prepare to be shocked");
}
if (num24 == 5)
{
Subtitle("I pronounce you: Dead");
}
}
if (chattype == "Freeze")
{
int num25 = Random.Range(1, 4);
Speak($"freezerock{num25}.wav");
if (num25 == 1)
{
Subtitle("Freeze!");
}
if (num25 == 2)
{
Subtitle("Hold...");
}
if (num25 == 3)
{
Subtitle("Break time");
}
}
if (chattype == "Unfreeze")
{
int num26 = Random.Range(1, 4);
Speak($"unfreezerock{num26}.wav");
if (num26 == 1)
{
Subtitle("Continue!");
}
if (num26 == 2)
{
Subtitle("Break's over");
}
if (num26 == 3)
{
Subtitle("All done");
}
}
if (chattype == "Ball")
{
int num27 = Random.Range(1, 5);
Speak($"cannonball{num27}.wav");
if (num27 == 1)
{
Subtitle("Boing!");
}
if (num27 == 2)
{
Subtitle("Time out!");
}
if (num27 == 3)
{
Subtitle("Here, catch!");
}
if (num27 == 4)
{
Subtitle("Catch this!");
}
}
if (chattype == "ULTRAKILL")
{
int num28 = Random.Range(1, 6);
Speak($"ultrakill{num28}.wav");
if (num28 == 1)
{
Subtitle("<color=#ff0000>ULTRAKILLING</color> Style!");
}
if (num28 == 2)
{
Subtitle("Looks like someone is getting <color=#ff0000>ULTRAKILLED</color>");
}
if (num28 == 3)
{
Subtitle("You. Have. Been. <color=#ff0000>ULTRAKILLED</color>");
}
if (num28 == 4)
{
Subtitle("An <color=#ff0000>ULTRAKILLING</color> combo!");
}
if (num28 == 5)
{
Subtitle("I call this kill... an <color=#ff0000>ULTRAKILL</color>");
}
}
if (chattype == "CGDie")
{
int num29 = Random.Range(1, 4);
Speak($"cgdeath{num29}.wav");
if (num29 == 1)
{
Subtitle("Dang it");
}
if (num29 == 2)
{
Subtitle("Oh come on!");
}
if (num29 == 3)
{
Subtitle("That was uh, very embarrasing of me");
}
}
}
private void OnSceneLoaded(Scene scene, LoadSceneMode mode)
{
if (SceneHelper.CurrentScene != "Endless")
{
wasincybergrindbefore = false;
}
second = false;
stoprepeatingohmygod = false;
specificvariablesothatv1doesnotrepeathimself = false;
bossnorepeat = false;
violencebeginskull = false;
firstfinaldoor = false;
firstspawnedenemy = false;
evilheat = false;
LilTip();
}
}
}