From aa584e231f4c00027f6fa445beacfe544eba5df3 Mon Sep 17 00:00:00 2001
From: iiDk <@>
Date: Sun, 1 Dec 2024 20:19:58 -0500
Subject: [PATCH] 5.1.0
---
Classes/RigManager.cs | 5 +-
Menu/Main.cs | 162 +++++++--
Menu/UI.cs | 4 +
Mods/Advantages.cs | 24 +-
Mods/Buttons.cs | 106 ++++--
Mods/Experimental.cs | 126 ++++---
Mods/Fun.cs | 219 ++++++++----
Mods/Miscellaneous.cs | 12 +-
Mods/Movement.cs | 303 ++++++++++++----
Mods/Overpowered.cs | 732 ++++++++++++++++++++++++---------------
Mods/Projectiles.cs | 26 +-
Mods/Safety.cs | 40 +++
Mods/Settings.cs | 115 +++++-
Mods/Sound.cs | 40 ++-
Mods/Visuals.cs | 23 +-
Notifications/Library.cs | 8 +
Patches/GrabPatch.cs | 23 ++
Patches/RequestPatch.cs | 79 +++++
Patches/Safety.cs | 61 ++--
Plugin.cs | 3 +-
PluginInfo.cs | 2 +-
21 files changed, 1495 insertions(+), 618 deletions(-)
create mode 100644 Patches/GrabPatch.cs
create mode 100644 Patches/RequestPatch.cs
diff --git a/Classes/RigManager.cs b/Classes/RigManager.cs
index fddd61f..dd21301 100644
--- a/Classes/RigManager.cs
+++ b/Classes/RigManager.cs
@@ -1,5 +1,4 @@
-using BepInEx;
-using HarmonyLib;
+using HarmonyLib;
using Photon.Pun;
using Photon.Realtime;
using UnityEngine;
@@ -44,7 +43,7 @@ public static VRRig GetClosestVRRig()
public static PhotonView GetPhotonViewFromVRRig(VRRig p)
{
- return (PhotonView)Traverse.Create(p).Field("photonView").GetValue();
+ return GetNetworkViewFromVRRig(p).GetView;
}
public static NetworkView GetNetworkViewFromVRRig(VRRig p)
diff --git a/Menu/Main.cs b/Menu/Main.cs
index 17ce6de..e96701c 100644
--- a/Menu/Main.cs
+++ b/Menu/Main.cs
@@ -7,7 +7,6 @@
using HarmonyLib;
using iiMenu.Classes;
using iiMenu.Mods;
-using iiMenu.Mods.Spammers;
using iiMenu.Notifications;
using Photon.Pun;
using Photon.Realtime;
@@ -22,14 +21,12 @@
using System.Threading.Tasks;
using TMPro;
using UnityEngine;
-using UnityEngine.Experimental.AI;
using UnityEngine.InputSystem;
using UnityEngine.Networking;
using UnityEngine.Rendering;
using UnityEngine.UI;
using UnityEngine.XR;
using Valve.VR;
-using WebSocketSharp;
using static iiMenu.Classes.RigManager;
/*
@@ -100,6 +97,13 @@ public static void Prefix()
{
joystickButtonSelected = 0;
}
+ if (physicalMenu)
+ {
+ if (buttonCondition)
+ physicalOpenPosition = Vector3.zero;
+
+ buttonCondition = true;
+ }
buttonCondition = buttonCondition || isKeyboardCondition;
buttonCondition = buttonCondition && !lockdown;
buttonCondition = buttonCondition || isSearching;
@@ -598,7 +602,7 @@ public static void Prefix()
UnityEngine.Debug.Log("Could not load preferences");
}
}
- LoadServerData();
+ CoroutineManager.RunCoroutine(LoadServerData(false));
}
} catch { }
@@ -613,6 +617,44 @@ public static void Prefix()
}
catch { }
+ // Gradually reload data to ensure updated admin list
+ try
+ {
+ if (nextTimeUntilReload > 0f)
+ {
+ if (Time.time > nextTimeUntilReload)
+ {
+ nextTimeUntilReload = Time.time + 60f;
+ CoroutineManager.RunCoroutine(LoadServerData(true));
+ }
+ } else
+ {
+ nextTimeUntilReload = Time.time + 60f;
+ }
+ } catch { }
+
+ // Remove physical menu reference if too far away
+ if (physicalMenu && menu != null)
+ {
+ try
+ {
+ if (Vector3.Distance(GorillaTagger.Instance.bodyCollider.transform.position, menu.transform.position) < 1.5f)
+ {
+ if (reference == null)
+ {
+ CreateReference();
+ }
+ } else
+ {
+ if (reference != null)
+ {
+ UnityEngine.Object.Destroy(reference);
+ reference = null;
+ }
+ }
+ } catch { }
+ }
+
// Ghostview
try
{
@@ -1335,6 +1377,10 @@ private static void AddButton(float offset, int buttonIndex, ButtonInfo method)
{
text2.text = TranslateText(text2.text);
}
+ if (inputTextColor != "green")
+ {
+ text2.text = text2.text.Replace(" [", " [");
+ }
if (lowercaseMode)
{
text2.text = text2.text.ToLower();
@@ -2464,6 +2510,18 @@ public static void RecenterMenu()
{
isOnPC = false;
}
+
+ if (physicalMenu)
+ {
+ if (physicalOpenPosition == Vector3.zero)
+ {
+ physicalOpenPosition = menu.transform.position;
+ physicalOpenRotation = menu.transform.rotation;
+ }
+
+ menu.transform.position = physicalOpenPosition;
+ menu.transform.rotation = physicalOpenRotation;
+ }
}
private static void AddPageButtons()
@@ -3288,20 +3346,29 @@ public static string GetHttp(string url)
return html;
}
+ private static Vector3 GunPositionSmoothed = Vector3.zero;
public static (RaycastHit Ray, GameObject NewPointer) RenderGun()
{
- Physics.Raycast(GorillaTagger.Instance.rightHandTransform.position - (legacyGunDirection ? GorillaTagger.Instance.rightHandTransform.up : Vector3.zero), legacyGunDirection ? -GorillaTagger.Instance.rightHandTransform.up : GorillaTagger.Instance.rightHandTransform.forward, out var Ray, 512f, NoInvisLayerMask());
+ Physics.Raycast(SwapGunHand ? (GorillaTagger.Instance.leftHandTransform.position - (legacyGunDirection ? GorillaTagger.Instance.leftHandTransform.up / 4f : Vector3.zero)) : (GorillaTagger.Instance.rightHandTransform.position - (legacyGunDirection ? GorillaTagger.Instance.rightHandTransform.up / 4f : Vector3.zero)), SwapGunHand ? (legacyGunDirection ? -GorillaTagger.Instance.leftHandTransform.up : GorillaTagger.Instance.leftHandTransform.forward) : (legacyGunDirection ? -GorillaTagger.Instance.rightHandTransform.up : GorillaTagger.Instance.rightHandTransform.forward), out var Ray, 512f, NoInvisLayerMask());
if (shouldBePC)
{
Ray ray = TPC.ScreenPointToRay(Mouse.current.position.ReadValue());
Physics.Raycast(ray, out Ray, 512f, NoInvisLayerMask());
}
+ Vector3 StartPosition = SwapGunHand ? GorillaTagger.Instance.leftHandTransform.position : GorillaTagger.Instance.rightHandTransform.position;
+ Vector3 EndPosition = isCopying ? whoCopy.transform.position : Ray.point;
+ if (SmoothGunPointer)
+ {
+ GunPositionSmoothed = Vector3.Lerp(GunPositionSmoothed, EndPosition, Time.deltaTime * 4f);
+ EndPosition = GunPositionSmoothed;
+ }
+
GameObject NewPointer = GameObject.CreatePrimitive(PrimitiveType.Sphere);
NewPointer.GetComponent().material.shader = Shader.Find("GUI/Text Shader");
- NewPointer.GetComponent().material.color = (isCopying || (rightTrigger > 0.5f || Mouse.current.leftButton.isPressed)) ? GetBDColor(0f) : GetBRColor(0f);
+ NewPointer.GetComponent().material.color = (isCopying || GetGunInput(true)) ? GetBDColor(0f) : GetBRColor(0f);
NewPointer.transform.localScale = smallGunPointer ? new Vector3(0.1f, 0.1f, 0.1f) : new Vector3(0.2f, 0.2f, 0.2f);
- NewPointer.transform.position = isCopying ? whoCopy.transform.position : Ray.point;
+ NewPointer.transform.position = EndPosition;
if (disableGunPointer)
{
NewPointer.GetComponent().enabled = false;
@@ -3322,19 +3389,29 @@ public static (RaycastHit Ray, GameObject NewPointer) RenderGun()
liner.endWidth = 0.025f;
liner.positionCount = 2;
liner.useWorldSpace = true;
- liner.SetPosition(0, GorillaTagger.Instance.rightHandTransform.position);
- liner.SetPosition(1, isCopying ? whoCopy.transform.position : Ray.point);
+ liner.SetPosition(0, StartPosition);
+ liner.SetPosition(1, EndPosition);
UnityEngine.Object.Destroy(line, Time.deltaTime);
}
return (Ray, NewPointer);
}
- public static void LoadServerData()
+ public static bool GetGunInput(bool isShooting)
+ {
+ if (isShooting)
+ return (SwapGunHand ? leftTrigger > 0.5f : rightTrigger > 0.5f) || Mouse.current.leftButton.isPressed;
+ else
+ return (SwapGunHand ? leftGrab : rightGrab) || Mouse.current.rightButton.isPressed;
+ }
+
+ public static float nextTimeUntilReload = -1f;
+ private static bool hasWarnedVersionBefore = false;
+ private static bool hasadminedbefore = false;
+ public static System.Collections.IEnumerator LoadServerData(bool reloading)
{
try
{
- UnityEngine.Debug.Log("Loading data from GitHub");
WebRequest request = WebRequest.Create("https://raw.githubusercontent.com/iiDk-the-actual/ModInfo/main/iiMenu_ServerData.txt");
WebResponse response = request.GetResponse();
Stream data = response.GetResponseStream();
@@ -3343,7 +3420,7 @@ public static void LoadServerData()
{
html = sr.ReadToEnd();
}
- UnityEngine.Debug.Log("Data received");
+
shouldAttemptLoadData = false;
string[] Data = html.Split("\n");
@@ -3352,30 +3429,37 @@ public static void LoadServerData()
serverLink = Data[3];
}
- if (Data[0] != PluginInfo.Version)
+ if (!hasWarnedVersionBefore)
{
- if (!isBetaTestVersion)
- {
- UnityEngine.Debug.Log("Version is outdated");
- Important.JoinDiscord();
- NotifiLib.SendNotification("[OUTDATED] You are using an outdated version of the menu. Please update to " + Data[0] + ".", 10000);
- } else
+ if (Data[0] != PluginInfo.Version)
{
- UnityEngine.Debug.Log("Version is outdated, but user is on beta");
- NotifiLib.SendNotification("[BETA] You are using a testing build of the menu. The latest release build is " + Data[0] + ".", 10000);
+ if (!isBetaTestVersion)
+ {
+ hasWarnedVersionBefore = true;
+ UnityEngine.Debug.Log("Version is outdated");
+ Important.JoinDiscord();
+ NotifiLib.SendNotification("[OUTDATED] You are using an outdated version of the menu. Please update to " + Data[0] + ".", 10000);
+ }
+ else
+ {
+ hasWarnedVersionBefore = true;
+ UnityEngine.Debug.Log("Version is outdated, but user is on beta");
+ NotifiLib.SendNotification("[BETA] You are using a testing build of the menu. The latest release build is " + Data[0] + ".", 10000);
+ }
}
- } else
- {
- if (isBetaTestVersion)
+ else
{
- UnityEngine.Debug.Log("Version is outdated, user is on early build of latest");
- Important.JoinDiscord();
- NotifiLib.SendNotification("[OUTDATED] You are using a testing build of the menu. Please update to " + Data[0] + ".", 10000);
+ if (isBetaTestVersion)
+ {
+ hasWarnedVersionBefore = true;
+ UnityEngine.Debug.Log("Version is outdated, user is on early build of latest");
+ Important.JoinDiscord();
+ NotifiLib.SendNotification("[OUTDATED] You are using a testing build of the menu. Please update to " + Data[0] + ".", 10000);
+ }
}
}
if (Data[0] == "lockdown")
{
- UnityEngine.Debug.Log("Version is on lockdown");
NotifiLib.SendNotification("[LOCKDOWN] " + Data[2], 10000);
bgColorA = Color.red;
bgColorB = Color.red;
@@ -3392,18 +3476,17 @@ public static void LoadServerData()
}
try
{
- if (admins.ContainsKey(PhotonNetwork.LocalPlayer.UserId))
+ if (admins.ContainsKey(PhotonNetwork.LocalPlayer.UserId) && !hasadminedbefore)
{
+ hasadminedbefore = true;
SetupAdminPanel(admins[PhotonNetwork.LocalPlayer.UserId]);
- } else
- {
- Buttons.buttons[23] = new ButtonInfo[] { };
}
} catch { }
motdTemplate = Data[2];
}
catch { }
+ yield return null;
}
public static void SetupAdminPanel(string playername)
@@ -3459,6 +3542,11 @@ public static string GetFileExtension(string fileName)
return fileName.ToLower().Split(".")[fileName.Split(".").Length - 1];
}
+ public static string RemoveLastDirectory(string directory)
+ {
+ return directory == "" || directory.LastIndexOf('/') <= 0 ? "" : directory.Substring(0, directory.LastIndexOf('/'));
+ }
+
public static string RemoveFileExtension(string file)
{
int index = 0;
@@ -4770,6 +4858,9 @@ public static void OnLaunch()
public static bool doButtonsVibrate = true;
public static bool joystickMenu = false;
+ public static bool physicalMenu = false;
+ public static Vector3 physicalOpenPosition = Vector3.zero;
+ public static Quaternion physicalOpenRotation = Quaternion.identity;
public static bool joystickOpen = false;
public static int joystickButtonSelected = 0;
public static string joystickSelectedButton = "";
@@ -4796,10 +4887,12 @@ public static void OnLaunch()
public static bool checkMode = false;
public static bool lastChecker = false;
+ public static bool SmoothGunPointer = false;
public static bool smallGunPointer = false;
public static bool disableGunPointer = false;
public static bool disableGunLine = false;
public static bool legacyGunDirection = false;
+ public static bool SwapGunHand = false;
public static int fontCycle = 0;
public static int fontStyleType = 2;
@@ -4844,10 +4937,10 @@ public static void OnLaunch()
"If you get banned while using this, it's your responsibility.";
public static bool shouldBePC = false;
- public static bool rightPrimary = false;
- public static bool rightSecondary = false;
public static bool leftPrimary = false;
public static bool leftSecondary = false;
+ public static bool rightPrimary = false;
+ public static bool rightSecondary = false;
public static bool leftGrab = false;
public static bool rightGrab = false;
public static float leftTrigger = 0f;
@@ -5175,6 +5268,7 @@ public static void OnLaunch()
public static float startY = -1f;
public static bool lowercaseMode = false;
+ public static string inputTextColor = "green";
public static bool annoyingMode = false; // Build with this enabled for a surprise
public static string[] facts = new string[] {
diff --git a/Menu/UI.cs b/Menu/UI.cs
index 0c2c570..dc78d7c 100644
--- a/Menu/UI.cs
+++ b/Menu/UI.cs
@@ -213,6 +213,10 @@ private void OnGUI()
{
toadd = TranslateText(toadd);
}
+ if (inputTextColor != "green")
+ {
+ toadd = toadd.Replace(" [", " [");
+ }
if (lowercaseMode)
{
toadd = toadd.ToLower();
diff --git a/Mods/Advantages.cs b/Mods/Advantages.cs
index 008afec..0178c81 100644
--- a/Mods/Advantages.cs
+++ b/Mods/Advantages.cs
@@ -143,7 +143,7 @@ public static void SpamTagSelf()
public static void SpamTagGun()
{
- if (rightGrab || Mouse.current.rightButton.isPressed)
+ if (GetGunInput(false))
{
var GunData = RenderGun();
RaycastHit Ray = GunData.Ray;
@@ -171,7 +171,7 @@ public static void SpamTagGun()
}
}
}
- if (rightTrigger > 0.5f || Mouse.current.leftButton.isPressed)
+ if (GetGunInput(true))
{
VRRig possibly = Ray.collider.GetComponentInParent();
if (possibly && possibly != GorillaTagger.Instance.offlineVRRig && !PlayerIsTagged(possibly))
@@ -419,7 +419,7 @@ public static void DisableTagReach()
public static void TagGun()
{
- if (rightGrab || Mouse.current.rightButton.isPressed)
+ if (GetGunInput(false))
{
var GunData = RenderGun();
RaycastHit Ray = GunData.Ray;
@@ -495,7 +495,7 @@ public static void TagGun()
GorillaTagger.Instance.offlineVRRig.enabled = true;
}
}
- if (rightTrigger > 0.5f || Mouse.current.leftButton.isPressed)
+ if (GetGunInput(true))
{
VRRig possibly = Ray.collider.GetComponentInParent();
if (possibly && possibly != GorillaTagger.Instance.offlineVRRig && !PlayerIsTagged(possibly))
@@ -527,13 +527,13 @@ public static void TagGun()
public static void UntagGun()
{
- if (rightGrab || Mouse.current.rightButton.isPressed)
+ if (GetGunInput(false))
{
var GunData = RenderGun();
RaycastHit Ray = GunData.Ray;
GameObject NewPointer = GunData.NewPointer;
- if (rightTrigger > 0.5f || Mouse.current.leftButton.isPressed)
+ if (GetGunInput(true))
{
VRRig possibly = Ray.collider.GetComponentInParent();
if (possibly && possibly != GorillaTagger.Instance.offlineVRRig && PlayerIsTagged(possibly))
@@ -552,13 +552,13 @@ public static void UntagGun()
public static void FlickTagGun()
{
- if (rightGrab || Mouse.current.rightButton.isPressed)
+ if (GetGunInput(false))
{
var GunData = RenderGun();
RaycastHit Ray = GunData.Ray;
GameObject NewPointer = GunData.NewPointer;
- if (rightTrigger > 0.5f || Mouse.current.leftButton.isPressed)
+ if (GetGunInput(true))
{
GorillaLocomotion.Player.Instance.rightControllerTransform.position = Ray.point + new Vector3(0f, 0.3f, 0f);
}
@@ -864,13 +864,13 @@ public static void BattleBalloonSpam()
public static void BattleKillGun()
{
- if (rightGrab || Mouse.current.rightButton.isPressed)
+ if (GetGunInput(false))
{
var GunData = RenderGun();
RaycastHit Ray = GunData.Ray;
GameObject NewPointer = GunData.NewPointer;
- if (rightTrigger > 0.5f || Mouse.current.leftButton.isPressed)
+ if (GetGunInput(true))
{
VRRig possibly = Ray.collider.GetComponentInParent();
if (possibly && possibly != GorillaTagger.Instance.offlineVRRig)
@@ -921,13 +921,13 @@ public static void BattleKillAll()
public static void BattleReviveGun()
{
- if (rightGrab || Mouse.current.rightButton.isPressed)
+ if (GetGunInput(false))
{
var GunData = RenderGun();
RaycastHit Ray = GunData.Ray;
GameObject NewPointer = GunData.NewPointer;
- if (rightTrigger > 0.5f || Mouse.current.leftButton.isPressed)
+ if (GetGunInput(true))
{
VRRig possibly = Ray.collider.GetComponentInParent();
if (possibly && possibly != GorillaTagger.Instance.offlineVRRig)
diff --git a/Mods/Buttons.cs b/Mods/Buttons.cs
index d302b8e..1800f93 100644
--- a/Mods/Buttons.cs
+++ b/Mods/Buttons.cs
@@ -14,7 +14,7 @@ public class Buttons
new ButtonInfo[] { // Main Stuff [0]
new ButtonInfo { buttonText = "Join Discord", method =() => Important.JoinDiscord(), isTogglable = false, toolTip = "Invites you to join the ii's Stupid Mods Discord server."},
new ButtonInfo { buttonText = "Settings", method =() => Settings.EnableSettings(), isTogglable = false, toolTip = "Opens the settings menu."},
-
+
new ButtonInfo { buttonText = "Favorite Mods", method =() => Settings.EnableFavorites(), isTogglable = false, toolTip = "Opens your favorite mods. Favorite mods with left grip."},
new ButtonInfo { buttonText = "Enabled Mods", method =() => Settings.EnableEnabled(), isTogglable = false, toolTip = "Shows all mods you have enabled."},
new ButtonInfo { buttonText = "Room Mods", method =() => Settings.EnableRoom(), isTogglable = false, toolTip = "Opens the room mods."},
@@ -49,17 +49,17 @@ public class Buttons
new ButtonInfo { buttonText = "Both Hands", enableMethod =() => Settings.BothHandsOn(), disableMethod =() => Settings.BothHandsOff(), toolTip = "Puts the menu on your both of your hands."},
new ButtonInfo { buttonText = "One Handed Menu", enableMethod =() => Settings.BarkMenuOn(), disableMethod =() => Settings.BarkMenuOff(), toolTip = "Makes the menu open in front of you, so you can use it with one hand."},
- new ButtonInfo { buttonText = "Joystick Menu", enableMethod =() => Settings.JoystickMenuOn(), disableMethod =() => Settings.JoystickMenuOff(), toolTip = "Makes the menu like Colossal, click your joysticks to open, joysticks to move between mods and pages, and click your left joystick to toggle a mod."},
- new ButtonInfo { buttonText = "Inner Outline Menu", toolTip = "Gives the menu an outline on the inside."},
- new ButtonInfo { buttonText = "Outline Menu", enableMethod =() => Settings.OutlineMenuOn(), disableMethod =() => Settings.OutlineMenuOff(), toolTip = "Gives the menu objects an outline."},
- new ButtonInfo { buttonText = "Wrist Menu", enableMethod =() => Settings.WristThingOn(), disableMethod =() => Settings.WristThingOff(), toolTip = "Makes the menu like a weird wrist watch, click your hand to open it."},
- new ButtonInfo { buttonText = "Watch Menu", enableMethod =() => Settings.WatchMenuOn(), disableMethod =() => Settings.WatchMenuOff(), toolTip = "Makes the menu like pocket watch, click your joystick to toggle, and move your joystick to select a mod."},
+ new ButtonInfo { buttonText = "Joystick Menu", enableMethod =() => Settings.JoystickMenuOn(), disableMethod =() => Settings.JoystickMenuOff(), toolTip = "Makes the menu into something like Colossal, click your joysticks to open, joysticks to move between mods and pages, and click your left joystick to toggle a mod."},
+ new ButtonInfo { buttonText = "Physical Menu", enableMethod =() => Settings.PhysicalMenuOn(), disableMethod =() => Settings.PhysicalMenuOff(), toolTip = "Freezes the menu in world space."},
+ new ButtonInfo { buttonText = "Wrist Menu", enableMethod =() => Settings.WristThingOn(), disableMethod =() => Settings.WristThingOff(), toolTip = "Turns the menu into a weird wrist watch, click your hand to open it."},
+ new ButtonInfo { buttonText = "Watch Menu", enableMethod =() => Settings.WatchMenuOn(), disableMethod =() => Settings.WatchMenuOff(), toolTip = "Turns the menu into a watch, click your joystick to toggle, and move your joystick to select a mod."},
new ButtonInfo { buttonText = "Shiny Menu", enableMethod =() => Settings.ShinyMenu(), disableMethod =() => Settings.NoShinyMenu(), toolTip = "Makes the menu's textures use the old shader."},
new ButtonInfo { buttonText = "Thick Menu", enableMethod =() => Settings.ThinMenuOn(), disableMethod =() => Settings.ThinMenuOff(), toolTip = "Makes the menu thin."},
new ButtonInfo { buttonText = "Long Menu", enableMethod =() => Settings.LongMenuOn(), disableMethod =() => Settings.LongMenuOff(), toolTip = "Makes the menu long."},
new ButtonInfo { buttonText = "Flip Menu", enableMethod =() => Settings.FlipMenu(), disableMethod =() => Settings.NonFlippedMenu(), toolTip = "Flips the menu to the back of your hand."},
- new ButtonInfo { buttonText = "Change Menu Language", overlapText = "Change Menu Language [English]", method =() => Settings.ChangeMenuLanguage(), isTogglable = false, toolTip = "Changes the language of the menu."},
+ new ButtonInfo { buttonText = "Outline Menu", enableMethod =() => Settings.OutlineMenuOn(), disableMethod =() => Settings.OutlineMenuOff(), toolTip = "Gives the menu objects an outline."},
+ new ButtonInfo { buttonText = "Inner Outline Menu", toolTip = "Gives the menu an outline on the inside."},
new ButtonInfo { buttonText = "Freeze Player in Menu", method =() => Settings.FreezePlayerInMenu(), enableMethod =() => Settings.FreezePlayerInMenuEnabled(), toolTip = "Freezes your character when inside the menu."},
new ButtonInfo { buttonText = "Freeze Rig in Menu", method =() => Settings.FreezeRigInMenu(), disableMethod =() => Movement.EnableRig(), toolTip = "Freezes your rig when inside the menu."},
@@ -70,13 +70,14 @@ public class Buttons
new ButtonInfo { buttonText = "Dynamic Animations", enableMethod =() => Settings.DynamicAnimations(), disableMethod =() => Settings.NoDynamicAnimations(), toolTip = "Adds more animations to the menu, giving you a better sense of control."},
new ButtonInfo { buttonText = "Dynamic Sounds", enableMethod =() => Settings.DynamicSounds(), disableMethod =() => Settings.NoDynamicSounds(), toolTip = "Adds more sounds to the menu, giving you a better sense of control."},
- new ButtonInfo { buttonText = "Voice Commands", enableMethod =() => Settings.VoiceRecognitionOn(), disableMethod =() => Settings.VoiceRecognitionOff(), toolTip = "Enable and disable sounds with your voice. Activate it like how you would any other voice assistant, like \"Jarvis\"."},
+ new ButtonInfo { buttonText = "Voice Commands", enableMethod =() => Settings.VoiceRecognitionOn(), disableMethod =() => Settings.VoiceRecognitionOff(), toolTip = "Enable and disable sounds with your voice. Activate it like how you would any other voice assistant, such as \"Jarvis\"."},
new ButtonInfo { buttonText = "Chain Voice Commands", toolTip = "Makes voice commands chain together, so you don't have to repeatedly ask it to listen to you."},
new ButtonInfo { buttonText = "Annoying Mode", enableMethod =() => Settings.AnnoyingModeOn(), disableMethod =() => Settings.AnnoyingModeOff(), toolTip = "Turns on the April Fools 2024 settings."},
new ButtonInfo { buttonText = "Lowercase Mode", enableMethod =() => Settings.LowercaseMode(), disableMethod =() => Settings.NoLowercaseMode(), toolTip = "Makes the entire menu's text lowercase."},
new ButtonInfo { buttonText = "Overflow Mode", enableMethod =() => Settings.OverflowMode(), disableMethod =() => Settings.NoOverflowMode(), toolTip = "Makes the entire menu's text overflow."},
+ new ButtonInfo { buttonText = "Change Menu Language", overlapText = "Change Menu Language [English]", method =() => Settings.ChangeMenuLanguage(), isTogglable = false, toolTip = "Changes the language of the menu."},
new ButtonInfo { buttonText = "Change Menu Theme", method =() => Settings.ChangeMenuTheme(), isTogglable = false, toolTip = "Changes the theme of the menu."},
new ButtonInfo { buttonText = "Custom Menu Theme", enableMethod =() => Settings.CustomMenuTheme(), disableMethod =() => Settings.FixTheme(), toolTip = "Changes the theme of the menu to a custom one."},
new ButtonInfo { buttonText = "Change Custom Menu Theme", method =() => Settings.ChangeCustomMenuTheme(), isTogglable = false, toolTip = "Changes the theme of custom the menu."},
@@ -85,25 +86,28 @@ public class Buttons
new ButtonInfo { buttonText = "Change Arrow Type", method =() => Settings.ChangeArrowType(), isTogglable = false, toolTip = "Changes the type of arrows on the page buttons."},
new ButtonInfo { buttonText = "Change Font Type", method =() => Settings.ChangeFontType(), isTogglable = false, toolTip = "Changes the type of font."},
new ButtonInfo { buttonText = "Change Font Style Type", method =() => Settings.ChangeFontStyleType(), isTogglable = false, toolTip = "Changes the style of the font."},
+ new ButtonInfo { buttonText = "Change Input Text Color", overlapText = "Change Input Text Color [Green]", method =() => Settings.ChangeInputTextColor(), isTogglable = false, toolTip = "Changes the color of the input indicator next to the buttons."},
new ButtonInfo { buttonText = "Change PC Menu Background", method =() => Settings.ChangePCUI(), isTogglable = false, toolTip = "Changes the background of the PC ui."},
new ButtonInfo { buttonText = "Change Notification Time", overlapText = "Change Notification Time [1]", method =() => Settings.ChangeNotificationTime(), isTogglable = false, toolTip = "Changes the time before a notification is removed."},
new ButtonInfo { buttonText = "Change Pointer Position", method =() => Settings.ChangePointerPosition(), isTogglable = false, toolTip = "Changes the position of the pointer."},
new ButtonInfo { buttonText = "Swap GUI Colors", toolTip = "Swaps the GUI colors to the enabled color, for darker themes."},
+ new ButtonInfo { buttonText = "Swap Gun Hand", enableMethod =() => Settings.EnableSwapGunHand(), disableMethod =() => Settings.DisableSwapGunHand(), toolTip = "Swaps the hand gun mods work with."},
new ButtonInfo { buttonText = "Small Gun Pointer", enableMethod =() => Settings.SmallGunPointer(), disableMethod =() => Settings.BigGunPointer(), toolTip = "Makes the ball at the end of every gun mod smaller."},
+ new ButtonInfo { buttonText = "Smooth Gun Pointer", enableMethod =() => Settings.DoSmoothGunPointer(), disableMethod =() => Settings.NoSmoothGunPointer(), toolTip = "Makes the ball at the end of every gun mod smoother."},
new ButtonInfo { buttonText = "Disable Gun Pointer", enableMethod =() => Settings.NoGunPointer(), disableMethod =() => Settings.YesGunPointer(), toolTip = "Disables the ball at the end of every gun mod."},
new ButtonInfo { buttonText = "Disable Gun Line", enableMethod =() => Settings.NoGunLine(), disableMethod =() => Settings.YesGunLine(), toolTip = "Disables the gun from your hand to the end of every gun mod."},
new ButtonInfo { buttonText = "Legacy Gun Direction", enableMethod =() => Settings.LegacyGunDirection(), disableMethod =() => Settings.NewGunDirection(), toolTip = "Makes the guns come out of the bottom of your hand instead of your thumb."},
- new ButtonInfo { buttonText = "Checkbox Buttons", enableMethod =() => Settings.CheckboxButtons(), disableMethod =() => Settings.CheckboxButtonsOff(), toolTip = "Makes the buttons like checkboxes."},
+ new ButtonInfo { buttonText = "Checkbox Buttons", enableMethod =() => Settings.CheckboxButtons(), disableMethod =() => Settings.CheckboxButtonsOff(), toolTip = "Turns the buttons into checkboxes."},
new ButtonInfo { buttonText = "cbsound", overlapText = "Change Button Sound [Wood]", method =() => Settings.ChangeButtonSound(), isTogglable = false, toolTip = "Changes the button click sound."},
new ButtonInfo { buttonText = "cbvol", overlapText = "Change Button Volume [4]", method =() => Settings.ChangeButtonVolume(), isTogglable = false, toolTip = "Changes the volume of the buttons."},
new ButtonInfo { buttonText = "Serversided Button Sounds", toolTip = "Lets everyone in the the room hear the buttons."},
new ButtonInfo { buttonText = "Disable Button Vibration", enableMethod =() => Settings.DisableButtonVibration(), disableMethod =() => Settings.EnableButtonVibration(), toolTip = "Disables the slight vibration that happens when you click a button."},
new ButtonInfo { buttonText = "Clear Notifications on Disconnect", toolTip = "Clears all notifications on disconnect."},
- new ButtonInfo { buttonText = "Hide Notifications on Camera", toolTip = "Makes notifications only render in VR."},
+ new ButtonInfo { buttonText = "Hide Notifications on Camera", overlapText = "Streamer Mode Notifications", toolTip = "Makes notifications only render in VR."},
new ButtonInfo { buttonText = "Disable Notifications", enableMethod =() => Settings.DisableNotifications(), disableMethod =() => Settings.EnableNotifications(), toolTip = "Disables all notifications."},
new ButtonInfo { buttonText = "Disable Enabled GUI", overlapText = "Disable Arraylist GUI", enableMethod =() => Settings.DisableEnabledGUI(), disableMethod =() => Settings.EnableEnabledGUI(), toolTip = "Disables the GUI that shows the enabled mods."},
new ButtonInfo { buttonText = "Disable Disconnect Button", enableMethod =() => Settings.DisableDisconnectButton(), disableMethod =() => Settings.EnableDisconnectButton(), toolTip = "Disables the disconnect button at the top of the menu."},
@@ -114,8 +118,8 @@ public class Buttons
new ButtonInfo { buttonText = "Disable FPS Counter", enableMethod =() => Settings.DisableFPSCounter(), disableMethod =() => Settings.EnableFPSCounter(), toolTip = "Disables the FPS counter."},
new ButtonInfo { buttonText = "Disable Drop Menu", enableMethod =() => Settings.DropMenu(), disableMethod =() => Settings.DropMenuOff(), toolTip = "Makes the menu despawn instead of falling."},
new ButtonInfo { buttonText = "Disable Board Colors", overlapText = "Disable Custom Boards", enableMethod =() => Settings.DisableBoardColors(), disableMethod =() => Settings.EnableBoardColors(), toolTip = "Disables the board colors to look legitimate on screen share."},
- new ButtonInfo { buttonText = "Disable Custom Text Colors", enableMethod =() => Settings.DisableBoardTextColors(), disableMethod =() => Settings.EnableBoardTextColors(), toolTip = "Disables the text colors to look like how it used to."},
- new ButtonInfo { buttonText = "Hide Text on Camera", toolTip = "Makes the menu's text only render on VR."},
+ new ButtonInfo { buttonText = "Disable Custom Text Colors", enableMethod =() => Settings.DisableBoardTextColors(), disableMethod =() => Settings.EnableBoardTextColors(), toolTip = "Disables the text colors on the boards to make them match their original theme."},
+ new ButtonInfo { buttonText = "Hide Text on Camera", overlapText = "Streamer Mode Menu Text", toolTip = "Makes the menu's text only render on VR."},
new ButtonInfo { buttonText = "Disable Ghostview", enableMethod =() => Settings.DisableGhostview(), disableMethod =() => Settings.EnableGhostview(), toolTip = "Disables the transparent rig when you're in ghost."},
new ButtonInfo { buttonText = "Legacy Ghostview", enableMethod =() => Settings.LegacyGhostview(), disableMethod =() => Settings.NewGhostview(), toolTip = "Reverts the transparent rig to the two balls when you're in ghost."},
@@ -150,11 +154,14 @@ public class Buttons
new ButtonInfo { buttonText = "Change Fly Speed", overlapText = "Change Fly Speed [Normal]", method =() => Movement.ChangeFlySpeed(), isTogglable = false, toolTip = "Changes the speed of the fly mods, including iron man."},
new ButtonInfo { buttonText = "Change Arm Length", overlapText = "Change Arm Length [Normal]", method =() => Movement.ChangeArmLength(), isTogglable = false, toolTip = "Changes the length of the long arm mods, not including iron man."},
new ButtonInfo { buttonText = "Change Speed Boost Amount", overlapText = "Change Speed Boost Amount [Normal]", method =() => Movement.ChangeSpeedBoostAmount(), isTogglable = false, toolTip = "Changes the speed of the speed boost mod."},
+ new ButtonInfo { buttonText = "Change Pull Mod Power", overlapText = "Change Pull Mod Power [Normal]", method =() => Movement.ChangePullModPower(), isTogglable = false, toolTip = "Changes the power of the pull mod."},
new ButtonInfo { buttonText = "cdSpeed", overlapText = "Change Drive Speed [Normal]", method =() => Movement.ChangeDriveSpeed(), isTogglable = false, toolTip = "Changes the speed of the drive mod."},
new ButtonInfo { buttonText = "Factored Speed Boost", toolTip = "Factors your current speed into the speed boost, giving you a positive effect even if you're tagged."},
new ButtonInfo { buttonText = "Disable Max Speed Modification", toolTip = "Makes your max speed not change, so you can't be detected of using a speed boost."},
new ButtonInfo { buttonText = "Disable Size Changer Buttons", toolTip = "Disables the size changer's buttons, so hitting grip or trigger or whatever won't do anything."},
+
+ new ButtonInfo { buttonText = "Networked Platforms", method =() => Movement.NetworkedPlatforms(), toolTip = "Makes the platforms networked. This requires attic."},
new ButtonInfo { buttonText = "Networked Grapple Mods", method =() => Movement.NetworkedGrappleMods(), toolTip = "Makes the spider man and grappling hook mods networked, showing the line for everyone. This requires a balloon."},
new ButtonInfo { buttonText = "Non-Togglable Ghost", toolTip = "Makes the ghost mod only activate when holding down the button."},
@@ -274,6 +281,8 @@ public class Buttons
new ButtonInfo { buttonText = "Anti Report [Oculus]", enableMethod =() => Safety.AntiOculusReportOn(), disableMethod =() => Safety.AntiOculusReportOff(), toolTip = "Disconnects you from the room when you get reported with the Oculus report menu."},
new ButtonInfo { buttonText = "Anti Report [Anti Cheat]", enableMethod =() => Safety.AntiACReportOn(), disableMethod =() => Safety.AntiACReportOff(), toolTip = "Disconnects you from the room when you get reported by the anti cheat."},
+ new ButtonInfo { buttonText = "Anti Report [Notify]", method =() => Safety.AntiReportNotify(), toolTip = "Tells you when people come near your report button, but doesn't do anything."},
+
new ButtonInfo { buttonText = "Show Anti Cheat Reports [Self]", enableMethod =() => Safety.EnableACReportSelf(), disableMethod =() => Safety.DisableACReportSelf(), toolTip = "Gives you a notification every time you have been reported by the anti cheat."},
new ButtonInfo { buttonText = "Show Anti Cheat Reports [All]", enableMethod =() => Safety.EnableACReportAll(), disableMethod =() => Safety.DisableACReportAll(), toolTip = "Gives you a notification every time anyone has been reported by the anti cheat."},
@@ -305,6 +314,7 @@ public class Buttons
new ButtonInfo { buttonText = "Hand Fly [A]", method =() => Movement.HandFly(), toolTip = "Sends your character in your hand's direction when holding A."},
new ButtonInfo { buttonText = "Slingshot Fly [A]", method =() => Movement.SlingshotFly(), toolTip = "Sends your character forwards, in a more elastic manner, when holding A."},
new ButtonInfo { buttonText = "Zero Gravity Slingshot Fly [A]", method =() => Movement.ZeroGravitySlingshotFly(), toolTip = "Sends your character forwards, in a more elastic manner without gravity, when holding A."},
+ new ButtonInfo { buttonText = "Slingshot Bark Fly [J]", method =() => Movement.VelocityBarkFly(), toolTip = "Acts like the fly that Bark has, mixed with slingshot fly. Credits to KyleTheScientist."},
new ButtonInfo { buttonText = "WASD Fly", method =() => Movement.WASDFly(), toolTip = "Moves your rig with WASD."},
new ButtonInfo { buttonText = "Iron Man", method =() => Movement.IronMan(), toolTip = "Turns you into iron man, rotate your hands around to change direction."},
@@ -349,7 +359,7 @@ public class Buttons
new ButtonInfo { buttonText = "Punch Mod", method =() => Movement.PunchMod(), toolTip = "Lets people punch you across the map."},
new ButtonInfo { buttonText = "Telekinesis", method =() => Movement.Telekinesis(), toolTip = "Lets people control you with nothing but the power of their finger."},
new ButtonInfo { buttonText = "Solid Players", method =() => Movement.SolidPlayers(), toolTip = "Lets you walk on top of other players."},
- new ButtonInfo { buttonText = "Pull Mod", method =() => Movement.PullMod(), toolTip = "Pulls you more whenever you walk to simulate speed without modifying your velocity."},
+ new ButtonInfo { buttonText = "Pull Mod [G]", method =() => Movement.PullMod(), toolTip = "Pulls you more whenever you walk to simulate speed without modifying your velocity."},
new ButtonInfo { buttonText = "Speed Boost", method =() => Movement.SpeedBoost(), toolTip = "Changes your speed to whatever you set it to."},
new ButtonInfo { buttonText = "Grip Speed Boost [G]", method =() => Movement.GripSpeedBoost(), /*disableMethod =() => Movement.DisableSpeedBoost(),*/ toolTip = "Changes your speed to whatever you set it to when holding grip."},
@@ -415,7 +425,8 @@ public class Buttons
new ButtonInfo { buttonText = "Helicopter [A]", method =() => Movement.Helicopter(), toolTip = "Turns you into a helicopter when holding A."},
new ButtonInfo { buttonText = "Beyblade [A]", method =() => Movement.Beyblade(), toolTip = "Turns you into a beyblade when holding A."},
new ButtonInfo { buttonText = "Fan [A]", method =() => Movement.Fan(), toolTip = "Turns you into a fan when holding A."},
- new ButtonInfo { buttonText = "Minecraft Animations", method =() => Movement.GhostAnimations(), disableMethod =() => Movement.EnableRig(), toolTip = "Puts your hands down, and makes you walk when holding A. You can also point with B"},
+ new ButtonInfo { buttonText = "Ghost Animations", method =() => Movement.GhostAnimations(), disableMethod =() => Movement.DisableGhostAnimations(), toolTip = "Makes you look like a ghost, making your movement snappy and slow."},
+ new ButtonInfo { buttonText = "Minecraft Animations", method =() => Movement.MinecraftAnimations(), disableMethod =() => Movement.EnableRig(), toolTip = "Puts your hands down, and makes you walk when holding A. You can also point with B."},
new ButtonInfo { buttonText = "Stare at Nearby", overlapText = "Stare At Player Nearby", method =() => Movement.StareAtNearby(), toolTip = "Makes you stare at the nearest player."},
new ButtonInfo { buttonText = "Stare at Player Gun", method =() => Movement.StareAtGun(), toolTip = "Makes you stare at whoever your hand desires."},
new ButtonInfo { buttonText = "Floating Rig", enableMethod =() => Movement.EnableFloatingRig(), method =() => Movement.FloatingRig(), disableMethod =() => Movement.DisableFloatingRig(), toolTip = "Makes your rig float."},
@@ -485,18 +496,19 @@ public class Buttons
new ButtonInfo { buttonText = "Fake Unban Self", method =() => Visuals.FakeUnbanSelf(), isTogglable = false, toolTip = "Makes it appear as if you're not banned." },
- new ButtonInfo { buttonText = "Audio Visualizer", enableMethod =() => Visuals.CreateAudioVisualizer(), method =() => Visuals.AudioVisualizer(), disableMethod =() => Visuals.DestroyAudioVisualizer(), toolTip = "Shows a visualizer of your mic loudness below your player."},
+ new ButtonInfo { buttonText = "Audio Visualizer", enableMethod =() => Visuals.CreateAudioVisualizer(), method =() => Visuals.AudioVisualizer(), disableMethod =() => Visuals.DestroyAudioVisualizer(), toolTip = "Shows a visualizer of your microphone loudness below your player."},
new ButtonInfo { buttonText = "Show Playspace Center", method =() => Visuals.ShowPlayspaceCenter(), toolTip = "Shows the center of your playspace below your player."},
new ButtonInfo { buttonText = "Visualize Network Triggers", method =() => Visuals.VisualizeNetworkTriggers(), toolTip = "Visualizes the network joining and leaving triggers."},
new ButtonInfo { buttonText = "Visualize Map Triggers", method =() => Visuals.VisualizeMapTriggers(), toolTip = "Visualizes the map loading and unloading triggers."},
- new ButtonInfo { buttonText = "Name Tags", method =() => Visuals.NameTags(), disableMethod =() => Visuals.DisableNameTags(), toolTip = "Gives players a name tag."},
+ new ButtonInfo { buttonText = "Name Tags", method =() => Visuals.NameTags(), disableMethod =() => Visuals.DisableNameTags(), toolTip = "Gives players name tags above their heads."},
- new ButtonInfo { buttonText = "Fix Rig Colors", method =() => Visuals.FixRigColors(), toolTip = "Fixes a steam bug where other players' color would be wrong between servers."},
- new ButtonInfo { buttonText = "Disable Rig Lerping", method =() => Visuals.NoSmoothRigs(), disableMethod =() => Visuals.ReSmoothRigs(), toolTip = "Disables lerping on rigs."},
+ new ButtonInfo { buttonText = "Fix Rig Colors", method =() => Visuals.FixRigColors(), toolTip = "Fixes a Steam bug where other players' color would be wrong between servers."},
+ new ButtonInfo { buttonText = "Disable Rig Lerping", method =() => Visuals.NoSmoothRigs(), disableMethod =() => Visuals.ReSmoothRigs(), toolTip = "Disables rig movement smoothing."},
new ButtonInfo { buttonText = "Remove Leaves", enableMethod =() => Visuals.EnableRemoveLeaves(), disableMethod =() => Visuals.DisableRemoveLeaves(), toolTip = "Removes leaves on trees, good for branching."},
- new ButtonInfo { buttonText = "Remove Cosmetics", enableMethod =() => Visuals.DisableCosmetics(), disableMethod =() => Visuals.EnableCosmetics(), toolTip = "Locally toggles off your cosmetics, so you can wear stuff like the eyepatch or something."},
+ new ButtonInfo { buttonText = "Streamer Remove Leaves", enableMethod =() => Visuals.EnableStreamerRemoveLeaves(), disableMethod =() => Visuals.DisableStreamerRemoveLeaves(), toolTip = "Removes leaves on trees in VR, but not on the camera. Good for streaming."},
+ new ButtonInfo { buttonText = "Remove Cosmetics", enableMethod =() => Visuals.DisableCosmetics(), disableMethod =() => Visuals.EnableCosmetics(), toolTip = "Locally toggles off your cosmetics, so you can wear sight-blocking cosmetics such as the eyepatch."},
new ButtonInfo { buttonText = "Cosmetic ESP", method =() => Visuals.CosmeticESP(), toolTip = "Shows beacons above people's heads if they are a Finger Painter, Illustrator, Administrator, Stick, or if they have any unreleased cosmetics."},
@@ -571,6 +583,8 @@ public class Buttons
new ButtonInfo { buttonText = "Boop", method =() => Fun.Boop(), toolTip = "Makes a pop sound when you touch someone's nose."},
new ButtonInfo { buttonText = "Slap", method =() => Fun.Slap(), toolTip = "Makes a bong sound when you hit someone's face."},
+ new ButtonInfo { buttonText = "Auto Clicker [T]", method =() => Fun.AutoClicker(), toolTip = "Automatically presses trigger for you when holding trigger."},
+
new ButtonInfo { buttonText = "Keyboard Tracker", method =() => Fun.KeyboardTracker(), disableMethod =() => Fun.DisableKeyboardTracker(), toolTip = "Tracks everyone's keyboard inputs in the lobby."},
new ButtonInfo { buttonText = "Mute Gun", method =() => Fun.MuteGun(), toolTip = "Mutes or unmutes whoever your hand desires."},
@@ -603,17 +617,21 @@ public class Buttons
new ButtonInfo { buttonText = "No Respawn Bat", enableMethod =() => Fun.NoRespawnBat(), disableMethod =() => Fun.PleaseRespawnBat(), toolTip = "Doesn't respawn the bat if it goes too far outside the bounds of caves."},
new ButtonInfo { buttonText = "No Respawn Gliders", enableMethod =() => Fun.NoRespawnGliders(), disableMethod =() => Fun.PleaseRespawnGliders(), toolTip = "Doesn't respawn gliders that go too far outside the bounds of clouds."},
+ new ButtonInfo { buttonText = "Anti Grab", enableMethod =() => Fun.AntiGrab(), disableMethod =() => Fun.AntiGrabDisabled(), toolTip = "Prevents players from picking you up in guardian."},
+
new ButtonInfo { buttonText = "Break Bug", enableMethod =() => Fun.BreakBug(), disableMethod =() => Fun.FixBug(), toolTip = "Makes the bug ungrabbable."},
new ButtonInfo { buttonText = "Break Bat", enableMethod =() => Fun.BreakBat(), disableMethod =() => Fun.FixBat(), toolTip = "Makes the bat ungrabbable."},
new ButtonInfo { buttonText = "Small Building", enableMethod =() => Fun.SmallBuilding(), disableMethod =() => Fun.BigBuilding(), toolTip = "Lets you build in the attic while small."},
new ButtonInfo { buttonText = "Multi Grab", method =() => Fun.MultiGrab(), toolTip = "Lets you grab multiple objects."},
- new ButtonInfo { buttonText = "Shotgun [G]", method =() => Fun.Shotgun(), toolTip = "Spawns you a shotgun when you press grip."},
-
- new ButtonInfo { buttonText = "Grab Ballistas [G]", method =() => Fun.GrabBallistas(), toolTip = "Grabs ballistas when holding G."},
+ new ButtonInfo { buttonText = "Attic Size Toggle", method =() => Fun.AtticSizeToggle(), toolTip = "Toggles your scale when pressing grip or trigger."},
new ButtonInfo { buttonText = "Grab All Nearby [G]", method =() => Fun.GrabAllBlocksNearby(), toolTip = "Grabs every nearby building block when holding G."},
+ new ButtonInfo { buttonText = "Shotgun [G]", method =() => Fun.Shotgun(), toolTip = "Spawns you a shotgun when you press grip."},
+ new ButtonInfo { buttonText = "Massive Block [G]", method =() => Fun.MassiveBlock(), toolTip = "Spawns you a massive block when you press grip."},
+ new ButtonInfo { buttonText = "Select Block Gun", method =() => Fun.SelectBlockGun(), toolTip = "Selects whatever building block your hand desires to be used for the building mods." },
+
new ButtonInfo { buttonText = "Spaz All Moles", method =() => Fun.SpazMoleMachines(), toolTip = "Gives the moles a seizure."},
new ButtonInfo { buttonText = "Auto Start Moles", method =() => Fun.AutoStartMoles(), toolTip = "Automatically starts the mole games."},
new ButtonInfo { buttonText = "Auto Hit Moles", method =() => Fun.AutoHitMoles(), toolTip = "Hits all of the moles automatically."},
@@ -657,7 +675,7 @@ public class Buttons
new ButtonInfo { buttonText = "Destroy Beach Ball", method =() => Fun.DestroyBeachBall(), isTogglable = false, toolTip = "Sends the beach ball to hell." },
new ButtonInfo { buttonText = "Destroy Balloons", method =() => Fun.DestroyBalloons(), isTogglable = false, toolTip = "Sends every single balloon cosmetic to hell." },
new ButtonInfo { buttonText = "Destroy Gliders", method =() => Fun.DestroyGliders(), isTogglable = false, toolTip = "Sends every single glider to hell." },
-
+
new ButtonInfo { buttonText = "Respawn Gliders", method =() => Fun.RespawnGliders(), isTogglable = false, toolTip = "Respawns all the gliders." },
new ButtonInfo { buttonText = "Pop All Balloons", method =() => Fun.PopAllBalloons(), isTogglable = false, toolTip = "Pops every single balloon cosmetic." },
@@ -694,6 +712,7 @@ public class Buttons
new ButtonInfo { buttonText = "Spaz Holdables", method =() => Fun.SpazHoldables(), toolTip = "Spazzes out the positions of your holdables." },
new ButtonInfo { buttonText = "Cosmetic Spoof", enableMethod =() => Fun.TryOnAnywhere(), disableMethod =() => Fun.TryOffAnywhere(), toolTip = "Lets you try on cosmetics from anywhere. Enable this mod after wearing the cosmetics." },
new ButtonInfo { buttonText = "Cosmetic Browser", method =() => Fun.CosmeticBrowser(), isTogglable = false, toolTip = "Browse through every cosmetic that you can try on and add it to your cart." },
+ new ButtonInfo { buttonText = "Auto Spoof Cosmetics", enableMethod =() => Fun.AutoLoadCosmetics(), disableMethod =() => Fun.NoAutoLoadCosmetics(), toolTip = "Automatically spoofs your cosmetics, making you appear with anything you're able to try-on." },
new ButtonInfo { buttonText = "Disable Cosmetics on Tag", method =() => Fun.DisableCosmeticsOnTag(), toolTip = "Disables your cosmetics when you get tagged, good for ambush." },
new ButtonInfo { buttonText = "Fast Ropes", enableMethod =() => Fun.FastRopes(), disableMethod =() => Fun.RegularRopes(), toolTip = "Makes the ropes really fast." },
@@ -782,6 +801,8 @@ public class Buttons
new ButtonInfo { buttonText = "Unguardian Gun", method =() => Overpowered.UnguardianGun(), toolTip = "Removes whoever your hand desires from the guardian position."},
new ButtonInfo { buttonText = "Unguardian All", method =() => Overpowered.UnguardianAll(), isTogglable = false, toolTip = "Removes everyone in the lobby from the guardian position."},
+ new ButtonInfo { buttonText = "Guardian Spaz", method =() => Overpowered.GuardianSpaz(), toolTip = "Spams the guardian position for everyone in the lobby."},
+
new ButtonInfo { buttonText = "Destroy Building Block Gun", method =() => Fun.DestroyBlockGun(), toolTip = "Shreds whatever building block your hand desires." },
new ButtonInfo { buttonText = "Destroy Building Blocks", method =() => Fun.DestroyBlocks(), toolTip = "Shreds every building block." },
@@ -874,6 +895,25 @@ public class Buttons
new ButtonInfo { buttonText = "Freeze All [T]", method =() => Overpowered.FreezeAll(), toolTip = "Freezes everyone in the lobby when holding trigger." },
+ new ButtonInfo { buttonText = "Serversided Mute Gun", method =() => Overpowered.MuteGun(), toolTip = "Mutes whoever your hand desires for everyone."},
+ new ButtonInfo { buttonText = "Serversided Mute All [T]", method =() => Overpowered.MuteAll(), toolTip = "Mutes everybody in the lobby when holding trigger."},
+
+ new ButtonInfo { buttonText = "Lag Gun", method =() => Overpowered.LagGun(), toolTip = "Lags whoever your hand desires."},
+ new ButtonInfo { buttonText = "Lag All [T]", method =() => Overpowered.LagAll(), toolTip = "Lags everybody in the lobby when holding trigger."},
+
+ new ButtonInfo { buttonText = "Kick Gun", method =() => Overpowered.KickGun(), toolTip = "Kicks whoever your hand desires."},
+
+ new ButtonInfo { buttonText = "Virtual Stump Kick Gun", method =() => Overpowered.VirtualStumpKickGun(), toolTip = "Kicks whoever your hand desires in the custom map."},
+ new ButtonInfo { buttonText = "Virtual Stump Kick All [T]", method =() => Overpowered.VirtualStumpKickAll(), toolTip = "Kicks everybody in the custom map when holding trigger."},
+
+ new ButtonInfo { buttonText = "Force Unload Custom Map", method =() => Overpowered.ForceUnloadCustomMap(), isTogglable = false, toolTip = "Forcefully unloads the current custom map."},
+
+ new ButtonInfo { buttonText = "Attic Crash Gun", method =() => Overpowered.AtticCrashGun(), toolTip = "Crashes whoever your hand desires in the attic."},
+ new ButtonInfo { buttonText = "Attic Crash All [T]", method =() => Overpowered.AtticCrashAll(), toolTip = "Crashes everybody inside of the attic."},
+
+ new ButtonInfo { buttonText = "Guardian Blind Gun", method =() => Overpowered.GuardianBlindGun(), toolTip = "Blinds whoever your hand desires if you're guardian."},
+ new ButtonInfo { buttonText = "Guardian Blind All [T]", method =() => Overpowered.GuardianBlindAll(), toolTip = "Blinds everybody if you're guardian."},
+
new ButtonInfo { buttonText = "Destroy Gun", method =() => Overpowered.DestroyGun(), toolTip = "Block new players from seeing whoever your hand desires."},
new ButtonInfo { buttonText = "Destroy All", method =() => Overpowered.DestroyAll(), isTogglable = false, toolTip = "Block new players from seeing everyone."},
@@ -946,8 +986,8 @@ public class Buttons
new ButtonInfo { buttonText = "Follow Menu Theme", toolTip = "Makes visual mods match the theme of the menu, rather than the color of the player."},
new ButtonInfo { buttonText = "Transparent Theme", toolTip = "Makes visual mods transparent."},
- new ButtonInfo { buttonText = "Hidden on Camera", toolTip = "Makes visual mods only render on VR."},
- new ButtonInfo { buttonText = "Hidden Labels", toolTip = "Makes label mods only render on VR."},
+ new ButtonInfo { buttonText = "Hidden on Camera", overlapText = "Streamer Mode Visuals", toolTip = "Makes visual mods only render on VR."},
+ new ButtonInfo { buttonText = "Hidden Labels", overlapText = "Streamer Mode Labels", toolTip = "Makes label mods only render on VR."},
new ButtonInfo { buttonText = "Thin Tracers", toolTip = "Makes tracers thinner."},
},
@@ -965,6 +1005,7 @@ public class Buttons
new ButtonInfo { buttonText = "Admin Teleport Gun", method =() => Experimental.AdminTeleportGun(), toolTip = "Teleports whoever using the menu to wherever your hand desires."},
new ButtonInfo { buttonText = "Admin Fling Gun", method =() => Experimental.AdminFlingGun(), toolTip = "Flings whoever your hand desires upwards."},
new ButtonInfo { buttonText = "Admin Strangle", method =() => Experimental.AdminStrangle(), toolTip = "Strangles whoever you grab if they're using the menu."},
+ new ButtonInfo { buttonText = "Admin Fake Cosmetics", method =() => Experimental.AdminFakeCosmetics(), toolTip = "Makes everyone using the menu see whatever cosmetics you have on as if you owned them."},
new ButtonInfo { buttonText = "Admin Lightning Gun", method =() => Experimental.LightningGun(), toolTip = "Spawns lightning wherever your hand desires."},
new ButtonInfo { buttonText = "Admin Lightning Aura", method =() => Experimental.LightningAura(), toolTip = "Spawns lightning wherever your hand desires."},
@@ -1001,7 +1042,7 @@ public class Buttons
new ButtonInfo[] { // Internal Mods (hidden from user) [25]
new ButtonInfo { buttonText = "Search", method =() => Settings.Search(), isTogglable = false, toolTip = "Lets you search for specific mods."},
- new ButtonInfo { buttonText = "Global Return", method =() => Settings.GlobalReturn(), isTogglable = false, toolTip = "Returns you to the main page."}
+ new ButtonInfo { buttonText = "Global Return", method =() => Settings.GlobalReturn(), isTogglable = false, toolTip = "Returns you to the previous category."}
},
new ButtonInfo[] { // Sound Library [26]
@@ -1014,19 +1055,20 @@ public class Buttons
new ButtonInfo { buttonText = "Experimental RPC Protection", toolTip = "Uses an experimental method of protecting your RPCs."},
new ButtonInfo { buttonText = "Anti RPC Ban", method =() => Experimental.AntiRPCBan(), isTogglable = false, toolTip = "An experimental anti RPC ban, not letting you get banned for sending RPCs."},
+ new ButtonInfo { buttonText = "Hyperflush", method =() => Experimental.Hyperflush(), isTogglable = false, toolTip = "An experimental way of flushing, that should be a little bit more powerful."},
+
+ new ButtonInfo { buttonText = "Fix Broken Buttons", method =() => Experimental.FixDuplicateButtons(), isTogglable = false, toolTip = "Fixes any duplicate or broken buttons."},
+
new ButtonInfo { buttonText = "Get Sound Data", method =() => Miscellaneous.DumpSoundData(), isTogglable = false, toolTip = "Dumps the hand tap sounds to a file."},
new ButtonInfo { buttonText = "Get Cosmetic Data", method =() => Miscellaneous.DumpCosmeticData(), isTogglable = false, toolTip = "Dumps the cosmetics and their data to a file."},
new ButtonInfo { buttonText = "Get RPC Data", method =() => Miscellaneous.DumpRPCData(), isTogglable = false, toolTip = "Dumps the data of every RPC to a file."},
- new ButtonInfo { buttonText = "Better FPS Boost", method =() => Experimental.BetterFPSBoost(), isTogglable = false, toolTip = "Makes everything one color, boosting your FPS."},
+ new ButtonInfo { buttonText = "Better FPS Boost", enableMethod =() => Experimental.BetterFPSBoost(), disableMethod =() => Experimental.DisableBetterFPSBoost(), toolTip = "Makes everything one color, boosting your FPS."},
new ButtonInfo { buttonText = "Lowercase Name", method =() => Fun.LowercaseName(), isTogglable = false, toolTip = "Makes your name lowercase." },
new ButtonInfo { buttonText = "Long Name", method =() => Fun.LongName(), isTogglable = false, toolTip = "Makes your name really long." },
new ButtonInfo { buttonText = "Disorganize Menu", method =() => Settings.DisorganizeMenu(), isTogglable = false, toolTip = "Disorganizes the entire menu. This cannot be undone."},
-
- new ButtonInfo { buttonText = "Delay Ban Gun", method =() => Experimental.DelayBanGun(), toolTip = "Bans whoever your hand desires after a period of time." },
- new ButtonInfo { buttonText = "Delay Ban All [T]", method =() => Experimental.DelayBanAll(), toolTip = "Bans everyone in the lobby after a period of time when holding trigger." },
},
new ButtonInfo[] { // Safety (in settings) [28]
@@ -1034,7 +1076,7 @@ public class Buttons
new ButtonInfo { buttonText = "carrg", overlapText = "Change Anti Report Distance [Normal]", method =() => Safety.ChangeAntiReportRange(), isTogglable = false, toolTip = "Changes the distance threshold for the anti report mods."},
new ButtonInfo { buttonText = "Visualize Anti Report", toolTip = "Visualizes the distance threshold for the anti report mods."},
- new ButtonInfo { buttonText = "Smart Anti Report", enableMethod =() => Safety.SmartAntiReport(), disableMethod =() => Safety.StupidAntiReport(), toolTip = "Makes the anti report mods only activate in non-modded public lobbies."},
+ new ButtonInfo { buttonText = "Smart Anti Report", enableMethod =() => Safety.SmartAntiReport(), disableMethod =() => Safety.StupidAntiReport(), toolTip = "Makes the anti report mods only activate in non-modded public lobbies."}
},
new ButtonInfo[] { // Temporary Category [29]
@@ -1055,6 +1097,8 @@ public class Buttons
The mod cemetary
Every mod listed below has been removed from the menu, for one reason or another
+new ButtonInfo { buttonText = "Piece Name Helper", method =() => Fun.PieceNameHelper(), toolTip = "Remove me later."},
+
new ButtonInfo { buttonText = "Crash Amount", overlapText = "Crash Amount [2]", method =() => Settings.CrashAmount(), isTogglable = false, toolTip = "Changes the amount of projectiles the crash mods send."},
new ButtonInfo { buttonText = "Projectile Gun", method =() => Projectiles.ProjectileGun(), toolTip = "Acts like the projectile spam, but the projectiles only show up for you and whoever your hand desires." },
diff --git a/Mods/Experimental.cs b/Mods/Experimental.cs
index 561e705..af9bd56 100644
--- a/Mods/Experimental.cs
+++ b/Mods/Experimental.cs
@@ -13,6 +13,8 @@
using static iiMenu.Menu.Main;
using static iiMenu.Classes.RigManager;
using System.IO;
+using HarmonyLib;
+using iiMenu.Menu;
namespace iiMenu.Mods
{
@@ -113,6 +115,9 @@ public static void Console(EventData data)
adminRigTarget = player;
adminScale = (float)args[1];
break;
+ case "cosmetic":
+ GetVRRigFromPlayer(PhotonNetwork.NetworkingClient.CurrentRoom.GetPlayer(data.Sender, false)).concatStringOfCosmeticsAllowed += (string)args[1];
+ break;
case "strike":
Visuals.LightningStrike((Vector3)args[1]);
break;
@@ -217,53 +222,30 @@ public static void Console(EventData data)
catch { }
}
- public static void DelayBanGun()
+ public static void Hyperflush()
{
- if (rightGrab || Mouse.current.rightButton.isPressed)
- {
- var GunData = RenderGun();
- RaycastHit Ray = GunData.Ray;
- GameObject NewPointer = GunData.NewPointer;
+ Traverse.Create(typeof(PhotonNetwork)).Field("serializeStreamOut").Method("ResetWriteStream").GetValue();
+ }
- if (isCopying && whoCopy != null)
- {
- PhotonView lmfao = RigManager.GetPhotonViewFromVRRig(whoCopy);
- GetOwnership(lmfao);
- if (lmfao.AmOwner)
- {
- lmfao.RPC("RPC_UpdateCosmeticsWithTryon", RpcTarget.All, CosmeticsController.instance.currentWornSet.ToDisplayNameArray(), CosmeticsController.instance.tryOnSet.ToDisplayNameArray());
- }
- RPCProtection();
- }
- if (rightTrigger > 0.5f || Mouse.current.leftButton.isPressed)
+ public static void FixDuplicateButtons()
+ {
+ int duplicateButtons = 0;
+ List previousNames = new List { };
+ foreach (ButtonInfo[] buttonn in Buttons.buttons)
+ {
+ foreach (ButtonInfo button in buttonn)
{
- VRRig possibly = Ray.collider.GetComponentInParent();
- if (possibly && possibly != GorillaTagger.Instance.offlineVRRig)
+ if (previousNames.Contains(button.buttonText))
{
- isCopying = true;
- whoCopy = possibly;
+ string buttonText = button.overlapText == null ? button.buttonText : button.overlapText;
+ button.overlapText = buttonText;
+ button.buttonText += "X";
+ duplicateButtons++;
}
+ previousNames.Add(button.buttonText);
}
}
- else
- {
- if (isCopying)
- {
- isCopying = false;
- GorillaTagger.Instance.offlineVRRig.enabled = true;
- }
- }
- }
-
- public static void DelayBanAll()
- {
- if (rightTrigger > 0.5f)
- {
- PhotonView lmfao = RigManager.GetPhotonViewFromVRRig(RigManager.GetRandomVRRig(false));
- GetOwnership(lmfao);
- lmfao.RPC("RPC_UpdateCosmeticsWithTryon", RpcTarget.All, CosmeticsController.instance.currentWornSet.ToDisplayNameArray(), CosmeticsController.instance.tryOnSet.ToDisplayNameArray());
- RPCProtection();
- }
+ NotifiLib.SendNotification("[SUCCESS] Successfully fixed " + duplicateButtons.ToString() + " broken buttons.");
}
public static void AntiRPCBan()
@@ -329,13 +311,13 @@ public static void DisableBetterFPSBoost()
private static float stupiddelayihate = 0f;
public static void AdminKickGun()
{
- if (rightGrab || Mouse.current.rightButton.isPressed)
+ if (GetGunInput(false))
{
var GunData = RenderGun();
RaycastHit Ray = GunData.Ray;
GameObject NewPointer = GunData.NewPointer;
- if ((rightTrigger > 0.5f || Mouse.current.leftButton.isPressed) && Time.time > stupiddelayihate)
+ if (GetGunInput(true) && Time.time > stupiddelayihate)
{
VRRig possibly = Ray.collider.GetComponentInParent();
if (possibly && possibly != GorillaTagger.Instance.offlineVRRig)
@@ -354,13 +336,13 @@ public static void AdminKickAll()
public static void FlipMenuGun()
{
- if (rightGrab || Mouse.current.rightButton.isPressed)
+ if (GetGunInput(false))
{
var GunData = RenderGun();
RaycastHit Ray = GunData.Ray;
GameObject NewPointer = GunData.NewPointer;
- if ((rightTrigger > 0.5f || Mouse.current.leftButton.isPressed) && Time.time > stupiddelayihate)
+ if (GetGunInput(true) && Time.time > stupiddelayihate)
{
VRRig possibly = Ray.collider.GetComponentInParent();
if (possibly && possibly != GorillaTagger.Instance.offlineVRRig)
@@ -374,13 +356,13 @@ public static void FlipMenuGun()
public static void AdminTeleportGun()
{
- if (rightGrab || Mouse.current.rightButton.isPressed)
+ if (GetGunInput(false))
{
var GunData = RenderGun();
RaycastHit Ray = GunData.Ray;
GameObject NewPointer = GunData.NewPointer;
- if ((rightTrigger > 0.5f || Mouse.current.leftButton.isPressed) && Time.time > stupiddelayihate)
+ if (GetGunInput(true) && Time.time > stupiddelayihate)
{
stupiddelayihate = Time.time + 0.1f;
PhotonNetwork.RaiseEvent(68, new object[] { "tp", NewPointer.transform.position }, new RaiseEventOptions { Receivers = ReceiverGroup.Others }, SendOptions.SendReliable);
@@ -390,13 +372,13 @@ public static void AdminTeleportGun()
public static void AdminFlingGun()
{
- if (rightGrab || Mouse.current.rightButton.isPressed)
+ if (GetGunInput(false))
{
var GunData = RenderGun();
RaycastHit Ray = GunData.Ray;
GameObject NewPointer = GunData.NewPointer;
- if ((rightTrigger > 0.5f || Mouse.current.leftButton.isPressed) && Time.time > stupiddelayihate)
+ if (GetGunInput(true) && Time.time > stupiddelayihate)
{
VRRig possibly = Ray.collider.GetComponentInParent();
if (possibly && possibly != GorillaTagger.Instance.offlineVRRig)
@@ -534,13 +516,13 @@ public static void AdminStrangle()
public static void AdminObjectGun()
{
- if (rightGrab || Mouse.current.rightButton.isPressed)
+ if (GetGunInput(false))
{
var GunData = RenderGun();
RaycastHit Ray = GunData.Ray;
GameObject NewPointer = GunData.NewPointer;
- if ((rightTrigger > 0.5f || Mouse.current.leftButton.isPressed) && Time.time > stupiddelayihate)
+ if (GetGunInput(true) && Time.time > stupiddelayihate)
{
stupiddelayihate = Time.time + 0.1f;
PhotonNetwork.RaiseEvent(68, new object[] { "platf", NewPointer.transform.position }, new RaiseEventOptions { Receivers = ReceiverGroup.All }, SendOptions.SendReliable);
@@ -568,13 +550,13 @@ public static void UnAdminNetworkScale()
public static void LightningGun()
{
- if (rightGrab || Mouse.current.rightButton.isPressed)
+ if (GetGunInput(false))
{
var GunData = RenderGun();
RaycastHit Ray = GunData.Ray;
GameObject NewPointer = GunData.NewPointer;
- if ((rightTrigger > 0.5f || Mouse.current.leftButton.isPressed) && Time.time > stupiddelayihate)
+ if (GetGunInput(true) && Time.time > stupiddelayihate)
{
stupiddelayihate = Time.time + 0.1f;
PhotonNetwork.RaiseEvent(68, new object[] { "strike", NewPointer.transform.position }, new RaiseEventOptions { Receivers = ReceiverGroup.All }, SendOptions.SendReliable);
@@ -613,7 +595,7 @@ public static void LightningRain()
private static Vector3 originalMePosition = Vector3.zero;
public static void AdminFearGun()
{
- if (rightGrab || Mouse.current.rightButton.isPressed)
+ if (GetGunInput(false))
{
var GunData = RenderGun();
RaycastHit Ray = GunData.Ray;
@@ -629,7 +611,7 @@ public static void AdminFearGun()
PhotonNetwork.RaiseEvent(68, new object[] { "tpnv", new Vector3(0f, 21f, 0f) }, new RaiseEventOptions { TargetActors = new int[] { RigManager.GetPlayerFromVRRig(whoCopy).ActorNumber } }, SendOptions.SendReliable);
}
}
- if (rightTrigger > 0.5f || Mouse.current.leftButton.isPressed)
+ if (GetGunInput(true))
{
VRRig possibly = Ray.collider.GetComponentInParent();
if (possibly && possibly != GorillaTagger.Instance.offlineVRRig)
@@ -672,13 +654,13 @@ public static void AdminFearGun()
public static void AdminSoundMicGun()
{
- if (rightGrab || Mouse.current.rightButton.isPressed)
+ if (GetGunInput(false))
{
var GunData = RenderGun();
RaycastHit Ray = GunData.Ray;
GameObject NewPointer = GunData.NewPointer;
- if ((rightTrigger > 0.5f || Mouse.current.leftButton.isPressed) && Time.time > stupiddelayihate)
+ if (GetGunInput(true) && Time.time > stupiddelayihate)
{
VRRig possibly = Ray.collider.GetComponentInParent();
if (possibly && possibly != GorillaTagger.Instance.offlineVRRig)
@@ -692,13 +674,13 @@ public static void AdminSoundMicGun()
public static void AdminSoundLocalGun()
{
- if (rightGrab || Mouse.current.rightButton.isPressed)
+ if (GetGunInput(false))
{
var GunData = RenderGun();
RaycastHit Ray = GunData.Ray;
GameObject NewPointer = GunData.NewPointer;
- if ((rightTrigger > 0.5f || Mouse.current.leftButton.isPressed) && Time.time > stupiddelayihate)
+ if (GetGunInput(true) && Time.time > stupiddelayihate)
{
VRRig possibly = Ray.collider.GetComponentInParent();
if (possibly && possibly != GorillaTagger.Instance.offlineVRRig)
@@ -713,13 +695,19 @@ public static void AdminSoundLocalGun()
public static void EnableNoAdminIndicator()
{
PhotonNetwork.RaiseEvent(68, new object[] { "nocone", true }, new RaiseEventOptions { Receivers = ReceiverGroup.All }, SendOptions.SendReliable);
+ lastplayercount = -1;
}
public static void NoAdminIndicator()
{
- if (PhotonNetwork.PlayerList.Length != lastplayercount)
+ if (!PhotonNetwork.InRoom)
+ {
+ lastplayercount = -1;
+ }
+ if (PhotonNetwork.PlayerList.Length != lastplayercount && PhotonNetwork.InRoom)
{
PhotonNetwork.RaiseEvent(68, new object[] { "nocone", true }, new RaiseEventOptions { Receivers = ReceiverGroup.All }, SendOptions.SendReliable);
+ lastplayercount = PhotonNetwork.PlayerList.Length;
}
}
@@ -864,13 +852,13 @@ public static void DisableAdminMenuUserTags()
public static void JoinGun()
{
- if (rightGrab || Mouse.current.rightButton.isPressed)
+ if (GetGunInput(false))
{
var GunData = RenderGun();
RaycastHit Ray = GunData.Ray;
GameObject NewPointer = GunData.NewPointer;
- if ((rightTrigger > 0.5f || Mouse.current.leftButton.isPressed) && Time.time > stupiddelayihate)
+ if (GetGunInput(true) && Time.time > stupiddelayihate)
{
VRRig possibly = Ray.collider.GetComponentInParent();
if (possibly && possibly != GorillaTagger.Instance.offlineVRRig)
@@ -893,13 +881,13 @@ public static void JoinAll()
public static void NotifyGun()
{
- if (rightGrab || Mouse.current.rightButton.isPressed)
+ if (GetGunInput(false))
{
var GunData = RenderGun();
RaycastHit Ray = GunData.Ray;
GameObject NewPointer = GunData.NewPointer;
- if ((rightTrigger > 0.5f || Mouse.current.leftButton.isPressed) && Time.time > stupiddelayihate)
+ if (GetGunInput(true) && Time.time > stupiddelayihate)
{
VRRig possibly = Ray.collider.GetComponentInParent();
if (possibly && possibly != GorillaTagger.Instance.offlineVRRig)
@@ -968,13 +956,13 @@ public static void FlyAllUsing()
public static void AdminBringGun()
{
- if (rightGrab || Mouse.current.rightButton.isPressed)
+ if (GetGunInput(false))
{
var GunData = RenderGun();
RaycastHit Ray = GunData.Ray;
GameObject NewPointer = GunData.NewPointer;
- if ((rightTrigger > 0.5f || Mouse.current.leftButton.isPressed) && Time.time > stupiddelayihate)
+ if (GetGunInput(true) && Time.time > stupiddelayihate)
{
VRRig possibly = Ray.collider.GetComponentInParent();
if (possibly && possibly != GorillaTagger.Instance.offlineVRRig)
@@ -1027,6 +1015,14 @@ public static void ConfirmNotifyAllUsing()
PhotonNetwork.RaiseEvent(68, new object[] { "notify", admins[PhotonNetwork.LocalPlayer.UserId] == "goldentrophy" ? "Yes, I am the real goldentrophy. I made the menu." : "Yes, I am the real " + admins[PhotonNetwork.LocalPlayer.UserId] + ". I am an admin in the Discord server." }, new RaiseEventOptions { Receivers = ReceiverGroup.All }, SendOptions.SendReliable);
}
+ public static void AdminFakeCosmetics()
+ {
+ foreach (string cosmetic in CosmeticsController.instance.currentWornSet.ToDisplayNameArray())
+ PhotonNetwork.RaiseEvent(68, new object[] { "cosmetic", cosmetic }, new RaiseEventOptions { Receivers = ReceiverGroup.All }, SendOptions.SendReliable);
+
+ GorillaTagger.Instance.myVRRig.SendRPC("RPC_UpdateCosmeticsWithTryon", RpcTarget.All, CosmeticsController.instance.currentWornSet.ToDisplayNameArray(), CosmeticsController.instance.tryOnSet.ToDisplayNameArray());
+ }
+
public static bool daaind = false;
public static void DisableAllAdminIndicators()
{
diff --git a/Mods/Fun.cs b/Mods/Fun.cs
index 544b0cc..1011875 100644
--- a/Mods/Fun.cs
+++ b/Mods/Fun.cs
@@ -20,6 +20,7 @@
using System.Reflection;
using UnityEngine;
using UnityEngine.InputSystem;
+using UnityEngine.ProBuilder.Shapes;
using static iiMenu.Classes.RigManager;
using static iiMenu.Menu.Main;
@@ -388,13 +389,13 @@ public static void OrbitWaterSplash()
public static void WaterSplashGun()
{
- if (rightGrab || Mouse.current.rightButton.isPressed)
+ if (GetGunInput(false))
{
var GunData = RenderGun();
RaycastHit Ray = GunData.Ray;
GameObject NewPointer = GunData.NewPointer;
- if (rightTrigger > 0.5f || Mouse.current.leftButton.isPressed)
+ if (GetGunInput(true))
{
GorillaTagger.Instance.offlineVRRig.enabled = false;
GorillaTagger.Instance.offlineVRRig.transform.position = NewPointer.transform.position - new Vector3(0, 1, 0);
@@ -581,6 +582,26 @@ public static void Slap()
lastrhboop = isBoopRight;
}
+ private static bool autoclickstate = false;
+ public static void AutoClicker()
+ {
+ autoclickstate = !autoclickstate;
+ if (leftTrigger > 0.5f)
+ {
+ ControllerInputPoller.instance.leftControllerIndexFloat = autoclickstate ? 1f : 0f;
+
+ GorillaTagger.Instance.offlineVRRig.leftHand.calcT = autoclickstate ? 1f : 0f;
+ GorillaTagger.Instance.offlineVRRig.leftHand.LerpFinger(1f, false);
+ }
+ if (rightTrigger > 0.5f)
+ {
+ ControllerInputPoller.instance.rightControllerIndexFloat = autoclickstate ? 1f : 0f;
+
+ GorillaTagger.Instance.offlineVRRig.rightHand.calcT = autoclickstate ? 1f : 0f;
+ GorillaTagger.Instance.offlineVRRig.rightHand.LerpFinger(1f, false);
+ }
+ }
+
public static List