using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using Microsoft.CodeAnalysis;
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("HowToFishCheatMenu")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("HowToFishCheatMenu")]
[assembly: AssemblyTitle("HowToFishCheatMenu")]
[assembly: AssemblyVersion("1.0.0.0")]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Embedded]
[AttributeUsage(AttributeTargets.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;
}
}
[CompilerGenerated]
[Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace HowToFishCheatMenu
{
[BepInPlugin("com.matt.howtofish.cheatmenu", "How to Fish Cheat Menu", "2.1.0")]
public sealed class Plugin : BaseUnityPlugin
{
private sealed class MovementDefaults
{
public float WalkSpeed { get; }
public float SprintSpeed { get; }
public MovementDefaults(float walkSpeed, float sprintSpeed)
{
WalkSpeed = walkSpeed;
SprintSpeed = sprintSpeed;
}
}
public const string PluginGuid = "com.matt.howtofish.cheatmenu";
public const string PluginName = "How to Fish Cheat Menu";
public const string PluginVersion = "2.1.0";
private const BindingFlags InstancePrivate = BindingFlags.Instance | BindingFlags.NonPublic;
private readonly Dictionary<PlayerMovement, MovementDefaults> _movementDefaults = new Dictionary<PlayerMovement, MovementDefaults>();
private Rect _windowRect = new Rect(30f, 30f, 660f, 700f);
private Vector2 _scrollPosition;
private ConfigEntry<KeyboardShortcut> _toggleMenuKey;
private ConfigEntry<float> _flySpeed;
private bool _showMenu;
private bool _flyMode;
private bool _autoRestoreVitals;
private bool _speedBoost;
private float _speedMultiplier = 2f;
private float _timeScale = 1f;
private float _nextVitalsRestore;
private int _islandIndex;
private int _heldItemSkinIndex;
private int _boatSkinIndex;
private Vector3? _savedPosition;
private string _status = "Load a solo or hosted save, then press Insert.";
private int _windowId;
private void Awake()
{
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
_toggleMenuKey = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("Hotkeys", "ToggleMenu", new KeyboardShortcut((KeyCode)277, Array.Empty<KeyCode>()), "Show or hide the menu.");
_flySpeed = ((BaseUnityPlugin)this).Config.Bind<float>("Player", "FlySpeed", 12f, "Movement speed while fly mode is enabled.");
_windowId = ((object)this).GetHashCode();
((BaseUnityPlugin)this).Logger.LogInfo((object)"How to Fish Cheat Menu 2.1.0 loaded.");
}
private void Update()
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
KeyboardShortcut value = _toggleMenuKey.Value;
if (((KeyboardShortcut)(ref value)).IsDown())
{
_showMenu = !_showMenu;
}
Player localPlayer = Player.LocalPlayer;
if (_flyMode)
{
MoveLocalPlayer(localPlayer);
}
if (_speedBoost)
{
ApplySpeedBoost(localPlayer);
}
else
{
RestoreSpeed(localPlayer);
}
if (_autoRestoreVitals && (Object)(object)localPlayer != (Object)null && Time.unscaledTime >= _nextVitalsRestore)
{
localPlayer.Vitals.Heal(9999);
localPlayer.Vitals.RestoreFullness(9999);
_nextVitalsRestore = Time.unscaledTime + 0.5f;
}
if (!Mathf.Approximately(Time.timeScale, _timeScale))
{
Time.timeScale = _timeScale;
}
}
private void OnGUI()
{
//IL_0010: 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_002b: Expected O, but got Unknown
//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)
if (_showMenu)
{
_windowRect = GUI.Window(_windowId, _windowRect, new WindowFunction(DrawWindow), "How to Fish Cheat Menu");
}
}
private void DrawWindow(int id)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//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)
//IL_0091: Unknown result type (might be due to invalid IL or missing references)
_scrollPosition = GUILayout.BeginScrollView(_scrollPosition, Array.Empty<GUILayoutOption>());
GUILayout.Label("Solo / Host Utility Menu", Array.Empty<GUILayoutOption>());
GUILayout.Label("Networked options are intended for a save you host. Use carefully.", Array.Empty<GUILayoutOption>());
DrawMoneySection();
DrawVitalsSection();
DrawMovementSection();
DrawWorldSection();
DrawBoatSection();
DrawHeldItemSection();
DrawProgressSection();
GUILayout.Space(10f);
GUILayout.Label(_status, Array.Empty<GUILayoutOption>());
GUILayout.EndScrollView();
GUI.DragWindow(new Rect(0f, 0f, 10000f, 20f));
}
private void DrawMoneySection()
{
BeginSection("Money");
GUILayout.Label($"Current: {MoneyManager.Money:N0}", Array.Empty<GUILayoutOption>());
GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
DrawButton("+1,000", delegate
{
AddMoney(1000);
});
DrawButton("+10,000", delegate
{
AddMoney(10000);
});
DrawButton("+100,000", delegate
{
AddMoney(100000);
});
DrawButton("+1,000,000", delegate
{
AddMoney(1000000);
});
GUILayout.EndHorizontal();
EndSection();
}
private void DrawVitalsSection()
{
BeginSection("Player");
Player localPlayer = Player.LocalPlayer;
if ((Object)(object)localPlayer == (Object)null)
{
GUILayout.Label("Player data unavailable. Load into a save first.", Array.Empty<GUILayoutOption>());
EndSection();
return;
}
PlayerVitals vitals = localPlayer.Vitals;
GUILayout.Label($"Health: {vitals.Health} Fullness: {vitals.Fullness}", Array.Empty<GUILayoutOption>());
GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
DrawButton("Restore Health", delegate
{
vitals.Heal(9999);
SetStatus("Health restored.");
});
DrawButton("Restore Fullness", delegate
{
vitals.RestoreFullness(9999);
SetStatus("Fullness restored.");
});
DrawButton(PlayerManager.InGodMode ? "Disable God Mode" : "Enable God Mode", ToggleGodMode);
GUILayout.EndHorizontal();
_autoRestoreVitals = GUILayout.Toggle(_autoRestoreVitals, "Auto restore health and fullness", Array.Empty<GUILayoutOption>());
EndSection();
}
private void DrawMovementSection()
{
BeginSection("Movement And Teleport");
_flyMode = GUILayout.Toggle(_flyMode, $"Fly Mode ({_flySpeed.Value:F1} u/s)", Array.Empty<GUILayoutOption>());
GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
GUILayout.Label("Fly Speed", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(80f) });
_flySpeed.Value = GUILayout.HorizontalSlider(_flySpeed.Value, 2f, 60f, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(250f) });
GUILayout.EndHorizontal();
GUILayout.Label("Fly controls: WASD, Space up, Left Ctrl down.", Array.Empty<GUILayoutOption>());
_speedBoost = GUILayout.Toggle(_speedBoost, "Speed Boost", Array.Empty<GUILayoutOption>());
GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
GUILayout.Label($"Speed Multiplier: {_speedMultiplier:F1}x", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(160f) });
_speedMultiplier = GUILayout.HorizontalSlider(_speedMultiplier, 1f, 10f, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(250f) });
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
DrawButton("Save Position", SavePosition);
DrawButton("Return To Saved", ReturnToSavedPosition);
DrawButton("Forward 25m", delegate
{
TeleportRelative(0f, 0f, 25f);
});
DrawButton("Up 10m", delegate
{
TeleportRelative(0f, 10f, 0f);
});
GUILayout.EndHorizontal();
EndSection();
}
private void DrawWorldSection()
{
BeginSection("World");
GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
GUILayout.Label($"Time Scale: {_timeScale:F2}", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(130f) });
_timeScale = GUILayout.HorizontalSlider(_timeScale, 0.1f, 4f, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(250f) });
DrawButton("Reset", delegate
{
_timeScale = 1f;
});
GUILayout.EndHorizontal();
int totalIslands = IslandManager.TotalIslands;
if (totalIslands > 0)
{
_islandIndex = Mathf.Clamp(_islandIndex, 0, totalIslands - 1);
GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
GUILayout.Label($"Island: {_islandIndex + 1} / {totalIslands}", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(140f) });
_islandIndex = Mathf.RoundToInt(GUILayout.HorizontalSlider((float)_islandIndex, 0f, (float)(totalIslands - 1), (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(250f) }));
DrawButton("Load Island", LoadSelectedIsland);
GUILayout.EndHorizontal();
}
else
{
GUILayout.Label("Island data is not loaded yet.", Array.Empty<GUILayoutOption>());
}
EndSection();
}
private void DrawBoatSection()
{
BeginSection("Boat");
Boat boat = BoatManager.Boat;
if ((Object)(object)boat == (Object)null)
{
GUILayout.Label("No active boat. Spawn or enter the boat first.", Array.Empty<GUILayoutOption>());
EndSection();
return;
}
GUILayout.Label($"Unlocked: {boat.BoatUnlocked} Radar: {boat.BoatRadarUnlocked} Motor: {boat.MotorIndex}", Array.Empty<GUILayoutOption>());
GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
DrawButton("Unlock Boat", delegate
{
boat.UnlockBoat();
SetStatus("Boat unlocked.");
});
DrawButton("Unlock Radar", delegate
{
boat.UnlockBoatRadar();
SetStatus("Boat radar unlocked.");
});
DrawButton("Max Motor", delegate
{
MaximizeBoatMotor(boat);
});
GUILayout.EndHorizontal();
DrawSkinSelector("Boat Skin", boat.SkinPreset, boat.CurSkin, ref _boatSkinIndex, delegate(int skin)
{
boat.ServerSetSkin((byte)skin);
SetStatus($"Boat skin set to {skin}.");
});
EndSection();
}
private void DrawHeldItemSection()
{
BeginSection("Held Item");
Player localPlayer = Player.LocalPlayer;
Item item = (((Object)(object)localPlayer == (Object)null) ? null : localPlayer.Holding.HeldItem);
if ((Object)(object)item == (Object)null)
{
GUILayout.Label("Hold a fish or item to use these options.", Array.Empty<GUILayoutOption>());
EndSection();
return;
}
GUILayout.Label($"Holding: {item.GetName()} Worth: {item.TotalWorth:N0}", Array.Empty<GUILayoutOption>());
GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
DrawButton("Cook Fully", delegate
{
item.CookItem(100f);
SetStatus("Held item cooked.");
});
DrawButton("100x Kill Score", delegate
{
item.SetKillscoreMultiplier(100f);
SetStatus("Held item score multiplier set to 100x.");
});
DrawButton("10x Bet Multiplier", delegate
{
item.AddBetMultiplier(10f);
SetStatus("Held item bet multiplier increased.");
});
GUILayout.EndHorizontal();
DrawSkinSelector("Item Skin", item.SkinPreset, item.CurSkin, ref _heldItemSkinIndex, delegate(int skin)
{
SaveManager.UnlockSkin(item.ID, (byte)skin);
item.ServerSetSkin((byte)skin);
SetStatus("Unlocked and applied " + GetSkinName(item.SkinPreset, skin) + ".");
});
DrawButton("Unlock Every Skin On Held Item", delegate
{
UnlockAllItemSkins(item);
});
EndSection();
}
private void DrawProgressSection()
{
BeginSection("Hosted Save Progression");
ServerSaveObject curServerSave = SaveManager.CurServerSave;
if (curServerSave == null)
{
GUILayout.Label("No server save is loaded.", Array.Empty<GUILayoutOption>());
EndSection();
return;
}
GUILayout.Label($"Max Island: {curServerSave.MaxIsland} Boat: {curServerSave.UnlockedBoat} Grill: {curServerSave.UnlockedGrill}", Array.Empty<GUILayoutOption>());
GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
DrawButton("Unlock Boat + Grill", UnlockBasicProgression);
DrawButton("Unlock All Islands", UnlockAllIslands);
DrawButton("Save Now", SaveNow);
GUILayout.EndHorizontal();
EndSection();
}
private static void BeginSection(string title)
{
GUILayout.BeginVertical(GUIStyle.op_Implicit("box"), Array.Empty<GUILayoutOption>());
GUILayout.Label(title, Array.Empty<GUILayoutOption>());
}
private static void EndSection()
{
GUILayout.EndVertical();
GUILayout.Space(4f);
}
private static void DrawButton(string label, Action action)
{
if (GUILayout.Button(label, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.MinWidth(105f) }))
{
action();
}
}
private void DrawSkinSelector(string label, SkinPreset preset, byte currentSkin, ref int selectedSkin, Action<int> applySkin)
{
if ((Object)(object)preset == (Object)null || preset.Skins == null || preset.Skins.Count == 0)
{
GUILayout.Label(label + ": no skin data available.", Array.Empty<GUILayoutOption>());
return;
}
selectedSkin = Mathf.Clamp(selectedSkin, 0, preset.Skins.Count - 1);
GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
GUILayout.Label($"{label}: {GetSkinName(preset, selectedSkin)} ({selectedSkin}/{preset.Skins.Count - 1})", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(320f) });
selectedSkin = Mathf.RoundToInt(GUILayout.HorizontalSlider((float)selectedSkin, 0f, (float)(preset.Skins.Count - 1), (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(180f) }));
if (GUILayout.Button("Apply", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(80f) }))
{
applySkin(selectedSkin);
}
GUILayout.EndHorizontal();
GUILayout.Label($"Current skin index: {currentSkin}", Array.Empty<GUILayoutOption>());
}
private static string GetSkinName(SkinPreset preset, int index)
{
//IL_0028: 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)
if ((Object)(object)preset == (Object)null || index < 0 || index >= preset.Skins.Count)
{
return "Unknown";
}
ItemSkin val = preset.Skins[index];
return ((ItemSkin)(ref val)).Name;
}
private void AddMoney(int amount)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
MoneyManager.AddMoney(amount, Vector3.zero);
SetStatus($"Added {amount:N0} money.");
}
private void ToggleGodMode()
{
PlayerManager.ToggleGodMode();
SetStatus("God mode " + (PlayerManager.InGodMode ? "enabled" : "disabled") + ".");
}
private void SavePosition()
{
//IL_0022: Unknown result type (might be due to invalid IL or missing references)
Player localPlayer = Player.LocalPlayer;
if ((Object)(object)localPlayer == (Object)null)
{
SetStatus("No local player is available.");
return;
}
_savedPosition = localPlayer.Transform.position;
SetStatus("Position saved.");
}
private void ReturnToSavedPosition()
{
//IL_0025: Unknown result type (might be due to invalid IL or missing references)
if (!_savedPosition.HasValue)
{
SetStatus("Save a position first.");
}
else
{
Teleport(Player.LocalPlayer, _savedPosition.Value);
}
}
private void TeleportRelative(float x, float y, float z)
{
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
//IL_0034: Unknown result type (might be due to invalid IL or missing references)
//IL_0046: Unknown result type (might be due to invalid IL or missing references)
//IL_004b: 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_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
//IL_0066: 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)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_0072: 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_007d: Unknown result type (might be due to invalid IL or missing references)
//IL_0088: Unknown result type (might be due to invalid IL or missing references)
//IL_008e: Unknown result type (might be due to invalid IL or missing references)
//IL_0093: Unknown result type (might be due to invalid IL or missing references)
Player localPlayer = Player.LocalPlayer;
if ((Object)(object)localPlayer == (Object)null)
{
SetStatus("No local player is available.");
return;
}
Vector3 val = Vector3.ProjectOnPlane(((Object)(object)localPlayer.CurCam == (Object)null) ? localPlayer.Transform.forward : ((Component)localPlayer.CurCam).transform.forward, Vector3.up);
Vector3 normalized = ((Vector3)(ref val)).normalized;
Teleport(localPlayer, localPlayer.Transform.position + normalized * z + Vector3.up * y + localPlayer.Transform.right * x);
}
private void Teleport(Player player, Vector3 position)
{
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
if ((Object)(object)player == (Object)null)
{
SetStatus("No local player is available.");
return;
}
player.Movement.Teleport(position, true);
SetStatus("Teleported.");
}
private void LoadSelectedIsland()
{
IslandManager.LoadIsland((byte)_islandIndex);
SetStatus($"Loading island {_islandIndex + 1}.");
}
private void MaximizeBoatMotor(Boat boat)
{
IList privateField = GetPrivateField<IList>(boat, "_motors");
if (privateField == null || privateField.Count == 0)
{
SetStatus("Boat motor data is unavailable.");
return;
}
boat.SetMotor((byte)(privateField.Count - 1));
SetStatus("Boat motor upgraded to maximum.");
}
private void UnlockAllItemSkins(Item item)
{
SkinPreset skinPreset = item.SkinPreset;
if ((Object)(object)skinPreset == (Object)null || skinPreset.Skins == null || skinPreset.Skins.Count == 0)
{
SetStatus("Held item has no skin data.");
return;
}
for (int i = 0; i < skinPreset.Skins.Count; i++)
{
SaveManager.UnlockSkin(item.ID, (byte)i);
}
item.ServerSetSkin((byte)_heldItemSkinIndex);
SetStatus($"Unlocked {skinPreset.Skins.Count} skins for {item.GetName()}.");
}
private void UnlockBasicProgression()
{
ServerSaveObject curServerSave = SaveManager.CurServerSave;
if (curServerSave == null)
{
SetStatus("No server save is loaded.");
return;
}
curServerSave.UnlockedBoat = true;
curServerSave.UnlockedBoatRadar = true;
curServerSave.UnlockedGrill = true;
SaveManager.SaveServer(false);
SetStatus("Boat, radar, and grill unlocked and saved.");
}
private void UnlockAllIslands()
{
ServerSaveObject curServerSave = SaveManager.CurServerSave;
if (curServerSave == null || IslandManager.TotalIslands <= 0)
{
SetStatus("Save or island data is unavailable.");
return;
}
curServerSave.MaxIsland = (byte)(IslandManager.TotalIslands - 1);
SaveManager.SaveServer(false);
SetStatus("All islands unlocked and saved.");
}
private void SaveNow()
{
SaveManager.SaveServer(false);
SetStatus("Hosted save written to disk.");
}
private void MoveLocalPlayer(Player player)
{
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Unknown result type (might be due to invalid IL or missing references)
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0034: Unknown result type (might be due to invalid IL or missing references)
//IL_0039: Unknown result type (might be due to invalid IL or missing references)
//IL_0043: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
//IL_004e: Unknown result type (might be due to invalid IL or missing references)
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
//IL_0059: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: 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_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_006e: 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_0078: Unknown result type (might be due to invalid IL or missing references)
//IL_0091: Unknown result type (might be due to invalid IL or missing references)
//IL_0092: 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_0086: Unknown result type (might be due to invalid IL or missing references)
//IL_008b: Unknown result type (might be due to invalid IL or missing references)
//IL_0090: Unknown result type (might be due to invalid IL or missing references)
//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
//IL_0102: Unknown result type (might be due to invalid IL or missing references)
if (!((Object)(object)player == (Object)null))
{
Vector3 val = Vector3.zero;
if (Input.GetKey((KeyCode)119))
{
val += Vector3.forward;
}
if (Input.GetKey((KeyCode)115))
{
val += Vector3.back;
}
if (Input.GetKey((KeyCode)97))
{
val += Vector3.left;
}
if (Input.GetKey((KeyCode)100))
{
val += Vector3.right;
}
if (Input.GetKey((KeyCode)32))
{
val += Vector3.up;
}
if (Input.GetKey((KeyCode)306))
{
val += Vector3.down;
}
if (!(val == Vector3.zero))
{
Transform val2 = (((Object)(object)player.CurCam == (Object)null) ? null : ((Component)player.CurCam).transform);
Vector3 val3 = (((Object)(object)val2 == (Object)null) ? val : val2.TransformDirection(val));
player.Movement.Teleport(player.Transform.position + ((Vector3)(ref val3)).normalized * _flySpeed.Value * Time.unscaledDeltaTime, true);
}
}
}
private void ApplySpeedBoost(Player player)
{
if ((Object)(object)player == (Object)null)
{
return;
}
PlayerMovement movement = player.Movement;
if (!_movementDefaults.TryGetValue(movement, out MovementDefaults value))
{
float privateField = GetPrivateField<float>(movement, "_walkSpeed");
float privateField2 = GetPrivateField<float>(movement, "_sprintSpeed");
if (privateField <= 0f || privateField2 <= 0f)
{
return;
}
value = new MovementDefaults(privateField, privateField2);
_movementDefaults.Add(movement, value);
}
SetPrivateField(movement, "_walkSpeed", value.WalkSpeed * _speedMultiplier);
SetPrivateField(movement, "_sprintSpeed", value.SprintSpeed * _speedMultiplier);
}
private void RestoreSpeed(Player player)
{
if (!((Object)(object)player == (Object)null) && _movementDefaults.TryGetValue(player.Movement, out MovementDefaults value))
{
SetPrivateField(player.Movement, "_walkSpeed", value.WalkSpeed);
SetPrivateField(player.Movement, "_sprintSpeed", value.SprintSpeed);
}
}
private static T GetPrivateField<T>(object owner, string name)
{
FieldInfo field = owner.GetType().GetField(name, BindingFlags.Instance | BindingFlags.NonPublic);
if (field == null)
{
return default(T);
}
object value = field.GetValue(owner);
if (value is T)
{
return (T)value;
}
return default(T);
}
private static void SetPrivateField<T>(object owner, string name, T value)
{
FieldInfo field = owner.GetType().GetField(name, BindingFlags.Instance | BindingFlags.NonPublic);
if (field != null)
{
field.SetValue(owner, value);
}
}
private void SetStatus(string message)
{
_status = message;
((BaseUnityPlugin)this).Logger.LogInfo((object)message);
}
}
}