mirror of
https://github.com/Gurge44/EndlessHostRoles.git
synced 2026-10-20 01:46:25 +00:00
Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
4ae35a2253
45 files changed
+213
-148
No files matched your search
@@ -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
|
||||
@@ -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
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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 },
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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
@@ -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
@@ -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);
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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:
|
||||
|
||||
@@ -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
@@ -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",
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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>";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -186,4 +186,6 @@ public class HeadHunter : RoleBase
|
||||
SendRPC();
|
||||
Utils.NotifyRoles(SpecifySeer: Utils.GetPlayerById(HeadHunterId));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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) { }
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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) { }
|
||||
}
|
||||
}
|
||||
@@ -95,4 +95,6 @@ public class Maverick : RoleBase
|
||||
{
|
||||
NumOfKills = reader.ReadPackedInt32();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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>";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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) { }
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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) { }
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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) { }
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user