From dbec556dd3107e4b4ec90412e2beba4fe3fd7760 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Sat, 26 Mar 2022 22:24:05 -0700 Subject: [PATCH 1/4] QSBLightSensor: don't disable lights if local player is still in the sector :)) --- .../LightSensorSync/WorldObjects/QSBLightSensor.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/QSB/EchoesOfTheEye/LightSensorSync/WorldObjects/QSBLightSensor.cs b/QSB/EchoesOfTheEye/LightSensorSync/WorldObjects/QSBLightSensor.cs index 52dc4535..042ac136 100644 --- a/QSB/EchoesOfTheEye/LightSensorSync/WorldObjects/QSBLightSensor.cs +++ b/QSB/EchoesOfTheEye/LightSensorSync/WorldObjects/QSBLightSensor.cs @@ -17,6 +17,12 @@ internal class QSBLightSensor : WorldObject public void SetEnabled(bool enabled) { + if (AttachedObject._sector.ContainsAnyOccupants(DynamicOccupant.Player | DynamicOccupant.Probe)) + { + // local player is in sector, do not disable lights + return; + } + if (enabled && !AttachedObject.enabled) { AttachedObject.enabled = true; From 179a7ddfc3226e44529afeeba99b5205ac14c023 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Sat, 26 Mar 2022 22:47:04 -0700 Subject: [PATCH 2/4] QSBLightSensor: AttachedObject._sector null check --- .../LightSensorSync/WorldObjects/QSBLightSensor.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/QSB/EchoesOfTheEye/LightSensorSync/WorldObjects/QSBLightSensor.cs b/QSB/EchoesOfTheEye/LightSensorSync/WorldObjects/QSBLightSensor.cs index 042ac136..612b7725 100644 --- a/QSB/EchoesOfTheEye/LightSensorSync/WorldObjects/QSBLightSensor.cs +++ b/QSB/EchoesOfTheEye/LightSensorSync/WorldObjects/QSBLightSensor.cs @@ -17,7 +17,7 @@ internal class QSBLightSensor : WorldObject public void SetEnabled(bool enabled) { - if (AttachedObject._sector.ContainsAnyOccupants(DynamicOccupant.Player | DynamicOccupant.Probe)) + if (AttachedObject._sector && AttachedObject._sector.ContainsAnyOccupants(DynamicOccupant.Player | DynamicOccupant.Probe)) { // local player is in sector, do not disable lights return; From 4d339df9dbe4e629018ee6cde433d77df89e2305 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Sun, 27 Mar 2022 00:24:07 -0700 Subject: [PATCH 3/4] sync all persistent conditions --- .../Patches/ConversationPatches.cs | 29 +++---------------- .../Messages/RequestGameStateMessage.cs | 5 +--- QSB/WorldSync/QSBWorldSync.cs | 15 +--------- 3 files changed, 6 insertions(+), 43 deletions(-) diff --git a/QSB/ConversationSync/Patches/ConversationPatches.cs b/QSB/ConversationSync/Patches/ConversationPatches.cs index 84a7edfc..4dbbeeba 100644 --- a/QSB/ConversationSync/Patches/ConversationPatches.cs +++ b/QSB/ConversationSync/Patches/ConversationPatches.cs @@ -7,7 +7,6 @@ using QSB.Patches; using QSB.Player; using QSB.Utility; using QSB.WorldSync; -using System.Linq; namespace QSB.ConversationSync.Patches; @@ -16,22 +15,10 @@ public class ConversationPatches : QSBPatch { public override QSBPatchTypes Type => QSBPatchTypes.OnClientConnect; - public static readonly string[] PersistentConditionsToSync = - { - "MET_SOLANUM", - "MET_PRISONER", - "TALKED_TO_GABBRO", - "GABBRO_MERGE_TRIGGERED", - "KNOWS_MEDITATION" - }; - [HarmonyPrefix] [HarmonyPatch(typeof(DialogueConditionManager), nameof(DialogueConditionManager.SetConditionState))] - public static bool SetConditionState(string conditionName, bool conditionState) - { + public static void SetConditionState(string conditionName, bool conditionState) => new DialogueConditionMessage(conditionName, conditionState).Send(); - return true; - } [HarmonyPrefix] [HarmonyPatch(typeof(CharacterDialogueTree), nameof(CharacterDialogueTree.StartConversation))] @@ -159,19 +146,11 @@ public class ConversationPatches : QSBPatch [HarmonyPostfix] [HarmonyPatch(typeof(GameSave), nameof(GameSave.SetPersistentCondition))] - public static void SetPersistentCondition(string condition, bool state) - { - if (PersistentConditionsToSync.Contains(condition)) - { - new PersistentConditionMessage(condition, state).Send(); - } - } + public static void SetPersistentCondition(string condition, bool state) => + new PersistentConditionMessage(condition, state).Send(); [HarmonyPrefix] [HarmonyPatch(typeof(DialogueConditionManager), nameof(DialogueConditionManager.AddCondition))] - public static bool AddCondition(string conditionName, bool conditionState) - { + public static void AddCondition(string conditionName, bool conditionState) => new DialogueConditionMessage(conditionName, conditionState).Send(); - return true; - } } \ No newline at end of file diff --git a/QSB/SaveSync/Messages/RequestGameStateMessage.cs b/QSB/SaveSync/Messages/RequestGameStateMessage.cs index 0f4fb640..42a24547 100644 --- a/QSB/SaveSync/Messages/RequestGameStateMessage.cs +++ b/QSB/SaveSync/Messages/RequestGameStateMessage.cs @@ -1,9 +1,7 @@ using QSB.ConversationSync.Messages; -using QSB.ConversationSync.Patches; using QSB.Messaging; using QSB.Player; using QSB.Utility; -using System.Linq; namespace QSB.SaveSync.Messages; @@ -33,8 +31,7 @@ internal class RequestGameStateMessage : QSBMessage } var dictConditions = gameSave.dictConditions; - var dictConditionsToSend = dictConditions.Where(x => ConversationPatches.PersistentConditionsToSync.Contains(x.Key)); - foreach (var item in dictConditionsToSend) + foreach (var item in dictConditions) { new PersistentConditionMessage(item.Key, item.Value).Send(); } diff --git a/QSB/WorldSync/QSBWorldSync.cs b/QSB/WorldSync/QSBWorldSync.cs index 623cd43b..812143c6 100644 --- a/QSB/WorldSync/QSBWorldSync.cs +++ b/QSB/WorldSync/QSBWorldSync.cs @@ -1,7 +1,6 @@ using Cysharp.Threading.Tasks; using MonoMod.Utils; using OWML.Common; -using QSB.ConversationSync.Patches; using QSB.LogSync; using QSB.Messaging; using QSB.Player.TransformSync; @@ -174,23 +173,11 @@ public static class QSBWorldSync return; } - DebugLog.DebugWrite($"DIALOGUE CONDITIONS :"); DialogueConditions.Clear(); DialogueConditions.AddRange(DialogueConditionManager.SharedInstance._dictConditions); - foreach (var item in DialogueConditions) - { - DebugLog.DebugWrite($"- {item.Key}, {item.Value}"); - } - DebugLog.DebugWrite($"PERSISTENT CONDITIONS :"); - var dictConditions = PlayerData._currentGameSave.dictConditions; - var syncedConditions = dictConditions.Where(x => ConversationPatches.PersistentConditionsToSync.Contains(x.Key)); PersistentConditions.Clear(); - PersistentConditions.AddRange(syncedConditions.ToDictionary(x => x.Key, x => x.Value)); - foreach (var item in PersistentConditions) - { - DebugLog.DebugWrite($"- {item.Key}, {item.Value}"); - } + PersistentConditions.AddRange(PlayerData._currentGameSave.dictConditions); } private static void GameReset() From 1b92b5e23d3c6f31ba65e66b3b6b66f64959836b Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Sun, 27 Mar 2022 09:21:12 +0100 Subject: [PATCH 4/4] fix lantern patch goof --- QSB/ItemSync/Patches/ItemRemotePatches.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/QSB/ItemSync/Patches/ItemRemotePatches.cs b/QSB/ItemSync/Patches/ItemRemotePatches.cs index 0c88a48f..afa97774 100644 --- a/QSB/ItemSync/Patches/ItemRemotePatches.cs +++ b/QSB/ItemSync/Patches/ItemRemotePatches.cs @@ -146,7 +146,7 @@ internal class ItemRemotePatches : QSBPatch return true; } - __instance.SocketItem(socketTransform, sector); + base_SocketItem(__instance, socketTransform, sector); __instance.enabled = false; if (__instance._lanternController != null) {