M A R I O

This commit is contained in:
HyperAtill committed 2025-11-24 17:57:36 +03:00
1 parent c9a866ebfc
commit 0c686a5f07
7 files changed
+44 -44

No files matched your search

+1 -1
View File
@@ -335,7 +335,7 @@ public enum CustomRoles
Lawyer,
Magician,
Magistrate,
Mario, // Vector
Vector,
Maverick,
Medusa,
Mycologist,
+2 -2
View File
@@ -527,7 +527,7 @@ public class Main : BasePlugin
{ CustomRoles.Lawyer, "#008080" },
{ CustomRoles.God, "#f96464" },
{ CustomRoles.Opportunist, "#4dff4d" },
{ CustomRoles.Mario, "#ff6201" },
{ CustomRoles.Vector, "#ff6201" },
{ CustomRoles.Jackal, "#00b4eb" },
{ CustomRoles.Sidekick, "#00b4eb" },
{ CustomRoles.Innocent, "#8f815e" },
@@ -1039,7 +1039,7 @@ public enum CustomWinner
Technician = CustomRoles.Technician,
Jackal = CustomRoles.Jackal,
God = CustomRoles.God,
Mario = CustomRoles.Mario,
Vector = CustomRoles.Vector,
Innocent = CustomRoles.Innocent,
Pelican = CustomRoles.Pelican,
Youtuber = CustomRoles.Youtuber,
+3 -3
View File
@@ -301,7 +301,7 @@ internal static class CustomRolesHelper
CustomRoles.Technician => Technician.CanVent.GetBool() ? CustomRoles.Engineer : CustomRoles.Crewmate,
CustomRoles.GuardianAngelEHR => CustomRoles.GuardianAngel,
CustomRoles.Zombie => CustomRoles.Impostor,
CustomRoles.Mario => CustomRoles.Engineer,
CustomRoles.Vector => CustomRoles.Engineer,
CustomRoles.AntiAdminer => CustomRoles.Shapeshifter,
CustomRoles.Arrogance => CustomRoles.Impostor,
CustomRoles.Bomber => UsePets ? CustomRoles.Impostor : CustomRoles.Shapeshifter,
@@ -1520,7 +1520,7 @@ internal static class CustomRolesHelper
RoleOptionType.Crewmate_Power => Utils.GetRoleColor(CustomRoles.Electric),
RoleOptionType.Crewmate_Chaos => Utils.GetRoleColor(CustomRoles.Tornado),
RoleOptionType.Neutral_Benign => Utils.GetRoleColor(CustomRoles.Chameleon),
RoleOptionType.Neutral_Evil => Utils.GetRoleColor(CustomRoles.Mario),
RoleOptionType.Neutral_Evil => Utils.GetRoleColor(CustomRoles.Vector),
RoleOptionType.Neutral_Pariah => ColorUtility.TryParseHtmlString("#a10e49", out var c) ? c : Color.magenta,
RoleOptionType.Neutral_Killing => Palette.ImpostorRed,
RoleOptionType.Coven_Miscellaneous => Utils.GetRoleColor(CustomRoles.CovenLeader),
@@ -1600,7 +1600,7 @@ internal static class CustomRolesHelper
CustomRoles.God => RoleOptionType.Neutral_Evil,
CustomRoles.Executioner => RoleOptionType.Neutral_Evil,
CustomRoles.Doomsayer => RoleOptionType.Neutral_Evil,
CustomRoles.Mario => RoleOptionType.Neutral_Evil,
CustomRoles.Vector => RoleOptionType.Neutral_Evil,
CustomRoles.Terrorist => RoleOptionType.Neutral_Evil,
CustomRoles.Thief => RoleOptionType.Neutral_Evil,
CustomRoles.Collector => RoleOptionType.Neutral_Evil,
+1 -1
View File
@@ -913,7 +913,7 @@ public static class Utils
case CustomRoles.Crusader when !Options.UsePets.GetBool() || !Crusader.UsePet.GetBool():
case CustomRoles.Refugee:
case CustomRoles.Jester:
case CustomRoles.Mario:
case CustomRoles.Vector:
case CustomRoles.Vulture:
case CustomRoles.God:
case CustomRoles.Innocent:
+1 -1
View File
@@ -219,7 +219,7 @@ internal static class ChangeRoleSettings
Mayor.MayorUsedButtonCount = [];
Paranoid.ParaUsedButtonCount = [];
Mario.MarioVentCount = [];
Vector.VectorVentCount = [];
Cleaner.CleanerBodies = [];
Virus.InfectedBodies = [];
Workaholic.WorkaholicAlive = [];
+11 -11
View File
@@ -299,7 +299,7 @@
"Executioner": "Executioner",
"Lawyer": "Lawyer",
"Opportunist": "Opportunist",
"Mario": "Vector",
"Vector": "Vector",
"Jackal": "Jackal",
"God": "God",
"Innocent": "Innocent",
@@ -579,7 +579,7 @@
"TerroristInfo": "Finish your tasks, THEN die",
"ExecutionerInfo": "Get your target voted out",
"LawyerInfo": "Help your target win!",
"MarioInfo": "Jump in, jump out, win!",
"VectorInfo": "Jump in, jump out, win!",
"JackalInfo": "Murder everyone",
"GodInfo": "Everything is under your control",
"InnocentInfo": "Get someone ejected by making them kill you",
@@ -809,7 +809,7 @@
"ExecutionerInfoLong": "(Neutrals):\\nThe Executioner has a target with a diamond symbol next to their name. If the target dies, the Executioner may become a Crewmate, Jester, or Opportunist. If the target is voted out, the Executioner wins.",
"LawyerInfoLong": "(Neutrals):\\nLawyer has a target to defend, which will be indicated by a diamond 「♦」 next to their name. If your target wins, you win. If they lose, you lose.",
"OpportunistInfoLong": "(Neutrals):\\nIf the Opportunist is alive at the end, they win with the winning team.",
"MarioInfoLong": "(Neutrals):\\nVector will win alone by venting a certain number of times.",
"VectorInfoLong": "(Neutrals):\\nVector will win alone by venting a certain number of times.",
"JackalInfoLong": "(Neutrals):\\nConvert a player with your Kill button. If you die, they will become the new Jackal. You win once you achieve majority and no other evil teams exist.",
"GodInfoLong": "(Neutrals):\\nGod knows everyone's role from the beginning, and God will win alone as long as he lives to the end. Note: God won't be Lovers.",
"InnocentInfoLong": "(Neutrals):\\nInnocent players can use the kill button to plant another player, causing them to die immediately. If the planted player is voted out in a meeting, the Innocent wins. Note that the Jester, Executioner, and Innocent can win together.",
@@ -1559,13 +1559,13 @@
"ZombieSpeedReduce": "After a certain time, decrease the speed of <color=#ff1919>Zombie</color> by",
"NemesisCanKillNum": "Max number of revenges",
"JesterCanUseButton": "Can call emergency meetings",
"MarioVentButtonText": "Hop",
"Mario.NumVentsToWinOn.Skeld": "Number of Vents to Win on Skeld",
"Mario.NumVentsToWinOn.MiraHQ": "Number of Vents to Win on Mira",
"Mario.NumVentsToWinOn.Polus": "Number of Vents to Win on Polus",
"Mario.NumVentsToWinOn.Dleks": "Number of Vents to Win on Dleks",
"Mario.NumVentsToWinOn.Airship": "Number of Vents to Win on Airship",
"Mario.NumVentsToWinOn.Fungle": "Number of Vents to Win on Fungle",
"VectorVentButtonText": "Hop",
"Vector.NumVentsToWinOn.Skeld": "Number of Vents to Win on Skeld",
"Vector.NumVentsToWinOn.MiraHQ": "Number of Vents to Win on Mira",
"Vector.NumVentsToWinOn.Polus": "Number of Vents to Win on Polus",
"Vector.NumVentsToWinOn.Dleks": "Number of Vents to Win on Dleks",
"Vector.NumVentsToWinOn.Airship": "Number of Vents to Win on Airship",
"Vector.NumVentsToWinOn.Fungle": "Number of Vents to Win on Fungle",
"CanCheckCamera": "Can track camera usage",
"ArroganceDefaultKillCooldown": "Starting kill cooldown",
"ArroganceReduceKillCooldown": "Reduce kill cooldown by",
@@ -10080,7 +10080,7 @@
"WinnerRoleText.Revolutionist": "Revolutionist Wins!",
"WinnerRoleText.Jackal": "Team Jackal Wins!",
"WinnerRoleText.God": "God Wins!",
"WinnerRoleText.Mario": "Vector Wins!",
"WinnerRoleText.Vector": "Vector Wins!",
"WinnerRoleText.Innocent": "Innocent Wins!",
"WinnerRoleText.Pelican": "Pelican Wins!",
"WinnerRoleText.Youtuber": "YouTuber Wins!",
@@ -9,37 +9,37 @@ using static EHR.Options;
namespace EHR.Neutral;
internal class Mario : RoleBase
internal class Vector : RoleBase
{
public static Dictionary<byte, int> MarioVentCount = [];
public static Dictionary<byte, int> VectorVentCount = [];
public static bool On;
private static OptionItem MarioVentCD;
private static OptionItem VectorVentCD;
private static Dictionary<MapNames, OptionItem> MapWinCounts = [];
private static int MarioVentNumWin;
private static int VectorVentNumWin;
public override bool IsEnable => On;
public override void SetupCustomOption()
{
SetupRoleOptions(18300, TabGroup.NeutralRoles, CustomRoles.Mario);
SetupRoleOptions(18300, TabGroup.NeutralRoles, CustomRoles.Vector);
MarioVentCD = new FloatOptionItem(18311, "VentCooldown", new(0f, 180f, 1f), 0f, TabGroup.NeutralRoles)
.SetParent(CustomRoleSpawnChances[CustomRoles.Mario])
VectorVentCD = new FloatOptionItem(18311, "VentCooldown", new(0f, 180f, 1f), 0f, TabGroup.NeutralRoles)
.SetParent(CustomRoleSpawnChances[CustomRoles.Vector])
.SetValueFormat(OptionFormat.Seconds);
MapWinCounts = Enum.GetValues<MapNames>().ToDictionary(x => x, x => new IntegerOptionItem(18312 + (int)x, $"Mario.NumVentsToWinOn.{x}", new(0, 900, 5), 80, TabGroup.NeutralRoles)
.SetParent(CustomRoleSpawnChances[CustomRoles.Mario])
MapWinCounts = Enum.GetValues<MapNames>().ToDictionary(x => x, x => new IntegerOptionItem(18312 + (int)x, $"Vector.NumVentsToWinOn.{x}", new(0, 900, 5), 80, TabGroup.NeutralRoles)
.SetParent(CustomRoleSpawnChances[CustomRoles.Vector])
.SetValueFormat(OptionFormat.Times));
}
public override void Add(byte playerId)
{
On = true;
MarioVentCount[playerId] = 0;
MarioVentNumWin = MapWinCounts[SubmergedCompatibility.IsSubmerged() ? MapNames.Airship : Main.CurrentMap].GetInt();
VectorVentCount[playerId] = 0;
VectorVentNumWin = MapWinCounts[SubmergedCompatibility.IsSubmerged() ? MapNames.Airship : Main.CurrentMap].GetInt();
}
public override void Init()
@@ -49,44 +49,44 @@ internal class Mario : RoleBase
public override void ApplyGameOptions(IGameOptions opt, byte playerId)
{
AURoleOptions.EngineerCooldown = MarioVentCD.GetFloat();
AURoleOptions.EngineerCooldown = VectorVentCD.GetFloat();
AURoleOptions.EngineerInVentMaxTime = 1f;
}
public override string GetProgressText(byte playerId, bool comms)
{
return Utils.ColorString(Color.white, $"<color=#777777>-</color> {MarioVentCount.GetValueOrDefault(playerId, 0)}/{MarioVentNumWin}");
return Utils.ColorString(Color.white, $"<color=#777777>-</color> {VectorVentCount.GetValueOrDefault(playerId, 0)}/{VectorVentNumWin}");
}
public override void SetButtonTexts(HudManager hud, byte id)
{
hud.AbilityButton.buttonLabelText.text = Translator.GetString("MarioVentButtonText");
hud.AbilityButton.buttonLabelText.text = Translator.GetString("VectorVentButtonText");
}
public override void OnFixedUpdate(PlayerControl pc)
{
byte playerId = pc.PlayerId;
if (MarioVentCount[playerId] >= MarioVentNumWin)
if (VectorVentCount[playerId] >= VectorVentNumWin)
{
MarioVentCount[playerId] = MarioVentNumWin;
CustomWinnerHolder.ResetAndSetWinner(CustomWinner.Mario);
VectorVentCount[playerId] = VectorVentNumWin;
CustomWinnerHolder.ResetAndSetWinner(CustomWinner.Vector);
CustomWinnerHolder.WinnerIds.Add(playerId);
}
}
public override void OnEnterVent(PlayerControl pc, Vent vent)
{
MarioVentCount.TryAdd(pc.PlayerId, 0);
MarioVentCount[pc.PlayerId]++;
VectorVentCount.TryAdd(pc.PlayerId, 0);
VectorVentCount[pc.PlayerId]++;
Utils.SendRPC(CustomRPC.SyncRoleData, pc.PlayerId, pc.PlayerId);
Utils.NotifyRoles(SpecifySeer: pc, SpecifyTarget: pc);
pc.RPCPlayCustomSound("MarioJump");
pc.RPCPlayCustomSound("VectorJump");
if (AmongUsClient.Instance.AmHost && MarioVentCount[pc.PlayerId] >= MarioVentNumWin)
if (AmongUsClient.Instance.AmHost && VectorVentCount[pc.PlayerId] >= VectorVentNumWin)
{
pc.RPCPlayCustomSound("MarioCoin");
CustomWinnerHolder.ResetAndSetWinner(CustomWinner.Mario);
pc.RPCPlayCustomSound("VectorCoin");
CustomWinnerHolder.ResetAndSetWinner(CustomWinner.Vector);
CustomWinnerHolder.WinnerIds.Add(pc.PlayerId);
}
}
@@ -94,7 +94,7 @@ internal class Mario : RoleBase
public void ReceiveRPC(MessageReader reader)
{
byte id = reader.ReadByte();
MarioVentCount.TryAdd(id, 0);
MarioVentCount[id]++;
VectorVentCount.TryAdd(id, 0);
VectorVentCount[id]++;
}
}