static void SpnkingSpeedGambit(Spnking __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].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].setAnimatorParamFloat("speed", originalSpeed + HS2TakeChargePlugin.Instance.ManualSpeedAdder); } if (item.GetItem() != null) { item.setAnimatorParamFloat("speed", originalSpeed + HS2TakeChargePlugin.Instance.ManualSpeedAdder); } } }
static void SpnkingAnimOffset(Spnking __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.SPANKING.ToString(), SpnkingStageSwitch()); 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 bool SpankingAutoProc(int _state, Spnking __instance) { HSceneFlagCtrl ctrlFlag = Singleton <HSceneFlagCtrl> .Instance; if (ctrlFlag.initiative == 0) { return(true); } HVoiceCtrl voice = (HVoiceCtrl)voiceFieldInfo.GetValue(__instance); HSceneSprite sprite = (HSceneSprite)spriteFieldInfo.GetValue(__instance); ChaControl[] chaFemales = (ChaControl[])chaFemalesFieldInfo.GetValue(__instance); ShuffleRand[] randVoicePlays = (ShuffleRand[])randVoicePlaysFieldInfo.GetValue(__instance); if (!ctrlFlag.stopFeelFemale) { ctrlFlag.feel_f = Mathf.Clamp01(ctrlFlag.feel_f - ctrlFlag.guageDecreaseRate * Time.deltaTime); } if (_state == 1 && ctrlFlag.feel_f < 0.5f) { playMethodInfo.Invoke(__instance, new object[] { "WIdle", false }); voice.HouchiTime = 0f; return(true); } if (!GeneralHooks.SpankTimer.IsTime()) { return(false); } else { GeneralHooks.SpankTimer.Reset(); } if (voice.nowVoices[0].state == HVoiceCtrl.VoiceKind.voice || voice.nowVoices[0].state == HVoiceCtrl.VoiceKind.startVoice) { Voice.Stop(ctrlFlag.voice.voiceTrs[0]); voice.ResetVoice(); } string scene = "D_Action"; switch (_state) { case 1: scene = "SAction"; break; case 0: scene = "WAction"; break; } playMethodInfo.Invoke(__instance, new object[] { scene, false }); upFeelFieldInfo.SetValue(__instance, true); float value = Mathf.Clamp01(chaFemales[0].siriAkaRate + ctrlFlag.siriakaAddRate); chaFemales[0].ChangeSiriAkaRate(value); timeFeelUpFieldInfo.SetValue(__instance, 0f); backupFieldInfo.SetValue(__instance, ctrlFlag.feel_f); backupFeelFieldInfo.SetValue(__instance, ctrlFlag.feelPain); ctrlFlag.isNotCtrl = false; if (randVoicePlays[0].Get() == 0) { ctrlFlag.voice.playVoices[0] = true; } ctrlFlag.voice.playShorts[0] = 0; bool isAddFeel = (bool)isAddFieldInfo.GetValue(__instance); if (!isAddFeel && ctrlFlag.feel_f >= 0.70f) { SpankingAfterWaitingAnimationAutoSelector(); } return(false); }