From 43b356a931443bab141f1447f9e064ea9569ba6e Mon Sep 17 00:00:00 2001 From: mxyx0412 Date: Wed, 23 Oct 2024 17:22:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96+=E5=90=88=E5=B9=B6LTS?= =?UTF-8?q?=E7=9A=84=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .editorconfig | 2 +- README.md | 20 +- Strings.xlsx | Bin 89976 -> 90240 bytes TheOtherRoles.sln | 3 - TheOtherRoles/Buttons/Buttons.cs | 7 +- .../CustomHats/CustomHatManager.cs | 5 +- .../CustomHats/Patches/HatParentPatche.cs | 236 -------------- .../CustomHats/Patches/HatParentPatches.cs | 6 +- TheOtherRoles/Helper/Helpers.cs | 32 +- TheOtherRoles/Main.cs | 16 +- TheOtherRoles/Modules/BepInExUpdater.cs | 77 +++++ TheOtherRoles/Modules/ChatCommands.cs | 17 +- TheOtherRoles/Modules/CrowdedPlayer.cs | 18 +- TheOtherRoles/Modules/DynamicLobbies.cs | 4 - TheOtherRoles/Modules/ModUpdater.cs | 293 ++++++++++++++++++ TheOtherRoles/Objects/Map/Airship.cs | 8 +- TheOtherRoles/Objects/Map/FungleElectrical.cs | 10 +- TheOtherRoles/Options/CustomOptions.cs | 5 +- TheOtherRoles/Patches/CredentialsPatch.cs | 4 +- TheOtherRoles/Patches/ExileControllerPatch.cs | 5 +- TheOtherRoles/Patches/IntroPatch.cs | 37 +-- TheOtherRoles/Patches/LobbyRoleList.cs | 2 +- TheOtherRoles/Patches/MeetingHudPatch.cs | 7 +- TheOtherRoles/Patches/PlayerControlPatch.cs | 10 +- TheOtherRoles/Patches/UpdatePatch.cs | 7 +- TheOtherRoles/Patches/UsablesPatch.cs | 4 +- TheOtherRoles/RPC.cs | 6 +- TheOtherRoles/Resources/stringData.json | 17 +- TheOtherRoles/Roles/Crewmate/Balancer.cs | 9 +- TheOtherRoles/Roles/Modifier/Shifter.cs | 5 + TheOtherRoles/Utilities/CachedPlayer.cs | 25 +- TheOtherRoles/Utilities/MapData.cs | 18 ++ 32 files changed, 541 insertions(+), 374 deletions(-) delete mode 100644 TheOtherRoles/CustomCosmetics/CustomHats/Patches/HatParentPatche.cs create mode 100644 TheOtherRoles/Modules/BepInExUpdater.cs create mode 100644 TheOtherRoles/Modules/ModUpdater.cs diff --git a/.editorconfig b/.editorconfig index 9f77ca16..8d356572 100644 --- a/.editorconfig +++ b/.editorconfig @@ -2,7 +2,7 @@ dotnet_diagnostic.IDE0007.severity = silent dotnet_diagnostic.IDE0022.severity = silent dotnet_diagnostic.IDE0023.severity = silent -dotnet_diagnostic.IDE0028.severity = silent +dotnet_diagnostic.IDE0028.severity = none dotnet_diagnostic.IDE0031.severity = silent dotnet_diagnostic.IDE0046.severity = silent dotnet_diagnostic.IDE0061.severity = silent diff --git a/README.md b/README.md index 902648fe..809194f9 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,8 @@ | 游戏版本 | 模组版本 | 发布日期 | 链接 | | ------------------- | -------- | --------- | ------------------------------------------------------------ | +| 2024.8.13 ~ 2024.10.29 | v2.0.0.0 | - | [下载](https://github.com/mxyx-club/TheOtherUs-Edited/releases/download/v2.0.0.0/TheOtherUs.zip) | +| 2024.3.5 ~ 2024.6.4 | v1.0.8.6 | 2024.10.18 | [下载](https://github.com/mxyx-club/TheOtherUs-Edited/releases/download/v1.0.8.6/TheOtherUs.zip) | | 2024.3.5 ~ 2024.6.4 | v1.0.7.7 | 2024.9.16 | [下载](https://github.com/mxyx-club/TheOtherUs-Edited/releases/download/v1.0.7.7/TheOtherUs.zip) | | 2024.3.5 ~ 2024.6.4 | v1.0.7.6 | 2024.9.14 | [下载](https://github.com/mxyx-club/TheOtherUs-Edited/releases/download/v1.0.7.6/TheOtherUs.zip) | | 2024.3.5 ~ 2024.6.4 | v1.0.7.2 | 2024.9.6 | [下载](https://github.com/mxyx-club/TheOtherUs-Edited/releases/download/v1.0.7.2/TheOtherUs.zip) | @@ -34,6 +36,20 @@ ## 更新日志 +## v1.0.8.6: + + * 重新添加自动更新 + * 更新BepinEx依赖至be.697 + * 新增船员职业:大神官 + * 添加对本地帽子的支持(请在模组设置中查看) + * 修复色盲文本会被强制显示、变色龙在部分情况不会隐藏色盲文字的问题 + * 优化随机出生 + * 修复邪恶的设陷师击杀cd + * 可以使用F11键位控制游戏分辨率大小 + * 添加 "最小/最大 独立阵营杀手数" 调整选项,如果这两项都是随机,则使用原先的概率分配。 + +
+ 点我查看更多更新日志 ### v1.0.7.7: @@ -66,10 +82,6 @@ - 追踪者:玩家箭头将以该玩家的颜色显示 - 巴甫洛夫:删除选项 “会议后重置自杀时限” ,默认开启 -
- 点我查看更多更新日志 - - ### v1.0.7.2: - #### 新增内容: diff --git a/Strings.xlsx b/Strings.xlsx index d68b65845681995714569edb04c2d58c9036cd58..958d79a4c06cdef152eea0a161ae3e1ba5c39612 100644 GIT binary patch delta 78223 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%0DIY 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 X3c3N17iLE*Ma}?74KJhnjsyN51OQo% delta 78124 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 { @@ -3493,7 +3494,9 @@ public static void createButtonsPostfix(HudManager __instance) //teleport to location if you have one PlayerControl.LocalPlayer.NetTransform.RpcSnapTo(Jumper.jumpLocation); Jumper.Charges--; - if (Jumper.Charges > 0) jumperJumpButton.Timer = jumperJumpButton.MaxTimer; + + jumperJumpButton.Timer = jumperJumpButton.MaxTimer; + //jumperMarkButton.Timer = jumperJumpButton.MaxTimer; }, () => { @@ -3523,6 +3526,7 @@ public static void createButtonsPostfix(HudManager __instance) //set location Escapist.escapeLocation = PlayerControl.LocalPlayer.transform.localPosition; escapistMarkButton.Timer = escapistMarkButton.MaxTimer; + //escapistEscapeButton.Timer = escapistMarkButton.MaxTimer; }, () => { @@ -3552,6 +3556,7 @@ public static void createButtonsPostfix(HudManager __instance) //set location PlayerControl.LocalPlayer.NetTransform.RpcSnapTo(Escapist.escapeLocation); escapistEscapeButton.Timer = escapistEscapeButton.MaxTimer; + //escapistMarkButton.Timer = escapistEscapeButton.MaxTimer; }, () => { diff --git a/TheOtherRoles/CustomCosmetics/CustomHats/CustomHatManager.cs b/TheOtherRoles/CustomCosmetics/CustomHats/CustomHatManager.cs index dbcd0e3a..cb87f995 100644 --- a/TheOtherRoles/CustomCosmetics/CustomHats/CustomHatManager.cs +++ b/TheOtherRoles/CustomCosmetics/CustomHats/CustomHatManager.cs @@ -83,10 +83,7 @@ internal static HatData CreateHatBehaviour(CustomHatConfig ch, bool testOnly = f hat.NoBounce = !ch.Bounce; hat.ChipOffset = new Vector2(0f, 0.2f); hat.Free = true; -#if MXYX_CLUB - if (ch.Adaptive && cachedShader != null) - viewData.AltShader = cachedShader; -#endif + var extend = new HatExtension { Author = ch.Author ?? "Unknown", diff --git a/TheOtherRoles/CustomCosmetics/CustomHats/Patches/HatParentPatche.cs b/TheOtherRoles/CustomCosmetics/CustomHats/Patches/HatParentPatche.cs deleted file mode 100644 index e00b5661..00000000 --- a/TheOtherRoles/CustomCosmetics/CustomHats/Patches/HatParentPatche.cs +++ /dev/null @@ -1,236 +0,0 @@ -#if MXYX_CLUB -using System; -using System.IO; -using System.Linq; -using PowerTools; -using UnityEngine; - -namespace TheOtherRoles.CustomCosmetics.CustomHats.Patches; - -[HarmonyPatch(typeof(HatParent))] -internal static class HatParentPatches -{ - [HarmonyPatch(nameof(HatParent.SetHat), typeof(int))] - [HarmonyPriority(Priority.High)] - [HarmonyPrefix] - private static void SetHatPrefix(HatParent __instance) - { - SetCustomHat(__instance); - } - - [HarmonyPatch(nameof(HatParent.SetHat), typeof(HatData), typeof(int))] - [HarmonyPrefix] - private static bool SetHatPrefix(HatParent __instance, HatData hat, int color) - { - if (SetCustomHat(__instance)) return true; - __instance.PopulateFromHatViewData(); - __instance.SetMaterialColor(color); - return false; - } - - [HarmonyPatch(nameof(HatParent.SetHat), typeof(int))] - [HarmonyPrefix] - private static bool SetHatPrefix(HatParent __instance, int color) - { - if (!__instance.IsCached()) return true; - __instance.hatDataAsset = null; - __instance.PopulateFromHatViewData(); - __instance.SetMaterialColor(color); - return false; - } - - [HarmonyPatch(nameof(HatParent.UpdateMaterial))] - [HarmonyPrefix] - private static bool UpdateMaterialPrefix(HatParent __instance) - { - if (!__instance.TryGetCached(out var asset)) return true; - if (asset && asset.AltShader) - { - __instance.FrontLayer.sharedMaterial = asset.AltShader; - if (__instance.BackLayer) __instance.BackLayer.sharedMaterial = asset.AltShader; - } - else - { - __instance.FrontLayer.sharedMaterial = DestroyableSingleton.Instance.DefaultShader; - if (__instance.BackLayer) - __instance.BackLayer.sharedMaterial = DestroyableSingleton.Instance.DefaultShader; - } - - var colorId = __instance.matProperties.ColorId; - PlayerMaterial.SetColors(colorId, __instance.FrontLayer); - if (__instance.BackLayer) PlayerMaterial.SetColors(colorId, __instance.BackLayer); - - __instance.FrontLayer.material.SetInt(PlayerMaterial.MaskLayer, __instance.matProperties.MaskLayer); - if (__instance.BackLayer) - __instance.BackLayer.material.SetInt(PlayerMaterial.MaskLayer, __instance.matProperties.MaskLayer); - - var maskType = __instance.matProperties.MaskType; - switch (maskType) - { - case PlayerMaterial.MaskType.ScrollingUI: - if (__instance.FrontLayer) - __instance.FrontLayer.maskInteraction = SpriteMaskInteraction.VisibleInsideMask; - - if (__instance.BackLayer) - __instance.BackLayer.maskInteraction = SpriteMaskInteraction.VisibleInsideMask; - - break; - case PlayerMaterial.MaskType.Exile: - if (__instance.FrontLayer) - __instance.FrontLayer.maskInteraction = SpriteMaskInteraction.VisibleOutsideMask; - - if (__instance.BackLayer) - __instance.BackLayer.maskInteraction = SpriteMaskInteraction.VisibleOutsideMask; - - break; - default: - if (__instance.FrontLayer) __instance.FrontLayer.maskInteraction = SpriteMaskInteraction.None; - - if (__instance.BackLayer) __instance.BackLayer.maskInteraction = SpriteMaskInteraction.None; - - break; - } - if (__instance.matProperties.MaskLayer > 0) return false; - PlayerMaterial.SetMaskLayerBasedOnLocalPlayer(__instance.FrontLayer, __instance.matProperties.IsLocalPlayer); - if (!__instance.BackLayer) return false; - PlayerMaterial.SetMaskLayerBasedOnLocalPlayer(__instance.BackLayer, __instance.matProperties.IsLocalPlayer); - return false; - } - - [HarmonyPatch(nameof(HatParent.LateUpdate))] - [HarmonyPrefix] - private static bool LateUpdatePrefix(HatParent __instance) - { - if (!__instance.Parent || !__instance.Hat) return false; - if (!__instance.TryGetCached(out var hatViewData)) return true; - if (__instance.FrontLayer.sprite != hatViewData.ClimbImage && - __instance.FrontLayer.sprite != hatViewData.FloorImage) - { - if ((__instance.Hat.InFront || hatViewData.BackImage) && hatViewData.LeftMainImage) - __instance.FrontLayer.sprite = - __instance.Parent.flipX ? hatViewData.LeftMainImage : hatViewData.MainImage; - - if (hatViewData.BackImage && hatViewData.LeftBackImage) - { - __instance.BackLayer.sprite = - __instance.Parent.flipX ? hatViewData.LeftBackImage : hatViewData.BackImage; - return false; - } - - if (!hatViewData.BackImage && !__instance.Hat.InFront && hatViewData.LeftMainImage) - { - __instance.BackLayer.sprite = - __instance.Parent.flipX ? hatViewData.LeftMainImage : hatViewData.MainImage; - return false; - } - } - else if (__instance.FrontLayer.sprite == hatViewData.ClimbImage || - __instance.FrontLayer.sprite == hatViewData.LeftClimbImage) - { - var spriteAnimNodeSync = __instance.SpriteSyncNode != null - ? __instance.SpriteSyncNode - : __instance.GetComponent(); - if (spriteAnimNodeSync) spriteAnimNodeSync.NodeId = 0; - } - - return false; - } - - [HarmonyPatch(nameof(HatParent.SetFloorAnim))] - [HarmonyPrefix] - private static bool SetFloorAnimPrefix(HatParent __instance) - { - if (!__instance.TryGetCached(out var hatViewData)) return true; - __instance.BackLayer.enabled = false; - __instance.FrontLayer.enabled = true; - __instance.FrontLayer.sprite = hatViewData.FloorImage; - return false; - } - - [HarmonyPatch(nameof(HatParent.SetIdleAnim))] - [HarmonyPrefix] - private static bool SetIdleAnimPrefix(HatParent __instance, int colorId) - { - if (!__instance.Hat) return false; - if (!__instance.IsCached()) return true; - __instance.hatDataAsset = null; - __instance.PopulateFromHatViewData(); - __instance.SetMaterialColor(colorId); - return false; - } - - [HarmonyPatch(nameof(HatParent.SetClimbAnim))] - [HarmonyPrefix] - private static bool SetClimbAnimPrefix(HatParent __instance) - { - if (!__instance.TryGetCached(out var hatViewData)) return true; - if (!__instance.options.ShowForClimb) return false; - __instance.BackLayer.enabled = false; - __instance.FrontLayer.enabled = true; - __instance.FrontLayer.sprite = hatViewData.ClimbImage; - return false; - } - - [HarmonyPatch(nameof(HatParent.PopulateFromHatViewData))] - [HarmonyPrefix] - private static bool PopulateFromHatViewDataPrefix(HatParent __instance) - { - if (!__instance.TryGetCached(out var asset)) return true; - __instance.UpdateMaterial(); - - var spriteAnimNodeSync = __instance.SpriteSyncNode - ? __instance.SpriteSyncNode - : __instance.GetComponent(); - if (spriteAnimNodeSync) spriteAnimNodeSync.NodeId = __instance.Hat.NoBounce ? 1 : 0; - - if (__instance.Hat.InFront) - { - __instance.BackLayer.enabled = false; - __instance.FrontLayer.enabled = true; - __instance.FrontLayer.sprite = asset.MainImage; - } - else if (asset.BackImage) - { - __instance.BackLayer.enabled = true; - __instance.FrontLayer.enabled = true; - __instance.BackLayer.sprite = asset.BackImage; - __instance.FrontLayer.sprite = asset.MainImage; - } - else - { - __instance.BackLayer.enabled = true; - __instance.FrontLayer.enabled = false; - __instance.FrontLayer.sprite = null; - __instance.BackLayer.sprite = asset.MainImage; - } - - if (/*!__instance.options.Initialized ||*/ !__instance.HideHat()) return false; - __instance.FrontLayer.enabled = false; - __instance.BackLayer.enabled = false; - return false; - } - - private static bool SetCustomHat(HatParent hatParent) - { - var dirPath = Path.Combine(CosmeticsManager.CustomHatsDir, "Test"); - if (!Directory.Exists(dirPath)) Directory.CreateDirectory(dirPath); - if (!DestroyableSingleton.InstanceExists) return true; - var d = new DirectoryInfo(dirPath); - var filePaths = d.GetFiles("*.png").Select(x => x.FullName).ToArray(); - var hats = CustomHatManager.CreateHatDetailsFromFileNames(filePaths, true); - if (hats.Count <= 0) return false; - try - { - hatParent.Hat = CustomHatManager.CreateHatBehaviour(hats[0], true); - } - catch (Exception err) - { - Warn($"Unable to create test hat \n{err}"); - return true; - } - - return false; - } -} - -#endif \ No newline at end of file diff --git a/TheOtherRoles/CustomCosmetics/CustomHats/Patches/HatParentPatches.cs b/TheOtherRoles/CustomCosmetics/CustomHats/Patches/HatParentPatches.cs index 363bd2b5..d67eca05 100644 --- a/TheOtherRoles/CustomCosmetics/CustomHats/Patches/HatParentPatches.cs +++ b/TheOtherRoles/CustomCosmetics/CustomHats/Patches/HatParentPatches.cs @@ -1,5 +1,4 @@ -#if !MXYX_CLUB -using System; +using System; using System.IO; using System.Linq; using PowerTools; @@ -243,5 +242,4 @@ private static bool SetCustomHat(HatParent hatParent) return false; } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/TheOtherRoles/Helper/Helpers.cs b/TheOtherRoles/Helper/Helpers.cs index a6939c9f..75dac55c 100644 --- a/TheOtherRoles/Helper/Helpers.cs +++ b/TheOtherRoles/Helper/Helpers.cs @@ -1,9 +1,11 @@ using System; using System.Collections; using System.Collections.Generic; +using System.Globalization; using System.IO; using System.Linq; using System.Reflection; +using System.Threading.Tasks; using AmongUs.GameOptions; using Hazel; using InnerNet; @@ -566,7 +568,11 @@ public static void ForEach(this Il2CppArrayBase list, Action func) public static List ToList(this Il2CppSystem.Collections.Generic.List list) { - List newList = [.. list]; + List newList = new(list.Count); + foreach (T item in list) + { + newList.Add(item); + } return newList; } @@ -804,21 +810,20 @@ public static TextMeshPro getFirst(this TextMeshPro[] text) if (self.text == "") return self; return text[0]; } - /* + public static async Task checkBeta() { if (Main.betaDays > 0) { - Message($"Beta check"); var ticks = GetBuiltInTicks(); var compileTime = new DateTime(ticks, DateTimeKind.Utc); // This may show as an error, but it is not, compilation will work! - Message($"Compiled at {compileTime.ToString(CultureInfo.InvariantCulture)}"); + Message($"Beta版构建于: {compileTime.ToString(CultureInfo.InvariantCulture)}"); DateTime? now; // Get time from the internet, so no-one can cheat it (so easily). try { var client = new System.Net.Http.HttpClient(); - using var response = await client.GetAsync("http://www.google.com/"); + using var response = await client.GetAsync("http://www.bing.com/"); if (response.IsSuccessStatusCode) now = response.Headers.Date?.UtcDateTime; else @@ -831,17 +836,24 @@ public static async Task checkBeta() { now = DateTime.UtcNow; } + + // Calculate the remaining days and store as an integer + Main.BetaDaysLeft = (int)Math.Round(Main.betaDays - (now - compileTime)?.TotalDays ?? 0); + if ((now - compileTime)?.TotalDays > Main.betaDays) { - Message($"Beta expired!"); - BepInExUpdater.MessageBoxTimeout(BepInExUpdater.GetForegroundWindow(), "BETA is expired. You cannot play this version anymore.", "The Other Us Beta", 0, 0, 10000); + Message($"该Beta版本已过期! "); + _ = BepInExUpdater.MessageBoxTimeout(BepInExUpdater.GetForegroundWindow(), + "该Beta版本已经过期, 请进行手动更新.\nBETA is expired. You cannot play this version anymore", "The Other Us - Edited", 0, 0, 10000); Application.Quit(); - + return; + } + else + { + Message($"该Beta版本将在 {Main.BetaDaysLeft} 天后过期!"); } - else Message($"Beta will remain runnable for {Main.betaDays - (now - compileTime)?.TotalDays} days!"); } } - */ public static ExileController.InitProperties GenerateExileInitProperties(NetworkedPlayerInfo player, bool voteTie) { diff --git a/TheOtherRoles/Main.cs b/TheOtherRoles/Main.cs index 37f3a258..5f9c5747 100644 --- a/TheOtherRoles/Main.cs +++ b/TheOtherRoles/Main.cs @@ -21,7 +21,12 @@ public class TheOtherRolesPlugin : BasePlugin public const string Id = "TheOtherUs.Options.v2"; // Config files name public const string ModName = MyPluginInfo.PLUGIN_NAME; public const string VersionString = MyPluginInfo.PLUGIN_VERSION; +#if RELEASE public static uint betaDays; // amount of days for the build to be usable (0 for infinite!) +#else + public static uint betaDays = 30; +#endif + public static int BetaDaysLeft; public static Version Version = Version.Parse(VersionString); @@ -81,6 +86,8 @@ public override void Load() SetLogSource(Log); Instance = this; + _ = checkBeta(); // Exit if running an expired beta + ToggleCursor = Config.Bind("Custom", "Better Cursor", true); EnableSoundEffects = Config.Bind("Custom", "Enable Sound Effects", true); ShowPopUpVersion = Config.Bind("Custom", "Show PopUp", "0"); @@ -94,11 +101,11 @@ public override void Load() Port = Config.Bind("Custom", "Custom Server Port", (ushort)22023); defaultRegions = ServerManager.DefaultRegions; - Harmony.PatchAll(); UpdateRegions(); // Removes vanilla Servers ServerManager.DefaultRegions = new Il2CppReferenceArray(new IRegionInfo[0]); CrowdedPlayer.Start(); + Harmony.PatchAll(); ModOption.reloadPluginOptions(); CosmeticsManager.Load(); @@ -106,6 +113,13 @@ public override void Load() AssetLoader.LoadAudioAssets(); if (ToggleCursor.Value) enableCursor(true); + if (BepInExUpdater.UpdateRequired) + { + AddComponent(); + return; + } + AddComponent(); + SubmergedCompatibility.Initialize(); MainMenuPatch.addSceneChangeCallbacks(); AddToKillDistanceSetting.addKillDistance(); diff --git a/TheOtherRoles/Modules/BepInExUpdater.cs b/TheOtherRoles/Modules/BepInExUpdater.cs new file mode 100644 index 00000000..e1a00111 --- /dev/null +++ b/TheOtherRoles/Modules/BepInExUpdater.cs @@ -0,0 +1,77 @@ +using System; +using System.Collections; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Runtime.InteropServices; +using System.Threading.Tasks; +using BepInEx; +using BepInEx.Unity.IL2CPP.Utils; +using UnityEngine; +using UnityEngine.Networking; + +namespace TheOtherRoles.Modules; + +public class BepInExUpdater : MonoBehaviour +{ + public const string RequiredBepInExVersion = "6.0.0-be.697+53625800b86f6c68751445248260edf0b27a71c2"; + public const string BepInExDownloadURL = "https://builds.bepinex.dev/projects/bepinex_be/697/BepInEx-Unity.IL2CPP-win-x86-6.0.0-be.697%2B5362580.zip"; + public static bool UpdateRequired => Paths.BepInExVersion.ToString() != RequiredBepInExVersion; + + public void Awake() + { + Message("BepInEx Update Required..."); + Message($"{Paths.BepInExVersion}, {RequiredBepInExVersion} "); + this.StartCoroutine(CoUpdate()); + + } + + [HideFromIl2Cpp] + public IEnumerator CoUpdate() + { + Task.Run(() => MessageBox(GetForegroundWindow(), "正在更新BepinEx模组框架, 请稍后...", "The Other Us - Edited", 0)); + UnityWebRequest www = UnityWebRequest.Get(BepInExDownloadURL); + yield return www.Send(); + if (www.isNetworkError || www.isHttpError) + { + Error(www.error); + yield break; + } + + var zipPath = Path.Combine(Paths.GameRootPath, ".bepinex_update"); + File.WriteAllBytes(zipPath, www.downloadHandler.data); + + + var tempPath = Path.Combine(Path.GetTempPath(), "TheOtherUpdater.exe"); + var asm = Assembly.GetExecutingAssembly(); + var exeName = asm.GetManifestResourceNames().FirstOrDefault(n => n.EndsWith("TheOtherUpdater.exe")); + + using (var resource = asm.GetManifestResourceStream(exeName)) + { + using var file = new FileStream(tempPath, FileMode.OpenOrCreate, FileAccess.Write); + resource!.CopyTo(file); + } + + var startInfo = new ProcessStartInfo(tempPath, $"--game-path \"{Paths.GameRootPath}\" --zip \"{zipPath}\""); + startInfo.UseShellExecute = false; + Process.Start(startInfo); + Application.Quit(); + } + + [DllImport("user32.dll")] + public static extern IntPtr GetForegroundWindow(); + [DllImport("user32.dll")] + public static extern int MessageBox(IntPtr hWnd, string text, string caption, int options); + [DllImport("user32.dll")] + public static extern int MessageBoxTimeout(IntPtr hwnd, string text, string title, uint type, short wLanguageId, int milliseconds); +} + +[HarmonyPatch(typeof(SplashManager), nameof(SplashManager.Update))] +public static class StopLoadingMainMenu +{ + public static bool Prefix() + { + return !BepInExUpdater.UpdateRequired; + } +} \ No newline at end of file diff --git a/TheOtherRoles/Modules/ChatCommands.cs b/TheOtherRoles/Modules/ChatCommands.cs index 18a72f6c..214e2da8 100644 --- a/TheOtherRoles/Modules/ChatCommands.cs +++ b/TheOtherRoles/Modules/ChatCommands.cs @@ -40,7 +40,8 @@ private static bool Prefix(ChatController __instance) } else { - __instance.AddChat(CachedPlayer.LocalPlayer.PlayerControl, "Nice try, but you have to be the host to use this feature 这是房主至高无上的权利"); + __instance.AddChat(PlayerControl.LocalPlayer, + "Nice try, but you have to be the host to use this feature\n这是房主至高无上的权利"); } handled = true; } @@ -209,18 +210,14 @@ public static void Postfix(PlayerPhysics __instance) { _ = new LateTask(() => { - if (__instance.myPlayer.IsAlive()) - { - FastDestroyableSingleton.Instance.Chat.AddChat(__instance.myPlayer, GetWelcomeMessage()); - } + FastDestroyableSingleton.Instance.Chat.AddChat(__instance.myPlayer, GetWelcomeMessage); + if (Main.betaDays > 0) + FastDestroyableSingleton.Instance.Chat.AddChat(__instance.myPlayer, GetBetaMessage); }, 1f, "Welcome Chat"); } } - - private static string GetWelcomeMessage() - { - return "WelcomeText".Translate(); - } + private static string GetWelcomeMessage => "WelcomeText".Translate(); + private static string GetBetaMessage => string.Format("BetaMessage".Translate(), Main.BetaDaysLeft); } diff --git a/TheOtherRoles/Modules/CrowdedPlayer.cs b/TheOtherRoles/Modules/CrowdedPlayer.cs index a5cefc58..188c3956 100644 --- a/TheOtherRoles/Modules/CrowdedPlayer.cs +++ b/TheOtherRoles/Modules/CrowdedPlayer.cs @@ -6,7 +6,6 @@ using Reactor.Utilities.Extensions; using TMPro; using UnityEngine; -using Object = UnityEngine.Object; namespace TheOtherRoles.Modules; @@ -22,8 +21,8 @@ public static class CrowdedPlayer public static void Start() { if (!Enable) return; - NormalGameOptionsV07.RecommendedImpostors = NormalGameOptionsV07.MaxImpostors = Enumerable.Repeat(MaxPlayer, MaxPlayer).ToArray(); - NormalGameOptionsV07.MinPlayers = Enumerable.Repeat(4, MaxPlayer).ToArray(); + NormalGameOptionsV08.RecommendedImpostors = NormalGameOptionsV08.MaxImpostors = Enumerable.Repeat(MaxPlayer, MaxPlayer).ToArray(); + NormalGameOptionsV08.MinPlayers = Enumerable.Repeat(4, MaxPlayer).ToArray(); } [HarmonyPatch(typeof(SecurityLogger), nameof(SecurityLogger.Awake))] @@ -34,13 +33,18 @@ public static void SecurityLoggerPatch_Postfix(ref SecurityLogger __instance) __instance.Timers = new float[MaxPlayer]; } - [HarmonyPatch(typeof(GameOptionsMenu), nameof(GameOptionsMenu.OpenMenu))] + [HarmonyPatch(typeof(GameOptionsMenu), nameof(GameOptionsMenu.Initialize))] [HarmonyPostfix] - public static void GameOptionsMenu_Start_Postfix(ref GameOptionsMenu __instance) + public static void GameOptionsMenu_Initialize_Postfix(GameOptionsMenu __instance) { if (!Enable) return; - var options = Object.FindObjectsOfType().FirstOrDefault(o => o.Title == StringNames.GameNumImpostors); - if (options != null) options.ValidRange = new FloatRange(0, MaxImpostor); + var numberOptions = __instance.GetComponentsInChildren(); + + var impostorsOption = numberOptions.FirstOrDefault(o => o.Title == StringNames.GameNumImpostors); + if (impostorsOption != null) + { + impostorsOption.ValidRange = new FloatRange(0, MaxImpostor); + } } [HarmonyPatch(typeof(GameOptionsData), nameof(GameOptionsData.AreInvalid))] diff --git a/TheOtherRoles/Modules/DynamicLobbies.cs b/TheOtherRoles/Modules/DynamicLobbies.cs index 2f635c5c..b16f7aa8 100644 --- a/TheOtherRoles/Modules/DynamicLobbies.cs +++ b/TheOtherRoles/Modules/DynamicLobbies.cs @@ -39,12 +39,8 @@ private static bool Prefix(ChatController __instance) GameOptionsManager.Instance.currentNormalGameOptions.MaxPlayers = LobbyLimit; FastDestroyableSingleton.Instance.LastPlayerCount = LobbyLimit; CachedPlayer.LocalPlayer.PlayerControl.RpcSyncSettings( -#if MXYX_CLUB // TODO Maybe simpler?? - GameOptionsManager.Instance.gameOptionsFactory.ToBytes(GameOptionsManager.Instance.currentGameOptions)); -#else GameOptionsManager.Instance.gameOptionsFactory.ToBytes(GameOptionsManager.Instance.currentGameOptions, false)); -#endif __instance.AddChat(CachedPlayer.LocalPlayer.PlayerControl, $"Lobby Size changed to {LobbyLimit} players"); } diff --git a/TheOtherRoles/Modules/ModUpdater.cs b/TheOtherRoles/Modules/ModUpdater.cs new file mode 100644 index 00000000..2a16ddfc --- /dev/null +++ b/TheOtherRoles/Modules/ModUpdater.cs @@ -0,0 +1,293 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text.Json; +using System.Text.Json.Serialization; +using AmongUs.Data; +using Assets.InnerNet; +using BepInEx; +using BepInEx.Unity.IL2CPP.Utils; +using Twitch; +using UnityEngine; +using UnityEngine.Networking; +using UnityEngine.SceneManagement; +using UnityEngine.UI; + +namespace TheOtherRoles.Modules; + +public class ModUpdater(IntPtr ptr) : MonoBehaviour(ptr) +{ + public const string RepositoryOwner = "mxyx-club"; + public const string RepositoryName = "TheOtherUs-Edited"; + public static ModUpdater Instance { get; private set; } + + private bool _busy; + private bool showPopUp = true; + public List Releases; + + public void Awake() + { + if (Instance) Destroy(Instance); + Instance = this; + foreach (var file in Directory.GetFiles(Paths.PluginPath, "*.old")) + { + File.Delete(file); + } + } + + private void Start() + { + if (_busy) return; + this.StartCoroutine(CoCheckForUpdate()); + SceneManager.add_sceneLoaded((Action)OnSceneLoaded); + } + + + [HideFromIl2Cpp] + public void StartDownloadRelease(GithubRelease release) + { + if (_busy) return; + this.StartCoroutine(CoDownloadRelease(release)); + } + + [HideFromIl2Cpp] + private IEnumerator CoCheckForUpdate() + { + _busy = true; + var www = new UnityWebRequest(); + www.SetMethod(UnityWebRequest.UnityWebRequestMethod.Get); + www.SetUrl($"https://api.github.com/repos/{RepositoryOwner}/{RepositoryName}/releases"); + www.downloadHandler = new DownloadHandlerBuffer(); + var operation = www.SendWebRequest(); + + while (!operation.isDone) + { + yield return new WaitForEndOfFrame(); + } + + if (www.isNetworkError || www.isHttpError) + { + yield break; + } + + Releases = JsonSerializer.Deserialize>(www.downloadHandler.text); + www.downloadHandler.Dispose(); + www.Dispose(); + Releases.Sort(SortReleases); + _busy = false; + } + + [HideFromIl2Cpp] + private IEnumerator CoDownloadRelease(GithubRelease release) + { + _busy = true; + + var popup = Instantiate(TwitchManager.Instance.TwitchPopup); + popup.TextAreaTMP.fontSize *= 0.7f; + popup.TextAreaTMP.enableAutoSizing = false; + + popup.Show(); + + var button = popup.transform.GetChild(2).gameObject; + button.SetActive(false); + popup.TextAreaTMP.text = $"更新中, 请稍等..."; + + var asset = release.Assets.Find(FilterPluginAsset); + var www = new UnityWebRequest(); + www.SetMethod(UnityWebRequest.UnityWebRequestMethod.Get); + www.SetUrl(asset.DownloadUrl); + www.downloadHandler = new DownloadHandlerBuffer(); + var operation = www.SendWebRequest(); + + while (!operation.isDone) + { + int stars = Mathf.CeilToInt(www.downloadProgress * 10); + string progress = $"TOU更新中...\n请稍等...\n{new string((char)0x25A0, stars)}{new string((char)0x25A1, 10 - stars)}"; + popup.TextAreaTMP.text = progress; + yield return new WaitForEndOfFrame(); + } + + if (www.isNetworkError || www.isHttpError) + { + popup.TextAreaTMP.text = "更新失败, 请稍后再试!\n或请手动更新!"; + yield break; + } + popup.TextAreaTMP.text = $"TOU更新中...\n请稍等...\n\n下载完成!\n复制文件中..."; + + var filePath = Path.Combine(Paths.PluginPath, asset.Name); + + if (File.Exists(filePath + ".old")) File.Delete(filePath + "old"); + if (File.Exists(filePath)) File.Move(filePath, filePath + ".old"); + + var persistTask = File.WriteAllBytesAsync(filePath, www.downloadHandler.data); + var hasError = false; + while (!persistTask.IsCompleted) + { + if (persistTask.Exception != null) + { + hasError = true; + break; + } + + yield return new WaitForEndOfFrame(); + } + + www.downloadHandler.Dispose(); + www.Dispose(); + + if (!hasError) + { + popup.TextAreaTMP.text = $"TheOtherUs-Edited\n更新完成!\n重启游戏即可完成更新!"; + } + button.SetActive(true); + _busy = false; + } + + [HideFromIl2Cpp] + private static bool FilterLatestRelease(GithubRelease release) => release.IsNewer(TheOtherRolesPlugin.Version) && release.Assets.Any(FilterPluginAsset); + + [HideFromIl2Cpp] + private static bool FilterPluginAsset(GithubAsset asset) => asset.Name == "TheOtherUs.dll"; + + [HideFromIl2Cpp] + private static int SortReleases(GithubRelease a, GithubRelease b) + { + if (a.IsNewer(b.Version)) return -1; + if (b.IsNewer(a.Version)) return 1; + return 0; + } + + private void OnSceneLoaded(Scene scene, LoadSceneMode mode) + { + if (_busy || scene.name != "MainMenu") return; + var latestRelease = Releases.FirstOrDefault(); + if (latestRelease == null || latestRelease.Version <= TheOtherRolesPlugin.Version) + return; + + var template = GameObject.Find("ExitGameButton"); + if (!template) return; + + var button = Instantiate(template, null); + var buttonTransform = button.transform; + //buttonTransform.localPosition = new Vector3(-2f, -2f); + button.GetComponent().anchorPoint = new Vector2(0.458f, 0.124f); + + PassiveButton passiveButton = button.GetComponent(); + passiveButton.OnClick = new Button.ButtonClickedEvent(); + passiveButton.OnClick.AddListener((Action)(() => + { + StartDownloadRelease(latestRelease); + button.SetActive(false); + })); + + var text = button.transform.GetComponentInChildren(); + string t = "自动更新"; + StartCoroutine(Effects.Lerp(0.1f, (Action)(p => text.SetText(t)))); + passiveButton.OnMouseOut.AddListener((Action)(() => text.color = Color.red)); + passiveButton.OnMouseOver.AddListener((Action)(() => text.color = Color.white)); + var announcement = $"TheOtherUs - Edited 已更新至 {latestRelease.Tag} \n可在游戏主界面中点击更新按钮进行自动更新。 \n\n{latestRelease.Description}"; + var mgr = FindObjectOfType(true); + if (showPopUp) mgr.StartCoroutine(CoShowAnnouncement(announcement, shortTitle: "TOUE Update", date: latestRelease.PublishedAt)); + showPopUp = false; + + } + + [HideFromIl2Cpp] + public IEnumerator CoShowAnnouncement(string announcement, bool show = true, string shortTitle = "TOUE Update", string title = "", string date = "") + { + var mgr = FindObjectOfType(true); + var popUpTemplate = UnityEngine.Object.FindObjectOfType(true); + if (popUpTemplate == null) + { + Error("couldnt show credits, popUp is null"); + yield return null; + } + var popUp = UnityEngine.Object.Instantiate(popUpTemplate); + + popUp.gameObject.SetActive(true); + + Announcement creditsAnnouncement = new() + { + Id = "torAnnouncement", + Language = 0, + Number = 6969, + Title = title == "" ? "The Other Us - Edited 更新公告" : title, + ShortTitle = shortTitle, + SubTitle = "", + PinState = false, + Date = date == "" ? DateTime.Now.Date.ToString() : date, + Text = announcement, + }; + mgr.StartCoroutine(Effects.Lerp(0.1f, new Action((p) => + { + if (p == 1) + { + var backup = DataManager.Player.Announcements.allAnnouncements; + DataManager.Player.Announcements.allAnnouncements = new(); + popUp.Init(false); + DataManager.Player.Announcements.SetAnnouncements(new Announcement[] { creditsAnnouncement }); + popUp.CreateAnnouncementList(); + popUp.UpdateAnnouncementText(creditsAnnouncement.Number); + popUp.visibleAnnouncements[0].PassiveButton.OnClick.RemoveAllListeners(); + DataManager.Player.Announcements.allAnnouncements = backup; + } + }))); + } +} + +public class GithubRelease +{ + [JsonPropertyName("id")] + public int Id { get; set; } + + [JsonPropertyName("tag_name")] + public string Tag { get; set; } + + [JsonPropertyName("name")] + public string Name { get; set; } + + [JsonPropertyName("draft")] + public bool Draft { get; set; } + + [JsonPropertyName("prerelease")] + public bool Prerelease { get; set; } + + [JsonPropertyName("created_at")] + public string CreatedAt { get; set; } + + [JsonPropertyName("published_at")] + public string PublishedAt { get; set; } + + [JsonPropertyName("body")] + public string Description { get; set; } + + [JsonPropertyName("assets")] + public List Assets { get; set; } + + public Version Version => Version.Parse(Tag.Replace("v", string.Empty)); + + public bool IsNewer(Version version) + { + return Version > version; + } +} + +public class GithubAsset +{ + [JsonPropertyName("url")] + public string Url { get; set; } + + [JsonPropertyName("id")] + public int Id { get; set; } + + [JsonPropertyName("name")] + public string Name { get; set; } + + [JsonPropertyName("size")] + public int Size { get; set; } + + [JsonPropertyName("browser_download_url")] + public string DownloadUrl { get; set; } +} \ No newline at end of file diff --git a/TheOtherRoles/Objects/Map/Airship.cs b/TheOtherRoles/Objects/Map/Airship.cs index 9e712097..47bcaacd 100644 --- a/TheOtherRoles/Objects/Map/Airship.cs +++ b/TheOtherRoles/Objects/Map/Airship.cs @@ -59,7 +59,7 @@ public static void addLadder(int mapId) if (CustomOptionHolder.airshipLadder.getBool()) { // 梯子追加 - GameObject ladder = meetingRoom.GetComponentsInChildren().Where(x => x.name == "ladder_meeting").FirstOrDefault().gameObject; + GameObject ladder = meetingRoom.GetComponentsInChildren().FirstOrDefault(x => x.name == "ladder_meeting").gameObject; GameObject newLadder = UnityEngine.Object.Instantiate(ladder, ladder.transform.parent); Il2CppArrayBase ladders = newLadder.GetComponentsInChildren(); int id = 100; @@ -75,8 +75,8 @@ public static void addLadder(int mapId) newLadder.GetComponentInChildren().sprite = ladderSprite; // 梯子の周りの影を消す - UnityEngine.Object.Destroy(gapRoom.GetComponentsInChildren().Where(x => Math.Abs(x.points[0].x + 6.2984f) < 0.1).FirstOrDefault()); - EdgeCollider2D collider = meetingRoom.GetComponentsInChildren().Where(x => x.pointCount == 46).FirstOrDefault(); + UnityEngine.Object.Destroy(gapRoom.GetComponentsInChildren().FirstOrDefault(x => Math.Abs(x.points[0].x + 6.2984f) < 0.1)); + EdgeCollider2D collider = meetingRoom.GetComponentsInChildren().FirstOrDefault(x => x.pointCount == 46); Il2CppSystem.Collections.Generic.List points = new(); EdgeCollider2D newCollider = collider.gameObject.AddComponent(); EdgeCollider2D newCollider2 = collider.gameObject.AddComponent(); @@ -95,7 +95,7 @@ public static void addLadder(int mapId) UnityEngine.Object.DestroyObject(collider); // 梯子の背景を変更 - SpriteRenderer side = meetingRoom.GetComponentsInChildren().Where(x => x.name == "meeting_side").FirstOrDefault(); + SpriteRenderer side = meetingRoom.GetComponentsInChildren().FirstOrDefault(x => x.name == "meeting_side"); SpriteRenderer bg = UnityEngine.Object.Instantiate(side, side.transform.parent); if (!ladderBgSprite) ladderBgSprite = UnityHelper.loadSpriteFromResources("TheOtherRoles.Resources.ladder_bg.png", 100f); bg.sprite = ladderBgSprite; diff --git a/TheOtherRoles/Objects/Map/FungleElectrical.cs b/TheOtherRoles/Objects/Map/FungleElectrical.cs index 746f4d28..3edc8fd5 100644 --- a/TheOtherRoles/Objects/Map/FungleElectrical.cs +++ b/TheOtherRoles/Objects/Map/FungleElectrical.cs @@ -62,12 +62,10 @@ public static void Postfix(MapBehaviour __instance) public static class MapLoader { - private static ShipStatus skeld; - private static ShipStatus airship; public static ShipStatus Polus; public static GameObject PolusObject => Polus.gameObject; - public static ShipStatus Skeld => skeld; - public static ShipStatus Airship => airship; + public static ShipStatus Skeld { get; private set; } + public static ShipStatus Airship { get; private set; } public static IEnumerator LoadMaps() { @@ -76,7 +74,7 @@ public static IEnumerator LoadMaps() AsyncOperationHandle skeldAsset = AmongUsClient.Instance.ShipPrefabs.ToArray()[0].LoadAsset(); while (!skeldAsset.IsDone) yield return null; - skeld = skeldAsset.Result.GetComponent(); + Skeld = skeldAsset.Result.GetComponent(); AsyncOperationHandle polusAsset = AmongUsClient.Instance.ShipPrefabs.ToArray()[2].LoadAsset(); while (!polusAsset.IsDone) yield return null; @@ -84,7 +82,7 @@ public static IEnumerator LoadMaps() AsyncOperationHandle airshipAsset = AmongUsClient.Instance.ShipPrefabs.ToArray()[4].LoadAsset(); while (!airshipAsset.IsDone) yield return null; - airship = airshipAsset.Result.GetComponent(); + Airship = airshipAsset.Result.GetComponent(); } } diff --git a/TheOtherRoles/Options/CustomOptions.cs b/TheOtherRoles/Options/CustomOptions.cs index 45616230..298b528d 100644 --- a/TheOtherRoles/Options/CustomOptions.cs +++ b/TheOtherRoles/Options/CustomOptions.cs @@ -1253,10 +1253,9 @@ public static bool Prefix(GameOptionsData __instance, ref int maxExpectedPlayers || __instance.PlayerSpeedMod <= 0f || __instance.PlayerSpeedMod > 3f; } - [HarmonyPatch(typeof(NormalGameOptionsV07), nameof(NormalGameOptionsV07.AreInvalid))] + [HarmonyPatch(typeof(NormalGameOptionsV08), nameof(NormalGameOptionsV08.AreInvalid))] [HarmonyPrefix] - - public static bool Prefix(NormalGameOptionsV07 __instance, ref int maxExpectedPlayers) + public static bool Prefix(NormalGameOptionsV08 __instance, ref int maxExpectedPlayers) { return __instance.MaxPlayers > maxExpectedPlayers || __instance.NumImpostors < 1 || __instance.NumImpostors > 3 || __instance.KillDistance < 0 diff --git a/TheOtherRoles/Patches/CredentialsPatch.cs b/TheOtherRoles/Patches/CredentialsPatch.cs index 6ec3a1d7..715a7ee4 100644 --- a/TheOtherRoles/Patches/CredentialsPatch.cs +++ b/TheOtherRoles/Patches/CredentialsPatch.cs @@ -9,7 +9,7 @@ namespace TheOtherRoles.Patches; [HarmonyPatch] public static class CredentialsPatch { - public static string fullCredentialsVersion = $"{getString("TouTitle")} v{Main.Version + (Main.betaDays > 0 ? "-BETA" : "")}"; + public static string fullCredentialsVersion = $"{getString("TouTitle")} v{Main.Version + (Main.betaDays > 0 ? "-Beta" : "")}"; public static string fullCredentials = getString("fullCredentials"); @@ -102,7 +102,7 @@ private static void Postfix(PingTracker __instance) var credentialObject = new GameObject("credentialsTOR"); var credentials = credentialObject.AddComponent(); credentials.SetText( - $"TheOtherUs-Edited v{Main.Version + (Main.betaDays > 0 ? "-BETA" : "")}\n\n{mainMenuCredentials}\n\n{contributorsCredentials}"); + $"TheOtherUs-Edited v{Main.Version + (Main.betaDays > 0 ? "-Beta" : "")}\n\n{mainMenuCredentials}\n\n{contributorsCredentials}"); credentials.alignment = TextAlignmentOptions.Center; credentials.fontSize *= 0.05f; diff --git a/TheOtherRoles/Patches/ExileControllerPatch.cs b/TheOtherRoles/Patches/ExileControllerPatch.cs index 586eaf9c..d226ab49 100644 --- a/TheOtherRoles/Patches/ExileControllerPatch.cs +++ b/TheOtherRoles/Patches/ExileControllerPatch.cs @@ -420,10 +420,7 @@ private static void WrapUpPostfix(NetworkedPlayerInfo exiled) // AntiTeleport set position AntiTeleport.setPosition(); - if (AmongUsClient.Instance.AmHost) - { - if (CustomOptionHolder.randomGameStartPosition.getBool()) MapData.RandomSpawnAllPlayers(); - } + if (CustomOptionHolder.randomGameStartPosition.getBool()) MapData.RandomSpawnPlayers(); // Invert add meeting if (Invert.meetings > 0) Invert.meetings--; diff --git a/TheOtherRoles/Patches/IntroPatch.cs b/TheOtherRoles/Patches/IntroPatch.cs index 8795b568..a72feffa 100644 --- a/TheOtherRoles/Patches/IntroPatch.cs +++ b/TheOtherRoles/Patches/IntroPatch.cs @@ -104,14 +104,31 @@ public static void Prefix(IntroCutscene __instance) // Force Reload of SoundEffectHolder SoundEffectsManager.Load(); - // AntiTeleport set position AntiTeleport.setPosition(); + if (CustomOptionHolder.randomGameStartPosition.getBool()) MapData.RandomSpawnPlayers(); if (AmongUsClient.Instance.AmHost) { + var mapId = GameOptionsManager.Instance.currentNormalGameOptions.MapId; + var writerS = AmongUsClient.Instance.StartRpcImmediately(CachedPlayer.LocalPlayer.PlayerControl.NetId, + (byte)CustomRPC.DynamicMapOption, SendOption.Reliable); + writerS.Write(mapId); + AmongUsClient.Instance.FinishRpcImmediately(writerS); LastImpostor.promoteToLastImpostor(); - if (CustomOptionHolder.randomGameStartPosition.getBool()) MapData.RandomSpawnAllPlayers(); + // First kill + if (ModOption.shieldFirstKill && ModOption.firstKillName != "" && !HideNSeek.isHideNSeekGM && !PropHunt.isPropHuntGM) + { + var target = PlayerControl.AllPlayerControls.ToList().FirstOrDefault(x => x.Data.PlayerName.Equals(ModOption.firstKillName)); + if (target != null) + { + var writer = AmongUsClient.Instance.StartRpcImmediately(CachedPlayer.LocalPlayer.PlayerControl.NetId, + (byte)CustomRPC.SetFirstKill, SendOption.Reliable); + writer.Write(target.PlayerId); + AmongUsClient.Instance.FinishRpcImmediately(writer); + RPCProcedure.setFirstKill(target.PlayerId); + } + } } // Force Bounty Hunter to load a new Bounty when the Intro is over @@ -130,22 +147,6 @@ public static void Prefix(IntroCutscene __instance) } } - // First kill - if (AmongUsClient.Instance.AmHost && ModOption.shieldFirstKill && ModOption.firstKillName != "" && - !HideNSeek.isHideNSeekGM && !PropHunt.isPropHuntGM) - { - var target = PlayerControl.AllPlayerControls.ToArray().ToList() - .FirstOrDefault(x => x.Data.PlayerName.Equals(ModOption.firstKillName)); - if (target != null) - { - var writer = AmongUsClient.Instance.StartRpcImmediately(CachedPlayer.LocalPlayer.PlayerControl.NetId, - (byte)CustomRPC.SetFirstKill, SendOption.Reliable); - writer.Write(target.PlayerId); - AmongUsClient.Instance.FinishRpcImmediately(writer); - RPCProcedure.setFirstKill(target.PlayerId); - } - } - ModOption.firstKillName = ""; if (HideNSeek.isHideNSeekGM) diff --git a/TheOtherRoles/Patches/LobbyRoleList.cs b/TheOtherRoles/Patches/LobbyRoleList.cs index 2496db41..99f19018 100644 --- a/TheOtherRoles/Patches/LobbyRoleList.cs +++ b/TheOtherRoles/Patches/LobbyRoleList.cs @@ -220,6 +220,6 @@ class GameStartPatch { public static void Prefix(ShipStatus __instance) { - LobbyRoleInfo.RolesSummaryUI?.SetActive(false); + if (LobbyRoleInfo.RolesSummaryUI != null) LobbyRoleInfo.RolesSummaryUI.SetActive(false); } }*/ \ No newline at end of file diff --git a/TheOtherRoles/Patches/MeetingHudPatch.cs b/TheOtherRoles/Patches/MeetingHudPatch.cs index b5d5c9bf..d67fbd07 100644 --- a/TheOtherRoles/Patches/MeetingHudPatch.cs +++ b/TheOtherRoles/Patches/MeetingHudPatch.cs @@ -331,13 +331,13 @@ public static void updateMeetingText(MeetingHud __instance) [HarmonyPatch] public class ShowHost { - private static TextMeshPro Text; + public static TextMeshPro Text; [HarmonyPatch(typeof(MeetingHud), nameof(MeetingHud.Start))] [HarmonyPostfix] public static void Setup(MeetingHud __instance) { - if (AmongUsClient.Instance.NetworkMode != NetworkModes.OnlineGame) return; + if (AmongUsClient.Instance.NetworkMode != NetworkModes.OnlineGame || Balancer.currentAbilityUser != null) return; __instance.ProceedButton.gameObject.transform.localPosition = new(-2.5f, 2.2f, 0); __instance.ProceedButton.gameObject.GetComponent().enabled = false; @@ -351,6 +351,7 @@ public static void Setup(MeetingHud __instance) public static void Postfix(MeetingHud __instance) { + if (Balancer.currentAbilityUser != null) return; var host = GameData.Instance.GetHost(); if (host != null) @@ -735,7 +736,7 @@ private static void Postfix(MeetingHud __instance, [HarmonyArgument(0)] byte[] s } private static void Prefix(MeetingHud __instance, - [HarmonyArgument(0)] Il2CppStructArray states, + [HarmonyArgument(0)] Il2CppStructArray states, [HarmonyArgument(1)] NetworkedPlayerInfo exiled, [HarmonyArgument(2)] bool tie) { diff --git a/TheOtherRoles/Patches/PlayerControlPatch.cs b/TheOtherRoles/Patches/PlayerControlPatch.cs index c87bbcfe..81df7be2 100644 --- a/TheOtherRoles/Patches/PlayerControlPatch.cs +++ b/TheOtherRoles/Patches/PlayerControlPatch.cs @@ -1090,6 +1090,7 @@ private static void bountyHunterUpdate() (p != Mini.mini || Mini.isGrownUp()) && (BountyHunter.bountyHunter.getPartner() == null || p != BountyHunter.bountyHunter.getPartner())) possibleTargets.Add(p); + if (possibleTargets.Count == 0) return; BountyHunter.bounty = possibleTargets[rnd.Next(0, possibleTargets.Count)]; if (BountyHunter.bounty == null) return; @@ -1542,9 +1543,8 @@ private static void witchSetTarget() List untargetables; if (Witch.spellCastingTarget != null) { - untargetables = PlayerControl.AllPlayerControls.ToArray() - .Where(x => x.PlayerId != Witch.spellCastingTarget.PlayerId) - .ToList(); // Don't switch the target from the the one you're currently casting a spell on + // Don't switch the target from the the one you're currently casting a spell on + untargetables = PlayerControl.AllPlayerControls.ToArray().Where(x => x.PlayerId != Witch.spellCastingTarget.PlayerId).ToList(); } else { @@ -2306,12 +2306,12 @@ public static void Postfix(PlayerControl __instance, [HarmonyArgument(0)] Player } else if (KillTrap.isTrapped(target) && EvilTrapper.isTrapKill) // トラップキルした場合のペナルティ { - EvilTrapper.killTimer = GameOptionsManager.Instance.currentNormalGameOptions.KillCooldown; + EvilTrapper.evilTrapper.killTimer = GameOptionsManager.Instance.currentNormalGameOptions.KillCooldown; HudManagerStartPatch.evilTrapperSetTrapButton.Timer = EvilTrapper.cooldown; } else // トラップにかかっていない対象を通常キルした場合はペナルティーを受ける { - EvilTrapper.killTimer = GameOptionsManager.Instance.currentNormalGameOptions.KillCooldown + EvilTrapper.penaltyTime; + EvilTrapper.evilTrapper.killTimer = GameOptionsManager.Instance.currentNormalGameOptions.KillCooldown + EvilTrapper.penaltyTime; HudManagerStartPatch.evilTrapperSetTrapButton.Timer = EvilTrapper.cooldown + EvilTrapper.penaltyTime; } if (!EvilTrapper.isTrapKill) diff --git a/TheOtherRoles/Patches/UpdatePatch.cs b/TheOtherRoles/Patches/UpdatePatch.cs index 78936f6d..c0e25209 100644 --- a/TheOtherRoles/Patches/UpdatePatch.cs +++ b/TheOtherRoles/Patches/UpdatePatch.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using AmongUs.Data; using AmongUs.GameOptions; using InnerNet; using TheOtherRoles.Buttons; @@ -39,7 +40,8 @@ private static void resetNameTagsAndColors() playerName = Morphling.morphTarget.Data.PlayerName; nameText.text = hidePlayerName(localPlayer, player) ? "" : playerName; - player.cosmetics.colorBlindText.gameObject.SetActive(!hidePlayerName(localPlayer, player)); + if (DataManager.Settings.Accessibility.ColorBlindMode) + player.cosmetics.colorBlindText.gameObject.SetActive(!hidePlayerName(localPlayer, player)); nameText.color = color = amImpostor && data.Role.IsImpostor ? Palette.ImpostorRed : Color.white; nameText.color = nameText.color.SetAlpha(Chameleon.visibility(player.PlayerId)); @@ -482,8 +484,7 @@ private static void Postfix(HudManager __instance) { var pet = target.GetPet(); if (pet != null) - pet.Visible = ((PlayerControl.LocalPlayer.Data.IsDead && target.Data.IsDead) || !target.Data.IsDead) && - !target.inVent; + pet.Visible = ((PlayerControl.LocalPlayer.Data.IsDead && target.Data.IsDead) || !target.Data.IsDead) && !target.inVent; } } } \ No newline at end of file diff --git a/TheOtherRoles/Patches/UsablesPatch.cs b/TheOtherRoles/Patches/UsablesPatch.cs index 0719e70d..2dd5b84b 100644 --- a/TheOtherRoles/Patches/UsablesPatch.cs +++ b/TheOtherRoles/Patches/UsablesPatch.cs @@ -136,9 +136,7 @@ public static bool Prefix(Vent __instance) if (Trapper.playersOnMap.Contains(CachedPlayer.LocalPlayer.PlayerControl)) return false; - bool canUse; - bool couldUse; - __instance.CanUse(CachedPlayer.LocalPlayer.Data, out canUse, out couldUse); + __instance.CanUse(CachedPlayer.LocalPlayer.Data, out var canUse, out var couldUse); var canMoveInVents = CachedPlayer.LocalPlayer.PlayerControl != Spy.spy && !Trapper.playersOnMap.Contains(CachedPlayer.LocalPlayer.PlayerControl); if (!canUse) return false; // No need to execute the native method as using is disallowed anyways diff --git a/TheOtherRoles/RPC.cs b/TheOtherRoles/RPC.cs index ab4c1420..e2f69982 100644 --- a/TheOtherRoles/RPC.cs +++ b/TheOtherRoles/RPC.cs @@ -3625,8 +3625,7 @@ private static bool Prefix([HarmonyArgument(0)] byte callId, [HarmonyArgument(1) break; case CustomRPC.UncheckedExilePlayer: - var exileTarget = reader.ReadByte(); - RPCProcedure.uncheckedExilePlayer(exileTarget); + RPCProcedure.uncheckedExilePlayer(reader.ReadByte()); break; case CustomRPC.UncheckedCmdReportDeadBody: @@ -3636,8 +3635,7 @@ private static bool Prefix([HarmonyArgument(0)] byte callId, [HarmonyArgument(1) break; case CustomRPC.DynamicMapOption: - var mapId = reader.ReadByte(); - RPCProcedure.dynamicMapOption(mapId); + RPCProcedure.dynamicMapOption(reader.ReadByte()); break; case CustomRPC.SetGameStarting: diff --git a/TheOtherRoles/Resources/stringData.json b/TheOtherRoles/Resources/stringData.json index 61b46c55..efd043cd 100644 --- a/TheOtherRoles/Resources/stringData.json +++ b/TheOtherRoles/Resources/stringData.json @@ -2347,6 +2347,9 @@ "WelcomeText": { "13": "欢迎游玩我们的超多职业 !\n\n游戏指令:\n/r [职业名称] :获取该职业的介绍\n/m :游戏内使用,获取自己已有职业的介绍\n\n如需查看其它指令请输入:/cmd" }, + "BetaMessage": { + "13": "当前模组版本为Beta测试版,将在 {0} 天后过期!\n\n版本过期后将无法进入游戏,注意更新!" + }, "CommandsInHost": { "13": "大厅指令:\n/gm [模式代码] :切换游戏模式\n模式代码:gm(赌怪模式)、hn(猎杀模式)、ph(道具躲猫猫)\n\n/kick [玩家名称] :踢出玩家\n/ban [玩家名称] 封禁玩家\n\n游戏中指令:\n/end :强制游戏结束\n/meeting (mt) 召集/结束会议\n/kill [玩家名称] :强制击杀玩家\n/revive [玩家名称] : 强制复活玩家" }, @@ -2425,15 +2428,6 @@ "0": "Players With Different Versions:", "13": "装了不同版本模组的玩家:" }, - "SendTargetsDefault": { - "13": "发送给:默认" - }, - "SendTargetsAll": { - "13": "发送给:所有人" - }, - "SendTargetsDead": { - "13": "发送给:死亡玩家" - }, "tasksNum": { "0": "Tasks {0}", "13": "任务 {0}" @@ -4245,6 +4239,9 @@ "InfoSleuthFullDesc": { "13": "在会议中投票给查验目标,\n下一轮会议开始时即可获得投票目标的身份信息。" }, + "BalancerFullDesc": { + "13": "可以在会议中选择两位玩家挂上天平,所有玩家只能在这两位玩家中投票。\n\n在特殊会议中,如果平票则同时驱逐两位玩家。\n\n如果其中一位玩家死亡(例如被赌死),则直接跳过投票环节直接驱逐另一位被挂上天平的玩家。可以在会议中选择两位玩家挂上天平,所有玩家只能在这两位玩家中投票。\n\n在特殊会议中,如果平票则同时驱逐两位玩家。\n如果其中一位玩家死亡(例如被赌死),则直接跳过投票环节直接驱逐另一位被挂上天平的玩家。" + }, "LoverFullDesc": { "13": "执子之手,与子共生。\n恋人如果有任何一方被击杀,另一方也会一起死亡。\n当恋人中有一方并非船员时并且恋人存活,\n则不会计算该玩家的任务进度。\n\n剩余3名玩家时并且两名玩家为恋人时,\n恋人将独自获胜。" }, @@ -4288,7 +4285,7 @@ "13": "体型更大,移速更“慢”" }, "MiniFullDesc": { - "13": "18岁之前不可被击杀,但击杀CD双倍。\n18岁后可被击杀且击杀CD变短" + "13": "18岁之前不可被击杀,但击杀CD双倍。\n18岁后可被击杀且击杀CD变短。\n\n另外: 如果小孩是船员阵营,被驱逐后所有玩家都会失败!" }, "VipFullDesc": { "13": "VIP死亡时,所有人都会接收到闪光。\n如果房间设置闪光可显示阵营颜色,\n则白色闪光代表死者为船员,蓝色代表中立,红色代表红狼。" diff --git a/TheOtherRoles/Roles/Crewmate/Balancer.cs b/TheOtherRoles/Roles/Crewmate/Balancer.cs index 8f76d42a..733a09d9 100644 --- a/TheOtherRoles/Roles/Crewmate/Balancer.cs +++ b/TheOtherRoles/Roles/Crewmate/Balancer.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using Hazel; +using TheOtherRoles.Patches; using TheOtherRoles.Utilities; using TMPro; using UnityEngine; @@ -29,6 +30,7 @@ public static void clearAndReload() BalancerVoteTime = CustomOptionHolder.balancerVoteTime.GetInt(); CurrentState = BalancerState.NotBalance; IsDoubleExile = false; + exiled1 = false; currentTarget = null; } @@ -54,6 +56,7 @@ public enum BalancerState private static int pleasevoteanimIndex; private static float rotate; private static float openMADENOtimer; + private static bool exiled1; public static void Update() { @@ -71,7 +74,8 @@ public static void Update() { target = targetplayerright; } - if (AmongUsClient.Instance.AmHost) MeetingHud.Instance.RpcVotingComplete(new List().ToArray(), target.Data, false); + if (AmongUsClient.Instance.AmHost && !exiled1) MeetingHud.Instance.RpcVotingComplete(new List().ToArray(), target.Data, false); + exiled1 = true; return; } switch (CurrentState) @@ -204,6 +208,8 @@ public static void Update() if (BackObject.transform.localPosition.x <= -10) { CurrentState = BalancerState.WaitVote; + MeetingHud.Instance.HostIcon.gameObject.SetActive(false); + MeetingHudPatch.ShowHost.Text.gameObject.SetActive(false); MeetingHud.Instance.transform.FindChild("MeetingContents/PhoneUI/baseGlass").transform.localPosition = new(0.012f, 0, 0); MeetingHud.Instance.TitleText.GetComponent().enabled = false; @@ -240,6 +246,7 @@ public static void WrapUp(PlayerControl exiled) targetplayerright = null; targetplayerleft = null; IsDoubleExile = false; + exiled1 = false; currentAbilityUser = null; CurrentState = BalancerState.NotBalance; currentTarget = null; diff --git a/TheOtherRoles/Roles/Modifier/Shifter.cs b/TheOtherRoles/Roles/Modifier/Shifter.cs index 38492d9e..2e0f7d3f 100644 --- a/TheOtherRoles/Roles/Modifier/Shifter.cs +++ b/TheOtherRoles/Roles/Modifier/Shifter.cs @@ -221,6 +221,11 @@ public static void shiftRole(PlayerControl player1, PlayerControl player2, bool if (repeat) shiftRole(player2, player1, false); PartTimer.partTimer = player1; } + else if (Balancer.balancer != null && Balancer.balancer == player2) + { + if (repeat) shiftRole(player2, player1, false); + Balancer.balancer = player1; + } } public static void clearAndReload() diff --git a/TheOtherRoles/Utilities/CachedPlayer.cs b/TheOtherRoles/Utilities/CachedPlayer.cs index 23197c40..bf87c44d 100644 --- a/TheOtherRoles/Utilities/CachedPlayer.cs +++ b/TheOtherRoles/Utilities/CachedPlayer.cs @@ -37,20 +37,9 @@ public class CachedPlayer public Vector2 TruePosition => PlayerControl.GetTruePosition(); public Vector2 ControlOffset => PlayerControl.Collider.offset; - public static implicit operator bool(CachedPlayer player) - { - return player != null && player.PlayerControl; - } - - public static implicit operator PlayerControl(CachedPlayer player) - { - return player.PlayerControl; - } - - public static implicit operator PlayerPhysics(CachedPlayer player) - { - return player.PlayerPhysics; - } + public static implicit operator bool(CachedPlayer player) => player != null && player.PlayerControl; + public static implicit operator PlayerControl(CachedPlayer player) => player.PlayerControl; + public static implicit operator PlayerPhysics(CachedPlayer player) => player.PlayerPhysics; } [HarmonyPatch] @@ -70,14 +59,6 @@ public static void CachePlayerPatch(PlayerControl __instance) }; CachedPlayer.AllPlayers.Add(player); CachedPlayer.PlayerPtrs[__instance.Pointer] = player; - // Debug - foreach (var cachedPlayer in CachedPlayer.AllPlayers) - { - if (!cachedPlayer.PlayerControl || !cachedPlayer.PlayerPhysics || !cachedPlayer.NetTransform || !cachedPlayer.transform) - { - Error($"CachedPlayer {cachedPlayer.PlayerControl.name} has null fields"); - } - } } [HarmonyPatch(typeof(PlayerControl), nameof(PlayerControl.OnDestroy))] diff --git a/TheOtherRoles/Utilities/MapData.cs b/TheOtherRoles/Utilities/MapData.cs index d349c60d..5edc7777 100644 --- a/TheOtherRoles/Utilities/MapData.cs +++ b/TheOtherRoles/Utilities/MapData.cs @@ -228,6 +228,24 @@ public static List FindVentSpawnPositions() return poss; } + public static void RandomSpawnPlayers() + { + if (AntiTeleport.antiTeleport.Any(x => x == PlayerControl.LocalPlayer)) return; + Vector3 newPosition; + if (CustomOptionHolder.randomGameStartToVents.getBool()) + { + newPosition = FindVentSpawnPositions()[rnd.Next(FindVentSpawnPositions().Count)]; + CachedPlayer.LocalPlayer.PlayerControl.NetTransform.RpcSnapTo(FindVentSpawnPositions()[rnd.Next(FindVentSpawnPositions().Count)]); + } + else + { + newPosition = MapSpawnPosition()[rnd.Next(MapSpawnPosition().Count)]; + CachedPlayer.LocalPlayer.PlayerControl.NetTransform.RpcSnapTo(MapSpawnPosition()[rnd.Next(MapSpawnPosition().Count)]); + } + Message($"Span to Vector3: {newPosition.x}, {newPosition.y}, {newPosition.z}"); + } + + public static void RandomSpawnAllPlayers() => RandomSpawnPlayers(PlayerControl.AllPlayerControls.ToArray()); public static void RandomSpawnAllPlayersToVent() => RandomSpawnToVent(PlayerControl.AllPlayerControls.ToArray().Where(n => n.IsAlive()));