Merge remote-tracking branch 'origin/main'

This commit is contained in:
Gurge44 committed 2026-01-03 11:33:11 +01:00
commit 4ae35a2253
45 files changed
+213 -148

No files matched your search

+33
View File
@@ -0,0 +1,33 @@
name: Build
on:
pull_request:
branches: [ main ]
jobs:
build:
if: github.head_ref != 'translation'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: 8.0.x
- name: Cache NuGet packages
uses: actions/cache@v3
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build --configuration Release --no-restore
+6 -6
View File
@@ -427,19 +427,19 @@ public enum CustomRoles
VoodooMaster,
Wyrd,
// Solo Kombat
SoloPVP_Player,
// Solo PVP
Challenger,
// FFA
Killer,
// Move And Stop
// Stop And Go
Tasker,
// Hot Potato
Potato,
// H&S
// Hide And Seek
Hider,
Seeker,
Fox,
@@ -536,7 +536,7 @@ public enum CustomRoles
Examiner,
Facilitator, // Ghost role
Finder,
Flashman,
Flash,
Fragile,
Fool,
Giant,
@@ -603,4 +603,4 @@ public enum CustomRoles
Watcher,
Workhorse,
Youtuber
}
}
+3 -3
View File
@@ -428,7 +428,7 @@ public enum CustomRoles
Wyrd,
// Solo Kombat
SoloPVP_Player,
Challenger,
// FFA
Killer,
@@ -536,7 +536,7 @@ public enum CustomRoles
Examiner,
Facilitator, // Ghost role
Finder,
Flashman,
Flash,
Fragile,
Fool,
Giant,
@@ -603,4 +603,4 @@ public enum CustomRoles
Watcher,
Workhorse,
Youtuber
}
}
+2 -2
View File
@@ -690,7 +690,7 @@ public class Main : BasePlugin
{ CustomRoles.Stained, "#e6bf91" },
{ CustomRoles.Clumsy, "#b8b8b8" },
{ CustomRoles.Mischievous, "#30221c" },
{ CustomRoles.Flashman, "#ff8400" },
{ CustomRoles.Flash, "#ff8400" },
{ CustomRoles.Haste, "#f0ec22" },
{ CustomRoles.Busy, "#32a852" },
{ CustomRoles.Sleep, "#000000" },
@@ -754,7 +754,7 @@ public class Main : BasePlugin
{ CustomRoles.Underdog, "#ff1919" },
// Solo PVP
{ CustomRoles.SoloPVP_Player, "#f55252" },
{ CustomRoles.Challenger, "#f55252" },
// FFA
{ CustomRoles.Killer, "#00ffff" },
// Stop And Go
+1 -1
View File
@@ -23,7 +23,7 @@ internal static class CustomRoleSelector
public static readonly Dictionary<CustomGameMode, CustomRoles> GameModeRoles = new()
{
{ CustomGameMode.SoloPVP, CustomRoles.SoloPVP_Player },
{ CustomGameMode.SoloPVP, CustomRoles.Challenger },
{ CustomGameMode.FFA, CustomRoles.Killer },
{ CustomGameMode.StopAndGo, CustomRoles.Tasker },
{ CustomGameMode.HotPotato, CustomRoles.Potato },
+15 -24
View File
@@ -60,7 +60,7 @@ internal static class CustomRolesHelper
public static bool IsForOtherGameMode(this CustomRoles role)
{
return CustomHnS.AllHnSRoles.Contains(role) || role is
CustomRoles.SoloPVP_Player or
CustomRoles.Challenger or
CustomRoles.Killer or
CustomRoles.Tasker or
CustomRoles.Potato or
@@ -460,7 +460,7 @@ internal static class CustomRolesHelper
return role switch
{
// Solo PVP
CustomRoles.SoloPVP_Player => RoleTypes.Impostor,
CustomRoles.Challenger => RoleTypes.Impostor,
// FFA
CustomRoles.Killer => RoleTypes.Impostor,
// Capture The Flag
@@ -975,7 +975,7 @@ internal static class CustomRolesHelper
return role is
CustomRoles.KOTZPlayer or
CustomRoles.CTFPlayer or
CustomRoles.SoloPVP_Player or
CustomRoles.Challenger or
CustomRoles.BedWarsPlayer or
CustomRoles.Weatherman or
CustomRoles.Altruist or
@@ -1126,6 +1126,7 @@ internal static class CustomRolesHelper
CustomRoles.Commited when pc.GetRoleTypes() is not (RoleTypes.Impostor or RoleTypes.Phantom or RoleTypes.Shapeshifter or RoleTypes.Viper) => false,
CustomRoles.Underdog when pc.Is(CustomRoles.Mare) => false,
CustomRoles.Shy when Options.DisableWhisperCommand.GetBool() => false,
CustomRoles.Listener when Options.DisableWhisperCommand.GetBool() => false,
CustomRoles.Blocked when !pc.CanUseVent() => false,
CustomRoles.Aide when pc.IsMadmate() || pc.Is(CustomRoles.Saboteur) => false,
CustomRoles.Sleuth when pc.GetCustomRole() is CustomRoles.NecroGuesser or CustomRoles.Imitator or CustomRoles.Forensic => false,
@@ -1155,7 +1156,7 @@ internal static class CustomRolesHelper
CustomRoles.Torch when !pc.IsCrewmate() || pc.Is(CustomRoles.Bewilder) || pc.Is(CustomRoles.Sunglasses) || pc.Is(CustomRoles.GuardianAngelEHR) => false,
CustomRoles.Bewilder when pc.Is(CustomRoles.Torch) || pc.Is(CustomRoles.GuardianAngelEHR) || pc.Is(CustomRoles.Sunglasses) => false,
CustomRoles.Dynamo when pc.Is(CustomRoles.Spurt) || pc.GetCustomRole() is CustomRoles.Tank or CustomRoles.Ankylosaurus => false,
CustomRoles.Spurt when pc.GetCustomSubRoles().Any(x => x is CustomRoles.Dynamo or CustomRoles.Swiftclaw or CustomRoles.Giant or CustomRoles.Flashman) || pc.Is(CustomRoles.Ankylosaurus) => false,
CustomRoles.Spurt when pc.GetCustomSubRoles().Any(x => x is CustomRoles.Dynamo or CustomRoles.Swiftclaw or CustomRoles.Giant or CustomRoles.Flash) || pc.Is(CustomRoles.Ankylosaurus) => false,
CustomRoles.Sunglasses when pc.Is(CustomRoles.Torch) || pc.Is(CustomRoles.GuardianAngelEHR) || pc.Is(CustomRoles.Bewilder) => false,
CustomRoles.Guesser when pc.GetCustomRole() is CustomRoles.EvilGuesser or CustomRoles.NiceGuesser or CustomRoles.Doomsayer or CustomRoles.CopyCat => false,
CustomRoles.Madmate when !pc.CanBeMadmate() || pc.Is(CustomRoles.Egoist) || pc.Is(CustomRoles.Rascal) => false,
@@ -1164,22 +1165,15 @@ internal static class CustomRolesHelper
CustomRoles.Egoist when !pc.IsImpostor() => false,
CustomRoles.Damocles when pc.GetCustomRole() is CustomRoles.Bomber or CustomRoles.Nuker or CustomRoles.Mercenary or CustomRoles.Cantankerous => false,
CustomRoles.Damocles when pc.GetRoleTypes() is not (RoleTypes.Impostor or RoleTypes.Phantom or RoleTypes.Shapeshifter or RoleTypes.Viper) => false,
CustomRoles.Flashman when pc.Is(CustomRoles.Swiftclaw) || pc.Is(CustomRoles.Giant) || pc.Is(CustomRoles.Spurt) || pc.GetCustomRole() is CustomRoles.Tank or CustomRoles.Zombie => false,
CustomRoles.Giant when pc.Is(CustomRoles.Flashman) || pc.Is(CustomRoles.Spurt) || pc.Is(CustomRoles.RoomRusher) => false,
CustomRoles.Flash when pc.Is(CustomRoles.Swiftclaw) || pc.Is(CustomRoles.Giant) || pc.Is(CustomRoles.Spurt) || pc.GetCustomRole() is CustomRoles.Tank or CustomRoles.Zombie => false,
CustomRoles.Giant when pc.Is(CustomRoles.Flash) || pc.Is(CustomRoles.Spurt) || pc.Is(CustomRoles.RoomRusher) => false,
CustomRoles.Necroview when pc.Is(CustomRoles.Visionary) => false,
CustomRoles.Mimic when pc.Is(CustomRoles.Nemesis) => false,
CustomRoles.Rascal when !pc.IsCrewmate() => false,
CustomRoles.LazyGuy when pc.GetCustomRole().IsAdditionRole() => false,
CustomRoles.Stealer when pc.Is(CustomRoles.Vindicator) => false,
CustomRoles.Bloodlust when !pc.GetCustomRole().IsCrewmate() || pc.GetCustomRole().IsTaskBasedCrewmate() || pc.GetCustomRole() is CustomRoles.Medic => 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.Nemesis) => false,
CustomRoles.Mare when pc.Is(CustomRoles.Sniper) => false,
CustomRoles.Mare when pc.Is(CustomRoles.Fireworker) => false,
CustomRoles.Mare when pc.Is(CustomRoles.Swooper) => false,
CustomRoles.Mare when pc.Is(CustomRoles.Vampire) => false,
CustomRoles.Mare when pc.GetCustomRole() is CustomRoles.Inhibitor or CustomRoles.Saboteur or CustomRoles.Swift or CustomRoles.Nemesis or CustomRoles.Sniper or CustomRoles.Fireworker or CustomRoles.Swooper or CustomRoles.Vampire => false,
CustomRoles.Torch when pc.GetCustomRole() is CustomRoles.Lighter or CustomRoles.Ignitor or CustomRoles.Investigator or CustomRoles.Eclipse or CustomRoles.Decryptor => false,
CustomRoles.Bewilder when pc.GetCustomRole() is CustomRoles.Lighter or CustomRoles.Ignitor or CustomRoles.Investigator or CustomRoles.Eclipse or CustomRoles.Decryptor => false,
CustomRoles.Sunglasses when pc.GetCustomRole() is CustomRoles.Lighter or CustomRoles.Ignitor or CustomRoles.Investigator or CustomRoles.Eclipse or CustomRoles.Decryptor => false,
@@ -1201,14 +1195,7 @@ internal static class CustomRolesHelper
CustomRoles.Bait when pc.Is(CustomRoles.Beartrap) => false,
CustomRoles.Beartrap when pc.Is(CustomRoles.Bait) => false,
CustomRoles.Schizophrenic 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.Consigliere) => false,
CustomRoles.Swift when pc.Is(CustomRoles.Witch) => false,
CustomRoles.Swift when pc.Is(CustomRoles.Nemesis) => false,
CustomRoles.Swift when pc.GetCustomRole() is CustomRoles.Swooper or CustomRoles.Vampire or CustomRoles.Scavenger or CustomRoles.Puppeteer or CustomRoles.Warlock or CustomRoles.Consigliere or CustomRoles.Witch or CustomRoles.Nemesis => false,
CustomRoles.Reach when pc.GetCustomRole() is CustomRoles.Mafioso or CustomRoles.Evolver or CustomRoles.Berserker => false,
CustomRoles.Beartrap when pc.Is(CustomRoles.GuardianAngelEHR) => false,
CustomRoles.Reach when pc.GetRoleTypes() is not (RoleTypes.Impostor or RoleTypes.Phantom or RoleTypes.Shapeshifter or RoleTypes.Viper) => false,
@@ -1216,7 +1203,7 @@ internal static class CustomRolesHelper
CustomRoles.Haste when pc.GetRoleTypes() is not (RoleTypes.Impostor or RoleTypes.Phantom or RoleTypes.Shapeshifter or RoleTypes.Viper) || !pc.CanUseImpostorVentButton() || pc.Is(CustomRoles.Glitch) => false,
CustomRoles.Diseased when pc.Is(CustomRoles.Antidote) => false,
CustomRoles.Antidote when pc.Is(CustomRoles.Diseased) => false,
CustomRoles.Flashman or CustomRoles.Giant when pc.GetCustomRole() is CustomRoles.Swooper or CustomRoles.Wraith or CustomRoles.Chameleon or CustomRoles.Alchemist or CustomRoles.Ankylosaurus => false,
CustomRoles.Flash or CustomRoles.Giant when pc.GetCustomRole() is CustomRoles.Swooper or CustomRoles.Wraith or CustomRoles.Chameleon or CustomRoles.Alchemist or CustomRoles.Ankylosaurus or CustomRoles.Swiftclaw => false,
CustomRoles.Bait when pc.Is(CustomRoles.Disregarded) => false,
CustomRoles.Busy when !pc.GetTaskState().HasTasks => false,
CustomRoles.Truant when pc.Is(CustomRoles.SoulHunter) => false,
@@ -1232,11 +1219,13 @@ internal static class CustomRolesHelper
CustomRoles.DoubleShot when pc.Is(CustomRoles.CopyCat) => false,
CustomRoles.Tiebreaker when pc.Is(CustomRoles.Dictator) => false,
CustomRoles.Lucky when pc.Is(CustomRoles.Luckey) => false,
CustomRoles.Unlucky when pc.GetCustomRole() is CustomRoles.Luckey or CustomRoles.Tank => false,
CustomRoles.Unlucky when pc.GetCustomRole() is CustomRoles.Luckey or CustomRoles.Tank or CustomRoles.Vector or CustomRoles.Addict or CustomRoles.Lurker => false,
CustomRoles.Unlucky when pc.Is(CustomRoles.Lucky) => false,
CustomRoles.Lucky when pc.Is(CustomRoles.Unlucky) => false,
CustomRoles.Fool when pc.GetCustomRole() is CustomRoles.Mechanic or CustomRoles.GuardianAngelEHR or CustomRoles.Technician => false,
CustomRoles.Coroner when pc.Is(CustomRoles.Oblivious) => false,
CustomRoles.Fragile when pc.Is(CustomRoles.Detour) => false,
CustomRoles.Physicist when pc.GetCustomRole() is CustomRoles.Tracefinder or CustomRoles.Doctor => false,
CustomRoles.DoubleShot when pc.GetCustomRole() is not CustomRoles.EvilGuesser and not CustomRoles.NiceGuesser and not CustomRoles.Augur && !Options.GuesserMode.GetBool() => false,
CustomRoles.DoubleShot when !pc.Is(CustomRoles.Guesser) && !pc.Is(CustomRoles.EvilGuesser) && pc.Is(CustomRoleTypes.Impostor) && !Options.ImpostorsCanGuess.GetBool() => false,
CustomRoles.DoubleShot when !pc.Is(CustomRoles.Guesser) && !pc.Is(CustomRoles.NiceGuesser) && pc.Is(CustomRoleTypes.Crewmate) && !Options.CrewmatesCanGuess.GetBool() => false,
@@ -2034,3 +2023,5 @@ public enum CountTypes
Coven
}
+2 -2
View File
@@ -1404,7 +1404,7 @@ internal static class ExtendedPlayerControl
return pc.GetCustomRole() switch
{
// Solo PVP
CustomRoles.SoloPVP_Player => pc.SoloAlive(),
CustomRoles.Challenger => pc.SoloAlive(),
// FFA
CustomRoles.Killer => pc.IsAlive(),
// Stop And Go
@@ -1755,7 +1755,7 @@ internal static class ExtendedPlayerControl
Main.AllPlayerKillCooldown[player.PlayerId] = player.GetCustomRole() switch
{
CustomRoles.SoloPVP_Player => SoloPVP.SoloPVP_ATKCooldown.GetFloat(),
CustomRoles.Challenger => SoloPVP.SoloPVP_ATKCooldown.GetFloat(),
CustomRoles.Killer => FreeForAll.FFAKcd.GetFloat(),
CustomRoles.Runner => Speedrun.KCD,
CustomRoles.CTFPlayer => CaptureTheFlag.KCD,
@@ -263,9 +263,9 @@ public sealed class PlayerGameOptionsSender(PlayerControl player) : GameOptionsS
opt.SetBool(BoolOptionNames.AnonymousVotes, false);
break;
}
case CustomRoles.Flashman:
case CustomRoles.Flash:
{
Main.AllPlayerSpeed[player.PlayerId] = Options.FlashmanSpeed.GetFloat();
Main.AllPlayerSpeed[player.PlayerId] = Options.FlashSpeed.GetFloat();
break;
}
case CustomRoles.Giant:
@@ -660,4 +660,5 @@ public sealed class PlayerGameOptionsSender(PlayerControl player) : GameOptionsS
{
return base.AmValid() && player != null && player.Data != null && !player.Data.Disconnected && Main.RealOptionsData != null;
}
}
}
+3 -2
View File
@@ -337,7 +337,7 @@ public class PlayerState(byte playerId)
{
SubRoles.Remove(role);
if (role is CustomRoles.Flashman or CustomRoles.Dynamo or CustomRoles.Spurt)
if (role is CustomRoles.Flash or CustomRoles.Dynamo or CustomRoles.Spurt)
{
Main.AllPlayerSpeed[PlayerId] = Main.RealOptionsData.GetFloat(FloatOptionNames.PlayerSpeedMod);
PlayerGameOptionsSender.SetDirty(PlayerId);
@@ -597,4 +597,5 @@ public static class MeetingStates
public static bool IsExistDeadBody => DeadBodies.Length > 0;
public static NetworkedPlayerInfo ReportTarget { get; set; }
}
}
+2 -3
View File
@@ -335,7 +335,7 @@ public static class GuessManager
case CustomRoles.Goose when !Goose.CanBeGuessed.GetBool():
case CustomRoles.BananaMan:
case CustomRoles.Disco:
case CustomRoles.Flashman:
case CustomRoles.Flash:
case CustomRoles.Giant:
case CustomRoles.Glow:
case CustomRoles.LastImpostor:
@@ -1044,7 +1044,7 @@ public static class GuessManager
CustomRoles.BananaMan or
CustomRoles.Car or
CustomRoles.Disco or
CustomRoles.Flashman or
CustomRoles.Flash or
CustomRoles.Giant or
CustomRoles.LastImpostor or
CustomRoles.NotAssigned or
@@ -1651,4 +1651,3 @@ public static class GuessManager
}
}
+1 -1
View File
@@ -826,7 +826,7 @@ public static class Options
public static OptionItem PresidentCanBeMadmate;
public static OptionItem MadSnitchTasks;
public static OptionItem FlashmanSpeed;
public static OptionItem FlashSpeed;
public static OptionItem GiantSpeed;
public static OptionItem ImpEgoistVisibalToAllies;
public static OptionItem VotesPerKill;
+37 -10
View File
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using UnityEngine;
@@ -20,7 +20,41 @@ public static class Zoom
if (((GameStates.IsShip && !GameStates.IsMeeting && GameStates.IsCanMove && !PlayerControl.LocalPlayer.IsAlive()) || (GameStates.IsLobby && GameStates.IsCanMove)) && !InGameRoleInfoMenu.Showing)
{
if (Camera.main.orthographicSize > 3.0f) ResetButtons = true;
#if ANDROID
if (Input.touchCount == 2)
{
Touch touch0 = Input.GetTouch(0);
Touch touch1 = Input.GetTouch(1);
Vector2 touch0PrevPos = touch0.position - touch0.deltaPosition;
Vector2 touch1PrevPos = touch1.position - touch1.deltaPosition;
float prevTouchDeltaMag = (touch0PrevPos - touch1PrevPos).magnitude;
float currentTouchDeltaMag = (touch0.position - touch1.position).magnitude;
float deltaMagnitudeDiff = currentTouchDeltaMag - prevTouchDeltaMag;
switch (deltaMagnitudeDiff)
{
case > 0:
{
if (Camera.main.orthographicSize > 3.0f)
SetZoomSize();
break;
}
case < 0:
{
if (GameStates.IsDead || GameStates.IsFreePlay || DebugModeManager.AmDebugger || GameStates.IsLobby)
{
if (Camera.main.orthographicSize < 18.0f)
SetZoomSize(true);
}
break;
}
}
}
#else
switch (Input.mouseScrollDelta.y)
{
case > 0:
@@ -41,7 +75,7 @@ public static class Zoom
break;
}
}
#endif
Flag.NewFlag("Zoom");
}
else
@@ -107,11 +141,4 @@ public static class Flag
{
if (!OneTimeList.Contains(type)) OneTimeList.Add(type);
}
/*
public static void DeleteFlag(string type)
{
if (OneTimeList.Contains(type)) OneTimeList.Remove(type);
}
*/
}
}
+3 -3
View File
@@ -205,7 +205,7 @@ internal static class HudManagerPatch
ActionButton usedButton = __instance.KillButton;
if (usesPetInsteadOfKill) usedButton = __instance.PetButton;
__instance.KillButton?.OverrideText(GetString("KillButtonText"));
__instance.KillButton?.OverrideText(player.GetRoleTypes() == RoleTypes.Viper ? GetString("KillButtonText.Viper") : GetString("KillButtonText"));
__instance.ReportButton?.OverrideText(GetString("ReportButtonText"));
__instance.PetButton?.OverrideText(GetString("PetButtonText"));
__instance.ImpostorVentButton?.OverrideText(GetString("VentButtonText"));
@@ -237,7 +237,7 @@ internal static class HudManagerPatch
case CustomRoles.Medic:
usedButton?.OverrideText(GetString("MedicalerButtonText"));
break;
case CustomRoles.SoloPVP_Player:
case CustomRoles.Challenger:
case CustomRoles.BedWarsPlayer:
__instance.KillButton?.OverrideText(GetString("DemonButtonText"));
break;
@@ -660,7 +660,7 @@ internal static class SetHudActivePatch
__instance.ImpostorVentButton?.ToggleVisible(false);
break;
case CustomRoles.SoloPVP_Player:
case CustomRoles.Challenger:
__instance.SabotageButton?.ToggleVisible(false);
__instance.AbilityButton?.ToggleVisible(false);
__instance.ReportButton?.ToggleVisible(false);
+6 -5
View File
@@ -1,4 +1,5 @@
using System;
using AmongUs.GameOptions;
using EHR.Crewmate;
using EHR.Impostor;
using EHR.Neutral;
@@ -177,7 +178,7 @@ public static class HudSpritePatch
newAbilityButton = CustomButton.Get("JesterVent");
break;
}
case CustomRoles.Transporter:
case CustomRoles.Transporter when player.GetRoleTypes() == RoleTypes.Shapeshifter:
case CustomRoles.Swapster:
{
newAbilityButton = CustomButton.Get("Transport");
@@ -189,7 +190,7 @@ public static class HudSpritePatch
else if (!shapeshifting) newAbilityButton = CustomButton.Get("Disperse");
break;
}
}
case CustomRoles.Duellist:
case CustomRoles.SoulCatcher:
case CustomRoles.Twister:
@@ -314,8 +315,8 @@ public static class HudSpritePatch
{
newKillButton = CustomButton.Get("Shield");
break;
}
case CustomRoles.Gangster when Gangster.CanRecruit(player.PlayerId):
}
case CustomRoles.Gangster when Gangster.CanRecruit(player.PlayerId):
case CustomRoles.Jackal when player.GetAbilityUseLimit() > 0:
{
newKillButton = CustomButton.Get("Sidekick");
@@ -509,4 +510,4 @@ public static class HudSpritePatch
}
}
}
}
}
+2 -2
View File
@@ -875,11 +875,11 @@ internal static class BeginCrewmatePatch
{
case CustomGameMode.SoloPVP:
{
__instance.TeamTitle.text = GetString("SoloPVP_Player");
__instance.TeamTitle.text = GetString("Challenger");
__instance.TeamTitle.color = __instance.BackgroundBar.material.color = new Color32(245, 82, 82, byte.MaxValue);
PlayerControl.LocalPlayer.Data.Role.IntroSound = DestroyableSingleton<HnSImpostorScreamSfx>.Instance.HnSOtherImpostorTransformSfx;
__instance.ImpostorText.gameObject.SetActive(true);
__instance.ImpostorText.text = GetString("SoloPVP_PlayerInfo");
__instance.ImpostorText.text = GetString("ChallengerInfo");
break;
}
case CustomGameMode.FFA:
+5 -1
View File
@@ -95,8 +95,11 @@ waiverfore#0496 | b493df896 | | Cheating in Syl's lobby |
whaleutter#4768 | 9e04dc5d5 | | Cheating in Syl's lobby | No name cheater
whimrecent#6558 | f8452a9d1 | | Cheating | No name cheater
pureplot#2423 | ed4c7bdf6 | hdrzz | Cheater | Cheated in Sarha's lobby
wackytext#6530 | 825431910 | | Disrupting lobbies | Cheating in Dora Chan's Livestream
waistaxial#2305 | 2476a9933 | | Cheater | Disrupting Dora Chan's lobby
mindfecund#4895 | 0589ce12b | Fortegreen | Cheater | Using lobby ss cheat
## Griefers, Toxic, harrasing, morons
## Griefers, Toxic, Harrasing, Racist
setmolar#4374 | | 藏族顶针 | Toxic |
overtfeast#5802 | | 黑影 | Toxic |
roomybump#8560 | | 中国国民党 | Toxic |
@@ -122,6 +125,7 @@ gougesole#0734 | ed140c20d | | Toxic | Pedophile Behaviour
deltamalty#8755 | | Nggeereee | Toxic |
polarsail#2468 | | hatenggers | Toxic |
primesnow#4272 | 65b98a6de | HiverXM | Toxic | The n word
todayside#9634 | 4e44cffe6 | | Racist | Joined a lobby with racial slur in name
## Other
tenthrope#3476 | | Oldishwire | Other |
+25 -25
View File
@@ -346,7 +346,7 @@
"Stained": "Stained",
"Clumsy": "Clumsy",
"Mischievous": "Mischievous",
"Flashman": "Flash",
"Flash": "Flash",
"Undead": "Undead",
"Busy": "Busy",
"Truant": "Truant",
@@ -404,7 +404,7 @@
"Prefix.Stained": "Stained",
"Prefix.Clumsy": "Clumsy",
"Prefix.Mischievous": "Mischievous",
"Prefix.Flashman": "Flash",
"Prefix.Flash": "Flash",
"Prefix.Undead": "Undead",
"Prefix.Busy": "Busy",
"Prefix.Truant": "Truant",
@@ -456,7 +456,7 @@
"ScientistEHRInfo": "Access portable vitals from anywhere",
"ShapeshifterEHRInfo": "Disguise as crewmates to frame them",
"GuardianAngelEHRInfo": "Protect the crewmates from the <color=#ff1919>Impostors</color>",
"ImpostorEHRInfo": "Kill and sabotage",
"ImpostorEHRInfo": "Kill & Sabotage",
"CrewmateEHRInfo": "Do your tasks",
"NoisemakerEHRInfo": "Alert the crewmates when you die",
"TrackerEHRInfo": "Track players",
@@ -466,13 +466,13 @@
"FireworkerInfo": "Go out with a BANG",
"MercenaryInfo": "Keep killing, else you suicide",
"VampireInfo": "Your kills are delayed",
"WarlockInfo": "Curse crewmates & shift to make them kill",
"NinjaInfo": "Mark a target, then shift to kill them",
"WarlockInfo": "Curse crewmates & Shift to make them kill",
"NinjaInfo": "Mark a target, then Shift to kill them",
"ZombieInfo": "You're very slow, but can't be ejected",
"AnonymousInfo": "Force a player to report a body",
"MinerInfo": "Warp to your last used vent by shifting",
"KillingMachineInfo": "You can ONLY kill, but low cooldown and bypass shields",
"EscapistInfo": "Shift to mark places and warp back to them",
"EscapistInfo": "Shift/Vanish to mark places and warp back to them",
"WitchInfo": "Spell crewmates to kill them in meetings",
"NemesisInfo": "Revenge After Death",
"GodfatherInfo": "Recruit players by voting them",
@@ -482,7 +482,7 @@
"EvilTrackerInfo": "Track players by shifting",
"AntiAdminerInfo": "Track device usage",
"ArroganceInfo": "Your cooldown decreases with each kill you make",
"BomberInfo": "Vanish to explode",
"BomberInfo": "Shift/Vanish to explode",
"TrapsterInfo": "Start a killing chain",
"ScavengerInfo": "Your kills are unreportable",
"EvilGuesserInfo": "Guess roles in meetings to kill",
@@ -504,7 +504,7 @@
"TricksterInfo": "Kill and trick the crew",
"VindicatorInfo": "Use your extra votes to kill everyone",
"ParasiteInfo": "Help the Impostors kill the crew",
"DisperserInfo": "Shift to teleport everyone to a random vent",
"DisperserInfo": "Shift/Vanish to teleport everyone to a random vent",
"InhibitorInfo": "You cannot kill during sabotages",
"SaboteurInfo": "Kill to call and stack sabotages. You can only kill during a sabotage",
"CouncillorInfo": "Kill crewmates during meetings",
@@ -554,7 +554,7 @@
"MorticianInfo": "Report a body to know who interacted with them last",
"MediumInfo": "Talk with ghosts",
"ObserverInfo": "You can see all shield-animations",
"PacifistInfo": "Vent to reset kill cooldowns",
"PacifistInfo": "Vent/Pet to reset kill cooldowns",
"MonarchInfo": "Give your crew extra voting power!",
"InvestigatorInfo": "Reveal roles of other players",
"CoronerInfo": "Find corpses and their killers",
@@ -566,7 +566,7 @@
"TracefinderInfo": "Locate dead bodies",
"OracleInfo": "Vote a player to see their alignment",
"SpiritualistInfo": "You see where a ghost is",
"ChameleonInfo": "Vent to disguise into your surroundings",
"ChameleonInfo": "Vent/Pet to disguise into your surroundings",
"InspectorInfo": "Validate the alignments of two players",
"TimeMasterInfo": "Rewind time to dodge attacks!",
"CrusaderInfo": "Kill a player's attacker",
@@ -577,7 +577,7 @@
"ExecutionerInfo": "Get your target voted out",
"LawyerInfo": "Help your target win!",
"VectorInfo": "Jump in, jump out, win!",
"JackalInfo": "Murder everyone",
"JackalInfo": "Convert & Murder Everyone",
"GodInfo": "Everything is under your control",
"InnocentInfo": "Get someone ejected by making them kill you",
"PelicanInfo": "Eat all players",
@@ -596,7 +596,7 @@
"FollowerInfo": "Follow a player and help them",
"CultistInfo": "Charm everyone",
"HexMasterInfo": "Hex players to kill them in meetings",
"WraithInfo": "Vent to go invisible temporarily",
"WraithInfo": "Vent/Vanish to go invisible temporarily",
"SerialKillerInfo": "Kill everyone to win!",
"JuggernautInfo": "Your cooldown decreases with each kill you get",
"InfectiousInfo": "Infect everyone",
@@ -604,7 +604,7 @@
"PursuerInfo": "Protect yourself and live to the end!",
"SpecterInfo": "Get killed and finish your tasks to win!",
"JinxInfo": "Reflect attacks onto your attackers",
"MaverickInfo": "Survive until the end to win",
"MaverickInfo": "Kill & Survive until the end to win",
"CursedSoulInfo": "Snatch souls and steal the win",
"RitualistInfo": "Kill and reveal the roles of your enemies",
"PickpocketInfo": "Steal votes from your kills",
@@ -621,7 +621,7 @@
"NtrInfo": "Everyone sees you as their Lover",
"WatcherInfo": "You see vote colors",
"LastImpostorInfo": "Lower kill cooldown",
"FlashmanInfo": "You're faster",
"FlashInfo": "You're faster",
"GiantInfo": "You're slower",
"TruantInfo": "You freeze after meetings for some time",
"TorchInfo": "You have a higher vision!",
@@ -656,7 +656,7 @@
"BloodlustInfo": "You can kill",
"StainedInfo": "Your killer gets a violet name for 3s",
"ClumsyInfo": "You trip while walking",
"MischievousInfo": "You can sabotage",
"MischievousInfo": "You can Sabotage",
"DisregardedInfo": "Your body can't be reported",
"LuckyInfo": "Dodge attackers",
"DoubleShotInfo": "You have an extra life when guessing",
@@ -680,7 +680,7 @@
"NotAssignedInfo": "Error, report to host!!",
"SunnyboyInfo": "Shine, shine my sunshine!",
"BardInfo": "Poem's grace, murder's trace, a rhythmic dance in a dark embrace.",
"NukerInfo": "Vanish to nuke everyone",
"NukerInfo": "Shift/Vanish to nuke everyone",
"EngineerEHRInfoLong": "(Crewmates):\\nAs the Engineer, you may access the vents while comms are not sabotaged. Vents are disabled when they are sabotaged.",
"ScientistEHRInfoLong": "(Crewmates):\\nAs the Scientist, you have a portable tablet with the crew's vitals on it. Use this any way you'd like. Catching self-reports, extra intel on body age, etc.",
"ShapeshifterEHRInfoLong": "(Impostors):\\nAs the Shapeshifter, you have a shapeshifting ability that you may use to frame other crewmates. Just be aware that there is an egg while shifting, and the disguise is temporary.",
@@ -852,8 +852,8 @@
"BloodlustInfoLong": "(Add-ons):\\nYou can kill. You are a neutral killer while keeping your role's ability (as much as host-only limitations allow).\\nIf your role has an ability to be used through the kill button, you can single-click to use your ability and double-click the kill button to kill.",
"StainedInfoLong": "(Add-ons):\\nYour killer gets a violet name for 3 seconds.",
"ClumsyInfoLong": "(Add-ons):\\nWhile walking, you have a small chance of tripping, meaning you freeze for a few seconds.",
"MischievousInfoLong": "(Add-ons):\\nYou can sabotage.",
"FlashmanInfoLong": "(Add-ons):\\nThe Flash is faster by default.",
"MischievousInfoLong": "(Add-ons):\\nYou can Sabotage.",
"FlashInfoLong": "(Add-ons):\\nThe Flash is faster by default.",
"GiantInfoLong": "(Add-ons):\\nThe Giant is slower by default.",
"BusyInfoLong": "(Add-ons):\\nYou have more tasks.",
"DiscoInfoLong": "(Add-ons):\\nYou change your skin color every few seconds.",
@@ -865,7 +865,7 @@
"BewilderInfoLong": "(Add-ons):\\nBewilder's vision changes killer's vision on death.",
"TruantInfoLong": "(Add-ons):\\nAfter each meeting, you freeze in place for a set amount of seconds.",
"WorkhorseInfoLong": "(Add-ons):\\nComplete all tasks to become Workhorse and get extra tasks set by the host.",
"FoolInfoLong": "(Add-ons):\\nYou can't fix Lights and Comms sabotages.",
"FoolInfoLong": "(Add-ons):\\nYou can't fix Lights and Comms sabotages. Note: Technician can't be Fool.",
"AvengerInfoLong": "(Add-ons):\\nHost can allow Impostor to become Avenger. If Avenger dies, they'll revenge a random player.",
"YoutuberInfoLong": "(Add-ons):\\nIf the YouTuber is the first player killed, they win. If not, they follow the Crewmate to win. Note: Indirect killing methods don't trigger the YouTuber's skills.",
"EgoistInfoLong": "(Add-ons):\\nOnly impostors can get Egoist. If the impostor team wins while there's at least one Impostor alive who isn't an Egoist, the Egoist loses.\\nIn order for the Egoist to win, <b>they must eject all other impostors</b> and stay alive.",
@@ -1499,7 +1499,7 @@
"BewilderVision": "<color=#c894f5>Bewilder</color> Vision",
"JesterVision": "<color=#ec62a5>Jester</color> Vision",
"LawyerVision": "<color=#008080>Lawyer</color> Vision",
"FlashmanSpeed": "<color=#ff8400>Flash</color> Speed",
"FlashSpeed": "<color=#ff8400>Flash</color> Speed",
"GiantSpeed": "<color=#32a852>Giant</color> Speed",
"NeutralsKnowEachOther": "<color=#ffab1b>Neutrals</color> know each other",
"LoverDieConsequence": "Consequence for Second <color=#ff9ace>Lover</color>, When First One Dies",
@@ -3221,7 +3221,7 @@
"AbilityButtonText.Impostor": "Haunt",
"AbilityButtonText.Shapeshifter": "Shift",
"AbilityButtonText.Phantom": "Vanish",
"AbilityButtonText.Viper": "Acid",
"KillButtonText.Viper": "Acid",
"AbilityButtonText.Detective": "Notes",
"SecondaryAbilityButtonText.Detective": "Interrogate",
"GauloisKillButtonText": "Speed Up",
@@ -3643,7 +3643,7 @@
"ReportBaitAtAllCost": "Report <#00f7ff>Bait</color> at All Cost",
"Jailor": "Jailor",
"JailorInfo": "Lock up your target in Jail",
"JailorInfoLong": "(Crewmates):\\nAs the Jailor, use your kill button to lock a player in jail. Jailed players cannot be guessed or judged and jailed players can only guess Jailor.",
"JailorInfoLong": "(Crewmates):\\nAs the Jailor, use your kill button to lock a player in jail. Jailed players cannot be guessed or judged and jailed players can only guess Jailor.\\nWhile in jail, jailed players can privately communicate with the Jailor using /jailtalk.",
"JailorJailCooldown": "Jail cooldown",
"JailorTargetAlreadySelected": "You have already selected a target",
"SuccessfullyJailed": "Target successfully Jailed",
@@ -4500,7 +4500,7 @@
"MagicianBombExlodesIn": "Bomb explodes in {0}s",
"MagicianCardUsed": "Card used",
"Necromancer": "Necromancer",
"NecromancerInfo": "Recruit Everyone",
"NecromancerInfo": "Recruit Everyone to the Undead",
"NecromancerInfoLong": "(Neutrals):\\nThe Necromancer is the main recruiter for the Undead faction. The first person it kills will become a Deathknight. With the help of the Deathknight, they must work together to convert others to the Undead. If the Necromancer were to die, The Deathknight would turn into Necromancer.",
"Deathknight": "Deathknight",
"DeathknightInfo": "Help the Necromancer Recruit",
@@ -4924,8 +4924,8 @@
"SoloPVP": "SOLO PVP",
"ModeSoloPVP": "Gamemode: Solo PVP",
"ModeDescribe.SoloPVP": "In the Solo PVP game mode, everyone has HP and can use their kill button to cause damage on other players. When a player's health reaches 0, they 'die' and respawn after a few seconds. The player(s) with the highest number of kills win(s) at the end of the game.",
"SoloPVP_Player": "SOLO PVP",
"SoloPVP_PlayerInfo": "DEFEAT OPPONENTS TO WIN",
"Challenger": "SOLO PVP",
"ChallengerInfo": "DEFEAT OPPONENTS TO WIN",
"SoloPVP_GameTime": "Game duration",
"SoloPVP_HPMax": "Default HP",
"SoloPVP_ATK": "Default Attack",
+5 -5
View File
@@ -1,15 +1,15 @@
namespace EHR.AddOns.Common;
internal class Flashman : IAddon
internal class Flash : IAddon
{
public AddonTypes Type => AddonTypes.Helpful;
public void SetupCustomOption()
{
Options.SetupAdtRoleOptions(18700, CustomRoles.Flashman, canSetNum: true, tab: TabGroup.Addons, teamSpawnOptions: true);
Options.SetupAdtRoleOptions(18700, CustomRoles.Flash, canSetNum: true, tab: TabGroup.Addons, teamSpawnOptions: true);
Options.FlashmanSpeed = new FloatOptionItem(18708, "FlashmanSpeed", new(0.25f, 3f, 0.05f), 2.5f, TabGroup.Addons)
.SetParent(Options.CustomRoleSpawnChances[CustomRoles.Flashman])
Options.FlashSpeed = new FloatOptionItem(18708, "FlashSpeed", new(0.25f, 3f, 0.05f), 2.5f, TabGroup.Addons)
.SetParent(Options.CustomRoleSpawnChances[CustomRoles.Flash])
.SetValueFormat(OptionFormat.Multiplier);
}
}
}
+2 -2
View File
@@ -28,7 +28,7 @@ public class Dreamweaver : Coven
{
StartSetup(650080)
.AutoSetupOption(ref AbilityCooldown, 30f, new FloatValueRule(0f, 120f, 0.5f), OptionFormat.Seconds)
.AutoSetupOption(ref AbilityUseLimit, 5f, new FloatValueRule(0, 20, 0.05f), OptionFormat.Times)
.AutoSetupOption(ref AbilityUseLimit, 5f, new FloatValueRule(0, 20, 1f), OptionFormat.Times)
.AutoSetupOption(ref CanVentBeforeNecronomicon, false)
.AutoSetupOption(ref CanVentAfterNecronomicon, false);
}
@@ -114,4 +114,4 @@ public class Dreamweaver : Coven
break;
}
}
}
}
+2 -2
View File
@@ -19,7 +19,7 @@ public class Timelord : Coven
{
StartSetup(650110)
.AutoSetupOption(ref KillCooldown, 30f, new FloatValueRule(0f, 120f, 0.5f), OptionFormat.Seconds)
.AutoSetupOption(ref TimeStolenWithEachKill, 10, new IntegerValueRule(0, 60, 1), OptionFormat.Seconds)
.AutoSetupOption(ref TimeStolenWithEachKill, 10, new IntegerValueRule(1, 60, 1), OptionFormat.Seconds)
.AutoSetupOption(ref CanVentBeforeNecronomicon, false)
.AutoSetupOption(ref CanVentAfterNecronomicon, true);
}
@@ -71,4 +71,4 @@ public class Timelord : Coven
string stolen = Utils.ColorString(Team.Coven.GetColor().ShadeColor(0.25f), $" -{GetTotalStolenTime()}s");
return baseText + stolen;
}
}
}
+2 -2
View File
@@ -20,7 +20,7 @@ public class VoodooMaster : Coven
{
StartSetup(650050)
.AutoSetupOption(ref AbilityCooldown, 30f, new FloatValueRule(0f, 120f, 0.5f), OptionFormat.Seconds)
.AutoSetupOption(ref AbilityUseLimit, 5f, new FloatValueRule(0, 20, 0.05f), OptionFormat.Times)
.AutoSetupOption(ref AbilityUseLimit, 5f, new FloatValueRule(0, 20, 1f), OptionFormat.Times)
.AutoSetupOption(ref CanVentBeforeNecronomicon, false)
.AutoSetupOption(ref CanVentAfterNecronomicon, true);
}
@@ -70,4 +70,4 @@ public class VoodooMaster : Coven
return HasNecronomicon;
}
}
}
+2 -2
View File
@@ -26,7 +26,7 @@ public class Astral : RoleBase
{
StartSetup(651400)
.AutoSetupOption(ref AbilityCooldown, 30, new IntegerValueRule(0, 120, 1), OptionFormat.Seconds)
.AutoSetupOption(ref AbilityDuration, 10, new IntegerValueRule(0, 30, 1), OptionFormat.Seconds)
.AutoSetupOption(ref AbilityDuration, 10, new IntegerValueRule(1, 30, 1), OptionFormat.Seconds)
.AutoSetupOption(ref AbilityUseLimit, 1f, new FloatValueRule(0, 20, 0.05f), OptionFormat.Times)
.AutoSetupOption(ref AbilityUseGainWithEachTaskCompleted, 0.3f, new FloatValueRule(0f, 5f, 0.05f), OptionFormat.Times)
.AutoSetupOption(ref AbilityChargesWhenFinishedTasks, 0.2f, new FloatValueRule(0f, 5f, 0.05f), OptionFormat.Times);
@@ -144,4 +144,4 @@ public class Astral : RoleBase
if (seer.PlayerId != AstralId || seer.PlayerId != target.PlayerId || hud || meeting || BackTS == 0) return string.Empty;
return string.Format(Translator.GetString("AstralSuffix"), BackTS - Utils.TimeStamp - 1);
}
}
}
+2 -1
View File
@@ -39,7 +39,7 @@ public class Judge : RoleBase
Options.SetupRoleOptions(Id, TabGroup.CrewmateRoles, CustomRoles.Judge);
TrialLimitPerMeeting = new FloatOptionItem(Id + 10, "TrialLimitPerMeeting", new(0f, 15f, 1f), 1f, TabGroup.CrewmateRoles).SetParent(Options.CustomRoleSpawnChances[CustomRoles.Judge]).SetValueFormat(OptionFormat.Times);
TrialLimitPerGame = new FloatOptionItem(Id + 9, "TrialLimitPerGame", new(0f, 30f, 1f), 3f, TabGroup.CrewmateRoles).SetParent(Options.CustomRoleSpawnChances[CustomRoles.Judge]).SetValueFormat(OptionFormat.Times);
AbilityUseLimit = new FloatOptionItem(Id + 18, "AbilityUseLimit", new(0f, 30f, 1f), 1f, TabGroup.CrewmateRoles).SetParent(Options.CustomRoleSpawnChances[CustomRoles.Judge]).SetValueFormat(OptionFormat.Times);
AbilityUseLimit = new FloatOptionItem(Id + 18, "AbilityUseLimit", new(0f, 30f, 0.5f), 1f, TabGroup.CrewmateRoles).SetParent(Options.CustomRoleSpawnChances[CustomRoles.Judge]).SetValueFormat(OptionFormat.Times);
CanTrialMadmate = new BooleanOptionItem(Id + 12, "JudgeCanTrialMadmate", true, TabGroup.CrewmateRoles).SetParent(Options.CustomRoleSpawnChances[CustomRoles.Judge]);
CanTrialConverted = new BooleanOptionItem(Id + 16, "JudgeCanTrialConverted", true, TabGroup.CrewmateRoles).SetParent(Options.CustomRoleSpawnChances[CustomRoles.Judge]);
CanTrialCrewKilling = new BooleanOptionItem(Id + 13, "JudgeCanTrialnCrewKilling", false, TabGroup.CrewmateRoles).SetParent(Options.CustomRoleSpawnChances[CustomRoles.Judge]);
@@ -336,3 +336,4 @@ public class Judge : RoleBase
countsAs = 1;
}
}
+2 -2
View File
@@ -15,7 +15,7 @@ internal class Pacifist : RoleBase
{
SetupRoleOptions(7700, TabGroup.CrewmateRoles, CustomRoles.Pacifist);
PacifistCooldown = new FloatOptionItem(7710, "PacifistCooldown", new(0f, 180f, 1f), 7f, TabGroup.CrewmateRoles)
PacifistCooldown = new FloatOptionItem(7710, "PacifistCooldown", new(0f, 180f, 0.5f), 7f, TabGroup.CrewmateRoles)
.SetParent(CustomRoleSpawnChances[CustomRoles.Pacifist])
.SetValueFormat(OptionFormat.Seconds);
@@ -102,4 +102,4 @@ internal class Pacifist : RoleBase
{
return !IsThisRole(pc) || pc.Is(CustomRoles.Nimble) || pc.GetClosestVent()?.Id == ventId;
}
}
}
+1 -1
View File
@@ -37,7 +37,7 @@ internal class Speedrunner : RoleBase
SpeedrunnerNotifyAtXTasksLeft = new IntegerOptionItem(652511, "SpeedrunnerNotifyAtXTasksLeft", new(0, 90, 1), 3, TabGroup.CrewmateRoles)
.SetParent(CustomRoleSpawnChances[CustomRoles.Speedrunner]);
SpeedrunnerSpeed = new FloatOptionItem(652512, "SpeedrunnerSpeed", new(0.1f, 3f, 0.1f), 1.5f, TabGroup.CrewmateRoles)
SpeedrunnerSpeed = new FloatOptionItem(652512, "SpeedrunnerSpeed", new(0.1f, 3f, 0.05f), 1.5f, TabGroup.CrewmateRoles)
.SetParent(CustomRoleSpawnChances[CustomRoles.Speedrunner])
.SetValueFormat(OptionFormat.Multiplier);
+2 -2
View File
@@ -30,7 +30,7 @@ public class Spy : RoleBase
.SetParent(CustomRoleSpawnChances[CustomRoles.Spy])
.SetValueFormat(OptionFormat.Times);
SpyRedNameDur = new FloatOptionItem(Id + 11, "SpyRedNameDur", new(0f, 70f, 1f), 3f, TabGroup.CrewmateRoles)
SpyRedNameDur = new FloatOptionItem(Id + 11, "SpyRedNameDur", new(0f, 70f, 0.5f), 3f, TabGroup.CrewmateRoles)
.SetParent(CustomRoleSpawnChances[CustomRoles.Spy])
.SetValueFormat(OptionFormat.Seconds);
@@ -134,4 +134,4 @@ public class Spy : RoleBase
}
}
}
}
}
+1 -1
View File
@@ -43,7 +43,7 @@ public class Arrogance : RoleBase
.SetParent(CustomRoleSpawnChances[CustomRoles.Arrogance])
.SetValueFormat(OptionFormat.Seconds);
ReduceKillCooldown = new FloatOptionItem(Id + 11, "ArroganceReduceKillCooldown", new(0f, 30f, 0.5f), 3.5f, TabGroup.ImpostorRoles)
ReduceKillCooldown = new FloatOptionItem(Id + 11, "ArroganceReduceKillCooldown", new(0.5f, 30f, 0.5f), 3.5f, TabGroup.ImpostorRoles)
.SetParent(CustomRoleSpawnChances[CustomRoles.Arrogance])
.SetValueFormat(OptionFormat.Seconds);
+2 -2
View File
@@ -38,7 +38,7 @@ public class Dazzler : RoleBase
.SetParent(CustomRoleSpawnChances[CustomRoles.Dazzler])
.SetValueFormat(OptionFormat.Multiplier);
DazzleLimitOpt = new IntegerOptionItem(Id + 14, "DazzlerDazzleLimit", new(0, 15, 1), 1, TabGroup.ImpostorRoles)
DazzleLimitOpt = new IntegerOptionItem(Id + 14, "DazzlerDazzleLimit", new(1, 15, 1), 1, TabGroup.ImpostorRoles)
.SetParent(CustomRoleSpawnChances[CustomRoles.Dazzler])
.SetValueFormat(OptionFormat.Times);
@@ -113,4 +113,4 @@ public class Dazzler : RoleBase
{
hud.AbilityButton?.OverrideText(GetString("DazzleButtonText"));
}
}
}
+2 -2
View File
@@ -27,7 +27,7 @@ public class Hypnotist : RoleBase
{
StartSetup(647550)
.AutoSetupOption(ref AbilityCooldown, 30, new IntegerValueRule(0, 60, 1), OptionFormat.Seconds)
.AutoSetupOption(ref AbilityDuration, 15, new IntegerValueRule(0, 30, 1), OptionFormat.Seconds)
.AutoSetupOption(ref AbilityDuration, 15, new IntegerValueRule(1, 30, 1), OptionFormat.Seconds)
.AutoSetupOption(ref AbilityUseLimit, 1f, new FloatValueRule(0, 20, 0.05f), OptionFormat.Times)
.AutoSetupOption(ref AbilityUseGainWithEachKill, 0.8f, new FloatValueRule(0f, 5f, 0.1f), OptionFormat.Times)
.AutoSetupOption(ref DoReportAfterHypnosisEnds, true);
@@ -127,4 +127,4 @@ public class Hypnotist : RoleBase
var timeLeft = (int)(ActivateTS + AbilityDuration.GetInt() - Utils.TimeStamp);
return timeLeft <= 5 ? $"\u25a9 ({timeLeft})" : "\u25a9";
}
}
}
+2 -2
View File
@@ -21,7 +21,7 @@ public class Lurker : RoleBase
.SetParent(CustomRoleSpawnChances[CustomRoles.Lurker])
.SetValueFormat(OptionFormat.Seconds);
ReduceKillCooldown = new FloatOptionItem(Id + 11, "ArroganceReduceKillCooldown", new(0f, 10f, 1f), 1f, TabGroup.ImpostorRoles)
ReduceKillCooldown = new FloatOptionItem(Id + 11, "ArroganceReduceKillCooldown", new(1f, 10f, 1f), 1f, TabGroup.ImpostorRoles)
.SetParent(CustomRoleSpawnChances[CustomRoles.Lurker])
.SetValueFormat(OptionFormat.Seconds);
}
@@ -61,4 +61,4 @@ public class Lurker : RoleBase
{
killer.ResetKillCooldown();
}
}
}
+2 -2
View File
@@ -32,7 +32,7 @@ public class Stasis : RoleBase
.AutoSetupOption(ref AbilityDuration, 10, new IntegerValueRule(1, 60, 1), OptionFormat.Seconds)
.AutoSetupOption(ref AffectsOtherImpostors, true)
.AutoSetupOption(ref CanVent, false)
.AutoSetupOption(ref KillCooldown, 30f, new FloatValueRule(0f, 180f, 1f), OptionFormat.Seconds)
.AutoSetupOption(ref KillCooldown, 30f, new FloatValueRule(0f, 180f, 0.5f), OptionFormat.Seconds)
.AutoSetupOption(ref CanSabotage, false);
}
@@ -156,4 +156,4 @@ public class Stasis : RoleBase
pc.RpcResetAbilityCooldown();
}
}
}
}
+2 -2
View File
@@ -37,7 +37,7 @@ public class Amogus : RoleBase
.AutoSetupOption(ref StartingLevel, 0, Enum.GetValues<Levels>().Select(x => $"Amogus.Levels.{x}").ToArray())
.AutoSetupOption(ref SugomaSpeed, 2f, new FloatValueRule(0.1f, 3f, 0.1f), OptionFormat.Multiplier)
.AutoSetupOption(ref SuspiciousSusArrowsToBodies, false)
.AutoSetupOption(ref UltimateSusVotesPerKill, 1, new IntegerValueRule(1, 10, 1), OptionFormat.Votes)
.AutoSetupOption(ref UltimateSusVotesPerKill, 1, new IntegerValueRule(0, 10, 1), OptionFormat.Votes)
.AutoSetupOption(ref AbilityCooldown, 20f, new FloatValueRule(0f, 180f, 0.5f), OptionFormat.Seconds)
.AutoSetupOption(ref AbilityDuration, 15f, new FloatValueRule(0f, 180f, 0.5f), OptionFormat.Seconds)
.AutoSetupOption(ref KillCooldown, 22.5f, new FloatValueRule(0f, 180f, 0.5f), OptionFormat.Seconds)
@@ -211,4 +211,4 @@ public class Amogus : RoleBase
SuspiciousSus,
UltimateSus
}
}
}
+2 -2
View File
@@ -29,7 +29,7 @@ public class Beehive : RoleBase
var id = 647350;
Options.SetupRoleOptions(id++, TabGroup.NeutralRoles, CustomRoles.Beehive);
Distance = new FloatOptionItem(++id, "Beehive.Distance", new(0f, 20f, 0.5f), 15f, TabGroup.NeutralRoles)
Distance = new FloatOptionItem(++id, "Beehive.Distance", new(0.5f, 20f, 0.5f), 15f, TabGroup.NeutralRoles)
.SetParent(Options.CustomRoleSpawnChances[CustomRoles.Beehive]);
Time = new FloatOptionItem(++id, "Beehive.Time", new(0f, 30f, 0.5f), 10f, TabGroup.NeutralRoles)
@@ -156,4 +156,4 @@ public class Beehive : RoleBase
string color2 = walked >= distance ? "<#00ffff>" : "<#ffff00>";
return $"{color}{walked}</color>{color2}/{distance}</color> <#ffffff>({time}s)</color>";
}
}
}
+3 -1
View File
@@ -186,4 +186,6 @@ public class HeadHunter : RoleBase
SendRPC();
Utils.NotifyRoles(SpecifySeer: Utils.GetPlayerById(HeadHunterId));
}
}
}
+3 -2
View File
@@ -24,7 +24,7 @@ public class Jinx : RoleBase
CanVent = new BooleanOptionItem(Id + 11, "CanVent", true, TabGroup.NeutralRoles).SetParent(CustomRoleSpawnChances[CustomRoles.Jinx]);
HasImpostorVision = new BooleanOptionItem(Id + 13, "ImpostorVision", true, TabGroup.NeutralRoles).SetParent(CustomRoleSpawnChances[CustomRoles.Jinx]);
JinxSpellTimes = new IntegerOptionItem(Id + 14, "JinxSpellTimes", new(0, 15, 1), 1, TabGroup.NeutralRoles)
JinxSpellTimes = new IntegerOptionItem(Id + 14, "JinxSpellTimes", new(1, 15, 1), 1, TabGroup.NeutralRoles)
.SetParent(CustomRoleSpawnChances[CustomRoles.Jinx])
.SetValueFormat(OptionFormat.Times);
@@ -34,4 +34,5 @@ public class Jinx : RoleBase
public override void Init() { }
public override void Add(byte playerId) { }
}
}
+2 -2
View File
@@ -23,7 +23,7 @@ public class Juggernaut : RoleBase
.SetParent(CustomRoleSpawnChances[CustomRoles.Juggernaut])
.SetValueFormat(OptionFormat.Seconds);
ReduceKillCooldown = new FloatOptionItem(Id + 11, "ArroganceReduceKillCooldown", new(0f, 30f, 0.5f), 4f, TabGroup.NeutralRoles)
ReduceKillCooldown = new FloatOptionItem(Id + 11, "ArroganceReduceKillCooldown", new(0.5f, 30f, 0.5f), 4f, TabGroup.NeutralRoles)
.SetParent(CustomRoleSpawnChances[CustomRoles.Juggernaut])
.SetValueFormat(OptionFormat.Seconds);
@@ -44,4 +44,4 @@ public class Juggernaut : RoleBase
public override void Init() { }
public override void Add(byte playerId) { }
}
}
+3 -1
View File
@@ -95,4 +95,6 @@ public class Maverick : RoleBase
{
NumOfKills = reader.ReadPackedInt32();
}
}
}
+2 -2
View File
@@ -29,7 +29,7 @@ internal class Predator : RoleBase
NumOfRolesToKill = new IntegerOptionItem(Id + 2, "NumOfRolesToKill", new(1, 10, 1), 3, TabGroup.NeutralRoles)
.SetParent(Options.CustomRoleSpawnChances[CustomRoles.Predator]);
MaxImpRolePicks = new IntegerOptionItem(Id + 3, "MaxImpRolePicks", new(1, 10, 1), 1, TabGroup.NeutralRoles)
MaxImpRolePicks = new IntegerOptionItem(Id + 3, "MaxImpRolePicks", new(0, 10, 1), 1, TabGroup.NeutralRoles)
.SetParent(Options.CustomRoleSpawnChances[CustomRoles.Predator]);
KillCooldown = new FloatOptionItem(Id + 4, "KillCooldown", new(0f, 180f, 0.5f), 15f, TabGroup.NeutralRoles)
@@ -166,4 +166,4 @@ internal class Predator : RoleBase
string text = pt.RolesToKill.Join(x => x.ToColoredString());
return hud ? text : $"<size=1.7>{text}</size>";
}
}
}
+2 -2
View File
@@ -23,7 +23,7 @@ public class Reckless : RoleBase
.SetParent(CustomRoleSpawnChances[CustomRoles.Reckless])
.SetValueFormat(OptionFormat.Seconds);
ReduceKillCooldown = new FloatOptionItem(Id + 11, "ArroganceReduceKillCooldown", new(0f, 30f, 0.5f), 5f, TabGroup.NeutralRoles)
ReduceKillCooldown = new FloatOptionItem(Id + 11, "ArroganceReduceKillCooldown", new(0.5f, 30f, 0.5f), 5f, TabGroup.NeutralRoles)
.SetParent(CustomRoleSpawnChances[CustomRoles.Reckless])
.SetValueFormat(OptionFormat.Seconds);
@@ -44,4 +44,4 @@ public class Reckless : RoleBase
public override void Init() { }
public override void Add(byte playerId) { }
}
}
+3 -3
View File
@@ -36,7 +36,7 @@ internal class Revolutionist : RoleBase
.SetParent(CustomRoleSpawnChances[CustomRoles.Revolutionist])
.SetValueFormat(OptionFormat.Seconds);
RevolutionistDrawCount = new IntegerOptionItem(18412, "RevolutionistDrawCount", new(0, 14, 1), 6, TabGroup.NeutralRoles)
RevolutionistDrawCount = new IntegerOptionItem(18412, "RevolutionistDrawCount", new(1, 14, 1), 6, TabGroup.NeutralRoles)
.SetParent(CustomRoleSpawnChances[CustomRoles.Revolutionist])
.SetValueFormat(OptionFormat.Players);
@@ -44,7 +44,7 @@ internal class Revolutionist : RoleBase
.SetParent(CustomRoleSpawnChances[CustomRoles.Revolutionist])
.SetValueFormat(OptionFormat.Percent);
RevolutionistVentCountDown = new FloatOptionItem(18414, "RevolutionistVentCountDown", new(0f, 180f, 1f), 15f, TabGroup.NeutralRoles)
RevolutionistVentCountDown = new FloatOptionItem(18414, "RevolutionistVentCountDown", new(0.5f, 180f, 0.5f), 15f, TabGroup.NeutralRoles)
.SetParent(CustomRoleSpawnChances[CustomRoles.Revolutionist])
.SetValueFormat(OptionFormat.Seconds);
}
@@ -249,4 +249,4 @@ internal class Revolutionist : RoleBase
RevolutionistLastTime.Remove(pc.PlayerId);
RevolutionistCountdown.Remove(pc.PlayerId);
}
}
}
+3 -2
View File
@@ -21,7 +21,7 @@ public class Ritualist : RoleBase
.SetParent(CustomRoleSpawnChances[CustomRoles.Ritualist])
.SetValueFormat(OptionFormat.Seconds);
RitualMaxCount = new IntegerOptionItem(Id + 11, "RitualMaxCount", new(0, 15, 1), 1, TabGroup.NeutralRoles)
RitualMaxCount = new IntegerOptionItem(Id + 11, "RitualMaxCount", new(1, 15, 1), 1, TabGroup.NeutralRoles)
.SetParent(CustomRoleSpawnChances[CustomRoles.Ritualist])
.SetValueFormat(OptionFormat.Times);
@@ -35,4 +35,5 @@ public class Ritualist : RoleBase
public override void Init() { }
public override void Add(byte playerId) { }
}
}
+2 -2
View File
@@ -37,7 +37,7 @@ public class RouleteGrandeur : RoleBase
HasImpostorVision = new BooleanOptionItem(Id + 3, "ImpostorVision", true, TabGroup.NeutralRoles)
.SetParent(Options.CustomRoleSpawnChances[CustomRoles.RouleteGrandeur]);
KCDReduction = new FloatOptionItem(Id + 4, "KCDReduction", new(0f, 100f, 0.5f), 3.5f, TabGroup.NeutralRoles)
KCDReduction = new FloatOptionItem(Id + 4, "KCDReduction", new(0.5f, 100f, 0.5f), 3.5f, TabGroup.NeutralRoles)
.SetParent(Options.CustomRoleSpawnChances[CustomRoles.RouleteGrandeur])
.SetValueFormat(OptionFormat.Seconds);
}
@@ -179,4 +179,4 @@ public class RouleteGrandeur : RoleBase
return string.Format(Translator.GetString("RG.Suffix"), Bullets);
}
}
}
+2 -2
View File
@@ -45,7 +45,7 @@ internal class Samurai : RoleBase
.SetParent(CustomRoleSpawnChances[CustomRoles.Samurai])
.SetValueFormat(OptionFormat.Seconds);
KillDelay = new FloatOptionItem(id + 7, "Samurai.KillDelay", new(0f, 60f, 0.5f), 5f, TabGroup.NeutralRoles)
KillDelay = new FloatOptionItem(id + 7, "Samurai.KillDelay", new(0.5f, 60f, 0.5f), 5f, TabGroup.NeutralRoles)
.SetParent(CustomRoleSpawnChances[CustomRoles.Samurai])
.SetValueFormat(OptionFormat.Seconds);
}
@@ -143,4 +143,4 @@ internal class Samurai : RoleBase
Delays.Clear();
}
}
}
+3 -2
View File
@@ -50,7 +50,7 @@ public class Werewolf : RoleBase
.SetParent(CustomRoleSpawnChances[CustomRoles.Werewolf])
.SetValueFormat(OptionFormat.Seconds);
RampageDur = new FloatOptionItem(Id + 13, "WWRampageDur", new(0f, 180f, 1f), 12f, TabGroup.NeutralRoles)
RampageDur = new FloatOptionItem(Id + 13, "WWRampageDur", new(0.5f, 180f, 0.5f), 12f, TabGroup.NeutralRoles)
.SetParent(CustomRoleSpawnChances[CustomRoles.Werewolf])
.SetValueFormat(OptionFormat.Seconds);
@@ -285,4 +285,5 @@ public class Werewolf : RoleBase
return true;
}
}
}
+2 -2
View File
@@ -15,7 +15,7 @@ public class Wraith : RoleBase
{
StartSetup(13300)
.AutoSetupOption(ref WraithCooldown, 20f, new FloatValueRule(0f, 60f, 0.5f), OptionFormat.Seconds)
.AutoSetupOption(ref WraithDuration, 10f, new FloatValueRule(0f, 30f, 0.5f), OptionFormat.Seconds)
.AutoSetupOption(ref WraithDuration, 10f, new FloatValueRule(0.5f, 30f, 0.5f), OptionFormat.Seconds)
.AutoSetupOption(ref WraithVentNormallyOnCooldown, true)
.AutoSetupOption(ref WraithCanVent, true, overrideName: "CanVent")
.AutoSetupOption(ref ImpostorVision, true)
@@ -25,4 +25,4 @@ public class Wraith : RoleBase
public override void Init() { }
public override void Add(byte playerId) { }
}
}