Пример #1
0
 static void HoushiCumFix(Houshi __instance, HSceneSprite ___sprite)
 {
     if (Singleton <HSceneFlagCtrl> .Instance.initiative >= 1 && Singleton <HSceneFlagCtrl> .Instance.feel_m >= 1f)
     {
         // Roll random in/out
         if (___sprite.IsFinishVisible(3) || ___sprite.IsFinishVisible(4))
         {
             float finishRoll = UnityEngine.Random.value;
             if (___sprite.IsFinishVisible(3) && finishRoll <= .33f)
             {
                 Singleton <HSceneFlagCtrl> .Instance.click = HSceneFlagCtrl.ClickKind.FinishDrink;
             }
             else if (___sprite.IsFinishVisible(4) && (finishRoll > .33f && finishRoll <= .66f))
             {
                 Singleton <HSceneFlagCtrl> .Instance.click = HSceneFlagCtrl.ClickKind.FinishVomit;
             }
             else
             {
                 Singleton <HSceneFlagCtrl> .Instance.click = HSceneFlagCtrl.ClickKind.FinishOutSide;
             }
         }
         else
         {
             Singleton <HSceneFlagCtrl> .Instance.click = HSceneFlagCtrl.ClickKind.FinishOutSide;
         }
     }
 }
Пример #2
0
        //-- Apply chara offsets --//
        //-- Auto finish, togle chara draggers UI --//
        private void Update()
        {
            if (hScene == null)
            {
                return;
            }

            if (showDraggerUI.Value.IsDown())
            {
                activeDraggerUI = !activeDraggerUI;
            }

            if (showAnimationUI.Value.IsDown())
            {
                activeAnimationUI = !activeAnimationUI;
            }

            if (shouldApplyOffsets && !hScene.NowChangeAnim)
            {
                HSceneOffset.ApplyCharacterOffsets();
                SliderUI.UpdateDependentStatus();
                FixMotionList(hScene.ctrlFlag.nowAnimationInfo.fileFemale);
                FixEffectors();
                shouldApplyOffsets = false;
            }

            if (autoFinish.Value == Tools.AutoFinish.Off)
            {
                return;
            }

            if (hFlagCtrl.feel_m >= 0.98f && Tools.IsService() && autoFinish.Value != Tools.AutoFinish.InsertOnly)
            {
                // same mode as OnBody only for some reason
                var drink = hSprite.IsFinishVisible(1) && Tools.modeCtrl != 0 && !(!hSprite.IsFinishVisible(4) && hSprite.IsFinishVisible(1) && Tools.modeCtrl == 1);
                var vomit = hSprite.IsFinishVisible(3);
                // same mode as drink for some reason
                var onbody = hSprite.IsFinishVisible(4) || (hSprite.IsFinishVisible(1) && (Tools.modeCtrl == 0 || Tools.modeCtrl == 1));

                switch (autoServicePrefer.Value)
                {
                case Tools.AutoServicePrefer.Drink when drink:
                    hFlagCtrl.click = HSceneFlagCtrl.ClickKind.FinishDrink;
                    break;

                case Tools.AutoServicePrefer.Spit when vomit:
                    hFlagCtrl.click = HSceneFlagCtrl.ClickKind.FinishVomit;
                    break;

                case Tools.AutoServicePrefer.Outside when onbody:
                    hFlagCtrl.click = HSceneFlagCtrl.ClickKind.FinishOutSide;
                    break;

                case Tools.AutoServicePrefer.Random:
                    var random = new List <HSceneFlagCtrl.ClickKind>();
                    if (drink)
                    {
                        random.Add(HSceneFlagCtrl.ClickKind.FinishDrink);
                    }
                    if (vomit)
                    {
                        random.Add(HSceneFlagCtrl.ClickKind.FinishVomit);
                    }
                    if (onbody)
                    {
                        random.Add(HSceneFlagCtrl.ClickKind.FinishOutSide);
                    }

                    if (random.Count < 1)
                    {
                        break;
                    }

                    hFlagCtrl.click = random[rand.Next(random.Count)];
                    break;
                }
            }
            else if (hFlagCtrl.feel_f >= 0.98f && hFlagCtrl.feel_m >= 0.98f && Tools.IsInsert() && autoFinish.Value != Tools.AutoFinish.ServiceOnly)
            {
                var inside  = hSprite.IsFinishVisible(1);
                var outside = hSprite.IsFinishVisible(5);
                var same    = hSprite.IsFinishVisible(2);

                switch (autoInsertPrefer.Value)
                {
                case Tools.AutoInsertPrefer.Inside when inside:
                    hFlagCtrl.click = HSceneFlagCtrl.ClickKind.FinishInSide;
                    break;

                case Tools.AutoInsertPrefer.Outside when outside:
                    hFlagCtrl.click = HSceneFlagCtrl.ClickKind.FinishOutSide;
                    break;

                case Tools.AutoInsertPrefer.Same when same:
                    hFlagCtrl.click = HSceneFlagCtrl.ClickKind.FinishSame;
                    break;

                case Tools.AutoInsertPrefer.Random:
                    var random = new List <HSceneFlagCtrl.ClickKind>();
                    if (inside)
                    {
                        random.Add(HSceneFlagCtrl.ClickKind.FinishInSide);
                    }
                    if (outside)
                    {
                        random.Add(HSceneFlagCtrl.ClickKind.FinishOutSide);
                    }
                    if (same)
                    {
                        random.Add(HSceneFlagCtrl.ClickKind.FinishSame);
                    }

                    if (random.Count < 1)
                    {
                        break;
                    }

                    hFlagCtrl.click = random[rand.Next(random.Count)];
                    break;
                }
            }
        }
Пример #3
0
 public override bool IsFinishVisible(int _num)
 {
     return(_Base.IsFinishVisible(_num));
 }