Esempio n. 1
0
 private static void ChangeBehavior(ref Desire.ActionType type, AgentActor __instance)
 {
     if (type == Desire.ActionType.SearchH && __instance.CanMasturbation && Random.Range(0, 100) < Rate.Value)
     {
         type = Desire.ActionType.SearchMasturbation;
     }
 }
Esempio n. 2
0
        public virtual TaskStatus OnUpdate()
        {
            if (Object.op_Equality((Object)this._merchant, (Object)null))
            {
                return((TaskStatus)1);
            }
            AgentActor partner = this._merchant.Partner as AgentActor;
            bool       flag    = Object.op_Inequality((Object)partner, (Object)null);

            if (flag)
            {
                flag = Object.op_Equality((Object)partner.Partner, (Object)this._merchant);
            }
            if (flag)
            {
                Desire.ActionType mode = partner.Mode;
                switch (mode)
                {
                case Desire.ActionType.GotoLesbianSpot:
                case Desire.ActionType.EndTaskLesbianH:
                    flag = true;
                    break;

                default:
                    if (mode != Desire.ActionType.EndTaskLesbianMerchantH)
                    {
                        flag = false;
                        break;
                    }
                    goto case Desire.ActionType.GotoLesbianSpot;
                }
            }
            return(flag ? (TaskStatus)2 : (TaskStatus)1);
        }
Esempio n. 3
0
 public static bool ContainsSickFilterTable(Desire.ActionType source)
 {
     foreach (Desire.ActionType actionType in Desire._sickFilterTable)
     {
         if (source == actionType)
         {
             return(true);
         }
     }
     return(false);
 }
