mirror of
https://github.com/Gurge44/EndlessHostRoles.git
synced 2026-10-20 01:46:25 +00:00
Giant add-on
This commit is contained in:
1 parent
ee2ee306c0
commit
1b1add7059
7 files changed
+186
-193
No files matched your search
+160
-170
@@ -381,6 +381,7 @@ internal static class CustomRolesHelper
|
||||
CustomRoles.Watcher or
|
||||
CustomRoles.Admired or
|
||||
CustomRoles.Flashman or
|
||||
CustomRoles.Giant or
|
||||
CustomRoles.Physicist or
|
||||
CustomRoles.Nimble or
|
||||
CustomRoles.Torch or
|
||||
@@ -1312,7 +1313,7 @@ internal static class CustomRolesHelper
|
||||
CustomRoles.Unlucky when mainRole.IsCrewmate() && !Options.CrewCanBeUnlucky.GetBool() || mainRole.IsNeutral() && !Options.NeutralCanBeUnlucky.GetBool() || mainRole.IsImpostor() && !Options.ImpCanBeUnlucky.GetBool() => false,
|
||||
CustomRoles.Rogue when mainRole.IsCrewmate() && !Options.CrewCanBeRogue.GetBool() || mainRole.IsNeutral() && !Options.NeutralCanBeRogue.GetBool() || mainRole.IsImpostor() && !Options.ImpCanBeRogue.GetBool() => false,
|
||||
CustomRoles.Gravestone when mainRole.IsCrewmate() && !Options.CrewCanBeGravestone.GetBool() || mainRole.IsNeutral() && !Options.NeutralCanBeGravestone.GetBool() || mainRole.IsImpostor() && !Options.ImpCanBeGravestone.GetBool() => false,
|
||||
CustomRoles.Flashman when mainRole is CustomRoles.Swooper or CustomRoles.Wraith or CustomRoles.Chameleon or CustomRoles.Alchemist => false,
|
||||
CustomRoles.Flashman or CustomRoles.Giant when mainRole is CustomRoles.Swooper or CustomRoles.Wraith or CustomRoles.Chameleon or CustomRoles.Alchemist => false,
|
||||
CustomRoles.Bait when mainRole is CustomRoles.Unreportable => false,
|
||||
CustomRoles.Nimble when !mainRole.IsCrewmate() => false,
|
||||
CustomRoles.Physicist when !mainRole.IsCrewmate() => false,
|
||||
@@ -1338,178 +1339,167 @@ internal static class CustomRolesHelper
|
||||
CustomRoles.DoubleShot when Options.NeutralCanBeDoubleShot.GetBool() && mainRole is not CustomRoles.Guesser && (mainRole.IsNonNK() && !Options.PassiveNeutralsCanGuess.GetBool() || mainRole.IsNK() && !Options.NeutralKillersCanGuess.GetBool()) => false,
|
||||
_ => true
|
||||
};
|
||||
public static bool CheckAddonConflict(CustomRoles role, PlayerControl pc)
|
||||
public static bool CheckAddonConflict(CustomRoles role, PlayerControl pc) => role.IsAdditionRole() && pc.GetCustomRole() is not CustomRoles.GuardianAngelTOHE and not CustomRoles.God && !pc.Is(CustomRoles.Madmate) && !pc.Is(CustomRoles.Egoist) && !pc.Is(CustomRoles.GM) && role is not CustomRoles.Lovers && !pc.Is(CustomRoles.Needy) && (!pc.HasSubRole() || pc.GetCustomSubRoles().Count < Options.NoLimitAddonsNumMax.GetInt()) && role switch
|
||||
{
|
||||
if (!role.IsAdditionRole()) return false;
|
||||
|
||||
if (pc.GetCustomRole() is CustomRoles.GuardianAngelTOHE or CustomRoles.God || pc.Is(CustomRoles.Madmate) || pc.Is(CustomRoles.Egoist)) return false;
|
||||
if (pc.Is(CustomRoles.GM) || role is CustomRoles.Lovers || pc.Is(CustomRoles.Needy) || (pc.HasSubRole() && pc.GetCustomSubRoles().Count >= Options.NoLimitAddonsNumMax.GetInt())) return false;
|
||||
return role switch
|
||||
{
|
||||
CustomRoles.Lovers when pc.Is(CustomRoles.RuthlessRomantic) || pc.Is(CustomRoles.Romantic) || pc.Is(CustomRoles.VengefulRomantic) => false,
|
||||
CustomRoles.Sidekick when pc.Is(CustomRoles.Madmate) => false,
|
||||
CustomRoles.Madmate when pc.Is(CustomRoles.Sidekick) => false,
|
||||
CustomRoles.Egoist when pc.Is(CustomRoles.Sidekick) => false,
|
||||
CustomRoles.Autopsy when pc.Is(CustomRoles.Doctor) || pc.Is(CustomRoles.Tracefinder) || pc.Is(CustomRoles.Scientist) || pc.Is(CustomRoles.ScientistTOHE) || pc.Is(CustomRoles.Sunnyboy) => false,
|
||||
CustomRoles.Necroview when pc.Is(CustomRoles.Doctor) => false,
|
||||
CustomRoles.Lazy when pc.Is(CustomRoles.Speedrunner) => false,
|
||||
CustomRoles.Loyal when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeLoyal.GetBool() => false,
|
||||
CustomRoles.DualPersonality when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeDualPersonality.GetBool() => false,
|
||||
CustomRoles.Lazy when pc.Is(CustomRoles.Needy) || pc.Is(CustomRoles.Snitch) || pc.Is(CustomRoles.Marshall) || pc.Is(CustomRoles.Transporter) || pc.Is(CustomRoles.Guardian) => false,
|
||||
CustomRoles.Ghoul when pc.Is(CustomRoles.Needy) || pc.Is(CustomRoles.Snitch) || pc.Is(CustomRoles.Marshall) || pc.Is(CustomRoles.Transporter) || pc.Is(CustomRoles.Guardian) => false,
|
||||
CustomRoles.Egoist when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeEgoist.GetBool() => false,
|
||||
CustomRoles.Brakar when pc.Is(CustomRoles.Dictator) => false,
|
||||
CustomRoles.Stressed when !pc.GetCustomRole().IsCrewmate() || pc.GetCustomRole().IsTasklessCrewmate() => false,
|
||||
CustomRoles.Avanger when pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeAvanger.GetBool() => false,
|
||||
CustomRoles.Ghoul when pc.GetCustomRole().IsNeutral() || pc.GetCustomRole().IsImpostor() || pc.GetCustomRole().IsTasklessCrewmate() || pc.GetCustomRole().IsTaskBasedCrewmate() => false,
|
||||
CustomRoles.Lazy when pc.GetCustomRole().IsNeutral() || pc.GetCustomRole().IsImpostor() || pc.GetCustomRole().IsTasklessCrewmate() && !Options.TasklessCrewCanBeLazy.GetBool() || pc.GetCustomRole().IsTaskBasedCrewmate() && !Options.TaskBasedCrewCanBeLazy.GetBool() => false,
|
||||
CustomRoles.TicketsStealer or CustomRoles.Swift or CustomRoles.DeadlyQuota or CustomRoles.Damocles or CustomRoles.Mare when pc.Is(CustomRoles.Bomber) || pc.Is(CustomRoles.Nuker) || pc.Is(CustomRoles.BoobyTrap) || pc.Is(CustomRoles.Capitalism) => false,
|
||||
CustomRoles.TicketsStealer or CustomRoles.Mimic or CustomRoles.Swift or CustomRoles.DeadlyQuota or CustomRoles.Damocles or CustomRoles.Mare when !pc.GetCustomRole().IsImpostor() => false,
|
||||
CustomRoles.Torch when !pc.GetCustomRole().IsCrewmate() || pc.Is(CustomRoles.Bewilder) || pc.Is(CustomRoles.Sunglasses) || pc.Is(CustomRoles.GuardianAngelTOHE) => false,
|
||||
CustomRoles.Bewilder when pc.Is(CustomRoles.Torch) || pc.Is(CustomRoles.GuardianAngelTOHE) || pc.Is(CustomRoles.Sunglasses) => false,
|
||||
CustomRoles.Sunglasses when pc.Is(CustomRoles.Torch) || pc.Is(CustomRoles.GuardianAngelTOHE) || pc.Is(CustomRoles.Bewilder) => false,
|
||||
CustomRoles.Guesser when pc.GetCustomRole().IsCrewmate() && (!Options.CrewCanBeGuesser.GetBool() || pc.Is(CustomRoles.NiceGuesser)) || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeGuesser.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeGuesser.GetBool() || pc.Is(CustomRoles.EvilGuesser) || pc.Is(CustomRoles.GuardianAngelTOHE) => false,
|
||||
CustomRoles.Madmate when !pc.CanBeMadmate() || pc.Is(CustomRoles.Egoist) || pc.Is(CustomRoles.Rascal) => false,
|
||||
CustomRoles.Oblivious when pc.Is(CustomRoles.Detective) || pc.Is(CustomRoles.Cleaner) || pc.Is(CustomRoles.Medusa) || pc.Is(CustomRoles.Mortician) || pc.Is(CustomRoles.Mediumshiper) || pc.Is(CustomRoles.GuardianAngelTOHE) => false,
|
||||
CustomRoles.Youtuber when !pc.GetCustomRole().IsCrewmate() || pc.Is(CustomRoles.Madmate) || pc.Is(CustomRoles.Sheriff) || pc.Is(CustomRoles.GuardianAngelTOHE) => false,
|
||||
CustomRoles.Egoist when pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeEgoist.GetBool() => false,
|
||||
CustomRoles.Egoist when pc.GetCustomRole().IsNeutral() || pc.Is(CustomRoles.Madmate) => false,
|
||||
CustomRoles.Damocles when pc.GetCustomRole() is CustomRoles.Bomber or CustomRoles.Nuker or CustomRoles.SerialKiller or CustomRoles.Cantankerous => false,
|
||||
CustomRoles.Damocles when !pc.CanUseKillButton() => false,
|
||||
CustomRoles.Necroview when pc.Is(CustomRoles.Visionary) => false,
|
||||
CustomRoles.Ghoul when pc.Is(CustomRoles.Lazy) => false,
|
||||
CustomRoles.Ghoul when pc.Is(CustomRoles.Needy) => false,
|
||||
CustomRoles.Lazy when pc.Is(CustomRoles.Ghoul) => false,
|
||||
CustomRoles.Mimic when pc.Is(CustomRoles.Mafia) => false,
|
||||
CustomRoles.Rascal when !pc.GetCustomRole().IsCrewmate() => false,
|
||||
CustomRoles.Needy when pc.GetCustomRole().IsAdditionRole() => false,
|
||||
CustomRoles.TicketsStealer when pc.Is(CustomRoles.Vindicator) => false,
|
||||
CustomRoles.Mare when pc.Is(CustomRoles.Underdog) => false,
|
||||
CustomRoles.Mare when pc.Is(CustomRoles.Inhibitor) => false,
|
||||
CustomRoles.Mare when pc.Is(CustomRoles.Saboteur) => false,
|
||||
CustomRoles.Mare when pc.Is(CustomRoles.Swift) => false,
|
||||
CustomRoles.Mare when pc.Is(CustomRoles.Mafia) => false,
|
||||
CustomRoles.Mare when pc.Is(CustomRoles.Sniper) => false,
|
||||
CustomRoles.Mare when pc.Is(CustomRoles.FireWorks) => false,
|
||||
CustomRoles.Mare when pc.Is(CustomRoles.Swooper) => false,
|
||||
CustomRoles.Mare when pc.Is(CustomRoles.Vampire) => false,
|
||||
CustomRoles.Torch when pc.Is(CustomRoles.Lighter) => false,
|
||||
CustomRoles.Torch when pc.Is(CustomRoles.Ignitor) => false,
|
||||
CustomRoles.Bewilder when pc.Is(CustomRoles.Lighter) => false,
|
||||
CustomRoles.Bewilder when pc.Is(CustomRoles.Ignitor) => false,
|
||||
CustomRoles.Sunglasses when pc.Is(CustomRoles.Lighter) => false,
|
||||
CustomRoles.Sunglasses when pc.Is(CustomRoles.Ignitor) => false,
|
||||
CustomRoles.Bait when pc.Is(CustomRoles.Demolitionist) => false,
|
||||
CustomRoles.Trapper when pc.Is(CustomRoles.Demolitionist) => false,
|
||||
CustomRoles.Lovers when pc.Is(CustomRoles.Romantic) => false,
|
||||
CustomRoles.Mare when pc.Is(CustomRoles.LastImpostor) => false,
|
||||
CustomRoles.Swift when pc.Is(CustomRoles.Mare) => false,
|
||||
CustomRoles.DualPersonality when !pc.GetCustomRole().IsImpostor() && !pc.GetCustomRole().IsCrewmate() || pc.Is(CustomRoles.Madmate) => false,
|
||||
CustomRoles.DualPersonality when pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeDualPersonality.GetBool() => false,
|
||||
CustomRoles.Loyal when !pc.GetCustomRole().IsImpostor() && !pc.GetCustomRole().IsCrewmate() || pc.Is(CustomRoles.Madmate) => false,
|
||||
CustomRoles.Loyal when pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeLoyal.GetBool() => false,
|
||||
CustomRoles.Seer when pc.GetCustomRole().IsCrewmate() && (!Options.CrewCanBeSeer.GetBool() || pc.Is(CustomRoles.Mortician)) || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeSeer.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeSeer.GetBool() || pc.Is(CustomRoles.GuardianAngelTOHE) => false,
|
||||
CustomRoles.Bait when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeBait.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeBait.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeBait.GetBool() => false,
|
||||
CustomRoles.Bewilder when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeBewilder.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeBewilder.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeBewilder.GetBool() => false,
|
||||
CustomRoles.Sunglasses when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeSunglasses.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeSunglasses.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeSunglasses.GetBool() => false,
|
||||
CustomRoles.Autopsy when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeAutopsy.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeAutopsy.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeAutopsy.GetBool() => false,
|
||||
CustomRoles.Glow when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeGlow.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeGlow.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeGlow.GetBool() => false,
|
||||
CustomRoles.Trapper when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeTrapper.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeTrapper.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeTrapper.GetBool() => false,
|
||||
CustomRoles.Sidekick when pc.Is(CustomRoles.Madmate) => false,
|
||||
CustomRoles.Onbound when pc.Is(CustomRoles.SuperStar) => false,
|
||||
CustomRoles.Rascal when pc.Is(CustomRoles.SuperStar) || pc.Is(CustomRoles.Madmate) => false,
|
||||
CustomRoles.Madmate when pc.Is(CustomRoles.SuperStar) => false,
|
||||
CustomRoles.Gravestone when pc.Is(CustomRoles.SuperStar) => false,
|
||||
CustomRoles.Sidekick when pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeSidekick.GetBool() => false,
|
||||
CustomRoles.Sidekick when pc.GetCustomRole().IsCrewmate() && !Options.CrewmateCanBeSidekick.GetBool() => false,
|
||||
CustomRoles.Sidekick when pc.GetCustomRole().IsImpostor() && !Options.ImpostorCanBeSidekick.GetBool() => false,
|
||||
CustomRoles.Sidekick when pc.Is(CustomRoles.Jackal) => false,
|
||||
CustomRoles.Lucky when pc.Is(CustomRoles.Guardian) => false,
|
||||
CustomRoles.Bait when pc.Is(CustomRoles.GuardianAngelTOHE) => false,
|
||||
CustomRoles.Bait when pc.Is(CustomRoles.Trapper) => false,
|
||||
CustomRoles.Trapper when pc.Is(CustomRoles.Bait) => false,
|
||||
CustomRoles.DualPersonality when pc.Is(CustomRoles.Dictator) => false,
|
||||
CustomRoles.Swift when pc.Is(CustomRoles.Swooper) => false,
|
||||
CustomRoles.Swift when pc.Is(CustomRoles.Vampire) => false,
|
||||
CustomRoles.Swift when pc.Is(CustomRoles.Scavenger) => false,
|
||||
CustomRoles.Swift when pc.Is(CustomRoles.Puppeteer) => false,
|
||||
CustomRoles.Swift when pc.Is(CustomRoles.Warlock) => false,
|
||||
CustomRoles.Swift when pc.Is(CustomRoles.EvilDiviner) => false,
|
||||
CustomRoles.Swift when pc.Is(CustomRoles.Witch) => false,
|
||||
CustomRoles.Swift when pc.Is(CustomRoles.Mafia) => false,
|
||||
CustomRoles.Reach when pc.Is(CustomRoles.Mafioso) => false,
|
||||
CustomRoles.Trapper when pc.Is(CustomRoles.GuardianAngelTOHE) => false,
|
||||
CustomRoles.Reach when !pc.CanUseKillButton() => false,
|
||||
CustomRoles.Watcher when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeWatcher.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeWatcher.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeWatcher.GetBool() => false,
|
||||
CustomRoles.Diseased when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeDiseased.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeDiseased.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeDiseased.GetBool() => false,
|
||||
CustomRoles.Antidote when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeAntidote.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeAntidote.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeAntidote.GetBool() => false,
|
||||
CustomRoles.Diseased when pc.Is(CustomRoles.Antidote) => false,
|
||||
CustomRoles.Antidote when pc.Is(CustomRoles.Diseased) => false,
|
||||
CustomRoles.Necroview when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeNecroview.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeNecroview.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeNecroview.GetBool() => false,
|
||||
CustomRoles.Oblivious when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeOblivious.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeOblivious.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeOblivious.GetBool() => false,
|
||||
CustomRoles.Brakar when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeTiebreaker.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeTiebreaker.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeTiebreaker.GetBool() => false,
|
||||
CustomRoles.Guesser when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeGuesser.GetBool() && pc.Is(CustomRoles.NiceGuesser) || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeGuesser.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeGuesser.GetBool() && pc.Is(CustomRoles.EvilGuesser) => false,
|
||||
CustomRoles.Onbound when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeOnbound.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeOnbound.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeOnbound.GetBool() => false,
|
||||
CustomRoles.Unreportable when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeUnreportable.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeUnreportable.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeUnreportable.GetBool() => false,
|
||||
CustomRoles.Lucky when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeLucky.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeLucky.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeLucky.GetBool() => false,
|
||||
CustomRoles.Unlucky when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeUnlucky.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeUnlucky.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeUnlucky.GetBool() => false,
|
||||
CustomRoles.Rogue when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeRogue.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeRogue.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeRogue.GetBool() => false,
|
||||
CustomRoles.Gravestone when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeGravestone.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeGravestone.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeGravestone.GetBool() => false,
|
||||
CustomRoles.Flashman when pc.GetCustomRole() is CustomRoles.Swooper or CustomRoles.Wraith or CustomRoles.Chameleon or CustomRoles.Alchemist => false,
|
||||
CustomRoles.Bait when pc.Is(CustomRoles.Unreportable) => false,
|
||||
CustomRoles.Nimble when !pc.GetCustomRole().IsCrewmate() => false,
|
||||
CustomRoles.Physicist when !pc.GetCustomRole().IsCrewmate() => false,
|
||||
CustomRoles.Unreportable when pc.Is(CustomRoles.Bait) => false,
|
||||
CustomRoles.Oblivious when pc.Is(CustomRoles.Bloodhound) => false,
|
||||
CustomRoles.Oblivious when pc.Is(CustomRoles.Vulture) => false,
|
||||
CustomRoles.Vulture when pc.Is(CustomRoles.Oblivious) => false,
|
||||
CustomRoles.Guesser when pc.Is(CustomRoles.CopyCat) || pc.Is(CustomRoles.Doomsayer) => false,
|
||||
CustomRoles.CopyCat when pc.Is(CustomRoles.Guesser) => false,
|
||||
CustomRoles.DoubleShot when pc.Is(CustomRoles.CopyCat) => false,
|
||||
CustomRoles.CopyCat when pc.Is(CustomRoles.DoubleShot) => false,
|
||||
CustomRoles.Brakar when pc.Is(CustomRoles.Dictator) => false,
|
||||
CustomRoles.Lucky when pc.Is(CustomRoles.Luckey) => false,
|
||||
CustomRoles.Unlucky when pc.Is(CustomRoles.Luckey) => false,
|
||||
CustomRoles.Unlucky when pc.Is(CustomRoles.Lucky) => false,
|
||||
CustomRoles.Lucky when pc.Is(CustomRoles.Unlucky) => false,
|
||||
CustomRoles.Fool when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeFool.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeFool.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeFool.GetBool() || pc.Is(CustomRoles.SabotageMaster) || pc.Is(CustomRoles.GuardianAngelTOHE) => false,
|
||||
CustomRoles.Bloodhound when pc.Is(CustomRoles.Oblivious) => false,
|
||||
CustomRoles.DoubleShot when pc.Is(CustomRoleTypes.Impostor) && !Options.ImpCanBeDoubleShot.GetBool() || pc.Is(CustomRoleTypes.Crewmate) && !Options.CrewCanBeDoubleShot.GetBool() || pc.Is(CustomRoleTypes.Neutral) && !Options.NeutralCanBeDoubleShot.GetBool() => false,
|
||||
CustomRoles.DoubleShot when !pc.Is(CustomRoles.EvilGuesser) && !pc.Is(CustomRoles.NiceGuesser) && !Options.GuesserMode.GetBool() => false,
|
||||
CustomRoles.DoubleShot when Options.ImpCanBeDoubleShot.GetBool() && !pc.Is(CustomRoles.Guesser) && !pc.Is(CustomRoles.EvilGuesser) && pc.Is(CustomRoleTypes.Impostor) && !Options.ImpostorsCanGuess.GetBool() => false,
|
||||
CustomRoles.DoubleShot when Options.CrewCanBeDoubleShot.GetBool() && !pc.Is(CustomRoles.Guesser) && !pc.Is(CustomRoles.NiceGuesser) && pc.Is(CustomRoleTypes.Crewmate) && !Options.CrewmatesCanGuess.GetBool() => false,
|
||||
CustomRoles.DoubleShot when Options.NeutralCanBeDoubleShot.GetBool() && !pc.Is(CustomRoles.Guesser) && (pc.GetCustomRole().IsNonNK() && !Options.PassiveNeutralsCanGuess.GetBool() || pc.GetCustomRole().IsNK() && !Options.NeutralKillersCanGuess.GetBool()) => false,
|
||||
_ => true
|
||||
};
|
||||
}
|
||||
public static bool IsAbleToHostPublic(this CustomRoles role)
|
||||
CustomRoles.Lovers when pc.Is(CustomRoles.RuthlessRomantic) || pc.Is(CustomRoles.Romantic) || pc.Is(CustomRoles.VengefulRomantic) => false,
|
||||
CustomRoles.Sidekick when pc.Is(CustomRoles.Madmate) => false,
|
||||
CustomRoles.Madmate when pc.Is(CustomRoles.Sidekick) => false,
|
||||
CustomRoles.Egoist when pc.Is(CustomRoles.Sidekick) => false,
|
||||
CustomRoles.Autopsy when pc.Is(CustomRoles.Doctor) || pc.Is(CustomRoles.Tracefinder) || pc.Is(CustomRoles.Scientist) || pc.Is(CustomRoles.ScientistTOHE) || pc.Is(CustomRoles.Sunnyboy) => false,
|
||||
CustomRoles.Necroview when pc.Is(CustomRoles.Doctor) => false,
|
||||
CustomRoles.Lazy when pc.Is(CustomRoles.Speedrunner) => false,
|
||||
CustomRoles.Loyal when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeLoyal.GetBool() => false,
|
||||
CustomRoles.DualPersonality when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeDualPersonality.GetBool() => false,
|
||||
CustomRoles.Lazy when pc.Is(CustomRoles.Needy) || pc.Is(CustomRoles.Snitch) || pc.Is(CustomRoles.Marshall) || pc.Is(CustomRoles.Transporter) || pc.Is(CustomRoles.Guardian) => false,
|
||||
CustomRoles.Ghoul when pc.Is(CustomRoles.Needy) || pc.Is(CustomRoles.Snitch) || pc.Is(CustomRoles.Marshall) || pc.Is(CustomRoles.Transporter) || pc.Is(CustomRoles.Guardian) => false,
|
||||
CustomRoles.Egoist when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeEgoist.GetBool() => false,
|
||||
CustomRoles.Brakar when pc.Is(CustomRoles.Dictator) => false,
|
||||
CustomRoles.Stressed when !pc.GetCustomRole().IsCrewmate() || pc.GetCustomRole().IsTasklessCrewmate() => false,
|
||||
CustomRoles.Avanger when pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeAvanger.GetBool() => false,
|
||||
CustomRoles.Ghoul when pc.GetCustomRole().IsNeutral() || pc.GetCustomRole().IsImpostor() || pc.GetCustomRole().IsTasklessCrewmate() || pc.GetCustomRole().IsTaskBasedCrewmate() => false,
|
||||
CustomRoles.Lazy when pc.GetCustomRole().IsNeutral() || pc.GetCustomRole().IsImpostor() || pc.GetCustomRole().IsTasklessCrewmate() && !Options.TasklessCrewCanBeLazy.GetBool() || pc.GetCustomRole().IsTaskBasedCrewmate() && !Options.TaskBasedCrewCanBeLazy.GetBool() => false,
|
||||
CustomRoles.TicketsStealer or CustomRoles.Swift or CustomRoles.DeadlyQuota or CustomRoles.Damocles or CustomRoles.Mare when pc.Is(CustomRoles.Bomber) || pc.Is(CustomRoles.Nuker) || pc.Is(CustomRoles.BoobyTrap) || pc.Is(CustomRoles.Capitalism) => false,
|
||||
CustomRoles.TicketsStealer or CustomRoles.Mimic or CustomRoles.Swift or CustomRoles.DeadlyQuota or CustomRoles.Damocles or CustomRoles.Mare when !pc.GetCustomRole().IsImpostor() => false,
|
||||
CustomRoles.Torch when !pc.GetCustomRole().IsCrewmate() || pc.Is(CustomRoles.Bewilder) || pc.Is(CustomRoles.Sunglasses) || pc.Is(CustomRoles.GuardianAngelTOHE) => false,
|
||||
CustomRoles.Bewilder when pc.Is(CustomRoles.Torch) || pc.Is(CustomRoles.GuardianAngelTOHE) || pc.Is(CustomRoles.Sunglasses) => false,
|
||||
CustomRoles.Sunglasses when pc.Is(CustomRoles.Torch) || pc.Is(CustomRoles.GuardianAngelTOHE) || pc.Is(CustomRoles.Bewilder) => false,
|
||||
CustomRoles.Guesser when pc.GetCustomRole().IsCrewmate() && (!Options.CrewCanBeGuesser.GetBool() || pc.Is(CustomRoles.NiceGuesser)) || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeGuesser.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeGuesser.GetBool() || pc.Is(CustomRoles.EvilGuesser) || pc.Is(CustomRoles.GuardianAngelTOHE) => false,
|
||||
CustomRoles.Madmate when !pc.CanBeMadmate() || pc.Is(CustomRoles.Egoist) || pc.Is(CustomRoles.Rascal) => false,
|
||||
CustomRoles.Oblivious when pc.Is(CustomRoles.Detective) || pc.Is(CustomRoles.Cleaner) || pc.Is(CustomRoles.Medusa) || pc.Is(CustomRoles.Mortician) || pc.Is(CustomRoles.Mediumshiper) || pc.Is(CustomRoles.GuardianAngelTOHE) => false,
|
||||
CustomRoles.Youtuber when !pc.GetCustomRole().IsCrewmate() || pc.Is(CustomRoles.Madmate) || pc.Is(CustomRoles.Sheriff) || pc.Is(CustomRoles.GuardianAngelTOHE) => false,
|
||||
CustomRoles.Egoist when pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeEgoist.GetBool() => false,
|
||||
CustomRoles.Egoist when pc.GetCustomRole().IsNeutral() || pc.Is(CustomRoles.Madmate) => false,
|
||||
CustomRoles.Damocles when pc.GetCustomRole() is CustomRoles.Bomber or CustomRoles.Nuker or CustomRoles.SerialKiller or CustomRoles.Cantankerous => false,
|
||||
CustomRoles.Damocles when !pc.CanUseKillButton() => false,
|
||||
CustomRoles.Necroview when pc.Is(CustomRoles.Visionary) => false,
|
||||
CustomRoles.Ghoul when pc.Is(CustomRoles.Lazy) => false,
|
||||
CustomRoles.Ghoul when pc.Is(CustomRoles.Needy) => false,
|
||||
CustomRoles.Lazy when pc.Is(CustomRoles.Ghoul) => false,
|
||||
CustomRoles.Mimic when pc.Is(CustomRoles.Mafia) => false,
|
||||
CustomRoles.Rascal when !pc.GetCustomRole().IsCrewmate() => false,
|
||||
CustomRoles.Needy when pc.GetCustomRole().IsAdditionRole() => false,
|
||||
CustomRoles.TicketsStealer when pc.Is(CustomRoles.Vindicator) => false,
|
||||
CustomRoles.Mare when pc.Is(CustomRoles.Underdog) => false,
|
||||
CustomRoles.Mare when pc.Is(CustomRoles.Inhibitor) => false,
|
||||
CustomRoles.Mare when pc.Is(CustomRoles.Saboteur) => false,
|
||||
CustomRoles.Mare when pc.Is(CustomRoles.Swift) => false,
|
||||
CustomRoles.Mare when pc.Is(CustomRoles.Mafia) => false,
|
||||
CustomRoles.Mare when pc.Is(CustomRoles.Sniper) => false,
|
||||
CustomRoles.Mare when pc.Is(CustomRoles.FireWorks) => false,
|
||||
CustomRoles.Mare when pc.Is(CustomRoles.Swooper) => false,
|
||||
CustomRoles.Mare when pc.Is(CustomRoles.Vampire) => false,
|
||||
CustomRoles.Torch when pc.Is(CustomRoles.Lighter) => false,
|
||||
CustomRoles.Torch when pc.Is(CustomRoles.Ignitor) => false,
|
||||
CustomRoles.Bewilder when pc.Is(CustomRoles.Lighter) => false,
|
||||
CustomRoles.Bewilder when pc.Is(CustomRoles.Ignitor) => false,
|
||||
CustomRoles.Sunglasses when pc.Is(CustomRoles.Lighter) => false,
|
||||
CustomRoles.Sunglasses when pc.Is(CustomRoles.Ignitor) => false,
|
||||
CustomRoles.Bait when pc.Is(CustomRoles.Demolitionist) => false,
|
||||
CustomRoles.Trapper when pc.Is(CustomRoles.Demolitionist) => false,
|
||||
CustomRoles.Lovers when pc.Is(CustomRoles.Romantic) => false,
|
||||
CustomRoles.Mare when pc.Is(CustomRoles.LastImpostor) => false,
|
||||
CustomRoles.Swift when pc.Is(CustomRoles.Mare) => false,
|
||||
CustomRoles.DualPersonality when !pc.GetCustomRole().IsImpostor() && !pc.GetCustomRole().IsCrewmate() || pc.Is(CustomRoles.Madmate) => false,
|
||||
CustomRoles.DualPersonality when pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeDualPersonality.GetBool() => false,
|
||||
CustomRoles.Loyal when !pc.GetCustomRole().IsImpostor() && !pc.GetCustomRole().IsCrewmate() || pc.Is(CustomRoles.Madmate) => false,
|
||||
CustomRoles.Loyal when pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeLoyal.GetBool() => false,
|
||||
CustomRoles.Seer when pc.GetCustomRole().IsCrewmate() && (!Options.CrewCanBeSeer.GetBool() || pc.Is(CustomRoles.Mortician)) || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeSeer.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeSeer.GetBool() || pc.Is(CustomRoles.GuardianAngelTOHE) => false,
|
||||
CustomRoles.Bait when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeBait.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeBait.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeBait.GetBool() => false,
|
||||
CustomRoles.Bewilder when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeBewilder.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeBewilder.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeBewilder.GetBool() => false,
|
||||
CustomRoles.Sunglasses when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeSunglasses.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeSunglasses.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeSunglasses.GetBool() => false,
|
||||
CustomRoles.Autopsy when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeAutopsy.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeAutopsy.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeAutopsy.GetBool() => false,
|
||||
CustomRoles.Glow when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeGlow.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeGlow.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeGlow.GetBool() => false,
|
||||
CustomRoles.Trapper when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeTrapper.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeTrapper.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeTrapper.GetBool() => false,
|
||||
CustomRoles.Sidekick when pc.Is(CustomRoles.Madmate) => false,
|
||||
CustomRoles.Onbound when pc.Is(CustomRoles.SuperStar) => false,
|
||||
CustomRoles.Rascal when pc.Is(CustomRoles.SuperStar) || pc.Is(CustomRoles.Madmate) => false,
|
||||
CustomRoles.Madmate when pc.Is(CustomRoles.SuperStar) => false,
|
||||
CustomRoles.Gravestone when pc.Is(CustomRoles.SuperStar) => false,
|
||||
CustomRoles.Sidekick when pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeSidekick.GetBool() => false,
|
||||
CustomRoles.Sidekick when pc.GetCustomRole().IsCrewmate() && !Options.CrewmateCanBeSidekick.GetBool() => false,
|
||||
CustomRoles.Sidekick when pc.GetCustomRole().IsImpostor() && !Options.ImpostorCanBeSidekick.GetBool() => false,
|
||||
CustomRoles.Sidekick when pc.Is(CustomRoles.Jackal) => false,
|
||||
CustomRoles.Lucky when pc.Is(CustomRoles.Guardian) => false,
|
||||
CustomRoles.Bait when pc.Is(CustomRoles.GuardianAngelTOHE) => false,
|
||||
CustomRoles.Bait when pc.Is(CustomRoles.Trapper) => false,
|
||||
CustomRoles.Trapper when pc.Is(CustomRoles.Bait) => false,
|
||||
CustomRoles.DualPersonality when pc.Is(CustomRoles.Dictator) => false,
|
||||
CustomRoles.Swift when pc.Is(CustomRoles.Swooper) => false,
|
||||
CustomRoles.Swift when pc.Is(CustomRoles.Vampire) => false,
|
||||
CustomRoles.Swift when pc.Is(CustomRoles.Scavenger) => false,
|
||||
CustomRoles.Swift when pc.Is(CustomRoles.Puppeteer) => false,
|
||||
CustomRoles.Swift when pc.Is(CustomRoles.Warlock) => false,
|
||||
CustomRoles.Swift when pc.Is(CustomRoles.EvilDiviner) => false,
|
||||
CustomRoles.Swift when pc.Is(CustomRoles.Witch) => false,
|
||||
CustomRoles.Swift when pc.Is(CustomRoles.Mafia) => false,
|
||||
CustomRoles.Reach when pc.Is(CustomRoles.Mafioso) => false,
|
||||
CustomRoles.Trapper when pc.Is(CustomRoles.GuardianAngelTOHE) => false,
|
||||
CustomRoles.Reach when !pc.CanUseKillButton() => false,
|
||||
CustomRoles.Watcher when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeWatcher.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeWatcher.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeWatcher.GetBool() => false,
|
||||
CustomRoles.Diseased when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeDiseased.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeDiseased.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeDiseased.GetBool() => false,
|
||||
CustomRoles.Antidote when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeAntidote.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeAntidote.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeAntidote.GetBool() => false,
|
||||
CustomRoles.Diseased when pc.Is(CustomRoles.Antidote) => false,
|
||||
CustomRoles.Antidote when pc.Is(CustomRoles.Diseased) => false,
|
||||
CustomRoles.Necroview when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeNecroview.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeNecroview.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeNecroview.GetBool() => false,
|
||||
CustomRoles.Oblivious when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeOblivious.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeOblivious.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeOblivious.GetBool() => false,
|
||||
CustomRoles.Brakar when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeTiebreaker.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeTiebreaker.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeTiebreaker.GetBool() => false,
|
||||
CustomRoles.Guesser when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeGuesser.GetBool() && pc.Is(CustomRoles.NiceGuesser) || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeGuesser.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeGuesser.GetBool() && pc.Is(CustomRoles.EvilGuesser) => false,
|
||||
CustomRoles.Onbound when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeOnbound.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeOnbound.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeOnbound.GetBool() => false,
|
||||
CustomRoles.Unreportable when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeUnreportable.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeUnreportable.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeUnreportable.GetBool() => false,
|
||||
CustomRoles.Lucky when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeLucky.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeLucky.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeLucky.GetBool() => false,
|
||||
CustomRoles.Unlucky when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeUnlucky.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeUnlucky.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeUnlucky.GetBool() => false,
|
||||
CustomRoles.Rogue when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeRogue.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeRogue.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeRogue.GetBool() => false,
|
||||
CustomRoles.Gravestone when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeGravestone.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeGravestone.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeGravestone.GetBool() => false,
|
||||
CustomRoles.Flashman or CustomRoles.Giant when pc.GetCustomRole() is CustomRoles.Swooper or CustomRoles.Wraith or CustomRoles.Chameleon or CustomRoles.Alchemist => false,
|
||||
CustomRoles.Bait when pc.Is(CustomRoles.Unreportable) => false,
|
||||
CustomRoles.Nimble when !pc.GetCustomRole().IsCrewmate() => false,
|
||||
CustomRoles.Physicist when !pc.GetCustomRole().IsCrewmate() => false,
|
||||
CustomRoles.Unreportable when pc.Is(CustomRoles.Bait) => false,
|
||||
CustomRoles.Oblivious when pc.Is(CustomRoles.Bloodhound) => false,
|
||||
CustomRoles.Oblivious when pc.Is(CustomRoles.Vulture) => false,
|
||||
CustomRoles.Vulture when pc.Is(CustomRoles.Oblivious) => false,
|
||||
CustomRoles.Guesser when pc.Is(CustomRoles.CopyCat) || pc.Is(CustomRoles.Doomsayer) => false,
|
||||
CustomRoles.CopyCat when pc.Is(CustomRoles.Guesser) => false,
|
||||
CustomRoles.DoubleShot when pc.Is(CustomRoles.CopyCat) => false,
|
||||
CustomRoles.CopyCat when pc.Is(CustomRoles.DoubleShot) => false,
|
||||
CustomRoles.Brakar when pc.Is(CustomRoles.Dictator) => false,
|
||||
CustomRoles.Lucky when pc.Is(CustomRoles.Luckey) => false,
|
||||
CustomRoles.Unlucky when pc.Is(CustomRoles.Luckey) => false,
|
||||
CustomRoles.Unlucky when pc.Is(CustomRoles.Lucky) => false,
|
||||
CustomRoles.Lucky when pc.Is(CustomRoles.Unlucky) => false,
|
||||
CustomRoles.Fool when pc.GetCustomRole().IsCrewmate() && !Options.CrewCanBeFool.GetBool() || pc.GetCustomRole().IsNeutral() && !Options.NeutralCanBeFool.GetBool() || pc.GetCustomRole().IsImpostor() && !Options.ImpCanBeFool.GetBool() || pc.Is(CustomRoles.SabotageMaster) || pc.Is(CustomRoles.GuardianAngelTOHE) => false,
|
||||
CustomRoles.Bloodhound when pc.Is(CustomRoles.Oblivious) => false,
|
||||
CustomRoles.DoubleShot when pc.Is(CustomRoleTypes.Impostor) && !Options.ImpCanBeDoubleShot.GetBool() || pc.Is(CustomRoleTypes.Crewmate) && !Options.CrewCanBeDoubleShot.GetBool() || pc.Is(CustomRoleTypes.Neutral) && !Options.NeutralCanBeDoubleShot.GetBool() => false,
|
||||
CustomRoles.DoubleShot when !pc.Is(CustomRoles.EvilGuesser) && !pc.Is(CustomRoles.NiceGuesser) && !Options.GuesserMode.GetBool() => false,
|
||||
CustomRoles.DoubleShot when Options.ImpCanBeDoubleShot.GetBool() && !pc.Is(CustomRoles.Guesser) && !pc.Is(CustomRoles.EvilGuesser) && pc.Is(CustomRoleTypes.Impostor) && !Options.ImpostorsCanGuess.GetBool() => false,
|
||||
CustomRoles.DoubleShot when Options.CrewCanBeDoubleShot.GetBool() && !pc.Is(CustomRoles.Guesser) && !pc.Is(CustomRoles.NiceGuesser) && pc.Is(CustomRoleTypes.Crewmate) && !Options.CrewmatesCanGuess.GetBool() => false,
|
||||
CustomRoles.DoubleShot when Options.NeutralCanBeDoubleShot.GetBool() && !pc.Is(CustomRoles.Guesser) && (pc.GetCustomRole().IsNonNK() && !Options.PassiveNeutralsCanGuess.GetBool() || pc.GetCustomRole().IsNK() && !Options.NeutralKillersCanGuess.GetBool()) => false,
|
||||
_ => true
|
||||
};
|
||||
public static bool IsAbleToHostPublic(this CustomRoles role) => Main.UseVersionProtocol.Value || role switch
|
||||
{
|
||||
if (Main.UseVersionProtocol.Value) return true;
|
||||
return role switch
|
||||
{
|
||||
// Because of Double Trigger use
|
||||
CustomRoles.EvilDiviner or
|
||||
CustomRoles.Mastermind or
|
||||
CustomRoles.Puppeteer or
|
||||
CustomRoles.Witch or
|
||||
CustomRoles.Glitch or
|
||||
CustomRoles.HexMaster or
|
||||
CustomRoles.Infectious or
|
||||
CustomRoles.Consort or
|
||||
CustomRoles.Eraser or
|
||||
CustomRoles.Nullifier or
|
||||
CustomRoles.Ritualist or
|
||||
CustomRoles.Puppeteer or
|
||||
CustomRoles.Capitalism or
|
||||
CustomRoles.Pyromaniac
|
||||
=> false,
|
||||
// Because of Double Trigger use
|
||||
CustomRoles.EvilDiviner or
|
||||
CustomRoles.Mastermind or
|
||||
CustomRoles.Puppeteer or
|
||||
CustomRoles.Witch or
|
||||
CustomRoles.Glitch or
|
||||
CustomRoles.HexMaster or
|
||||
CustomRoles.Infectious or
|
||||
CustomRoles.Consort or
|
||||
CustomRoles.Eraser or
|
||||
CustomRoles.Nullifier or
|
||||
CustomRoles.Ritualist or
|
||||
CustomRoles.Puppeteer or
|
||||
CustomRoles.Capitalism or
|
||||
CustomRoles.Pyromaniac
|
||||
=> false,
|
||||
|
||||
// Because of GA use
|
||||
CustomRoles.Spiritcaller
|
||||
=> false,
|
||||
_ => true,
|
||||
};
|
||||
}
|
||||
// Because of GA use
|
||||
CustomRoles.Spiritcaller
|
||||
=> false,
|
||||
_ => true,
|
||||
};
|
||||
public static Team GetTeam(this CustomRoles role)
|
||||
{
|
||||
if (role.IsImpostorTeamV3()) return Team.Impostor;
|
||||
|
||||
@@ -733,6 +733,9 @@ public class PlayerGameOptionsSender(PlayerControl player) : GameOptionsSender
|
||||
case CustomRoles.Flashman:
|
||||
Main.AllPlayerSpeed[player.PlayerId] = Options.FlashmanSpeed.GetFloat();
|
||||
break;
|
||||
case CustomRoles.Giant:
|
||||
Main.AllPlayerSpeed[player.PlayerId] = Options.GiantSpeed.GetFloat();
|
||||
break;
|
||||
case CustomRoles.Mare when Options.MareHasIncreasedSpeed.GetBool():
|
||||
Main.AllPlayerSpeed[player.PlayerId] = Options.MareSpeedDuringLightsOut.GetFloat();
|
||||
break;
|
||||
|
||||
@@ -1043,6 +1043,7 @@ public static class GuessManager
|
||||
or CustomRoles.Impostor
|
||||
or CustomRoles.Shapeshifter
|
||||
or CustomRoles.Flashman
|
||||
or CustomRoles.Giant
|
||||
or CustomRoles.NotAssigned
|
||||
or CustomRoles.KB_Normal
|
||||
// or CustomRoles.Marshall
|
||||
|
||||
@@ -933,6 +933,7 @@ public static class Options
|
||||
public static OptionItem FarseerCanBeMadmate;
|
||||
public static OptionItem MadSnitchTasks;
|
||||
public static OptionItem FlashmanSpeed;
|
||||
public static OptionItem GiantSpeed;
|
||||
public static OptionItem ButtonBarryButtons;
|
||||
public static OptionItem LoverSpawnChances;
|
||||
public static OptionItem LoverKnowRoles;
|
||||
@@ -2602,6 +2603,12 @@ public static class Options
|
||||
FlashmanSpeed = FloatOptionItem.Create(6050335, "FlashmanSpeed", new(0.25f, 3f, 0.25f), 2.5f, TabGroup.OtherRoles, false)
|
||||
.SetParent(CustomRoleSpawnChances[CustomRoles.Flashman])
|
||||
.SetValueFormat(OptionFormat.Multiplier);
|
||||
RoleLoadingText = "Experimental roles\nGiant";
|
||||
SetupAdtRoleOptions(18750, CustomRoles.Giant, canSetNum: true, tab: TabGroup.OtherRoles);
|
||||
GiantSpeed = FloatOptionItem.Create(6050335, "FlashmanSpeed", new(0.25f, 3f, 0.25f), 2.5f, TabGroup.OtherRoles, false)
|
||||
.SetParent(CustomRoleSpawnChances[CustomRoles.Flashman])
|
||||
.SetValueFormat(OptionFormat.Multiplier);
|
||||
|
||||
|
||||
RoleLoadingText = "Experimental roles\nYouTuber";
|
||||
SetupAdtRoleOptions(18800, CustomRoles.Youtuber, canSetNum: true, tab: TabGroup.OtherRoles);
|
||||
|
||||
@@ -248,6 +248,7 @@
|
||||
"Ntr": "Neptune",
|
||||
"Watcher": "Watcher",
|
||||
"Flashman": "Flash",
|
||||
"Giant": "Giant",
|
||||
"Torch": "Torch",
|
||||
"Seer": "Seer",
|
||||
"Brakar": "Tiebreaker",
|
||||
@@ -294,6 +295,7 @@
|
||||
"Prefix.Ntr": "Neptune",
|
||||
"Prefix.Watcher": "Watcher",
|
||||
"Prefix.Flashman": "Flash",
|
||||
"Prefix.Giant": "Giant",
|
||||
"Prefix.Torch": "Torch",
|
||||
"Prefix.Seer": "Seer",
|
||||
"Prefix.Brakar": "Tiebreaker",
|
||||
@@ -511,6 +513,7 @@
|
||||
"WatcherInfo": "You see vote colors",
|
||||
"LastImpostorInfo": "Lower kill cooldown",
|
||||
"FlashmanInfo": "You're faster",
|
||||
"GiantInfo": "You're slower",
|
||||
"TorchInfo": "You have a higher vision!",
|
||||
"SeerInfo": "You see when players die",
|
||||
"BrakarInfo": "Break tied votes",
|
||||
@@ -730,6 +733,7 @@
|
||||
"NtrInfoLong": "(Add-ons):\\nWhen there is Neptune, all players will see that they are Lovers with Neptune, and they will not die in love together and will not change the win conditions. Note: Lovers won't become Neptune, and Neptune won't become Lovers.",
|
||||
"WatcherInfoLong": "(Add-ons):\\nDuring the meeting, Watcher can see everyone's votes.",
|
||||
"FlashmanInfoLong": "(Add-ons):\\nThe Flash is faster by default.",
|
||||
"GiantInfoLong": "(Add-ons):\\nThe Giant is slower by default.",
|
||||
"TorchInfoLong": "(Add-ons):\\nOnly Crewmates will get Torch, who have increased vision and may not be affected by Lights Sabotage.",
|
||||
"SeerInfoLong": "(Add-ons):\\nWhen a player dies, the Seer sees a red flash (with an alarm sound like sabotage).",
|
||||
"BrakarInfoLong": "(Add-ons):\\nIn case of a tie, the target voted by the Tiebreaker has priority. However, if multiple Tiebreakers choose different targets simultaneously, their skills will not take effect.",
|
||||
@@ -1240,6 +1244,7 @@
|
||||
"JesterVision": "<color=#ec62a5>Jester</color> Vision",
|
||||
"LawyerVision": "<color=#008080>Lawyer</color> Vision",
|
||||
"FlashmanSpeed": "<color=#ff8400>Flash</color> Speed",
|
||||
"GiantSpeed": "<color=#32a852>Giant</color> Speed",
|
||||
"LoverSuicide": "<color=#ff9ace>Lovers</color> die together",
|
||||
"NumberOfLovers": "Number of <color=#ff9ace>Lover Pairs</color> (x2 members)",
|
||||
"LoverKnowRoles": "<color=#ff9ace>Lovers</color> know the roles of each other",
|
||||
|
||||
@@ -58,6 +58,7 @@ namespace TOHE.Roles.Crewmate
|
||||
private static readonly List<CustomRoles> experimentalAddons =
|
||||
[
|
||||
CustomRoles.Flashman,
|
||||
CustomRoles.Giant,
|
||||
CustomRoles.Egoist,
|
||||
CustomRoles.Ntr, // Neptune
|
||||
CustomRoles.Guesser,
|
||||
@@ -80,10 +81,7 @@ namespace TOHE.Roles.Crewmate
|
||||
private static OptionItem OptionSellOnlyHarmfulToEvil;
|
||||
private static OptionItem OptionSellOnlyHelpfulToCrew;
|
||||
|
||||
private static int GetCurrentAmountOfMoney(byte playerId)
|
||||
{
|
||||
return (addonsSold[playerId] * OptionMoneyPerSell.GetInt()) - (bribedKiller[playerId].Count * OptionMoneyRequiredToBribe.GetInt());
|
||||
}
|
||||
private static int GetCurrentAmountOfMoney(byte playerId) => (addonsSold[playerId] * OptionMoneyPerSell.GetInt()) - (bribedKiller[playerId].Count * OptionMoneyRequiredToBribe.GetInt());
|
||||
|
||||
public static void SetupCustomOption()
|
||||
{
|
||||
@@ -222,10 +220,7 @@ namespace TOHE.Roles.Crewmate
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool IsBribedKiller(PlayerControl killer, PlayerControl target)
|
||||
{
|
||||
return bribedKiller[target.PlayerId].Contains(killer.PlayerId);
|
||||
}
|
||||
public static bool IsBribedKiller(PlayerControl killer, PlayerControl target) => bribedKiller[target.PlayerId].Contains(killer.PlayerId);
|
||||
|
||||
private static void NotifyBribery(PlayerControl killer, PlayerControl target)
|
||||
{
|
||||
|
||||
@@ -319,7 +319,7 @@ public class Main : BasePlugin
|
||||
{
|
||||
roleColors = new Dictionary<CustomRoles, string>()
|
||||
{
|
||||
//バニラ役職
|
||||
//Vanilla
|
||||
{CustomRoles.Crewmate, "#8cffff"},
|
||||
{CustomRoles.Engineer, "#8cffff"},
|
||||
{CustomRoles.Scientist, "#8cffff"},
|
||||
@@ -329,7 +329,7 @@ public class Main : BasePlugin
|
||||
{CustomRoles.EngineerTOHE, "#FF6A00"},
|
||||
{CustomRoles.ScientistTOHE, "#8ee98e"},
|
||||
{CustomRoles.GuardianAngelTOHE, "#77e6d1"},
|
||||
//特殊クルー役職
|
||||
//Crewmates
|
||||
{CustomRoles.Luckey, "#b8d7a3" },
|
||||
{CustomRoles.Needy, "#a4dffe"},
|
||||
{CustomRoles.SabotageMaster, "#3333ff"},
|
||||
@@ -424,7 +424,7 @@ public class Main : BasePlugin
|
||||
{CustomRoles.TimeMaster, "#44baff"},
|
||||
{CustomRoles.Crusader, "#C65C39"},
|
||||
//{CustomRoles.Reverie, "#00BFFF"},
|
||||
//第三陣営役職
|
||||
//Neutrals
|
||||
{CustomRoles.Arsonist, "#ff6633"},
|
||||
{CustomRoles.Pyromaniac, "#ff6633"},
|
||||
{CustomRoles.PlagueBearer,"#e5f6b4"},
|
||||
@@ -506,7 +506,7 @@ public class Main : BasePlugin
|
||||
//{CustomRoles.Pirate,"#EDC240"},
|
||||
// GM
|
||||
{CustomRoles.GM, "#ff5b70"},
|
||||
//サブ役職
|
||||
//Add-ons
|
||||
{CustomRoles.NotAssigned, "#ffffff"},
|
||||
{CustomRoles.LastImpostor, "#ff1919"},
|
||||
{CustomRoles.Lovers, "#ff9ace"},
|
||||
@@ -514,6 +514,7 @@ public class Main : BasePlugin
|
||||
{CustomRoles.Madmate, "#ff1919"},
|
||||
{CustomRoles.Watcher, "#800080"},
|
||||
{CustomRoles.Flashman, "#ff8400"},
|
||||
{CustomRoles.Giant, "#32a852"},
|
||||
{CustomRoles.Nimble, "#feffc7"},
|
||||
{CustomRoles.Physicist, "#87e9ff"},
|
||||
{CustomRoles.Torch, "#eee5be"},
|
||||
@@ -576,17 +577,7 @@ public class Main : BasePlugin
|
||||
//Move And Stop
|
||||
{CustomRoles.Tasker, "#00ffa5"}
|
||||
};
|
||||
foreach (var role in Enum.GetValues(typeof(CustomRoles)).Cast<CustomRoles>())
|
||||
{
|
||||
switch (role.GetCustomRoleTypes())
|
||||
{
|
||||
case CustomRoleTypes.Impostor:
|
||||
roleColors.TryAdd(role, "#ff1919");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
Enum.GetValues(typeof(CustomRoles)).Cast<CustomRoles>().Where(x => x.GetCustomRoleTypes() == CustomRoleTypes.Impostor).Do(x => roleColors.TryAdd(x, "#ff1919"));
|
||||
}
|
||||
catch (ArgumentException ex)
|
||||
{
|
||||
@@ -938,6 +929,7 @@ public enum CustomRoles
|
||||
Flashman,
|
||||
Fool,
|
||||
Ghoul,
|
||||
Giant,
|
||||
Glow,
|
||||
Gravestone,
|
||||
Guesser,
|
||||
|
||||
Reference in new issue
Block a user