NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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