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.Configuration;
using BepInEx.Logging;
using GameNetcodeStuff;
using HarmonyLib;
using LethalLib.Modules;
using Microsoft.CodeAnalysis;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.AI;
using morninScrap.Behaviours;
using morninScrap.Utils;
[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("Cake2g.morninScrap")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.1.1.0")]
[assembly: AssemblyInformationalVersion("1.1.1")]
[assembly: AssemblyProduct("morninScrap")]
[assembly: AssemblyTitle("Cake2g.morninScrap")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.1.1.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
internal sealed class NullableAttribute : Attribute
{
public readonly byte[] NullableFlags;
public NullableAttribute(byte P_0)
{
NullableFlags = new byte[1] { P_0 };
}
public NullableAttribute(byte[] P_0)
{
NullableFlags = P_0;
}
}
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
internal sealed class NullableContextAttribute : Attribute
{
public readonly byte Flag;
public NullableContextAttribute(byte P_0)
{
Flag = P_0;
}
}
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace morninScrap
{
[BepInPlugin("Cake2g.morninScrap", "morninScrap", "1.1.1")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class morninScrap : BaseUnityPlugin
{
public static List<AudioClip> audioClips;
private ConfigEntry<int> configPizzaPrice;
private ConfigEntry<int> configCakePrice;
private ConfigEntry<int> configFeeeneyPrice;
private ConfigEntry<int> configClubCardRarity;
private ConfigEntry<int> configCakeRarity;
private ConfigEntry<int> configPizzaRarity;
private ConfigEntry<int> configToyCarRarity;
private ConfigEntry<int> configVerminRarity;
private ConfigEntry<int> configGnomeRarity;
private ConfigEntry<int> configFeeeneyRarity;
public static morninScrap Instance { get; private set; }
internal static ManualLogSource Logger { get; private set; }
internal static Harmony? Harmony { get; set; }
private void Awake()
{
//IL_0467: Unknown result type (might be due to invalid IL or missing references)
//IL_046c: Unknown result type (might be due to invalid IL or missing references)
//IL_0472: Expected O, but got Unknown
configPizzaPrice = ((BaseUnityPlugin)this).Config.Bind<int>("Prices", "Pizza", 99, "Cost of Pizza in the terminal (Default: 99)");
configCakePrice = ((BaseUnityPlugin)this).Config.Bind<int>("Prices", "Cake", 60, "Cost of Cake in the terminal (Default: 60)");
configFeeeneyPrice = ((BaseUnityPlugin)this).Config.Bind<int>("Prices", "Hockey Stick", 30, "Cost of Hockey Stick in the terminal (Default: 30)");
configClubCardRarity = ((BaseUnityPlugin)this).Config.Bind<int>("Scrap Rarity", "Club Card Rarity", 20, "Spawn weight of Tesco Club Card (Default: 20)");
configCakeRarity = ((BaseUnityPlugin)this).Config.Bind<int>("Scrap Rarity", "Cake", 10, "Spawn weight of Cake (Default: 10)");
configPizzaRarity = ((BaseUnityPlugin)this).Config.Bind<int>("Scrap Rarity", "Pizza", 10, "Spawn weight of Pizza (Default: 10)");
configToyCarRarity = ((BaseUnityPlugin)this).Config.Bind<int>("Scrap Rarity", "Toy Car", 20, "Spawn weight of Toy Car (Default: 20)");
configGnomeRarity = ((BaseUnityPlugin)this).Config.Bind<int>("Scrap Rarity", "Gnome", 20, "Spawn weight of Gnome (Default: 20)");
configVerminRarity = ((BaseUnityPlugin)this).Config.Bind<int>("Scrap Rarity", "Vermin", 20, "Spawn weight of Vermin (Default: 20)");
configFeeeneyRarity = ((BaseUnityPlugin)this).Config.Bind<int>("Scrap Rarity", "Hockey Stick", 10, "Spawn weight of Hockey Stick (Default: 10)");
Logger = ((BaseUnityPlugin)this).Logger;
Instance = this;
string text = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "morninScrap");
AssetBundle val = AssetBundle.LoadFromFile(text);
Item val2 = val.LoadAsset<Item>("Assets/frazerClubCard.asset");
Utilities.FixMixerGroups(val2.spawnPrefab);
NetworkPrefabs.RegisterNetworkPrefab(val2.spawnPrefab);
Items.RegisterScrap(val2, configClubCardRarity.Value, (LevelTypes)(-1));
Item val3 = val.LoadAsset<Item>("Assets/pixzaBox.asset");
eatPizza eatPizza = val3.spawnPrefab.AddComponent<eatPizza>();
((GrabbableObject)eatPizza).grabbable = true;
((GrabbableObject)eatPizza).grabbableToEnemies = true;
((GrabbableObject)eatPizza).itemProperties = val3;
Utilities.FixMixerGroups(val3.spawnPrefab);
Items.RegisterScrap(val3, configPizzaRarity.Value, (LevelTypes)(-1));
TerminalNode val4 = ScriptableObject.CreateInstance<TerminalNode>();
val4.clearPreviousText = true;
val4.displayText = "For only 99 credits, who could resist?\n\n";
NetworkPrefabs.RegisterNetworkPrefab(val3.spawnPrefab);
Items.RegisterShopItem(val3, (TerminalNode)null, (TerminalNode)null, val4, configPizzaPrice.Value);
Item val5 = val.LoadAsset<Item>("Assets/gnome.asset");
Utilities.FixMixerGroups(val5.spawnPrefab);
NetworkPrefabs.RegisterNetworkPrefab(val5.spawnPrefab);
Items.RegisterScrap(val5, configGnomeRarity.Value, (LevelTypes)(-1));
Item val6 = val.LoadAsset<Item>("Assets/cake.asset");
eatCake eatCake = val6.spawnPrefab.AddComponent<eatCake>();
((GrabbableObject)eatCake).grabbable = true;
((GrabbableObject)eatCake).grabbableToEnemies = true;
((GrabbableObject)eatCake).itemProperties = val6;
Utilities.FixMixerGroups(val6.spawnPrefab);
NetworkPrefabs.RegisterNetworkPrefab(val6.spawnPrefab);
Items.RegisterScrap(val6, configCakeRarity.Value, (LevelTypes)(-1));
TerminalNode val7 = ScriptableObject.CreateInstance<TerminalNode>();
val7.clearPreviousText = true;
val7.displayText = "Delicious!\n\n";
Items.RegisterShopItem(val6, (TerminalNode)null, (TerminalNode)null, val7, configCakePrice.Value);
Item val8 = val.LoadAsset<Item>("Assets/kenzof1.asset");
Utilities.FixMixerGroups(val8.spawnPrefab);
NetworkPrefabs.RegisterNetworkPrefab(val8.spawnPrefab);
Items.RegisterScrap(val8, configToyCarRarity.Value, (LevelTypes)(-1));
Item val9 = val.LoadAsset<Item>("Assets/rat.asset");
Utilities.FixMixerGroups(val9.spawnPrefab);
NetworkPrefabs.RegisterNetworkPrefab(val9.spawnPrefab);
Items.RegisterScrap(val9, configVerminRarity.Value, (LevelTypes)(-1));
Item val10 = val.LoadAsset<Item>("Assets/feeeney.asset");
Utilities.FixMixerGroups(val10.spawnPrefab);
Items.RegisterScrap(val10, configFeeeneyRarity.Value, (LevelTypes)(-1));
TerminalNode val11 = ScriptableObject.CreateInstance<TerminalNode>();
val11.clearPreviousText = true;
val11.displayText = "Bonk\n\n";
NetworkPrefabs.RegisterNetworkPrefab(val10.spawnPrefab);
Items.RegisterShopItem(val10, (TerminalNode)null, (TerminalNode)null, val11, configFeeeneyPrice.Value);
string text2 = "Assets/";
audioClips = new List<AudioClip>
{
val.LoadAsset<AudioClip>(text2 + "Audio/gnomegremlin.ogg"),
val.LoadAsset<AudioClip>(text2 + "Audio/BeeHiveGrab.ogg"),
val.LoadAsset<AudioClip>(text2 + "Audio/gulp.ogg")
};
if (Harmony == null)
{
Harmony = new Harmony("Cake2g.morninScrap");
}
Harmony.PatchAll();
Logger.LogInfo((object)"Cake2g.morninScrap v1.1.1 has loaded!");
}
}
public static class MyPluginInfo
{
public const string PLUGIN_GUID = "Cake2g.morninScrap";
public const string PLUGIN_NAME = "morninScrap";
public const string PLUGIN_VERSION = "1.1.1";
}
}
namespace morninScrap.Utils
{
internal class Effects
{
public enum DeathAnimation
{
Normal,
NoHead1,
Spring,
Haunted,
Mask1,
Mask2,
Fire,
CutInHalf,
NoHead2
}
public static int NbOfPlayers()
{
return StartOfRound.Instance.connectedPlayersAmount + 1;
}
public static List<PlayerControllerB> GetPlayers(bool includeDead = false)
{
List<PlayerControllerB> list = Object.FindObjectsOfType<PlayerControllerB>().ToList();
List<PlayerControllerB> list2 = new List<PlayerControllerB>(list);
foreach (PlayerControllerB item in list)
{
if (item.playerSteamId == 0 || (!includeDead && item.isPlayerDead))
{
list2.Remove(item);
}
}
return list2;
}
public static List<EnemyAI> GetEnemies(bool includeDead = false, bool includeCanDie = false)
{
List<EnemyAI> list = Object.FindObjectsOfType<EnemyAI>().ToList();
List<EnemyAI> list2 = new List<EnemyAI>(list);
if (includeDead)
{
return list2;
}
foreach (EnemyAI item in list)
{
if (item.isEnemyDead || (!includeCanDie && !item.enemyType.canDie))
{
list2.Remove(item);
}
}
return list2;
}
public static void Damage(PlayerControllerB player, int damageNb, CauseOfDeath cause = 0, int animation = 0, bool criticalBlood = true)
{
//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_0031: Unknown result type (might be due to invalid IL or missing references)
if (criticalBlood && player.health - damageNb <= 20)
{
player.bleedingHeavily = true;
}
player.DamagePlayer(damageNb, true, true, cause, animation, false, default(Vector3));
}
public static IEnumerator DamageHost(PlayerControllerB player, int damageNb, CauseOfDeath cause = 0, int animation = 0, bool criticalBlood = true)
{
//IL_0015: 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)
yield return (object)new WaitForEndOfFrame();
Damage(player, damageNb, cause, animation, criticalBlood);
}
public static void Heal(ulong playerID, int health)
{
PlayerControllerB val = StartOfRound.Instance.allPlayerScripts[playerID];
val.health += health;
if (val.health > 100)
{
val.health = 100;
}
val.criticallyInjured = false;
val.bleedingHeavily = false;
val.playerBodyAnimator.SetBool("Limp", false);
}
public static void Teleportation(PlayerControllerB player, Vector3 position, bool ship = false, bool exterior = false, bool interior = false)
{
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_0067: 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 (ship)
{
player.isInElevator = true;
player.isInHangarShipRoom = true;
player.isInsideFactory = false;
}
if (exterior)
{
player.isInElevator = false;
player.isInHangarShipRoom = false;
player.isInsideFactory = false;
}
if (interior)
{
player.isInElevator = false;
player.isInHangarShipRoom = false;
player.isInsideFactory = true;
}
player.averageVelocity = 0f;
player.velocityLastFrame = Vector3.zero;
player.TeleportPlayer(position, true, 0f, false, true);
player.beamOutParticle.Play();
HUDManager.Instance.ShakeCamera((ScreenShakeType)1);
}
public static void Explosion(Vector3 position, float range, int damage = 50, float physicsForce = 1f)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
Landmine.SpawnExplosion(position, true, range, range * 2.5f, damage, physicsForce, (GameObject)null, false);
}
public static void ExplosionLight(Vector3 position, float range, int damage = 10, float physicsForce = 1f)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
Landmine.SpawnExplosion(position, true, 0f, range, damage, physicsForce, (GameObject)null, false);
}
public static IEnumerator ExplosionHostDeath(Vector3 position, float range, int damage = 50, float physicsForce = 1f)
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
yield return (object)new WaitForEndOfFrame();
Explosion(position, range, damage, physicsForce);
}
public static void Knockback(Vector3 position, float range, int damage = 0, float physicsForce = 30f)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
Landmine.SpawnExplosion(position, false, 0f, range, damage, physicsForce, (GameObject)null, false);
}
public static void DropItem(Vector3 placingPosition = default(Vector3))
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
GameNetworkManager.Instance.localPlayerController.DiscardHeldObject(true, (NetworkObject)null, placingPosition, true);
}
public static void Audio(int audioID, float volume)
{
RoundManager.PlayRandomClip(HUDManager.Instance.UIAudio, (AudioClip[])(object)new AudioClip[1] { morninScrap.audioClips[audioID] }, false, volume, 0, 1000);
}
public static void Audio(int audioID, Vector3 position, float volume, bool adjust = true)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_0013: Unknown result type (might be due to invalid IL or missing references)
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
Vector3 val = position;
if (adjust)
{
val += Vector3.up * 2f;
}
AudioSource.PlayClipAtPoint(morninScrap.audioClips[audioID], val, volume);
}
public static void Audio(int audioID, Vector3 clientPosition, float localVolume, float clientVolume, PlayerControllerB player)
{
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
if ((Object)(object)player != (Object)null && GameNetworkManager.Instance.localPlayerController.playerClientId == player.playerClientId)
{
Audio(audioID, localVolume);
}
else
{
Audio(audioID, clientPosition, clientVolume);
}
}
public static void Audio(int audioID, Vector3 position, float volume, float pitch, bool adjust = true)
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
//IL_0032: Unknown result type (might be due to invalid IL or missing references)
//IL_0038: Expected O, but got Unknown
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_0055: Unknown result type (might be due to invalid IL or missing references)
//IL_005b: Expected O, but got Unknown
//IL_0017: Unknown result type (might be due to invalid IL or missing references)
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_0022: Unknown result type (might be due to invalid IL or missing references)
//IL_0027: Unknown result type (might be due to invalid IL or missing references)
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
AudioClip val = morninScrap.audioClips[audioID];
Vector3 val2 = position;
if (adjust)
{
val2 += Vector3.up * 2f;
}
GameObject val3 = new GameObject("One shot audio");
val3.transform.position = val2;
AudioSource val4 = (AudioSource)val3.AddComponent(typeof(AudioSource));
val4.clip = val;
val4.spatialBlend = 1f;
val4.volume = volume;
val4.pitch = pitch;
val4.Play();
Object.Destroy((Object)(object)val3, val.length * ((Time.timeScale < 0.01f) ? 0.01f : Time.timeScale));
}
public static void Audio(int[] audioIDs, Vector3 position, float volume, bool adjust = true)
{
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
//IL_0056: Expected O, but got Unknown
//IL_005c: Unknown result type (might be due to invalid IL or missing references)
//IL_0073: Unknown result type (might be due to invalid IL or missing references)
//IL_0079: Expected O, but got Unknown
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
//IL_0040: Unknown result type (might be due to invalid IL or missing references)
//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)
AudioClip[] array = audioIDs.Select((int id) => morninScrap.audioClips[id]).ToArray();
Vector3 val = position;
if (adjust)
{
val += Vector3.up * 2f;
}
GameObject val2 = new GameObject("One shot audio");
val2.transform.position = val;
AudioSource val3 = (AudioSource)val2.AddComponent(typeof(AudioSource));
val3.spatialBlend = 1f;
val3.volume = volume;
RoundManager.PlayRandomClip(val3, array, true, volume, 0, 1000);
Object.Destroy((Object)(object)val2, array[^1].length * ((Time.timeScale < 0.01f) ? 0.01f : Time.timeScale));
}
public static void Message(string title, string bottom, bool warning = false)
{
HUDManager.Instance.DisplayTip(title, bottom, warning, false, "LC_Tip1");
}
public static IEnumerator Status(string text)
{
while (true)
{
HUDManager.Instance.DisplayStatusEffect(text);
yield return (object)new WaitForSeconds(1f);
}
}
public static void Spawn(SpawnableEnemyWithRarity enemy, Vector3 position)
{
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//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)
GameObject val = Object.Instantiate<GameObject>(enemy.enemyType.enemyPrefab, position, Quaternion.Euler(new Vector3(0f, 0f, 0f)));
val.GetComponentInChildren<NetworkObject>().Spawn(true);
RoundManager.Instance.SpawnedEnemies.Add(val.GetComponent<EnemyAI>());
}
public static void Spawn(string scrapName, Vector3 position)
{
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_003b: Unknown result type (might be due to invalid IL or missing references)
//IL_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
string scrapName2 = scrapName;
SpawnableItemWithRarity val = ((IEnumerable<SpawnableItemWithRarity>)RoundManager.Instance.currentLevel.spawnableScrap).FirstOrDefault((Func<SpawnableItemWithRarity, bool>)((SpawnableItemWithRarity i) => ((Object)i.spawnableItem).name.Equals(scrapName2)));
GameObject val2 = Object.Instantiate<GameObject>(val.spawnableItem.spawnPrefab, position, Quaternion.identity, RoundManager.Instance.spawnedScrapContainer);
GrabbableObject component = val2.GetComponent<GrabbableObject>();
((Component)component).transform.rotation = Quaternion.Euler(component.itemProperties.restingRotation);
component.fallTime = 0f;
component.scrapValue = (int)((float)Random.Range(val.spawnableItem.minValue, val.spawnableItem.maxValue) * RoundManager.Instance.scrapValueMultiplier);
NetworkObject component2 = val2.GetComponent<NetworkObject>();
component2.Spawn(false);
component.FallToGround(true);
}
public static void SpawnQuicksand(int nb)
{
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
//IL_0065: Unknown result type (might be due to invalid IL or missing references)
//IL_006a: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_0078: Unknown result type (might be due to invalid IL or missing references)
//IL_007b: Unknown result type (might be due to invalid IL or missing references)
//IL_0080: Unknown result type (might be due to invalid IL or missing references)
//IL_0085: Unknown result type (might be due to invalid IL or missing references)
//IL_008a: Unknown result type (might be due to invalid IL or missing references)
//IL_0096: Unknown result type (might be due to invalid IL or missing references)
//IL_0098: Unknown result type (might be due to invalid IL or missing references)
Random random = new Random(StartOfRound.Instance.randomMapSeed + 2);
GameObject[] array = (from x in GameObject.FindGameObjectsWithTag("OutsideAINode")
orderby Vector3.Distance(x.transform.position, Vector3.zero)
select x).ToArray();
NavMeshHit val = default(NavMeshHit);
for (int i = 0; i < nb; i++)
{
Vector3 position = array[random.Next(0, array.Length)].transform.position;
Vector3 val2 = RoundManager.Instance.GetRandomNavMeshPositionInBoxPredictable(position, 30f, val, random, -1) + Vector3.up;
GameObject val3 = Object.Instantiate<GameObject>(RoundManager.Instance.quicksandPrefab, val2, Quaternion.identity, RoundManager.Instance.mapPropsContainer.transform);
}
}
}
}
namespace morninScrap.Patches
{
[HarmonyPatch(typeof(TVScript))]
public class ExampleTVPatch
{
[HarmonyPatch("SwitchTVLocalClient")]
[HarmonyPrefix]
private static void SwitchTVPrefix(TVScript __instance)
{
StartOfRound.Instance.shipRoomLights.SetShipLightsBoolean(__instance.tvOn);
}
}
}
namespace morninScrap.Behaviours
{
public class eatCake : PhysicsProp
{
private int bitesLeft = 6;
private string[] allLines = new string[1] { "Consume Cake (6/6): [LMB]" };
public Vector3? originalPosition = null;
public Vector3? originalRotation = null;
public PlayerControllerB thismotherfucker = null;
public override void SetControlTipsForItem()
{
((GrabbableObject)this).SetControlTipsForItem();
if (((NetworkBehaviour)this).IsOwner && (Object)(object)((GrabbableObject)this).playerHeldBy != (Object)null)
{
HUDManager.Instance.ChangeControlTipMultiple(allLines, true, ((GrabbableObject)this).itemProperties);
}
else
{
HUDManager.Instance.ClearControlTips();
}
}
public override void ItemActivate(bool used, bool buttonDown = true)
{
//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
//IL_0109: Unknown result type (might be due to invalid IL or missing references)
//IL_0128: Unknown result type (might be due to invalid IL or missing references)
//IL_0133: Unknown result type (might be due to invalid IL or missing references)
((GrabbableObject)this).ItemActivate(used, buttonDown);
if (buttonDown && bitesLeft != 0)
{
thismotherfucker = ((GrabbableObject)this).playerHeldBy;
PlayerControllerB playerHeldBy = ((GrabbableObject)this).playerHeldBy;
PlayerControllerB playerHeldBy2 = ((GrabbableObject)this).playerHeldBy;
playerHeldBy.movementSpeed = (playerHeldBy2.movementSpeed += 2f);
((GrabbableObject)this).playerHeldBy.sprintMeter = 10f;
bitesLeft--;
PlayerControllerB playerHeldBy3 = ((GrabbableObject)this).playerHeldBy;
((MonoBehaviour)this).StartCoroutine(CakeEffect(playerHeldBy3));
allLines = new string[1] { "Consume Cake (" + bitesLeft + "/6): [LMB]" };
((GrabbableObject)this).SetControlTipsForItem();
if (((NetworkBehaviour)this).IsOwner && (Object)(object)((GrabbableObject)this).playerHeldBy != (Object)null)
{
HUDManager.Instance.ChangeControlTipMultiple(allLines, true, ((GrabbableObject)this).itemProperties);
originalPosition = ((GrabbableObject)this).itemProperties.positionOffset;
originalRotation = ((GrabbableObject)this).itemProperties.rotationOffset;
UpdatePosRotServerRpc(new Vector3(0.05f, 0.1f, 0.05f), ((GrabbableObject)this).itemProperties.rotationOffset);
((GrabbableObject)this).playerHeldBy.activatingItem = true;
((GrabbableObject)this).playerHeldBy.playerBodyAnimator.SetBool("useTZPItem", true);
}
else
{
HUDManager.Instance.ClearControlTips();
}
((GrabbableObject)this).SetScrapValue(((GrabbableObject)this).scrapValue = ((GrabbableObject)this).scrapValue - ((GrabbableObject)this).scrapValue / 6);
((GrabbableObject)this).useCooldown = 12f;
((GrabbableObject)this).RequireCooldown();
}
}
private IEnumerator CakeEffect(PlayerControllerB player)
{
if (!((NetworkBehaviour)this).IsOwner)
{
yield break;
}
yield return (object)new WaitForSeconds(0.8f);
AudioServerRpc(2, ((Component)thismotherfucker).transform.position, 1f, 1.8f);
yield return (object)new WaitForSeconds(0.8f);
UpdatePosRotServerRpc((Vector3)(originalPosition.HasValue ? originalPosition.Value : default(Vector3)), (Vector3)(originalRotation.HasValue ? originalRotation.Value : default(Vector3)));
thismotherfucker.playerBodyAnimator.SetBool("useTZPItem", false);
thismotherfucker.activatingItem = false;
yield return (object)new WaitForSeconds(7f);
PlayerControllerB obj = thismotherfucker;
PlayerControllerB obj2 = thismotherfucker;
obj.movementSpeed = (obj2.movementSpeed -= 4f);
yield return (object)new WaitForSeconds(5f);
PlayerControllerB obj3 = thismotherfucker;
PlayerControllerB obj4 = thismotherfucker;
obj3.movementSpeed = (obj4.movementSpeed += 2f);
if (!thismotherfucker.isPlayerDead)
{
if (((NetworkBehaviour)player).IsHost)
{
((MonoBehaviour)this).StartCoroutine(Effects.DamageHost(thismotherfucker, 10, (CauseOfDeath)5, 7, criticalBlood: false));
}
else
{
Effects.Damage(thismotherfucker, 10, (CauseOfDeath)5, 7, criticalBlood: false);
}
}
}
[ServerRpc(RequireOwnership = false)]
private void AudioServerRpc(int audioID, Vector3 clientPosition, float localVolume, float clientVolume = 0f)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
AudioClientRpc(audioID, clientPosition, localVolume, (clientVolume == 0f) ? localVolume : clientVolume);
}
[ClientRpc]
private void AudioClientRpc(int audioID, Vector3 clientPosition, float localVolume, float clientVolume)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
Effects.Audio(audioID, clientPosition, localVolume, clientVolume, ((GrabbableObject)this).playerHeldBy);
}
[ServerRpc(RequireOwnership = false)]
private void UpdatePosRotServerRpc(Vector3 newPos, Vector3 newRot)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
UpdatePosRotClientRpc(newPos, newRot);
}
[ClientRpc]
private void UpdatePosRotClientRpc(Vector3 newPos, Vector3 newRot)
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0013: Unknown result type (might be due to invalid IL or missing references)
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
((GrabbableObject)this).itemProperties.positionOffset = newPos;
((GrabbableObject)this).itemProperties.rotationOffset = newRot;
}
}
public class eatPizza : PhysicsProp
{
private int bitesLeft = 6;
private string[] allLines = new string[1] { "Consume Pizza (6/6): [LMB]" };
public Vector3? originalPosition = null;
public Vector3? originalRotation = null;
public override void SetControlTipsForItem()
{
((GrabbableObject)this).SetControlTipsForItem();
if (((NetworkBehaviour)this).IsOwner && (Object)(object)((GrabbableObject)this).playerHeldBy != (Object)null)
{
HUDManager.Instance.ChangeControlTipMultiple(allLines, true, ((GrabbableObject)this).itemProperties);
}
else
{
HUDManager.Instance.ClearControlTips();
}
}
public override void ItemActivate(bool used, bool buttonDown = true)
{
//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
//IL_0118: Unknown result type (might be due to invalid IL or missing references)
//IL_0123: Unknown result type (might be due to invalid IL or missing references)
((GrabbableObject)this).ItemActivate(used, buttonDown);
if (buttonDown && bitesLeft != 0)
{
PlayerControllerB playerHeldBy = ((GrabbableObject)this).playerHeldBy;
((MonoBehaviour)this).StartCoroutine(PizzaEffect(playerHeldBy));
bitesLeft--;
((GrabbableObject)this).SetScrapValue(((GrabbableObject)this).scrapValue = ((GrabbableObject)this).scrapValue - ((GrabbableObject)this).scrapValue / 6);
((GrabbableObject)this).useCooldown = 5f;
((GrabbableObject)this).RequireCooldown();
allLines = new string[1] { "Consume Pizza (" + bitesLeft + "/6): [LMB]" };
((GrabbableObject)this).SetControlTipsForItem();
if (((NetworkBehaviour)this).IsOwner && (Object)(object)((GrabbableObject)this).playerHeldBy != (Object)null)
{
HUDManager.Instance.ChangeControlTipMultiple(allLines, true, ((GrabbableObject)this).itemProperties);
originalPosition = ((GrabbableObject)this).itemProperties.positionOffset;
originalRotation = ((GrabbableObject)this).itemProperties.rotationOffset;
UpdatePosRotServerRpc(new Vector3(0.05f, 0.1f, 0.05f), ((GrabbableObject)this).itemProperties.rotationOffset);
((GrabbableObject)this).playerHeldBy.activatingItem = true;
((GrabbableObject)this).playerHeldBy.playerBodyAnimator.SetBool("useTZPItem", true);
}
else
{
HUDManager.Instance.ClearControlTips();
}
}
}
private IEnumerator PizzaEffect(PlayerControllerB player)
{
if (((NetworkBehaviour)this).IsOwner)
{
yield return (object)new WaitForSeconds(0.8f);
AudioServerRpc(2, ((Component)((GrabbableObject)this).playerHeldBy).transform.position, 1f, 1.8f);
yield return (object)new WaitForSeconds(0.8f);
UpdatePosRotServerRpc((Vector3)(originalPosition.HasValue ? originalPosition.Value : default(Vector3)), (Vector3)(originalRotation.HasValue ? originalRotation.Value : default(Vector3)));
player.playerBodyAnimator.SetBool("useTZPItem", false);
player.activatingItem = false;
if (!player.isPlayerDead)
{
HealPlayerServerRpc(StartOfRound.Instance.localPlayerController.playerClientId, 20);
}
}
}
[ServerRpc(RequireOwnership = false)]
private void AudioServerRpc(int audioID, Vector3 clientPosition, float localVolume, float clientVolume = 0f)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
AudioClientRpc(audioID, clientPosition, localVolume, (clientVolume == 0f) ? localVolume : clientVolume);
}
[ClientRpc]
private void AudioClientRpc(int audioID, Vector3 clientPosition, float localVolume, float clientVolume)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
Effects.Audio(audioID, clientPosition, localVolume, clientVolume, ((GrabbableObject)this).playerHeldBy);
}
[ServerRpc(RequireOwnership = false)]
private void UpdatePosRotServerRpc(Vector3 newPos, Vector3 newRot)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
UpdatePosRotClientRpc(newPos, newRot);
}
[ClientRpc]
private void UpdatePosRotClientRpc(Vector3 newPos, Vector3 newRot)
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0013: Unknown result type (might be due to invalid IL or missing references)
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
((GrabbableObject)this).itemProperties.positionOffset = newPos;
((GrabbableObject)this).itemProperties.rotationOffset = newRot;
}
[ServerRpc(RequireOwnership = false)]
private void HealPlayerServerRpc(ulong playerID, int health)
{
HealPlayerClientRpc(playerID, health);
}
[ClientRpc]
private void HealPlayerClientRpc(ulong playerID, int health)
{
Effects.Heal(playerID, health);
if ((Object)(object)((GrabbableObject)this).playerHeldBy != (Object)null && GameNetworkManager.Instance.localPlayerController.playerClientId == ((GrabbableObject)this).playerHeldBy.playerClientId)
{
HUDManager.Instance.UpdateHealthUI(100, false);
}
}
}
}