threatManagement.py (1942B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\behaviors\trees\groups\threatManagement.py 2 from behaviors.actions.combat import OwnerListFilterAction 3 from behaviors.composites import Sequence 4 from behaviors.monitors.ballparks import MonitorProximitySensorsForGroupMembers, TargetsWithOwnerEnteredBubbleMonitor 5 from behaviors.monitors.ballparks import MonitorInvulnerabilityCanceledInGroupBubbles 6 from behaviors.monitors.combat import MonitorAssistanceToGroupTargets 7 from behaviors.trees.combat import COMBAT_TARGETS_SET 8 from brennivin.itertoolsext import Bundle 9 from inventorycommon.const import categoryShip, categoryDrone, groupCapsule, categoryFighter 10 11 def CreateThreatManagementBehavior(friendlyOwnerIds = None, hostileOwnerIds = None, isAutomaticallyAggressive = False): 12 root = Sequence(Bundle(name='threat management')) 13 if friendlyOwnerIds: 14 root.AddSubTask(OwnerListFilterAction(Bundle(name='Clear out friendly targets', ownerIdSet=friendlyOwnerIds, itemIdSetAddress=COMBAT_TARGETS_SET))) 15 if hostileOwnerIds: 16 root.AddSubTask(TargetsWithOwnerEnteredBubbleMonitor(Bundle(name='Watch out for enemy owners arriving', targetSetAddress=COMBAT_TARGETS_SET, ownerIds=hostileOwnerIds))) 17 root.AddSubTask(MonitorAssistanceToGroupTargets(Bundle(name='Watch out for neutrals assisting known enemies', combatTargetsAddress=COMBAT_TARGETS_SET))) 18 root.AddSubTask(MonitorProximitySensorsForGroupMembers(Bundle(name='Watch out for hostiles entering protected airspace', objectListAddress=COMBAT_TARGETS_SET, includedCategories=[categoryShip, categoryDrone, categoryFighter], excludedGroups=[groupCapsule], validOwnerIds=None if isAutomaticallyAggressive else hostileOwnerIds, invalidOwnerIds=friendlyOwnerIds if isAutomaticallyAggressive else None))) 19 root.AddSubTask(MonitorInvulnerabilityCanceledInGroupBubbles(Bundle(targetIdListAddress=COMBAT_TARGETS_SET))) 20 return root