Merge pull request #13 from CallOfCreator/dev

This commit is contained in:
XtraCube authored and GitHub committed 2024-09-05 08:08:52 -04:00
commit eaf5890f67
4 files changed
+70 -1

No files matched your search

+1
View File
@@ -1,5 +1,6 @@
using HarmonyLib;
using MiraAPI.Hud;
using MiraAPI.Roles;
using Reactor.Utilities.Extensions;
using UnityEngine;
using Object = UnityEngine.Object;
+2 -1
View File
@@ -27,10 +27,11 @@ public static class HudManagerPatches
{
var flag = localPlayer.Data != null && localPlayer.Data.IsDead;
if (role is ICustomRole)
if (role is ICustomRole customRole)
{
__instance.KillButton.ToggleVisible(isActive && role.CanUseKillButton && !flag);
__instance.ImpostorVentButton.ToggleVisible(isActive && role.CanVent && !flag);
__instance.SabotageButton.gameObject.SetActive(isActive && customRole.CanUseSabotage);
}
if (_roleTab)
@@ -0,0 +1,62 @@
using HarmonyLib;
using MiraAPI.Roles;
namespace MiraAPI.Patches.Roles;
[HarmonyPatch(typeof(SabotageButton))]
public class SabotageButtonPatch
{
/// <summary>
/// Patches the Sabotage button to check if the player's custom role can use sabotage.
/// </summary>
[HarmonyPatch(nameof(SabotageButton.DoClick))]
[HarmonyPrefix]
public static bool DoClickPrefix(SabotageButton __instance)
{
var player = PlayerControl.LocalPlayer;
if (player.Data.Role is not ICustomRole customRole)
{
return true;
}
if (!customRole.CanUseSabotage || PlayerControl.LocalPlayer.inVent || !GameManager.Instance.SabotagesEnabled())
{
return false;
}
DestroyableSingleton<HudManager>.Instance.ToggleMapVisible(
new MapOptions
{
Mode = MapOptions.Modes.Sabotage,
});
return false;
}
[HarmonyPrefix]
[HarmonyPatch(nameof(SabotageButton.Refresh))]
public static bool RefreshPrefix(SabotageButton __instance)
{
var player = PlayerControl.LocalPlayer;
if (GameManager.Instance == null || player == null)
{
__instance.ToggleVisible(false);
__instance.SetDisabled();
return false;
}
if (player.Data.Role is not ICustomRole customRole)
{
return true;
}
if (player.inVent || !GameManager.Instance.SabotagesEnabled() || player.petting)
{
__instance.ToggleVisible(customRole.CanUseSabotage && GameManager.Instance.SabotagesEnabled());
__instance.SetDisabled();
return false;
}
__instance.SetEnabled();
return false;
}
}
+5
View File
@@ -77,6 +77,11 @@ public interface ICustomRole
/// </summary>
bool CanUseVent => Team == ModdedRoleTeams.Impostor;
/// <summary>
/// Gets a value indicating whether the role can use the sabotage button.
/// </summary>
bool CanUseSabotage => Team == ModdedRoleTeams.Impostor;
/// <summary>
/// Gets a value indicating whether the role's tasks count towards task progress.
/// </summary>