public static bool QuantumShrine_ChangeQuantumState(QuantumShrine __instance)
        {
            var shrineWorldObject = __instance.GetWorldObject <QSBSocketedQuantumObject>();
            var isInControl       = shrineWorldObject.ControllingPlayer == QSBPlayerManager.LocalPlayerId;

            return(isInControl);
        }
 protected override void RebuildWorldObjects(OWScene scene)
 {
     DebugLog.DebugWrite("Rebuilding quantum objects...", MessageType.Warning);
     QSBWorldSync.Init <QSBQuantumState, QuantumState>();
     QSBWorldSync.Init <QSBSocketedQuantumObject, SocketedQuantumObject>();
     QSBWorldSync.Init <QSBMultiStateQuantumObject, MultiStateQuantumObject>();
     QSBWorldSync.Init <QSBQuantumSocket, QuantumSocket>();
     QSBWorldSync.Init <QSBQuantumShuffleObject, QuantumShuffleObject>();
     QSBWorldSync.Init <QSBQuantumMoon, QuantumMoon>();
     QSBWorldSync.Init <QSBEyeProxyQuantumMoon, EyeProxyQuantumMoon>();
     if (scene == OWScene.SolarSystem)
     {
         Shrine = Resources.FindObjectsOfTypeAll <QuantumShrine>().First();
     }
     IsReady = true;
 }
        public static bool QuantumShrine_IsPlayerInDarkness(QuantumShrine __instance, out bool __result)
        {
            foreach (var lamp in __instance._lamps)
            {
                if (lamp.intensity > 0f)
                {
                    __result = false;
                    return(false);
                }
            }

            var playersInMoon = QSBPlayerManager.PlayerList.Where(x => x.IsInMoon);

            if (playersInMoon.Any(player => !player.IsInShrine))
            {
                __result = false;
                return(false);
            }

            if (playersInMoon.Any(player => player.FlashLight != null && player.FlashLight.FlashlightOn))
            {
                __result = false;
                return(false);
            }

            if (playersInMoon.Count() == 0)
            {
                __result = false;
                return(false);
            }

            if (QSBPlayerManager.LocalPlayer != null &&
                QSBPlayerManager.LocalPlayer.IsInShrine &&
                PlayerState.IsFlashlightOn())
            {
                __result = false;
                return(false);
            }

            // BUG : make this *really* check for all players - check other probes and other jetpacks!
            __result = __instance._gate.GetOpenFraction() == 0f &&
                       !__instance._isProbeInside &&
                       Locator.GetThrusterLightTracker().GetLightRange() <= 0f;
            return(false);
        }
Exemple #4
0
        public override async UniTask BuildWorldObjects(OWScene scene, CancellationToken ct)
        {
            DebugLog.DebugWrite("Building quantum objects...", MessageType.Info);
            QSBWorldSync.Init <QSBQuantumState, QuantumState>();
            QSBWorldSync.Init <QSBSocketedQuantumObject, SocketedQuantumObject>();
            QSBWorldSync.Init <QSBMultiStateQuantumObject, MultiStateQuantumObject>();
            QSBWorldSync.Init <QSBQuantumSocket, QuantumSocket>();
            QSBWorldSync.Init <QSBQuantumShuffleObject, QuantumShuffleObject>();
            QSBWorldSync.Init <QSBQuantumMoon, QuantumMoon>();
            QSBWorldSync.Init <QSBEyeProxyQuantumMoon, EyeProxyQuantumMoon>();
            QSBWorldSync.Init <QSBQuantumSkeletonTower, QuantumSkeletonTower>();
            if (scene == OWScene.SolarSystem)
            {
                Shrine = QSBWorldSync.GetUnityObjects <QuantumShrine>().First();
            }

            UpdateFromDebugSetting();
        }