public static void Sonyu_Proc(Sonyu __instance) { //Get current user button click type var ctrlFlag = Traverse.Create(__instance).Field("ctrlFlag").GetValue <HSceneFlagCtrl>(); DetermineInflationState(ctrlFlag); }
public static void Sonyu_PullProc(Sonyu __instance) { //Get current inserted state var ctrlFlag = Traverse.Create(__instance).Field("ctrlFlag").GetValue <HSceneFlagCtrl>(); // PregnancyPlugin.Logger.LogDebug($"Preg - PullProc {ctrlFlag.isInsert}"); if (ctrlFlag.isInsert && _lastPullProc != ctrlFlag.isInsert) { var heroine = GetLeadHeroine(); var controller = GetEffectController(heroine); controller.DrainInflation(Mathf.Max(3, Mathf.CeilToInt(InflationMaxCount.Value / 2.2f))); } _lastPullProc = ctrlFlag.isInsert; }
static void SonyuSpeedGambit(Sonyu __instance) { if (!HS2TakeChargePlugin.Instance.AnimationOverrideActive() && HS2TakeChargePlugin.Instance.ManualSpeedAdder == 0f) { return; } ChaControl[] chaFemales = (ChaControl[])chaFemalesFieldInfo.GetValue(__instance); ChaControl[] chaMales = (ChaControl[])chaMalesFieldInfo.GetValue(__instance); HItemCtrl item = (HItemCtrl)itemFieldInfo.GetValue(__instance); if (HS2TakeChargePlugin.Instance.AnimationOverrideActive()) { if (chaFemales[0].visibleAll && chaFemales[0].objBodyBone != null) { chaFemales[0].setAnimatorParamFloat("speed", AnimationStatus.FemaleSpeed); if (AnimationStatus.FemaleOffset != 0) { chaFemales[0].animBody.Play(AnimationStatus.PlayingAnimation, 0, (chaMales[0].animBody.GetCurrentAnimatorStateInfo(0).normalizedTime + AnimationStatus.FemaleOffset)); } } if (chaMales[0].objBodyBone != null) { chaMales[0].setAnimatorParamFloat("speed", AnimationStatus.MaleSpeed); } if (item.GetItem() != null) { item.setAnimatorParamFloat("speed", AnimationStatus.FemaleSpeed); } } else { float originalSpeed = (float)speedField.GetValue(animParType.GetValue(__instance)); if (chaFemales[0].visibleAll && chaFemales[0].objBodyBone != null) { chaFemales[0].setAnimatorParamFloat("speed", originalSpeed + HS2TakeChargePlugin.Instance.ManualSpeedAdder); } if (chaMales[0].objBodyBone != null) { chaMales[0].setAnimatorParamFloat("speed", originalSpeed + HS2TakeChargePlugin.Instance.ManualSpeedAdder); } if (item.GetItem() != null) { item.setAnimatorParamFloat("speed", originalSpeed + HS2TakeChargePlugin.Instance.ManualSpeedAdder); } } }
static void SonyuAnimOffset(Sonyu __instance, string _playAnimation) { AnimationStatus.PlayingAnimation = _playAnimation; ChaControl[] chaFemales = (ChaControl[])chaFemalesFieldInfo.GetValue(__instance); ChaControl[] chaMales = (ChaControl[])chaMalesFieldInfo.GetValue(__instance); HItemCtrl item = (HItemCtrl)itemFieldInfo.GetValue(__instance); if (AnimationStatus.FemaleSpeedTween != null) { AnimationStatus.AnimSequence.Kill(); if (chaFemales[0].visibleAll && chaFemales[0].objBodyBone != null) { chaFemales[0].setAnimatorParamFloat("speed", 0f); } if (chaMales[0].objBodyBone != null) { chaMales[0].setAnimatorParamFloat("speed", 0f); } if (item.GetItem() != null) { item.setAnimatorParamFloat("speed", 0f); } // HS2TakeChargePlugin.Instance.Log.LogInfo(string.Format("Status: {0} {1} Female Sp: {2} Time: {3} Male Time: {4}", AnimationStatus.AnimSequence.IsPlaying(), AnimationStatus.PlayingAnimation, AnimationStatus.FemaleSpeed, chaFemales[0].animBody.GetCurrentAnimatorStateInfo(0).normalizedTime, chaMales[0].animBody.GetCurrentAnimatorStateInfo(0).normalizedTime)); } TCAnimationTiming timing = HS2TakeChargePlugin.Instance.RuleSet.Timing(Singleton <HSceneFlagCtrl> .Instance.nowAnimationInfo.nameAnimation, PositionCategories.SEX.ToString(), SonyuStageSwitch()); AnimationStatus.FemaleSpeed = timing.minSpeed; AnimationStatus.MaleSpeed = timing.minSpeed; AnimationStatus.FemaleOffset = timing.minFemaleOffset; AnimationStatus.FemaleSpeedTween = DOTween.To(() => AnimationStatus.FemaleSpeed, newSpeed => AnimationStatus.FemaleSpeed = newSpeed, timing.maxSpeed, timing.speedLoopTime).SetEase(timing.SpeedEaseEnum()); AnimationStatus.MaleSpeedTween = DOTween.To(() => AnimationStatus.MaleSpeed, newSpeed => AnimationStatus.MaleSpeed = newSpeed, timing.maxSpeed, timing.speedLoopTime).SetEase(timing.SpeedEaseEnum()); AnimationStatus.FemaleOffsetTween = DOTween.To(() => AnimationStatus.FemaleOffset, newOffset => AnimationStatus.FemaleOffset = newOffset, timing.maxFemaleOffset, timing.femaleOffsetLoopTime).SetEase(timing.FemaleOffsetEaseEnum()); AnimationStatus.AnimSequence = DOTween.Sequence(); AnimationStatus.AnimSequence.Insert(0, AnimationStatus.FemaleSpeedTween); AnimationStatus.AnimSequence.Insert(0, AnimationStatus.MaleSpeedTween); AnimationStatus.AnimSequence.Insert(0, AnimationStatus.FemaleOffsetTween); AnimationStatus.AnimSequence.SetLoops(-1, timing.LoopTypeEnum()); }