| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- using GadgetCore.API;
- using GadgetCore.Util;
- using HarmonyLib;
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Reflection;
- using System.Reflection.Emit;
- using UnityEngine;
- namespace IronmanChest.Patches
- {
- [HarmonyPatch(typeof(PlayerScript))]
- [HarmonyPatch(nameof(PlayerScript.Update))]
- [HarmonyGadget("IronmanChest")]
- public static class Patch_PlayerScript_Update
- {
- [HarmonyPrefix]
- public static bool Prefix(PlayerScript __instance, GameScript ___gameScript, int ___curNPC, ref bool ___interacting, bool ___canInteract, GameObject ___w, Rigidbody ___r,
- bool ___immobile, bool ___startingMission, bool ___knocking)
- {
- if (__instance.GetComponent<NetworkView>().isMine && !___startingMission && !___knocking)
- {
- if (!GameScript.pausing && !GameScript.dead)
- {
- if (Input.GetButtonDown("Up") && !___immobile && !GameScript.talking && ___curNPC == 8)
- {
- __instance.w.SetActive(false);
- if (!___interacting && ___canInteract)
- {
- ___interacting = true;
- __instance.StartCoroutine(Action(__instance, ___gameScript, ___w, ___r));
- return false;
- }
- }
- }
- }
- return true;
- }
- public static readonly FieldInfo interactingField = typeof(PlayerScript).GetField("interacting", BindingFlags.NonPublic | BindingFlags.Instance);
- private static IEnumerator Action(PlayerScript __instance, GameScript ___gameScript, GameObject ___w, Rigidbody ___r)
- {
- ___r.velocity = new Vector3(0f, 0f, 0f);
- if (GameScript.combatMode)
- ___gameScript.ExitCM();
- if (GameScript.buildMode)
- ___gameScript.ExitBuildMode();
- ___w.SetActive(false);
- ___gameScript.Storage();
- yield return new WaitForSeconds(0.5f);
- interactingField.SetValue(InstanceTracker.PlayerScript, false);
- yield break;
- }
- }
- }
|