mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-06 00:39:55 +00:00
Merge branch 'dev' into nh-stuff
This commit is contained in:
commit
9ac5c41f70
2
.github/workflows/build.yaml
vendored
2
.github/workflows/build.yaml
vendored
@ -13,5 +13,5 @@ jobs:
|
||||
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: QSB
|
||||
name: Raicuparta.QuantumSpaceBuddies
|
||||
path: .\QSB\Bin\Debug
|
@ -1,6 +1,5 @@
|
||||
using QSB.EchoesOfTheEye.DreamCandles.WorldObjects;
|
||||
using QSB.Messaging;
|
||||
using QSB.Patches;
|
||||
|
||||
namespace QSB.EchoesOfTheEye.DreamCandles.Messages;
|
||||
|
||||
@ -11,5 +10,5 @@ public class SetLitMessage : QSBWorldObjectMessage<QSBDreamCandle,
|
||||
base((lit, playAudio, instant)) { }
|
||||
|
||||
public override void OnReceiveRemote() =>
|
||||
QSBPatch.RemoteCall(() => WorldObject.AttachedObject.SetLit(Data.Lit, Data.PlayAudio, Data.Instant));
|
||||
WorldObject.AttachedObject.SetLit(Data.Lit, Data.PlayAudio, Data.Instant);
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
using QSB.EchoesOfTheEye.DreamLantern.WorldObjects;
|
||||
using QSB.Messaging;
|
||||
using QSB.Patches;
|
||||
|
||||
namespace QSB.EchoesOfTheEye.DreamLantern.Messages;
|
||||
|
||||
@ -9,5 +8,5 @@ internal class SetConcealedMessage : QSBWorldObjectMessage<QSBDreamLantern, bool
|
||||
public SetConcealedMessage(bool concealed) : base(concealed) { }
|
||||
|
||||
public override void OnReceiveRemote()
|
||||
=> QSBPatch.RemoteCall(() => WorldObject.AttachedObject.SetConcealed(Data));
|
||||
=> WorldObject.AttachedObject.SetConcealed(Data);
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
using QSB.EchoesOfTheEye.DreamLantern.WorldObjects;
|
||||
using QSB.Messaging;
|
||||
using QSB.Patches;
|
||||
|
||||
namespace QSB.EchoesOfTheEye.DreamLantern.Messages;
|
||||
|
||||
@ -9,5 +8,5 @@ internal class SetFocusMessage : QSBWorldObjectMessage<QSBDreamLantern, float>
|
||||
public SetFocusMessage(float focus) : base(focus) { }
|
||||
|
||||
public override void OnReceiveRemote()
|
||||
=> QSBPatch.RemoteCall(() => WorldObject.AttachedObject.SetFocus(Data));
|
||||
=> WorldObject.AttachedObject.SetFocus(Data);
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
using QSB.EchoesOfTheEye.DreamLantern.WorldObjects;
|
||||
using QSB.Messaging;
|
||||
using QSB.Patches;
|
||||
|
||||
namespace QSB.EchoesOfTheEye.DreamLantern.Messages;
|
||||
|
||||
@ -9,5 +8,5 @@ internal class SetLitMessage : QSBWorldObjectMessage<QSBDreamLantern, bool>
|
||||
public SetLitMessage(bool lit) : base(lit) { }
|
||||
|
||||
public override void OnReceiveRemote()
|
||||
=> QSBPatch.RemoteCall(() => WorldObject.AttachedObject.SetLit(Data));
|
||||
=> WorldObject.AttachedObject.SetLit(Data);
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
using QSB.EchoesOfTheEye.DreamLantern.WorldObjects;
|
||||
using QSB.Messaging;
|
||||
using QSB.Patches;
|
||||
|
||||
namespace QSB.EchoesOfTheEye.DreamLantern.Messages;
|
||||
|
||||
@ -9,5 +8,5 @@ internal class SetRangeMessage : QSBWorldObjectMessage<QSBDreamLantern, (float m
|
||||
public SetRangeMessage(float minRange, float maxRange) : base((minRange, maxRange)) { }
|
||||
|
||||
public override void OnReceiveRemote()
|
||||
=> QSBPatch.RemoteCall(() => WorldObject.AttachedObject.SetRange(Data.minRange, Data.maxRange));
|
||||
=> WorldObject.AttachedObject.SetRange(Data.minRange, Data.maxRange);
|
||||
}
|
||||
|
@ -126,6 +126,8 @@ internal class DreamLanternPatches : QSBPatch
|
||||
}
|
||||
|
||||
|
||||
// BUG: this breaks focus petals and concealer covers, since those act on the world model
|
||||
/*
|
||||
[HarmonyPrefix]
|
||||
[HarmonyPatch(typeof(DreamLanternController), nameof(DreamLanternController.UpdateVisuals))]
|
||||
public static bool UpdateVisuals(DreamLanternController __instance)
|
||||
@ -219,4 +221,5 @@ internal class DreamLanternPatches : QSBPatch
|
||||
__instance.ClearDirtyFlags();
|
||||
return false;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
using QSB.EchoesOfTheEye.DreamObjectProjectors.WorldObject;
|
||||
using QSB.Messaging;
|
||||
using QSB.Patches;
|
||||
|
||||
namespace QSB.EchoesOfTheEye.DreamObjectProjectors.Messages;
|
||||
|
||||
@ -8,6 +7,5 @@ internal class ProjectorLitMessage : QSBWorldObjectMessage<QSBDreamObjectProject
|
||||
{
|
||||
public ProjectorLitMessage(bool lit) : base(lit) { }
|
||||
|
||||
public override void OnReceiveRemote()
|
||||
=> QSBPatch.RemoteCall(() => WorldObject.AttachedObject.SetLit(Data));
|
||||
public override void OnReceiveRemote() => WorldObject.AttachedObject.SetLit(Data);
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
using QSB.EchoesOfTheEye.DreamObjectProjectors.WorldObject;
|
||||
using QSB.Messaging;
|
||||
using QSB.Patches;
|
||||
|
||||
namespace QSB.EchoesOfTheEye.DreamRafts.Messages;
|
||||
|
||||
@ -9,6 +8,6 @@ public class RespawnRaftMessage : QSBWorldObjectMessage<QSBDreamObjectProjector>
|
||||
public override void OnReceiveRemote()
|
||||
{
|
||||
var attachedObject = (DreamRaftProjector)WorldObject.AttachedObject;
|
||||
QSBPatch.RemoteCall(attachedObject.RespawnRaft);
|
||||
attachedObject.RespawnRaft();
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,4 @@
|
||||
using QSB.ItemSync.WorldObjects;
|
||||
using QSB.Patches;
|
||||
using QSB.WorldSync;
|
||||
|
||||
namespace QSB.EchoesOfTheEye.RaftSync.WorldObjects;
|
||||
@ -8,6 +7,5 @@ public class QSBRaftDock : WorldObject<RaftDock>, IQSBDropTarget
|
||||
{
|
||||
IItemDropTarget IQSBDropTarget.AttachedObject => AttachedObject;
|
||||
|
||||
public void OnPressInteract() =>
|
||||
QSBPatch.RemoteCall(AttachedObject.OnPressInteract);
|
||||
public void OnPressInteract() => AttachedObject.OnPressInteract();
|
||||
}
|
||||
|
@ -1,11 +1,9 @@
|
||||
using QSB.EchoesOfTheEye.Sarcophagus.WorldObjects;
|
||||
using QSB.Messaging;
|
||||
using QSB.Patches;
|
||||
|
||||
namespace QSB.EchoesOfTheEye.Sarcophagus.Messages;
|
||||
|
||||
public class OpenMessage : QSBWorldObjectMessage<QSBSarcophagus>
|
||||
{
|
||||
public override void OnReceiveRemote() =>
|
||||
QSBPatch.RemoteCall(WorldObject.AttachedObject.OnPressInteract);
|
||||
public override void OnReceiveRemote() => WorldObject.AttachedObject.OnPressInteract();
|
||||
}
|
||||
|
@ -1,10 +1,9 @@
|
||||
using QSB.EchoesOfTheEye.SlideProjectors.WorldObjects;
|
||||
using QSB.Messaging;
|
||||
using QSB.Patches;
|
||||
|
||||
namespace QSB.EchoesOfTheEye.SlideProjectors.Messages;
|
||||
|
||||
internal class NextSlideMessage : QSBWorldObjectMessage<QSBSlideProjector>
|
||||
{
|
||||
public override void OnReceiveRemote() => QSBPatch.RemoteCall(WorldObject.AttachedObject.NextSlide);
|
||||
public override void OnReceiveRemote() => WorldObject.AttachedObject.NextSlide();
|
||||
}
|
||||
|
@ -1,10 +1,9 @@
|
||||
using QSB.EchoesOfTheEye.SlideProjectors.WorldObjects;
|
||||
using QSB.Messaging;
|
||||
using QSB.Patches;
|
||||
|
||||
namespace QSB.EchoesOfTheEye.SlideProjectors.Messages;
|
||||
|
||||
internal class PreviousSlideMessage : QSBWorldObjectMessage<QSBSlideProjector>
|
||||
{
|
||||
public override void OnReceiveRemote() => QSBPatch.RemoteCall(WorldObject.AttachedObject.PreviousSlide);
|
||||
public override void OnReceiveRemote() => WorldObject.AttachedObject.PreviousSlide();
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ public class QSBElevator : WorldObject<Elevator>
|
||||
}
|
||||
}
|
||||
|
||||
QSBPatch.RemoteCall(AttachedObject.StartLift);
|
||||
AttachedObject.StartLift();
|
||||
}
|
||||
|
||||
private void SetDirection(bool isGoingUp)
|
||||
|
@ -2,7 +2,6 @@
|
||||
using QSB.ItemSync.Messages;
|
||||
using QSB.ItemSync.WorldObjects.Sockets;
|
||||
using QSB.Messaging;
|
||||
using QSB.Patches;
|
||||
using QSB.Player;
|
||||
using QSB.SectorSync.WorldObjects;
|
||||
using QSB.WorldSync;
|
||||
@ -71,7 +70,7 @@ public class QSBItem<T> : WorldObject<T>, IQSBItem
|
||||
|
||||
if (_lastSocket != null)
|
||||
{
|
||||
QSBPatch.RemoteCall(() => _lastSocket.PlaceIntoSocket(this));
|
||||
_lastSocket.PlaceIntoSocket(this);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -116,10 +115,10 @@ public class QSBItem<T> : WorldObject<T>, IQSBItem
|
||||
public ItemType GetItemType() => AttachedObject.GetItemType();
|
||||
|
||||
public void PickUpItem(Transform holdTransform) =>
|
||||
QSBPatch.RemoteCall(() => AttachedObject.PickUpItem(holdTransform));
|
||||
AttachedObject.PickUpItem(holdTransform);
|
||||
|
||||
public void DropItem(Vector3 worldPosition, Vector3 worldNormal, Transform parent, Sector sector, IItemDropTarget customDropTarget) =>
|
||||
QSBPatch.RemoteCall(() => AttachedObject.DropItem(worldPosition, worldNormal, parent, sector, customDropTarget));
|
||||
AttachedObject.DropItem(worldPosition, worldNormal, parent, sector, customDropTarget);
|
||||
|
||||
public void OnCompleteUnsocket() => AttachedObject.OnCompleteUnsocket();
|
||||
}
|
||||
|
@ -1,5 +1,4 @@
|
||||
using QSB.ItemSync.WorldObjects.Items;
|
||||
using QSB.Patches;
|
||||
using QSB.WorldSync;
|
||||
|
||||
namespace QSB.ItemSync.WorldObjects.Sockets;
|
||||
@ -14,8 +13,8 @@ internal class QSBItemSocket : WorldObject<OWItemSocket>
|
||||
public bool IsSocketOccupied() => AttachedObject.IsSocketOccupied();
|
||||
|
||||
public void PlaceIntoSocket(IQSBItem item)
|
||||
=> QSBPatch.RemoteCall(() => AttachedObject.PlaceIntoSocket((OWItem)item.AttachedObject));
|
||||
=> AttachedObject.PlaceIntoSocket((OWItem)item.AttachedObject);
|
||||
|
||||
public void RemoveFromSocket()
|
||||
=> QSBPatch.RemoteCall(AttachedObject.RemoveFromSocket);
|
||||
}
|
||||
=> AttachedObject.RemoveFromSocket();
|
||||
}
|
||||
|
@ -2,6 +2,7 @@
|
||||
using OWML.Common;
|
||||
using QSB.ClientServerStateSync;
|
||||
using QSB.ClientServerStateSync.Messages;
|
||||
using QSB.Patches;
|
||||
using QSB.Player;
|
||||
using QSB.Player.Messages;
|
||||
using QSB.Player.TransformSync;
|
||||
@ -86,7 +87,9 @@ public static class QSBMessageManager
|
||||
|
||||
if (msg.From != QSBPlayerManager.LocalPlayerId)
|
||||
{
|
||||
QSBPatch.Remote = true;
|
||||
msg.OnReceiveRemote();
|
||||
QSBPatch.Remote = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1,5 +1,4 @@
|
||||
using QSB.Messaging;
|
||||
using QSB.Patches;
|
||||
using QSB.WorldSync;
|
||||
|
||||
namespace QSB.ModelShip.Messages;
|
||||
@ -11,7 +10,10 @@ internal class RespawnModelShipMessage : QSBMessage<bool>
|
||||
public override void OnReceiveRemote()
|
||||
{
|
||||
var flightConsole = QSBWorldSync.GetUnityObject<RemoteFlightConsole>();
|
||||
QSBPatch.RemoteCall(() => flightConsole.RespawnModelShip(Data));
|
||||
if (Data) flightConsole._modelShipBody.GetComponent<OWAudioSource>().PlayOneShot(AudioType.TH_RetrieveModelShip);
|
||||
flightConsole.RespawnModelShip(Data);
|
||||
if (Data)
|
||||
{
|
||||
flightConsole._modelShipBody.GetComponent<OWAudioSource>().PlayOneShot(AudioType.TH_RetrieveModelShip);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
using QSB.AuthoritySync;
|
||||
using QSB.Messaging;
|
||||
using QSB.ModelShip.TransformSync;
|
||||
using QSB.Patches;
|
||||
using QSB.Player;
|
||||
using QSB.Player.TransformSync;
|
||||
using QSB.Utility;
|
||||
@ -75,6 +74,6 @@ internal class UseFlightConsoleMessage : QSBMessage<bool>
|
||||
// Client messes up its position when they start flying it
|
||||
// We can just recall it immediately so its in the right place.
|
||||
var console = QSBWorldSync.GetUnityObject<RemoteFlightConsole>();
|
||||
QSBPatch.RemoteCall(() => console.RespawnModelShip(false));
|
||||
console.RespawnModelShip(false);
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,4 @@
|
||||
using HarmonyLib;
|
||||
using QSB.Utility;
|
||||
using System;
|
||||
|
||||
namespace QSB.Patches;
|
||||
|
||||
@ -12,30 +10,8 @@ public abstract class QSBPatch
|
||||
|
||||
public void DoPatches(Harmony instance) => instance.PatchAll(GetType());
|
||||
|
||||
#region remote calls
|
||||
|
||||
protected static bool Remote { get; private set; }
|
||||
protected static object RemoteData { get; private set; }
|
||||
|
||||
public static void RemoteCall(Action call, object data = null)
|
||||
{
|
||||
Remote = true;
|
||||
RemoteData = data;
|
||||
nameof(QSBPatch).Try("doing remote call", call);
|
||||
Remote = false;
|
||||
RemoteData = null;
|
||||
}
|
||||
|
||||
public static T RemoteCall<T>(Func<T> call, object data = null)
|
||||
{
|
||||
Remote = true;
|
||||
RemoteData = data;
|
||||
var t = default(T);
|
||||
nameof(QSBPatch).Try("doing remote call", () => t = call());
|
||||
Remote = false;
|
||||
RemoteData = null;
|
||||
return t;
|
||||
}
|
||||
|
||||
#endregion
|
||||
/// <summary>
|
||||
/// this is true when a message is received remotely (OnReceiveRemote) or a player leaves (OnRemovePlayer)
|
||||
/// </summary>
|
||||
public static bool Remote;
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
using OWML.Common;
|
||||
using QSB.Messaging;
|
||||
using QSB.Patches;
|
||||
using QSB.Player.Messages;
|
||||
using QSB.PlayerBodySetup.Local;
|
||||
using QSB.PlayerBodySetup.Remote;
|
||||
@ -48,7 +49,9 @@ public class PlayerTransformSync : SectoredTransformSync
|
||||
JoinLeaveSingularity.Create(Player, false);
|
||||
|
||||
// TODO : Maybe move this to a leave event...? Would ensure everything could finish up before removing the player
|
||||
QSBPatch.Remote = true;
|
||||
QSBPlayerManager.OnRemovePlayer?.Invoke(Player);
|
||||
QSBPatch.Remote = false;
|
||||
base.OnStopClient();
|
||||
Player.HudMarker?.Remove();
|
||||
QSBPlayerManager.PlayerList.Remove(Player);
|
||||
|
@ -3,7 +3,7 @@
|
||||
<AssemblyTitle>Quantum Space Buddies</AssemblyTitle>
|
||||
<Product>Quantum Space Buddies</Product>
|
||||
<Description>Multiplayer mod for Outer Wilds</Description>
|
||||
<OutputPath Condition="Exists('$(OwmlDir)')">$(OwmlDir)\Mods\QSB</OutputPath>
|
||||
<OutputPath Condition="Exists('$(OwmlDir)')">$(OwmlDir)\Mods\Raicuparta.QuantumSpaceBuddies</OutputPath>
|
||||
<NoWarn>CS1998;CS0649</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
using QSB.Messaging;
|
||||
using QSB.Patches;
|
||||
using QSB.ShipSync.WorldObjects;
|
||||
|
||||
namespace QSB.ShipSync.Messages;
|
||||
@ -7,5 +6,5 @@ namespace QSB.ShipSync.Messages;
|
||||
internal class LegDetachMessage : QSBWorldObjectMessage<QSBShipDetachableLeg>
|
||||
{
|
||||
public override void OnReceiveRemote() =>
|
||||
QSBPatch.RemoteCall(WorldObject.AttachedObject.Detach);
|
||||
WorldObject.AttachedObject.Detach();
|
||||
}
|
||||
|
@ -1,5 +1,4 @@
|
||||
using QSB.Messaging;
|
||||
using QSB.Patches;
|
||||
using QSB.ShipSync.WorldObjects;
|
||||
|
||||
namespace QSB.ShipSync.Messages;
|
||||
@ -7,5 +6,5 @@ namespace QSB.ShipSync.Messages;
|
||||
internal class ModuleDetachMessage : QSBWorldObjectMessage<QSBShipDetachableModule>
|
||||
{
|
||||
public override void OnReceiveRemote() =>
|
||||
QSBPatch.RemoteCall(WorldObject.AttachedObject.Detach);
|
||||
WorldObject.AttachedObject.Detach();
|
||||
}
|
||||
|
@ -1,5 +1,4 @@
|
||||
using QSB.Messaging;
|
||||
using QSB.Patches;
|
||||
using QSB.ShipSync.WorldObjects;
|
||||
|
||||
namespace QSB.ShipSync.Messages;
|
||||
@ -9,5 +8,5 @@ internal class ShipLightMessage : QSBWorldObjectMessage<QSBShipLight, bool>
|
||||
public ShipLightMessage(bool on) : base(on) { }
|
||||
|
||||
public override void OnReceiveRemote() =>
|
||||
QSBPatch.RemoteCall(() => WorldObject.AttachedObject.SetOn(Data));
|
||||
WorldObject.AttachedObject.SetOn(Data);
|
||||
}
|
||||
|
@ -1,5 +1,4 @@
|
||||
using QSB.Messaging;
|
||||
using QSB.Patches;
|
||||
|
||||
namespace QSB.TimeSync.Messages;
|
||||
|
||||
@ -9,5 +8,5 @@ namespace QSB.TimeSync.Messages;
|
||||
public class SetSecondsRemainingMessage : QSBMessage<float>
|
||||
{
|
||||
public SetSecondsRemainingMessage(float secondsRemaining) : base(secondsRemaining) => To = 0;
|
||||
public override void OnReceiveRemote() => QSBPatch.RemoteCall(() => TimeLoop.SetSecondsRemaining(Data));
|
||||
public override void OnReceiveRemote() => TimeLoop.SetSecondsRemaining(Data);
|
||||
}
|
||||
|
@ -5,7 +5,6 @@ using QSB.ClientServerStateSync.Messages;
|
||||
using QSB.DeathSync;
|
||||
using QSB.Inputs;
|
||||
using QSB.Messaging;
|
||||
using QSB.Patches;
|
||||
using QSB.Player;
|
||||
using QSB.Player.Messages;
|
||||
using QSB.TimeSync.Messages;
|
||||
@ -153,7 +152,7 @@ public class WakeUpSync : NetworkBehaviour
|
||||
// prevents accidental supernova at start of loop
|
||||
if (_serverLoopCount == PlayerData.LoadLoopCount())
|
||||
{
|
||||
QSBPatch.RemoteCall(() => TimeLoop.SetSecondsRemaining(secondsRemaining));
|
||||
TimeLoop.SetSecondsRemaining(secondsRemaining);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
"MainMenuHost": "OUVRIR AU MULTIJOUEUR",
|
||||
"MainMenuConnect": "SE CONNECTER AU MULTIJOUEUR",
|
||||
"PauseMenuDisconnect": "DÉCONNECTER",
|
||||
"PauseMenuStopHosting": "ARRÊTEZ L'HÉBERGEMENT",
|
||||
"PauseMenuStopHosting": "ARRÊTER L'HÉBERGEMENT",
|
||||
"PublicIPAddress": "Adresse IP publique\n\n(CELA EFFACERA VOTRE PROGRESSION MULTIJOUEUR)",
|
||||
"ProductUserID": "ID utilisateur\n\n(CELA EFFACERA VOTRE PROGRESSION MULTIJOUEUR)",
|
||||
"Connect": "SE CONNECTER",
|
||||
@ -28,7 +28,7 @@
|
||||
"DLCMismatch": "Les états d'installation du DLC ne correspondent pas. (Client:{0}, Serveur:{1})",
|
||||
"GameProgressLimit": "Le jeu a trop progressé.",
|
||||
"AddonMismatch": "Non-concordance des addons. (Client:{0} addons, Serveur:{1} addons)",
|
||||
"IncompatibleMod": "Utiliser un mod incompatible/non autorisé. Le premier mod trouvé était {0}",
|
||||
"IncompatibleMod": "Tu utilises un mod incompatible/non autorisé. Le premier mod trouvé était {0}",
|
||||
"PlayerJoinedTheGame": "{0} a rejoint!",
|
||||
"PlayerWasKicked": "{0} a été expulsé.",
|
||||
"KickedFromServer": "Tu as été expulsé du serveur. Raison : {0}",
|
||||
@ -39,6 +39,11 @@
|
||||
"TimeSyncWaitForAllToReady": "Attendez le début de la boucle...",
|
||||
"TimeSyncWaitForAllToDie": "Attendez la fin de la boucle...",
|
||||
"GalaxyMapEveryoneNotPresent": "Ce n’est pas encore le moment. Tout le monde doit être ici pour continuer.",
|
||||
"YouAreDead": "Tu es mort.",
|
||||
"WaitingForRespawn": "Attendez que quelqu'un vouz ressuscité...",
|
||||
"WaitingForAllToDie": "Attendez que {0} joueur(s) meurt/meurent...",
|
||||
"AttachToShip": "S'attacher à la fusée",
|
||||
"DetachFromShip": "Se détacher de la fusée",
|
||||
"DeathMessages": {
|
||||
"Default": [
|
||||
"{0} est mort",
|
||||
|
@ -1,5 +1,4 @@
|
||||
using QSB.Messaging;
|
||||
using QSB.Patches;
|
||||
|
||||
namespace QSB.Utility.Messages;
|
||||
|
||||
@ -12,6 +11,6 @@ public class DebugTriggerSupernovaMessage : QSBMessage
|
||||
PlayerData.SaveLoopCount(2);
|
||||
TimeLoop.SetTimeLoopEnabled(true);
|
||||
TimeLoop._isTimeFlowing = true;
|
||||
QSBPatch.RemoteCall(() => TimeLoop.SetSecondsRemaining(0));
|
||||
TimeLoop.SetSecondsRemaining(0);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user