コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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);
        }