Files
ss14chemcalc/Prototypes/NPCs/follow.yml
2026-01-24 16:34:15 -05:00

64 lines
2.2 KiB
YAML

# SPDX-FileCopyrightText: 2022 metalgearsloth <metalgearsloth@gmail.com>
# SPDX-FileCopyrightText: 2023 metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
#
# SPDX-License-Identifier: MIT
# There are limitations to this ATM. The pathfinder is too slow to check accessibility well
# and reachable only takes in an entity so sometimes the follow idle spot is outside of the follow range
# Follows the specified target.
- type: htnCompound
id: FollowCompound
branches:
# Head to follow target
- tasks:
- !type:HTNPrimitiveTask
preconditions:
- !type:CoordinatesNotInRangePrecondition
targetKey: FollowTarget
rangeKey: FollowRange
operator: !type:MoveToOperator
pathfindInPlanning: true
targetKey: FollowTarget
rangeKey: FollowCloseRange
removeKeyOnFinish: false
# Keep idling near follow target
- tasks:
- !type:HTNPrimitiveTask
preconditions:
- !type:KeyExistsPrecondition
key: IdleTime
- !type:CoordinatesInRangePrecondition
targetKey: FollowTarget
rangeKey: FollowRange
operator: !type:WaitOperator
key: IdleTime
# Pick a new idle spot near the follow target
- tasks:
- !type:HTNPrimitiveTask
operator: !type:PickAccessibleOperator
# originKey: FollowTarget
rangeKey: FollowCloseRange
targetCoordinates: FollowIdleTarget
- !type:HTNPrimitiveTask
operator: !type:MoveToOperator
targetKey: FollowIdleTarget
- !type:HTNPrimitiveTask
operator: !type:RandomOperator
targetKey: IdleTime
minKey: MinimumIdleTime
maxKey: MaximumIdleTime
- !type:HTNPrimitiveTask
preconditions:
- !type:KeyExistsPrecondition
key: IdleTime
- !type:CoordinatesInRangePrecondition
targetKey: FollowTarget
rangeKey: FollowRange
operator: !type:WaitOperator
key: IdleTime