using Content.Server.AI.Operators; using Content.Server.AI.Operators.Generic; using Content.Server.AI.Operators.Movement; using Content.Server.AI.WorldState; using Content.Server.AI.Utility.Considerations.Containers; using Content.Server.AI.Utility.Considerations; using Content.Server.AI.Utility.Considerations.ActionBlocker; using Content.Server.AI.WorldState.States.Movement; using Content.Server.AI.WorldState.States; namespace Content.Server.AI.Utility.Actions.Bots { public sealed class GoToPuddleAndWait : UtilityAction { public EntityUid Target { get; set; } = default!; public override void SetupOperators(Blackboard context) { MoveToEntityOperator moveOperator = new MoveToEntityOperator(Owner, Target, 0, 0); float waitTime = 3f; ActionOperators = new Queue(new AiOperator[] { moveOperator, new WaitOperator(waitTime), }); } protected override void UpdateBlackboard(Blackboard context) { base.UpdateBlackboard(context); context.GetState().SetValue(Target); context.GetState().SetValue(Target); // Can just set ourselves as entity given unarmed just inherits from meleeweapon } protected override IReadOnlyCollection> GetConsiderations(Blackboard context) { var considerationsManager = IoCManager.Resolve(); return new[] { considerationsManager.Get() .BoolCurve(context), considerationsManager.Get() .BoolCurve(context), }; } } }