add entangle lock patch

This commit is contained in:
Mister_Nebula 2021-02-26 14:19:42 +00:00
parent 807af5ad2d
commit 72a6bbed22
4 changed files with 27 additions and 0 deletions

View File

@ -170,6 +170,7 @@
<Compile Include="QuantumSync\Events\SocketStateChangeMessage.cs" />
<Compile Include="QuantumSync\Patches\QuantumPatches.cs" />
<Compile Include="QuantumSync\WorldObjects\QSBMultiStateQuantumObject.cs" />
<Compile Include="QuantumSync\WorldObjects\QSBQuantumMoon.cs" />
<Compile Include="QuantumSync\WorldObjects\QSBQuantumObject.cs" />
<Compile Include="QuantumSync\WorldObjects\QSBQuantumShuffleObject.cs" />
<Compile Include="QuantumSync\WorldObjects\QSBSocketedQuantumObject.cs" />

View File

@ -29,6 +29,7 @@ namespace QSB.QuantumSync.Patches
QSBCore.Helper.HarmonyHelper.AddPrefix<QuantumShrine>("OnEntry", typeof(QuantumPatches), nameof(Shrine_OnEntry));
QSBCore.Helper.HarmonyHelper.AddPrefix<QuantumShrine>("OnExit", typeof(QuantumPatches), nameof(Shrine_OnExit));
QSBCore.Helper.HarmonyHelper.AddPrefix<QuantumMoon>("CheckPlayerFogProximity", typeof(QuantumPatches), nameof(Moon_CheckPlayerFogProximity));
QSBCore.Helper.HarmonyHelper.AddPrefix<QuantumObject>("IsLockedByPlayerContact", typeof(QuantumPatches), nameof(Object_IsLockedByPlayerContact));
}
public override void DoUnpatches()
@ -43,6 +44,14 @@ namespace QSB.QuantumSync.Patches
QSBCore.Helper.HarmonyHelper.Unpatch<QuantumShrine>("OnEntry");
QSBCore.Helper.HarmonyHelper.Unpatch<QuantumShrine>("OnExit");
QSBCore.Helper.HarmonyHelper.Unpatch<QuantumMoon>("CheckPlayerFogProximity");
QSBCore.Helper.HarmonyHelper.Unpatch<QuantumObject>("IsLockedByPlayerContact");
}
public static bool Object_IsLockedByPlayerContact(ref bool __result, QuantumObject __instance)
{
var playersEntangled = QuantumManager.GetEntangledPlayers(__instance);
__result = playersEntangled.Count() != 0 && __instance.IsIlluminated();
return false;
}
public static bool Socketed_ChangeQuantumState(

View File

@ -32,6 +32,7 @@ namespace QSB.QuantumSync
QSBWorldSync.Init<QSBMultiStateQuantumObject, MultiStateQuantumObject>();
QSBWorldSync.Init<QSBQuantumSocket, QuantumSocket>();
QSBWorldSync.Init<QSBQuantumShuffleObject, QuantumShuffleObject>();
QSBWorldSync.Init<QSBQuantumMoon, QuantumMoon>();
if (scene == OWScene.SolarSystem)
{
Shrine = Resources.FindObjectsOfTypeAll<QuantumShrine>().First();
@ -105,6 +106,10 @@ namespace QSB.QuantumSync
{
worldObj = QSBWorldSync.GetWorldObject<QSBQuantumShuffleObject, QuantumShuffleObject>((QuantumShuffleObject)unityObject);
}
else if (unityObject.GetType() == typeof(QuantumMoon))
{
worldObj = QSBWorldSync.GetWorldObject<QSBQuantumMoon, QuantumMoon>((QuantumMoon)unityObject);
}
else
{
DebugLog.ToConsole($"Warning - couldn't work out type of QuantumObject {unityObject.name}.", MessageType.Warning);

View File

@ -0,0 +1,12 @@
namespace QSB.QuantumSync.WorldObjects
{
class QSBQuantumMoon : QSBQuantumObject<QuantumMoon>
{
public override void Init(QuantumMoon moonObject, int id)
{
ObjectId = id;
AttachedObject = moonObject;
ControllingPlayer = 1u;
}
}
}