Compare commits

..
22 Commits
Author SHA1 Message Date
Gurge44 d816b7c063 Add strings 2024-04-09 20:51:41 +02:00
Gurge44 24924815a6 Finish Samurai 2024-04-09 20:41:25 +02:00
Gurge44 5f5ebd137e Add Samurai 2024-04-09 17:20:40 +02:00
Gurge44 e219d884da Fix Swapper 2024-04-08 19:40:03 +02:00
Gurge44 ca6baa56fe a 2024-04-08 19:31:11 +02:00
Gurge44 39dd11eddb change version 2024-04-08 19:24:20 +02:00
Gurge44 4b7e308417 ok I guess 2024-04-08 18:51:36 +02:00
Gurge44 ab17883b19 Update version and string 2024-04-07 23:06:32 +02:00
Gurge44 73e53e5afd Fix Bargainer 2024-04-07 22:58:19 +02:00
Gurge44 95bc96f877 I stg this just disappeared somehow 2024-04-07 22:33:36 +02:00
Gurge44 041c54303b Fix Disable All SS Anims, Change Sentry Behaviour, Change Adventurer Behaviour, Fix FFA, Fix Enigma 2024-04-07 22:32:05 +02:00
Gurge44 732ba9ec01 Add Bargainer (not simple, to say the least), Code Cleaup, Fix FFA 2024-04-07 15:25:44 +02:00
Gurge44 c8ef3f0a9f Fixes & Cat becomes Amnesiac if copied role is single 2024-04-06 22:30:24 +02:00
Gurge44 28d448a93a Fix duplicate IDs & missing strings 2024-04-06 20:46:56 +02:00
Gurge44 8614486bb7 Code Cleanup 2024-04-06 20:38:36 +02:00
Gurge44 0ca51a468b bruh 2024-04-06 20:35:04 +02:00
Gurge44 b614ec7dfa Some settings 2024-04-06 20:34:47 +02:00
Gurge44 8df2c8fa81 Add Schrödinger's Cat & Cherokious 2024-04-06 20:14:06 +02:00
Gurge44 21b4a1ead8 Merge branch 'main' of https://github.com/Gurge44/TOHE_PLUS 2024-04-06 19:07:13 +02:00
Gurge44 6f1bc6a415 fix FFA win condition (again) 2024-04-06 19:07:08 +02:00
PHGaming121 339fabc04b bro put analyst on role name, but forgot to but analyst on info and infolong 💀 (#51)
* Update en_US.json

* Update pt_BR.json
2024-04-06 18:43:40 +02:00
Gurge44 026ee4d322 Add Generator & Sentry 2024-04-06 14:50:25 +02:00
371 changed files with 3522 additions and 2372 deletions

No files matched your search

+20 -14
View File
@@ -3,10 +3,10 @@ namespace EHR;
public enum CustomRoles
{
//Default
// Default
Crewmate = 0,
//Impostors (Vanilla)
// Impostors (Vanilla)
Impostor,
Shapeshifter,
@@ -14,7 +14,7 @@ public enum CustomRoles
ImpostorEHR,
ShapeshifterEHR,
//Impostors
// Impostors
Hacker, // Anonymous
AntiAdminer,
@@ -49,6 +49,7 @@ public enum CustomRoles
Freezer,
Gambler,
Gangster,
Generator,
Godfather,
Greedier,
Hangman,
@@ -100,7 +101,7 @@ public enum CustomRoles
YinYanger,
Zombie,
//Crewmates (Vanilla)
// Crewmates (Vanilla)
Engineer,
GuardianAngel,
Scientist,
@@ -111,14 +112,14 @@ public enum CustomRoles
GuardianAngelEHR,
ScientistEHR,
// Crewmate
// Crewmates
Addict,
Adventurer,
Aid,
Alchemist,
Altruist,
Analyzer,
Analyst,
Autocrat,
Beacon,
Benefactor,
@@ -187,8 +188,9 @@ public enum CustomRoles
Rabbit,
Randomizer,
Ricochet,
Sentinel,
SecurityGuard,
Sentinel,
Sentry,
Sheriff,
Shiftguard,
Snitch,
@@ -212,14 +214,16 @@ public enum CustomRoles
SwordsMan, // Vigilante
Witness,
//Neutrals
// Neutrals
Agitater,
Amnesiac,
Arsonist,
Bandit,
Bargainer,
BloodKnight,
Bubble,
Cherokious,
Collector,
Deathknight,
Gamer, // Demon
@@ -268,6 +272,8 @@ public enum CustomRoles
Ritualist,
Romantic,
RuthlessRomantic,
Samurai,
SchrodingersCat,
NSerialKiller, // Serial Killer
Sidekick,
SoulHunter,
@@ -288,25 +294,25 @@ public enum CustomRoles
WeaponMaster,
Workaholic,
//SoloKombat
// Solo Kombat
KB_Normal,
//FFA
// FFA
Killer,
//MoveAndStop
// Move And Stop
Tasker,
//HotPotato
// Hot Potato
Potato,
//H&S
// H&S
Hider,
Seeker,
Fox,
Troll,
//GM
// GM
GM,
// ????
+20 -14
View File
@@ -3,10 +3,10 @@ namespace EHR;
public enum CustomRoles
{
//Default
// Default
Crewmate = 0,
//Impostors (Vanilla)
// Impostors (Vanilla)
Impostor,
Shapeshifter,
@@ -14,7 +14,7 @@ public enum CustomRoles
ImpostorEHR,
ShapeshifterEHR,
//Impostors
// Impostors
Hacker, // Anonymous
AntiAdminer,
@@ -49,6 +49,7 @@ public enum CustomRoles
Freezer,
Gambler,
Gangster,
Generator,
Godfather,
Greedier,
Hangman,
@@ -100,7 +101,7 @@ public enum CustomRoles
YinYanger,
Zombie,
//Crewmates (Vanilla)
// Crewmates (Vanilla)
Engineer,
GuardianAngel,
Scientist,
@@ -111,14 +112,14 @@ public enum CustomRoles
GuardianAngelEHR,
ScientistEHR,
// Crewmate
// Crewmates
Addict,
Adventurer,
Aid,
Alchemist,
Altruist,
Analyzer,
Analyst,
Autocrat,
Beacon,
Benefactor,
@@ -187,8 +188,9 @@ public enum CustomRoles
Rabbit,
Randomizer,
Ricochet,
Sentinel,
SecurityGuard,
Sentinel,
Sentry,
Sheriff,
Shiftguard,
Snitch,
@@ -212,14 +214,16 @@ public enum CustomRoles
SwordsMan, // Vigilante
Witness,
//Neutrals
// Neutrals
Agitater,
Amnesiac,
Arsonist,
Bandit,
Bargainer,
BloodKnight,
Bubble,
Cherokious,
Collector,
Deathknight,
Gamer, // Demon
@@ -268,6 +272,8 @@ public enum CustomRoles
Ritualist,
Romantic,
RuthlessRomantic,
Samurai,
SchrodingersCat,
NSerialKiller, // Serial Killer
Sidekick,
SoulHunter,
@@ -288,25 +294,25 @@ public enum CustomRoles
WeaponMaster,
Workaholic,
//SoloKombat
// Solo Kombat
KB_Normal,
//FFA
// FFA
Killer,
//MoveAndStop
// Move And Stop
Tasker,
//HotPotato
// Hot Potato
Potato,
//H&S
// H&S
Hider,
Seeker,
Fox,
Troll,
//GM
// GM
GM,
// ????
+3
View File
@@ -10,14 +10,17 @@
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=FPS/@EntryIndexedValue">FPS</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GM/@EntryIndexedValue">GM</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=HUD/@EntryIndexedValue">HUD</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=KCD/@EntryIndexedValue">KCD</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=NB/@EntryIndexedValue">NB</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=NC/@EntryIndexedValue">NC</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=NE/@EntryIndexedValue">NE</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=NK/@EntryIndexedValue">NK</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=NNK/@EntryIndexedValue">NNK</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PC/@EntryIndexedValue">PC</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=RNG/@EntryIndexedValue">RNG</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=RPC/@EntryIndexedValue">RPC</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SK/@EntryIndexedValue">SK</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SS/@EntryIndexedValue">SS</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=TMP/@EntryIndexedValue">TMP</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=EHR/@EntryIndexedValue">EHR</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=UI/@EntryIndexedValue">UI</s:String>
+6 -6
View File
@@ -1,11 +1,11 @@
using AmongUs.GameOptions;
using EHR.GameMode.HideAndSeekRoles;
using EHR.Modules;
using HarmonyLib;
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using AmongUs.GameOptions;
using EHR.GameMode.HideAndSeekRoles;
using EHR.Modules;
using HarmonyLib;
using UnityEngine;
namespace EHR
@@ -22,7 +22,7 @@ namespace EHR
const int id = 69_211_001;
Color color = new(52, 94, 235, byte.MaxValue);
MaxGameLength = IntegerOptionItem.Create(id, "FFA_GameTime", new(0, 1200, 10), 600, TabGroup.GameSettings, false)
MaxGameLength = IntegerOptionItem.Create(id, "FFA_GameTime", new(0, 1200, 10), 600, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.HideAndSeek)
.SetValueFormat(OptionFormat.Seconds)
.SetColor(color);
+23 -20
View File
@@ -1,9 +1,9 @@
using EHR.Modules;
using HarmonyLib;
using Hazel;
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using EHR.Modules;
using HarmonyLib;
using Hazel;
using UnityEngine;
using static EHR.Translator;
@@ -55,56 +55,59 @@ internal static class FFAManager
public static void SetupCustomOption()
{
FFAGameTime = IntegerOptionItem.Create(67_223_001, "FFA_GameTime", new(30, 600, 10), 300, TabGroup.GameSettings, false)
FFAGameTime = IntegerOptionItem.Create(67_223_001, "FFA_GameTime", new(30, 600, 10), 300, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.FFA)
.SetColor(new Color32(0, 255, 165, byte.MaxValue))
.SetValueFormat(OptionFormat.Seconds)
.SetHeader(true);
FFAKcd = FloatOptionItem.Create(67_223_002, "FFA_KCD", new(1f, 60f, 1f), 10f, TabGroup.GameSettings, false)
FFAKcd = FloatOptionItem.Create(67_223_002, "FFA_KCD", new(1f, 60f, 1f), 10f, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.FFA)
.SetColor(new Color32(0, 255, 165, byte.MaxValue))
.SetValueFormat(OptionFormat.Seconds);
FFADisableVentingWhenTwoPlayersAlive = BooleanOptionItem.Create(67_223_003, "FFA_DisableVentingWhenTwoPlayersAlive", true, TabGroup.GameSettings, false)
FFADisableVentingWhenTwoPlayersAlive = BooleanOptionItem.Create(67_223_003, "FFA_DisableVentingWhenTwoPlayersAlive", true, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.FFA)
.SetColor(new Color32(0, 255, 165, byte.MaxValue));
FFADisableVentingWhenKcdIsUp = BooleanOptionItem.Create(67_223_004, "FFA_DisableVentingWhenKCDIsUp", true, TabGroup.GameSettings, false)
FFADisableVentingWhenKcdIsUp = BooleanOptionItem.Create(67_223_004, "FFA_DisableVentingWhenKCDIsUp", true, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.FFA)
.SetColor(new Color32(0, 255, 165, byte.MaxValue));
FFAEnableRandomAbilities = BooleanOptionItem.Create(67_223_005, "FFA_EnableRandomAbilities", true, TabGroup.GameSettings, false)
FFAEnableRandomAbilities = BooleanOptionItem.Create(67_223_005, "FFA_EnableRandomAbilities", true, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.FFA)
.SetColor(new Color32(0, 255, 165, byte.MaxValue));
FFAShieldDuration = FloatOptionItem.Create(67_223_006, "FFA_ShieldDuration", new(1f, 70f, 1f), 7f, TabGroup.GameSettings, false)
FFAShieldDuration = FloatOptionItem.Create(67_223_006, "FFA_ShieldDuration", new(1f, 70f, 1f), 7f, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.FFA)
.SetColor(new Color32(0, 255, 165, byte.MaxValue))
.SetValueFormat(OptionFormat.Seconds);
FFAIncreasedSpeed = FloatOptionItem.Create(67_223_007, "FFA_IncreasedSpeed", new(0.1f, 5f, 0.1f), 1.5f, TabGroup.GameSettings, false)
FFAIncreasedSpeed = FloatOptionItem.Create(67_223_007, "FFA_IncreasedSpeed", new(0.1f, 5f, 0.1f), 1.5f, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.FFA)
.SetColor(new Color32(0, 255, 165, byte.MaxValue))
.SetValueFormat(OptionFormat.Multiplier);
FFADecreasedSpeed = FloatOptionItem.Create(67_223_008, "FFA_DecreasedSpeed", new(0.1f, 5f, 0.1f), 1f, TabGroup.GameSettings, false)
FFADecreasedSpeed = FloatOptionItem.Create(67_223_008, "FFA_DecreasedSpeed", new(0.1f, 5f, 0.1f), 1f, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.FFA)
.SetColor(new Color32(0, 255, 165, byte.MaxValue))
.SetValueFormat(OptionFormat.Multiplier);
FFAModifiedSpeedDuration = FloatOptionItem.Create(67_223_009, "FFA_ModifiedSpeedDuration", new(1f, 60f, 1f), 10f, TabGroup.GameSettings, false).SetGameMode(CustomGameMode.FFA).SetColor(new Color32(0, 255, 165, byte.MaxValue))
FFAModifiedSpeedDuration = FloatOptionItem.Create(67_223_009, "FFA_ModifiedSpeedDuration", new(1f, 60f, 1f), 10f, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.FFA).SetColor(new Color32(0, 255, 165, byte.MaxValue))
.SetValueFormat(OptionFormat.Seconds);
FFALowerVision = FloatOptionItem.Create(67_223_010, "FFA_LowerVision", new(0f, 1f, 0.05f), 0.5f, TabGroup.GameSettings, false).SetGameMode(CustomGameMode.FFA).SetColor(new Color32(0, 255, 165, byte.MaxValue))
FFALowerVision = FloatOptionItem.Create(67_223_010, "FFA_LowerVision", new(0f, 1f, 0.05f), 0.5f, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.FFA).SetColor(new Color32(0, 255, 165, byte.MaxValue))
.SetValueFormat(OptionFormat.Multiplier);
FFAModifiedVisionDuration = FloatOptionItem.Create(67_223_011, "FFA_ModifiedVisionDuration", new(1f, 70f, 1f), 5f, TabGroup.GameSettings, false).SetGameMode(CustomGameMode.FFA).SetColor(new Color32(0, 255, 165, byte.MaxValue))
FFAModifiedVisionDuration = FloatOptionItem.Create(67_223_011, "FFA_ModifiedVisionDuration", new(1f, 70f, 1f), 5f, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.FFA).SetColor(new Color32(0, 255, 165, byte.MaxValue))
.SetValueFormat(OptionFormat.Seconds);
FFAEnableRandomTwists = BooleanOptionItem.Create(67_223_012, "FFA_EnableRandomTwists", true, TabGroup.GameSettings, false)
FFAEnableRandomTwists = BooleanOptionItem.Create(67_223_012, "FFA_EnableRandomTwists", true, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.FFA)
.SetColor(new Color32(0, 255, 165, byte.MaxValue));
FFAShieldIsOneTimeUse = BooleanOptionItem.Create(67_223_013, "FFA_ShieldIsOneTimeUse", true, TabGroup.GameSettings, false)
FFAShieldIsOneTimeUse = BooleanOptionItem.Create(67_223_013, "FFA_ShieldIsOneTimeUse", true, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.FFA)
.SetColor(new Color32(0, 255, 165, byte.MaxValue));
FFAChatDuringGame = BooleanOptionItem.Create(67_223_014, "FFA_ChatDuringGame", false, TabGroup.GameSettings, false)
FFAChatDuringGame = BooleanOptionItem.Create(67_223_014, "FFA_ChatDuringGame", false, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.FFA)
.SetColor(new Color32(0, 255, 165, byte.MaxValue));
FFATeamMode = BooleanOptionItem.Create(67_223_015, "FFA_TeamMode", false, TabGroup.GameSettings, false)
FFATeamMode = BooleanOptionItem.Create(67_223_015, "FFA_TeamMode", false, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.FFA)
.SetHeader(true)
.SetColor(new Color32(0, 255, 165, byte.MaxValue));
FFATeamNumber = IntegerOptionItem.Create(67_223_016, "FFA_TeamNumber", new(2, 7, 1), 2, TabGroup.GameSettings, false)
FFATeamNumber = IntegerOptionItem.Create(67_223_016, "FFA_TeamNumber", new(2, 7, 1), 2, TabGroup.GameSettings)
.SetParent(FFATeamMode)
.SetGameMode(CustomGameMode.FFA)
.SetColor(new Color32(0, 255, 165, byte.MaxValue));
+2 -2
View File
@@ -13,12 +13,12 @@ namespace EHR.GameMode.HideAndSeekRoles
public static void SetupCustomOption()
{
Options.SetupRoleOptions(69_211_301, TabGroup.NeutralRoles, CustomRoles.Fox, CustomGameMode.HideAndSeek, true);
Vision = FloatOptionItem.Create(69_211_303, "FoxVision", new(0.05f, 5f, 0.05f), 1.25f, TabGroup.NeutralRoles, false)
Vision = FloatOptionItem.Create(69_211_303, "FoxVision", new(0.05f, 5f, 0.05f), 1.25f, TabGroup.NeutralRoles)
.SetGameMode(CustomGameMode.HideAndSeek)
.SetValueFormat(OptionFormat.Multiplier)
.SetColor(new(0, 255, 0, byte.MaxValue))
.SetParent(Options.CustomRoleSpawnChances[CustomRoles.Fox]);
Speed = FloatOptionItem.Create(69_213_304, "FoxSpeed", new(0.05f, 5f, 0.05f), 1.25f, TabGroup.NeutralRoles, false)
Speed = FloatOptionItem.Create(69_213_304, "FoxSpeed", new(0.05f, 5f, 0.05f), 1.25f, TabGroup.NeutralRoles)
.SetGameMode(CustomGameMode.HideAndSeek)
.SetValueFormat(OptionFormat.Multiplier)
.SetColor(new(0, 255, 0, byte.MaxValue))
+3 -3
View File
@@ -18,15 +18,15 @@ namespace EHR.GameMode.HideAndSeekRoles
.SetHeader(true)
.SetColor(new(52, 94, 235, byte.MaxValue));
Vision = FloatOptionItem.Create(69_211_101, "HiderVision", new(0.05f, 5f, 0.05f), 1.25f, TabGroup.CrewmateRoles, false)
Vision = FloatOptionItem.Create(69_211_101, "HiderVision", new(0.05f, 5f, 0.05f), 1.25f, TabGroup.CrewmateRoles)
.SetGameMode(CustomGameMode.HideAndSeek)
.SetValueFormat(OptionFormat.Multiplier)
.SetColor(new(52, 94, 235, byte.MaxValue));
Speed = FloatOptionItem.Create(69_211_102, "HiderSpeed", new(0.05f, 5f, 0.05f), 1.25f, TabGroup.CrewmateRoles, false)
Speed = FloatOptionItem.Create(69_211_102, "HiderSpeed", new(0.05f, 5f, 0.05f), 1.25f, TabGroup.CrewmateRoles)
.SetGameMode(CustomGameMode.HideAndSeek)
.SetValueFormat(OptionFormat.Multiplier)
.SetColor(new(52, 94, 235, byte.MaxValue));
TimeDecreaseOnTaskComplete = IntegerOptionItem.Create(69_211_103, "TimeDecreaseOnTaskComplete", new(0, 60, 1), 5, TabGroup.CrewmateRoles, false)
TimeDecreaseOnTaskComplete = IntegerOptionItem.Create(69_211_103, "TimeDecreaseOnTaskComplete", new(0, 60, 1), 5, TabGroup.CrewmateRoles)
.SetGameMode(CustomGameMode.HideAndSeek)
.SetValueFormat(OptionFormat.Seconds)
.SetColor(new(52, 94, 235, byte.MaxValue));
+4 -4
View File
@@ -19,19 +19,19 @@ namespace EHR.GameMode.HideAndSeekRoles
.SetHeader(true)
.SetColor(new(255, 25, 25, byte.MaxValue));
Vision = FloatOptionItem.Create(69_211_201, "SeekerVision", new(0.05f, 5f, 0.05f), 0.5f, TabGroup.ImpostorRoles, false)
Vision = FloatOptionItem.Create(69_211_201, "SeekerVision", new(0.05f, 5f, 0.05f), 0.5f, TabGroup.ImpostorRoles)
.SetGameMode(CustomGameMode.HideAndSeek)
.SetValueFormat(OptionFormat.Multiplier)
.SetColor(new(255, 25, 25, byte.MaxValue));
Speed = FloatOptionItem.Create(69_211_202, "SeekerSpeed", new(0.05f, 5f, 0.05f), 1.5f, TabGroup.ImpostorRoles, false)
Speed = FloatOptionItem.Create(69_211_202, "SeekerSpeed", new(0.05f, 5f, 0.05f), 1.5f, TabGroup.ImpostorRoles)
.SetGameMode(CustomGameMode.HideAndSeek)
.SetValueFormat(OptionFormat.Multiplier)
.SetColor(new(255, 25, 25, byte.MaxValue));
KillCooldown = FloatOptionItem.Create(69_211_203, "KillCooldown", new(0f, 90f, 1f), 10f, TabGroup.ImpostorRoles, false)
KillCooldown = FloatOptionItem.Create(69_211_203, "KillCooldown", new(0f, 90f, 1f), 10f, TabGroup.ImpostorRoles)
.SetGameMode(CustomGameMode.HideAndSeek)
.SetValueFormat(OptionFormat.Seconds)
.SetColor(new(255, 25, 25, byte.MaxValue));
CanVent = BooleanOptionItem.Create(69_211_204, "CanVent", false, TabGroup.ImpostorRoles, false)
CanVent = BooleanOptionItem.Create(69_211_204, "CanVent", false, TabGroup.ImpostorRoles)
.SetGameMode(CustomGameMode.HideAndSeek)
.SetColor(new(255, 25, 25, byte.MaxValue));
}
+2 -2
View File
@@ -13,12 +13,12 @@ namespace EHR.GameMode.HideAndSeekRoles
public static void SetupCustomOption()
{
Options.SetupRoleOptions(69_211_401, TabGroup.NeutralRoles, CustomRoles.Troll, CustomGameMode.HideAndSeek, true);
Vision = FloatOptionItem.Create(69_211_403, "TrollVision", new(0.05f, 5f, 0.05f), 1.25f, TabGroup.NeutralRoles, false)
Vision = FloatOptionItem.Create(69_211_403, "TrollVision", new(0.05f, 5f, 0.05f), 1.25f, TabGroup.NeutralRoles)
.SetGameMode(CustomGameMode.HideAndSeek)
.SetValueFormat(OptionFormat.Multiplier)
.SetColor(new(255, 0, 255, byte.MaxValue))
.SetParent(Options.CustomRoleSpawnChances[CustomRoles.Troll]);
Speed = FloatOptionItem.Create(69_211_404, "TrollSpeed", new(0.05f, 5f, 0.05f), 1.25f, TabGroup.NeutralRoles, false)
Speed = FloatOptionItem.Create(69_211_404, "TrollSpeed", new(0.05f, 5f, 0.05f), 1.25f, TabGroup.NeutralRoles)
.SetGameMode(CustomGameMode.HideAndSeek)
.SetValueFormat(OptionFormat.Multiplier)
.SetColor(new(255, 0, 255, byte.MaxValue))
+6 -6
View File
@@ -1,7 +1,7 @@
using HarmonyLib;
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using HarmonyLib;
using UnityEngine;
namespace EHR
@@ -23,19 +23,19 @@ namespace EHR
public static void SetupCustomOption()
{
Time = IntegerOptionItem.Create(69_213_001, "HotPotato_Time", new(1, 90, 1), 20, TabGroup.GameSettings, false)
Time = IntegerOptionItem.Create(69_213_001, "HotPotato_Time", new(1, 90, 1), 20, TabGroup.GameSettings)
.SetHeader(true)
.SetGameMode(CustomGameMode.HotPotato)
.SetValueFormat(OptionFormat.Seconds)
.SetColor(new Color32(232, 205, 70, byte.MaxValue));
HolderSpeed = FloatOptionItem.Create(69_213_002, "HotPotato_HolderSpeed", new(0.1f, 5f, 0.1f), 1.5f, TabGroup.GameSettings, false)
HolderSpeed = FloatOptionItem.Create(69_213_002, "HotPotato_HolderSpeed", new(0.1f, 5f, 0.1f), 1.5f, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.HotPotato)
.SetValueFormat(OptionFormat.Multiplier)
.SetColor(new Color32(232, 205, 70, byte.MaxValue));
Chat = BooleanOptionItem.Create(69_213_003, "FFA_ChatDuringGame", false, TabGroup.GameSettings, false)
Chat = BooleanOptionItem.Create(69_213_003, "FFA_ChatDuringGame", false, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.HotPotato)
.SetColor(new Color32(232, 205, 70, byte.MaxValue));
Range = FloatOptionItem.Create(69_213_004, "HotPotato_Range", new(0.25f, 5f, 0.25f), 1f, TabGroup.GameSettings, false)
Range = FloatOptionItem.Create(69_213_004, "HotPotato_Range", new(0.25f, 5f, 0.25f), 1f, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.HotPotato)
.SetValueFormat(OptionFormat.Multiplier)
.SetColor(new Color32(232, 205, 70, byte.MaxValue));
+7 -7
View File
@@ -1,8 +1,8 @@
using EHR.Roles.AddOns.Common;
using HarmonyLib;
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using EHR.Roles.AddOns.Common;
using HarmonyLib;
using UnityEngine;
using static EHR.Translator;
@@ -64,7 +64,7 @@ public class Counter(int totalGreenTime, int totalRedTime, long startTimeStamp,
{
get
{
string result = IsYellow || (Timer == TotalGreenTime && !IsRed && !IsYellow) || (Timer == TotalRedTime && IsRed) ? Utils.ColorString(Color.clear, "00") : Utils.ColorString(IsRed ? Color.red : Color.green, Timer < 10 ? $"0{Timer}" : Timer.ToString());
string result = IsYellow || (Timer == TotalGreenTime && !IsRed && !IsYellow) || (Timer == TotalRedTime && IsRed) ? Utils.ColorString(Color.clear, "00") : Utils.ColorString(IsRed ? Color.red : Color.green, Timer < 10 ? $" {Timer}" : Timer.ToString());
if (Timer is <= 19 and >= 10 && !IsYellow) result = $" {result}";
if (Timer % 10 == 1 && !IsYellow) result = result.Insert(result.Length - 9, " ");
@@ -217,7 +217,7 @@ internal class MoveAndStopManager
private static int DefaultMaxValue => 30;
private static OptionItem CreateSetting(int Id, string direction, bool red, bool min) =>
IntegerOptionItem.Create(Id, CounterSettingString(direction, red, min), CounterValueRule, min ? DefaultMinValue : DefaultMaxValue, TabGroup.GameSettings, false)
IntegerOptionItem.Create(Id, CounterSettingString(direction, red, min), CounterValueRule, min ? DefaultMinValue : DefaultMaxValue, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.MoveAndStop)
.SetColor(new Color32(0, 255, 255, byte.MaxValue))
.SetValueFormat(OptionFormat.Seconds)
@@ -230,7 +230,7 @@ internal class MoveAndStopManager
.AddReplacement(new("Middle", Utils.ColorString(Color.white, "Middle")));
private static OptionItem CreateExtraTimeSetting(int Id, string mapName, int defaultValue) =>
IntegerOptionItem.Create(Id, $"MoveAndStop_ExtraGreenTimeOn{mapName}", ExtraTimeValue, defaultValue, TabGroup.GameSettings, false)
IntegerOptionItem.Create(Id, $"MoveAndStop_ExtraGreenTimeOn{mapName}", ExtraTimeValue, defaultValue, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.MoveAndStop)
.SetColor(new Color32(0, 255, 255, byte.MaxValue))
.SetValueFormat(OptionFormat.Seconds)
@@ -238,7 +238,7 @@ internal class MoveAndStopManager
public static void SetupCustomOption()
{
MoveAndStop_GameTime = IntegerOptionItem.Create(68_213_001, "FFA_GameTime", new(30, 1200, 10), 900, TabGroup.GameSettings, false)
MoveAndStop_GameTime = IntegerOptionItem.Create(68_213_001, "FFA_GameTime", new(30, 1200, 10), 900, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.MoveAndStop)
.SetColor(new Color32(0, 255, 255, byte.MaxValue))
.SetValueFormat(OptionFormat.Seconds)
+13 -13
View File
@@ -1,10 +1,10 @@
using EHR.Modules;
using System;
using System.Collections.Generic;
using System.Linq;
using EHR.Modules;
using EHR.Roles.Neutral;
using HarmonyLib;
using Hazel;
using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using static EHR.RandomSpawn;
@@ -43,40 +43,40 @@ internal static class SoloKombatManager
public static void SetupCustomOption()
{
KB_GameTime = IntegerOptionItem.Create(66_233_001, "KB_GameTime", new(30, 300, 5), 180, TabGroup.GameSettings, false)
KB_GameTime = IntegerOptionItem.Create(66_233_001, "KB_GameTime", new(30, 300, 5), 180, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.SoloKombat)
.SetColor(new Color32(245, 82, 82, byte.MaxValue))
.SetValueFormat(OptionFormat.Seconds)
.SetHeader(true);
KB_ATKCooldown = FloatOptionItem.Create(66_223_008, "KB_ATKCooldown", new(1f, 10f, 0.1f), 1f, TabGroup.GameSettings, false)
KB_ATKCooldown = FloatOptionItem.Create(66_223_008, "KB_ATKCooldown", new(1f, 10f, 0.1f), 1f, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.SoloKombat)
.SetColor(new Color32(245, 82, 82, byte.MaxValue))
.SetValueFormat(OptionFormat.Seconds);
KB_HPMax = FloatOptionItem.Create(66_233_002, "KB_HPMax", new(10f, 990f, 5f), 100f, TabGroup.GameSettings, false)
KB_HPMax = FloatOptionItem.Create(66_233_002, "KB_HPMax", new(10f, 990f, 5f), 100f, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.SoloKombat)
.SetColor(new Color32(245, 82, 82, byte.MaxValue))
.SetValueFormat(OptionFormat.Health);
KB_ATK = FloatOptionItem.Create(66_233_003, "KB_ATK", new(1f, 100f, 1f), 8f, TabGroup.GameSettings, false)
KB_ATK = FloatOptionItem.Create(66_233_003, "KB_ATK", new(1f, 100f, 1f), 8f, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.SoloKombat)
.SetColor(new Color32(245, 82, 82, byte.MaxValue))
.SetValueFormat(OptionFormat.Health);
KB_RecoverPerSecond = FloatOptionItem.Create(66_233_005, "KB_RecoverPerSecond", new(1f, 180f, 1f), 2f, TabGroup.GameSettings, false)
KB_RecoverPerSecond = FloatOptionItem.Create(66_233_005, "KB_RecoverPerSecond", new(1f, 180f, 1f), 2f, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.SoloKombat)
.SetColor(new Color32(245, 82, 82, byte.MaxValue))
.SetValueFormat(OptionFormat.Health);
KB_RecoverAfterSecond = IntegerOptionItem.Create(66_233_004, "KB_RecoverAfterSecond", new(0, 60, 1), 8, TabGroup.GameSettings, false)
KB_RecoverAfterSecond = IntegerOptionItem.Create(66_233_004, "KB_RecoverAfterSecond", new(0, 60, 1), 8, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.SoloKombat)
.SetColor(new Color32(245, 82, 82, byte.MaxValue))
.SetValueFormat(OptionFormat.Seconds);
KB_ResurrectionWaitingTime = IntegerOptionItem.Create(66_233_006, "KB_ResurrectionWaitingTime", new(3, 990, 1), 15, TabGroup.GameSettings, false)
KB_ResurrectionWaitingTime = IntegerOptionItem.Create(66_233_006, "KB_ResurrectionWaitingTime", new(3, 990, 1), 15, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.SoloKombat)
.SetColor(new Color32(245, 82, 82, byte.MaxValue))
.SetValueFormat(OptionFormat.Seconds);
KB_KillBonusMultiplier = FloatOptionItem.Create(66_233_007, "KB_KillBonusMultiplier", new(0.25f, 5f, 0.25f), 1.25f, TabGroup.GameSettings, false)
KB_KillBonusMultiplier = FloatOptionItem.Create(66_233_007, "KB_KillBonusMultiplier", new(0.25f, 5f, 0.25f), 1.25f, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.SoloKombat)
.SetColor(new Color32(245, 82, 82, byte.MaxValue))
.SetValueFormat(OptionFormat.Multiplier);
KB_BootVentWhenDead = BooleanOptionItem.Create(66_233_009, "KB_BootVentWhenDead", false, TabGroup.GameSettings, false)
KB_BootVentWhenDead = BooleanOptionItem.Create(66_233_009, "KB_BootVentWhenDead", false, TabGroup.GameSettings)
.SetGameMode(CustomGameMode.SoloKombat)
.SetColor(new Color32(245, 82, 82, byte.MaxValue));
}
+3 -3
View File
@@ -1,9 +1,9 @@
using AmongUs.GameOptions;
using EHR.Modules;
using Hazel;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using AmongUs.GameOptions;
using EHR.Modules;
using Hazel;
namespace EHR;
+2 -2
View File
@@ -1,5 +1,3 @@
using HarmonyLib;
using InnerNet;
using System;
using System.Collections.Generic;
using System.IO;
@@ -8,6 +6,8 @@ using System.Reflection;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using HarmonyLib;
using InnerNet;
using static EHR.Translator;
namespace EHR;
+1 -1
View File
@@ -1,7 +1,7 @@
using System.Collections.Generic;
using AmongUs.Data;
using EHR.Roles.Impostor;
using EHR.Roles.Neutral;
using System.Collections.Generic;
namespace EHR;
+2 -2
View File
@@ -1,5 +1,5 @@
using BepInEx.Configuration;
using System;
using System;
using BepInEx.Configuration;
using UnityEngine;
using Object = UnityEngine.Object;
+2 -2
View File
@@ -1,9 +1,9 @@
using HarmonyLib;
using System;
using System;
using System.IO;
using System.Net.Sockets;
using System.Reflection;
using System.Text;
using HarmonyLib;
namespace EHR;
+3 -3
View File
@@ -1,8 +1,8 @@
using AmongUs.GameOptions;
using System.Collections.Generic;
using System.Linq;
using AmongUs.GameOptions;
using EHR.Roles.Impostor;
using HarmonyLib;
using System.Collections.Generic;
using System.Linq;
namespace EHR.Modules;
+35 -10
View File
@@ -1,11 +1,11 @@
using AmongUs.GameOptions;
using EHR.Roles.Crewmate;
using EHR.Roles.Impostor;
using EHR.Roles.Neutral;
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using AmongUs.GameOptions;
using EHR.Roles.Crewmate;
using EHR.Roles.Impostor;
using EHR.Roles.Neutral;
using UnityEngine;
namespace EHR;
@@ -99,6 +99,7 @@ internal static class CustomRolesHelper
CustomRoles.Dictator => CustomRoles.Crewmate,
CustomRoles.Inhibitor => CustomRoles.Impostor,
CustomRoles.Kidnapper => CustomRoles.Shapeshifter,
CustomRoles.Generator => CustomRoles.Shapeshifter,
CustomRoles.Blackmailer => CustomRoles.Impostor,
CustomRoles.Commander => CustomRoles.Shapeshifter,
CustomRoles.Freezer => CustomRoles.Shapeshifter,
@@ -170,6 +171,7 @@ internal static class CustomRolesHelper
CustomRoles.Altruist => CustomRoles.Crewmate,
CustomRoles.Transmitter => CustomRoles.Crewmate,
CustomRoles.Autocrat => CustomRoles.Crewmate,
CustomRoles.Sentry => CustomRoles.Crewmate,
CustomRoles.Perceiver => UsePets ? CustomRoles.Crewmate : CustomRoles.Engineer,
CustomRoles.Convener => UsePets ? CustomRoles.Crewmate : CustomRoles.Engineer,
CustomRoles.Mathematician => CustomRoles.Crewmate,
@@ -183,7 +185,7 @@ internal static class CustomRolesHelper
CustomRoles.Escort => UsePets && Escort.UsePet.GetBool() ? CustomRoles.Crewmate : CustomRoles.Impostor,
CustomRoles.DonutDelivery => UsePets && DonutDelivery.UsePet.GetBool() ? CustomRoles.Crewmate : CustomRoles.Impostor,
CustomRoles.Gaulois => UsePets && Gaulois.UsePet.GetBool() ? CustomRoles.Crewmate : CustomRoles.Impostor,
CustomRoles.Analyzer => UsePets && Analyzer.UsePet.GetBool() ? CustomRoles.Crewmate : CustomRoles.Impostor,
CustomRoles.Analyst => UsePets && Analyst.UsePet.GetBool() ? CustomRoles.Crewmate : CustomRoles.Impostor,
CustomRoles.Escapee => UsePets ? CustomRoles.Impostor : CustomRoles.Shapeshifter,
CustomRoles.NiceGuesser => CustomRoles.Crewmate,
CustomRoles.EvilGuesser => CustomRoles.Impostor,
@@ -230,6 +232,7 @@ internal static class CustomRolesHelper
CustomRoles.Bard => CustomRoles.Impostor,
CustomRoles.Swooper => CustomRoles.Impostor,
CustomRoles.Crewpostor => CustomRoles.Engineer,
CustomRoles.Cherokious => CustomRoles.Engineer,
CustomRoles.Observer => CustomRoles.Crewmate,
CustomRoles.DovesOfNeace => UsePets ? CustomRoles.Crewmate : CustomRoles.Engineer,
CustomRoles.Disperser => UsePets ? CustomRoles.Impostor : CustomRoles.Shapeshifter,
@@ -312,7 +315,7 @@ internal static class CustomRolesHelper
CustomRoles.Escort => UsePets && Escort.UsePet.GetBool() ? RoleTypes.GuardianAngel : RoleTypes.Impostor,
CustomRoles.DonutDelivery => UsePets && DonutDelivery.UsePet.GetBool() ? RoleTypes.GuardianAngel : RoleTypes.Impostor,
CustomRoles.Gaulois => UsePets && Gaulois.UsePet.GetBool() ? RoleTypes.GuardianAngel : RoleTypes.Impostor,
CustomRoles.Analyzer => UsePets && Analyzer.UsePet.GetBool() ? RoleTypes.GuardianAngel : RoleTypes.Impostor,
CustomRoles.Analyst => UsePets && Analyst.UsePet.GetBool() ? RoleTypes.GuardianAngel : RoleTypes.Impostor,
CustomRoles.Witness => UsePets && Options.WitnessUsePet.GetBool() ? RoleTypes.GuardianAngel : RoleTypes.Impostor,
CustomRoles.Pursuer => RoleTypes.Impostor,
CustomRoles.Revolutionist => RoleTypes.Impostor,
@@ -330,6 +333,8 @@ internal static class CustomRolesHelper
CustomRoles.BloodKnight => RoleTypes.Impostor,
CustomRoles.Poisoner => RoleTypes.Impostor,
CustomRoles.NSerialKiller => RoleTypes.Impostor,
CustomRoles.Samurai => RoleTypes.Impostor,
CustomRoles.Bargainer => RoleTypes.Impostor,
CustomRoles.Tiger => RoleTypes.Impostor,
CustomRoles.SoulHunter => RoleTypes.Impostor,
CustomRoles.Enderman => RoleTypes.Impostor,
@@ -339,6 +344,7 @@ internal static class CustomRolesHelper
CustomRoles.Sprayer => RoleTypes.Impostor,
CustomRoles.PlagueDoctor => RoleTypes.Impostor,
CustomRoles.Postman => RoleTypes.Impostor,
CustomRoles.SchrodingersCat => RoleTypes.Impostor,
CustomRoles.Impartial => RoleTypes.Impostor,
CustomRoles.Predator => RoleTypes.Impostor,
CustomRoles.Reckless => RoleTypes.Impostor,
@@ -377,6 +383,7 @@ internal static class CustomRolesHelper
public static bool IsNonNK(this CustomRoles role) => role is
CustomRoles.Jester or
CustomRoles.Postman or
CustomRoles.SchrodingersCat or
CustomRoles.Impartial or
CustomRoles.Predator or
CustomRoles.SoulHunter or
@@ -413,6 +420,7 @@ internal static class CustomRolesHelper
CustomRoles.Succubus or
CustomRoles.Gamer or
CustomRoles.Crewpostor or
CustomRoles.Cherokious or
CustomRoles.Necromancer or
CustomRoles.Agitater or
CustomRoles.Wraith or
@@ -427,6 +435,8 @@ internal static class CustomRolesHelper
CustomRoles.Refugee or
CustomRoles.Parasite or
CustomRoles.NSerialKiller or
CustomRoles.Samurai or
CustomRoles.Bargainer or
CustomRoles.Tiger or
CustomRoles.Enderman or
CustomRoles.Mycologist or
@@ -477,6 +487,7 @@ internal static class CustomRolesHelper
CustomRoles.Amnesiac or
CustomRoles.God or
CustomRoles.Postman or
CustomRoles.SchrodingersCat or
CustomRoles.Predator or
CustomRoles.Pursuer or
CustomRoles.FFF or
@@ -533,6 +544,7 @@ internal static class CustomRolesHelper
CustomRoles.Underdog or
CustomRoles.Inhibitor or
CustomRoles.Kidnapper or
CustomRoles.Generator or
CustomRoles.Blackmailer or
CustomRoles.Commander or
CustomRoles.Freezer or
@@ -631,7 +643,7 @@ internal static class CustomRolesHelper
CustomRoles.Escort or
CustomRoles.DonutDelivery or
CustomRoles.Gaulois or
CustomRoles.Analyzer or
CustomRoles.Analyst or
CustomRoles.Witness or
CustomRoles.Monarch or
CustomRoles.Jailor or
@@ -654,7 +666,7 @@ internal static class CustomRolesHelper
CustomRoles.Aid when Aid.UsePet.GetBool() => true,
CustomRoles.Escort when Escort.UsePet.GetBool() => true,
CustomRoles.DonutDelivery when DonutDelivery.UsePet.GetBool() => true,
CustomRoles.Analyzer when Analyzer.UsePet.GetBool() => true,
CustomRoles.Analyst when Analyst.UsePet.GetBool() => true,
CustomRoles.Jailor when Jailor.UsePet.GetBool() => true,
CustomRoles.Sheriff when Sheriff.UsePet.GetBool() => true,
CustomRoles.SwordsMan when SwordsMan.UsePet.GetBool() => true,
@@ -678,7 +690,9 @@ internal static class CustomRolesHelper
CustomRoles.Tunneler,
CustomRoles.Tornado,
CustomRoles.Swiftclaw,
CustomRoles.Adventurer
CustomRoles.Adventurer,
CustomRoles.Sentry,
CustomRoles.Cherokious
];
public static bool OnlySpawnsWithPets(this CustomRoles role) => OnlySpawnsWithPetsRoleList.Contains(role);
@@ -737,6 +751,10 @@ internal static class CustomRolesHelper
CustomRoles.Pickpocket or
CustomRoles.TicketsStealer;
public static bool ForceCancelShapeshift(this CustomRoles role) => role is
CustomRoles.Hangman or
CustomRoles.Generator;
public static bool CheckAddonConflictV2(CustomRoles addon, CustomRoles mainRole) => addon.IsAdditionRole() && mainRole is not CustomRoles.GuardianAngelEHR and not CustomRoles.God and not CustomRoles.GM && addon switch
{
CustomRoles.Autopsy when mainRole is CustomRoles.Doctor or CustomRoles.Tracefinder or CustomRoles.Scientist or CustomRoles.ScientistEHR or CustomRoles.Sunnyboy => false,
@@ -1142,6 +1160,8 @@ internal static class CustomRolesHelper
CustomRoles.PlagueBearer => CountTypes.PlagueBearer,
CustomRoles.Parasite => CountTypes.Impostor,
CustomRoles.NSerialKiller => CountTypes.NSerialKiller,
CustomRoles.Samurai => CountTypes.Samurai,
CustomRoles.Bargainer => CountTypes.Bargainer,
CustomRoles.Tiger => CountTypes.Tiger,
CustomRoles.Enderman => CountTypes.Enderman,
CustomRoles.Mycologist => CountTypes.Mycologist,
@@ -1171,8 +1191,10 @@ internal static class CustomRolesHelper
CustomRoles.Refugee => CountTypes.Impostor,
CustomRoles.Glitch => CountTypes.Glitch,
CustomRoles.Spiritcaller => CountTypes.Spiritcaller,
CustomRoles.Cherokious => CountTypes.Cherokious,
CustomRoles.DarkHide => DarkHide.SnatchesWin.GetBool() ? CountTypes.Crew : CountTypes.DarkHide,
CustomRoles.Arsonist => !Options.ArsonistCanIgniteAnytime.GetBool() ? CountTypes.Crew : CountTypes.Arsonist,
CustomRoles.SchrodingersCat => SchrodingersCat.WinsWithCrewIfNotAttacked.GetBool() ? CountTypes.Crew : CountTypes.OutOfGame,
_ => role.Is(Team.Impostor) ? CountTypes.Impostor : CountTypes.Crew
};
@@ -1289,6 +1311,8 @@ public enum CountTypes
HexMaster,
Wraith,
NSerialKiller,
Samurai,
Bargainer,
Tiger,
Enderman,
Mycologist,
@@ -1321,5 +1345,6 @@ public enum CountTypes
Pestilence,
PlagueBearer,
Glitch,
Arsonist
Arsonist,
Cherokious
}
+2 -2
View File
@@ -1,9 +1,9 @@
using System;
using System.Diagnostics.CodeAnalysis;
using AmongUs.GameOptions;
using Hazel;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
using InnerNet;
using System;
using System.Diagnostics.CodeAnalysis;
namespace EHR;
+2 -2
View File
@@ -1,8 +1,8 @@
using Hazel;
using System;
using System;
using System.IO;
using System.Reflection;
using System.Runtime.InteropServices;
using Hazel;
namespace EHR.Modules;
+26 -19
View File
@@ -1,8 +1,8 @@
using HarmonyLib;
using System;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using HarmonyLib;
namespace EHR.Modules
{
@@ -86,26 +86,33 @@ namespace EHR.Modules
{
if (CustomTeams.Count == 0 || CustomTeamPlayerIds.Count == 0) return false;
CustomTeamPlayerIds.Do(x => x.Value.RemoveWhere(p =>
try
{
var pc = Utils.GetPlayerById(p);
return pc == null || pc.Data.Disconnected;
}));
var aliveTeamPlayers = CustomTeamPlayerIds.ToDictionary(x => x.Key, x => x.Value);
aliveTeamPlayers.Do(x => x.Value.RemoveWhere(p => !Utils.GetPlayerById(p).IsAlive()));
var team = aliveTeamPlayers.Keys.First();
if (aliveTeamPlayers.Count == 1 && Main.AllAlivePlayerControls.All(x =>
CustomTeamPlayerIds.Do(x => x.Value.RemoveWhere(p =>
{
var customTeam = GetCustomTeam(x.PlayerId);
return customTeam != null && customTeam.Equals(team);
}))
var pc = Utils.GetPlayerById(p);
return pc == null || pc.Data.Disconnected;
}));
var aliveTeamPlayers = CustomTeamPlayerIds.ToDictionary(x => x.Key, x => x.Value);
aliveTeamPlayers.Do(x => x.Value.RemoveWhere(p => !Utils.GetPlayerById(p).IsAlive()));
var team = aliveTeamPlayers.Keys.First();
if (aliveTeamPlayers.Count == 1 && Main.AllAlivePlayerControls.All(x =>
{
var customTeam = GetCustomTeam(x.PlayerId);
return customTeam != null && customTeam.Equals(team);
}))
{
WinnerTeam = team;
CustomWinnerHolder.ResetAndSetWinner(CustomWinner.CustomTeam);
CustomWinnerHolder.WinnerIds = aliveTeamPlayers.Values.First();
return true;
}
}
catch
{
WinnerTeam = team;
CustomWinnerHolder.ResetAndSetWinner(CustomWinner.CustomTeam);
CustomWinnerHolder.WinnerIds = aliveTeamPlayers.Values.First();
return true;
return false;
}
return false;
+1 -1
View File
@@ -1,5 +1,5 @@
using Hazel;
using System.Collections.Generic;
using Hazel;
namespace EHR;
+2 -7
View File
@@ -4,30 +4,25 @@ namespace EHR;
public static class DebugModeManager
{
// これが有効の時、通常のゲームに支障のないデバッグ機能(詳細ログ・ゲーム外でのデバッグ表示など)が有効化される。
// また、ゲーム内オプションでデバッグモードを有効化することができる。
public static bool AmDebugger { get; private set; } =
#if DEBUG
true;
true;
#else
false;
#endif
// これが有効の時、通常のゲームを破壊する可能性のある強力なデバッグ機能(テレポートなど)が有効化される。
public static bool IsDebugMode => AmDebugger && EnableDebugMode != null && EnableDebugMode.GetBool();
public static OptionItem EnableDebugMode;
public static void Auth(HashAuth auth, string input)
{
// AmDebugger = デバッグビルドである || デバッグキー認証が通った
AmDebugger = AmDebugger || auth.CheckString(input);
}
public static void SetupCustomOption()
{
EnableDebugMode = BooleanOptionItem.Create(2, "EnableDebugMode", false, TabGroup.SystemSettings, true)
.SetHeader(true)
.SetColor(Color.green)
.SetHeader(true)
.SetHidden(!AmDebugger);
}
}
+1 -1
View File
@@ -1,4 +1,3 @@
using EHR.Modules;
using System;
using System.Collections.Generic;
using System.Diagnostics;
@@ -6,6 +5,7 @@ using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Net.Http;
using System.Runtime.CompilerServices;
using EHR.Modules;
using LogLevel = BepInEx.Logging.LogLevel;
namespace EHR;
+1 -1
View File
@@ -1,6 +1,6 @@
using HarmonyLib;
using System;
using System.Collections.Generic;
using HarmonyLib;
using UnityEngine;
using Object = UnityEngine.Object;
+5 -5
View File
@@ -1,11 +1,11 @@
using AmongUs.GameOptions;
using EHR.Modules;
using Hazel;
using InnerNet;
using System;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using AmongUs.GameOptions;
using EHR.Modules;
using Hazel;
using InnerNet;
using static EHR.Translator;
namespace EHR;
+13 -12
View File
@@ -1,3 +1,8 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using AmongUs.GameOptions;
using EHR.Modules;
using EHR.Patches;
@@ -9,11 +14,6 @@ using EHR.Roles.Neutral;
using HarmonyLib;
using Hazel;
using InnerNet;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using UnityEngine;
using static EHR.Translator;
using static EHR.Utils;
@@ -256,22 +256,23 @@ static class ExtendedPlayerControl
public static float GetAbilityUseLimit(this PlayerControl pc) => Main.AbilityUseLimit.GetValueOrDefault(pc.PlayerId, float.NaN);
public static float GetAbilityUseLimit(this byte playerId) => Main.AbilityUseLimit.GetValueOrDefault(playerId, float.NaN);
public static void RpcRemoveAbilityUse(this PlayerControl pc)
public static void RpcRemoveAbilityUse(this PlayerControl pc, bool log = true)
{
float current = pc.GetAbilityUseLimit();
if (float.IsNaN(current) || current <= 0f) return;
pc.SetAbilityUseLimit(current - 1);
pc.SetAbilityUseLimit(current - 1, log: log);
}
public static void RpcIncreaseAbilityUseLimitBy(this PlayerControl pc, float get)
public static void RpcIncreaseAbilityUseLimitBy(this PlayerControl pc, float get, bool log = true)
{
float current = pc.GetAbilityUseLimit();
if (float.IsNaN(current)) return;
pc.SetAbilityUseLimit(current + get);
pc.SetAbilityUseLimit(current + get, log: log);
}
public static void SetAbilityUseLimit(this PlayerControl pc, float limit, bool rpc = true) => pc.PlayerId.SetAbilityUseLimit(limit, rpc);
public static void SetAbilityUseLimit(this PlayerControl pc, float limit, bool rpc = true, bool log = true) => pc.PlayerId.SetAbilityUseLimit(limit, rpc, log);
public static void SetAbilityUseLimit(this byte playerId, float limit, bool rpc = true)
public static void SetAbilityUseLimit(this byte playerId, float limit, bool rpc = true, bool log = true)
{
if (float.IsNaN(limit) || limit is < 0f or > 100f || (Main.AbilityUseLimit.TryGetValue(playerId, out var beforeLimit) && Math.Abs(beforeLimit - limit) < 0.01f)) return;
@@ -287,7 +288,7 @@ static class ExtendedPlayerControl
var pc = GetPlayerById(playerId);
NotifyRoles(SpecifySeer: pc, SpecifyTarget: pc);
Logger.Info($" {pc.GetNameWithRole()} => {Math.Round(limit, 1)}", "SetAbilityUseLimit");
if (log) Logger.Info($" {pc.GetNameWithRole()} => {Math.Round(limit, 1)}", "SetAbilityUseLimit");
}
public static void Suicide(this PlayerControl pc, PlayerState.DeathReason deathReason = PlayerState.DeathReason.Suicide, PlayerControl realKiller = null)
@@ -1,9 +1,9 @@
using System;
using System.Collections.Generic;
using AmongUs.GameOptions;
using Hazel;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
using InnerNet;
using System;
using System.Collections.Generic;
using Array = Il2CppSystem.Array;
using Buffer = Il2CppSystem.Buffer;
@@ -1,5 +1,5 @@
using AmongUs.GameOptions;
using System;
using AmongUs.GameOptions;
namespace EHR.Modules;
@@ -14,19 +14,19 @@ public class NormalGameOptionsSender : GameOptionsSender
{
try
{
if (_logicOptions == null || !GameManager.Instance.LogicComponents.Contains(_logicOptions))
if (GameManager.Instance != null && GameManager.Instance.LogicComponents != null && (_logicOptions == null || !GameManager.Instance.LogicComponents.Contains(_logicOptions)))
{
foreach (var glc in GameManager.Instance?.LogicComponents)
foreach (var glc in GameManager.Instance.LogicComponents)
if (glc.TryCast<LogicOptions>(out var lo))
_logicOptions = lo;
}
return _logicOptions != null && _logicOptions.IsDirty;
return _logicOptions is { IsDirty: true };
}
catch (Exception ex)
{
Logger.Fatal(ex.ToString(), "NormalGameOptionsSender.IsDirty.Get");
return _logicOptions != null && _logicOptions.IsDirty;
Logger.Error(ex.ToString(), "NormalGameOptionsSender.IsDirty.Get");
return _logicOptions is { IsDirty: true };
}
}
protected set { _logicOptions?.ClearDirtyFlag(); }
@@ -1,4 +1,6 @@
using AmongUs.GameOptions;
using System;
using System.Linq;
using AmongUs.GameOptions;
using EHR.Roles.AddOns.GhostRoles;
using EHR.Roles.Crewmate;
using EHR.Roles.Impostor;
@@ -6,8 +8,6 @@ using EHR.Roles.Neutral;
using Hazel;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
using InnerNet;
using System;
using System.Linq;
using Mathf = UnityEngine.Mathf;
namespace EHR.Modules;
+3 -3
View File
@@ -1,3 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using AmongUs.GameOptions;
using EHR.Modules;
using EHR.Roles.AddOns.Crewmate;
@@ -7,9 +10,6 @@ using EHR.Roles.Impostor;
using EHR.Roles.Neutral;
using HarmonyLib;
using InnerNet;
using System;
using System.Collections.Generic;
using System.Linq;
namespace EHR;
+4 -4
View File
@@ -1,10 +1,10 @@
using AmongUs.GameOptions;
using EHR.Roles.AddOns.GhostRoles;
using HarmonyLib;
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using AmongUs.GameOptions;
using EHR.Roles.AddOns.GhostRoles;
using HarmonyLib;
namespace EHR.Modules
{
+5 -5
View File
@@ -1,13 +1,13 @@
using EHR.Modules;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using EHR.Modules;
using EHR.Roles.AddOns.Common;
using EHR.Roles.Crewmate;
using EHR.Roles.Neutral;
using HarmonyLib;
using Hazel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using TMPro;
using UnityEngine;
using UnityEngine.Events;
+2 -2
View File
@@ -1,6 +1,6 @@
using EHR.Patches;
using System;
using EHR.Patches;
using Rewired.Utils;
using System;
using UnityEngine;
using Object = UnityEngine.Object;
+2 -2
View File
@@ -1,7 +1,7 @@
using AmongUs.GameOptions;
using System;
using AmongUs.GameOptions;
using EHR.Roles.Crewmate;
using EHR.Roles.Impostor;
using System;
namespace EHR.Modules;
+3 -3
View File
@@ -1,11 +1,11 @@
using HarmonyLib;
using Newtonsoft.Json.Linq;
using System;
using System;
using System.IO;
using System.IO.Compression;
using System.Net.Http;
using System.Reflection;
using System.Threading.Tasks;
using HarmonyLib;
using Newtonsoft.Json.Linq;
using Twitch;
using UnityEngine;
using static EHR.Translator;
+2 -2
View File
@@ -1,3 +1,4 @@
using System.Linq;
using EHR.Modules;
using EHR.Roles.AddOns.Common;
using EHR.Roles.AddOns.GhostRoles;
@@ -5,7 +6,6 @@ using EHR.Roles.Crewmate;
using EHR.Roles.Impostor;
using EHR.Roles.Neutral;
using Hazel;
using System.Linq;
namespace EHR;
@@ -71,7 +71,7 @@ public static class NameColorManager
}
// Custom Teams
if (CustomTeamManager.AreInSameCustomTeam(seer.PlayerId, target.PlayerId)) color = Main.RoleColors[target.GetCustomRole()];
if (CustomTeamManager.AreInSameCustomTeam(seer.PlayerId, target.PlayerId) && Options.CTAPlayersCanSeeEachOthersRoles.GetBool()) color = Main.RoleColors[target.GetCustomRole()];
// Add-ons
if (seer.Is(CustomRoles.Rogue) && target.Is(CustomRoles.Rogue) && Options.RogueKnowEachOther.GetBool()) color = Main.RoleColors[CustomRoles.Rogue];
+2 -2
View File
@@ -1,6 +1,6 @@
using EHR.Modules;
using System.Collections.Generic;
using EHR.Modules;
using Hazel;
using System.Collections.Generic;
using UnityEngine;
namespace EHR;
+1 -1
View File
@@ -1,8 +1,8 @@
using AmongUs.GameOptions;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using AmongUs.GameOptions;
namespace EHR;
+1 -1
View File
@@ -1,5 +1,5 @@
using AmongUs.GameOptions;
using System;
using AmongUs.GameOptions;
namespace EHR;
+322 -292
View File
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -6,7 +6,7 @@ public class BooleanOptionItem(int id, string name, bool defaultValue, TabGroup
public const string TEXT_false = "ColoredOff";
public static BooleanOptionItem Create(
int id, string name, bool defaultValue, TabGroup tab, bool isSingleValue
int id, string name, bool defaultValue, TabGroup tab, bool isSingleValue = false
)
{
return new(
+1 -1
View File
@@ -6,7 +6,7 @@ public class FloatOptionItem(int id, string name, float defaultValue, TabGroup t
public FloatValueRule Rule = rule;
public static FloatOptionItem Create(
int id, string name, FloatValueRule rule, float defaultValue, TabGroup tab, bool isSingleValue
int id, string name, FloatValueRule rule, float defaultValue, TabGroup tab, bool isSingleValue = false
)
{
return new(
+1 -1
View File
@@ -6,7 +6,7 @@ public class IntegerOptionItem(int id, string name, int defaultValue, TabGroup t
public IntegerValueRule Rule = rule;
public static IntegerOptionItem Create(
int id, string name, IntegerValueRule rule, int defaultValue, TabGroup tab, bool isSingleValue
int id, string name, IntegerValueRule rule, int defaultValue, TabGroup tab, bool isSingleValue = false
)
{
return new(
+2 -2
View File
@@ -1,7 +1,7 @@
using EHR.Modules;
using System;
using System.Collections.Generic;
using System.Linq;
using EHR.Modules;
using UnityEngine;
namespace EHR;
@@ -166,7 +166,7 @@ public abstract class OptionItem
return disableColor ? Translator.GetString(Name, ReplacementDictionary, console) : Utils.ColorString(NameColor, Translator.GetString(Name, ReplacementDictionary));
}
public virtual bool GetBool() => CurrentValue != 0 && (Parent == null || Parent.GetBool());
public virtual bool GetBool() => Name == "Bargainer.LensOfTruth.DurationSwitch" ? GetValue() == 3 : CurrentValue != 0 && (Parent == null || Parent.GetBool());
public virtual int GetInt() => CurrentValue;
public virtual float GetFloat() => CurrentValue;
+1 -1
View File
@@ -5,7 +5,7 @@ public class StringOptionItem(int id, string name, int defaultValue, TabGroup ta
public IntegerValueRule Rule = (0, selections.Length - 1, 1);
public string[] Selections = selections;
public static StringOptionItem Create(int id, string name, string[] selections, int defaultIndex, TabGroup tab, bool isSingleValue, bool noTranslation = false)
public static StringOptionItem Create(int id, string name, string[] selections, int defaultIndex, TabGroup tab, bool isSingleValue = false, bool noTranslation = false)
=> new(id, name, defaultIndex, tab, isSingleValue, selections, noTranslation);
// Getter
+2 -2
View File
@@ -6,8 +6,8 @@ public class TextOptionItem : OptionItem
public IntegerValueRule Rule;
// コンストラクタ
public TextOptionItem(int id, string name, int defaultValue, TabGroup tab, bool isSingleValue)
: base(id, name, defaultValue, tab, isSingleValue)
public TextOptionItem(int id, string name, int defaultValue, TabGroup tab, bool isSingleValue = false)
: base(id, name, defaultValue, tab, isSingleValue)
{
IsText = true;
IsHeader = true;
+4 -4
View File
@@ -1,3 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using AmongUs.GameOptions;
using EHR.Roles.AddOns.Crewmate;
using EHR.Roles.AddOns.Impostor;
@@ -7,10 +11,6 @@ using EHR.Roles.Neutral;
using HarmonyLib;
using Hazel;
using InnerNet;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using static EHR.Translator;
namespace EHR.Modules;
+3 -3
View File
@@ -1,10 +1,10 @@
using HarmonyLib;
using Il2CppInterop.Runtime.InteropTypes;
using System;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Linq.Expressions;
using HarmonyLib;
using Il2CppInterop.Runtime.InteropTypes;
namespace EHR;
+3 -3
View File
@@ -1,6 +1,3 @@
using AmongUs.Data;
using HarmonyLib;
using InnerNet;
using System;
using System.Collections.Generic;
using System.Globalization;
@@ -9,6 +6,9 @@ using System.Linq;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using AmongUs.Data;
using HarmonyLib;
using InnerNet;
using UnityEngine;
using static EHR.Translator;
+2 -2
View File
@@ -1,5 +1,3 @@
using HarmonyLib;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
using System;
using System.Collections.Generic;
using System.Globalization;
@@ -9,6 +7,8 @@ using System.Reflection;
using System.Text;
using System.Text.Json;
using System.Text.RegularExpressions;
using HarmonyLib;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
using Object = Il2CppSystem.Object;
namespace EHR;
+55 -19
View File
@@ -1,3 +1,12 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using AmongUs.Data;
using AmongUs.GameOptions;
using EHR.Modules;
@@ -12,15 +21,6 @@ using HarmonyLib;
using Hazel;
using Il2CppInterop.Runtime.InteropTypes;
using InnerNet;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using UnityEngine;
using static EHR.Translator;
using Object = UnityEngine.Object;
@@ -518,6 +518,8 @@ public static class Utils
case CustomRoles.Eclipse:
case CustomRoles.Pyromaniac:
case CustomRoles.NSerialKiller:
case CustomRoles.Samurai:
case CustomRoles.Bargainer:
case CustomRoles.Tiger:
case CustomRoles.SoulHunter:
case CustomRoles.Enderman:
@@ -528,6 +530,7 @@ public static class Utils
case CustomRoles.Doppelganger:
case CustomRoles.PlagueDoctor:
case CustomRoles.Postman:
case CustomRoles.SchrodingersCat:
case CustomRoles.Impartial:
case CustomRoles.Predator:
case CustomRoles.Reckless:
@@ -586,7 +589,7 @@ public static class Utils
case CustomRoles.Escort when !Options.UsePets.GetBool() || !Escort.UsePet.GetBool():
case CustomRoles.DonutDelivery when !Options.UsePets.GetBool() || !DonutDelivery.UsePet.GetBool():
case CustomRoles.Gaulois when !Options.UsePets.GetBool() || !Gaulois.UsePet.GetBool():
case CustomRoles.Analyzer when !Options.UsePets.GetBool() || !Analyzer.UsePet.GetBool():
case CustomRoles.Analyst when !Options.UsePets.GetBool() || !Analyst.UsePet.GetBool():
case CustomRoles.Witness when !Options.UsePets.GetBool() || !Options.WitnessUsePet.GetBool():
case CustomRoles.Pursuer:
case CustomRoles.Spiritcaller:
@@ -606,6 +609,7 @@ public static class Utils
if (ForRecompute)
hasTasks = false;
break;
case CustomRoles.Cherokious:
case CustomRoles.Crewpostor:
if (ForRecompute && !p.IsDead)
hasTasks = false;
@@ -703,7 +707,8 @@ public static class Utils
__instance.Is(CustomRoleTypes.Impostor) && PlayerControl.LocalPlayer.Is(CustomRoles.Crewpostor) && Options.AlliesKnowCrewpostor.GetBool() ||
__instance.Is(CustomRoleTypes.Impostor) && PlayerControl.LocalPlayer.Is(CustomRoleTypes.Impostor) && Options.ImpKnowAlliesRole.GetBool() ||
__instance.Is(CustomRoleTypes.Impostor) && PlayerControl.LocalPlayer.Is(CustomRoles.Madmate) && Options.MadmateKnowWhosImp.GetBool() ||
CustomTeamManager.AreInSameCustomTeam(__instance.PlayerId, PlayerControl.LocalPlayer.PlayerId) ||
CustomTeamManager.AreInSameCustomTeam(__instance.PlayerId, PlayerControl.LocalPlayer.PlayerId) && Options.CTAPlayersCanSeeEachOthersRoles.GetBool() ||
Bargainer.KnowRole(PlayerControl.LocalPlayer, __instance) ||
Adventurer.KnowRole(PlayerControl.LocalPlayer, __instance) ||
Totocalcio.KnowRole(PlayerControl.LocalPlayer, __instance) ||
Romantic.KnowRole(PlayerControl.LocalPlayer, __instance) ||
@@ -805,8 +810,15 @@ public static class Utils
NonCompleteColor = Workhorse.RoleColor;
var NormalColor = taskState.IsTaskFinished ? TaskCompleteColor : NonCompleteColor;
if (Main.PlayerStates.TryGetValue(playerId, out var ps) && ps.MainRole == CustomRoles.Crewpostor)
NormalColor = Color.red;
if (Main.PlayerStates.TryGetValue(playerId, out var ps))
{
NormalColor = ps.MainRole switch
{
CustomRoles.Crewpostor => Color.red,
CustomRoles.Cherokious => GetRoleColor(CustomRoles.Cherokious),
_ => NormalColor
};
}
Color TextColor = comms ? Color.gray : NormalColor;
string Completed = comms ? "?" : $"{taskState.CompletedTasksCount}";
@@ -1620,6 +1632,7 @@ public static class Utils
if (devUser.HasTag() || isMod)
{
string tag = devUser.GetTag();
if (tag == "null") tag = string.Empty;
if (player.AmOwner || player.IsModClient())
name = tag + (isMod ? ("<size=1.4>" + GetString("ModeratorTag") + "\r\n</size>") : string.Empty) + name;
else name = tag.Replace("\r\n", " - ") + (isMod ? ("<size=1.4>" + GetString("ModeratorTag") + " - </size>") : string.Empty) + name;
@@ -1801,6 +1814,8 @@ public static class Utils
SelfSuffix.Append(Deathpact.GetDeathpactPlayerArrow(seer));
SelfSuffix.Append(Commander.GetSuffixText(seer, seer));
SelfSuffix.Append(AntiAdminer.GetSuffixText(seer));
SelfSuffix.Append(Roles.Impostor.Sentry.GetSuffix(seer));
SelfSuffix.Append(Bargainer.GetSuffix(seer));
switch (seer.GetCustomRole())
{
@@ -1932,6 +1947,9 @@ public static class Utils
string SeerRealName = seer.GetRealName(isForMeeting);
if (Options.CurrentGameMode == CustomGameMode.FFA && FFAManager.FFATeamMode.GetBool())
SeerRealName = SeerRealName.ApplyNameColorData(seer, seer, isForMeeting);
if (!isForMeeting && MeetingStates.FirstMeeting && Options.ChangeNameToRoleInfo.GetBool() && Options.CurrentGameMode is not CustomGameMode.FFA and not CustomGameMode.MoveAndStop and not CustomGameMode.HotPotato)
{
var team = CustomTeamManager.GetCustomTeam(seer.PlayerId);
@@ -2105,10 +2123,17 @@ public static class Utils
}
break;
case CustomRoles.Analyzer:
if ((Main.PlayerStates[seer.PlayerId].Role as Analyzer).CurrentTarget.ID == target.PlayerId)
case CustomRoles.Analyst:
if ((Main.PlayerStates[seer.PlayerId].Role as Analyst).CurrentTarget.ID == target.PlayerId)
{
TargetMark.Append($"<color={GetRoleColorCode(CustomRoles.Analyzer)}>○</color>");
TargetMark.Append($"<color={GetRoleColorCode(CustomRoles.Analyst)}>○</color>");
}
break;
case CustomRoles.Samurai: // Same as Analyst
if ((Main.PlayerStates[seer.PlayerId].Role as Samurai).Target.Id == target.PlayerId)
{
TargetMark.Append($"<color={GetRoleColorCode(CustomRoles.Samurai)}>○</color>");
}
break;
@@ -2138,7 +2163,8 @@ public static class Utils
(target.Is(CustomRoles.Mayor) && Mayor.MayorRevealWhenDoneTasks.GetBool() && target.GetTaskState().IsTaskFinished) ||
(seer.Is(CustomRoleTypes.Crewmate) && target.Is(CustomRoles.Marshall) && target.GetTaskState().IsTaskFinished) ||
(Main.PlayerStates[target.PlayerId].deathReason == PlayerState.DeathReason.Vote && Options.SeeEjectedRolesInMeeting.GetBool()) ||
CustomTeamManager.AreInSameCustomTeam(seer.PlayerId, target.PlayerId) ||
CustomTeamManager.AreInSameCustomTeam(seer.PlayerId, target.PlayerId) && Options.CTAPlayersCanSeeEachOthersRoles.GetBool() ||
Bargainer.KnowRole(seer, target) ||
Adventurer.KnowRole(seer, target) ||
Totocalcio.KnowRole(seer, target) ||
Romantic.KnowRole(seer, target) ||
@@ -2391,6 +2417,7 @@ public static class Utils
CustomRoles.Tornado => Tornado.TornadoCooldown.GetInt(),
CustomRoles.Sentinel => Sentinel.PatrolCooldown.GetInt(),
CustomRoles.Druid => Druid.VentCooldown.GetInt(),
CustomRoles.Sentry => Roles.Impostor.Sentry.ShowInfoCooldown.GetInt(),
CustomRoles.Sniper => Options.DefaultShapeshiftCooldown.GetInt(),
CustomRoles.Assassin => Assassin.AssassinateCooldownOpt.GetInt(),
CustomRoles.Undertaker => Undertaker.UndertakerAssassinateCooldown.GetInt(),
@@ -2405,6 +2432,7 @@ public static class Utils
CustomRoles.Warlock => Warlock.IsCursed ? -1 : (int)Options.DefaultKillCooldown,
CustomRoles.Swiftclaw => Swiftclaw.DashCD.GetInt() + (includeDuration ? Swiftclaw.DashDuration.GetInt() : 0),
CustomRoles.Tiger => Tiger.EnrageCooldown.GetInt() + (includeDuration ? Tiger.EnrageDuration.GetInt() : 0),
CustomRoles.Cherokious => Cherokious.KillCooldown.GetInt(),
_ => -1,
};
if (CD == -1) return;
@@ -2563,6 +2591,7 @@ public static class Utils
Vulture.OnPlayerDead(target);
Tracker.OnPlayerDeath(target);
Adventurer.OnAnyoneDead(target);
Roles.Impostor.Sentry.OnAnyoneMurder(target);
FixedUpdatePatch.LoversSuicide(target.PlayerId, onMeeting);
}
@@ -2690,8 +2719,15 @@ public static class Utils
NonCompleteColor = Workhorse.RoleColor;
var NormalColor = taskState.IsTaskFinished ? TaskCompleteColor : NonCompleteColor;
if (Main.PlayerStates.TryGetValue(id, out var ps) && ps.MainRole == CustomRoles.Crewpostor)
NormalColor = Color.red;
if (Main.PlayerStates.TryGetValue(id, out var ps))
{
NormalColor = ps.MainRole switch
{
CustomRoles.Crewpostor => Color.red,
CustomRoles.Cherokious => GetRoleColor(CustomRoles.Cherokious),
_ => NormalColor
};
}
Color TextColor = NormalColor;
string Completed = $"{taskState.CompletedTasksCount}";
+2 -2
View File
@@ -1,6 +1,6 @@
using HarmonyLib;
using System;
using System;
using System.Collections.Generic;
using HarmonyLib;
using UnityEngine;
namespace EHR;
+1 -1
View File
@@ -1,5 +1,5 @@
using HarmonyLib;
using System.Collections.Generic;
using HarmonyLib;
namespace EHR;
+4 -4
View File
@@ -1,11 +1,11 @@
using AmongUs.Data;
using System;
using System.Collections.Generic;
using System.Linq;
using AmongUs.Data;
using AmongUs.Data.Player;
using Assets.InnerNet;
using HarmonyLib;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
using System;
using System.Collections.Generic;
using System.Linq;
namespace EHR;
+12 -18
View File
@@ -1,15 +1,15 @@
using Assets.CoreScripts;
using EHR.Modules;
using EHR.Roles.Crewmate;
using EHR.Roles.Impostor;
using HarmonyLib;
using Hazel;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using Assets.CoreScripts;
using EHR.Modules;
using EHR.Roles.Crewmate;
using EHR.Roles.Impostor;
using HarmonyLib;
using Hazel;
using UnityEngine;
using static EHR.Translator;
@@ -297,7 +297,7 @@ internal class ChatCommands
case "ban":
if (GetRoleByName(args[2], out CustomRoles mainRole) && GetRoleByName(args[3], out CustomRoles addOn))
{
if (mainRole.IsAdditionRole() || !addOn.IsAdditionRole()) break;
if (mainRole.IsAdditionRole() || !addOn.IsAdditionRole() || addOn == CustomRoles.Lovers) break;
if (args[1] == "add") Main.AlwaysSpawnTogetherCombos[mainRole] = addOn;
else Main.NeverSpawnTogetherCombos[mainRole] = addOn;
Utils.SendMessage(string.Format(args[1] == "add" ? GetString("ComboAdd") : GetString("ComboBan"), GetString(mainRole.ToString()), GetString(addOn.ToString())), localPlayerId);
@@ -966,18 +966,12 @@ internal class ChatCommands
string[] args = text.Split(' ');
string subArgs;
if (GuessManager.GuesserMsg(player, text))
if (GuessManager.GuesserMsg(player, text) ||
Judge.TrialMsg(player, text) ||
NiceSwapper.SwapMsg(player, text) ||
ParityCop.ParityCheckMsg(player, text) ||
Councillor.MurderMsg(player, text))
{
if (Judge.TrialMsg(player, text) ||
NiceSwapper.SwapMsg(player, text) ||
ParityCop.ParityCheckMsg(player, text) ||
Councillor.MurderMsg(player, text))
{
canceled = true;
LastSentCommand[player.PlayerId] = now;
return;
}
canceled = true;
LastSentCommand[player.PlayerId] = now;
return;
+3 -3
View File
@@ -1,10 +1,10 @@
using System;
using System.Collections.Generic;
using System.Linq;
using AmongUs.Data;
using EHR.Roles.Impostor;
using HarmonyLib;
using InnerNet;
using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
namespace EHR;
+19 -19
View File
@@ -1,3 +1,6 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using AmongUs.GameOptions;
using BepInEx.Unity.IL2CPP.Utils.Collections;
using EHR.Modules;
@@ -7,9 +10,6 @@ using EHR.Roles.Neutral;
using HarmonyLib;
using Hazel;
using InnerNet;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using static EHR.CustomWinnerHolder;
using static EHR.Translator;
@@ -183,6 +183,10 @@ class GameEndChecker
WinnerIds.Add(pc.PlayerId);
AdditionalWinnerTeams.Add(AdditionalWinners.SoulHunter);
break;
case CustomRoles.SchrodingersCat when SchrodingersCat.WinsWithCrewIfNotAttacked.GetBool():
WinnerIds.Add(pc.PlayerId);
AdditionalWinnerTeams.Add(AdditionalWinners.SchrodingersCat);
break;
}
}
@@ -218,12 +222,12 @@ class GameEndChecker
.Do(p => WinnerIds.Add(p.PlayerId));
}
if (WinnerTeam != CustomWinner.CustomTeam)
if (WinnerTeam != CustomWinner.CustomTeam && !Options.CTAPlayersCanWinWithOriginalTeam.GetBool())
{
WinnerIds.RemoveWhere(x => CustomTeamManager.GetCustomTeam(x) != null);
}
if (WinnerTeam == CustomWinner.Lovers || WinnerIds.Any(x => Main.PlayerStates[x].SubRoles.Contains(CustomRoles.Lovers)))
if ((WinnerTeam == CustomWinner.Lovers || WinnerIds.Any(x => Main.PlayerStates[x].SubRoles.Contains(CustomRoles.Lovers))) && Main.LoversPlayers.All(x => x.IsAlive()))
{
if (WinnerTeam != CustomWinner.Lovers) AdditionalWinnerTeams.Add(AdditionalWinners.Lovers);
Main.AllPlayerControls
@@ -282,7 +286,7 @@ class GameEndChecker
continue;
}
bool canWin = WinnerIds.Contains(pc.PlayerId) || WinnerRoles.Contains(pc.GetCustomRole());
bool canWin = WinnerIds.Contains(pc.PlayerId) || WinnerRoles.Contains(pc.GetCustomRole()) || (winner == CustomWinner.Bloodlust && pc.Is(CustomRoles.Bloodlust));
bool isCrewmateWin = reason.Equals(GameOverReason.HumansByVote) || reason.Equals(GameOverReason.HumansByTask);
SetGhostRole(ToGhostImpostor: canWin ^ isCrewmateWin); // XOR
@@ -524,25 +528,21 @@ class GameEndChecker
if (FFAManager.FFATeamMode.GetBool())
{
var firstTeam = FFAManager.PlayerTeams.GroupBy(x => x.Value, x => x.Key).Select(x => x.Where(p =>
var teams = FFAManager.PlayerTeams.GroupBy(x => x.Value, x => x.Key).Select(x => x.Where(p =>
{
var pc = GetPlayerById(p);
return pc != null && !pc.Data.Disconnected;
}).ToHashSet()).FirstOrDefault(x => x.Count > 0);
}).ToHashSet()).Where(x => x.Count > 0);
if (firstTeam == null)
foreach (var team in teams)
{
FFAManager.RoundTime = 0;
Logger.Warn("No players alive. Force ending the game", "FFA");
return false;
}
if (Main.AllAlivePlayerControls.All(x => team.Contains(x.PlayerId)))
{
WinnerIds = team;
if (Main.AllAlivePlayerControls.All(x => firstTeam.Contains(x.PlayerId)))
{
WinnerIds = firstTeam;
Main.DoBlockNameChange = true;
return true;
Main.DoBlockNameChange = true;
return true;
}
}
}
+3 -3
View File
@@ -1,10 +1,10 @@
using EHR.Modules;
using HarmonyLib;
using Rewired;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using EHR.Modules;
using HarmonyLib;
using Rewired;
using UnityEngine;
using static EHR.Translator;
+2 -2
View File
@@ -1,8 +1,8 @@
using EHR.Modules;
using HarmonyLib;
using System;
using System.Linq;
using System.Text;
using EHR.Modules;
using HarmonyLib;
using TMPro;
using UnityEngine;
using static EHR.Translator;
+1 -1
View File
@@ -1,7 +1,7 @@
using System;
using AmongUs.Data;
using Discord;
using HarmonyLib;
using System;
namespace EHR.Patches
{
+1 -1
View File
@@ -1,3 +1,4 @@
using System.Linq;
using AmongUs.Data;
using AmongUs.GameOptions;
using EHR.Roles.AddOns.Crewmate;
@@ -6,7 +7,6 @@ using EHR.Roles.Crewmate;
using EHR.Roles.Impostor;
using EHR.Roles.Neutral;
using HarmonyLib;
using System.Linq;
namespace EHR.Patches;
+2 -2
View File
@@ -1,9 +1,9 @@
using System;
using System.Linq;
using AmongUs.GameOptions;
using HarmonyLib;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
using Il2CppSystem.Collections.Generic;
using System;
using System.Linq;
using TMPro;
using UnityEngine;
using static EHR.Translator;
+3 -3
View File
@@ -1,11 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using AmongUs.Data;
using AmongUs.GameOptions;
using EHR.Roles.Neutral;
using HarmonyLib;
using InnerNet;
using System;
using System.Collections.Generic;
using System.Linq;
using TMPro;
using UnityEngine;
using static EHR.Translator;
+6 -7
View File
@@ -1,3 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using EHR.Modules;
using EHR.Roles.AddOns.Common;
using EHR.Roles.Crewmate;
@@ -5,9 +8,6 @@ using EHR.Roles.Impostor;
using EHR.Roles.Neutral;
using HarmonyLib;
using Il2CppSystem.Text;
using System;
using System.Collections.Generic;
using System.Linq;
using TMPro;
using UnityEngine;
using static EHR.Translator;
@@ -31,7 +31,7 @@ class HudManagerPatch
private static TextMeshPro OverriddenRolesText;
private static long LastNullError = 0;
private static long LastNullError;
//public static GameObject TempLowerInfoText;
public static void Postfix(HudManager __instance)
@@ -203,7 +203,7 @@ class HudManagerPatch
case CustomRoles.Pelican:
__instance.KillButton?.OverrideText(GetString("PelicanButtonText"));
break;
case CustomRoles.Analyzer:
case CustomRoles.Analyst:
usedButton?.OverrideText(GetString("AnalyzerKillButtonText"));
break;
case CustomRoles.Pursuer:
@@ -386,6 +386,7 @@ class HudManagerPatch
CustomRoles.WeaponMaster => WeaponMaster.GetHudAndProgressText(player.PlayerId),
CustomRoles.Postman => Postman.GetHudText(player),
CustomRoles.SoulHunter => SoulHunter.HUDText(player.PlayerId),
CustomRoles.Bargainer => Bargainer.GetSuffix(player),
CustomRoles.Chronomancer => Chronomancer.GetHudText(player.PlayerId),
CustomRoles.Mafioso => Mafioso.GetHUDText(player),
CustomRoles.Druid => Druid.GetHUDText(player),
@@ -569,8 +570,6 @@ class SetHudActivePatch
case CustomRoles.SwordsMan:
case CustomRoles.Deputy:
case CustomRoles.Monarch:
//case CustomRoles.NWitch:
//case CustomRoles.Reverie:
case CustomRoles.Pelican:
case CustomRoles.FFF:
case CustomRoles.Medic:
+1 -1
View File
@@ -238,7 +238,7 @@ public static class HudSpritePatch
else
newPetButton = CustomButton.Get("Mine");
break;
case CustomRoles.Analyzer:
case CustomRoles.Analyst:
case CustomRoles.Witness:
newKillButton = CustomButton.Get("Examine");
break;
+3 -3
View File
@@ -1,11 +1,11 @@
using System;
using System.Linq;
using System.Threading.Tasks;
using AmongUs.GameOptions;
using EHR.Modules;
using EHR.Roles.Neutral;
using HarmonyLib;
using Il2CppSystem.Collections.Generic;
using System;
using System.Linq;
using System.Threading.Tasks;
using UnityEngine;
using static EHR.Translator;
+1 -1
View File
@@ -1,5 +1,5 @@
using HarmonyLib;
using System.Text.RegularExpressions;
using HarmonyLib;
using UnityEngine;
namespace EHR;
+2 -2
View File
@@ -1,6 +1,6 @@
using HarmonyLib;
using System.Collections.Generic;
using HarmonyLib;
using Hazel;
using System.Collections.Generic;
using UnityEngine;
namespace EHR;
+3 -3
View File
@@ -1,7 +1,7 @@
using HarmonyLib;
using InnerNet;
using System;
using System;
using System.Collections.Generic;
using HarmonyLib;
using InnerNet;
using UnityEngine;
namespace EHR;
+2 -2
View File
@@ -1,6 +1,6 @@
using BepInEx.Unity.IL2CPP.Utils;
using System.Collections;
using BepInEx.Unity.IL2CPP.Utils;
using HarmonyLib;
using System.Collections;
using TMPro;
using UnityEngine;
using static EHR.Translator;
+2 -2
View File
@@ -1,5 +1,5 @@
using HarmonyLib;
using System;
using HarmonyLib;
using TMPro;
using UnityEngine;
using static EHR.Translator;
@@ -102,7 +102,7 @@ public class MainMenuManagerPatch
{
freeplayButton.GetComponent<PassiveButton>().OnClick = new();
freeplayButton.GetComponent<PassiveButton>().OnClick.AddListener((Action)(() => Application.OpenURL("https://tohe.cc")));
__instance.StartCoroutine(Effects.Lerp(0.01f, new Action<float>((p) => freeplayButton.transform.GetChild(0).GetComponent<TMP_Text>().SetText(GetString("Website")))));
__instance.StartCoroutine(Effects.Lerp(0.01f, new Action<float>(p => freeplayButton.transform.GetChild(0).GetComponent<TMP_Text>().SetText(GetString("Website")))));
}
#endif
+6 -5
View File
@@ -1,12 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using EHR.Modules;
using EHR.Roles.Crewmate;
using EHR.Roles.Impostor;
using EHR.Roles.Neutral;
using HarmonyLib;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;
using static EHR.Translator;
using Object = UnityEngine.Object;
@@ -796,7 +796,8 @@ class MeetingHudStartPatch
(pc.Is(CustomRoles.Mayor) && Mayor.MayorRevealWhenDoneTasks.GetBool() && pc.GetTaskState().IsTaskFinished) ||
(pc.Is(CustomRoles.Marshall) && PlayerControl.LocalPlayer.Is(CustomRoleTypes.Crewmate) && pc.GetTaskState().IsTaskFinished) ||
(Main.PlayerStates[pc.PlayerId].deathReason == PlayerState.DeathReason.Vote && Options.SeeEjectedRolesInMeeting.GetBool()) ||
CustomTeamManager.AreInSameCustomTeam(pc.PlayerId, PlayerControl.LocalPlayer.PlayerId) ||
CustomTeamManager.AreInSameCustomTeam(pc.PlayerId, PlayerControl.LocalPlayer.PlayerId) && Options.CTAPlayersCanSeeEachOthersRoles.GetBool() ||
Bargainer.KnowRole(PlayerControl.LocalPlayer, pc) ||
Adventurer.KnowRole(PlayerControl.LocalPlayer, pc) ||
Totocalcio.KnowRole(PlayerControl.LocalPlayer, pc) ||
Romantic.KnowRole(PlayerControl.LocalPlayer, pc) ||
+4 -4
View File
@@ -1,11 +1,11 @@
using EHR.Modules;
using EHR.Roles.Crewmate;
using EHR.Roles.Neutral;
using HarmonyLib;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using EHR.Modules;
using EHR.Roles.Crewmate;
using EHR.Roles.Neutral;
using HarmonyLib;
using TMPro;
using UnityEngine;
using static EHR.Translator;
+1 -1
View File
@@ -1,8 +1,8 @@
using System.Collections.Generic;
using AmongUs.GameOptions;
using EHR.Roles.Impostor;
using EHR.Roles.Neutral;
using HarmonyLib;
using System.Collections.Generic;
namespace EHR.Patches;
+68 -33
View File
@@ -1,3 +1,8 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AmongUs.GameOptions;
using EHR.Modules;
using EHR.Patches;
@@ -11,11 +16,6 @@ using EHR.Roles.Neutral;
using HarmonyLib;
using Hazel;
using InnerNet;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TMPro;
using UnityEngine;
using static EHR.Translator;
@@ -130,7 +130,7 @@ class CheckMurderPatch
{
if (!AmongUsClient.Instance.AmHost) return false;
var killer = __instance; // alternative variable
var killer = __instance;
Logger.Info($"{killer.GetNameWithRole().RemoveHtmlTags()} => {target.GetNameWithRole().RemoveHtmlTags()}", "CheckMurder");
@@ -185,21 +185,16 @@ class CheckMurderPatch
{
if (!Main.KilledDiseased.TryAdd(killer.PlayerId, 1))
{
// Key already exists, update the value
Main.KilledDiseased[killer.PlayerId] += 1;
}
// Key doesn't exist, add the key-value pair
}
if (target.Is(CustomRoles.Antidote))
{
if (!Main.KilledAntidote.TryAdd(killer.PlayerId, 1))
{
// Key already exists, update the value
Main.KilledAntidote[killer.PlayerId] += 1; // Main.AllPlayerKillCooldown.TryGetValue(killer.PlayerId, out float kcd) ? (kcd - Options.AntidoteCDOpt.GetFloat() > 0 ? kcd - Options.AntidoteCDOpt.GetFloat() : 0f) : 0f;
Main.KilledAntidote[killer.PlayerId] += 1;
}
// Key doesn't exist, add the key-value pair
// Main.AllPlayerKillCooldown.TryGetValue(killer.PlayerId, out float kcd) ? (kcd - Options.AntidoteCDOpt.GetFloat() > 0 ? kcd - Options.AntidoteCDOpt.GetFloat() : 0f) : 0f);
}
killer.ResetKillCooldown();
@@ -217,7 +212,7 @@ class CheckMurderPatch
return false;
case CustomGameMode.FFA:
FFAManager.OnPlayerAttack(killer, target);
return true;
return false;
case CustomGameMode.MoveAndStop:
case CustomGameMode.HotPotato:
return false;
@@ -506,11 +501,11 @@ class MurderPlayerPatch
if (Main.PlayerStates[target.PlayerId].deathReason == PlayerState.DeathReason.etc)
{
//If the cause of death is not specified, it is determined as a normal kill.
// If the cause of death is not specified, it is determined as a normal kill.
Main.PlayerStates[target.PlayerId].deathReason = PlayerState.DeathReason.Kill;
}
//Let’s see if Youtuber was stabbed first
// Let’s see if Youtuber was stabbed first
if (Main.FirstDied == byte.MaxValue && target.Is(CustomRoles.Youtuber))
{
CustomSoundsManager.RPCPlayCustomSoundAll("Congrats");
@@ -518,7 +513,7 @@ class MurderPlayerPatch
CustomWinnerHolder.WinnerIds.Add(target.PlayerId);
}
//Record the first blow
// Record the first blow
if (Main.FirstDied == byte.MaxValue)
Main.FirstDied = target.PlayerId;
@@ -530,9 +525,6 @@ class MurderPlayerPatch
if (target.Is(CustomRoles.Stained))
Stained.OnDeath(target, killer);
//if ((Romantic.BetPlayer.TryGetValue(target.PlayerId, out var RomanticPartner) && target.PlayerId == RomanticPartner) && target.PlayerId != killer.PlayerId)
// VengefulRomantic.PartnerKiller.Add(killer.PlayerId, 1);
Witness.AllKillers.Remove(killer.PlayerId);
Witness.AllKillers.Add(killer.PlayerId, TimeStamp);
@@ -653,11 +645,10 @@ class ShapeshiftPatch
public static bool ProcessShapeshift(PlayerControl shapeshifter, PlayerControl target)
{
if (!Main.ProcessShapeshifts) return true;
Logger.Info($"{shapeshifter?.GetNameWithRole()} => {target?.GetNameWithRole()}", "Shapeshift");
if (shapeshifter == null || target == null) return true;
Logger.Info($"{shapeshifter.GetNameWithRole()} => {target.GetNameWithRole()}", "Shapeshift");
var shapeshifting = shapeshifter.PlayerId != target.PlayerId;
if (Main.CheckShapeshift.TryGetValue(shapeshifter.PlayerId, out var last) && last == shapeshifting)
@@ -685,8 +676,21 @@ class ShapeshiftPatch
isSSneeded = false;
}
bool forceCancel = shapeshifter.GetCustomRole().ForceCancelShapeshift();
if (shapeshifter.Is(CustomRoles.Camouflager) && !shapeshifting) Camouflager.Reset();
if (Changeling.ChangedRole.TryGetValue(shapeshifter.PlayerId, out var changed) && changed && shapeshifter.GetRoleTypes() != RoleTypes.Shapeshifter) isSSneeded = false;
if (Changeling.ChangedRole.TryGetValue(shapeshifter.PlayerId, out var changed) && changed && shapeshifter.GetRoleTypes() != RoleTypes.Shapeshifter)
{
forceCancel = true;
isSSneeded = false;
}
bool shouldCancel = Options.DisableShapeshiftAnimations.GetBool();
bool shouldAlwaysCancel = shouldCancel && Options.DisableAllShapeshiftAnimations.GetBool();
bool doSSwithoutAnim = isSSneeded && shouldAlwaysCancel;
isSSneeded &= !shouldAlwaysCancel;
forceCancel |= shouldAlwaysCancel;
// Forced rewriting in case the name cannot be corrected due to the timing of canceling the transformation being off.
if (!shapeshifting && !shapeshifter.Is(CustomRoles.Glitch) && isSSneeded)
@@ -706,7 +710,13 @@ class ShapeshiftPatch
NotifyRoles(SpecifySeer: shapeshifter, SpecifyTarget: shapeshifter);
}
return isSSneeded || !Options.DisableShapeshiftAnimations.GetBool() || !shapeshifting;
if (doSSwithoutAnim)
{
shapeshifter.RpcShapeshift(target, false);
return false;
}
return isSSneeded || (!shouldCancel && !forceCancel) || (!shapeshifting && !shouldAlwaysCancel);
}
// Tasks that should run when someone performs a shapeshift (with the egg animation) should be here.
@@ -723,14 +733,28 @@ class ShapeshiftPatch
pc.Notify(shapeshifting ? GetString("ShiftguardNotifySS") : "ShiftguardNotifyUnshift");
}
if (Main.PlayerStates[pc.PlayerId].Role is Adventurer { IsEnable: true } av)
switch (Main.PlayerStates[pc.PlayerId].Role)
{
Adventurer.OnAnyoneShapeshiftLoop(av, __instance);
case Adventurer av:
Adventurer.OnAnyoneShapeshiftLoop(av, __instance);
break;
case Roles.Impostor.Sentry st:
st.OnAnyoneShapeshiftLoop(__instance, target);
break;
}
}
}
}
[HarmonyPatch(typeof(PlayerControl), nameof(PlayerControl.RpcShapeshift))]
class RpcShapeshiftPatch
{
public static void Postfix(PlayerControl __instance, [HarmonyArgument(0)] PlayerControl target)
{
Main.CheckShapeshift[__instance.PlayerId] = __instance.PlayerId != target.PlayerId;
}
}
[HarmonyPatch(typeof(PlayerControl), nameof(PlayerControl.ReportDeadBody))]
class ReportDeadBodyPatch
{
@@ -1377,10 +1401,17 @@ class FixedUpdatePatch
}
break;
case CustomRoles.Analyzer:
if ((Main.PlayerStates[seer.PlayerId].Role as Analyzer).CurrentTarget.ID == target.PlayerId)
case CustomRoles.Analyst:
if ((Main.PlayerStates[seer.PlayerId].Role as Analyst).CurrentTarget.ID == target.PlayerId)
{
Mark.Append($"<color={GetRoleColorCode(CustomRoles.Analyzer)}>○</color>");
Mark.Append($"<color={GetRoleColorCode(CustomRoles.Analyst)}>○</color>");
}
break;
case CustomRoles.Samurai:
if ((Main.PlayerStates[seer.PlayerId].Role as Samurai).Target.Id == target.PlayerId)
{
Mark.Append($"<color={GetRoleColorCode(CustomRoles.Samurai)}>○</color>");
}
break;
@@ -1493,9 +1524,12 @@ class FixedUpdatePatch
Suffix.Append(Deathpact.GetDeathpactPlayerArrow(seer, target));
Suffix.Append(Deathpact.GetDeathpactMark(seer, target));
if (self) Suffix.Append(AntiAdminer.GetSuffixText(seer));
if (seer.Is(CustomRoles.Asthmatic) && self) Suffix.Append(Asthmatic.GetSuffixText(seer.PlayerId));
if (self)
{
Suffix.Append(AntiAdminer.GetSuffixText(seer));
Suffix.Append(Roles.Impostor.Sentry.GetSuffix(seer));
if (seer.Is(CustomRoles.Asthmatic)) Suffix.Append(Asthmatic.GetSuffixText(seer.PlayerId));
}
if (target.Is(CustomRoles.Librarian)) Suffix.Append(Librarian.GetNameTextForSuffix(target.PlayerId));
@@ -1690,7 +1724,8 @@ class EnterVentPatch
}
Drainer.OnAnyoneEnterVent(pc, __instance);
Analyzer.OnAnyoneEnterVent(pc);
Analyst.OnAnyoneEnterVent(pc);
Roles.Impostor.Sentry.OnAnyoneEnterVent(pc);
switch (pc.GetCustomRole())
{
+26 -19
View File
@@ -1,3 +1,6 @@
using System;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using AmongUs.Data;
using AmongUs.GameOptions;
using EHR.Modules;
@@ -5,9 +8,6 @@ using EHR.Roles.Crewmate;
using EHR.Roles.Neutral;
using HarmonyLib;
using InnerNet;
using System;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using static EHR.Translator;
namespace EHR;
@@ -195,23 +195,26 @@ class OnPlayerLeftPatch
else if (GameStates.IsLobby)
msg = GetString("Message.HostLeftGameInLobby");
player.SetName(title);
player?.SetName(title);
DestroyableSingleton<HudManager>.Instance.Chat.AddChat(player, msg);
player.SetName(name);
player?.SetName(name);
var writer = CustomRpcSender.Create("MessagesToSend");
writer.StartMessage(clientId);
writer.StartRpc(player.NetId, (byte)RpcCalls.SetName)
.Write(title)
.EndRpc();
writer.StartRpc(player.NetId, (byte)RpcCalls.SendChat)
.Write(msg)
.EndRpc();
writer.StartRpc(player.NetId, (byte)RpcCalls.SetName)
.Write(player.Data.PlayerName)
.EndRpc();
writer.EndMessage();
writer.SendMessage();
if (player != null && player.Data != null)
{
var writer = CustomRpcSender.Create("MessagesToSend");
writer.StartMessage(clientId);
writer.StartRpc(player.NetId, (byte)RpcCalls.SetName)
.Write(title)
.EndRpc();
writer.StartRpc(player.NetId, (byte)RpcCalls.SendChat)
.Write(msg)
.EndRpc();
writer.StartRpc(player.NetId, (byte)RpcCalls.SetName)
.Write(player.Data.PlayerName)
.EndRpc();
writer.EndMessage();
writer.SendMessage();
}
}
// Additional description of the reason for disconnection
@@ -243,7 +246,7 @@ class OnPlayerLeftPatch
Utils.CountAlivePlayers(true);
data.Character.Data.Disconnected = true;
if (data != null && data.Character != null) data.Character.Data.Disconnected = true;
}
catch (NullReferenceException)
{
@@ -252,6 +255,10 @@ class OnPlayerLeftPatch
{
Logger.Error(ex.ToString(), "OnPlayerLeftPatch.Postfix");
}
finally
{
Utils.NotifyRoles(NoCache: true);
}
}
}
+2 -2
View File
@@ -1,8 +1,8 @@
using EHR.Roles.Impostor;
using HarmonyLib;
using System;
using System.Collections.Generic;
using System.Linq;
using EHR.Roles.Impostor;
using HarmonyLib;
using UnityEngine;
namespace EHR;
+2 -2
View File
@@ -1,8 +1,8 @@
using System.Linq;
using EHR.Roles.Crewmate;
using EHR.Roles.Neutral;
using HarmonyLib;
using Hazel;
using System.Linq;
namespace EHR;
@@ -261,7 +261,7 @@ public static class SabotageSystemTypeRepairDamagePatch
}
if (player.Is(CustomRoleTypes.Impostor) && !player.IsAlive() && Options.DeadImpCantSabotage.GetBool()) return false;
if (player.Is(CustomRoleTypes.Impostor) && (player.IsAlive() || !Options.DeadImpCantSabotage.GetBool()) && !player.Is(CustomRoles.Minimalism) && !player.Is(CustomRoles.Mafioso)) return true;
if (player.Is(CustomRoleTypes.Impostor) && (player.IsAlive() || !Options.DeadImpCantSabotage.GetBool()) && player.GetCustomRole() is not CustomRoles.Minimalism and not CustomRoles.Mafioso and not CustomRoles.Generator) return true;
return player.GetCustomRole() switch
{
CustomRoles.Jackal when Jackal.CanSabotage.GetBool() => true,
+2 -2
View File
@@ -1,3 +1,5 @@
using System.Collections.Generic;
using System.Linq;
using BepInEx;
using EHR.Patches;
using EHR.Roles.AddOns.Crewmate;
@@ -6,8 +8,6 @@ using EHR.Roles.Crewmate;
using EHR.Roles.Neutral;
using HarmonyLib;
using Hazel;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
namespace EHR;
+2 -2
View File
@@ -1,8 +1,8 @@
using AmongUs.GameOptions;
using HarmonyLib;
using System;
using System.Collections;
using System.Linq;
using AmongUs.GameOptions;
using HarmonyLib;
using UnityEngine;
using Object = UnityEngine.Object;
+2 -2
View File
@@ -1,5 +1,5 @@
using HarmonyLib;
using System;
using System;
using HarmonyLib;
namespace EHR.Patches;
+4 -4
View File
@@ -1,3 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using AmongUs.GameOptions;
using EHR.Modules;
using EHR.Roles.AddOns.Common;
@@ -8,9 +11,6 @@ using EHR.Roles.Impostor;
using EHR.Roles.Neutral;
using HarmonyLib;
using Hazel;
using System;
using System.Collections.Generic;
using System.Linq;
using static EHR.Modules.CustomRoleSelector;
using static EHR.Translator;
@@ -596,7 +596,7 @@ internal class SelectRolesPatch
GameOptionsSender.AllSenders.Add(new PlayerGameOptionsSender(pc));
}
// Added players with unclassified roles to the list of players who require ResetCam.
// Add players with unclassified roles to the list of players who require ResetCam.
Main.ResetCamPlayerList.AddRange(Main.AllPlayerControls.Where(p => p.GetCustomRole() is CustomRoles.Arsonist or CustomRoles.Revolutionist or CustomRoles.Sidekick or CustomRoles.KB_Normal or CustomRoles.Killer or CustomRoles.Tasker or CustomRoles.Potato or CustomRoles.Seeker or CustomRoles.Hider or CustomRoles.Fox or CustomRoles.Troll or CustomRoles.Innocent || (p.Is(CustomRoles.Witness) && (!Options.UsePets.GetBool() || Options.WitnessUsePet.GetBool()))).Select(p => p.PlayerId));
Utils.CountAlivePlayers(true);
Utils.SyncAllSettings();
+25 -93
View File
@@ -29,12 +29,12 @@
## Visit our website for more information: [EHR](https://sites.google.com/view/ehr-au)
## Main Features
- Note: The goal with this branch is to improve the existing stuff over adding new roles. If some of the stuff you see below are in TOHRE, they were originally coded by me.
### New gamemode
- Note: The goal with this branch is to improve the existing stuff over adding new roles. If some of the stuff you see below are in other mods, they were originally coded by me.
### Most Popular Game Mode
- A brand new official gamemode, Basic FFA (Free For All)
- This mode makes everyone a killer and the last player alive wins
- Features: Random events, ranks and scoring, random ability gain for every kill, game timer, scoreboard (task list), unique end screen, fully customizable
### Overall improvements
### Overall improvements compared to other mods
- Role spawn chances are in percentages
- Gain more ability uses for completing tasks as crewmate roles
- Gain more ability uses for getting kills as impostor roles
@@ -103,91 +103,7 @@
- Provocateur: No longer suicides after selecting a target
- Pursuer: Target doesn't die when trying to use their kill button, they'll just have their kill cooldown reset
### Now, some new roles as well
- Lighter (Crewmate)
- Demolitionist (Crewmate)
- Ventguard (Crewmate)
- Express (Crewmate)
- Witness (Crewmate)
- Alchemist (Crewmate)
- Task Manager (Crewmate)
- Speedrunner (Crewmate)
- Ignitor (Crewmate)
- Security Guard (Crewmate)
- Aid (Crewmate)
- Spy (Crewmate)
- Tether (Crewmate)
- Ricochet (Crewmate)
- Door Master (Crewmate)
- Hacker (Crewmate)
- Guess Manager (Crewmate)
- Altruist (Crewmate)
- Transmitter (Crewmate)
- Autocrat (Crewmate)
- Benefactor (Crewmate)
- Nightmare (Crewmate)
- Camera Man (Crewmate)
- Escort (Crewmate)
- Donut Delivery (Crewmate)
- Drainer (Crewmate)
- Insight (Crewmate)
- Tunneler (Crewmate)
- Detour (Crewmate)
- Gaulois (Crewmate)
- Analyzer (Crewmate)
- Electric (Crewmate)
- Mole (Crewmate)
- Tornado (Crewmate)
- Sentinel (Crewmate)
- Rabbit (Crewmate)
- Perceiver (Crewmate)
- Convener (Crewmate)
- Mathematician (Crewmate)
- Romantic (Neutral)
- Werewolf (Neutral)
- Imitator (Neutral)
- Head Hunter (Neutral)
- Vengeance (Neutral)
- Eclipse (Neutral)
- Pyromaniac (Neutral)
- Weapon Master (Neutral)
- Postman (Neutral)
- Reckless (Neutral)
- Magician (Neutral)
- Enderman (Neutral)
- Mycologist (Neutral)
- Bubble (Neutral)
- Hookshot (Neutral)
- Sprayer (Neutral)
- Soul Hunter (Neutral)
- Necromancer / Deathknight (Neutral)
- Undertaker (Impostor)
- Gambler (Impostor)
- Mastermind (Impostor)
- Rift Maker (Impostor)
- Hitman (Impostor)
- Sapper (Impostor)
- Nullifier (Impostor)
- Chronomancer (Impostor)
- Librarian (Impostor)
- Yin Yanger (Impostor)
- Cantankerous (Impostor)
- Duellist (Impostor)
- Kamikaze (Impostor)
- Swapster (Impostor)
- Swiftclaw (Impostor)
- Damocles (Impostor-only Add-on)
- Deadly Quota (Impostor-only Add-on)
- Nimble (Add-on)
- Physicist (Add-on)
- Stressed (Add-on)
- Giant (Add-on)
- Magnet (Add-on)
- Sleuth (Add-on)
- Asthmatic (Add-on)
- Disco (Add-on)
- Truant (Add-on)
- Busy (Add-on)
### To see the full list of unique roles and their descriptions, visit our website: [EHR](https://sites.google.com/view/ehr-au)
## Note:
- You can use parts of the code in here, but if you do, you'll have to credit me (Gurge44) or the mod by mentioning its name (EHR) and providing a link to this github page. (Or leaving the in-game credits as they are is also fine!)
@@ -198,11 +114,11 @@
## Credit to these mods and their developers for the code and help:
### :star: [TOHER/TOHRE/TOHEN](https://github.com/0xDrMoe/TownofHost-Enhanced) :
>
> - Our repo is forked from TOHEN
> - Our repo is forked from TOHRE (from a long time ago)
>
### :star: [TOHE/TONX](https://github.com/KARPED1EM/TownOfHostEdited) :
>
> - Our repo is a continuation of EHR
> - Our repo is a continuation of TOHE
> - TONX reference: Modify character limit for chat messages
>
### :star: [TOH](https://github.com/tukasa0001/TownOfHost) :
@@ -263,17 +179,31 @@
>
### Endless Host Roles (EHR), with Endless Possibilities, brought to you by the Endless Network.
- Contributors:
- Gurge44 (main)
##### Developers:
- Gurge44
##### Contributors:
- Dx
- PH_Gaming
##### Special Thanks:
- Seleneous
- thewhiskas27
- HyperAtill
##### Translators:
- Dx (PT-BR)
- PH_Gaming (PT-BR)
- Tomix (PT-BR)
- aviiiv (PT-BR)
- HyperAtill (RU)
# License for the Custom Team Assinger application
# License for the Custom Team Assigner application
Copyright (c) 2024, Gurge44
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright
@@ -288,6 +218,8 @@ modification, are permitted provided that the following conditions are met:
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ''AS IS'' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+80 -4
View File
@@ -1091,6 +1091,9 @@
"DisableZiplineForImps": "Disable Zipline for <color=#ff1919>Impostors</color>",
"DisableZiplineForNeutrals": "Disable Zipline for <color=#ffab1b>Neutrals</color>",
"DisableShapeshiftAnimations": "Disable Shapeshift Animations",
"DisableAllShapeshiftAnimations": "Disable All Shapeshift Animations",
"CTA.PlayersCanWinWithOriginalTeam": "Custom Teamed Players Can Win With Their Original Team",
"CTA.PlayersCanSeeEachOthersRoles": "Custom Teamed Players Can See Each Other's Roles",
"AirshipVariableElectrical": "Variable Electrical (Airship)",
"ApplyDenyNameList": "Apply DenyName List",
"KickPlayerFriendCodeNotExist": "Kick players who are not logged in",
@@ -1128,6 +1131,7 @@
"MenuTitle.TaskSettings": "★ Task Management ★",
"MenuTitle.Guessers": "★ Guesser Mode ★",
"MenuTitle.GuesserModeRoles": "★ Roles and Add-ons for Guesser Mode ★",
"MenuTitle.CTA": "★ Custom Team Assignment ★",
"ShieldPersonDiedFirst": "Shield the person who got killed first in the last game",
"JackalWinWithSidekick": "<color=#00b4eb>Jackal</color> can win with <color=#00b4eb>Sidekick</color>'s team",
"SidekickKnowOtherSidekick": "<color=#00b4eb>Sidekicks</color> know each other",
@@ -2615,6 +2619,65 @@
"Transmitter": "Transmitter",
"TransmitterInfo": "TP to nearest player by doing a task",
"TransmitterInfoLong": "(Crewmates):\\nAs the Transmitter, when you complete a task, you teleport to the nearest player.",
"Sentry": "Sentry",
"SentryInfo": "Monitor a Room",
"SentryInfoLong": "(Crewmates):\\nAs the Sentry, you can monitor a room by petting your pet. When you pet your pet in the future, you get information from that room, including:<size=80%>\\n- The players currently in that room\\n- Who is dead in that room (if any)</size>\\nYou also get a notification when someone uses a vent or shapeshifts in that room.\\n\\nDepending on the settings, players may know if a room is monitored, and you may not be able to view this info during Comms Sabotages.",
"Sentry.ShowInfoDuration": "Info is Visible for",
"Sentry.PlayersKnowAboutCamera": "Players Know if the Room is Monitored",
"Sentry.CannotSeeInfoDuringComms": "Cannot See Info During Comms Sabotages",
"Sentry.Suffix.MonitoredRoom": "<size=80%>This room is monitored by the {0}</size>",
"Sentry.Suffix.Self": "<size=70%>Monitoring: <#00ffa5>{0}</color></size>",
"Sentry.Notify.Info": "<u>Info about your monitored room:</u>\\nPlayers: {0}\\nDead players: {1}",
"Sentry.Notify.Info.NoData": "<#ff0000>none</color>",
"Sentry.Notify.Shapeshifted": "{0} shapeshifted into {1} in your monitored room",
"Sentry.Notify.Vented": "{0} vented in your monitored room",
"Sentry.Notify.InvalidRoom": "You are not in a room",
"Samurai": "Samurai",
"SamuraiInfo": "Kill Players in Unique Ways",
"SamuraiInfoLong": "(Neutrals):\\nAs the Samurai, you can do delayed kills and normal kills. What decides? Well, if you click your kill button on someone (the kill won't occur immediately) and you stay near them for a few seconds (like an arsonist douse), you get a lower kill cooldown and the kill will be delayed. If you fail to stay near them, you do a normal kill, lunge included.",
"Samurai.NearbyDuration": "Time to Stay Near Target",
"Samurai.SuccessKCD": "Kill Cooldown for Delayed Kills",
"Samurai.KillDelay": "Kill Delay",
"Bargainer": "Bargainer",
"BargainerInfo": "Gain Money & Buy Power-Ups",
"BargainerInfoLong": "(Neutrals):\\nAs the Bargainer, you can gain money by killing, sabotaging and surviving meetings. You can use this money to buy some items from the shop. All devices on this map represent a shop you can use by going near it. You can buy the following items:<size=80%>\\n- Energy Drink (lowers your kill cooldown for that round)\\n- Lens Of Truth (reveals a random player's role for some time)\\n- Band Aid (gives you a shield for some time)</size>\\nWhen you step away from a shop, the selected item will be purchased if you have enough money for it. You can choose to not buy anything. While in the shop, sabotage to cycle between the available items.",
"Bargainer.StartingMoney": "Starting Money",
"Bargainer.Kill.Enabled": "Gain Money for Killing",
"Bargainer.Kill.Amount": "Money Gained for Killing",
"Bargainer.Sabotage.Enabled": "Gain Money for Sabotaging",
"Bargainer.Sabotage.Amount": "Money Gained for Sabotaging",
"Bargainer.SurviveMeeting.Enabled": "Gain Money for Surviving Meetings",
"Bargainer.SurviveMeeting.Amount": "Money Gained for Surviving Meetings",
"Bargainer.EnergyDrink.Enabled": "Energy Drink Enabled",
"Bargainer.EnergyDrink.Cost": "Energy Drink Cost",
"Bargainer.LensOfTruth.Enabled": "Lens Of Truth Enabled",
"Bargainer.LensOfTruth.Cost": "Lens Of Truth Cost",
"Bargainer.BandAid.Enabled": "Band Aid Enabled",
"Bargainer.BandAid.Cost": "Band Aid Cost",
"Bargainer.BandAid.Duration": "Band Aid Duration",
"Bargainer.BandAid.DurationSwitch": "Band Aid Lasts",
"Bargainer.EnergyDrink.ReducedKCD": "Energy Drink Reduced Kill Cooldown",
"Bargainer.LensOfTruth.Duration": "Lens Of Truth Duration",
"Bargainer.LensOfTruth.DurationSwitch": "Lens Of Truth Lasts",
"Bargainer.Notify.PurchasedItem": "You have purchased a(n) {0}",
"Bargainer.None": "No Item",
"Bargainer.EnergyDrink": "Energy Drink",
"Bargainer.LensOfTruth": "Lens Of Truth",
"Bargainer.BandAid": "Band Aid",
"Bargainer.Suffix.InShop": "<size=80%>[<#00ffa5>Shop</color>] Selected: {0} ({1})</size>",
"Forever": "Forever",
"UntilNextMeeting": "Until Next Meeting",
"UntilNextReveal": "Until Next Reveal",
"ForSpecifiedTime": "For Specified Time",
"SchrodingersCat": "Schrödinger's Cat",
"SchrodingersCatInfo": "Get Attacked to Get a Role",
"SchrodingersCatInfoLong": "(Neutrals):\\nAs Schrödinger's Cat, if you get attacked, you turn into the same role as your killer.\\nIf you don't get attacked, you lose, or you can win with crewmates, depending on the settings.",
"SchrodingersCat.WinsWithCrewIfNotAttacked": "Wins with crewmates if not attacked",
"SchrodingersCat.Notify.KillerRecruited": "You have recruited the {1}! {0} now has the same role as you.",
"SchrodingersCat.Notify.RecruitedByKiller": "You have been recruited by the {1}! You now have the same role as {0}.",
"Cherokious": "Cherokious",
"CherokiousInfo": "Do tasks to get Bullets to Kill",
"CherokiousInfoLong": "(Neutrals):\\nAs the Cherokious, you can get bullets by completing tasks. You can kill by petting your pet near someone. You can only kill if you have bullets.",
"Autocrat": "Autocrat",
"AutocratInfo": "TP nearest player to you by doing a task",
"AutocratInfoLong": "(Crewmates):\\nAs the Autocrat, when you complete a task, you teleport the nearest player to you.",
@@ -2829,9 +2892,9 @@
"StealthDarkened": "Darkened: {0}",
"StealthExcludeImpostors": "Ignore Impostors when Blinding",
"StealthDarkenDuration": "Blinding Duration",
"Analyzer": "Analyzer",
"AnalyzerInfo": "Analyze Players to Get Information",
"AnalyzerInfoLong": "(Crewmates):\\nAs the Analyzer, you may use your kill button on someone to analyze them. You will have to stand next to your target for a few seconds to complete the analysis. When the analysis is complete, you will see how many players they've killed so far, how many times they've vented so far, and their role basis.\\n\\nNote: If the host's settings don't allow you to see an information, the result will show 0 or nothing!\\nNote: None of these factors determine whether someone is evil or not! Think twice before judging too fast!",
"Analyst": "Analyst",
"AnalystInfo": "Analyze Players to Get Information",
"AnalystInfoLong": "(Crewmates):\\nAs the Analyst, you may use your kill button on someone to analyze them. You will have to stand next to your target for a few seconds to complete the analysis. When the analysis is complete, you will see how many players they've killed so far, how many times they've vented so far, and their role basis.\\n\\nNote: If the host's settings don't allow you to see an information, the result will show 0 or nothing!\\nNote: None of these factors determine whether someone is evil or not! Think twice before judging too fast!",
"AnalyzerCD": "Analyze Cooldown",
"AnalyzerDur": "Analyze Time",
"AnalyzerResult": "\\n\\nShowing analyzation result for <color=#00ffa5>{0}</color>:\\nKills: <color=#ff1919>{1}</color>, Vents: <color=#ffa500>{2}</color>, Role Basis: <color=#00ffff>{3}</color>",
@@ -3110,7 +3173,7 @@
"SilenceMode": "Silencing Method",
"Adventurer": "Adventurer",
"AdventurerInfo": "Collect Resources to Perform Actions",
"AdventurerInfoLong": "(Crewmates):\\nAs the Adventurer, you can collect resources listed below and craft them into weapons if you have the required amount of materials for it.<size=70%>\\n\\n<u><b>Resources (and how to obtain them):</b></u>\\n- ❖ (Complete a Task)\\n- Θ (Players Leave This Behind<sup>*</sup>)\\n- ♳ (Dead Bodies<sup>*</sup>)\\n- ⁂ (Shapeshift Skins<sup>*</sup>)\\n- \u2600 (Fix Lights)\\n- ○ (Found in Groups<sup>*</sup>)\\n<size=50%><sup>*</sup> When this resource is available somewhere, you get an arrow pointing towards that location. (Except dead bodies.) Go there to collect it.</size>\\n\\n<u><b>Weapons (and their ingredients):</b></u>\\n- Gun (1 ♳ + 1 ❖) (Kill someone (pet near them))\\n- Shield (3 ❖) (Gives someone a 1-time shield)\\n- Lantern (1 \u2600 + 1 ❖) (Increases crewmates' vision for some time)\\n- Portal (2 Θ) (Swaps you with a random player)\\n- Wrench (1 \u2600 + 2 ❖) (Clears the current sabotage)\\n- Proxy (2 ○ + 1 ❖) (Gives you +1 vote in the next meeting)\\n- Prediction (1 ♳ + 2 ⁂ + 1 ❖) (Reveals the nearest player's role)\\n- RNG (2 Θ + 2 ❖) (Makes a random weapon)</size>",
"AdventurerInfoLong": "(Crewmates):\\nAs the Adventurer, you can collect resources listed below and craft them into weapons if you have the required amount of materials for it.<size=70%>\\n\\n<u><b>Resources (and how to obtain them):</b></u>\\n- ❖ (Complete a Task)\\n- Θ (Players Leave This Behind<sup>*</sup>)\\n- ♳ (Dead Bodies<sup>*</sup>)\\n- ⁂ (Shapeshift Skins<sup>*</sup>)\\n- \u2600 (Fix Lights)\\n- ○ (Found in Groups<sup>*</sup>)\\n<size=50%><sup>*</sup> When this resource is available somewhere, you get an arrow pointing towards that location. (Except dead bodies.) Go there to collect it.</size>\\n\\n<u><b>Weapons (and their ingredients):</b></u>\\n- Gun (1 ♳ + 1 ❖) (Kill nearest player)\\n- Shield (3 ❖) (Gives nearest player a 1-time shield)\\n- Lantern (1 \u2600 + 1 ❖) (Increases crewmates' vision for some time)\\n- Portal (2 Θ) (Swaps you with a random player)\\n- Wrench (1 \u2600 + 2 ❖) (Clears the current sabotage)\\n- Proxy (2 ○ + 1 ❖) (Gives you +1 vote in the next meeting)\\n- Prediction (1 ♳ + 2 ⁂ + 1 ❖) (Reveals the nearest player's role)\\n- RNG (2 Θ + 2 ❖) (Makes a random weapon)</size>\\n\\nTo use your weapons, pet your pet.",
"AdventurerWeaponDescription.Gun": "Kill the next player you go near",
"AdventurerWeaponDescription.Shield": "Gives someone a 1-time shield",
"AdventurerWeaponDescription.Lantern": "Increases crewmates' vision for some time",
@@ -3319,6 +3382,19 @@
"TrollInfoLong": "GET KILLED TO WIN",
"TrollVision": "Troll Vision",
"TrollSpeed": "Troll Speed",
"Generator": "Generator",
"GeneratorInfo": "Power up the ship",
"GeneratorInfoLong": "(Impostors):\\nAs the Generator, you generate charges every second. You can only kill/vent/shapeshift/sabotage if you have enough charges to do so. You also lose charges while shapeshifted.",
"Generator.ChargesGainedEverySecond": "Charges Gained Every Second",
"Generator.StartingCharges": "Starting Charges",
"Generator.ChargesLostWhileShiftedPerSecond": "Charges Lost While Shifted Per Second",
"Generator.MaxChargesStored": "Maximum Charges Stored",
"Generator.Kill.Cost": "Charges Needed to Kill",
"Generator.Vent.Cost": "Charges Needed to Vent",
"Generator.Sabotage.Cost": "Charges Needed to Sabotage",
"Generator.Shapeshift.Cost": "Charges Needed to Shapeshift",
"Generator.Notify.RevertShapeshift": "You ran out of charges, so shapeshifting was reverted",
"Generator.Notify.NotEnoughCharges": "You don't have enough charges ({0}) to do that",
"GNoCommandInfo": "<b>This Command can only be used when in lobby or after you die.</b>\\n\\ntype <b>/gno X</b> to play guess a number. X can be a number between 0 and 99 (both included). \\n\\nYou get maximum of <color=#ff0000>7 tries</color> to guess the number.\\n\\n Example:- <b>/gno 10</b>",
"GNoLost": "Oh, you were so close! Just one more guess, and you might have deciphered the Da Vinci code! By the way, <color=#ff0000>the secret number was... {0}!</color> But hey, you were only off by a few billion possibilities. Better luck next time, Sherlock! ",
"GNoLow": "Oh, you're really nailing this! It's so low, I almost need a shovel to dig it up!\\nYou have <color=#ff0000>{0} guesses</color> left!",
+3 -3
View File
@@ -2820,9 +2820,9 @@
"StealthDarkened": "Cegado: {0}",
"StealthExcludeImpostors": "Ignorar Impostores ao Cegar",
"StealthDarkenDuration": "Duração da Visão Zero",
"Analyzer": "Analisador",
"AnalyzerInfo": "Analize jogadores para obter Informações",
"AnalyzerInfoLong": "(Tripulantes):\\nComo Analisador, você pode usar seu botão matar para analizar um jogador. Você deverá ficar ao lado do alvo por alguns segundos para concluir a analise. Quando a analise estiver completa, Você verá quantos jogadores ele matou, quantoas vezes ele entrou no duto e a sua função base.\\n\\nNota: Se as configurações do Anfitrião não permitirem você ver uma informação, o resultado será 0 ou nada!\\nNota: Nenhum destes fatores determinam se o jogador e maligno ou não! Pense duas vezes antes de acusar!",
"Analyst": "Analisador",
"AnalystInfo": "Analize jogadores para obter Informações",
"AnalystInfoLong": "(Tripulantes):\\nComo Analisador, você pode usar seu botão matar para analizar um jogador. Você deverá ficar ao lado do alvo por alguns segundos para concluir a analise. Quando a analise estiver completa, Você verá quantos jogadores ele matou, quantoas vezes ele entrou no duto e a sua função base.\\n\\nNota: Se as configurações do Anfitrião não permitirem você ver uma informação, o resultado será 0 ou nada!\\nNota: Nenhum destes fatores determinam se o jogador e maligno ou não! Pense duas vezes antes de acusar!",
"AnalyzerCD": "Recarga para analisar",
"AnalyzerDur": "Duração da analise",
"AnalyzerResult": "n\\nMostrando resultados da analise de <color=#00ffa5>{0}</color>:\\nAbates: <color=#ff1919>{1}</color>, Usou dutos: <color=#ffa500>{2}</color>, Função Base: <color=#00ffff>{3}</color>",
+5 -5
View File
@@ -9,16 +9,16 @@ namespace EHR.Roles.AddOns.Common
public void SetupCustomOption()
{
SetupAdtRoleOptions(222420, CustomRoles.Antidote, canSetNum: true);
ImpCanBeAntidote = BooleanOptionItem.Create(222426, "ImpCanBeAntidote", true, TabGroup.Addons, false)
ImpCanBeAntidote = BooleanOptionItem.Create(222426, "ImpCanBeAntidote", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Antidote]);
CrewCanBeAntidote = BooleanOptionItem.Create(222427, "CrewCanBeAntidote", true, TabGroup.Addons, false)
CrewCanBeAntidote = BooleanOptionItem.Create(222427, "CrewCanBeAntidote", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Antidote]);
NeutralCanBeAntidote = BooleanOptionItem.Create(222423, "NeutralCanBeAntidote", true, TabGroup.Addons, false)
NeutralCanBeAntidote = BooleanOptionItem.Create(222423, "NeutralCanBeAntidote", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Antidote]);
AntidoteCDOpt = FloatOptionItem.Create(222424, "AntidoteCDOpt", new(0f, 180f, 1f), 5f, TabGroup.Addons, false)
AntidoteCDOpt = FloatOptionItem.Create(222424, "AntidoteCDOpt", new(0f, 180f, 1f), 5f, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Antidote])
.SetValueFormat(OptionFormat.Seconds);
AntidoteCDReset = BooleanOptionItem.Create(222425, "AntidoteCDReset", true, TabGroup.Addons, false)
AntidoteCDReset = BooleanOptionItem.Create(222425, "AntidoteCDReset", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Antidote]);
}
}
+4 -4
View File
@@ -12,16 +12,16 @@ namespace EHR.Roles.AddOns.Common
public void SetupCustomOption()
{
SetupAdtRoleOptions(15420, CustomRoles.Asthmatic, canSetNum: true);
AsthmaticMinRedTime = IntegerOptionItem.Create(15423, "AsthmaticMinRedTime", new(1, 90, 1), 5, TabGroup.Addons, false)
AsthmaticMinRedTime = IntegerOptionItem.Create(15423, "AsthmaticMinRedTime", new(1, 90, 1), 5, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Asthmatic])
.SetValueFormat(OptionFormat.Seconds);
AsthmaticMaxRedTime = IntegerOptionItem.Create(15424, "AsthmaticMaxRedTime", new(1, 90, 1), 30, TabGroup.Addons, false)
AsthmaticMaxRedTime = IntegerOptionItem.Create(15424, "AsthmaticMaxRedTime", new(1, 90, 1), 30, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Asthmatic])
.SetValueFormat(OptionFormat.Seconds);
AsthmaticMinGreenTime = IntegerOptionItem.Create(15425, "AsthmaticMinGreenTime", new(1, 90, 1), 5, TabGroup.Addons, false)
AsthmaticMinGreenTime = IntegerOptionItem.Create(15425, "AsthmaticMinGreenTime", new(1, 90, 1), 5, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Asthmatic])
.SetValueFormat(OptionFormat.Seconds);
AsthmaticMaxGreenTime = IntegerOptionItem.Create(15426, "AsthmaticMaxGreenTime", new(1, 90, 1), 30, TabGroup.Addons, false)
AsthmaticMaxGreenTime = IntegerOptionItem.Create(15426, "AsthmaticMaxGreenTime", new(1, 90, 1), 30, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Asthmatic])
.SetValueFormat(OptionFormat.Seconds);
}
+3 -3
View File
@@ -9,11 +9,11 @@ namespace EHR.Roles.AddOns.Common
public void SetupCustomOption()
{
SetupAdtRoleOptions(13600, CustomRoles.Autopsy, canSetNum: true);
ImpCanBeAutopsy = BooleanOptionItem.Create(13610, "ImpCanBeAutopsy", true, TabGroup.Addons, false)
ImpCanBeAutopsy = BooleanOptionItem.Create(13610, "ImpCanBeAutopsy", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Autopsy]);
CrewCanBeAutopsy = BooleanOptionItem.Create(13611, "CrewCanBeAutopsy", true, TabGroup.Addons, false)
CrewCanBeAutopsy = BooleanOptionItem.Create(13611, "CrewCanBeAutopsy", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Autopsy]);
NeutralCanBeAutopsy = BooleanOptionItem.Create(13612, "NeutralCanBeAutopsy", true, TabGroup.Addons, false)
NeutralCanBeAutopsy = BooleanOptionItem.Create(13612, "NeutralCanBeAutopsy", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Autopsy]);
}
}
+1 -1
View File
@@ -7,7 +7,7 @@
public void SetupCustomOption()
{
Options.SetupAdtRoleOptions(15100, CustomRoles.Avanger, canSetNum: true);
Options.ImpCanBeAvanger = BooleanOptionItem.Create(15110, "ImpCanBeAvanger", false, TabGroup.Addons, false)
Options.ImpCanBeAvanger = BooleanOptionItem.Create(15110, "ImpCanBeAvanger", false, TabGroup.Addons)
.SetParent(Options.CustomRoleSpawnChances[CustomRoles.Avanger]);
}
}
+8 -8
View File
@@ -9,23 +9,23 @@ namespace EHR.Roles.AddOns.Common
public void SetupCustomOption()
{
SetupAdtRoleOptions(13700, CustomRoles.Bait, canSetNum: true);
ImpCanBeBait = BooleanOptionItem.Create(13710, "ImpCanBeBait", true, TabGroup.Addons, false)
ImpCanBeBait = BooleanOptionItem.Create(13710, "ImpCanBeBait", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Bait]);
CrewCanBeBait = BooleanOptionItem.Create(13711, "CrewCanBeBait", true, TabGroup.Addons, false)
CrewCanBeBait = BooleanOptionItem.Create(13711, "CrewCanBeBait", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Bait]);
NeutralCanBeBait = BooleanOptionItem.Create(13712, "NeutralCanBeBait", true, TabGroup.Addons, false)
NeutralCanBeBait = BooleanOptionItem.Create(13712, "NeutralCanBeBait", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Bait]);
BaitDelayMin = FloatOptionItem.Create(13713, "BaitDelayMin", new(0f, 90f, 1f), 0f, TabGroup.Addons, false)
BaitDelayMin = FloatOptionItem.Create(13713, "BaitDelayMin", new(0f, 90f, 1f), 0f, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Bait])
.SetValueFormat(OptionFormat.Seconds);
BaitDelayMax = FloatOptionItem.Create(13714, "BaitDelayMax", new(0f, 90f, 1f), 0f, TabGroup.Addons, false)
BaitDelayMax = FloatOptionItem.Create(13714, "BaitDelayMax", new(0f, 90f, 1f), 0f, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Bait])
.SetValueFormat(OptionFormat.Seconds);
BaitDelayNotify = BooleanOptionItem.Create(13715, "BaitDelayNotify", true, TabGroup.Addons, false)
BaitDelayNotify = BooleanOptionItem.Create(13715, "BaitDelayNotify", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Bait]);
BaitNotification = BooleanOptionItem.Create(13716, "BaitNotification", false, TabGroup.Addons, false)
BaitNotification = BooleanOptionItem.Create(13716, "BaitNotification", false, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Bait]);
ReportBaitAtAllCost = BooleanOptionItem.Create(13717, "ReportBaitAtAllCost", false, TabGroup.Addons, false)
ReportBaitAtAllCost = BooleanOptionItem.Create(13717, "ReportBaitAtAllCost", false, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Bait]);
}
}
+4 -4
View File
@@ -9,14 +9,14 @@ namespace EHR.Roles.AddOns.Common
public void SetupCustomOption()
{
SetupAdtRoleOptions(15200, CustomRoles.Bewilder, canSetNum: true);
BewilderVision = FloatOptionItem.Create(15210, "BewilderVision", new(0f, 5f, 0.05f), 0.6f, TabGroup.Addons, false)
BewilderVision = FloatOptionItem.Create(15210, "BewilderVision", new(0f, 5f, 0.05f), 0.6f, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Bewilder])
.SetValueFormat(OptionFormat.Multiplier);
ImpCanBeBewilder = BooleanOptionItem.Create(15211, "ImpCanBeBewilder", true, TabGroup.Addons, false)
ImpCanBeBewilder = BooleanOptionItem.Create(15211, "ImpCanBeBewilder", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Bewilder]);
CrewCanBeBewilder = BooleanOptionItem.Create(15212, "CrewCanBeBewilder", true, TabGroup.Addons, false)
CrewCanBeBewilder = BooleanOptionItem.Create(15212, "CrewCanBeBewilder", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Bewilder]);
NeutralCanBeBewilder = BooleanOptionItem.Create(15213, "NeutralCanBeBewilder", true, TabGroup.Addons, false)
NeutralCanBeBewilder = BooleanOptionItem.Create(15213, "NeutralCanBeBewilder", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Bewilder]);
}
}
+3 -3
View File
@@ -9,11 +9,11 @@ namespace EHR.Roles.AddOns.Common
public void SetupCustomOption()
{
SetupAdtRoleOptions(14900, CustomRoles.Brakar, canSetNum: true);
ImpCanBeTiebreaker = BooleanOptionItem.Create(14910, "ImpCanBeTiebreaker", true, TabGroup.Addons, false)
ImpCanBeTiebreaker = BooleanOptionItem.Create(14910, "ImpCanBeTiebreaker", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Brakar]);
CrewCanBeTiebreaker = BooleanOptionItem.Create(14911, "CrewCanBeTiebreaker", true, TabGroup.Addons, false)
CrewCanBeTiebreaker = BooleanOptionItem.Create(14911, "CrewCanBeTiebreaker", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Brakar]);
NeutralCanBeTiebreaker = BooleanOptionItem.Create(14912, "NeutralCanBeTiebreaker", true, TabGroup.Addons, false)
NeutralCanBeTiebreaker = BooleanOptionItem.Create(14912, "NeutralCanBeTiebreaker", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Brakar]);
}
}
+2 -2
View File
@@ -9,9 +9,9 @@ namespace EHR.Roles.AddOns.Common
public void SetupCustomOption()
{
SetupAdtRoleOptions(15290, CustomRoles.Busy, canSetNum: true);
BusyLongTasks = IntegerOptionItem.Create(15293, "BusyLongTasks", new(0, 90, 1), 1, TabGroup.Addons, false)
BusyLongTasks = IntegerOptionItem.Create(15293, "BusyLongTasks", new(0, 90, 1), 1, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Busy]);
BusyShortTasks = IntegerOptionItem.Create(15294, "BusyShortTasks", new(0, 90, 1), 1, TabGroup.Addons, false)
BusyShortTasks = IntegerOptionItem.Create(15294, "BusyShortTasks", new(0, 90, 1), 1, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Busy]);
}
}
+3 -3
View File
@@ -1,5 +1,5 @@
using EHR.Roles.Impostor;
using System.Collections.Generic;
using System.Collections.Generic;
using EHR.Roles.Impostor;
using static EHR.Options;
namespace EHR.Roles.AddOns.Common
@@ -11,7 +11,7 @@ namespace EHR.Roles.AddOns.Common
public void SetupCustomOption()
{
SetupAdtRoleOptions(15430, CustomRoles.Disco, canSetNum: true);
DiscoChangeInterval = IntegerOptionItem.Create(15433, "DiscoChangeInterval", new(1, 90, 1), 5, TabGroup.Addons, false)
DiscoChangeInterval = IntegerOptionItem.Create(15433, "DiscoChangeInterval", new(1, 90, 1), 5, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Disco])
.SetValueFormat(OptionFormat.Seconds);
}
+5 -5
View File
@@ -9,16 +9,16 @@ namespace EHR.Roles.AddOns.Common
public void SetupCustomOption()
{
SetupAdtRoleOptions(111420, CustomRoles.Diseased, canSetNum: true);
ImpCanBeDiseased = BooleanOptionItem.Create(111426, "ImpCanBeDiseased", true, TabGroup.Addons, false)
ImpCanBeDiseased = BooleanOptionItem.Create(111426, "ImpCanBeDiseased", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Diseased]);
CrewCanBeDiseased = BooleanOptionItem.Create(111427, "CrewCanBeDiseased", true, TabGroup.Addons, false)
CrewCanBeDiseased = BooleanOptionItem.Create(111427, "CrewCanBeDiseased", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Diseased]);
NeutralCanBeDiseased = BooleanOptionItem.Create(111423, "NeutralCanBeDiseased", true, TabGroup.Addons, false)
NeutralCanBeDiseased = BooleanOptionItem.Create(111423, "NeutralCanBeDiseased", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Diseased]);
DiseasedCDOpt = FloatOptionItem.Create(111424, "DiseasedCDOpt", new(0f, 180f, 1f), 25f, TabGroup.Addons, false)
DiseasedCDOpt = FloatOptionItem.Create(111424, "DiseasedCDOpt", new(0f, 180f, 1f), 25f, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Diseased])
.SetValueFormat(OptionFormat.Seconds);
DiseasedCDReset = BooleanOptionItem.Create(111425, "DiseasedCDReset", true, TabGroup.Addons, false)
DiseasedCDReset = BooleanOptionItem.Create(111425, "DiseasedCDReset", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.Diseased]);
}
}
+3 -3
View File
@@ -17,11 +17,11 @@ namespace EHR.Roles.AddOns.Common
public void SetupCustomOption()
{
SetupAdtRoleOptions(13900, CustomRoles.DoubleShot, canSetNum: true, tab: TabGroup.Addons);
ImpCanBeDoubleShot = BooleanOptionItem.Create(13910, "ImpCanBeDoubleShot", true, TabGroup.Addons, false)
ImpCanBeDoubleShot = BooleanOptionItem.Create(13910, "ImpCanBeDoubleShot", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.DoubleShot]);
CrewCanBeDoubleShot = BooleanOptionItem.Create(13911, "CrewCanBeDoubleShot", true, TabGroup.Addons, false)
CrewCanBeDoubleShot = BooleanOptionItem.Create(13911, "CrewCanBeDoubleShot", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.DoubleShot]);
NeutralCanBeDoubleShot = BooleanOptionItem.Create(13912, "NeutralCanBeDoubleShot", true, TabGroup.Addons, false)
NeutralCanBeDoubleShot = BooleanOptionItem.Create(13912, "NeutralCanBeDoubleShot", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.DoubleShot]);
}
}
+3 -3
View File
@@ -9,11 +9,11 @@ namespace EHR.Roles.AddOns.Common
public void SetupCustomOption()
{
SetupAdtRoleOptions(14700, CustomRoles.DualPersonality, canSetNum: true);
ImpCanBeDualPersonality = BooleanOptionItem.Create(14710, "ImpCanBeDualPersonality", true, TabGroup.Addons, false)
ImpCanBeDualPersonality = BooleanOptionItem.Create(14710, "ImpCanBeDualPersonality", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.DualPersonality]);
CrewCanBeDualPersonality = BooleanOptionItem.Create(14711, "CrewCanBeDualPersonality", true, TabGroup.Addons, false)
CrewCanBeDualPersonality = BooleanOptionItem.Create(14711, "CrewCanBeDualPersonality", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.DualPersonality]);
DualVotes = BooleanOptionItem.Create(14712, "DualVotes", true, TabGroup.Addons, false)
DualVotes = BooleanOptionItem.Create(14712, "DualVotes", true, TabGroup.Addons)
.SetParent(CustomRoleSpawnChances[CustomRoles.DualPersonality]);
}
}
+1 -1
View File
@@ -7,7 +7,7 @@
public void SetupCustomOption()
{
Options.SetupAdtRoleOptions(18700, CustomRoles.Flashman, canSetNum: true, tab: TabGroup.Addons);
Options.FlashmanSpeed = FloatOptionItem.Create(18703, "FlashmanSpeed", new(0.25f, 3f, 0.25f), 2.5f, TabGroup.Addons, false)
Options.FlashmanSpeed = FloatOptionItem.Create(18703, "FlashmanSpeed", new(0.25f, 3f, 0.25f), 2.5f, TabGroup.Addons)
.SetParent(Options.CustomRoleSpawnChances[CustomRoles.Flashman])
.SetValueFormat(OptionFormat.Multiplier);
}
Loaded 100 of 371 files, more files were not shown because too many files have changed in this diff. Show more