using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using FistVR;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using Nikpo.CP2077_G58Dian;
using OpenScripts2;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("DIANController")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("DIANController")]
[assembly: AssemblyCopyright("Copyright © 2021")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("fb790d1b-5d8a-4dc4-978c-e4626870cb75")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace Cityrobo
{
public class Spinamathing : MonoBehaviour
{
public Transform SpinamathingThing;
public Axis NotAxisButAllies;
public DIANController Controlla;
public SmartWeapon ReallySmartWeapon;
public float SpinUpSpeedo = 5f;
public float MaxSpeedo;
public AudioSource Sauce;
private float _speedo;
public void Update()
{
//IL_009b: Unknown result type (might be due to invalid IL or missing references)
//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
string[] stateNames = new string[4] { Controlla.StateWithMagIdle, Controlla.StateFiring, Controlla.StateMagInsertChamberEmptyTransition, Controlla.StateMagInsertChamberFullTransition };
if (Controlla.AnimatorIsState(stateNames))
{
_speedo = Mathf.MoveTowards(_speedo, MaxSpeedo, Time.deltaTime * SpinUpSpeedo);
}
else
{
_speedo = Mathf.MoveTowards(_speedo, 0f, Time.deltaTime * SpinUpSpeedo);
}
SpinamathingThing.Rotate(OpenScripts2_BasePlugin.GetVectorFromAxis(NotAxisButAllies) * _speedo * Time.deltaTime);
Sauce.pitch = _speedo / MaxSpeedo;
((Behaviour)ReallySmartWeapon).enabled = Mathf.Approximately(_speedo, MaxSpeedo);
}
}
}
namespace Nikpo.CP2077_G58Dian
{
public class DIANController : OpenScripts2_BasePlugin
{
public ClosedBoltWeapon DIAN;
public int SafeFireSelectorPos;
public Animator DIANAnimator;
[Header("Animation State Configuration")]
public string StateSafeIdle;
public string StateWithMagIdle;
public string StateWithoutMagIdle;
public string StateChamberEmptyWithMagIdle;
public string StateChamberEmptyWithoutMagIdle;
public string StateFiring;
public string StateMagInsertChamberFullTransition;
public string StateMagInsertChamberEmptyTransition;
[Header("Start Triggers Configuration")]
public string StartToSafeIdle;
public string StartToWithMagIdle;
public string StartToWithoutMagIdle;
public string StartToChamberEmptyWithMagIdle;
public string StartToChamberEmptyWithoutMagIdle;
[Header("Animation Triggers Configuration")]
public string SafeToReadyWithMagTrigger;
public string ReadyToSafeWithMagTrigger;
public string SafeToReadyWithoutMagTrigger;
public string ReadyToSafeWithoutMagTrigger;
public string SafeToReadyChamberEmptyWithMagTrigger;
public string ReadyToSafeChamberEmptyWithMagTrigger;
public string SafeToReadyChamberEmptyWithoutMagTrigger;
public string ReadyToSafeChamberEmptyWithoutMagTrigger;
public string MagInsertFullReloadTrigger;
public string MagEjectFullReloadTrigger;
public string MagInsertPartialReloadTrigger;
public string MagEjectPartialReloadTrigger;
public string MagInsertEmpty;
public string ChamberManuallyEmptiedWithMag;
public string ChamberManuallyEmptiedWithoutMag;
public string StartFiringTrigger;
public string StopFiringTrigger;
public string StopFiringTriggerEmptyChamber;
[Header("Audio Event Configuration")]
public AudioEvent SafeToReadyWithMagAudioEvent;
public AudioEvent ReadyToSafeWithMagAudioEvent;
public AudioEvent SafeToReadyWithoutMagAudioEvent;
public AudioEvent ReadyToSafeWithoutMagAudioEvent;
public AudioEvent SafeToReadyChamberEmptyWithMagAudioEvent;
public AudioEvent ReadyToSafeChamberEmptyWithMagAudioEvent;
public AudioEvent SafeToReadyChamberEmptyWithoutMagAudioEvent;
public AudioEvent ReadyToSafeChamberEmptyWithoutMagAudioEvent;
public AudioEvent MagInsertFullReloadAudioEvent;
public AudioEvent MagEjectFullReloadAudioEvent;
public AudioEvent MagInsertPartialReloadAudioEvent;
public AudioEvent MagEjectPartialReloadAudioEvent;
public AudioEvent MagInsertEmptyAudioEvent;
public AudioEvent ChamberManuallyEmptiedWithMagAudioEvent;
public AudioEvent ChamberManuallyEmptiedWithoutMagAudioEvent;
[Header("Debugging")]
public bool DebugLoggingEnabled;
[HideInInspector]
public bool EjectMag;
[HideInInspector]
public bool LoadRound;
private FVRFireArmReloadTriggerWell _reloadTriggerWell;
private string _lastAnimationTriggerEvent;
private bool _IsSafetyOn;
private bool _IsFireSelectorBlocked;
private bool _chamberWasFullOnHandleGrab;
private string _lastLog = string.Empty;
private static readonly Dictionary<ClosedBoltWeapon, DIANController> _existingDIANControllers = new Dictionary<ClosedBoltWeapon, DIANController>();
public void Awake()
{
_reloadTriggerWell = ((Component)DIAN).GetComponentInChildren<FVRFireArmReloadTriggerWell>();
_existingDIANControllers.Add(DIAN, this);
}
public void OnDestroy()
{
_existingDIANControllers.Remove(DIAN);
}
public void Start()
{
DebugLog("Script Start");
if (DIAN.FireSelectorModeIndex == SafeFireSelectorPos)
{
DIANAnimator.SetTrigger(StartToSafeIdle);
}
else if ((Object)(object)((FVRFireArm)DIAN).Magazine != (Object)null && DIAN.Chamber.IsFull)
{
DIANAnimator.SetTrigger(StartToWithMagIdle);
}
else if ((Object)(object)((FVRFireArm)DIAN).Magazine == (Object)null && DIAN.Chamber.IsFull)
{
DIANAnimator.SetTrigger(StartToWithoutMagIdle);
}
else if ((Object)(object)((FVRFireArm)DIAN).Magazine != (Object)null && !DIAN.Chamber.IsFull)
{
DIANAnimator.SetTrigger(StartToChamberEmptyWithMagIdle);
}
else if ((Object)(object)((FVRFireArm)DIAN).Magazine == (Object)null && !DIAN.Chamber.IsFull)
{
DIANAnimator.SetTrigger(StartToChamberEmptyWithoutMagIdle);
}
}
public void Update()
{
//IL_0126: Unknown result type (might be due to invalid IL or missing references)
//IL_0140: Unknown result type (might be due to invalid IL or missing references)
//IL_01cd: Unknown result type (might be due to invalid IL or missing references)
//IL_022b: Unknown result type (might be due to invalid IL or missing references)
//IL_038f: Unknown result type (might be due to invalid IL or missing references)
//IL_02ae: Unknown result type (might be due to invalid IL or missing references)
//IL_03ed: Unknown result type (might be due to invalid IL or missing references)
//IL_0331: Unknown result type (might be due to invalid IL or missing references)
//IL_05af: Unknown result type (might be due to invalid IL or missing references)
//IL_0578: Unknown result type (might be due to invalid IL or missing references)
//IL_0998: Unknown result type (might be due to invalid IL or missing references)
//IL_093c: Unknown result type (might be due to invalid IL or missing references)
//IL_08ff: Unknown result type (might be due to invalid IL or missing references)
//IL_0470: Unknown result type (might be due to invalid IL or missing references)
//IL_04ed: Unknown result type (might be due to invalid IL or missing references)
//IL_0b29: Unknown result type (might be due to invalid IL or missing references)
//IL_0adf: Unknown result type (might be due to invalid IL or missing references)
if (EjectMag && (Object)(object)((FVRFireArm)DIAN).Magazine != (Object)null)
{
DebugLog("Chambering round...");
EjectMag = false;
((FVRFireArm)DIAN).EjectMag(false);
DebugLog("Mag has " + (((Object)(object)((FVRFireArm)DIAN).Magazine == (Object)null) ? "been" : "not been") + " ejected!");
}
else if (EjectMag)
{
EjectMag = false;
}
if (LoadRound && !DIAN.Chamber.IsFull && (Object)(object)((FVRFireArm)DIAN).Magazine != (Object)null && ((FVRFireArm)DIAN).Magazine.HasARound())
{
DebugLog("Chambering round...");
LoadRound = false;
FVRFireArmRound component = ((FVRFireArm)DIAN).Magazine.RemoveRound(false).GetComponent<FVRFireArmRound>();
DIAN.Chamber.SetRound(component, false);
DIAN.CockHammer(false);
DebugLog(string.Format("Chamber now filled with {0} of class {1} and hammer is {2}.", DIAN.Chamber.GetRound().RoundType, DIAN.Chamber.GetRound().RoundClass, DIAN.IsHammerCocked ? "cocked" : "not cocked"));
}
else if (LoadRound)
{
LoadRound = false;
}
if (DIAN.FireSelectorModeIndex == SafeFireSelectorPos && AnimatorIsState(StateWithMagIdle))
{
if (SendAnimationTriggerEvent(ReadyToSafeWithMagTrigger))
{
DebugLog("ReadyToSafeWithMagTrigger");
PlayAudioAsFollowingHandling(ReadyToSafeWithMagAudioEvent, ((Component)DIAN).transform.position);
}
}
else if (DIAN.FireSelectorModeIndex == SafeFireSelectorPos && AnimatorIsState(StateWithoutMagIdle))
{
if (SendAnimationTriggerEvent(ReadyToSafeWithoutMagTrigger))
{
DebugLog("ReadyToSafeWithoutMagTrigger");
PlayAudioAsFollowingHandling(ReadyToSafeWithoutMagAudioEvent, ((Component)DIAN).transform.position);
}
}
else if (DIAN.FireSelectorModeIndex != SafeFireSelectorPos && AnimatorIsState(StateSafeIdle) && (Object)(object)((FVRFireArm)DIAN).Magazine != (Object)null && DIAN.Chamber.IsFull)
{
if (SendAnimationTriggerEvent(SafeToReadyWithMagTrigger))
{
DebugLog("SafeToReadyWithMagTrigger");
PlayAudioAsFollowingHandling(SafeToReadyWithMagAudioEvent, ((Component)DIAN).transform.position);
}
}
else if (DIAN.FireSelectorModeIndex != SafeFireSelectorPos && AnimatorIsState(StateSafeIdle) && (Object)(object)((FVRFireArm)DIAN).Magazine == (Object)null && DIAN.Chamber.IsFull)
{
if (SendAnimationTriggerEvent(SafeToReadyWithoutMagTrigger))
{
DebugLog("SafeToReadyWithoutMagTrigger");
PlayAudioAsFollowingHandling(SafeToReadyWithoutMagAudioEvent, ((Component)DIAN).transform.position);
}
}
else if (DIAN.FireSelectorModeIndex == SafeFireSelectorPos && AnimatorIsState(StateChamberEmptyWithMagIdle))
{
if (SendAnimationTriggerEvent(ReadyToSafeChamberEmptyWithMagTrigger))
{
DebugLog("ReadyToSafeChamberEmptyWithMagTrigger");
PlayAudioAsFollowingHandling(ReadyToSafeChamberEmptyWithMagAudioEvent, ((Component)DIAN).transform.position);
}
}
else if (DIAN.FireSelectorModeIndex == SafeFireSelectorPos && AnimatorIsState(StateChamberEmptyWithoutMagIdle))
{
if (SendAnimationTriggerEvent(ReadyToSafeChamberEmptyWithoutMagTrigger))
{
DebugLog("ReadyToSafeChamberEmptyWithoutMagTrigger");
PlayAudioAsFollowingHandling(ReadyToSafeChamberEmptyWithoutMagAudioEvent, ((Component)DIAN).transform.position);
}
}
else if (DIAN.FireSelectorModeIndex != SafeFireSelectorPos && AnimatorIsState(StateSafeIdle) && (Object)(object)((FVRFireArm)DIAN).Magazine != (Object)null && !DIAN.Chamber.IsFull)
{
if (SendAnimationTriggerEvent(SafeToReadyChamberEmptyWithMagTrigger))
{
DebugLog("SafeToReadyChamberEmptyWithMagTrigger");
PlayAudioAsFollowingHandling(SafeToReadyChamberEmptyWithMagAudioEvent, ((Component)DIAN).transform.position);
}
}
else if (DIAN.FireSelectorModeIndex != SafeFireSelectorPos && AnimatorIsState(StateSafeIdle) && (Object)(object)((FVRFireArm)DIAN).Magazine == (Object)null && !DIAN.Chamber.IsFull && SendAnimationTriggerEvent(SafeToReadyChamberEmptyWithoutMagTrigger))
{
DebugLog("SafeToReadyChamberEmptyWithoutMagTrigger");
PlayAudioAsFollowingHandling(SafeToReadyChamberEmptyWithoutMagAudioEvent, ((Component)DIAN).transform.position);
}
FVRViveHand hand = ((FVRInteractiveObject)DIAN).m_hand;
if ((Object)(object)hand != (Object)null)
{
if (AnimatorIsState(new string[2] { StateWithMagIdle, StateChamberEmptyWithMagIdle }) && CheckMagReleaseInput(hand))
{
if (!DIAN.Chamber.IsFull)
{
if (SendAnimationTriggerEvent(MagEjectFullReloadTrigger))
{
DebugLog("MagEjectFullReloadTrigger");
PlayAudioAsFollowingHandling(MagEjectFullReloadAudioEvent, ((Component)DIAN).transform.position);
}
}
else if (SendAnimationTriggerEvent(MagEjectPartialReloadTrigger))
{
DebugLog("MagEjectPartialReloadTrigger");
PlayAudioAsFollowingHandling(MagEjectPartialReloadAudioEvent, ((Component)DIAN).transform.position);
}
}
if (AnimatorIsState(StateWithMagIdle))
{
if (hand.Input.TriggerFloat >= DIAN.TriggerFiringThreshold && (DIAN.Chamber.IsFull || DIAN.m_proxy.IsFull || ((Object)(object)((FVRFireArm)DIAN).Magazine != (Object)null && ((FVRFireArm)DIAN).Magazine.HasARound())) && SendAnimationTriggerEvent(StartFiringTrigger))
{
DebugLog("StartFiringTrigger");
}
}
else if (AnimatorIsState(StateFiring))
{
if (hand.Input.TriggerFloat <= DIAN.TriggerResetThreshold)
{
if (!DIAN.Chamber.IsFull && !DIAN.m_proxy.IsFull && ((Object)(object)((FVRFireArm)DIAN).Magazine == (Object)null || ((Object)(object)((FVRFireArm)DIAN).Magazine != (Object)null && !((FVRFireArm)DIAN).Magazine.HasARound())))
{
if (SendAnimationTriggerEvent(StopFiringTriggerEmptyChamber))
{
DebugLog("StopFiringTriggerEmptyChamber");
}
}
else if (SendAnimationTriggerEvent(StopFiringTrigger))
{
DebugLog("StopFiringTrigger");
}
}
else if (hand.Input.TriggerFloat > DIAN.TriggerResetThreshold && !DIAN.Chamber.IsFull && !DIAN.m_proxy.IsFull && ((Object)(object)((FVRFireArm)DIAN).Magazine == (Object)null || ((Object)(object)((FVRFireArm)DIAN).Magazine != (Object)null && !((FVRFireArm)DIAN).Magazine.HasARound())) && SendAnimationTriggerEvent(StopFiringTriggerEmptyChamber))
{
DebugLog("StopFiringTriggerEmptyChamber");
}
}
}
else if (AnimatorIsState(StateFiring))
{
if (!DIAN.Chamber.IsFull && !DIAN.m_proxy.IsFull && ((Object)(object)((FVRFireArm)DIAN).Magazine == (Object)null || ((Object)(object)((FVRFireArm)DIAN).Magazine != (Object)null && !((FVRFireArm)DIAN).Magazine.HasARound())))
{
if (SendAnimationTriggerEvent(StopFiringTriggerEmptyChamber))
{
DebugLog("StopFiringTriggerEmptyChamber");
}
}
else if (SendAnimationTriggerEvent(StopFiringTrigger))
{
DebugLog("StopFiringTrigger");
}
}
if (AnimatorIsState(StateWithoutMagIdle) || AnimatorIsState(StateChamberEmptyWithoutMagIdle))
{
((Component)_reloadTriggerWell).gameObject.SetActive(true);
if ((Object)(object)((FVRFireArm)DIAN).Magazine != (Object)null && ((FVRFireArm)DIAN).Magazine.HasARound())
{
if (!DIAN.Chamber.IsFull)
{
if (SendAnimationTriggerEvent(MagInsertFullReloadTrigger))
{
DebugLog("MagInsertFullReloadTrigger");
PlayAudioAsFollowingHandling(MagInsertFullReloadAudioEvent, ((Component)DIAN).transform.position);
}
}
else if (SendAnimationTriggerEvent(MagInsertPartialReloadTrigger))
{
DebugLog("MagInsertPartialReloadTrigger");
PlayAudioAsFollowingHandling(MagInsertPartialReloadAudioEvent, ((Component)DIAN).transform.position);
}
}
else if ((Object)(object)((FVRFireArm)DIAN).Magazine != (Object)null && !((FVRFireArm)DIAN).Magazine.HasARound() && SendAnimationTriggerEvent(MagInsertEmpty))
{
DebugLog("MagInsertEmpty");
PlayAudioAsFollowingHandling(MagInsertEmptyAudioEvent, ((Component)DIAN).transform.position);
}
}
else
{
((Component)_reloadTriggerWell).gameObject.SetActive(false);
}
_IsSafetyOn = !AnimatorIsState(new string[2] { StateFiring, StateWithMagIdle });
string[] stateNames = new string[5] { StateSafeIdle, StateWithMagIdle, StateWithoutMagIdle, StateChamberEmptyWithMagIdle, StateChamberEmptyWithoutMagIdle };
_IsFireSelectorBlocked = !AnimatorIsState(stateNames);
((Component)DIAN.Handle).GetComponent<Collider>().isTrigger = AnimatorIsState(stateNames);
if (((FVRInteractiveObject)DIAN.Handle).IsHeld)
{
if (DIAN.Chamber.IsFull)
{
_chamberWasFullOnHandleGrab = true;
}
else if (!DIAN.Chamber.IsFull && _chamberWasFullOnHandleGrab)
{
if ((Object)(object)((FVRFireArm)DIAN).Magazine != (Object)null && !((FVRFireArm)DIAN).Magazine.HasARound())
{
if (SendAnimationTriggerEvent(ChamberManuallyEmptiedWithMag))
{
DebugLog("ChamberManuallyEmptiedWithMag");
PlayAudioAsFollowingHandling(ChamberManuallyEmptiedWithMagAudioEvent, ((Component)DIAN).transform.position);
}
}
else if ((Object)(object)((FVRFireArm)DIAN).Magazine == (Object)null && SendAnimationTriggerEvent(ChamberManuallyEmptiedWithoutMag))
{
DebugLog("ChamberManuallyEmptiedWithoutMag");
PlayAudioAsFollowingHandling(ChamberManuallyEmptiedWithoutMagAudioEvent, ((Component)DIAN).transform.position);
}
_chamberWasFullOnHandleGrab = false;
}
}
else
{
_chamberWasFullOnHandleGrab = false;
}
if (DebugLoggingEnabled)
{
string stateName = GetStateName();
if (stateName != _lastLog)
{
_lastLog = stateName;
Debug.Log((object)_lastLog);
}
}
}
public bool AnimatorIsState(string stateName)
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
AnimatorStateInfo currentAnimatorStateInfo = DIANAnimator.GetCurrentAnimatorStateInfo(0);
return ((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName(stateName);
}
public bool AnimatorIsState(string[] stateNames)
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
AnimatorStateInfo currentAnimatorStateInfo = DIANAnimator.GetCurrentAnimatorStateInfo(0);
return ((IEnumerable<string>)stateNames).Any((Func<string, bool>)((AnimatorStateInfo)(object)currentAnimatorStateInfo).IsName);
}
private string GetStateName()
{
//IL_006c: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
List<string> obj = new List<string> { StateSafeIdle, StateWithMagIdle, StateWithoutMagIdle, StateChamberEmptyWithMagIdle, StateChamberEmptyWithoutMagIdle, StateFiring, StateMagInsertChamberEmptyTransition, StateMagInsertChamberFullTransition };
AnimatorStateInfo currentAnimatorStateInfo = DIANAnimator.GetCurrentAnimatorStateInfo(0);
foreach (string item in obj)
{
if (((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName(item))
{
return item;
}
}
return "";
}
private bool SendAnimationTriggerEvent(string trigger)
{
if (trigger != _lastAnimationTriggerEvent)
{
_lastAnimationTriggerEvent = trigger;
DIANAnimator.SetTrigger(trigger);
return true;
}
return false;
}
private bool CheckMagReleaseInput(FVRViveHand hand)
{
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
if (hand.IsInStreamlinedMode)
{
return hand.Input.AXButtonDown;
}
return OpenScripts2_BasePlugin.TouchpadDirDown(hand, Vector2.down);
}
private void DebugLog(string msg)
{
if (DebugLoggingEnabled)
{
Debug.Log((object)msg);
}
}
private void PlayAudioAsFollowingHandling(AudioEvent audioEvent, Vector3 pos)
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
((FVRFireArm)DIAN).PlayAudioAsHandling(audioEvent, pos).FollowThisTransform(((Component)this).transform);
}
[HarmonyPatch(typeof(ClosedBoltWeapon), "DropHammer")]
[HarmonyPrefix]
public static bool ClosedBoltWeapon_DropHammer_Patch(ClosedBoltWeapon __instance)
{
if (_existingDIANControllers.TryGetValue(__instance, out var value) && value._IsSafetyOn)
{
return false;
}
return true;
}
[HarmonyPatch(typeof(ClosedBoltWeapon), "ToggleFireSelector")]
[HarmonyPrefix]
public static bool ClosedBoltWeapon_ToggleFireSelector_Patch(ClosedBoltWeapon __instance)
{
if (_existingDIANControllers.TryGetValue(__instance, out var value) && value._IsFireSelectorBlocked)
{
return false;
}
return true;
}
}
[BepInPlugin("h3vr.cityrobo.DIANController", "DIANController", "1.0.0")]
public class DIANController_BepInExPlugin : BaseUnityPlugin
{
public void Awake()
{
Harmony.CreateAndPatchAll(typeof(DIANController), (string)null);
}
}
}