private static IEnumerator FishJump(FishingSystem_t instance) { for (; ;) { Fish_t fish = (Fish_t)instance.GetType().GetField("curFish", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(instance); flatPos = Vector3.MoveTowards(flatPos, Module <Player> .Self.actor.gamePos, settings.JumpSpeed); Vector3 playerPos = Module <Player> .Self.actor.gamePos; float travelled = Vector3.Distance(flatPos, origPos); float total = Vector3.Distance(playerPos, origPos); float height = (float)Math.Sin(travelled * Math.PI / total) * settings.JumpHeight; try { fish.gameObject.transform.position = new Vector3(flatPos.x, flatPos.y + height, flatPos.z); } catch { break; } if (Vector3.Distance(Module <Player> .Self.actor.gamePos, fish.gameObject.transform.position) < settings.JumpSpeed * 20) { Module <Player> .Self.actor.TryDoAction(ACType.Animation, ACTAnimationPara.Construct("Throw_2", null, null, false)); } if (Vector3.Distance(Module <Player> .Self.actor.gamePos, fish.gameObject.transform.position) < settings.JumpSpeed) { typeof(FishingSystem_t).GetMethod("FishingEnd", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(instance, new object[] { true, false }); break; } yield return(null); } }
static bool Prefix(FishingSystem_t __instance, FishInfo ___fishInfo, Transform ___shoal, IFishingMan ___fishingMan, ref MoveArea ___area, FishingInfo ___fishingAreaInfo, float ___fishSpeedBaseFactor, float ___fishDashBaseFactor, float ___fishWaitBaseFactor, FishingUI_t ___hud) { if (!enabled) { if (origBaitID != -1) { OtherConfig.Self.BaitID = origBaitID; } return(true); } Dbgl("Wait for fish"); if (OtherConfig.Self.BaitID != -1) { origBaitID = OtherConfig.Self.BaitID; OtherConfig.Self.BaitID = -1; } Fish_t fish = null; if (string.IsNullOrEmpty(___fishInfo.fishPrefabPath)) { UnityEngine.Debug.LogError("fishPrefabPath = is null!"); } else { GameObject original = Singleton <ResMgr> .Instance.LoadSync <GameObject>(___fishInfo.fishPrefabPath, false, false); GameObject gameObject = UnityEngine.Object.Instantiate <GameObject>(original, ___fishInfo.FishBornTrans.position, Quaternion.identity); gameObject.transform.parent = ___shoal; gameObject.transform.localScale = Vector3.one; gameObject.SetActive(true); fish = gameObject.GetComponent <Fish_t>(); } if (fish != null) { Vector3 vector = ___fishInfo.FishBornTrans.position - ___fishingMan.Pos; ___area = new MoveArea(); ___area.angle = ___fishingAreaInfo.angleLimit / 2f; ___area.dir = vector.normalized; ___area.fishingManPos = ___fishingMan.Pos; ___fishInfo.GenPowerFactor(fish.PowerValue); ___fishInfo.GenSpeedFactor(fish.SpeedValue, ___fishSpeedBaseFactor); ___fishInfo.GenAngerFactor(fish.AngerValue, ___fishDashBaseFactor); ___fishInfo.GenTenacityFactor(fish.TenacityValue); ___fishInfo.SetBaseWaitTime(___fishWaitBaseFactor); fish.SetFishInfo(___fishInfo); } if (settings.PlayHereFishy && fishyClip != null) { PlayClip(fishyClip, settings.HereFishyVolume, false); } Singleton <TaskRunner> .Self.RunDelayTask(fishyClip.length, true, delegate { if (___hud == null) { return; } if (fish != null) { if (settings.PlayWee && weeClip != null) { PlayClip(weeClip, settings.WeeVolume, true, fish.transform); } __instance.GetType().GetField("curFish", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(__instance, fish); origPos = (__instance.GetType().GetField("curFish", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(__instance) as Fish_t).gameObject.transform.position; flatPos = origPos; Singleton <TaskRunner> .Self.StartCoroutine(FishJump(__instance)); } else { Module <Player> .Self.actor.TryDoAction(ACType.Animation, ACTAnimationPara.Construct("Throw_2", null, null, false)); typeof(FishingSystem_t).GetMethod("FishingEnd", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, new object[] { true, false }); } //__instance.GetType().GetField("curFish", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(__instance, __instance.GetType().GetMethod("CreateFish", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, new object[0])); //typeof(FishingSystem_t).GetMethod("FishingBegin", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, new object[] { }); }); return(false); }