using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using PluginConfig.API;
using PluginConfig.API.Fields;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("funyslookalike.voneliner")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("VOneLiner")]
[assembly: AssemblyTitle("funyslookalike.voneliner")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace VOneLiner
{
[BepInPlugin("funyslookalike.voneliner", "VOneLiner", "1.0.0")]
[BepInDependency("com.eternalUnion.pluginConfigurator", "1.6.0")]
public class Main : BaseUnityPlugin
{
[HarmonyPatch]
public static class VOneLiner_Patch
{
private static readonly FieldRef<LevelNamePopup, string> layerStringField = AccessTools.FieldRefAccess<LevelNamePopup, string>("layerString");
[HarmonyPrefix]
[HarmonyPatch(typeof(StyleHUD), "GetLocalizedName")]
public static void patch_GetLocalizedName(StyleHUD __instance, string id)
{
if (id == null)
{
return;
}
switch (id.Length)
{
case 20:
switch (id[16])
{
case 'b':
break;
case 'k':
if (id == "ultrakill.doublekill")
{
playAudio($"double{Random.Range(1, 3)}", -1);
}
return;
case 'u':
goto IL_02b2;
case 'l':
if (id == "ultrakill.iconoclasm")
{
playAudio("idol1");
}
return;
case 'r':
if (id == "ultrakill.heartbreak")
{
playAudio("heartbreak1");
}
return;
case 's':
goto IL_02e5;
case 'm':
if (id == "ultrakill.nailbombed")
{
playAudio("nailbombed1");
}
return;
case 'e':
goto IL_0317;
default:
return;
}
if (!(id == "ultrakill.chargeback"))
{
break;
}
goto IL_05e1;
case 19:
switch (id[10])
{
default:
return;
case 'r':
break;
case 'm':
if (id == "ultrakill.multikill")
{
playAudio($"multikill{Random.Range(1, 2)}", 0);
}
return;
case 'i':
if (id == "ultrakill.instakill")
{
playAudio($"instakill{Random.Range(1, 3)}");
}
return;
case 'f':
if (id == "ultrakill.fireworks")
{
if (Random.Range(0, 2) == 0)
{
playAudio($"fireworks{Random.Range(1, 4)}");
}
else
{
playAudio($"airshot{Random.Range(1, 4)}", 0);
}
}
return;
}
if (!(id == "ultrakill.roundtrip"))
{
break;
}
goto IL_05e1;
case 22:
switch (id[10])
{
case 'r':
break;
case 'i':
if (id == "ultrakill.interruption")
{
playAudio($"interruption{Random.Range(1, 3)}");
}
return;
case 'f':
if (id == "ultrakill.friendlyfire")
{
playAudio($"friendly{Random.Range(1, 3)}", 0);
}
return;
case 'h':
goto IL_039f;
default:
return;
}
if (!(id == "ultrakill.rocketreturn"))
{
break;
}
goto IL_05e1;
case 18:
switch (id[10])
{
default:
return;
case 'e':
if (id == "ultrakill.exploded" && Random.Range(0, 3) == 0)
{
playAudio($"explode{Random.Range(1, 5)}", 0);
}
return;
case 'm':
if (id == "ultrakill.mauriced")
{
playAudio($"mauriced{Random.Range(1, 3)}", 2);
}
return;
case 'o':
break;
case 'r':
if (id == "ultrakill.ricoshot")
{
playAudio($"fistful{Random.Range(1, 5)}", 0);
}
return;
}
if (!(id == "ultrakill.overkill"))
{
break;
}
goto IL_0940;
case 17:
switch (id[10])
{
case 'h':
if (id == "ultrakill.halfoff")
{
playAudio($"halfoff{Random.Range(1, 4)}");
}
break;
case 'e':
if (id == "ultrakill.enraged")
{
playAudio($"enraged{Random.Range(1, 4)}");
}
break;
case 'a':
if (id == "ultrakill.airshot")
{
playAudio($"airshot{Random.Range(1, 4)}", 0);
}
break;
case 'b':
if (id == "ultrakill.bigkill")
{
playAudio($"bigkill{Random.Range(1, 3)}", 0);
}
break;
}
break;
case 23:
switch (id[10])
{
default:
return;
case 'c':
break;
case 'h':
if (id == "ultrakill.headshotcombo")
{
playAudio($"headshot{Random.Range(1, 3)}", 0);
}
return;
}
if (!(id == "ultrakill.criticalpunch"))
{
break;
}
goto IL_06c4;
case 21:
switch (id[10])
{
default:
return;
case 'b':
break;
case 'c':
if (id == "ultrakill.cannonboost")
{
playAudio($"cannon{Random.Range(1, 4)}");
}
return;
}
if (!(id == "ultrakill.bigfistkill"))
{
break;
}
goto IL_06c4;
case 24:
{
char c = id[10];
if (c != 'd')
{
if (c != 'h' || !(id == "ultrakill.hammerhitheavy"))
{
break;
}
goto IL_095d;
}
if (!(id == "ultrakill.drillpunchkill"))
{
break;
}
goto IL_06e1;
}
case 5:
switch (id[0])
{
case 'F':
if (id == "FRIED")
{
playAudio($"fried{Random.Range(1, 4)}");
}
break;
case 'N':
if (id == "NO-NO" && Random.Range(0, 3) == 0)
{
playAudio($"chainsaw{Random.Range(1, 3)}");
}
break;
}
break;
case 26:
switch (id[10])
{
case 't':
if (id == "ultrakill.terminalvelocity")
{
playAudio("terminal1", 3);
}
break;
case 'f':
if (id == "ultrakill.fistfullofdollar")
{
playAudio($"fistful{Random.Range(1, 5)}");
}
break;
}
break;
case 13:
switch (id[0])
{
default:
return;
case 'R':
if (id == "RAISON D'ETRE")
{
playAudio("earthmover", 998);
}
return;
case 'L':
break;
}
if (!(id == "LONG WAY DOWN"))
{
break;
}
goto IL_09f2;
case 8:
{
char c = id[0];
if (c != 'R')
{
if (c != 'S' || !(id == "SHREDDED"))
{
break;
}
goto IL_097a;
}
if (!(id == "RE-NO-NO"))
{
break;
}
goto IL_0886;
}
case 32:
switch (id[0])
{
case 'u':
if (id == "ultrakill.cannonballedfrombounce")
{
playAudio($"cannon{Random.Range(0, 4)}");
}
break;
case '<':
if (id == "<color=green>GUARD BREAK</color>")
{
playAudio($"guardbreak{Random.Range(1, 3)}");
}
break;
}
break;
case 15:
if (!(id == "ultrakill.parry"))
{
break;
}
goto IL_05e1;
case 14:
if (id == "ultrakill.kill" && Random.Range(0, 4) == 0)
{
playAudio($"kill{Random.Range(1, 2)}", 0);
}
break;
case 34:
if (id == "<color=#00ffffff>CONDUCTOR</color>")
{
playAudio($"shock{Random.Range(1, 4)}", 2);
}
break;
case 12:
if (!(id == "UNCHAINEDSAW"))
{
break;
}
goto IL_0886;
case 6:
if (!(id == "MINCED"))
{
break;
}
goto IL_097a;
case 7:
if (id == "CRUSHED")
{
if (Object.FindFirstObjectByType<StatsManager>().levelNumber == 21)
{
playAudio("sea1");
}
else if (Random.Range(0, 2) == 0)
{
playAudio($"crush{Random.Range(1, 3)}");
}
}
break;
case 33:
if (id == "<color=grey>GONE SWIMMING</color>")
{
playAudio("sea1");
}
break;
case 40:
if (id == "<color=red>STOP HITTING YOURSELF</color>")
{
playAudio($"stopHitting{Random.Range(1, 3)}", 2);
}
break;
case 4:
if (!(id == "FALL"))
{
break;
}
goto IL_09f2;
case 25:
if (id == "ultrakill.projectileboost" && Random.Range(0, 4) == 0)
{
playAudio($"boomstick{Random.Range(1, 2)}", 0);
}
break;
case 9:
case 10:
case 11:
case 16:
case 27:
case 28:
case 29:
case 30:
case 31:
case 35:
case 36:
case 37:
case 38:
case 39:
break;
IL_0317:
if (!(id == "ultrakill.splattered"))
{
break;
}
goto IL_0940;
IL_0940:
playAudio($"splattered{Random.Range(1, 3)}");
break;
IL_02e5:
if (!(id == "ultrakill.downtosize"))
{
if (id == "ultrakill.groundslam" && Random.Range(0, 3) == 0)
{
playAudio($"groundslam{Random.Range(1, 4)}");
}
}
else
{
playAudio($"downtosize{Random.Range(1, 3)}", 2);
}
break;
IL_06c4:
playAudio($"punch{Random.Range(1, 4)}");
break;
IL_02b2:
if (!(id == "ultrakill.drillpunch"))
{
break;
}
goto IL_06e1;
IL_039f:
if (!(id == "ultrakill.hammerhitred"))
{
break;
}
goto IL_095d;
IL_06e1:
playAudio($"screw{Random.Range(1, 3)}", 2);
break;
IL_097a:
playAudio("shred1");
break;
IL_095d:
playAudio($"hammer{Random.Range(1, 3)}");
break;
IL_0886:
playAudio($"chainsaw{Random.Range(1, 3)}");
break;
IL_09f2:
playAudio($"fall{Random.Range(1, 3)}");
break;
IL_05e1:
playAudio($"parry{Random.Range(1, 3)}");
break;
}
}
[HarmonyPostfix]
[HarmonyPatch(typeof(StyleHUD), "AscendRank")]
public static void patch_AscendRank(StyleHUD __instance)
{
if (__instance.rankIndex == 7)
{
playAudio($"ultrakill{Random.Range(1, 4)}");
}
}
[HarmonyPostfix]
[HarmonyPatch(typeof(Revolver), "Shoot")]
public static void patch_RevolverShoot(Revolver __instance, int shotType = 1)
{
if (shotType == 2 && __instance.gunVariation == 2 && Object.op_Implicit((Object)(object)__instance.twirlShotSound) && Random.Range(0, 3) == 0)
{
playAudio($"redRevolve{Random.Range(1, 3)}", 0);
}
}
[HarmonyPrefix]
[HarmonyPatch(typeof(BossBarManager), "CreateBossBar")]
public static void patch_CreateBossBar(BossBarManager __instance, BossHealthBar bossBar)
{
switch (bossBar.bossName)
{
case "FLESH PRISON":
case "FLESH PANOPTICON":
playAudio("bossPrison", 6);
break;
case "1000-THR DEFENCE SYSTEM":
playAudio("bossDefense", 6);
break;
default:
playAudio("boss", 6);
break;
}
}
[HarmonyPrefix]
[HarmonyPatch(typeof(PlayerActivator), "Activate")]
public static void patch_PlayerActivate(PlayerActivator __instance)
{
StatsManager obj = Object.FindFirstObjectByType<StatsManager>();
if (obj.seconds < 1f)
{
timerStarted = false;
state = 0;
}
if (obj.levelNumber == 23)
{
playAudio("levelLeviathan", 999);
}
}
[HarmonyPostfix]
[HarmonyPatch(typeof(NewMovement), "HandleInputs")]
public static void patch_HandleInputs(NewMovement __instance)
{
if (MonoSingleton<InputManager>.Instance.InputSource.Jump.WasPerformedThisFrame && __instance.currentWallJumps >= 3)
{
playAudio("walljump", 3);
}
}
[HarmonyPrefix]
[HarmonyPatch(typeof(StatsManager), "GetFinalRank")]
public static void patch_GetFinalRank(StatsManager __instance)
{
switch (__instance.levelNumber)
{
case 21:
if (!MonoSingleton<ChallengeManager>.Instance.challengeFailed)
{
playAudio("finishFerryman", 999);
}
else
{
playAudio($"finish{Random.Range(1, 5)}", 999);
}
break;
case 24:
playAudio("finishHeresy", 999);
break;
default:
playAudio($"finish{Random.Range(1, 5)}", 999);
break;
case 33:
break;
}
}
[HarmonyPrefix]
[HarmonyPatch(typeof(StatsManager), "StopTimer")]
public static void patch_StopTimer(StatsManager __instance)
{
if (__instance.levelNumber == 30 && state == 0)
{
playAudio($"finish{Random.Range(1, 5)}", 999);
state = 1;
}
}
[HarmonyPostfix]
[HarmonyPatch(typeof(HudMessage), "PlayMessage")]
public static void patch_PlayMessage(HudMessage __instance)
{
switch (__instance.message)
{
case "<color=red>SPLIT</color> <color=#00ffffff>COLOR</color> doors only require <color=red>ONE</color> <color=#00ffffff>SKULL</color> to open.$If you do not seek hardship, stay indoors.":
playAudio("levelCastle", 999);
break;
case "You're not getting away this time.":
playAudio("levelV22", 999);
break;
case "<color=green>WHIPLASH</color>: Hold <color=orange>":
playAudio("levelV2Arm", 999);
break;
}
}
[HarmonyPostfix]
[HarmonyPatch(typeof(Nailgun), "Shoot")]
public static void patch_NailgunShoot(Nailgun __instance)
{
bool value = Traverse.Create((object)__instance).Field("burnOut").GetValue<bool>();
float value2 = Traverse.Create((object)__instance).Field("heatUp").GetValue<float>();
if (!__instance.altVersion && value && !nailBurntOut && value2 > 0.68f && Random.Range(0, 2) == 0)
{
playAudio($"overheat{Random.Range(1, 3)}");
}
nailBurntOut = value;
}
[HarmonyPrefix]
[HarmonyPatch(typeof(Railcannon), "OnEnable")]
public static void patch_OnEnable(Railcannon __instance)
{
if (__instance.fullCharge.activeSelf)
{
playAudio("railcannon1");
}
}
[HarmonyPrefix]
[HarmonyPatch(typeof(DualWield), "Start")]
public static void patch_Start(DualWield __instance)
{
playAudio("dual1", 4);
}
[HarmonyPrefix]
[HarmonyPatch(typeof(FinalDoor), "Open")]
public static void patch_Open(FinalDoor __instance)
{
StatsManager val = Object.FindFirstObjectByType<StatsManager>();
if (val.levelNumber == 9 && val.seconds > 2f)
{
playAudio("levelV2Arm", 998);
}
}
[HarmonyPrefix]
[HarmonyPatch(typeof(DeathSequence), "OnEnable")]
public static void patch_OnEnable(DeathSequence __instance)
{
playAudio($"death{Random.Range(1, 5)}", 5);
}
[HarmonyPrefix]
[HarmonyPatch(typeof(NewMovement), "TryDash")]
public static void patch_TryDash(NewMovement __instance)
{
bool num = (Object.op_Implicit((Object)(object)__instance.groundProperties) && !__instance.groundProperties.canDash) || __instance.modNoDashSlide || __instance.boostCharge < 100f;
bool flag = __instance.modNoDashSlide || (Object.op_Implicit((Object)(object)__instance.groundProperties) && __instance.groundProperties.silentDashFail);
if (num && !flag)
{
playAudio($"failDash{Random.Range(1, 3)}", 0);
}
}
[HarmonyPostfix]
[HarmonyPatch(typeof(ObjectActivator), "Activate", new Type[] { typeof(bool) })]
public static void patch_ObjectActivate(ObjectActivator __instance)
{
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
int levelNumber = Object.FindFirstObjectByType<StatsManager>().levelNumber;
Vector3 position = ((Component)__instance).transform.position;
string text = ((object)(Vector3)(ref position)).ToString();
switch (levelNumber)
{
case 1:
if (((Object)__instance).name == "TitleActivator" && text == "(40.00, 13.00, 393.00)" && state == 0)
{
state = 1;
playAudio("levelIntro", 999);
}
break;
case 21:
if (((Object)__instance).name == "ShipRaiser" && text == "(87.50, -273.00, 1240.00)")
{
((MonoBehaviour)__instance).StartCoroutine(playAudioDelayed("levelHolyShip", 5, 2f));
}
break;
case 22:
if (((Object)__instance).name == "Screenshaker" && text == "(-122.50, 104.00, 336.00)" && state == 0)
{
state = 1;
playAudio("levelShipTurn", 998);
}
break;
case 24:
if (((Object)__instance).name == "MusicChanger" && text == "(168.50, -133.00, 457.00)" && state == 0)
{
state = 1;
playAudio("levelHeresyDrop", 999);
}
break;
case 26:
if (((Object)__instance).name == "Trigger" && text == "(143.50, 46.00, 483.00)")
{
playAudio("arenaMeatgrinder", 999);
}
break;
case 31:
if (((Object)__instance).name == "Fake 17" && text == "(-22.00, 15.00, 474.00)")
{
playAudio("levelFraudEye", 999);
}
else if (((Object)__instance).name == "OpenZone (1)" && text == "(422.00, 85.00, 521.00)" && state == 0)
{
state = 1;
((MonoBehaviour)__instance).StartCoroutine(playAudioDelayed("levelFraudLookin", 5, 0.75f));
}
break;
case 32:
if (((Object)__instance).name == "10 - Split Color Door" && text == "(200.00, 47.50, 213.00)" && state == 0)
{
state = 1;
((MonoBehaviour)__instance).StartCoroutine(playAudioDelayed("levelCastle", 998));
}
else if (((Object)__instance).name == "Trigger" && text == "(215.00, 47.50, 366.00)" && state == 1)
{
state = 2;
((MonoBehaviour)__instance).StartCoroutine(playAudioDelayed("arenaFilthy", 999, 0.5f));
}
else if (((Object)__instance).name == "GravityChanger" && text == "(300.00, 40.00, 615.00)")
{
((MonoBehaviour)__instance).StartCoroutine(playAudioDelayed("levelSpace", 999, 2f));
}
break;
case 33:
if (((Object)__instance).name == "The Fall" && text == "(0.00, -10.00, -200.00)")
{
playAudio("levelGeryonFall", 999);
}
else if (((Object)__instance).name.StartsWith("OrchestraHit"))
{
switch (((Object)__instance).name)
{
case "OrchestraHit (1)":
playAudio("levelGeryon1", 996);
break;
case "OrchestraHit (2)":
playAudio("levelGeryon2", 997);
break;
case "OrchestraHit":
playAudio("levelGeryon3", 998);
break;
}
}
else if (((Object)__instance).name == "Impact" && text == "(-200.00, -50.00, 240.00)")
{
playAudio("levelGeryon4", 999);
}
break;
}
}
[HarmonyPrefix]
[HarmonyPatch(typeof(StatsManager), "StartTimer")]
public static void patch_StartTimer(StatsManager __instance)
{
if (__instance.levelNumber == 30 && __instance.seconds > 0f && state == 1)
{
((MonoBehaviour)__instance).StartCoroutine(playAudioDelayed("levelFraudExit", 1000));
state = 2;
}
if (timerStarted)
{
return;
}
timerStarted = true;
switch (__instance.levelNumber)
{
case 6:
playAudio("levelSunshine", 998);
break;
case 11:
playAudio("WHOISTHAT", 999);
((MonoBehaviour)__instance).StartCoroutine(subtitleDelayed("WHOISTHAT2", 2f));
break;
case 14:
playAudio("levelGluttony", 999);
break;
case 15:
((MonoBehaviour)__instance).StartCoroutine(playAudioDelayed("levelGabe", 5));
((MonoBehaviour)__instance).StartCoroutine(subtitleDelayed("levelGabe2", 3.5f));
break;
case 17:
playAudio("levelGodDamnSun", 999);
break;
case 18:
case 666:
playAudio("levelDark1", 999);
((MonoBehaviour)__instance).StartCoroutine(subtitleDelayed("levelDark12", 3f));
break;
case 21:
playAudio("levelWrath2", 999);
break;
case 28:
playAudio("levelDark2", 999);
((MonoBehaviour)__instance).StartCoroutine(subtitleDelayed("levelDark22", 3f));
break;
case 30:
if (state == 0)
{
playAudio("levelFraud1", 998);
((MonoBehaviour)__instance).StartCoroutine(playAudioDelayed("levelFraud2", 999, 4.75f));
}
break;
case 32:
playAudio("levelDisintegrate1", 997);
break;
case 100:
playAudio("levelChilly1", 999);
break;
}
}
[HarmonyPrefix]
[HarmonyPatch(typeof(LevelNamePopup), "ShowLayerText")]
public static void patch_ShowLayerText(LevelNamePopup __instance)
{
string text = layerStringField.Invoke(__instance);
switch (text)
{
default:
_ = text == "FRAUD /// THIRD";
break;
case "PRELUDE /// ENCORE":
playAudio("levelChilly2", 999);
break;
case "LIMBO /// SECOND":
playAudio("levelBurning", 999);
break;
case "LIMBO /// CLIMAX":
playAudio("levelV2", 999);
break;
case "LUST /// CLIMAX":
playAudio("levelLustClimax", 999);
break;
}
}
[HarmonyPrefix]
[HarmonyPatch(typeof(ActivateArena), "Activate")]
public static void patch_ArenaActivate(ActivateArena __instance)
{
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: Unknown result type (might be due to invalid IL or missing references)
if (__instance.activated)
{
return;
}
StatsManager val = Object.FindFirstObjectByType<StatsManager>();
int levelNumber = val.levelNumber;
Vector3 position = ((Component)__instance).transform.position;
string text = ((object)(Vector3)(ref position)).ToString();
switch (levelNumber)
{
case 1:
if (text == "(60.00, 3.00, 447.00)")
{
playAudio("arenaFilthy", 999);
}
break;
case 2:
if (text == "(-5.00, -8.00, 277.00)")
{
playAudio("arenaMeatgrinder", 999);
}
break;
case 3:
if (text == "(99.00, 54.00, 459.00)")
{
playAudio("arenaFilthy", 999);
}
break;
case 5:
if (text == "(182.00, 4.00, 382.00)" && state == 0)
{
state = 1;
playAudio("levelCerb", 999);
((MonoBehaviour)val).StartCoroutine(subtitleDelayed("levelCerb2", 3f));
}
break;
case 7:
if (text == "(0.00, 27.50, 406.00)")
{
((MonoBehaviour)__instance).StartCoroutine(playAudioDelayed("arenaFilthy", 999));
}
break;
case 22:
if (text == "(-16.50, 204.00, 363.50)")
{
playAudio("arenaFilthy", 999);
}
break;
}
}
[HarmonyPostfix]
[HarmonyPatch(typeof(ItemIdentifier), "PickUp")]
public static void patch_PickUp(ItemIdentifier __instance)
{
string text = ((object)(ItemType)(ref __instance.itemType)).ToString();
int levelNumber = Object.FindFirstObjectByType<StatsManager>().levelNumber;
switch (text)
{
case "SkullBlue":
playAudio($"blueskull{Random.Range(1, 4)}", 5);
break;
case "SkullRed":
if (levelNumber == 26 && state == 0)
{
state = 1;
playAudio("redSkullSpecial", 999);
}
else
{
playAudio($"redskull{Random.Range(1, 4)}", 5);
}
break;
case "Readable":
playAudio("read1", 5);
break;
case "Soap":
if (levelNumber != 0)
{
playAudio("soap1", 5);
}
break;
default:
playAudio("pickup1", 5);
break;
}
}
}
[CompilerGenerated]
private sealed class <playAudioDelayed>d__16 : IEnumerator<object>, IEnumerator, IDisposable
{
private int <>1__state;
private object <>2__current;
public float delay;
public string audioName;
public int priority;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <playAudioDelayed>d__16(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<>1__state = -2;
}
private bool MoveNext()
{
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_0028: Expected O, but got Unknown
switch (<>1__state)
{
default:
return false;
case 0:
<>1__state = -1;
<>2__current = (object)new WaitForSeconds(delay);
<>1__state = 1;
return true;
case 1:
<>1__state = -1;
playAudio(audioName, priority);
return false;
}
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
[CompilerGenerated]
private sealed class <subtitleDelayed>d__17 : IEnumerator<object>, IEnumerator, IDisposable
{
private int <>1__state;
private object <>2__current;
public float delay;
public string subName;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <subtitleDelayed>d__17(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<>1__state = -2;
}
private bool MoveNext()
{
//IL_0038: Unknown result type (might be due to invalid IL or missing references)
//IL_0042: Expected O, but got Unknown
switch (<>1__state)
{
default:
return false;
case 0:
<>1__state = -1;
if (!enabler.value || !subtitles.value)
{
return false;
}
<>2__current = (object)new WaitForSeconds(delay);
<>1__state = 1;
return true;
case 1:
<>1__state = -1;
MonoSingleton<SubtitleController>.Instance.DisplaySubtitle(subs[subName], (AudioSource)null, false);
return false;
}
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
private static ManualLogSource log;
private static AssetBundle assets;
private static Dictionary<string, AudioClip> clips = new Dictionary<string, AudioClip>();
private static Dictionary<string, string> subs = new Dictionary<string, string>();
private static AudioSource currentLine;
private static int currentPriority = 0;
private static bool timerStarted = false;
private static byte state = 0;
private static bool nailBurntOut = false;
private PluginConfigurator config;
private static BoolField enabler;
private static BoolField subtitles;
private static BoolField overlapping;
private static FloatField volume;
private void Awake()
{
//IL_0079: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: Expected O, but got Unknown
//IL_0099: Unknown result type (might be due to invalid IL or missing references)
//IL_00a3: Expected O, but got Unknown
//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
//IL_00c7: Expected O, but got Unknown
//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
//IL_00e7: Expected O, but got Unknown
Harmony.CreateAndPatchAll(typeof(VOneLiner_Patch), (string)null);
assets = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "audio"));
config = PluginConfigurator.Create("VOneLiner", "voneliner");
config.image = assets.LoadAsset<Sprite>("icon");
enabler = new BoolField(config.rootPanel, "Enabled", "enabler", true);
subtitles = new BoolField(config.rootPanel, "V1 Subtitles", "subtitles", true);
volume = new FloatField(config.rootPanel, "Volume", "volume", 1f);
overlapping = new BoolField(config.rootPanel, "bad mode", "overlapping", false);
AudioClip[] array = assets.LoadAllAssets<AudioClip>();
foreach (AudioClip val in array)
{
clips.Add(((Object)val).name, val);
}
TextAsset[] array2 = assets.LoadAllAssets<TextAsset>();
foreach (TextAsset val2 in array2)
{
subs.Add(((Object)val2).name, val2.text);
}
log = ((BaseUnityPlugin)this).Logger;
}
public static void playAudio(string audioName, int priority = 1)
{
if (!enabler.value)
{
return;
}
if (overlapping.value)
{
playAudioFunny(audioName);
return;
}
if (Object.op_Implicit((Object)(object)currentLine))
{
if (currentLine.isPlaying && priority <= currentPriority)
{
return;
}
currentLine.Stop();
}
currentPriority = priority;
currentLine = ((Component)Camera.main).gameObject.AddComponent<AudioSource>();
currentLine.PlayOneShot(clips[audioName], volume.value);
if (subs.Keys.Contains(audioName) && subtitles.value)
{
MonoSingleton<SubtitleController>.Instance.DisplaySubtitle(subs[audioName], (AudioSource)null, false);
}
}
[IteratorStateMachine(typeof(<playAudioDelayed>d__16))]
public static IEnumerator playAudioDelayed(string audioName, int priority = 1, float delay = 1f)
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <playAudioDelayed>d__16(0)
{
audioName = audioName,
priority = priority,
delay = delay
};
}
[IteratorStateMachine(typeof(<subtitleDelayed>d__17))]
public static IEnumerator subtitleDelayed(string subName, float delay = 1f)
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <subtitleDelayed>d__17(0)
{
subName = subName,
delay = delay
};
}
public static void playAudioFunny(string audioName)
{
AudioSource obj = ((Component)Camera.main).gameObject.AddComponent<AudioSource>();
obj.PlayOneShot(clips[audioName], volume.value);
Object.Destroy((Object)(object)obj, 10f);
if (subs.Keys.Contains(audioName) && subtitles.value)
{
MonoSingleton<SubtitleController>.Instance.DisplaySubtitle(subs[audioName], (AudioSource)null, false);
}
}
}
public static class MyPluginInfo
{
public const string PLUGIN_GUID = "funyslookalike.voneliner";
public const string PLUGIN_NAME = "VOneLiner";
public const string PLUGIN_VERSION = "1.0.0";
}
}