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; } }
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); }
public static bool ContainsSickFilterTable(Desire.ActionType source) { foreach (Desire.ActionType actionType in Desire._sickFilterTable) { if (source == actionType) { return(true); } } return(false); }
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); }