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; } } }
//-- 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; } } }
public override bool IsFinishVisible(int _num) { return(_Base.IsFinishVisible(_num)); }