Merge pull request #10 from Honahec/fix/peer-not-connected

fix: permanent black screen (softlock) on map transition during cross-platform sessions
This commit is contained in:
kmyuhkyuk
2026-03-24 09:00:35 +08:00
committed by GitHub
@@ -0,0 +1,34 @@
using Godot;
using HarmonyLib;
using MegaCrit.Sts2.Core.Nodes.Screens.Overlays;
// ReSharper disable UnusedMember.Global
// ReSharper disable UnusedType.Global
namespace SlayTheSpire2.LAN.Multiplayer.Patchs.Screens
{
[HarmonyPatch("MegaCrit.Sts2.Core.Nodes.Screens.Overlays.NOverlayStack", "Remove")]
internal class NOverlayStackRemovePatch
{
private static bool Prefix(object __instance, object screen)
{
var overlay = screen as GodotObject;
if (overlay == null || !GodotObject.IsInstanceValid(overlay))
{
return false;
}
var connections = overlay.GetSignalConnectionList("Completed");
foreach (var connection in connections)
{
if (connection["callable"].AsCallable().Target == __instance)
{
GD.Print("NOverlayStack.Remove called twice, preventing crash.");
return false;
}
}
return true;
}
}
}