Esempio n. 1
0
 public static void OnInsideFinish2(HFlag __instance)
 {
     try
     {
         if (__instance.player != null)
         {
             var heroine      = __instance.GetLeadingHeroine();
             var currentCrest = heroine.GetCurrentCrest();
             if (currentCrest == CrestType.breedgasm)
             {
                 LewdCrestXGameController.ApplyTempPreggers(heroine);
             }
         }
     }
     catch (Exception e)
     {
         UnityEngine.Debug.LogError(e);
     }
 }
Esempio n. 2
0
        private static void SpawnCrestActionPoint()
        {
            LewdCrestXPlugin.Logger.LogDebug("Spawning crest action point");

            if (_iconOff == null)
            {
                _iconOff = (LewdCrestXPlugin.Bundle.LoadAsset <Texture2D>("action_icon_crest_off") ??
                            throw new Exception("asset not found - action_icon_crest_off")).ToSprite();
                Object.DontDestroyOnLoad(_iconOff);
            }

            if (_iconOn == null)
            {
                _iconOn = (LewdCrestXPlugin.Bundle.LoadAsset <Texture2D>("action_icon_crest_on") ??
                           throw new Exception("asset not found - action_icon_crest_on")).ToSprite();
                Object.DontDestroyOnLoad(_iconOn);
            }

            var inst   = CommonLib.LoadAsset <GameObject>("map/playeractionpoint/00.unity3d", "PlayerActionPoint_05", true);
            var parent = GameObject.Find("Map/ActionPoints");

            inst.transform.SetParent(parent.transform, true);

            var pap               = inst.GetComponentInChildren <PlayerActionPoint>();
            var iconRootObject    = pap.gameObject;
            var iconRootTransform = pap.transform;

            Object.DestroyImmediate(pap, false);

            // position above the small table
            iconRootTransform.position = new Vector3(-3.1f, -0.4f, 1.85f);

            var evt          = iconRootObject.AddComponent <TriggerEnterExitEvent>();
            var animator     = iconRootObject.GetComponentInChildren <Animator>();
            var rendererIcon = iconRootObject.GetComponentInChildren <SpriteRenderer>();

            rendererIcon.sprite = _iconOff;
            var playerInRange = false;

            evt.onTriggerEnter += c =>
            {
                if (!c.CompareTag("Player"))
                {
                    return;
                }
                playerInRange = true;
                animator.Play("icon_action");
                rendererIcon.sprite = _iconOn;
                c.GetComponent <Player>().actionPointList.Add(evt);
            };
            evt.onTriggerExit += c =>
            {
                if (!c.CompareTag("Player"))
                {
                    return;
                }
                playerInRange = false;
                animator.Play("icon_stop");
                rendererIcon.sprite = _iconOff;
                c.GetComponent <Player>().actionPointList.Remove(evt);
            };

            var player = LewdCrestXGameController.GetActionScene().Player;

            evt.UpdateAsObservable()
            .Subscribe(_ =>
            {
                // Hide in H scenes and other places
#if KK
                var isVisible = Game.IsInstance() && !Game.instance.IsRegulate(true);
#else
                var isVisible = !Game.IsRegulate(true);
#endif
                if (rendererIcon.enabled != isVisible)
                {
                    rendererIcon.enabled = isVisible;
                }

                // Check if player clicked this point
                if (isVisible && playerInRange && ActionInput.isAction && !player.isActionNow)
                {
                    ClubInterface.ShowWindow = true;
                }
            })
            .AddTo(evt);
            evt.OnGUIAsObservable()
            .Subscribe(ClubInterface.OnGui)
            .AddTo(evt);
        }