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); }
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(); }