mirror of
https://github.com/Gurge44/EndlessHostRoles.git
synced 2026-10-19 15:51:58 +00:00
changelog
This commit is contained in:
1 parent
dc75134e78
commit
18f009e861
8 files changed
+59
-18
No files matched your search
+30
-2
@@ -3,9 +3,37 @@
|
||||
> [!CAUTION]
|
||||
> **Use commands with a `/cmd ` prefix, otherwise your message gets leaked.** So if you were to type `/bt 4 snitch`, you would now type `/cmd bt 4 snitch`. The system will NOT spam the chat after command usage even if it would be required.
|
||||
|
||||
- Fixed translations not loading
|
||||
- **Fixed translations not loading**
|
||||
- **Fixed players not dying after meetings**
|
||||
- **Fixed kill buttons not working in FFA**
|
||||
- **Fixed shapeshift abilities not working for non-host modded clients**
|
||||
- Widened the lines in the Preset Explorer so the text fits into the box
|
||||
- There's now a button to show a preset's description in the Preset Explorer
|
||||
- Fixed add-on limit ignoring setting
|
||||
- Meeting shapeshift settings are gone, it's no longer needed because of the foolproof /cmd way.
|
||||
- Deaths due to disasters in Solo PVP, King Of The Zones, and Bed Wars are now temporary (when Natural Disasters is integrated)
|
||||
- Optimized code for Capture The Flag, Hot Potato, King Of The Zones, and Snowdown
|
||||
- Fixed incorrect kill cooldowns in Hot Potato, and Snowdown
|
||||
- Improved role selection logic
|
||||
- Fixed host being able to kill through walls in some game modes
|
||||
- Flash, Giant, and Mare no longer bypass freezing abilites
|
||||
- Auto Team Size adjustments no longer happen if there are no changes in settings
|
||||
- Fixed Necronomicon hold not syncing for non-host modded clients
|
||||
- Fixed Stained not syncing with non-host modded clients
|
||||
- New commands: `/neutralinfo`, `/coveninfo`, does what you think it does
|
||||
- Drafting options no longer re-send for a player if they've already drafted
|
||||
- Schrödinger's Cat is now guessable (hopefully)
|
||||
- Settings UI no longer scrolls while chat is open (by Tommy-XL)
|
||||
- Search bar scrolls to top in settings UI on ENTER press (by Tommy-XL)
|
||||
- Fixed player info not showing above the host in a non-host modded client POV
|
||||
- Fixed missing strings
|
||||
- Fixed punctuation mistakes in strings (by WaterPanda)
|
||||
- Fixed devoured players losing their pet when using them as ability triggers
|
||||
- Fixed Werewolf not getting a kill button as a non-host modded client
|
||||
- New setting for Simon: `Ability Cooldown`
|
||||
- New setting for Slenderman: `Blinding Affects Players Inside Vents`
|
||||
|
||||
## Lobby Settings Viewer (by Tommy-XL)
|
||||
- Modded clients can now use the `View` button in lobby to see all modded settings, roles, add-ons, and their current values
|
||||
- Removed the manual option shower on the left side of the screen
|
||||
|
||||
---
|
||||
@@ -148,7 +148,7 @@ public static class NaturalDisasters
|
||||
{
|
||||
var allRooms = ShipStatus.Instance.AllRooms;
|
||||
var collapsedRooms = BuildingCollapse.CollapsedRooms;
|
||||
string cb = allRooms.Count / 2 < collapsedRooms.Count
|
||||
string cb = allRooms.Count / 2 <= collapsedRooms.Count
|
||||
? (string.Format(Translator.GetString("AvailableBuildings"), allRooms.Count != collapsedRooms.Count
|
||||
? allRooms.Select(x => x.RoomId).Where(x => x is not (SystemTypes.Hallway or SystemTypes.Outside) && !x.ToString().Contains("Decontamination")).Except(collapsedRooms.ConvertAll(x => x.RoomId)).Select(x => Translator.GetString($"{x}")).Distinct().Join()
|
||||
: $"<#ff0000>{Translator.GetString("None")}</color>"))
|
||||
|
||||
@@ -1840,6 +1840,10 @@ internal static class ExtendedPlayerControl
|
||||
return Main.PlayerStates[pc.PlayerId].SubRoles.Any(x => x.IsEvilAddon());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets a players kill cooldown without syncing settings.
|
||||
/// When using this method, ResetKillCooldown should set the player's kill cooldown to twice the value.
|
||||
/// </summary>
|
||||
public static void SetKillCooldownNonSync(this PlayerControl pc, float kcd)
|
||||
{
|
||||
if (pc.AmOwner)
|
||||
@@ -1854,10 +1858,10 @@ internal static class ExtendedPlayerControl
|
||||
}
|
||||
else
|
||||
{
|
||||
// ResetKillCooldown sets every player's kill cooldown to twice the value.
|
||||
// When using this method, ResetKillCooldown should set the player's kill cooldown to twice the value.
|
||||
// MurderPlayer RPC with FailedProtected flag sets a player's kill cooldown to half the set value.
|
||||
// *2 /2 = the value we began with. This avoids syncing settings on every CheckMurder.
|
||||
// This works because the kill cooldown is consistent throughout the entire game.
|
||||
// This works if the kill cooldown is consistent throughout the entire game.
|
||||
MessageWriter writer = AmongUsClient.Instance.StartRpcImmediately(pc.NetId, (byte)RpcCalls.MurderPlayer, SendOption.Reliable, pc.OwnerId);
|
||||
writer.WriteNetObject(pc);
|
||||
writer.Write((int)MurderResultFlags.FailedProtected);
|
||||
|
||||
+11
-6
@@ -962,7 +962,7 @@ public static class Options
|
||||
GroupAddons();
|
||||
LoadUserData();
|
||||
Achievements.LoadAllData();
|
||||
OptionShower.LastText = Translator.GetString("Loading");
|
||||
// OptionShower.LastText = Translator.GetString("Loading");
|
||||
|
||||
if (AllCrewRolesHaveVanillaColor.GetBool())
|
||||
{
|
||||
@@ -1943,11 +1943,13 @@ public static class Options
|
||||
.SetParent(FungleChance)
|
||||
.SetValueFormat(OptionFormat.Players);
|
||||
|
||||
OverrideSpeedForEachMap = new BooleanOptionItem(20782, "OverrideSpeedForEachMap", false, TabGroup.GameSettings);
|
||||
OverrideSpeedForEachMap = new BooleanOptionItem(20782, "OverrideSpeedForEachMap", false, TabGroup.GameSettings)
|
||||
.SetColor(new Color32(19, 188, 233, byte.MaxValue));
|
||||
|
||||
MapSpeeds = Enum.GetValues<MapNames>().ToDictionary(x => x, x => new FloatOptionItem(20783 + (int)x, "SpeedForMap", new(0.05f, 3f, 0.05f), 1.25f, TabGroup.GameSettings)
|
||||
.SetParent(OverrideSpeedForEachMap)
|
||||
.SetValueFormat(OptionFormat.Multiplier)
|
||||
.SetColor(new Color32(19, 188, 233, byte.MaxValue))
|
||||
.AddReplacement(("{map}", Translator.GetString(x.ToString()))));
|
||||
|
||||
LoadingPercentage = 69;
|
||||
@@ -3069,11 +3071,13 @@ public static class Options
|
||||
.SetColor(new Color32(193, 255, 209, byte.MaxValue))
|
||||
.SetParent(EnableGameTimeLimit);
|
||||
|
||||
OverrideVisionInVents = new BooleanOptionItem(19436, "OverrideVisionInVents", false, TabGroup.GameSettings);
|
||||
OverrideVisionInVents = new BooleanOptionItem(19436, "OverrideVisionInVents", false, TabGroup.GameSettings)
|
||||
.SetColor(new Color32(193, 255, 209, byte.MaxValue));
|
||||
|
||||
InVentVision = Enum.GetValues<Team>()[1..].ToDictionary(x => x, x => new FloatOptionItem(19437 + (int)x, "InVentVisionForTeam", new(0f, 1.3f, 0.05f), x == Team.Crewmate ? 0f : 0.5f, TabGroup.GameSettings)
|
||||
.SetParent(OverrideVisionInVents)
|
||||
.SetValueFormat(OptionFormat.Multiplier)
|
||||
.SetColor(new Color32(193, 255, 209, byte.MaxValue))
|
||||
.AddReplacement(("{team}", Utils.ColorString(x.GetColor(), Translator.GetString($"Type{x}")))));
|
||||
|
||||
|
||||
@@ -3290,10 +3294,11 @@ public static class Options
|
||||
if (!AmongUsClient.Instance.AmHost || !EnableAutoFactionMinMaxSettings.GetBool()) return;
|
||||
|
||||
int playerCount = PlayerControl.AllPlayerControls.Count;
|
||||
if (playerCount == LastUsedPlayerCount) return;
|
||||
var filtered = AutoFactionMinMaxSettings.FindAll(x => x.MinPlayersToActivate.GetInt() > 0 && x.MinPlayersToActivate.GetInt() <= playerCount);
|
||||
if (filtered.Count == 0) return;
|
||||
var usedValues = filtered.MaxBy(x => x.MinPlayersToActivate.GetInt());
|
||||
var usedPlayerCount = usedValues.MinPlayersToActivate.GetInt();
|
||||
if (usedPlayerCount == LastUsedPlayerCount) return;
|
||||
|
||||
foreach ((Team team, (OptionItem minSetting, OptionItem maxSetting)) in FactionMinMaxSettings)
|
||||
{
|
||||
@@ -3308,9 +3313,9 @@ public static class Options
|
||||
OptionSaver.Save();
|
||||
OptionItem.SyncAllOptions();
|
||||
|
||||
Logger.SendInGame(string.Format(Translator.GetString("AutoFactionMinMaxSettings.Applied"), playerCount, usedValues.MinPlayersToActivate.GetInt(), string.Join(", ", new[] { Team.Impostor, Team.Coven, Team.Neutral }.Select(x => $"{Utils.ColorString(x.GetColor(), Translator.GetString($"ShortTeamName.{x}").ToUpper())}: <#ffffff>{usedValues.TeamSettings[x].MinSetting.GetInt()}-{usedValues.TeamSettings[x].MaxSetting.GetInt()}</color>")), usedValues.MinNNKs.GetInt(), usedValues.MaxNNKs.GetInt()));
|
||||
Logger.SendInGame(string.Format(Translator.GetString("AutoFactionMinMaxSettings.Applied"), playerCount, usedPlayerCount, string.Join(", ", new[] { Team.Impostor, Team.Coven, Team.Neutral }.Select(x => $"{Utils.ColorString(x.GetColor(), Translator.GetString($"ShortTeamName.{x}").ToUpper())}: <#ffffff>{usedValues.TeamSettings[x].MinSetting.GetInt()}-{usedValues.TeamSettings[x].MaxSetting.GetInt()}</color>")), usedValues.MinNNKs.GetInt(), usedValues.MaxNNKs.GetInt()));
|
||||
|
||||
LastUsedPlayerCount = playerCount;
|
||||
LastUsedPlayerCount = usedPlayerCount;
|
||||
}
|
||||
catch (Exception e) { Utils.ThrowException(e); }
|
||||
}
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
// Now EHR uses LobbyViewSettingsPane instead of this
|
||||
|
||||
/*
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@@ -17,7 +20,7 @@ public static class OptionShower
|
||||
|
||||
static OptionShower() { }
|
||||
|
||||
// Now EHR use LobbyViewSettingsPane instead of this
|
||||
|
||||
public static string GetTextNoFresh()
|
||||
{
|
||||
try
|
||||
@@ -155,5 +158,5 @@ public static class OptionShower
|
||||
if (opt.Value.GetBool()) ShowChildren(opt.Value, ref sb, color, deep + 1);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
*/
|
||||
@@ -48,13 +48,13 @@ internal static class ControllerManagerUpdatePatch
|
||||
|
||||
if (GameStates.IsLobby && (!HudManager.Instance.Chat || !HudManager.Instance.Chat.IsOpenOrOpening))
|
||||
{
|
||||
//if (Input.GetKeyDown(KeyCode.Tab)) OptionShower.Next();
|
||||
/*if (Input.GetKeyDown(KeyCode.Tab)) OptionShower.Next();
|
||||
|
||||
for (var i = 0; i < 9; i++)
|
||||
{
|
||||
if (OrGetKeysDown(KeyCode.Alpha1 + i, KeyCode.Keypad1 + i) && OptionShower.Pages.Count >= i + 1)
|
||||
OptionShower.CurrentPage = i;
|
||||
}
|
||||
}*/
|
||||
|
||||
if (KeysDown(KeyCode.Return) && GameSettingMenu.Instance && GameSettingMenu.Instance.isActiveAndEnabled)
|
||||
GameSettingMenuPatch.SearchForOptionsAction?.Invoke();
|
||||
|
||||
@@ -274,7 +274,7 @@ public static class TextBoxPatch
|
||||
{
|
||||
Dictionary<byte, string> allIds = Main.EnumeratePlayerControls().ToDictionary(x => x.PlayerId, x => x.PlayerId.ColoredPlayerName());
|
||||
additionalInfo = $"<b><u>{Translator.GetString("PlayerIdList").TrimEnd(' ')}</u></b>\n{string.Join('\n', allIds.Select(x => $"<b>{x.Key}</b> \uffeb <b>{x.Value}</b>"))}";
|
||||
OptionShower.CurrentPage = 0;
|
||||
// OptionShower.CurrentPage = 0;
|
||||
}
|
||||
|
||||
continue;
|
||||
@@ -362,8 +362,8 @@ public static class TextBoxPatch
|
||||
__instance.freeChatField.textArea.SetText(PlaceHolderText.text);
|
||||
__instance.freeChatField.textArea.compoText = "";
|
||||
|
||||
if (AdditionalInfoText && AdditionalInfoText.text != "")
|
||||
OptionShower.CurrentPage = 0;
|
||||
/*if (AdditionalInfoText && AdditionalInfoText.text != "")
|
||||
OptionShower.CurrentPage = 0;*/
|
||||
}
|
||||
|
||||
public static void CheckChatOpen()
|
||||
|
||||
Reference in new issue
Block a user