diff --git a/MiraAPI.Example/Roles/ChameleonRole.cs b/MiraAPI.Example/Roles/ChameleonRole.cs
index 1f2f61f..b193885 100644
--- a/MiraAPI.Example/Roles/ChameleonRole.cs
+++ b/MiraAPI.Example/Roles/ChameleonRole.cs
@@ -12,7 +12,7 @@ public class ChameloenRole : CrewmateRole, ICustomRole
public Color RoleColor => Palette.AcceptedGreen;
public ModdedRoleTeams Team => ModdedRoleTeams.Crewmate;
- public CustomRoleConfiguration Configuration => new CustomRoleConfiguration(this)
+ public CustomRoleConfiguration Configuration => new(this)
{
OptionsScreenshot = ExampleAssets.Banner,
};
diff --git a/MiraAPI/GameModes/AbstractGameMode.cs b/MiraAPI/GameModes/AbstractGameMode.cs
index 67304a6..3bb80ff 100644
--- a/MiraAPI/GameModes/AbstractGameMode.cs
+++ b/MiraAPI/GameModes/AbstractGameMode.cs
@@ -8,7 +8,7 @@ namespace MiraAPI.GameModes;
///
/// Base class for custom gamemodes.
///
-[MiraDisable]
+[MiraIgnore]
public abstract class AbstractGameMode
{
///
diff --git a/MiraAPI/GameModes/DefaultMode.cs b/MiraAPI/GameModes/DefaultMode.cs
index 7f4cc70..f50dcd4 100644
--- a/MiraAPI/GameModes/DefaultMode.cs
+++ b/MiraAPI/GameModes/DefaultMode.cs
@@ -5,7 +5,7 @@ namespace MiraAPI.GameModes;
///
/// The default game mode.
///
-[MiraDisable]
+[MiraIgnore]
public class DefaultMode : AbstractGameMode
{
///
diff --git a/MiraAPI/GameOptions/AbstractOptionGroup.cs b/MiraAPI/GameOptions/AbstractOptionGroup.cs
index ac4fb0c..6eac8bd 100644
--- a/MiraAPI/GameOptions/AbstractOptionGroup.cs
+++ b/MiraAPI/GameOptions/AbstractOptionGroup.cs
@@ -8,7 +8,7 @@ namespace MiraAPI.GameOptions;
///
/// Base class for option groups. An option group is a collection of options that are displayed together in the options menu.
///
-[MiraDisable]
+[MiraIgnore]
public abstract class AbstractOptionGroup
{
internal List Options { get; } = [];
diff --git a/MiraAPI/Hud/CustomActionButton.cs b/MiraAPI/Hud/CustomActionButton.cs
index 92d7a11..73603ea 100644
--- a/MiraAPI/Hud/CustomActionButton.cs
+++ b/MiraAPI/Hud/CustomActionButton.cs
@@ -3,6 +3,7 @@ using MiraAPI.Events.Mira;
using MiraAPI.PluginLoading;
using MiraAPI.Utilities.Assets;
using System;
+using MiraAPI.Patches;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;
@@ -13,7 +14,7 @@ namespace MiraAPI.Hud;
///
/// Class for making custom action buttons. More customizable than the default Action/Ability buttons in the base game.
///
-[MiraDisable]
+[MiraIgnore]
public abstract class CustomActionButton
{
///
@@ -438,7 +439,7 @@ public abstract class CustomActionButton
/// Custom action button that has a target object.
///
/// The type of the target object.
-[MiraDisable]
+[MiraIgnore]
public abstract class CustomActionButton : CustomActionButton where T : MonoBehaviour
{
///
diff --git a/MiraAPI/Modifiers/BaseModifier.cs b/MiraAPI/Modifiers/BaseModifier.cs
index 11701cc..98aace9 100644
--- a/MiraAPI/Modifiers/BaseModifier.cs
+++ b/MiraAPI/Modifiers/BaseModifier.cs
@@ -5,7 +5,7 @@ namespace MiraAPI.Modifiers;
///
/// Base class for all modifiers.
///
-[MiraDisable]
+[MiraIgnore]
public abstract class BaseModifier
{
///
diff --git a/MiraAPI/Modifiers/Types/GameModifier.cs b/MiraAPI/Modifiers/Types/GameModifier.cs
index fdf8422..6274917 100644
--- a/MiraAPI/Modifiers/Types/GameModifier.cs
+++ b/MiraAPI/Modifiers/Types/GameModifier.cs
@@ -5,7 +5,7 @@ namespace MiraAPI.Modifiers.Types;
///
/// The base class for a game modifier. Game modifiers are applied at the start of the game on top of the player's role.
///
-[MiraDisable]
+[MiraIgnore]
public abstract class GameModifier : BaseModifier
{
///
diff --git a/MiraAPI/Modifiers/Types/TimedModifier.cs b/MiraAPI/Modifiers/Types/TimedModifier.cs
index 4711d4a..ef60056 100644
--- a/MiraAPI/Modifiers/Types/TimedModifier.cs
+++ b/MiraAPI/Modifiers/Types/TimedModifier.cs
@@ -8,7 +8,7 @@ namespace MiraAPI.Modifiers.Types;
///
/// The base class for all timed modifiers. Timed modifiers have a duration and can be started and stopped.
///
-[MiraDisable]
+[MiraIgnore]
public abstract class TimedModifier : BaseModifier
{
///
diff --git a/MiraAPI/Patches/Options/LobbyViewPanePatches.cs b/MiraAPI/Patches/Options/LobbyViewPanePatches.cs
index a125709..9456200 100644
--- a/MiraAPI/Patches/Options/LobbyViewPanePatches.cs
+++ b/MiraAPI/Patches/Options/LobbyViewPanePatches.cs
@@ -280,7 +280,7 @@ public static class LobbyViewPanePatches
viewSettingsInfoPanelRoleVariant.transform.localPosition = new Vector3(num2, num, -2f);
var advancedRoleOptions = SelectedMod.Options
- .Where(x => x.AdvancedRole == customRole.GetType() && (x.AdvancedMode is null || x.AdvancedMode == customRole.AssociatedGameMode))
+ .Where(x => x.AdvancedRole == customRole.GetType() && (x.AdvancedMode is null || x.AdvancedMode == customRole.Configuration.AssociatedGameMode))
.ToList();
if (!flag && advancedRoleOptions.Count > 0)
diff --git a/MiraAPI/Patches/Options/RoleSettingMenuPatches.cs b/MiraAPI/Patches/Options/RoleSettingMenuPatches.cs
index 254f74a..f3efd12 100644
--- a/MiraAPI/Patches/Options/RoleSettingMenuPatches.cs
+++ b/MiraAPI/Patches/Options/RoleSettingMenuPatches.cs
@@ -62,6 +62,7 @@ internal static class RoleSettingMenuPatches
var num3 = 0;
var roleGroups = GameSettingMenuPatches.SelectedMod?.CustomRoles.Values.OfType()
+ .Where(x => !x.Configuration.HideSettings)
.ToLookup(x => x.Configuration.RoleGroup);
if (roleGroups is null)
@@ -76,8 +77,7 @@ internal static class RoleSettingMenuPatches
foreach (var grouping in sortedRoleGroups)
{
- if (!grouping.Any(role => role.AssociatedGameMode is null || role.AssociatedGameMode ==
- CustomGameModeManager.ActiveMode?.GetType()))
+ if (grouping.All(role => role.Configuration.AssociatedGameMode != CustomGameModeManager.ActiveMode?.GetType()))
{
continue;
}
@@ -147,11 +147,13 @@ internal static class RoleSettingMenuPatches
{
header.gameObject.Destroy();
}
+
CategoryHeaderEditRoles.Clear();
foreach (var option in RoleOptionSettings)
{
option.gameObject.Destroy();
}
+
RoleOptionSettings.Clear();
__instance.SetQuotaTab();
}));
@@ -162,6 +164,7 @@ internal static class RoleSettingMenuPatches
num -= 0.4f;
}
}
+
__instance.scrollBar.CalculateAndSetYBounds(__instance.roleChances.Count + 5, 1f, 6f, 0.43f);
return false;
}
diff --git a/MiraAPI/Roles/ICustomRole.cs b/MiraAPI/Roles/ICustomRole.cs
index 8c901fc..7042bd6 100644
--- a/MiraAPI/Roles/ICustomRole.cs
+++ b/MiraAPI/Roles/ICustomRole.cs
@@ -50,11 +50,6 @@ public interface ICustomRole
///
MiraPluginInfo ParentMod => CustomRoleManager.FindParentMod(this);
- ///
- /// Gets the game mode this role is a part of.
- ///
- Type AssociatedGameMode => typeof(DefaultMode);
-
///
/// This method runs on the PlayerControl.FixedUpdate method for ALL players with this role.
///