mirror of
https://github.com/ApeMV/AmongUsRevamped.git
synced 2026-10-21 21:43:36 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cde461c4a4 | ||
|
|
62d66e170b | ||
|
|
c201211afb | ||
|
|
cc1950f543 | ||
|
|
2764e073af | ||
|
|
6f53cacb32 | ||
|
|
f4d9d8101f | ||
|
|
f18dc3fa31 |
No files matched your search
@@ -0,0 +1,26 @@
|
||||
---
|
||||
name: General Issue
|
||||
about: Report a bug, suggest an idea, or get support
|
||||
title: ""
|
||||
labels: ""
|
||||
assignees: ""
|
||||
---
|
||||
|
||||
### REQUIRED
|
||||
* [ ] I confirm this Issue is relevant to Among Us Revamped
|
||||
* [ ] I confirm this Issue is not a duplicate
|
||||
* [ ] I have read the main GitHub page for potential answers to my Issue
|
||||
|
||||
### INFO
|
||||
Please tick all the boxes above by typing "x" between them.
|
||||
If your Issue does not match these requirements, please do not post it.
|
||||
Issues ignoring or falsifying these requirements will be closed without warning.
|
||||
Support based questions are preferred to be asked on Discord, but not prohibited.
|
||||
|
||||
### ISSUE TYPE (tick 1)
|
||||
* [ ] Bug Report
|
||||
* [ ] Suggestion
|
||||
* [ ] Support
|
||||
* [ ] other
|
||||
|
||||
### WRITE YOUR ISSUE BELOW:
|
||||
@@ -0,0 +1,17 @@
|
||||
### REQUIRED
|
||||
* [ ] I confirm this PR was not fully made by AI
|
||||
* [ ] I confirm this PR is fitting for Among Us Revamped
|
||||
* [ ] I confirm this PR has been tested and properly functions
|
||||
|
||||
### INFO
|
||||
Please tick all the boxes above by typing "x" between them.
|
||||
If your Pull Request does not match these requirements, please do not post it.
|
||||
Pull Requests ignoring or falsifying these requirements will be closed without warning.
|
||||
|
||||
### PR TYPE
|
||||
* [ ] Bug Fix
|
||||
* [ ] New Feature
|
||||
* [ ] Refactor/Optimization
|
||||
* [ ] Documentation Update
|
||||
|
||||
### WRITE YOUR PULL REQUEST BELOW:
|
||||
+1
-1
@@ -44,7 +44,7 @@ public partial class Main : BasePlugin
|
||||
|
||||
public static bool HasArgumentException;
|
||||
public static string CredentialsText;
|
||||
public const string ModVersion = "v2.0.1";
|
||||
public const string ModVersion = "v2.0.3";
|
||||
|
||||
public static float GameTimer;
|
||||
public static float AfkTimer;
|
||||
|
||||
@@ -301,7 +301,6 @@ namespace AmongUsRevamped
|
||||
public static OptionItem SNSChatInGameExtend2;
|
||||
public static OptionItem SNSChatInGameFast;
|
||||
public static OptionItem CrewAutoWinsGameAfter;
|
||||
public static OptionItem MisfiresToSuicide;
|
||||
public static OptionItem SNSDisableSabotage;
|
||||
public static OptionItem SNSDisableReactor;
|
||||
public static OptionItem SNSDisableOxygen;
|
||||
@@ -476,7 +475,6 @@ namespace AmongUsRevamped
|
||||
.SetParent(SNSChatInGame);
|
||||
SNSChatInGameFast = BooleanOptionItem.Create(70054, Translator.Get("snsChatInGameFast"), false, TabGroup.GamemodeSettings, false)
|
||||
.SetParent(SNSChatInGame);
|
||||
MisfiresToSuicide = IntegerOptionItem.Create(70055, Translator.Get("misfiresToSuicide"), new(1, 10, 1), 1, TabGroup.GamemodeSettings, false);
|
||||
CrewAutoWinsGameAfter = IntegerOptionItem.Create(70056, Translator.Get("crewAutoWinsGameAfter"), new(60, 600, 10), 300, TabGroup.GamemodeSettings, false)
|
||||
.SetValueFormat(OptionFormat.Seconds);
|
||||
SNSDisableSabotage = BooleanOptionItem.Create(70057, Translator.Get("snsDisableSabotage"), true, TabGroup.GamemodeSettings, false)
|
||||
|
||||
+19
-20
@@ -129,6 +129,7 @@ public static class FixedUpdate
|
||||
{
|
||||
p.RpcProtectPlayer(p, p.cosmetics.ColorId);
|
||||
}
|
||||
p.Data.MarkDirty();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -165,12 +166,6 @@ class FixedUpdateInGamePatch
|
||||
private static float t;
|
||||
private static GameObject settingsLabel;
|
||||
|
||||
public static bool CanUseKillButton(PlayerControl pc)
|
||||
{
|
||||
pc.Data.Role.CanUseKillButton = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void Postfix(PlayerControl __instance)
|
||||
{
|
||||
if (__instance == null || __instance.PlayerId == 255 || !AmongUsClient.Instance.AmHost) return;
|
||||
@@ -208,13 +203,15 @@ class FixedUpdateInGamePatch
|
||||
break;
|
||||
|
||||
case 1: // SnS
|
||||
if (Utils.InGame) return;
|
||||
if (Main.NormalOptions.KillCooldown != 2.5f)
|
||||
if (!Utils.InGame)
|
||||
{
|
||||
Main.NormalOptions.KillCooldown = 2.5f;
|
||||
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Shapeshifter, 3, 100);
|
||||
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Phantom, 0, 0);
|
||||
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Viper, 0, 0);
|
||||
if (Main.NormalOptions.KillCooldown != 2.5f)
|
||||
{
|
||||
Main.NormalOptions.KillCooldown = 2.5f;
|
||||
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Shapeshifter, 3, 100);
|
||||
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Phantom, 0, 0);
|
||||
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Viper, 0, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -222,18 +219,20 @@ class FixedUpdateInGamePatch
|
||||
break;
|
||||
|
||||
case 3: // PnS
|
||||
if (Utils.InGame) return;
|
||||
if (Main.NormalOptions.KillCooldown != 1f)
|
||||
if (!Utils.InGame)
|
||||
{
|
||||
Main.NormalOptions.KillCooldown = 1f;
|
||||
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Shapeshifter, 0, 0);
|
||||
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Phantom, 3, 100);
|
||||
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Viper, 0, 0);
|
||||
if (Main.NormalOptions.KillCooldown != 1f)
|
||||
{
|
||||
Main.NormalOptions.KillCooldown = 1f;
|
||||
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Shapeshifter, 0, 0);
|
||||
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Phantom, 3, 100);
|
||||
Main.NormalOptions.roleOptions.SetRoleRate(RoleTypes.Viper, 0, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (Utils.InGame && !Utils.IsMeeting && !ExileController.Instance)
|
||||
if (Utils.InGame && !Utils.IsMeeting && !ExileController.Instance && Main.GameTimer > 6)
|
||||
{
|
||||
// 1 = Shift and Seek
|
||||
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek && Options.CrewAutoWinsGameAfter.GetInt() != 0 && !Options.NoGameEnd.GetBool())
|
||||
@@ -260,7 +259,7 @@ class FixedUpdateInGamePatch
|
||||
}
|
||||
}
|
||||
// 3 = Poof and Seek
|
||||
if (Options.Gamemode.GetValue() == 3 && !Utils.isHideNSeek)
|
||||
if (Options.Gamemode.GetValue() == 3 && !Utils.isHideNSeek && !Options.NoGameEnd.GetBool())
|
||||
{
|
||||
if (Main.GameTimer > Options.PNSCrewAutoWinsGameAfter.GetInt())
|
||||
{
|
||||
|
||||
@@ -7,7 +7,8 @@ namespace AmongUsRevamped;
|
||||
|
||||
public static class OptionManager
|
||||
{
|
||||
private static OptionBackupData CachedOptions;
|
||||
private static float OldKillCooldown;
|
||||
|
||||
public static void SyncGameOptions()
|
||||
{
|
||||
if (!AmongUsClient.Instance.AmHost) return;
|
||||
@@ -29,17 +30,19 @@ public static class OptionManager
|
||||
{
|
||||
if (!AmongUsClient.Instance.AmHost) return;
|
||||
|
||||
CachedOptions = new OptionBackupData(GameOptionsManager.Instance.CurrentGameOptions);
|
||||
OldKillCooldown = Main.NormalOptions.KillCooldown;
|
||||
}
|
||||
|
||||
public static void RestoreOptions()
|
||||
{
|
||||
if (!AmongUsClient.Instance.AmHost || CachedOptions == null) return;
|
||||
|
||||
var restored = CachedOptions.Restore(GameOptionsManager.Instance.CurrentGameOptions);
|
||||
|
||||
GameOptionsManager.Instance.CurrentGameOptions = restored;
|
||||
if (!AmongUsClient.Instance.AmHost) return;
|
||||
|
||||
if (Main.NormalOptions.KillCooldown != OldKillCooldown)
|
||||
{
|
||||
Main.NormalOptions.KillCooldown = OldKillCooldown;
|
||||
Logger.Info("Force overrided Kill Cooldown back to original", "RestoreOptions");
|
||||
}
|
||||
|
||||
SyncGameOptions();
|
||||
}
|
||||
}
|
||||
+19
-2
@@ -38,7 +38,6 @@ public static class Utils
|
||||
|
||||
public static bool IsFreePlay => AmongUsClient.Instance.NetworkMode == NetworkModes.FreePlay;
|
||||
public static bool IsMeeting => InGame && (MeetingHud.Instance);
|
||||
public static bool GamePastRoleSelection => Main.GameTimer > 10f;
|
||||
public static bool HandlingGameEnd;
|
||||
public static byte CustomGameOverReason;
|
||||
public static bool CanCallMeetings;
|
||||
@@ -201,6 +200,8 @@ public static class Utils
|
||||
|
||||
public static void ClearLeftoverData()
|
||||
{
|
||||
Logger.Info(" Cleared Leftover Data", "Utils");
|
||||
|
||||
RpcSetTasksPatch.GlobalTaskIds = null;
|
||||
HandlingGameEnd = false;
|
||||
OnGameJoinedPatch.AutoStartCheck = false;
|
||||
@@ -217,7 +218,6 @@ public static class Utils
|
||||
NormalGameEndChecker.ImpCheckComplete = false;
|
||||
CreateOptionsPickerPatch.SetDleks2 = false;
|
||||
CanCallMeetings = true;
|
||||
PlayerControlSetRolePatch.FirstAssign = true;
|
||||
|
||||
PlayerControlCompleteTaskPatch.playerTasksCompleted.Clear();
|
||||
PlayerControlCompleteTaskPatch.tasksPerPlayer.Clear();
|
||||
@@ -227,6 +227,7 @@ public static class Utils
|
||||
|
||||
OnPlayerJoinedPatch.JoinNum = 0;
|
||||
|
||||
PlayerControlSetRolePatch.ProcessedPlayers.Clear();
|
||||
PlayerControlSetRolePatch.Seekers.Clear();
|
||||
PlayerControlSetRolePatch.FirstAssign = true;
|
||||
PlayerControlSetRolePatch.manualSeekers.Clear();
|
||||
@@ -760,4 +761,20 @@ public static class Utils
|
||||
ModeVoteActive = false;
|
||||
}, Options.ModeVoteDuration.GetInt(), "ModePoll");
|
||||
}
|
||||
|
||||
// As of v2026.8.18, Innersloth bans the host for hacking if the start game button is pressed when any player is not Serialized (or something similar).
|
||||
// CheckValidData serves as an emergency blockage to prevent this and stop host from being kicked.
|
||||
public static bool CheckValidData()
|
||||
{
|
||||
if (!AmongUsClient.Instance.AmHost) return true;
|
||||
|
||||
foreach (var p in PlayerControl.AllPlayerControls)
|
||||
{
|
||||
if (p == null || !p.hasBeenSerialized)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -525,7 +525,7 @@ internal static class SendChatPatch
|
||||
|
||||
if (text == "/0kc" || text == "/0killcooldown")
|
||||
{
|
||||
Utils.ChatCommand(__instance, "0 Kill Cooldown:\n\nImpostors have no kill cooldown, Crewmates have low tasks\nThink fast and pay attention!", "", false);
|
||||
Utils.ChatCommand(__instance, "0 Kill Cooldown:\n\nImpostors have no kill cooldown, and can't kill after a game starts for 5 seconds", "", false);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -559,7 +559,7 @@ internal static class SendChatPatch
|
||||
case 0:
|
||||
if (GameOptionsManager.Instance.CurrentGameOptions.GetFloat(FloatOptionNames.KillCooldown) == 0.01f)
|
||||
{
|
||||
Utils.ChatCommand(__instance, "0 Kill Cooldown:\n\nImpostors have no kill cooldown, Crewmates have low tasks\nThink fast and pay attention!", "", false);
|
||||
Utils.ChatCommand(__instance, "0 Kill Cooldown:\n\nImpostors have no kill cooldown, and can't kill after a game starts for 5 seconds", "", false);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -957,7 +957,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, Crewmates have low tasks\nThink fast and pay attention!", "", false);
|
||||
Utils.ModeratorChatCommand("0 Kill Cooldown:\n\nImpostors have no kill cooldown, and can't kill after a game starts for 5 seconds", "", false);
|
||||
}
|
||||
if (text == "/sns" || text == "/shiftandseek")
|
||||
{
|
||||
@@ -990,7 +990,7 @@ public static class RPCHandlerPatch
|
||||
case 0:
|
||||
if (GameOptionsManager.Instance.CurrentGameOptions.GetFloat(FloatOptionNames.KillCooldown) == 0.01f)
|
||||
{
|
||||
Utils.ModeratorChatCommand("0 Kill Cooldown:\n\nImpostors have no kill cooldown, Crewmates have low tasks\nThink fast and pay attention!", "", false);
|
||||
Utils.ModeratorChatCommand("0 Kill Cooldown:\n\nImpostors have no kill cooldown, and can't kill after a game starts for 5 seconds", "", false);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ internal static class DisableDevice
|
||||
|
||||
public static void FixedUpdate()
|
||||
{
|
||||
if (!AmongUsClient.Instance.AmHost || ShipStatus.Instance == null || !Utils.GamePastRoleSelection) return;
|
||||
if (!AmongUsClient.Instance.AmHost || ShipStatus.Instance == null || !OnGameStartPatch.PastStartScreen) return;
|
||||
frame = frame == 5 ? 0 : ++frame;
|
||||
if (frame != 0) return;
|
||||
|
||||
|
||||
@@ -11,9 +11,9 @@ public static class EndGameManagerPatch
|
||||
public static void Postfix(EndGameManager __instance)
|
||||
{
|
||||
Logger.Info(" -------- GAME ENDED --------", "EndGame");
|
||||
Utils.ClearLeftoverData();
|
||||
|
||||
//OptionManager.RestoreOptions();
|
||||
Utils.ClearLeftoverData();
|
||||
OptionManager.RestoreOptions();
|
||||
|
||||
EndGameNavigation navigation = __instance.Navigation;
|
||||
if (!AmongUsClient.Instance.AmHost || __instance == null || navigation == null || !Options.AutoRejoinLobby.GetBool()) return;
|
||||
|
||||
@@ -20,6 +20,17 @@ class ExileControllerWrapUpPatch
|
||||
public static void AfterExile(NetworkedPlayerInfo ejectedPlayer)
|
||||
{
|
||||
if (!AmongUsClient.Instance.AmHost) return;
|
||||
|
||||
if ((Options.SNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 1) || (Options.PNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 3))
|
||||
{
|
||||
if (Main.GM.Value && !Utils.IsDead)
|
||||
{
|
||||
Logger.Info($" Game Master Successful", "StartGame");
|
||||
PlayerControl.LocalPlayer.Exiled();
|
||||
PlayerControl.LocalPlayer.RpcSetRole(RoleTypes.CrewmateGhost);
|
||||
}
|
||||
}
|
||||
|
||||
if (ejectedPlayer == null) return;
|
||||
|
||||
PlayerControl pc = null;
|
||||
|
||||
@@ -20,12 +20,22 @@ public static class GameStartManagerUpdatePatch
|
||||
|
||||
__instance.MinPlayers = 1;
|
||||
|
||||
if (!Utils.CheckValidData())
|
||||
{
|
||||
__instance.StartButton.gameObject.SetActive(false);
|
||||
}
|
||||
else if (__instance.startState != GameStartManager.StartingStates.Countdown)
|
||||
{
|
||||
__instance.StartButton.gameObject.SetActive(true);
|
||||
}
|
||||
|
||||
if (Main.AutoStart.Value && OnGameJoinedPatch.AutoStartCheck && GameStartManager.InstanceExists && __instance.startState != GameStartManager.StartingStates.Countdown && GameData.Instance?.PlayerCount >= Options.PlayerAutoStart.GetInt())
|
||||
{
|
||||
__instance.startState = GameStartManager.StartingStates.Countdown;
|
||||
__instance.countDownTimer = Options.AutoStartTimer.GetFloat();
|
||||
__instance.StartButton.gameObject.SetActive(false);
|
||||
Autostarting = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (__instance.startState == GameStartManager.StartingStates.Countdown)
|
||||
|
||||
+12
-4
@@ -15,7 +15,7 @@ internal static class CoShowIntroPatch
|
||||
|
||||
if (!AmongUsClient.Instance.AmHost) return;
|
||||
|
||||
//OptionManager.CacheOptions();
|
||||
OptionManager.CacheOptions();
|
||||
|
||||
foreach (var p in PlayerControl.AllPlayerControls)
|
||||
{
|
||||
@@ -39,6 +39,7 @@ internal static class CoShowIntroPatch
|
||||
|
||||
OptionManager.SyncGameOptions();
|
||||
p.RpcProtectPlayer(p, p.cosmetics.ColorId);
|
||||
p.Data.MarkDirty();
|
||||
Logger.Info($" {p.Data.PlayerName} has been granted a shield for {Options.ShieldFirstDeathDuration.GetInt()}s", "RoleInfo");
|
||||
}
|
||||
|
||||
@@ -65,9 +66,16 @@ internal static class CoShowIntroPatch
|
||||
{
|
||||
if (Main.NormalOptions.roleOptions.TryGetRoleOptions<GuardianAngelRoleOptionsV11>(RoleTypes.GuardianAngel, out var GuardianAngelOptions))
|
||||
{
|
||||
GuardianAngelOptions.ProtectionDurationSeconds = 10f;
|
||||
GuardianAngelOptions.ProtectionDurationSeconds = 254f;
|
||||
}
|
||||
OptionManager.SyncGameOptions();
|
||||
|
||||
foreach (var p in PlayerControl.AllPlayerControls)
|
||||
{
|
||||
if (p.Data == null || p.Data.IsDead || p.Data.RoleType == RoleTypes.Shapeshifter) continue;
|
||||
p.RpcProtectPlayer(p, p.cosmetics.ColorId);
|
||||
p.Data.MarkDirty();
|
||||
}
|
||||
|
||||
if (Options.SNSChatInGameExtend.GetBool())
|
||||
{
|
||||
@@ -84,7 +92,7 @@ internal static class CoShowIntroPatch
|
||||
|
||||
if ((GameOptionsManager.Instance.CurrentGameOptions.GetFloat(FloatOptionNames.KillCooldown) == 0.01f))
|
||||
{
|
||||
Main.NormalOptions.KillCooldown = 8f;
|
||||
Main.NormalOptions.KillCooldown = 5f;
|
||||
OptionManager.SyncGameOptions();
|
||||
|
||||
_ = new LateTask(() =>
|
||||
@@ -98,7 +106,7 @@ internal static class CoShowIntroPatch
|
||||
{
|
||||
if (Options.PNSChatInGame.GetBool())
|
||||
{
|
||||
Main.NormalOptions.KillCooldown = 8f;
|
||||
Main.NormalOptions.KillCooldown = 5f;
|
||||
OptionManager.SyncGameOptions();
|
||||
|
||||
_ = new LateTask(() =>
|
||||
|
||||
@@ -14,7 +14,7 @@ internal static class OnGameJoinedPatch
|
||||
public static bool AutoStartCheck;
|
||||
public static void Postfix()
|
||||
{
|
||||
Logger.Info(" -------- JOINED GAME --------", "OnGameJoined");
|
||||
Logger.Info(" -------- GAME JOINED --------", "OnGameJoined");
|
||||
|
||||
if (!AmongUsClient.Instance.AmHost) return;
|
||||
|
||||
@@ -100,7 +100,6 @@ class OnPlayerJoinedPatch
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static void Postfix([HarmonyArgument(0)] ClientData Client)
|
||||
{
|
||||
Logger.Info($" {Client.PlayerName} / {Client.FriendCode} / {Client.PlatformData.Platform}", "Joined The Game");
|
||||
|
||||
@@ -33,7 +33,7 @@ internal class CoStartGamePatch
|
||||
class PlayerControlSetRolePatch
|
||||
{
|
||||
public static bool FirstAssign;
|
||||
private static readonly HashSet<byte> ProcessedPlayers = new();
|
||||
public static readonly HashSet<byte> ProcessedPlayers = new();
|
||||
public static HashSet<byte> Seekers = new();
|
||||
public static HashSet<byte> manualSeekers = new();
|
||||
private static readonly System.Random rand = new System.Random();
|
||||
@@ -101,16 +101,10 @@ class PlayerControlSetRolePatch
|
||||
else roleType = RoleTypes.Crewmate;
|
||||
}
|
||||
|
||||
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek)
|
||||
{
|
||||
if (roleType == RoleTypes.Impostor || roleType == RoleTypes.Phantom || roleType == RoleTypes.Viper) roleType = RoleTypes.Shapeshifter;
|
||||
}
|
||||
|
||||
if (ProcessedPlayers.Count >= PlayerControl.AllPlayerControls.Count)
|
||||
{
|
||||
Seekers.Clear();
|
||||
ProcessedPlayers.Clear();
|
||||
|
||||
FirstAssign = false;
|
||||
Logger.Info(" PCSRP successful", "RoleManaging");
|
||||
}
|
||||
|
||||
@@ -136,19 +130,21 @@ internal static class OnGameStartPatch
|
||||
if (MeetingHud.Instance != null) MeetingHud.Instance.RpcClose();
|
||||
}
|
||||
|
||||
if (AmongUsClient.Instance.AmHost && Main.GM.Value)
|
||||
{
|
||||
Logger.Info($" Game Master Successful", "StartGame");
|
||||
PlayerControl.LocalPlayer.Exiled();
|
||||
PlayerControl.LocalPlayer.RpcSetRole(RoleTypes.CrewmateGhost);
|
||||
}
|
||||
|
||||
foreach (var p in PlayerControl.AllPlayerControls)
|
||||
{
|
||||
Utils.StoredRoleText[p.PlayerId] = Utils.GetRoleText(p);
|
||||
}
|
||||
|
||||
PastStartScreen = true;
|
||||
|
||||
if (AmongUsClient.Instance.AmHost && Main.GM.Value)
|
||||
{
|
||||
if ((Options.SNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 1) || (Options.PNSChatInGameFast.GetBool() && Options.Gamemode.GetValue() == 3)) return;
|
||||
|
||||
Logger.Info($" Game Master Successful", "StartGame");
|
||||
PlayerControl.LocalPlayer.Exiled();
|
||||
PlayerControl.LocalPlayer.RpcSetRole(RoleTypes.CrewmateGhost);
|
||||
}
|
||||
}
|
||||
|
||||
// All Patches below are for the speeded up Chat In Game.
|
||||
|
||||
@@ -62,20 +62,22 @@ internal static class MurderPlayerPatch
|
||||
|
||||
if (resultFlags.HasFlag(MurderResultFlags.Succeeded))
|
||||
{
|
||||
killCount[playerId]++;
|
||||
Logger.Info($" {__instance.Data.PlayerName} killed {target.Data.PlayerName}", "MurderPlayer");
|
||||
if (string.IsNullOrEmpty(NormalGameEndChecker.firstDeath))
|
||||
{
|
||||
NormalGameEndChecker.firstDeath = target.Data.PlayerName;
|
||||
Utils.HasMurdered = true;
|
||||
}
|
||||
|
||||
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek)
|
||||
{
|
||||
if (target.Data.PlayerId == __instance.shapeshiftTargetPlayerId) return;
|
||||
Logger.Info($" {__instance.Data.PlayerName} directly killed {target.Data.PlayerName} in SnS, forcing suicide. (Are they hacking?)", "MurderPlayer");
|
||||
__instance.RpcSetRole(RoleTypes.ImpostorGhost);
|
||||
}
|
||||
else
|
||||
{
|
||||
killCount[playerId]++;
|
||||
Logger.Info($" {__instance.Data.PlayerName} killed {target.Data.PlayerName}", "MurderPlayer");
|
||||
if (string.IsNullOrEmpty(NormalGameEndChecker.firstDeath))
|
||||
{
|
||||
NormalGameEndChecker.firstDeath = target.Data.PlayerName;
|
||||
Utils.HasMurdered = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((target == PlayerControl.LocalPlayer || PlayerControl.LocalPlayer.Data.IsDead) && !Main.DisableInfoWhenDead.Value && resultFlags.HasFlag(MurderResultFlags.Succeeded))
|
||||
@@ -94,7 +96,7 @@ internal static class MurderPlayerPatch
|
||||
}
|
||||
|
||||
//1 = Shift and Seek
|
||||
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek)
|
||||
if (Options.Gamemode.GetValue() == 1 && !Utils.isHideNSeek && !resultFlags.HasFlag(MurderResultFlags.Succeeded))
|
||||
{
|
||||
if (target.Data.PlayerId == __instance.shapeshiftTargetPlayerId)
|
||||
{
|
||||
@@ -197,7 +199,7 @@ class PlayerControlCompleteTaskPatch
|
||||
|
||||
public static void CalculateTaskWin()
|
||||
{
|
||||
if (!Utils.GamePastRoleSelection || Utils.isHideNSeek || Options.NoGameEnd.GetBool() || !OnGameStartPatch.PastStartScreen) return;
|
||||
if (!OnGameStartPatch.PastStartScreen || Utils.isHideNSeek || Options.NoGameEnd.GetBool() || !OnGameStartPatch.PastStartScreen) return;
|
||||
|
||||
//Logger.Info($" Checking if {GameData.Instance.CompletedTasks} - {ignoredCompletedTasks} >= ({GameData.Instance.TotalTasks} - {ignoredTasks}) * 0.01 * {Options.TaskPercentNeededToWin.GetInt()}", "TaskPatch");
|
||||
|
||||
|
||||
@@ -1,24 +1,23 @@
|
||||
# Welcome to Among Us Revamped!
|
||||
<h1 align="center">Welcome to Among Us Revamped!</h1>
|
||||
<br>
|
||||
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/83Zhzhyhya" target="_blank">
|
||||
<img src="https://img.shields.io/badge/Discord%20-%231DA1F2.svg?&style=for-the-badge&logo=discord&logoColor=white&color=5662f6"/>
|
||||
</a>
|
||||
<a href="https://ko-fi.com/apemv">
|
||||
<img src="https://img.shields.io/badge/Donate%20on-Ko--fi-ff5f5f?style=for-the-badge&logo=ko-fi&logoColor=white">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<center>
|
||||
<a href="https://discord.gg/83Zhzhyhya" target="_blank"><img src="https://img.shields.io/badge/Discord%20-%231DA1F2.svg?&style=for-the-badge&logo=discord&logoColor=white&color=5662f6"/></a>
|
||||
<a href="https://github.com/apemv/AmongUsRevamped/releases/latest" target="_blank"><img src="https://img.shields.io/badge/Latest Version%20-%231DA1F2.svg?&style=for-the-badge&logo=github&logoColor=white&color=181717"/></a>
|
||||
</center>
|
||||
|
||||
<a href="../../releases">
|
||||
<img src="https://img.shields.io/github/downloads/ApeMV/AmongUsRevamped/total?style=for-the-badge&color=red">
|
||||
</a>
|
||||
|
||||
<a href="../../releases/latest">
|
||||
<img src="https://img.shields.io/github/downloads/ApeMV/AmongUsRevamped/latest/total?style=for-the-badge">
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/ApeMV/AmongUsRevamped/releases">
|
||||
<img src="https://img.shields.io/github/downloads/ApeMV/AmongUsRevamped/total?style=for-the-badge&color=red"/>
|
||||
</a>
|
||||
<a href="https://github.com/ApeMV/AmongUsRevamped/releases/latest">
|
||||
<img src="https://img.shields.io/github/downloads/ApeMV/AmongUsRevamped/latest/total?style=for-the-badge"/>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
# 💡 How To Install:
|
||||
@@ -37,7 +36,7 @@
|
||||
<img src="https://github.com/astra1dev/AUnlocker/assets/90265231/14226f03-a003-4efc-b27b-6df53fb394d6" width=410 height=240>****
|
||||
|
||||
|
||||
# 🎮 Features (v2.0.1):
|
||||
# 🎮 Features (v2.0.3):
|
||||
|
||||
## <b>♠️ Client Side settings:</b>
|
||||
- Toggle Game Master (Spectator)
|
||||
|
||||
@@ -341,5 +341,13 @@
|
||||
"pnsDisableCloseDoor": "PnSのドア閉鎖サボタージュを無効にする",
|
||||
"tabGroupPNS": "Poof and Seek",
|
||||
"badMoveTimeToSuicide": "幻象師が明らかに移動した後、自殺するまでの時間",
|
||||
"snsImpostorCanVent": "インポスターはベントを使用できる"
|
||||
"snsImpostorCanVent": "インポスターはベントを使用できる",
|
||||
"modeVoteDuration": "ゲームモード投票時間",
|
||||
"snsChatInGameExtendTwo": "ゲーム開始後に拡張情報を送信",
|
||||
"snsChatInGameFast": "高速会議(実験的+)",
|
||||
"shieldFirstDeath": "最初に死亡したプレイヤーをシールドで保護",
|
||||
"shieldFirstDeathDuration": "シールド持続時間",
|
||||
"snsTwoDesc": "Shift and Seekの拡張説明を送信。",
|
||||
"modeVoteDesc": "すべてのゲームモードから投票を開始します。",
|
||||
"automaticModePoll": "再参加後に自動で /gmvote を実行"
|
||||
}
|
||||
@@ -328,5 +328,13 @@
|
||||
"pnsDisableCloseDoor": "禁用 PnS 关门破坏。",
|
||||
"tabGroupPNS": "Poof and Seek",
|
||||
"badMoveTimeToSuicide": "幻象师在明显移动后自杀的时间。",
|
||||
"snsImpostorCanVent": "内鬼可以使用通风管。"
|
||||
"snsImpostorCanVent": "内鬼可以使用通风管。",
|
||||
"modeVoteDuration": "游戏模式投票时长",
|
||||
"snsChatInGameExtendTwo": "游戏开始后发送扩展信息",
|
||||
"snsChatInGameFast": "快速会议(实验性+)",
|
||||
"shieldFirstDeath": "护盾保护第一个死亡的玩家",
|
||||
"shieldFirstDeathDuration": "护盾持续时间",
|
||||
"snsTwoDesc": "发送 Shift and Seek 扩展说明。",
|
||||
"modeVoteDesc": "在所有游戏模式之间发起投票。",
|
||||
"automaticModePoll": "重新加入后自动执行 /gmvote"
|
||||
}
|
||||
@@ -294,10 +294,17 @@
|
||||
"moderatorAndAbove": "<color=purple>Moderador</color> o superior",
|
||||
"admin": "<color=red>Administrador</color>",
|
||||
"onlyYou": "Solo tú",
|
||||
|
||||
"pnsDisableSabotage": "Disable PnS Critical Sabotages",
|
||||
"pnsDisableCloseDoor": "Disable PnS Door Sabotages",
|
||||
"pnsDisableSabotage": "Desactivar sabotajes críticos de PnS",
|
||||
"pnsDisableCloseDoor": "Desactivar sabotajes de puertas de PnS",
|
||||
"tabGroupPNS": "Poof and Seek",
|
||||
"badMoveTimeToSuicide": "Phantom Suicides After Visibly Moving For",
|
||||
"snsImpostorCanVent": "Impostors can vent"
|
||||
"badMoveTimeToSuicide": "El Fantasma se suicida después de moverse visiblemente durante",
|
||||
"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+)",
|
||||
"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"
|
||||
}
|
||||
Reference in new issue
Block a user