mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-04 03:39:55 +00:00
fix solanum mask weirdness
This commit is contained in:
parent
659ab557ee
commit
89ace6bee5
@ -1,4 +1,4 @@
|
||||
using QSB.Player;
|
||||
using QSB.EyeOfTheUniverse.MaskSync;
|
||||
using QSB.WorldSync;
|
||||
using System.Linq;
|
||||
|
||||
@ -8,14 +8,21 @@ namespace QSB.EyeOfTheUniverse.InstrumentSync.WorldObjects
|
||||
{
|
||||
public void Gather()
|
||||
{
|
||||
AttachedObject.Gather();
|
||||
|
||||
var maskZoneController = QSBWorldSync.GetUnityObjects<MaskZoneController>().First();
|
||||
if (maskZoneController._maskInstrument == AttachedObject)
|
||||
{
|
||||
// remote gathering solanum mask - make all players visible
|
||||
QSBPlayerManager.ShowAllPlayers();
|
||||
var shuttleController = QSBWorldSync.GetUnityObjects<EyeShuttleController>().First();
|
||||
|
||||
foreach (var player in MaskManager.WentOnSolanumsWildRide)
|
||||
{
|
||||
player.DitheringAnimator.SetVisible(true, 0.5f);
|
||||
}
|
||||
|
||||
maskZoneController._whiteSphere.SetActive(false);
|
||||
shuttleController._maskObject.SetActive(true);
|
||||
}
|
||||
|
||||
AttachedObject.Gather();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ using QSB.Messaging;
|
||||
using QSB.Player;
|
||||
using QSB.Utility;
|
||||
using QSB.WorldSync;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
|
||||
@ -13,6 +14,8 @@ namespace QSB.EyeOfTheUniverse.MaskSync
|
||||
private static bool _flickering;
|
||||
private static float _flickerOutTime;
|
||||
|
||||
public static List<PlayerInfo> WentOnSolanumsWildRide = new();
|
||||
|
||||
public void Awake() => QSBSceneManager.OnSceneLoaded += OnSceneLoaded;
|
||||
|
||||
private static void OnSceneLoaded(OWScene oldScene, OWScene newScene, bool inUniverse)
|
||||
|
@ -1,5 +1,9 @@
|
||||
using HarmonyLib;
|
||||
using QSB.Patches;
|
||||
using QSB.Player;
|
||||
using QSB.Utility;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
|
||||
namespace QSB.EyeOfTheUniverse.MaskSync.Patches
|
||||
{
|
||||
@ -11,12 +15,37 @@ namespace QSB.EyeOfTheUniverse.MaskSync.Patches
|
||||
[HarmonyPatch(typeof(EyeShuttleController), nameof(EyeShuttleController.OnLaunchSlotActivated))]
|
||||
public static bool DontLaunch(EyeShuttleController __instance)
|
||||
{
|
||||
QSBPlayerManager.PlayerList.Where(x => x.IsInEyeShuttle).ForEach(x => MaskManager.WentOnSolanumsWildRide.Add(x));
|
||||
|
||||
if (__instance._isPlayerInside)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
MaskManager.FlickerOutShuttle();
|
||||
__instance._hasLaunched = true;
|
||||
__instance._hasArrivedAtMask = true;
|
||||
__instance._hasPlayedOneShot = true;
|
||||
__instance.enabled = false;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
[HarmonyPrefix]
|
||||
[HarmonyPatch(typeof(MaskZoneController), nameof(MaskZoneController.OnFinishGather))]
|
||||
public static bool FinishGather(MaskZoneController __instance)
|
||||
{
|
||||
__instance._shuttle.OnFinishGather();
|
||||
|
||||
if (MaskManager.WentOnSolanumsWildRide.Contains(QSBPlayerManager.LocalPlayer))
|
||||
{
|
||||
Locator.GetPlayerBody().SetPosition(__instance._returnSocket.position);
|
||||
Locator.GetPlayerBody().SetRotation(__instance._returnSocket.rotation);
|
||||
Locator.GetPlayerBody().SetVelocity(Vector3.zero);
|
||||
var component = Locator.GetPlayerCamera().GetComponent<PlayerCameraController>();
|
||||
component.SetDegreesY(component.GetMinDegreesY());
|
||||
}
|
||||
|
||||
__instance.enabled = false;
|
||||
|
||||
return false;
|
||||
|
@ -13,7 +13,7 @@ namespace QSB.TriggerSync.WorldObjects
|
||||
|
||||
protected override void OnEnter(PlayerInfo player)
|
||||
{
|
||||
if (Occupants.Count == 1)
|
||||
if (Occupants.Count == 1 && !TriggerOwner._shuttle.HasLaunched())
|
||||
{
|
||||
TriggerOwner._whiteSphere.SetActive(true);
|
||||
TriggerOwner._groundSignal.SetSignalActivation(false);
|
||||
|
Loading…
x
Reference in New Issue
Block a user