From d1ffc69201bf7d50cbb1f740a3a8c345bc69a4ef Mon Sep 17 00:00:00 2001 From: osjarw <62134478+osjarw@users.noreply.github.com> Date: Sun, 11 Aug 2024 12:22:46 +0300 Subject: [PATCH] Reorder priorities in `MeleeCombatCompound` (#30066) Reordered MeleeCombatCompound to improve unpulling --- Resources/Prototypes/NPCs/Combat/melee.yml | 83 ++++++++++++---------- 1 file changed, 45 insertions(+), 38 deletions(-) diff --git a/Resources/Prototypes/NPCs/Combat/melee.yml b/Resources/Prototypes/NPCs/Combat/melee.yml index b0746e5679..9cbfbe7ca0 100644 --- a/Resources/Prototypes/NPCs/Combat/melee.yml +++ b/Resources/Prototypes/NPCs/Combat/melee.yml @@ -3,48 +3,55 @@ - type: htnCompound id: MeleeCombatCompound branches: - # Pickup weapon if we don't have one. - - preconditions: - - !type:ActiveHandComponentPrecondition - components: - # Just serializer things - - type: MeleeWeapon - damage: - types: - Blunt: 0 - invert: true - tasks: - - !type:HTNCompoundTask - task: PickupMeleeCompound - - - preconditions: - - !type:BuckledPrecondition - isBuckled: true - tasks: - - !type:HTNPrimitiveTask - operator: !type:UnbuckleOperator - shutdownState: TaskFinished - - - preconditions: - - !type:InContainerPrecondition - isInContainer: true - tasks: - - !type:HTNCompoundTask - task: EscapeCompound - - - preconditions: - - !type:PulledPrecondition - isPulled: true - tasks: - - !type:HTNPrimitiveTask - operator: !type:UnPullOperator - shutdownState: TaskFinished - - # Melee combat (unarmed or otherwise) - tasks: - !type:HTNPrimitiveTask operator: !type:UtilityOperator proto: NearbyMeleeTargets + - !type:HTNCompoundTask + task: BeforeMeleeAttackTargetCompound + +- type: htnCompound + id: BeforeMeleeAttackTargetCompound + branches: + - preconditions: + - !type:BuckledPrecondition + isBuckled: true + tasks: + - !type:HTNPrimitiveTask + operator: !type:UnbuckleOperator + shutdownState: TaskFinished + + - preconditions: + - !type:PulledPrecondition + isPulled: true + tasks: + - !type:HTNPrimitiveTask + operator: !type:UnPullOperator + shutdownState: TaskFinished + + - preconditions: + - !type:InContainerPrecondition + isInContainer: true + tasks: + - !type:HTNCompoundTask + task: EscapeCompound + + # Pickup weapon if we don't have one. + - preconditions: + - !type:ActiveHandComponentPrecondition + components: + # Just serializer things + - type: MeleeWeapon + damage: + types: + Blunt: 0 + invert: true + tasks: + - !type:HTNCompoundTask + task: PickupMeleeCompound + + # Melee combat (unarmed or otherwise) + - tasks: - !type:HTNCompoundTask task: MeleeAttackTargetCompound