mirror of
https://github.com/Gurge44/EndlessHostRoles.git
synced 2026-10-19 15:51:58 +00:00
more fixes
This commit is contained in:
1 parent
a94ddb82e2
commit
945474e9fc
8 files changed
+80
-29
No files matched your search
@@ -869,6 +869,8 @@ public static class CaptureTheFlag
|
||||
.SendMessage();
|
||||
}
|
||||
|
||||
bool notify = false;
|
||||
|
||||
if (TemporarilyOutPlayers.TryGetValue(__instance.PlayerId, out long endTS))
|
||||
{
|
||||
if (now >= endTS)
|
||||
@@ -881,7 +883,7 @@ public static class CaptureTheFlag
|
||||
SpawnProtectionTimes[__instance.PlayerId] = Utils.TimeStamp + SpawnProtectionTime.GetInt();
|
||||
}
|
||||
|
||||
if (!notified) Utils.NotifyRoles(SpecifySeer: __instance, SpecifyTarget: __instance, SendOption: SendOption.None);
|
||||
notify = true;
|
||||
}
|
||||
|
||||
if (SpawnProtectionTimes.TryGetValue(__instance.PlayerId, out long protectionEndTS))
|
||||
@@ -889,9 +891,11 @@ public static class CaptureTheFlag
|
||||
if (now >= protectionEndTS)
|
||||
SpawnProtectionTimes.Remove(__instance.PlayerId);
|
||||
|
||||
if (!notified)
|
||||
Utils.NotifyRoles(SpecifySeer: __instance, SpecifyTarget: __instance, SendOption: SendOption.None);
|
||||
notify = true;
|
||||
}
|
||||
|
||||
if (!notified && notify && PerSecondUpdateScheduler.ShouldRunUpdate(__instance.PlayerId))
|
||||
Utils.NotifyRoles(SpecifySeer: __instance, SpecifyTarget: __instance, SendOption: SendOption.None);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -547,7 +547,7 @@ public static class CustomRpcSenderExtensions
|
||||
|
||||
sender.checkLength = false;
|
||||
|
||||
if (sender.stream.Length + GetSetNameRpcSize(player.NetId, name) > 1100)
|
||||
if (sender.stream.Length + GetSetNameRpcSize(player.NetId, name) > 1180)
|
||||
{
|
||||
bool packed = sender.packed;
|
||||
sender.SendMessage();
|
||||
|
||||
+10
-2
@@ -239,6 +239,7 @@ public class CustomLogger
|
||||
|
||||
private const string UnityTag = "-unity";
|
||||
|
||||
private static string LastAppend;
|
||||
private static CustomLogger PrivateInstance;
|
||||
private float timer = 0.5f;
|
||||
|
||||
@@ -325,11 +326,18 @@ public class CustomLogger
|
||||
|
||||
string unityTag = fromUnity && !containsException ? UnityTag : string.Empty;
|
||||
|
||||
Builder.Append($"""
|
||||
string element = $"""
|
||||
<div class='log-entry{unityTag} {level.ToLower()}{unityTag}'>
|
||||
{message}
|
||||
</div>
|
||||
""");
|
||||
""";
|
||||
|
||||
if (LastAppend == element)
|
||||
element = "<span style='color: lime'>+</span>";
|
||||
else
|
||||
LastAppend = element;
|
||||
|
||||
Builder.Append(element);
|
||||
|
||||
#if DEBUG
|
||||
Finish(false);
|
||||
|
||||
@@ -64,13 +64,21 @@ public sealed class PlayerGameOptionsSender(PlayerControl player) : GameOptionsS
|
||||
|
||||
if (PackedWriterMessages > 0 && PackedWriter != null)
|
||||
{
|
||||
PackedWriter.EndMessage();
|
||||
var capturedWriter = PackedWriter;
|
||||
DataFlagRateLimiter.Enqueue(() =>
|
||||
try
|
||||
{
|
||||
AmongUsClient.Instance.SendOrDisconnect(capturedWriter);
|
||||
capturedWriter.Recycle();
|
||||
}, cleanup: capturedWriter.Recycle);
|
||||
PackedWriter.EndMessage();
|
||||
var capturedWriter = PackedWriter;
|
||||
DataFlagRateLimiter.Enqueue(() =>
|
||||
{
|
||||
AmongUsClient.Instance.SendOrDisconnect(capturedWriter);
|
||||
capturedWriter.Recycle();
|
||||
}, cleanup: capturedWriter.Recycle);
|
||||
}
|
||||
catch
|
||||
{
|
||||
try { PackedWriter.Recycle(); }
|
||||
catch { }
|
||||
}
|
||||
}
|
||||
|
||||
PackedWriter = MessageWriter.Get(SendOption.Reliable);
|
||||
@@ -95,15 +103,23 @@ public sealed class PlayerGameOptionsSender(PlayerControl player) : GameOptionsS
|
||||
{
|
||||
if (PackedWriterMessages > 0)
|
||||
{
|
||||
PackedWriter.EndMessage();
|
||||
Logger.Info($"PackedWriter flush queued - Length: {PackedWriter.Length}, Messages: {PackedWriterMessages}", "SendAllImmediately");
|
||||
var capturedWriter = PackedWriter;
|
||||
qa = DataFlagRateLimiter.Enqueue(() =>
|
||||
try
|
||||
{
|
||||
AmongUsClient.Instance.SendOrDisconnect(capturedWriter);
|
||||
capturedWriter.Recycle();
|
||||
Logger.Info("PackedWriter flush queue finished and sent", "SendAllImmediately");
|
||||
}, cleanup: capturedWriter.Recycle);
|
||||
PackedWriter.EndMessage();
|
||||
Logger.Info($"PackedWriter flush queued - Length: {PackedWriter.Length}, Messages: {PackedWriterMessages}", "SendAllImmediately");
|
||||
var capturedWriter = PackedWriter;
|
||||
qa = DataFlagRateLimiter.Enqueue(() =>
|
||||
{
|
||||
AmongUsClient.Instance.SendOrDisconnect(capturedWriter);
|
||||
capturedWriter.Recycle();
|
||||
Logger.Info("PackedWriter flush queue finished and sent", "SendAllImmediately");
|
||||
}, cleanup: capturedWriter.Recycle);
|
||||
}
|
||||
catch
|
||||
{
|
||||
try { PackedWriter.Recycle(); }
|
||||
catch { }
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -304,15 +320,23 @@ public sealed class PlayerGameOptionsSender(PlayerControl player) : GameOptionsS
|
||||
|
||||
if (PackedWriter.Length > 1000 || PackedWriterMessages >= AmongUsClient.Instance.GetMaxMessagePackingLimit())
|
||||
{
|
||||
PackedWriter.EndMessage();
|
||||
Logger.Info($"PackedWriter flush queued - Length: {PackedWriter.Length}, Messages: {PackedWriterMessages}", "SendOptionsArray");
|
||||
var capturedWriter = PackedWriter;
|
||||
DataFlagRateLimiter.Enqueue(() =>
|
||||
try
|
||||
{
|
||||
AmongUsClient.Instance.SendOrDisconnect(capturedWriter);
|
||||
capturedWriter.Recycle();
|
||||
Logger.Info("PackedWriter flush queue finished and sent", "SendOptionsArray");
|
||||
}, cleanup: capturedWriter.Recycle);
|
||||
PackedWriter.EndMessage();
|
||||
Logger.Info($"PackedWriter flush queued - Length: {PackedWriter.Length}, Messages: {PackedWriterMessages}", "SendOptionsArray");
|
||||
var capturedWriter = PackedWriter;
|
||||
DataFlagRateLimiter.Enqueue(() =>
|
||||
{
|
||||
AmongUsClient.Instance.SendOrDisconnect(capturedWriter);
|
||||
capturedWriter.Recycle();
|
||||
Logger.Info("PackedWriter flush queue finished and sent", "SendOptionsArray");
|
||||
}, cleanup: capturedWriter.Recycle);
|
||||
}
|
||||
catch
|
||||
{
|
||||
try { PackedWriter.Recycle(); }
|
||||
catch { }
|
||||
}
|
||||
PackedWriterMessages = 0;
|
||||
PackedWriter = MessageWriter.Get(SendOption.Reliable);
|
||||
PackedWriter.StartMessage(26);
|
||||
|
||||
@@ -913,6 +913,7 @@
|
||||
"Helper": "Helper",
|
||||
"HelperInfo": "Complete Tasks For Others",
|
||||
"HelperInfoLong": "(Crewmates):\\nAs the Helper, whenever you complete a task, a random crewmate will also have one of their tasks completed.",
|
||||
"Helper.AbilityWorksAfterDeath": "Ability Works After Death",
|
||||
"HelperCompletedTaskForYou": "The {0} completed a task for you!",
|
||||
"Ignitor": "Ignitor",
|
||||
"IgnitorInfo": "Light Candles for High Vision",
|
||||
|
||||
@@ -7,11 +7,14 @@ public class Helper : RoleBase
|
||||
{
|
||||
public static bool On;
|
||||
|
||||
private static OptionItem AbilityWorksAfterDeath;
|
||||
|
||||
public override bool IsEnable => On;
|
||||
|
||||
public override void SetupCustomOption()
|
||||
{
|
||||
StartSetup(651300)
|
||||
.AutoSetupOption(ref AbilityWorksAfterDeath, true)
|
||||
.CreateOverrideTasksData();
|
||||
}
|
||||
|
||||
@@ -27,6 +30,7 @@ public class Helper : RoleBase
|
||||
|
||||
public override void OnTaskComplete(PlayerControl pc, int completedTaskCount, int totalTaskCount)
|
||||
{
|
||||
if (!AbilityWorksAfterDeath.GetBool() && !pc.IsAlive()) return;
|
||||
var randomPlayer = Main.EnumeratePlayerControls().Without(pc).Where(x => x.Is(Team.Crewmate)).Select(x => (pc: x, ts: x.GetTaskState())).Where(x => !x.ts.IsTaskFinished && x.ts.HasTasks).Select(x => x.pc).RandomElement();
|
||||
#if IL2CPP
|
||||
var incompleteTasks = randomPlayer.myTasks.FindAll((Il2CppSystem.Predicate<PlayerTask>)(x => !x.IsComplete));
|
||||
|
||||
@@ -63,6 +63,7 @@ internal class Blackmailer : RoleBase
|
||||
|
||||
public override void AfterMeetingTasks()
|
||||
{
|
||||
NumBlackmailedThisRound = 0;
|
||||
if (AbilityExpires.GetValue() == 0) BlackmailedPlayerIds.Clear();
|
||||
}
|
||||
|
||||
|
||||
@@ -276,7 +276,16 @@ public class Amnesiac : RoleBase
|
||||
if (HasArrowsToDeadBodies.GetBool())
|
||||
{
|
||||
var pos = target.Pos();
|
||||
Instances.ForEach(x => LateTask.New(() => LocateArrow.Add(x.AmnesiacId, pos), IRandom.Instance.Next(ArrowMinDelay.GetInt(), ArrowMaxDelay.GetInt() + 1), "Amnesiac Arrow"));
|
||||
Instances.ForEach(x =>
|
||||
{
|
||||
LateTask.New(() =>
|
||||
{
|
||||
LocateArrow.Add(x.AmnesiacId, pos);
|
||||
var pc = x.AmnesiacId.GetPlayer();
|
||||
if (!pc || !pc.IsAlive()) return;
|
||||
Utils.NotifyRoles(SpecifySeer: pc, SpecifyTarget: pc);
|
||||
}, IRandom.Instance.Next(ArrowMinDelay.GetInt(), ArrowMaxDelay.GetInt() + 1), "Amnesiac Arrow");
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user