using BehaviorDesigner.Runtime.Tasks; using BlueWater.Npcs.Crews.Server; namespace BlueWater.BehaviorTrees.Actions { [TaskCategory("Custom/Npc/Crew/ServerCrew")] public class TakeServingItem : Conditional { private ServerCrew _serverCrew; public override void OnAwake() { _serverCrew = GetComponent(); } public override void OnStart() { if (_serverCrew.CrewInteraction != null) { _serverCrew.AIMovement.Move(_serverCrew.CrewInteraction.CenterTransform.position); } } public override TaskStatus OnUpdate() { if (_serverCrew.CurrentPickupItem != null) return TaskStatus.Success; if (_serverCrew.CrewInteraction == null || !_serverCrew.CrewInteraction.CanInteractionCrew(_serverCrew) || _serverCrew.OrderedCustomer == null || !_serverCrew.OrderedCustomer.CanInteractionCrew()) { _serverCrew.AIMovement.StopMove(); _serverCrew.ResetMission(); return TaskStatus.Failure; } if (!_serverCrew.CanInteractionPosition()) return TaskStatus.Running; _serverCrew.AIMovement.StopMove(); if (_serverCrew.CrewInteraction != null && _serverCrew.OrderedCustomer.CanInteractionCrew()) { _serverCrew.CrewInteraction.InteractionCrew(_serverCrew); return TaskStatus.Success; } _serverCrew.ResetMission(); return TaskStatus.Failure; } } }