static void Postfix(Actor npcActor, TeeterGameCtr __instance, ref bool ___playing, ref bool ___waitForInput, ref float ___startInputTime, ref float ___curTime, TeeterActorCtr ___player, TeeterActorCtr ___npc, ref WhiteCat.Tween.Tweener ___teeterTW, ref int ___gameScores, ref int ___teeterDir) { lastTeeterActor = npcActor; if (!enabled || !settings.ReplaceTeeterTotterGame || !CanTeeterInteract(npcActor)) { return; } teeterGameRunning = true; ___teeterTW.enabled = false; //___teeterDir = 0; Transform t1 = AccessTools.FieldRefAccess <TeeterActorCtr, GameObject>(___player, "tempmodel").transform; Transform t2 = AccessTools.FieldRefAccess <TeeterActorCtr, GameObject>(___npc, "tempmodel").transform; Vector3 midpoint = (t1.position + t2.position) / 2; Player.Self.actor.gamePos = new Vector3(214.5f, 48.4f, -68.5f); lastTeeterActor.gamePos = new Vector3(216.0f, 48.4f, -69.8f); for (int i = 0; i < AccessTools.FieldRefAccess <TeeterActorCtr, GameObject>(___player, "tempmodel") .GetComponentsInChildren <Renderer>(true).Length; i++) { AccessTools.FieldRefAccess <TeeterActorCtr, GameObject>(___player, "tempmodel").GetComponentsInChildren <Renderer>(true)[i].enabled = false; } for (int i = 0; i < AccessTools.FieldRefAccess <TeeterActorCtr, GameObject>(___npc, "tempmodel") .GetComponentsInChildren <Renderer>(true).Length; i++) { AccessTools.FieldRefAccess <TeeterActorCtr, GameObject>(___npc, "tempmodel").GetComponentsInChildren <Renderer>(true)[i].enabled = false; } }
static bool Prefix(TeeterGameCtr __instance, bool ___playing, ref bool ___waitForInput, ref float ___startInputTime, ref float ___curTime, ref TeeterActorCtr ___player, ref TeeterActorCtr ___npc) { if (!enabled || !settings.ReplaceTeeterTotterGame || !CanTeeterInteract(lastTeeterActor)) { return(true); } if (___playing) { __instance.StopJump(null); if (___waitForInput) { MethodInfo dynMethod = __instance.GetType().GetMethod("ScoreChange", BindingFlags.NonPublic | BindingFlags.Instance); if (Input.GetKeyDown(settings.KissKey)) { lastAnim = 1; DoInteract(Player.Self.actor, lastTeeterActor, lastAnim); dynMethod.Invoke(__instance, new object[] { 0 }); } else if (Input.GetKeyDown(settings.HugKey)) { lastAnim = 0; DoInteract(Player.Self.actor, lastTeeterActor, lastAnim); dynMethod.Invoke(__instance, new object[] { 0 }); } else if (Input.GetKeyDown(settings.MassageKey)) { lastAnim = 2; DoInteract(Player.Self.actor, lastTeeterActor, lastAnim); dynMethod.Invoke(__instance, new object[] { 0 }); } ___startInputTime += Time.deltaTime; if (___startInputTime >= OtherConfig.Self.TeetGameWaitTime) { lastAnim = 999; dynMethod.Invoke(__instance, new object[] { 0 }); ___waitForInput = false; } } else { ___startInputTime = 0f; if (!isInteracting && __instance.OnActorSpeak != null) { System.Random rand = new System.Random(); int idx = rand.Next(0, 3); rightAnim = idx; __instance.OnActorSpeak(false, InteractDlg[Interacts[idx]]); startNotInputTime = 0f; ___waitForInput = true; } } ___curTime += Time.deltaTime; if (___curTime >= OtherConfig.Self.TeetGameTime) { ___playing = false; teeterGameRunning = false; lastTeeterActor = null; MethodInfo dynMethod2 = __instance.GetType().GetMethod("EndGame", BindingFlags.NonPublic | BindingFlags.Instance); dynMethod2.Invoke(__instance, new object[] { 0 }); } } return(false); }