Compare commits

...
5 Commits
Author SHA1 Message Date
Ape dfa6836d70 Merge branch 'main' of https://github.com/ApeMV/AmongUsRevamped 2026-10-10 10:28:34 +02:00
Ape 5afb0bcb20 Fix some small issues 2026-10-10 10:26:16 +02:00
MV 645ff86660 v2.2.1 2026-10-08 10:20:49 +02:00
Ape 11fb96ccc2 GA fixes, disable peace period, bugfixes 2026-10-08 10:19:58 +02:00
MV ae1f4c7290 Forgot this 2026-10-02 08:28:45 +02:00
17 changed files with 122 additions and 69 deletions

No files matched your search

+3 -3
View File
@@ -39,13 +39,13 @@ public partial class Main : BasePlugin
public static ConfigEntry<bool> DisableCompatibilityWarning { get; private set; }
public static ConfigEntry<bool> DisableChatModifier { get; private set; }
public static NormalGameOptionsV11 NormalOptions => GameOptionsManager.Instance != null ? GameOptionsManager.Instance.currentNormalGameOptions : null;
public static HideNSeekGameOptionsV11 HideNSeekOptions => GameOptionsManager.Instance != null ? GameOptionsManager.Instance.currentHideNSeekGameOptions : null;
public static NormalGameOptionsV12 NormalOptions => GameOptionsManager.Instance != null ? GameOptionsManager.Instance.currentNormalGameOptions : null;
public static HideNSeekGameOptionsV12 HideNSeekOptions => GameOptionsManager.Instance != null ? GameOptionsManager.Instance.currentHideNSeekGameOptions : null;
public static MapNames CurrentMap => (MapNames)NormalOptions.MapId;
public static bool HasArgumentException;
public static string CredentialsText;
public const string ModVersion = "v2.1.1";
public const string ModVersion = "v2.2.2";
public static float GameTimer;
public static float AfkTimer;
+1 -1
View File
@@ -18,7 +18,7 @@
<ItemGroup>
<PackageReference Include="BepInEx.Unity.IL2CPP" Version="6.0.0-be.735" ExcludeAssets="runtime;native" />
<PackageReference Include="AmongUs.GameLibs.Steam" Version="2026.8.18" PrivateAssets="all" Condition="'$(Configuration)' == 'Release'"/>
<PackageReference Include="AmongUs.GameLibs.Steam" Version="2026.9.29" PrivateAssets="all" Condition="'$(Configuration)' == 'Release'"/>
<PackageReference Include="AmongUs.GameLibs.Android" Version="2026.8.18" PrivateAssets="all" Condition="'$(Configuration)' == 'Android'"/>
<PackageReference Include="BepInEx.AutoPlugin" Version="1.1.0" PrivateAssets="all" />
+7
View File
@@ -337,6 +337,9 @@ namespace AmongUsRevamped
public static OptionItem TabGroupHNS;
public static OptionItem NumSeekers;
public static OptionItem TabGroupNoKcd;
public static OptionItem DisablePeacePeriod;
public static OptionItem TabGroupSNS;
public static OptionItem SNSChatInGame;
public static OptionItem SNSChatInGameExtend;
@@ -550,6 +553,10 @@ namespace AmongUsRevamped
NumSeekers = IntegerOptionItem.Create(70001, Translator.Get("numSeekers"), new(1, 15, 1), 1, TabGroup.GamemodeSettings, false)
.SetValueFormat(OptionFormat.Level);
TabGroupNoKcd = TextOptionItem.Create(70010, Translator.Get("tabGroupNoKcd"), TabGroup.GamemodeSettings)
.SetColor(Color.green);
DisablePeacePeriod = BooleanOptionItem.Create(70011, Translator.Get("disablePeacePeriod"), false, TabGroup.GamemodeSettings, false);
TabGroupSNS = TextOptionItem.Create(70050, Translator.Get("tabGroupSNS"), TabGroup.GamemodeSettings)
.SetColor(Color.green);
SNSChatInGame = BooleanOptionItem.Create(70051, Translator.Get("snsChatInGame"), false, TabGroup.GamemodeSettings, false);
-9
View File
@@ -15,15 +15,6 @@ internal class EACR
MessageReader sr = MessageReader.Get(reader);
var rpc = (RpcCalls)callId;
switch (rpc)
{
case RpcCalls.StartMeeting:
{
MeetingCheat(pc);
return true;
}
}
switch (callId)
{
case 101: // Aum Chat
+10
View File
@@ -8,6 +8,7 @@ namespace AmongUsRevamped;
public static class OptionManager
{
private static float OldKillCooldown;
private static float OldGuardianCooldown;
public static void SyncGameOptions()
{
@@ -31,6 +32,10 @@ public static class OptionManager
if (!AmongUsClient.Instance.AmHost) return;
OldKillCooldown = Main.NormalOptions.KillCooldown;
if (Main.NormalOptions.roleOptions.TryGetRoleOptions<GuardianAngelRoleOptionsV12>(RoleTypes.GuardianAngel, out var GuardianAngelOptions))
{
OldGuardianCooldown = GuardianAngelOptions.ProtectionDurationSeconds;
}
}
public static void RestoreOptions()
@@ -42,6 +47,11 @@ public static class OptionManager
Main.NormalOptions.KillCooldown = OldKillCooldown;
Logger.Info("Force overrided Kill Cooldown back to original", "RestoreOptions");
}
if (Main.NormalOptions.roleOptions.TryGetRoleOptions<GuardianAngelRoleOptionsV12>(RoleTypes.GuardianAngel, out var GuardianAngelOptions) && GuardianAngelOptions.ProtectionDurationSeconds != OldGuardianCooldown)
{
GuardianAngelOptions.ProtectionDurationSeconds = OldGuardianCooldown;
Logger.Info("Force overrided Guardian Angel Cooldown back to original", "RestoreOptions");
}
SyncGameOptions();
}
+4 -4
View File
@@ -559,7 +559,7 @@ internal static class SendChatPatch
if (text == "/0kc" || text == "/0killcooldown")
{
Utils.ChatCommand(__instance, "0 Kill Cooldown:\n\nImpostors have no kill cooldown, and can't kill after a game starts for 5 seconds", "", false);
Utils.ChatCommand(__instance, "0 Kill Cooldown:\n\nImpostors have no kill cooldown, and optionally can't kill after a game starts for 5 seconds", "", false);
return false;
}
@@ -593,7 +593,7 @@ internal static class SendChatPatch
case 0:
if (GameOptionsManager.Instance.CurrentGameOptions.GetFloat(FloatOptionNames.KillCooldown) == 0.001f)
{
Utils.ChatCommand(__instance, "0 Kill Cooldown:\n\nImpostors have no kill cooldown, and can't kill after a game starts for 5 seconds", "", false);
Utils.ChatCommand(__instance, "0 Kill Cooldown:\n\nImpostors have no kill cooldown, and optionally can't kill after a game starts for 5 seconds", "", false);
}
break;
@@ -1004,7 +1004,7 @@ public static class RPCHandlerPatch
if (text == "/0kc" || text == "/0killcooldown")
{
if (Utils.CheckAccessLevel(__instance.Data.FriendCode) < Options.SlashRolesAndGamemodeCmd.GetValue()) return;
Utils.ModeratorChatCommand("0 Kill Cooldown:\n\nImpostors have no kill cooldown, and can't kill after a game starts for 5 seconds", "", false);
Utils.ModeratorChatCommand("0 Kill Cooldown:\n\nImpostors have no kill cooldown, and optionally can't kill after a game starts for 5 seconds", "", false);
}
if (text == "/sns" || text == "/shiftandseek")
{
@@ -1037,7 +1037,7 @@ public static class RPCHandlerPatch
case 0:
if (GameOptionsManager.Instance.CurrentGameOptions.GetFloat(FloatOptionNames.KillCooldown) == 0.001f)
{
Utils.ModeratorChatCommand("0 Kill Cooldown:\n\nImpostors have no kill cooldown, and can't kill after a game starts for 5 seconds", "", false);
Utils.ModeratorChatCommand("0 Kill Cooldown:\n\nImpostors have no kill cooldown, and optionally can't kill after a game starts for 5 seconds", "", false);
}
break;
+12 -1
View File
@@ -1,4 +1,5 @@
using BepInEx.Unity.IL2CPP;
using AmongUs.Data.Player;
using BepInEx.Unity.IL2CPP;
using System;
using System.Text;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
@@ -386,6 +387,16 @@ namespace AmongUsRevamped
}
}
}
[HarmonyPatch(typeof(PlayerBanData), nameof(PlayerBanData.BanMinutesLeft), MethodType.Getter)]
public static class PlayerBanDataGetterPatch
{
public static void Postfix(PlayerBanData __instance, ref int __result)
{
__instance.BanPoints = 0f;
__result = 0;
}
}
}
#if !ANDROID
+3 -3
View File
@@ -28,7 +28,7 @@ class NormalGameEndChecker
public static string LastWinReason = "";
public static List<PlayerControl> imps = new List<PlayerControl>();
public static string firstDeath;
public static string firstDeathString => firstDeath != "" ? $"\n\nFirst death: {firstDeath}" : "";
public static string firstDeathString => firstDeath != "" ? $"\n\n1st death: {firstDeath}" : "";
public static bool Prefix()
{
@@ -50,8 +50,8 @@ class NormalGameEndChecker
public static string customRoles { get; set; }
public static void CheckWinnerText(string Winner)
{
string impostorList = string.Join(", ", imps.Select(p => p.Data.PlayerName));
string impostorString = impostorList != "" ? $"\n\nImpostors: {impostorList}" : "";
string impostorList = string.Join("\n", imps.Select(p => $"{p.Data.PlayerName} {p.Data.ColorName}"));
string impostorString = impostorList != "" ? $"\n\n{impostorList}" : "";
if (!canUpdateWinnerText) return;
+3 -3
View File
@@ -23,7 +23,7 @@ internal static class CoShowIntroPatch
if (NormalGameEndChecker.firstDeath != null && NormalGameEndChecker.firstDeath == p.Data.PlayerName && Options.ShieldFirstDeath.GetBool() && Options.Gamemode.GetValue() != 1)
{
if (Main.NormalOptions.roleOptions.TryGetRoleOptions<GuardianAngelRoleOptionsV11>(RoleTypes.GuardianAngel, out var GuardianAngelOptions))
if (Main.NormalOptions.roleOptions.TryGetRoleOptions<GuardianAngelRoleOptionsV12>(RoleTypes.GuardianAngel, out var GuardianAngelOptions))
{
var oldGA = GuardianAngelOptions.ImpostorsCanSeeProtect;
var oldGAProt = GuardianAngelOptions.ProtectionDurationSeconds;
@@ -71,7 +71,7 @@ internal static class CoShowIntroPatch
if (!Options.SNSSuicideMode.GetBool())
{
if (Main.NormalOptions.roleOptions.TryGetRoleOptions<GuardianAngelRoleOptionsV11>(RoleTypes.GuardianAngel, out var GuardianAngelOptions))
if (Main.NormalOptions.roleOptions.TryGetRoleOptions<GuardianAngelRoleOptionsV12>(RoleTypes.GuardianAngel, out var GuardianAngelOptions))
{
GuardianAngelOptions.ProtectionDurationSeconds = 254f;
}
@@ -94,7 +94,7 @@ internal static class CoShowIntroPatch
}
}
if ((GameOptionsManager.Instance.CurrentGameOptions.GetFloat(FloatOptionNames.KillCooldown) == 0.001f))
if ((GameOptionsManager.Instance.CurrentGameOptions.GetFloat(FloatOptionNames.KillCooldown) == 0.001f) && !Options.DisablePeacePeriod.GetBool())
{
Main.NormalOptions.KillCooldown = 5f;
OptionManager.SyncGameOptions();
+12
View File
@@ -112,4 +112,16 @@ class MeetingHudStartPatch
return $"<color=red>({MurderPlayerPatch.killCount[player.Data.PlayerId]}†)</color> - {Utils.GetRoleText(player)}";
}
}
[HarmonyPatch(typeof(LogicOptionsNormal), nameof(LogicOptionsNormal.GetAnonymousVotes))]
public static class LogicOptionsNormalGetAnonymousVotesPatch
{
public static void Postfix(ref bool __result)
{
if (Utils.IsDead)
{
__result = false;
}
}
}
}
+6 -20
View File
@@ -104,7 +104,8 @@ public static class MessageReaderUpdateSystemPatch
public static bool Prefix(ShipStatus __instance, [HarmonyArgument(0)] SystemTypes systemType, [HarmonyArgument(1)] PlayerControl player, [HarmonyArgument(2)] MessageReader reader)
{
if (systemType is
SystemTypes.Security
SystemTypes.Ventilation
or SystemTypes.Security
or SystemTypes.Decontamination
or SystemTypes.Decontamination2
or SystemTypes.Decontamination3
@@ -112,28 +113,13 @@ public static class MessageReaderUpdateSystemPatch
if (player.Data.ClientId == AmongUsClient.Instance.HostId) return true;
// Thanks to D1GQ for finding.
if (systemType is SystemTypes.Ventilation)
var amount = MessageReader.Get(reader).ReadByte();
if (EACR.RpcUpdateSystemCheck(player, systemType, amount))
{
_ = reader.ReadUInt16();
var operation = (VentilationSystem.Operation)reader.ReadByte();
if (operation == VentilationSystem.Operation.BootImpostors)
{
Logger.Info($"BLOCKED: {operation}, {player}", "s");
return false;
}
Logger.Info("EACR patched Sabotage RPC", "MessageReaderUpdateSystemPatch");
return false;
}
else
{
var amount = MessageReader.Get(reader).ReadByte();
if (EACR.RpcUpdateSystemCheck(player, systemType, amount))
{
Logger.Info("EACR patched Sabotage RPC", "MessageReaderUpdateSystemPatch");
return false;
}
else return true;
}
else return true;
}
}
+1 -1
View File
@@ -36,7 +36,7 @@
<img src="https://github.com/astra1dev/AUnlocker/assets/90265231/14226f03-a003-4efc-b27b-6df53fb394d6" width=410 height=240>****
‎
# 🎮 Features (v2.1.1):
# 🎮 Features (v2.2.2):
## <b>♠️ Client Side settings:</b>
- Toggle Game Master (Spectator)
+3 -1
View File
@@ -395,7 +395,9 @@
"tabGroupGameplayMapModifications": "Map Modifications",
"disableChatModifier": "Disable Chat Modifications",
"snsSuicideMode": "Disable Shield System",
"snsSuicideMode": "Disable Shield System"
"tabGroupNoKcd": "0 Kill Cooldown",
"disablePeacePeriod": "Disable 5s Peace Period"
}
+4 -1
View File
@@ -394,5 +394,8 @@
"tabGroupGameplayMapModifications": "マップの変更",
"disableChatModifier": "チャット変更を無効化"
"disableChatModifier": "チャット変更を無効化",
"snsSuicideMode": "シールドシステムを無効化",
"tabGroupNoKcd": "キルクールダウン0秒",
"disablePeacePeriod": "5秒間の平和時間を無効化"
}
+4 -1
View File
@@ -392,5 +392,8 @@
"tabGroupGameplayMapModifications": "Модификации Карт",
"disableChatModifier": "Выключить Модификации Чата"
"disableChatModifier": "Выключить Модификации Чата",
"snsSuicideMode": "Выключить Систему Щитов",
"tabGroupNoKcd": "0 Перезарядка Убийств",
"disablePeacePeriod": "Выключить Мирный Период Первые 5 секунд"
}
+4 -1
View File
@@ -381,5 +381,8 @@
"tabGroupGameplayMapModifications": "地图修改",
"disableChatModifier": "禁用聊天修改"
"disableChatModifier": "禁用聊天修改",
"snsSuicideMode": "禁用护盾系统",
"tabGroupNoKcd": "0 秒击杀冷却",
"disablePeacePeriod": "禁用 5 秒和平期"
}
+45 -20
View File
@@ -94,19 +94,6 @@
"snsDisableHeli": "Desactivar sabotaje de Crash Course",
"snsDisableMushroomMixup": "Desactivar sabotaje de mezcla de hongos",
"snsDisableCloseDoor": "Desactivar sabotajes de puertas de SnS",
"tabGroupCustomizeSabotages": "Customize Sabotages",
"customizeSabotages": "Enable Sabotage Customizations",
"sabotageCooldown": "Critical Sabotage Cooldown",
"skeldReactorDuration": "Skeld Reactor Duration",
"skeldO2Duration": "Skeld O2 Duration",
"miraReactorDuration": "Mira Reactor Duration",
"miraO2Duration": "Mira O2 Duration",
"polusReactorDuration": "Polus Reactor Duration",
"airshipReactorDuration": "Airship Reactor Duration",
"fungleReactorDuration": "Fungle Reactor Duration",
"fungleMushroomMixupDuration": "Fungle Mixup Duration",
"tabGroupSpeedrun": "Speedrun",
"speedrunSettingsOverride": "Actualizar configuración automáticamente",
"gameAutoEndsAfter": "La partida termina automáticamente después de",
@@ -261,7 +248,6 @@
"seekerDesc": "Marca al jugador como buscador en HnS.",
"seekersDesc": "Muestra los buscadores elegidos manualmente.",
"clearSeekerDesc": "Borra la lista manual de buscadores.",
"mapVoteDesc": "Inicia una votación entre los 5 mapas principales.",
"allMapVoteDesc": "Inicia una votación entre los 6 mapas, incluido Eht Dleks.",
"aurDesc": "Envía los enlaces sociales de Among Us Revamped.",
"sDesc": "Inicia la cuenta regresiva de la partida.",
@@ -307,20 +293,59 @@
"moderatorAndAbove": "<color=purple>Moderador</color> o superior",
"admin": "<color=red>Administrador</color>",
"onlyYou": "Solo tú",
"pnsDisableSabotage": "Desactivar sabotajes críticos de PnS",
"pnsDisableCloseDoor": "Desactivar sabotajes de puertas de PnS",
"tabGroupPNS": "Poof and Seek",
"badMoveTimeToSuicide": "El Fantasma se suicida después de moverse visiblemente durante",
"snsImpostorCanVent": "Los impostores pueden usar conductos",
"snsImpostorCanVent": "Los impostores pueden usar conductos"
"modeVoteDuration": "Duración de la votación de modo de juego",
"snsChatInGameExtendTwo": "Enviar información ampliada al iniciar la partida",
"snsChatInGameFast": "Reunión más rápida (experimental+)",
"snsChatInGameFast": "Reunión más rápida (experimental+),
"shieldFirstDeath": " Proteger al primer jugador que murió",
"shieldFirstDeathDuration": "Duración de la protección",
"snsTwoDesc": "Enviar la descripción ampliada de Shift and Seek.",
"modeVoteDesc": "Inicia una votación entre todos los modos de juego.",
"automaticModePoll": "/gmvote automático al volver a la sala",
"privateDesc": "Changes lobby visibility to private.",
"publicDesc": "Changes lobby visibility to public."
"tabGroupCustomizeSabotages": "Personalizar sabotajes",
"customizeSabotages": "Activar personalización de sabotajes",
"sabotageCooldown": "Tiempo de espera de sabotajes críticos",
"skeldReactorDuration": "Duración del reactor en Skeld",
"skeldO2Duration": "Duración del O2 en Skeld",
"miraReactorDuration": "Duración del reactor en Mira HQ",
"miraO2Duration": "Duración del O2 en Mira HQ",
"polusReactorDuration": "Duración del reactor en Polus",
"airshipReactorDuration": "Duración del reactor en Airship",
"fungleReactorDuration": "Duración del reactor en Fungle",
"fungleMushroomMixupDuration": "Duración de la mezcla de hongos en Fungle",
"privateDesc": "Cambia la visibilidad de la sala a privada.",
"publicDesc": "Cambia la visibilidad de la sala a pública.",
"mapVoteDesc": "Inicia una votación entre los mapas seleccionados.",
"modeVoteDesc": "Inicia una votación entre los modos de juego seleccionados.",
"tabGroupAnticheat": "Antitrampas",
"hackingPunishment": "Castigo por hacer trampa",
"detectBadRPC": "Detectar RPC inválidos",
"detectBadSabotage": "Detectar sabotajes inválidos",
"detectBadVent": "Detectar uso inválido de ventilas",
"detectBadTask": "Detectar tareas completadas de forma inválida",
"detectBadKill": "Detectar asesinatos inválidos",
"detectBadAnimation": "Detectar animaciones inválidas",
"detectBadMeeting": "Detectar reuniones inválidas",
"customizeMapVote": "Personalizar votación de mapas",
"includeSkeld": "Incluir Skeld",
"includeMira": "Incluir Mira HQ",
"includePolus": "Incluir Polus",
"includeAirship": "Incluir Airship",
"includeFungle": "Incluir Fungle",
"includeDleks": "Incluir Dleks",
"customizeModeVote": "Personalizar votación de modos de juego",
"includeStandard": "Incluir Estándar",
"includeNoKillCooldown": "Incluir 0 s de espera para matar",
"includeShiftAndSeek": "Incluir Shift and Seek",
"includePoofAndSeek": "Incluir Poof and Seek",
"includeSpeedrun": "Incluir Speedrun",
"tabGroupGameplayMapModifications": "Modificaciones de mapas",
"disableChatModifier": "Desactivar modificaciones del chat",
"snsSuicideMode": "Desactivar sistema de escudos",
"tabGroupNoKcd": "0 s de espera para matar",
"disablePeacePeriod": "Desactivar período de paz de 5 s"
}