static void MasturbationSpeedGambit(Masturbation __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].objTop != 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].animBody.runtimeAnimatorController != 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].objTop != null) { chaFemales[0].setAnimatorParamFloat("speed", originalSpeed + HS2TakeChargePlugin.Instance.ManualSpeedAdder); } if (chaMales[0].objBodyBone != null && chaMales[0].animBody.runtimeAnimatorController != null) { chaMales[0].setAnimatorParamFloat("speed", originalSpeed + HS2TakeChargePlugin.Instance.ManualSpeedAdder); } if (item.GetItem() != null) { item.setAnimatorParamFloat("speed", originalSpeed + HS2TakeChargePlugin.Instance.ManualSpeedAdder); } } }
static bool MasturbateAfterAnimChangeFix(int _start, Masturbation __instance) { if (_start == 0) { return(true); } else if (Singleton <HSceneManager> .Instance.Hscene.ctrlAuto.IsChangeActionAtRestart()) { Singleton <HSceneFlagCtrl> .Instance.isAutoActionChange = true; Singleton <HSceneManager> .Instance.Hscene.ctrlAuto.Reset(); Singleton <HSceneManager> .Instance.Hscene.ctrlFlag.speed = 0f; Singleton <HSceneManager> .Instance.Hscene.ctrlFlag.loopType = 0; Singleton <HSceneManager> .Instance.Hscene.ctrlFlag.isNotCtrl = false; return(false); } return(true); }
static void MasturbationAnimOffset(Masturbation __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.MASTURBATION.ToString(), MasturbationStageSwitch()); 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()); }
static void MasturbateAutoFix(Masturbation __instance) { bAutoField.SetValue(__instance, (HS2TakeChargePlugin.Instance.GetCurrentModeControl() != 4 || Singleton <HSceneFlagCtrl> .Instance.initiative > 0)); }