fixes & balancing

This commit is contained in:
Gurge44 committed 2024-11-03 13:46:16 +01:00
1 parent 6cb7973a69
commit 27b42268cd
70 files changed
+646 -623

No files matched your search

+461 -460
View File
@@ -1,485 +1,486 @@
namespace EHR;
public enum CustomRoles
namespace EHR
{
// Default
Crewmate = 0,
public enum CustomRoles
{
// Default
Crewmate = 0,
// Impostors (Vanilla)
Impostor,
Phantom,
Shapeshifter,
// Impostors (Vanilla)
Impostor,
Phantom,
Shapeshifter,
// Vanilla Remakes
ImpostorEHR,
PhantomEHR,
ShapeshifterEHR,
// Vanilla Remakes
ImpostorEHR,
PhantomEHR,
ShapeshifterEHR,
// Impostors
// Impostors
Abyssbringer,
Hacker, // Anonymous
AntiAdminer,
Sans, // Arrogance
Assumer,
Augmenter,
Bard,
Blackmailer,
Bomber,
BountyHunter,
OverKiller, // Butcher
Camouflager,
Capitalism,
Cantankerous,
Changeling,
Chronomancer,
Cleaner,
Commander,
EvilDiviner, // Consigliere
Consort,
Councillor,
Crewpostor,
CursedWolf,
Deathpact,
Devourer,
Disperser,
Duellist,
Dazzler,
Echo,
Escapee,
Eraser,
EvilGuesser,
EvilTracker,
FireWorks,
Framer,
Freezer,
Gambler,
Gangster,
Generator,
Godfather,
Greedier,
Hangman,
Hitman,
Hypnotist,
Inhibitor,
Kamikaze,
Kidnapper,
Minimalism, // Killing Machine
BallLightning, // Lightning
Librarian,
Lurker,
Mafioso,
Mastermind,
Mafia, // Nemesis
SerialKiller, // Mercenary
Miner,
Morphling,
Assassin, // Ninja
Nuker,
Nullifier,
Overheat,
Parasite,
Penguin,
Puppeteer,
QuickShooter,
Refugee,
RiftMaker,
Saboteur,
Sapper,
Scavenger,
Silencer,
Sniper,
ImperiusCurse, // Soul Catcher
Swapster,
Swiftclaw,
Swooper,
Stealth,
TimeThief,
BoobyTrap, // Trapster
Trickster,
Twister,
Underdog,
Undertaker,
Vampire,
Ventriloquist,
Vindicator,
Visionary,
Warlock,
Wasp,
Wildling,
Witch,
YinYanger,
Zombie,
Abyssbringer,
Hacker, // Anonymous
AntiAdminer,
Sans, // Arrogance
Assumer,
Augmenter,
Bard,
Blackmailer,
Bomber,
BountyHunter,
OverKiller, // Butcher
Camouflager,
Capitalism,
Cantankerous,
Changeling,
Chronomancer,
Cleaner,
Commander,
EvilDiviner, // Consigliere
Consort,
Councillor,
Crewpostor,
CursedWolf,
Deathpact,
Devourer,
Disperser,
Duellist,
Dazzler,
Echo,
Escapee,
Eraser,
EvilGuesser,
EvilTracker,
FireWorks,
Framer,
Freezer,
Gambler,
Gangster,
Generator,
Godfather,
Greedier,
Hangman,
Hitman,
Hypnotist,
Inhibitor,
Kamikaze,
Kidnapper,
Minimalism, // Killing Machine
BallLightning, // Lightning
Librarian,
Lurker,
Mafioso,
Mastermind,
Mafia, // Nemesis
SerialKiller, // Mercenary
Miner,
Morphling,
Assassin, // Ninja
Nuker,
Nullifier,
Overheat,
Parasite,
Penguin,
Puppeteer,
QuickShooter,
Refugee,
RiftMaker,
Saboteur,
Sapper,
Scavenger,
Silencer,
Sniper,
ImperiusCurse, // Soul Catcher
Swapster,
Swiftclaw,
Swooper,
Stealth,
TimeThief,
BoobyTrap, // Trapster
Trickster,
Twister,
Underdog,
Undertaker,
Vampire,
Ventriloquist,
Vindicator,
Visionary,
Warlock,
Wasp,
Wildling,
Witch,
YinYanger,
Zombie,
// Crewmates (Vanilla)
Engineer,
GuardianAngel,
Noisemaker,
Scientist,
Tracker,
// Crewmates (Vanilla)
Engineer,
GuardianAngel,
Noisemaker,
Scientist,
Tracker,
// Vanilla Remakes
CrewmateEHR,
EngineerEHR,
GuardianAngelEHR,
NoisemakerEHR,
ScientistEHR,
TrackerEHR,
// Vanilla Remakes
CrewmateEHR,
EngineerEHR,
GuardianAngelEHR,
NoisemakerEHR,
ScientistEHR,
TrackerEHR,
// Crewmates
// Crewmates
Addict,
Adrenaline,
Adventurer,
Aid,
Alchemist,
Altruist,
Analyst,
Autocrat,
Bane,
Beacon,
Benefactor,
Bodyguard,
CameraMan,
Car,
Catcher,
CyberStar, // Celebrity
Chameleon,
Chef,
Clairvoyant,
Cleanser,
Convener,
CopyCat,
Bloodhound, // Coroner
LovingCrewmate,
LovingImpostor,
Crusader,
Dad,
Demolitionist,
Deputy,
Detective,
Detour,
Dictator,
Doctor,
DonutDelivery,
Doormaster,
DovesOfNeace,
Drainer,
Druid,
Electric,
Enigma,
Escort,
Express,
Farseer,
Divinator, // Fortune Teller
Gaulois,
Goose,
Grappler,
Grenadier,
GuessManagerRole,
Guardian,
Ignitor,
Insight,
ParityCop, // Inspector
Inquirer,
Jailor,
Journalist,
Judge,
Needy, // Lazy Guy
Leery,
Lighter,
Lookout,
Luckey,
Lyncher,
Markseeker,
Marshall,
Mathematician,
Mayor,
SabotageMaster, // Mechanic
Medic,
Mediumshiper,
Merchant,
Monitor,
Mole,
Monarch,
Mortician,
NiceEraser,
NiceGuesser,
NiceHacker,
NiceSwapper,
Nightmare,
Negotiator,
Observer,
Oracle,
Oxyman,
Paranoia,
Perceiver,
Philantropist,
President,
Psychic,
Rabbit,
Randomizer,
Rhapsode,
Ricochet,
Safeguard,
Scout,
SecurityGuard,
Sentinel,
Sentry,
Sheriff,
Shiftguard,
Snitch,
Socialite,
Soothsayer,
Spiritualist,
Speedrunner,
SpeedBooster,
Spy,
SuperStar,
TaskManager,
Telekinetic,
Tether,
TimeManager,
TimeMaster,
ToiletMaster,
Tornado,
Transmitter,
Transporter,
Tracefinder,
Tunneler,
Ventguard,
Veteran,
SwordsMan, // Vigilante
Whisperer,
Witness,
Wizard,
Addict,
Adrenaline,
Adventurer,
Aid,
Alchemist,
Altruist,
Analyst,
Autocrat,
Bane,
Beacon,
Benefactor,
Bodyguard,
CameraMan,
Car,
Catcher,
CyberStar, // Celebrity
Chameleon,
Chef,
Clairvoyant,
Cleanser,
Convener,
CopyCat,
Bloodhound, // Coroner
LovingCrewmate,
LovingImpostor,
Crusader,
Dad,
Demolitionist,
Deputy,
Detective,
Detour,
Dictator,
Doctor,
DonutDelivery,
Doormaster,
DovesOfNeace,
Drainer,
Druid,
Electric,
Enigma,
Escort,
Express,
Farseer,
Divinator, // Fortune Teller
Gaulois,
Goose,
Grappler,
Grenadier,
GuessManagerRole,
Guardian,
Ignitor,
Insight,
ParityCop, // Inspector
Inquirer,
Jailor,
Journalist,
Judge,
Needy, // Lazy Guy
Leery,
Lighter,
Lookout,
Luckey,
Lyncher,
Markseeker,
Marshall,
Mathematician,
Mayor,
SabotageMaster, // Mechanic
Medic,
Mediumshiper,
Merchant,
Monitor,
Mole,
Monarch,
Mortician,
NiceEraser,
NiceGuesser,
NiceHacker,
NiceSwapper,
Nightmare,
Negotiator,
Observer,
Oracle,
Oxyman,
Paranoia,
Perceiver,
Philantropist,
President,
Psychic,
Rabbit,
Randomizer,
Rhapsode,
Ricochet,
Safeguard,
Scout,
SecurityGuard,
Sentinel,
Sentry,
Sheriff,
Shiftguard,
Snitch,
Socialite,
Soothsayer,
Spiritualist,
Speedrunner,
SpeedBooster,
Spy,
SuperStar,
TaskManager,
Telekinetic,
Tether,
TimeManager,
TimeMaster,
ToiletMaster,
Tornado,
Transmitter,
Transporter,
Tracefinder,
Tunneler,
Ventguard,
Veteran,
SwordsMan, // Vigilante
Whisperer,
Witness,
Wizard,
// Neutrals
// Neutrals
Agitater,
Amnesiac,
Arsonist,
Backstabber,
Bandit,
Bargainer,
Beehive,
BloodKnight,
Bubble,
Chemist,
Cherokious,
Collector,
Deathknight,
Gamer, // Demon
Doppelganger,
Doomsayer,
Eclipse,
Enderman,
Evolver,
Executioner,
Totocalcio, // Follower
Gaslighter,
Glitch,
God,
FFF, // Hater
HeadHunter,
HexMaster,
Hookshot,
Imitator,
Impartial,
Innocent,
Jackal,
Jester,
Jinx,
Juggernaut,
Konan,
Lawyer,
Magician,
Mario,
Maverick,
Medusa,
Mycologist,
Necromancer,
Nonplus,
Opportunist,
Patroller,
Pelican,
Pestilence,
Phantasm,
Pickpocket,
PlagueBearer,
PlagueDoctor,
Poisoner,
Postman,
Predator,
Provocateur,
Pursuer,
Pyromaniac,
QuizMaster,
Reckless,
Revolutionist,
Ritualist,
Rogue,
Romantic,
RouleteGrandeur,
RuthlessRomantic,
Samurai,
SchrodingersCat,
NSerialKiller, // Serial Killer
Shifter,
Sidekick,
Simon,
SoulHunter,
Spiritcaller,
Sprayer,
DarkHide, // Stalker
Succubus,
Sunnyboy,
Technician,
Tank,
Terrorist,
Tiger,
Traitor,
Tremor,
Vengeance,
VengefulRomantic,
Virus,
Vortex,
Vulture,
Wraith,
Werewolf,
WeaponMaster,
Workaholic,
Agitater,
Amnesiac,
Arsonist,
Backstabber,
Bandit,
Bargainer,
Beehive,
BloodKnight,
Bubble,
Chemist,
Cherokious,
Collector,
Deathknight,
Gamer, // Demon
Doppelganger,
Doomsayer,
Eclipse,
Enderman,
Evolver,
Executioner,
Totocalcio, // Follower
Gaslighter,
Glitch,
God,
FFF, // Hater
HeadHunter,
HexMaster,
Hookshot,
Imitator,
Impartial,
Innocent,
Jackal,
Jester,
Jinx,
Juggernaut,
Konan,
Lawyer,
Magician,
Mario,
Maverick,
Medusa,
Mycologist,
Necromancer,
Nonplus,
Opportunist,
Patroller,
Pelican,
Pestilence,
Phantasm,
Pickpocket,
PlagueBearer,
PlagueDoctor,
Poisoner,
Postman,
Predator,
Provocateur,
Pursuer,
Pyromaniac,
QuizMaster,
Reckless,
Revolutionist,
Ritualist,
Rogue,
Romantic,
RouleteGrandeur,
RuthlessRomantic,
Samurai,
SchrodingersCat,
NSerialKiller, // Serial Killer
Shifter,
Sidekick,
Simon,
SoulHunter,
Spiritcaller,
Sprayer,
DarkHide, // Stalker
Succubus,
Sunnyboy,
Technician,
Tank,
Terrorist,
Tiger,
Traitor,
Tremor,
Vengeance,
VengefulRomantic,
Virus,
Vortex,
Vulture,
Wraith,
Werewolf,
WeaponMaster,
Workaholic,
// Solo Kombat
KB_Normal,
// Solo Kombat
KB_Normal,
// FFA
Killer,
// FFA
Killer,
// Move And Stop
Tasker,
// Move And Stop
Tasker,
// Hot Potato
Potato,
// Hot Potato
Potato,
// H&S
Hider,
Seeker,
Fox,
Troll,
Jumper,
Detector,
Jet,
Dasher,
Locator,
Venter,
Agent,
Taskinator,
// H&S
Hider,
Seeker,
Fox,
Troll,
Jumper,
Detector,
Jet,
Dasher,
Locator,
Venter,
Agent,
Taskinator,
// Speedrun
Runner,
// Speedrun
Runner,
// Capture The Flag
CTFPlayer,
// Capture The Flag
CTFPlayer,
// Natural Disasters
NDPlayer,
// Natural Disasters
NDPlayer,
// Room Rush
RRPlayer,
// Room Rush
RRPlayer,
// GM
GM,
// GM
GM,
// ????
Convict,
// ????
Convict,
// Sub-role after 500
NotAssigned = 500,
Allergic,
Antidote,
AntiTP,
Asthmatic,
Autopsy,
Avanger,
Bait,
Busy,
Trapper, // Beartrap
Bewilder,
Bloodlust,
Bloodmoon, // Ghost role
Charmed,
Circumvent,
Cleansed,
Clumsy,
Contagious,
Damocles,
Deadlined,
DeadlyQuota,
Disco,
Diseased,
Dynamo,
Unreportable, // Disregarded
DoubleShot,
Egoist,
Energetic,
EvilSpirit,
Finder,
Flashman,
Fool,
Giant,
Glow,
Gravestone,
GA, // Guardian Angel - Ghost role
Guesser,
Haste,
Haunter, // Ghost role
Introvert,
Knighted,
LastImpostor,
Lazy,
Lovers,
Loyal,
Lucky,
Madmate,
Magnet,
Mare,
Messenger,
Mimic,
Minion, // Ghost role
Mischievous,
Necroview,
Nimble,
Noisy,
Oblivious,
Onbound,
Spurt,
Sleep,
Specter, // Ghost role
Physicist,
Rascal,
Reach,
Recruit,
Rookie,
Trainee,
DualPersonality, // Schizophrenic
Seer,
Sleuth,
Sonar,
Stained,
Taskcounter,
TicketsStealer, // Stealer
Stressed,
Swift,
Sunglasses,
Brakar, // Tiebreaker
Torch,
Truant,
Undead,
Unlucky,
Warden, // Ghost role
Watcher,
Workhorse,
Youtuber
// Sub-role after 500
NotAssigned = 500,
Allergic,
Antidote,
AntiTP,
Asthmatic,
Autopsy,
Avanger,
Bait,
Busy,
Trapper, // Beartrap
Bewilder,
Bloodlust,
Bloodmoon, // Ghost role
Charmed,
Circumvent,
Cleansed,
Clumsy,
Contagious,
Damocles,
Deadlined,
DeadlyQuota,
Disco,
Diseased,
Dynamo,
Unreportable, // Disregarded
DoubleShot,
Egoist,
Energetic,
EvilSpirit,
Finder,
Flashman,
Fool,
Giant,
Glow,
Gravestone,
GA, // Guardian Angel - Ghost role
Guesser,
Haste,
Haunter, // Ghost role
Introvert,
Knighted,
LastImpostor,
Lazy,
Lovers,
Loyal,
Lucky,
Madmate,
Magnet,
Mare,
Messenger,
Mimic,
Minion, // Ghost role
Mischievous,
Necroview,
Nimble,
Noisy,
Oblivious,
Onbound,
Spurt,
Sleep,
Specter, // Ghost role
Physicist,
Rascal,
Reach,
Recruit,
Rookie,
Trainee,
DualPersonality, // Schizophrenic
Seer,
Sleuth,
Sonar,
Stained,
Taskcounter,
TicketsStealer, // Stealer
Stressed,
Swift,
Sunglasses,
Brakar, // Tiebreaker
Torch,
Truant,
Undead,
Unlucky,
Warden, // Ghost role
Watcher,
Workhorse,
Youtuber
}
}
+2 -2
View File
@@ -280,7 +280,7 @@ namespace EHR
public static bool HasTasks(NetworkedPlayerInfo playerInfo)
{
if (!AmongUsClient.Instance.AmHost && playerInfo.PlayerId == PlayerControl.LocalPlayer.PlayerId) return PlayerControl.LocalPlayer.GetCustomRole() is CustomRoles.Taskinator or CustomRoles.Hider or CustomRoles.Jet or CustomRoles.Detector or CustomRoles.Jumper;
if (!AmongUsClient.Instance.AmHost && playerInfo.IsLocalPlayer()) return PlayerControl.LocalPlayer.GetCustomRole() is CustomRoles.Taskinator or CustomRoles.Hider or CustomRoles.Jet or CustomRoles.Detector or CustomRoles.Jumper;
if (!PlayerRoles.TryGetValue(playerInfo.PlayerId, out (IHideAndSeekRole Interface, CustomRoles Role) role)) return false;
@@ -441,7 +441,7 @@ namespace EHR
static string GetTaskText()
{
StringBuilder sb = new();
Il2CppSystem.Text.StringBuilder sb = new();
bool flag = PlayerControl.LocalPlayer.Data.Role != null && PlayerControl.LocalPlayer.Data.Role.IsImpostor;
foreach (PlayerTask task in PlayerControl.LocalPlayer.myTasks)
+1 -1
View File
@@ -109,7 +109,7 @@ namespace EHR
SurvivalTimes[HotPotatoState.HolderID] = Time.GetInt() * (HotPotatoState.RoundNum - 1);
PassHotPotato();
if (Holder.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (Holder.IsLocalPlayer())
Achievements.Type.OutOfTime.Complete();
return;
+1 -1
View File
@@ -223,7 +223,7 @@ namespace EHR
if (LimitMaximumDisastersAtOnce.GetBool())
{
int numDisasters = ActiveDisasters.Count + PreparingDisasters.Count;
int numDisasters = ActiveDisasters.Count + PreparingDisasters.Count + Sinkhole.Sinkholes.Count;
if (numDisasters > MaximumDisastersAtOnce.GetInt())
{
+5 -15
View File
@@ -226,7 +226,7 @@ namespace EHR
yield return new WaitForSeconds(1f);
}
if (ventLimit > 0) aapc.Without(PlayerControl.LocalPlayer).DoIf(x => !x.IsNonHostModClient(), x => x.RpcChangeRoleBasis(CustomRoles.EngineerEHR));
if (ventLimit > 0) aapc.Do(x => x.RpcChangeRoleBasis(CustomRoles.EngineerEHR));
Utils.SendRPC(CustomRPC.RoomRushDataSync, 1);
@@ -301,7 +301,7 @@ namespace EHR
{
Main.AllPlayerSpeed[PlayerControl.LocalPlayer.PlayerId] = speed;
PlayerControl.LocalPlayer.SyncSettings();
}, AmongUsClient.Instance.Ping / 1000f * 4f);
}, Utils.CalculatePingDelay() * 2f);
}
private static PlainShipRoom GetRoomClass(this SystemTypes systemTypes)
@@ -317,14 +317,14 @@ namespace EHR
bool dead = !seer.IsAlive();
bool done = dead || DonePlayers.Contains(seer.PlayerId);
Color color = done ? Color.green : Color.yellow;
if (DisplayRoomName.GetBool()) sb.AppendLine(Utils.ColorString(color, Translator.GetString(RoomGoal.ToString())));
if (DisplayArrowToRoom.GetBool()) sb.AppendLine(Utils.ColorString(color, LocateArrow.GetArrows(seer)));
color = done ? Color.white : Color.yellow;
sb.AppendLine(Utils.ColorString(color, TimeLeft.ToString()));
if (VentTimes.GetInt() == 0 || dead) return sb.ToString();
if (VentTimes.GetInt() == 0 || dead || seer.IsModClient()) return sb.ToString();
sb.AppendLine();
@@ -412,7 +412,7 @@ namespace EHR
playersOutsideRoom.Do(x => x.Suicide());
StartNewRound();
if (playersOutsideRoom.Any(x => x.PlayerId == PlayerControl.LocalPlayer.PlayerId))
if (playersOutsideRoom.Any(x => x.IsLocalPlayer()))
Achievements.Type.OutOfTime.Complete();
}
}
@@ -435,15 +435,5 @@ namespace EHR
Utils.SendRPC(CustomRPC.RoomRushDataSync, 2, RoomRush.VentLimit[pc.PlayerId], pc.PlayerId);
if (RoomRush.VentLimit[pc.PlayerId] <= 0) pc.RpcChangeRoleBasis(CustomRoles.RRPlayer);
}
public override bool CanUseImpostorVentButton(PlayerControl pc)
{
return !pc.IsHost() && CanUseVent(pc, 0);
}
public override bool CanUseVent(PlayerControl pc, int ventId)
{
return RoomRush.GameGoing && (pc.inVent || RoomRush.VentLimit[pc.PlayerId] > 0);
}
}
}
+1 -1
View File
@@ -181,7 +181,7 @@ namespace EHR
LastHurt[target.PlayerId] = Utils.TimeStamp;
float kcd = KB_ATKCooldown.GetFloat();
if (killer.IsHost()) kcd += AmongUsClient.Instance.Ping / 1000f * 4f;
if (killer.IsHost()) kcd += Utils.CalculatePingDelay() * 2f;
killer.SetKillCooldown(kcd, target);
RPC.PlaySoundRPC(killer.PlayerId, Sounds.KillSound);
+1 -1
View File
@@ -154,7 +154,7 @@ namespace EHR
{
__instance.Suicide();
if (__instance.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (__instance.IsLocalPlayer())
Achievements.Type.OutOfTime.Complete();
}
+5 -1
View File
@@ -117,7 +117,11 @@ namespace EHR
byte id = target.PlayerId;
if (IsCamouflage && Main.PlayerStates[id].IsDead) return;
if (IsCamouflage && !target.IsAlive() && target.Data.IsDead)
{
Logger.Info("Player is dead, returning", "Camouflage.RpcSetSkin");
return;
}
NetworkedPlayerInfo.PlayerOutfit newOutfit = CamouflageOutfit;
+2 -1
View File
@@ -3,10 +3,11 @@ namespace EHR
public static class DebugModeManager
{
public static OptionItem EnableDebugMode;
public static bool AmDebugger { get; private set; }
public static bool AmDebugger { get; private set; } =
#if DEBUG
true;
#else
false;
#endif
public static void Auth(HashAuth auth, string input)
+12 -19
View File
@@ -14,6 +14,7 @@ using EHR.Neutral;
using Hazel;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
using InnerNet;
using Sentry.Internal.Extensions;
using UnityEngine;
using static EHR.Translator;
using static EHR.Utils;
@@ -257,10 +258,7 @@ namespace EHR
{
Main.LastNotifyNames[(player.PlayerId, seer.PlayerId)] = name;
}
catch (Exception e)
{
ThrowException(e);
}
catch { }
}
if (player.Data != null) Logger.Info($"Set: {player.Data.PlayerName} => {name} for Everyone", "RpcSetNameEx");
@@ -405,7 +403,7 @@ namespace EHR
if (seerClientId == -1) continue;
bool seerIsHost = seer.IsHost();
bool self = player.PlayerId == seer.PlayerId;
bool self = playerId == seer.PlayerId;
if (!self && seer.HasDesyncRole() && !seerIsHost)
remeberRoleType = newRoleVN is CustomRoles.Noisemaker ? RoleTypes.Noisemaker : RoleTypes.Scientist;
@@ -454,7 +452,7 @@ namespace EHR
int seerClientId = seer.GetClientId();
if (seerClientId == -1) continue;
bool self = player.PlayerId == seer.PlayerId;
bool self = playerId == seer.PlayerId;
if (self)
{
@@ -1277,7 +1275,7 @@ namespace EHR
CustomGameMode.Speedrun => false,
CustomGameMode.CaptureTheFlag => false,
CustomGameMode.NaturalDisasters => false,
CustomGameMode.RoomRush => !Main.HasJustStarted && RoomRush.VentLimit[pc.PlayerId] > 0,
CustomGameMode.RoomRush => false,
CustomGameMode.Standard when CopyCat.Instances.Any(x => x.CopyCatPC.PlayerId == pc.PlayerId) => true,
CustomGameMode.Standard when pc.Is(CustomRoles.Nimble) || Options.EveryoneCanVent.GetBool() => true,
@@ -1451,7 +1449,7 @@ namespace EHR
RPC.PlaySoundRPC(killer.PlayerId, Sounds.TaskComplete);
}, Options.TrapperBlockMoveTime.GetFloat(), "Trapper BlockMove");
if (killer.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (killer.IsLocalPlayer())
Achievements.Type.TooCold.CompleteAfterGameEnd();
}
@@ -1530,7 +1528,7 @@ namespace EHR
Main.DiedThisRound.Add(target.PlayerId);
if (killer.PlayerId == PlayerControl.LocalPlayer.PlayerId && !killer.HasKillButton())
if (killer.IsLocalPlayer() && !killer.HasKillButton())
Achievements.Type.InnocentKiller.Complete();
switch (killer.PlayerId == target.PlayerId)
@@ -1584,10 +1582,13 @@ namespace EHR
}, 0.1f, log: false);
}
}
public static bool IsLocalPlayer(this PlayerControl pc) => pc.PlayerId == PlayerControl.LocalPlayer.PlayerId;
public static bool IsLocalPlayer(this NetworkedPlayerInfo npi) => npi.PlayerId == PlayerControl.LocalPlayer.PlayerId;
public static bool IsModClient(this PlayerControl player)
{
return player.IsHost() || Main.PlayerVersion.ContainsKey(player.PlayerId);
return player.IsLocalPlayer() || player.IsHost() || Main.PlayerVersion.ContainsKey(player.PlayerId);
}
public static List<PlayerControl> GetPlayersInAbilityRangeSorted(this PlayerControl player, bool ignoreColliders = false)
@@ -1716,15 +1717,7 @@ namespace EHR
public static RoleTypes GetRoleTypes(this PlayerControl pc)
{
return pc.GetCustomSubRoles() switch
{
{ } x when x.Contains(CustomRoles.Bloodlust) => RoleTypes.Impostor,
{ } x when x.Contains(CustomRoles.Nimble) && !pc.HasDesyncRole() => RoleTypes.Engineer,
{ } x when x.Contains(CustomRoles.Physicist) => RoleTypes.Scientist,
{ } x when x.Contains(CustomRoles.Finder) => RoleTypes.Tracker,
{ } x when x.Contains(CustomRoles.Noisy) => RoleTypes.Noisemaker,
_ => pc.GetCustomRole().GetRoleTypes()
};
return pc.GetRoleMap().RoleType;
}
public static bool Is(this PlayerControl target, CustomRoles role)
+1 -1
View File
@@ -794,7 +794,7 @@ namespace EHR
if (pc.Is(CustomRoles.Pickpocket) && pc.PlayerId != dp.PlayerId) LateTask.New(() => Utils.SendMessage(string.Format(GetString("PickpocketGetVote"), (int)(Main.AllPlayerControls.Count(x => x.GetRealKiller()?.PlayerId == pc.PlayerId) * Pickpocket.VotesPerKill.GetFloat()))), 0.7f, log: false);
}, 0.2f, "Guesser Kill");
if (guesserSuicide && pc.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (guesserSuicide && pc.IsLocalPlayer())
Achievements.Type.BadLuckOrBadObservation.Complete();
}
+1 -1
View File
@@ -83,7 +83,7 @@ namespace EHR
public static bool CheckSpam(PlayerControl player, string text)
{
if (player.PlayerId == PlayerControl.LocalPlayer.PlayerId) return false;
if (player.IsLocalPlayer()) return false;
string name = player.GetRealName();
var kick = false;
+3 -3
View File
@@ -254,7 +254,7 @@ namespace EHR.Modules
{
try
{
if (killer.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (killer.IsLocalPlayer())
{
if (Main.AliveImpostorCount == 0 && killer.IsCrewmate() && target.IsImpostor() && !Main.AllAlivePlayerControls.Any(x => x.IsNeutralKiller()))
Achievements.Type.ImCrewISwear.Complete();
@@ -292,7 +292,7 @@ namespace EHR.Modules
Achievements.Type.ThereCanOnlyBeOne.CompleteAfterGameEnd();
}
if (target.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (target.IsLocalPlayer())
{
PlayerState targetState = Main.PlayerStates[target.PlayerId];
@@ -310,7 +310,7 @@ namespace EHR.Modules
{
try
{
if (shapeshifter.PlayerId == PlayerControl.LocalPlayer.PlayerId && shapeshifting && animated)
if (shapeshifter.IsLocalPlayer() && shapeshifting && animated)
{
Achievements.Type.ItsMorbinTime.Complete();
if (shapeshifter.Is(CustomRoles.Disco)) Achievements.Type.Prankster.Complete();
+20 -7
View File
@@ -968,7 +968,7 @@ other: ∟ ⌠ ⌡ ╬ ╨ ▓ ▒ ░ « » █ ▄ ▌▀▐│ ┤ ╡ ╢
if ((Main.VisibleTasksCount && PlayerControl.LocalPlayer.Data.IsDead && Options.GhostCanSeeOtherRoles.GetBool()) || (PlayerControl.LocalPlayer.Is(CustomRoles.Mimic) && Main.VisibleTasksCount && __instance.Data.IsDead && Options.MimicCanSeeDeadRoles.GetBool())) return true;
if (__instance.PlayerId == PlayerControl.LocalPlayer.PlayerId) return true;
if (__instance.IsLocalPlayer()) return true;
switch (__instance.GetCustomRole())
{
@@ -995,7 +995,7 @@ other: ∟ ⌠ ⌡ ╬ ╨ ▓ ▒ ░ « » █ ▄ ▌▀▐│ ┤ ╡ ╢
(__instance.Is(CustomRoleTypes.Impostor) && PlayerControl.LocalPlayer.Is(CustomRoles.Crewpostor) && Options.AlliesKnowCrewpostor.GetBool()) ||
(__instance.Is(CustomRoleTypes.Impostor) && PlayerControl.LocalPlayer.Is(CustomRoleTypes.Impostor) && Options.ImpKnowAlliesRole.GetBool()) ||
(__instance.Is(CustomRoleTypes.Impostor) && PlayerControl.LocalPlayer.Is(CustomRoles.Madmate) && Options.MadmateKnowWhosImp.GetBool()) ||
(Main.LoversPlayers.TrueForAll(x => x.PlayerId == __instance.PlayerId || x.PlayerId == PlayerControl.LocalPlayer.PlayerId) && Main.LoversPlayers.Count == 2 && Lovers.LoverKnowRoles.GetBool()) ||
(Main.LoversPlayers.TrueForAll(x => x.PlayerId == __instance.PlayerId || x.IsLocalPlayer()) && Main.LoversPlayers.Count == 2 && Lovers.LoverKnowRoles.GetBool()) ||
(CustomTeamManager.AreInSameCustomTeam(__instance.PlayerId, PlayerControl.LocalPlayer.PlayerId) && CustomTeamManager.IsSettingEnabledForPlayerTeam(__instance.PlayerId, CTAOption.KnowRoles)) ||
Main.PlayerStates.Values.Any(x => x.Role.KnowRole(PlayerControl.LocalPlayer, __instance)) ||
PlayerControl.LocalPlayer.IsRevealedPlayer(__instance) ||
@@ -2296,7 +2296,9 @@ other: ∟ ⌠ ⌡ ╬ ╨ ▓ ▒ ░ « » █ ▄ ▌▀▐│ ┤ ╡ ╢
}
if ((IsActive(SystemTypes.MushroomMixupSabotage) || MushroomMixup) && target.IsAlive() && !seer.Is(CustomRoleTypes.Impostor) && Main.ResetCamPlayerList.Contains(seer.PlayerId))
{
target.RpcSetNamePrivate("<size=0%>", force: NoCache);
}
else
{
TargetMark.Clear();
@@ -2306,14 +2308,15 @@ other: ∟ ⌠ ⌡ ╬ ╨ ▓ ▒ ░ « » █ ▄ ▌▀▐│ ┤ ╡ ╢
TargetMark.Append(Witch.GetSpelledMark(target.PlayerId, isForMeeting));
if (isForMeeting) TargetMark.Append(Wasp.GetStungMark(target.PlayerId));
if (target.Is(CustomRoles.SuperStar) && Options.EveryOneKnowSuperStar.GetBool()) TargetMark.Append(ColorString(GetRoleColor(CustomRoles.SuperStar), "★"));
if (target.Is(CustomRoles.SuperStar) && Options.EveryOneKnowSuperStar.GetBool())
TargetMark.Append(ColorString(GetRoleColor(CustomRoles.SuperStar), "★"));
if (BallLightning.IsGhost(target)) TargetMark.Append(ColorString(GetRoleColor(CustomRoles.BallLightning), "■"));
TargetMark.Append(Snitch.GetWarningMark(seer, target));
TargetMark.Append(Marshall.GetWarningMark(seer, target));
if ((seer.Data.IsDead || Main.LoversPlayers.Exists(x => x.PlayerId == seer.PlayerId)) && Main.LoversPlayers.Exists(x => x.PlayerId == target.PlayerId)) TargetMark.Append($"<color={GetRoleColorCode(CustomRoles.Lovers)}> ♥</color>");
if ((seer.Data.IsDead || Main.LoversPlayers.Exists(x => x.PlayerId == seer.PlayerId)) && Main.LoversPlayers.Exists(x => x.PlayerId == target.PlayerId))
TargetMark.Append($"<color={GetRoleColorCode(CustomRoles.Lovers)}> ♥</color>");
if (Randomizer.IsShielded(target)) TargetMark.Append(ColorString(GetRoleColor(CustomRoles.Randomizer), "✚"));
@@ -2446,9 +2449,11 @@ other: ∟ ⌠ ⌡ ╬ ╨ ▓ ▒ ░ « » █ ▄ ▌▀▐│ ┤ ╡ ╢
if (Options.CurrentGameMode != CustomGameMode.Standard) goto End;
if (seer.Is(CustomRoleTypes.Impostor) && target.Is(CustomRoles.Snitch) && target.Is(CustomRoles.Madmate) && target.GetTaskState().IsTaskFinished) TargetMark.Append(ColorString(GetRoleColor(CustomRoles.Impostor), "★"));
if (seer.Is(CustomRoleTypes.Impostor) && target.Is(CustomRoles.Snitch) && target.Is(CustomRoles.Madmate) && target.GetTaskState().IsTaskFinished)
TargetMark.Append(ColorString(GetRoleColor(CustomRoles.Impostor), "★"));
if (Marshall.CanSeeMarshall(seer) && target.Is(CustomRoles.Marshall) && target.GetTaskState().IsTaskFinished) TargetMark.Append(ColorString(GetRoleColor(CustomRoles.Marshall), "★"));
if (Marshall.CanSeeMarshall(seer) && target.Is(CustomRoles.Marshall) && target.GetTaskState().IsTaskFinished)
TargetMark.Append(ColorString(GetRoleColor(CustomRoles.Marshall), "★"));
TargetMark.Append(Executioner.TargetMark(seer, target));
TargetMark.Append(Gamer.TargetMark(seer, target));
@@ -3361,5 +3366,13 @@ other: ∟ ⌠ ⌡ ╬ ╨ ▓ ▒ ░ « » █ ▄ ▌▀▐│ ┤ ╡ ╢
{
return Main.PlayerVersion.ContainsKey(id);
}
public static float CalculatePingDelay()
{
// The value of AmongUsClient.Instance.Ping is in milliseconds (ms), so ÷1000 to convert to seconds
float divice = Options.CurrentGameMode != CustomGameMode.Standard ? 3000f : 2000f;
float minTime = Mathf.Max(0.02f, AmongUsClient.Instance.Ping / divice * 6f);
return minTime;
}
}
}
+24 -17
View File
@@ -1018,16 +1018,20 @@ namespace EHR
if (text.Length < 6 || !GameStates.IsMeeting) return;
string toVote = text[6..].Replace(" ", string.Empty);
if (!byte.TryParse(toVote, out byte voteId) || MeetingHud.Instance?.playerStates?.FirstOrDefault(x => x.TargetPlayerId == player.PlayerId)?.DidVote == true) return;
if (!byte.TryParse(toVote, out byte voteId) || MeetingHud.Instance.playerStates?.FirstOrDefault(x => x.TargetPlayerId == player.PlayerId)?.DidVote is true or null) return;
if (voteId > Main.AllPlayerControls.Length) return;
if (player.PlayerId != PlayerControl.LocalPlayer.PlayerId) ChatManager.SendPreviousMessagesToAll();
if (player.PlayerId != PlayerControl.LocalPlayer.PlayerId)
ChatManager.SendPreviousMessagesToAll();
var votedPlayer = voteId.GetPlayer();
if (Main.PlayerStates.TryGetValue(player.PlayerId, out var state) && votedPlayer != null && state.Role.OnVote(player, votedPlayer)) return;
if (!player.IsHost())
MeetingHud.Instance?.CastVote(player.PlayerId, voteId);
MeetingHud.Instance.CastVote(player.PlayerId, voteId);
else
MeetingHud.Instance?.CmdCastVote(player.PlayerId, voteId);
MeetingHud.Instance.CmdCastVote(player.PlayerId, voteId);
}
private static void SayCommand(ChatController __instance, PlayerControl player, string text, string[] args)
@@ -1063,7 +1067,7 @@ namespace EHR
private static void TemplateCommand(ChatController __instance, PlayerControl player, string text, string[] args)
{
if (player.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (player.IsLocalPlayer())
{
if (args.Length > 1)
TemplateManager.SendTemplate(args[1]);
@@ -1462,7 +1466,7 @@ namespace EHR
Utils.SendMessage(GetString("Message.AllowNameLength"), player.PlayerId);
else
{
if (player.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (player.IsLocalPlayer())
Main.NickName = args[1];
else
{
@@ -2245,16 +2249,19 @@ namespace EHR
if (player.Is(CustomRoles.Lovers) || player.GetCustomRole() is CustomRoles.LovingCrewmate or CustomRoles.LovingImpostor)
{
PlayerControl otherLover = Main.LoversPlayers.First(x => x.PlayerId != player.PlayerId);
PlayerControl otherLover = Main.LoversPlayers.FirstOrDefault(x => x.PlayerId != player.PlayerId);
LateTask.New(() =>
if (otherLover != null)
{
string title = player.GetRealName();
ChatUpdatePatch.LoversMessage = true;
Utils.SendMessage(text, otherLover.PlayerId, title);
Utils.SendMessage(text, player.PlayerId, title);
LateTask.New(() => ChatUpdatePatch.LoversMessage = false, Math.Max(AmongUsClient.Instance.Ping / 1000f * 2f, Main.MessageWait.Value + 0.5f), log: false);
}, 0.2f, log: false);
LateTask.New(() =>
{
string title = player.GetRealName();
ChatUpdatePatch.LoversMessage = true;
Utils.SendMessage(text, otherLover.PlayerId, title);
Utils.SendMessage(text, player.PlayerId, title);
LateTask.New(() => ChatUpdatePatch.LoversMessage = false, Math.Max(AmongUsClient.Instance.Ping / 1000f * 2f, Main.MessageWait.Value + 0.5f), log: false);
}, 0.2f, log: false);
}
}
else
LateTask.New(() => Utils.SendMessage(GetString("LoversChatCannotTalkMsg"), player.PlayerId, GetString("LoversChatCannotTalkTitle")), 0.5f, log: false);
@@ -2267,7 +2274,7 @@ namespace EHR
}
[HarmonyPatch(typeof(ChatController), nameof(ChatController.Update))]
internal class ChatUpdatePatch
internal static class ChatUpdatePatch
{
public static bool DoBlockChat;
public static bool LoversMessage;
@@ -2346,7 +2353,7 @@ namespace EHR
}
[HarmonyPatch(typeof(FreeChatInputField), nameof(FreeChatInputField.UpdateCharCount))]
internal class UpdateCharCountPatch
internal static class UpdateCharCountPatch
{
public static void Postfix(FreeChatInputField __instance)
{
@@ -2364,7 +2371,7 @@ namespace EHR
}
[HarmonyPatch(typeof(PlayerControl), nameof(PlayerControl.RpcSendChat))]
internal class RpcSendChatPatch
internal static class RpcSendChatPatch
{
public static bool Prefix(PlayerControl __instance, string chatText, ref bool __result)
{
+2 -3
View File
@@ -54,8 +54,7 @@ namespace EHR
else
OpenKeyboardIcon.sprite = Utils.LoadSprite("EHR.Resources.Images.DarkKeyboard.png", 100f);
}
else
__instance.freeChatField.textArea.outputText.color = Color.black;
else __instance.freeChatField.textArea.outputText.color = Color.black;
if (!__instance.freeChatField.textArea.hasFocus) return;
@@ -176,7 +175,7 @@ namespace EHR
{
case 1 when player.IsAlive(): // Guessing Command & Such
Logger.Info("Special Command", "ChatManager");
if (player.PlayerId == PlayerControl.LocalPlayer.PlayerId) break;
if (player.IsLocalPlayer()) break;
LateTask.New(() =>
{
+22 -8
View File
@@ -60,16 +60,30 @@ namespace EHR
if (menuDescription == null) return;
Transform infoImage = menuDescription.transform.FindChild("InfoImage");
infoImage.transform.localPosition = new(-4.65f, 0.16f, -1f);
infoImage.transform.localScale = new(0.2202f, 0.2202f, 0.3202f);
if (infoImage != null)
{
infoImage.transform.localPosition = new(-4.65f, 0.16f, -1f);
infoImage.transform.localScale = new(0.2202f, 0.2202f, 0.3202f);
}
Transform infoText = menuDescription.transform.FindChild("InfoText");
infoText.transform.localPosition = new(-3.5f, 0.83f, -2f);
infoText.transform.localScale = new(1f, 1f, 1f);
if (infoText != null)
{
infoText.transform.localPosition = new(-3.5f, 0.83f, -2f);
infoText.transform.localScale = new(1f, 1f, 1f);
}
Transform cubeObject = menuDescription.transform.FindChild("Cube");
cubeObject.transform.localPosition = new(-3.2f, 0.55f, -0.1f);
cubeObject.transform.localScale = new(0.61f, 0.64f, 1f);
TextMeshPro menuDescriptionText = GameSettingMenu.Instance.MenuDescriptionText;
menuDescriptionText.m_marginWidth = 2.5f;
if (cubeObject != null)
{
cubeObject.transform.localPosition = new(-3.2f, 0.55f, -0.1f);
cubeObject.transform.localScale = new(0.61f, 0.64f, 1f);
}
GameSettingMenu.Instance.MenuDescriptionText.m_marginWidth = 2.5f;
}, 0.2f, log: false);
}
+1 -1
View File
@@ -11,7 +11,7 @@ namespace EHR.Patches
public static bool Prefix(GameModes gameMode)
{
if ((!AmongUsClient.Instance.AmHost && PlayerControl.LocalPlayer != null) || gameMode != GameModes.HideNSeek || Warned) return true;
if ((!AmongUsClient.Instance.AmHost && PlayerControl.LocalPlayer != null) || gameMode != GameModes.HideNSeek || Warned || !HudManager.Instance) return true;
HudManager.Instance.ShowPopUp(Translator.GetString("HnSUnloadWarning"));
return false;
+5
View File
@@ -220,6 +220,9 @@ namespace EHR.Patches
case CustomRoles.CTFPlayer:
__instance.AbilityButton?.OverrideText(GetString("CTF_ButtonText"));
break;
case CustomRoles.RRPlayer when __instance.AbilityButton != null && __instance.AbilityButton && RoomRush.VentLimit.TryGetValue(PlayerControl.LocalPlayer.PlayerId, out var ventLimit):
__instance.AbilityButton.SetUsesRemaining(ventLimit);
break;
}
if (role.PetActivatedAbility() && Options.CurrentGameMode == CustomGameMode.Standard && !role.OnlySpawnsWithPets() && !player.GetCustomSubRoles().Any(StartGameHostPatch.BasisChangingAddons.ContainsKey) && role != CustomRoles.Changeling)
@@ -463,6 +466,8 @@ namespace EHR.Patches
__instance.AbilityButton?.ToggleVisible(false);
return;
case CustomGameMode.RoomRush:
__instance.ImpostorVentButton?.ToggleVisible(false);
goto case CustomGameMode.CaptureTheFlag;
case CustomGameMode.CaptureTheFlag:
case CustomGameMode.HideAndSeek:
__instance.ReportButton?.ToggleVisible(false);
+1 -7
View File
@@ -37,8 +37,7 @@ namespace EHR
if (player == null) return;
if (!Main.EnableCustomButton.Value || !Main.ProcessShapeshifts || Mastermind.ManipulatedPlayers.ContainsKey(player.PlayerId)) return;
if (!SetHudActivePatch.IsActive || !player.IsAlive()) return;
if (!SetHudActivePatch.IsActive || !player.IsAlive() || Options.CurrentGameMode != CustomGameMode.Standard) return;
if (!AmongUsClient.Instance.IsGameStarted || !Main.IntroDestroyed)
{
@@ -54,15 +53,10 @@ namespace EHR
bool shapeshifting = player.IsShifted();
if (!Kill) Kill = __instance.KillButton.graphic.sprite;
if (!Ability) Ability = __instance.AbilityButton.graphic.sprite;
if (!Vent) Vent = __instance.ImpostorVentButton.graphic.sprite;
if (!Sabotage) Sabotage = __instance.SabotageButton.graphic.sprite;
if (!Pet) Pet = __instance.PetButton.graphic.sprite;
if (!Report) Report = __instance.ReportButton.graphic.sprite;
Sprite newKillButton = Kill;
+1 -1
View File
@@ -391,7 +391,7 @@ namespace EHR
break;
}
if (Main.LoversPlayers.Count == 2 && Main.LoversPlayers.Exists(x => x.PlayerId == PlayerControl.LocalPlayer.PlayerId))
if (Main.LoversPlayers.Count == 2 && Main.LoversPlayers.Exists(x => x.IsLocalPlayer()))
{
__instance.TeamTitle.color = __instance.BackgroundBar.material.color = Utils.GetRoleColor(CustomRoles.Lovers);
byte otherLoverId = Main.LoversPlayers.First(x => x.PlayerId != PlayerControl.LocalPlayer.PlayerId).PlayerId;
+1 -1
View File
@@ -914,7 +914,7 @@ namespace EHR
{
foreach (PlayerControl target in Main.AllPlayerControls)
{
if (seer.PlayerId == target.PlayerId || target.PlayerId == PlayerControl.LocalPlayer.PlayerId) continue;
if (seer.PlayerId == target.PlayerId || target.IsLocalPlayer()) continue;
if (rolesMap.TryGetValue((seer.PlayerId, target.PlayerId), out (RoleTypes, CustomRoles) roleMap))
{
+9 -14
View File
@@ -182,8 +182,7 @@ namespace EHR
return false;
}
float divice = Options.CurrentGameMode != CustomGameMode.Standard ? 3000f : 2000f;
float minTime = Mathf.Max(0.02f, AmongUsClient.Instance.Ping / divice * 6f); // The value of AmongUsClient.Instance.Ping is in milliseconds (ms), so ÷1000
float minTime = CalculatePingDelay();
// No value is stored in TimeSinceLastKill || Stored time is greater than or equal to minTime => Allow kill
// ↓ If not allowed
@@ -436,7 +435,7 @@ namespace EHR
{
Notify("GAGuarded");
if (killer.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (killer.IsLocalPlayer())
Achievements.Type.IForgotThisRoleExists.CompleteAfterGameEnd();
return false;
@@ -952,7 +951,7 @@ namespace EHR
if (!Hypnotist.OnAnyoneReport())
{
if (__instance.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (__instance.IsLocalPlayer())
Achievements.Type.Hypnosis.CompleteAfterGameEnd();
return false;
@@ -1165,7 +1164,7 @@ namespace EHR
private static readonly Dictionary<byte, int> BufferTime = [];
private static readonly Dictionary<byte, int> DeadBufferTime = [];
private static readonly Dictionary<byte, long> LastUpdate = [];
private static long LastAddAbilityTime;
private static readonly Dictionary<byte, long> LastAddAbilityTime = [];
private static long LastErrorTS;
public static void Postfix(PlayerControl __instance)
@@ -1422,9 +1421,9 @@ namespace EHR
// Ability Use Gain every 5 seconds
if (inTask && alive && Main.PlayerStates.TryGetValue(playerId, out PlayerState state) && state.TaskState.RemainingTasksCount <= 0 && LastAddAbilityTime + 5 < now)
if (inTask && alive && Main.PlayerStates.TryGetValue(playerId, out PlayerState state) && state.TaskState.RemainingTasksCount <= 0 && (!LastAddAbilityTime.TryGetValue(playerId, out var ts) || ts + 5 < now))
{
LastAddAbilityTime = now;
LastAddAbilityTime[playerId] = now;
AddExtraAbilityUsesOnFinishedTasks(player);
}
@@ -1555,10 +1554,6 @@ namespace EHR
// Name Color Manager
RealName = RealName.ApplyNameColorData(seer, target, false);
if (Marshall.CanSeeMarshall(seer))
if (target.Is(CustomRoles.Marshall) && target.GetTaskState().IsTaskFinished)
Mark.Append(ColorString(GetRoleColor(CustomRoles.Marshall), "★"));
Main.PlayerStates.Values.Do(x => Suffix.Append(x.Role.GetSuffix(seer, target, meeting: GameStates.IsMeeting)));
if (self) Suffix.Append(CustomTeamManager.GetSuffix(seer));
@@ -1570,7 +1565,7 @@ namespace EHR
case CustomRoles.Snitch when seer.IsImpostor() && target.Is(CustomRoles.Madmate) && target.GetTaskState().IsTaskFinished:
Mark.Append(ColorString(GetRoleColor(CustomRoles.Impostor), "★"));
break;
case CustomRoles.Marshall when seer.IsCrewmate() && target.GetTaskState().IsTaskFinished:
case CustomRoles.Marshall when Marshall.CanSeeMarshall(seer) && target.GetTaskState().IsTaskFinished:
Mark.Append(ColorString(GetRoleColor(CustomRoles.Marshall), "★"));
break;
case CustomRoles.SuperStar when Options.EveryOneKnowSuperStar.GetBool():
@@ -1848,7 +1843,7 @@ namespace EHR
{
Logger.Info($" {pc.GetNameWithRole()}, Vent ID: {__instance.Id} ({__instance.name})", "ExitVent");
if (pc.PlayerId == PlayerControl.LocalPlayer.PlayerId) LateTask.New(() => HudManager.Instance.SetHudActive(pc, pc.Data.Role, true), 0.6f, log: false);
if (pc.IsLocalPlayer()) LateTask.New(() => HudManager.Instance.SetHudActive(pc, pc.Data.Role, true), 0.6f, log: false);
if (!AmongUsClient.Instance.AmHost) return;
@@ -2029,7 +2024,7 @@ namespace EHR
Main.PlayerStates[__instance.myPlayer.PlayerId].Role.OnCoEnterVent(__instance, id);
if (__instance.myPlayer.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (__instance.myPlayer.IsLocalPlayer())
Statistics.VentTimes++;
return true;
+1 -1
View File
@@ -94,7 +94,7 @@ namespace EHR.AddOns.Common
int charge = DetermineCharge(player);
if (player.PlayerId == PlayerControl.LocalPlayer.PlayerId && charge is <= 0 or >= 100)
if (player.IsLocalPlayer() && charge is <= 0 or >= 100)
LocalPlayerAvoidsZeroAndOneHundredPrecent = false;
if (DisplaysCharge.GetBool() && !player.IsModClient() && LastNum[player.PlayerId] != charge)
+1 -1
View File
@@ -139,7 +139,7 @@ namespace EHR.AddOns.Crewmate
Timers[pc.PlayerId] = 0;
pc.Suicide();
if (pc.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (pc.IsLocalPlayer())
Achievements.Type.OutOfTime.Complete();
}
+1 -1
View File
@@ -78,7 +78,7 @@ namespace EHR.AddOns.Impostor
Timer[id] = 0;
pc.Suicide();
if (pc.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (pc.IsLocalPlayer())
Achievements.Type.OutOfTime.Complete();
}
+1 -1
View File
@@ -93,7 +93,7 @@ namespace EHR.Crewmate
player.Suicide();
SuicideTimer = -10f;
if (player.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (player.IsLocalPlayer())
Achievements.Type.OutOfTime.Complete();
}
else if (Mathf.Approximately(SuicideTimer + 8, TimeLimit.GetFloat()))
+1 -1
View File
@@ -94,7 +94,7 @@ namespace EHR.Crewmate
Timer = 0;
pc.Suicide();
if (pc.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (pc.IsLocalPlayer())
Achievements.Type.OutOfTime.Complete();
}
+1 -1
View File
@@ -120,7 +120,7 @@ namespace EHR.Crewmate
ReviveStartTS = 0;
ReviveTargetPos = Vector2.zero;
if (pc.PlayerId == PlayerControl.LocalPlayer.PlayerId && rtg != null && (rtg.IsImpostor() || rtg.IsNeutralKiller() || rtg.IsConverted()))
if (pc.IsLocalPlayer() && rtg != null && (rtg.IsImpostor() || rtg.IsNeutralKiller() || rtg.IsConverted()))
Achievements.Type.IWishIReported.Complete();
}
+1 -1
View File
@@ -79,7 +79,7 @@ namespace EHR.Crewmate
LastChange[pc.PlayerId] = now;
if (pc.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (pc.IsLocalPlayer())
Achievements.Type.ALightInTheShadows.CompleteAfterGameEnd();
break;
+1 -1
View File
@@ -63,7 +63,7 @@ namespace EHR.Crewmate
bodyguard.BodyguardPC.Suicide(PlayerState.DeathReason.Sacrifice, killer);
Logger.Info($"{bodyguard.BodyguardPC.GetRealName()} stood up and died for {target.GetRealName()}", "Bodyguard");
if (bodyguard.BodyguardPC.PlayerId == PlayerControl.LocalPlayer.PlayerId && target.Is(CustomRoles.President))
if (bodyguard.BodyguardPC.IsLocalPlayer() && target.Is(CustomRoles.President))
Achievements.Type.GetDownMrPresident.Complete();
return false;
+1 -1
View File
@@ -134,7 +134,7 @@ namespace EHR.Crewmate
}
}
if (target.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (target.IsLocalPlayer())
Achievements.Type.Delicious.Complete();
}
+1 -1
View File
@@ -124,7 +124,7 @@ namespace EHR.Crewmate
}, SEDelay.GetFloat(), log: false);
}
if (target.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (target.IsLocalPlayer())
Achievements.Type.Delicious.Complete();
return false;
+1 -1
View File
@@ -51,7 +51,7 @@ namespace EHR.Crewmate
target.MarkDirtySettings();
}, FreezeDuration.GetFloat(), "Electric Freeze Reset");
if (target.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (target.IsLocalPlayer())
Achievements.Type.TooCold.CompleteAfterGameEnd();
}
}
+1 -1
View File
@@ -60,7 +60,7 @@ namespace EHR.Crewmate
Utils.SendMessage(string.Format(Translator.GetString("MathematicianAnsweredString"), pc.GetRealName(), answer), title: Translator.GetString("Mathematician"));
State.AskedQuestion = false;
if (pc.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (pc.IsLocalPlayer())
Achievements.Type.TheBestInSchool.Complete();
}
}
+2 -2
View File
@@ -180,7 +180,7 @@ namespace EHR.Crewmate
Utils.NotifyRoles(SpecifySeer: killer, SpecifyTarget: target);
Utils.NotifyRoles(SpecifySeer: target, SpecifyTarget: killer);
if (target.PlayerId == PlayerControl.LocalPlayer.PlayerId && target.Is(CustomRoles.Snitch))
if (target.IsLocalPlayer() && target.Is(CustomRoles.Snitch))
{
if (WhoCanSeeProtect.GetInt() is 1 or 3) Achievements.Type.ImUnstoppable.CompleteAfterGameEnd();
else Achievements.Type.ImUnstoppable.Complete();
@@ -227,7 +227,7 @@ namespace EHR.Crewmate
}
}
if (killer.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (killer.IsLocalPlayer())
{
LocalPlayerTryKillShieldedTimes++;
if (LocalPlayerTryKillShieldedTimes >= 2) Achievements.Type.DiePleaseDie.CompleteAfterGameEnd();
+1 -1
View File
@@ -130,7 +130,7 @@ namespace EHR.Crewmate
pc.MarkDirtySettings();
NotifyAboutRNG(pc);
if (pc.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (pc.IsLocalPlayer())
Achievements.Type.TooCold.CompleteAfterGameEnd();
}
+1 -1
View File
@@ -125,7 +125,7 @@ namespace EHR.Crewmate
Timer += 35;
if (target.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (target.IsLocalPlayer())
Achievements.Type.TooCold.CompleteAfterGameEnd();
break;
+1 -1
View File
@@ -110,7 +110,7 @@ namespace EHR.Crewmate
else TimeMasterBackTrack.Add(player.PlayerId, player.Pos());
}
if (pc.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (pc.IsLocalPlayer())
Achievements.Type.APerfectTimeToRewindIt.Complete();
}
else pc.Notify(Translator.GetString("OutOfAbilityUsesDoMoreTasks"));
+1 -1
View File
@@ -217,7 +217,7 @@ namespace EHR.Crewmate
x.MarkDirtySettings();
affectedPlayers.Add(x);
if (x.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (x.IsLocalPlayer())
Achievements.Type.TooCold.CompleteAfterGameEnd();
});
+1 -1
View File
@@ -120,7 +120,7 @@ namespace EHR.Crewmate
killer.Kill(target);
Logger.Info($"{target.GetRealName()} reverse reverse killed:{target.GetRealName()}", "Pestilence Reflect");
if (killer.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (killer.IsLocalPlayer())
Achievements.Type.YoureTooLate.Complete();
return false;
+1 -1
View File
@@ -171,7 +171,7 @@ namespace EHR.Impostor
Utils.NotifyRoles(ForceLoop: true);
if (pc.PlayerId == PlayerControl.LocalPlayer.PlayerId && totalAlive <= murderCount)
if (pc.IsLocalPlayer() && totalAlive <= murderCount)
Achievements.Type.ItsJustAPrankBro.Complete();
}, 1.5f, "Bomber Suiscide");
+1 -1
View File
@@ -88,7 +88,7 @@ namespace EHR.Impostor
target.SetRealKiller(player);
target.Kill(player);
if (target.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (target.IsLocalPlayer())
Achievements.Type.YoureTooLate.Complete();
Logger.Info($"Crewpostor tried to kill Pestilence:{target.GetNameWithRole()} => {player.GetNameWithRole().RemoveHtmlTags()}", "Pestilence Reflect");
+1 -1
View File
@@ -207,7 +207,7 @@ namespace EHR.Impostor
target.Suicide(realKiller: deathpact);
if (target.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (target.IsLocalPlayer())
Achievements.Type.OutOfTime.Complete();
}
+1 -1
View File
@@ -85,7 +85,7 @@ namespace EHR.Impostor
target.MarkDirtySettings();
shapeshifter.TP(pos);
if (target.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (target.IsLocalPlayer())
Achievements.Type.TooCold.CompleteAfterGameEnd();
}
else
+1 -1
View File
@@ -55,7 +55,7 @@ namespace EHR.Impostor
target.MarkDirtySettings();
}, FreezeDuration.GetFloat(), "FreezerFreezeDuration");
if (target.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (target.IsLocalPlayer())
Achievements.Type.TooCold.CompleteAfterGameEnd();
}
+2 -2
View File
@@ -130,7 +130,7 @@ namespace EHR.Impostor
RPC.PlaySoundRPC(MastermindId, Sounds.KillSound);
player.RpcChangeRoleBasis(player.GetCustomRole());
if (player.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (player.IsLocalPlayer())
Achievements.Type.OutOfTime.Complete();
}
@@ -172,7 +172,7 @@ namespace EHR.Impostor
target.Kill(killer);
TempKCDs.Remove(killer.PlayerId);
if (target.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (target.IsLocalPlayer())
Achievements.Type.YoureTooLate.Complete();
return false;
+1 -1
View File
@@ -63,7 +63,7 @@ namespace EHR.Impostor
killer.Suicide(PlayerState.DeathReason.Kill, target);
if (target.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (target.IsLocalPlayer())
Achievements.Type.YoureTooLate.Complete();
return false;
+1 -1
View File
@@ -93,7 +93,7 @@ namespace EHR.Impostor
SuicideTimer = float.NaN;
Timer = TimeLimit.GetInt();
if (player.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (player.IsLocalPlayer())
Achievements.Type.OutOfTime.Complete();
}
else
+2 -2
View File
@@ -66,7 +66,7 @@ namespace EHR.Impostor
ForSilencer.Add(target.PlayerId);
killer.SetKillCooldown(3f);
if (killer.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (killer.IsLocalPlayer())
{
LocalPlayerTotalSilences++;
if (LocalPlayerTotalSilences >= 5) Achievements.Type.Censorship.Complete();
@@ -83,7 +83,7 @@ namespace EHR.Impostor
{
ForSilencer.Add(target.PlayerId);
if (shapeshifter.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (shapeshifter.IsLocalPlayer())
{
LocalPlayerTotalSilences++;
if (LocalPlayerTotalSilences >= 5) Achievements.Type.Censorship.Complete();
+6 -4
View File
@@ -21,9 +21,9 @@ namespace EHR.Impostor
private static OptionItem PestControlDuration;
private static OptionItem PestControlSpeed;
private static OptionItem PestControlVision;
public Dictionary<byte, long> DelayedKills;
private bool EvadedKillThisRound;
private long LastUpdate;
public HashSet<byte> MeetingKills;
private long PestControlEnd;
@@ -113,10 +113,10 @@ namespace EHR.Impostor
SwarmModeEnd = 0;
Utils.SendRPC(CustomRPC.SyncRoleData, WaspPC.PlayerId, SwarmModeEnd);
if (WaspDiesAfterSwarmEnd.GetBool())
pc.Suicide();
if (WaspDiesAfterSwarmEnd.GetBool()) pc.Suicide();
else
{
pc.ResetKillCooldown();
pc.SyncSettings();
pc.SetKillCooldown(StingCooldown.GetInt());
}
@@ -144,6 +144,9 @@ namespace EHR.Impostor
}
DelayedKills.Clear();
if (WaspPC == null || !WaspPC.IsAlive())
MeetingKills.Clear();
}
public override bool OnCheckMurderAsTarget(PlayerControl killer, PlayerControl target)
@@ -237,7 +240,6 @@ namespace EHR.Impostor
public override string GetSuffix(PlayerControl seer, PlayerControl target, bool hud = false, bool meeting = false)
{
if (seer.PlayerId != WaspPC.PlayerId || seer.PlayerId != target.PlayerId || (seer.IsModClient() && !hud) || meeting || SwarmModeEnd == 0) return string.Empty;
return string.Format(Translator.GetString("Wasp.SwarmModeSuffix"), SwarmModeEnd - Utils.TimeStamp);
}
}
+3 -3
View File
@@ -106,7 +106,7 @@ namespace EHR.Neutral
target.Kill(killer);
ResetBomb();
if (target.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (target.IsLocalPlayer())
Achievements.Type.YoureTooLate.Complete();
return false;
@@ -135,7 +135,7 @@ namespace EHR.Neutral
Logger.Info($"{killer.GetNameWithRole().RemoveHtmlTags()} bombed {pc.GetNameWithRole().RemoveHtmlTags()}, bomb cd complete", "Agitater");
ResetBomb();
if (pc.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (pc.IsLocalPlayer())
Achievements.Type.OutOfTime.Complete();
}
}
@@ -219,7 +219,7 @@ namespace EHR.Neutral
target.Kill(player);
ResetBomb();
if (target.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (target.IsLocalPlayer())
Achievements.Type.YoureTooLate.Complete();
return;
+1 -1
View File
@@ -357,7 +357,7 @@ namespace EHR.Neutral
break;
}
if (pc.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (pc.IsLocalPlayer())
PurchasedItems.Add(SelectedItem);
break;
+1 -1
View File
@@ -111,7 +111,7 @@ namespace EHR.Neutral
{
pc.Suicide(realKiller: Utils.GetPlayerById(BeehiveId));
if (pc.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (pc.IsLocalPlayer())
Achievements.Type.OutOfTime.Complete();
}
}
+5 -3
View File
@@ -202,7 +202,7 @@ namespace EHR.Neutral
sender.SendMessage();
DoppelPresentSkin[pc.PlayerId] = newOutfit;
if (pc.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (pc.IsLocalPlayer())
{
LocalPlayerChangeSkinTimes++;
if (LocalPlayerChangeSkinTimes >= 2) Achievements.Type.Mimicry.Complete();
@@ -231,14 +231,14 @@ namespace EHR.Neutral
string kname;
if (killer.PlayerId == PlayerControl.LocalPlayer.PlayerId && Main.NickName.Length != 0)
if (killer.IsLocalPlayer() && Main.NickName.Length != 0)
kname = Main.NickName;
else
kname = killer.Data.PlayerName;
string tname;
if (target.PlayerId == PlayerControl.LocalPlayer.PlayerId && Main.NickName.Length != 0)
if (target.IsLocalPlayer() && Main.NickName.Length != 0)
tname = Main.NickName;
else
tname = target.Data.PlayerName;
@@ -261,6 +261,8 @@ namespace EHR.Neutral
Utils.NotifyRoles();
killer.ResetKillCooldown();
killer.SetKillCooldown();
target.SetRealKiller(killer);
}
public override void OnReportDeadBody()
+1 -1
View File
@@ -118,7 +118,7 @@ namespace EHR.Neutral
{
target.Kill(killer);
if (target.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (target.IsLocalPlayer())
Achievements.Type.YoureTooLate.Complete();
return false;
+1 -1
View File
@@ -157,7 +157,7 @@ namespace EHR.Neutral
SendRPC();
HookshotPC.SetKillCooldown(5f);
if (killer.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (killer.IsLocalPlayer())
Achievements.Type.WellMeetAgainSomeSunnyDay.Complete();
});
}
+1 -1
View File
@@ -172,7 +172,7 @@ namespace EHR.Neutral
Logger.Info($" {target.Data?.PlayerName} = {target.GetCustomRole()} + {CustomRoles.Sidekick}", $"Assign {CustomRoles.Sidekick}");
if (killer.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (killer.IsLocalPlayer())
Achievements.Type.YoureMyFriendNow.Complete();
return false;
+2 -2
View File
@@ -106,7 +106,7 @@ namespace EHR.Neutral
new[] { CustomRoles.Damocles, CustomRoles.Stressed }.Do(x => Main.PlayerStates[target.PlayerId].RemoveSubRole(x));
if (killer.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (killer.IsLocalPlayer())
Achievements.Type.YoureMyFriendNow.Complete();
return false;
@@ -225,7 +225,7 @@ namespace EHR.Neutral
Logger.Info($"Recruit: {target.Data?.PlayerName} = {target.GetCustomRole()} + {CustomRoles.Undead}", $"Assign {CustomRoles.Undead}");
if (killer.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (killer.IsLocalPlayer())
Achievements.Type.YoureMyFriendNow.Complete();
return false;
+1 -1
View File
@@ -113,7 +113,7 @@ namespace EHR.Neutral
pc.MarkDirtySettings();
if (pc.PlayerId == PlayerControl.LocalPlayer.PlayerId) HudManager.Instance.SetHudActive(pc, pc.Data.Role, true);
if (pc.IsLocalPlayer()) HudManager.Instance.SetHudActive(pc, pc.Data.Role, true);
}
public override void OnEnterVent(PlayerControl pc, Vent vent)
+1 -1
View File
@@ -179,7 +179,7 @@ namespace EHR.Neutral
killer.SetRealKiller(target);
target.Kill(killer);
if (target.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (target.IsLocalPlayer())
Achievements.Type.YoureTooLate.Complete();
return false;
+1 -1
View File
@@ -213,7 +213,7 @@ namespace EHR.Neutral
player.Suicide(PlayerState.DeathReason.Sacrifice);
if (player.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (player.IsLocalPlayer())
Achievements.Type.OutOfTime.Complete();
}
else RevolutionistCountdown.Add(playerId, countdown);
+1 -1
View File
@@ -131,7 +131,7 @@ namespace EHR.Neutral
WasShifter.Add(killer.PlayerId);
if (killer.PlayerId == PlayerControl.LocalPlayer.PlayerId || target.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (killer.IsLocalPlayer() || target.IsLocalPlayer())
{
ShifterInteractionsCount++;
if (ShifterInteractionsCount >= 3) Achievements.Type.TheresThisGameMyDadTaughtMeItsCalledSwitch.Complete();
+1 -1
View File
@@ -228,7 +228,7 @@ namespace EHR.Neutral
simon.MarkedPlayers.Remove(pc.PlayerId);
Utils.SendRPC(CustomRPC.SyncRoleData, simon.SimonId, 4, pc.PlayerId);
if (pc.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (pc.IsLocalPlayer())
Achievements.Type.SimonSays.Complete();
}
}
+1 -1
View File
@@ -174,7 +174,7 @@ namespace EHR.Neutral
RPC.PlaySoundRPC(target.PlayerId, Sounds.TaskComplete);
}, SpiritFreezeTime.GetFloat(), "SpiritcallerFreezeTime");
if (target.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (target.IsLocalPlayer())
Achievements.Type.TooCold.CompleteAfterGameEnd();
}
}
+1 -1
View File
@@ -115,7 +115,7 @@ namespace EHR.Neutral
Logger.Info("SetRole:" + target?.Data?.PlayerName + " = " + target.GetCustomRole() + " + " + CustomRoles.Charmed, "Assign " + CustomRoles.Charmed);
if (killer.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (killer.IsLocalPlayer())
Achievements.Type.YoureMyFriendNow.Complete();
return false;
+1 -1
View File
@@ -110,7 +110,7 @@ namespace EHR.Neutral
else IsWon = true;
}
if (TechnicianPC.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (TechnicianPC.IsLocalPlayer())
LocalPlayerFixedSabotageTypes.Add(actualSystemType);
}
+1 -1
View File
@@ -108,7 +108,7 @@ namespace EHR.Neutral
{
player.Suicide(PlayerState.DeathReason.Kill);
if (player.PlayerId == PlayerControl.LocalPlayer.PlayerId)
if (player.IsLocalPlayer())
Achievements.Type.OutOfTime.Complete();
return;
+3
View File
@@ -1,5 +1,8 @@
global using Object = UnityEngine.Object;
global using Vector2 = UnityEngine.Vector2;
global using File = System.IO.File;
global using StringBuilder = System.Text.StringBuilder;
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
+1 -1
View File
@@ -51,7 +51,7 @@ namespace EHR
public static ManualLogSource Logger;
public static bool HasArgumentException;
public static string CredentialsText;
public static Dictionary<byte, PlayerVersion> PlayerVersion = [];
public static bool ChangedRole = false;
public static OptionBackupData RealOptionsData;