Esempio n. 4
0
        private void ChangeForceBehavior(AgentActor agent, Desire.ActionType actionType)
        {
            AgentActor agentActor1 = agent;
            int        num1        = -1;

            agent.PoseID = num1;
            int num2 = num1;

            agentActor1.ActionID         = num2;
            agent.AgentData.CarryingItem = (StuffItem)null;
            agent.StateType = AIProject.Definitions.State.Type.Normal;
            if (Object.op_Inequality((Object)agent.CurrentPoint, (Object)null))
            {
                agent.CurrentPoint.SetActiveMapItemObjs(true);
                agent.CurrentPoint.ReleaseSlot((Actor)agent);
                agent.CurrentPoint = (ActionPoint)null;
            }
            if (Object.op_Inequality((Object)agent.CommandPartner, (Object)null))
            {
                Actor commandPartner = agent.CommandPartner;
                switch (commandPartner)
                {
                case AgentActor _:
                    AgentActor agentActor2 = commandPartner as AgentActor;
                    agentActor2.CommandPartner = (Actor)null;
                    agentActor2.ChangeBehavior(Desire.ActionType.Normal);
                    break;

                case MerchantActor _:
                    MerchantActor merchantActor = commandPartner as MerchantActor;
                    merchantActor.CommandPartner = (Actor)null;
                    merchantActor.ChangeBehavior(merchantActor.LastNormalMode);
                    break;
                }
                agent.CommandPartner = (Actor)null;
            }
            agent.EventKey       = (AIProject.EventType) 0;
            agent.CommandPartner = (Actor)null;
            agent.ResetActionFlag();
            if (agent.Schedule.enabled)
            {
                Actor.BehaviorSchedule schedule = agent.Schedule;
                schedule.enabled = false;
                agent.Schedule   = schedule;
            }
            agent.ClearItems();
            agent.ClearParticles();
            agent.ActivateNavMeshAgent();
            agent.ActivateTransfer(true);
            agent.Animation.ResetDefaultAnimatorController();
            agent.ChangeBehavior(actionType);
        }
        public void ChangeMode(Desire.ActionType mode)
        {
            AgentBehaviorTree agentBehaviorTree;

            if (!this._behaviorTreeTable.TryGetValue(mode, out agentBehaviorTree) || Object.op_Equality((Object)this.Current, (Object)agentBehaviorTree))
            {
                return;
            }
            Debug.Log((object)string.Format("[{0}] モード変更 {1} → {2}", (object)((Object)((Component)this.SourceAgent).get_gameObject()).get_name(), (object)this.Mode, (object)mode));
            this.Mode = mode;
            this.Current?.DisableBehavior(false);
            this._current = agentBehaviorTree;
            ObservableExtensions.Subscribe <Unit>((IObservable <M0>)Observable.NextFrame((FrameCountType)0), (System.Action <M0>)(_ => this.Current.EnableBehavior()));
        }
 private void ChangeAbductMode(AgentActor agent, PlayerActor player, Desire.ActionType mode)
 {
     player.CameraControl.Mode            = CameraMode.Normal;
     player.CameraControl.OnCameraBlended = (System.Action)(() => Singleton <Manager.Map> .Instance.Player.ChaControl.visibleAll = player.CameraControl.ShotType != ShotType.PointOfView);
     agent.Animation.ResetDefaultAnimatorController();
     agent.Partner = (Actor)player;
     if (Object.op_Inequality((Object)player.Partner, (Object)null))
     {
         AgentActor partner = player.Partner as AgentActor;
         if (Object.op_Inequality((Object)partner, (Object)null))
         {
             partner.DeactivatePairing(0);
         }
     }
     player.Partner = (Actor)agent;
     player.PlayerController.ChangeState("Follow");
     ObservableExtensions.Subscribe <long>(Observable.Take <long>(Observable.SkipWhile <long>((IObservable <M0>)Observable.EveryUpdate(), (Func <M0, bool>)(_ => MapUIContainer.ChoiceUI.IsActiveControl)), 1), (System.Action <M0>)(_ => MapUIContainer.SetCommandLabelAcception(CommandLabel.AcceptionState.None)));
     agent.DestPosition = new Vector3?();
     agent.ChangeBehavior(mode);
 }
        public AgentBehaviorTree GetBehaviorTree(Desire.ActionType mode)
        {
            AgentBehaviorTree agentBehaviorTree;

            return(this._behaviorTreeTable.TryGetValue(mode, out agentBehaviorTree) ? agentBehaviorTree : (AgentBehaviorTree)null);
        }
        public virtual TaskStatus OnUpdate()
        {
            if (Object.op_Equality((Object)this._partner, (Object)null))
            {
                return((TaskStatus)1);
            }
            AgentActor agent = this.Agent;

            if (agent.LivesTalkSequence)
            {
                return((TaskStatus)3);
            }
            ChaFileGameInfo fileGameInfo  = agent.ChaControl.fileGameInfo;
            int             num1          = fileGameInfo.flavorState[4];
            int             num2          = fileGameInfo.flavorState[7];
            int             desireKey     = Desire.GetDesireKey(Desire.Type.H);
            float?          desire        = agent.GetDesire(desireKey);
            StatusProfile   statusProfile = Singleton <Resources> .Instance.StatusProfile;
            bool            flag          = num1 >= statusProfile.LesbianBorder && num2 >= statusProfile.GirlsActionBorder && (desire.HasValue && (double)desire.GetValueOrDefault() >= (double)statusProfile.LesbianBorderDesire);
            Actor           partner       = this._partner;

            if (flag)
            {
                agent.Partner   = partner;
                partner.Partner = (Actor)agent;
                agent.ChangeBehavior(Desire.ActionType.GotoLesbianSpot);
                switch (partner)
                {
                case AgentActor _:
                    AgentActor        agentActor = partner as AgentActor;
                    Desire.ActionType mode       = Desire.ActionType.GotoLesbianSpotFollow;
                    agentActor.Mode = mode;
                    agentActor.BehaviorResources.ChangeMode(mode);
                    break;

                case MerchantActor _:
                    (partner as MerchantActor).ChangeBehavior(Merchant.ActionType.GotoLesbianSpotFollow);
                    break;
                }
            }
            else
            {
                if ((double)Random.get_value() < 0.5)
                {
                    agent.ChangeBehavior(Desire.ActionType.SearchMasturbation);
                }
                else
                {
                    agent.SetDesire(desireKey, 0.0f);
                    agent.ChangeBehavior(Desire.ActionType.Normal);
                }
                switch (partner)
                {
                case AgentActor _:
                    (partner as AgentActor).ChangeBehavior(Desire.ActionType.Normal);
                    break;

                case MerchantActor _:
                    MerchantActor merchantActor = partner as MerchantActor;
                    merchantActor.ChangeBehavior(merchantActor.LastNormalMode);
                    break;
                }
            }
            agent.CommandPartner     = (Actor)null;
            agent.TargetInSightActor = (Actor)null;
            switch (partner)
            {
            case AgentActor _:
                (partner as AgentActor).CommandPartner = (Actor)null;
                break;

            case MerchantActor _:
                (partner as MerchantActor).CommandPartner = (Actor)null;
                break;
            }
            return((TaskStatus)2);
        }