- type: htnCompound
id: MeleeCombatCompound
branches:
- # Pickup weapon if we don't have one.
+ - tasks:
+ - !type:HTNPrimitiveTask
+ operator: !type:UtilityOperator
+ proto: NearbyMeleeTargets
+ - !type:HTNCompoundTask
+ task: BeforeMeleeAttackTargetCompound
+
+- type: htnCompound
+ id: BeforeMeleeAttackTargetCompound
+ branches:
- preconditions:
- - !type:ActiveHandComponentPrecondition
- components:
- # Just serializer things
- - type: MeleeWeapon
- damage:
- types:
- Blunt: 0
- invert: true
+ - !type:BuckledPrecondition
+ isBuckled: true
tasks:
- - !type:HTNCompoundTask
- task: PickupMeleeCompound
+ - !type:HTNPrimitiveTask
+ operator: !type:UnbuckleOperator
+ shutdownState: TaskFinished
- preconditions:
- - !type:BuckledPrecondition
- isBuckled: true
+ - !type:PulledPrecondition
+ isPulled: true
tasks:
- - !type:HTNPrimitiveTask
- operator: !type:UnbuckleOperator
- shutdownState: TaskFinished
+ - !type:HTNPrimitiveTask
+ operator: !type:UnPullOperator
+ shutdownState: TaskFinished
- preconditions:
- - !type:InContainerPrecondition
- isInContainer: true
+ - !type:InContainerPrecondition
+ isInContainer: true
tasks:
- - !type:HTNCompoundTask
- task: EscapeCompound
+ - !type:HTNCompoundTask
+ task: EscapeCompound
+ # Pickup weapon if we don't have one.
- preconditions:
- - !type:PulledPrecondition
- isPulled: true
+ - !type:ActiveHandComponentPrecondition
+ components:
+ # Just serializer things
+ - type: MeleeWeapon
+ damage:
+ types:
+ Blunt: 0
+ invert: true
tasks:
- - !type:HTNPrimitiveTask
- operator: !type:UnPullOperator
- shutdownState: TaskFinished
+ - !type:HTNCompoundTask
+ task: PickupMeleeCompound
# Melee combat (unarmed or otherwise)
- tasks:
- - !type:HTNPrimitiveTask
- operator: !type:UtilityOperator
- proto: NearbyMeleeTargets
- !type:HTNCompoundTask
task: MeleeAttackTargetCompound