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

guardobject.py (3378B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\behaviors\trees\guardobject.py
      2 from behaviors.actions import WaitAction
      3 from behaviors.actions.blackboards import BlackboardSendMyItemIdMessageAction, BlackboardSetMessageToIntegerValueAction
      4 from behaviors.actions.guard import PlaceProximitySensor
      5 from behaviors.composites import Sequence, PrioritySelector
      6 from behaviors.decorators.modifiers import ForceFailure
      7 from brennivin.itertoolsext import Bundle
      8 from behaviors.actions.ballparks import OrbitAtDistanceAction, WarpToNewLocation
      9 from behaviors.monitors.ballparks import MonitorSpecificProximitySensor
     10 from behaviors.const.blackboardchannels import GUARD_OBJECT_ITEM_ID, GUARD_OBJECT_POSITION, GUARD_OBJECT_ORBIT_RANGE
     11 from behaviors.const.blackboardchannels import WARP_SCRAMBLED_ADDRESS
     12 from behaviors.conditions.ballparks import IsBallPresentInMyBubbleCondition
     13 from behaviors.trees.combat import COMBAT_TARGETS_SET
     14 from inventorycommon.const import categoryShip, categoryDrone, groupCapsule, categoryFighter
     15 from npcs.server.tags import DRIFTER_TAG
     16 GUARD_OBJECT_DEFAULT_CATEGORIES = [categoryShip, categoryDrone, categoryFighter]
     17 
     18 def CreateGuardObjectBehavior(validOwnerIds = (), includedCategories = GUARD_OBJECT_DEFAULT_CATEGORIES, invalidOwnerIds = None):
     19     return PrioritySelector(Bundle(name='Guard Object')).AddSubTask(Sequence(Bundle(name='Orbit Guard Object')).AddSubTask(IsBallPresentInMyBubbleCondition(Bundle(ballIdAddress=GUARD_OBJECT_ITEM_ID))).AddSubTask(OrbitAtDistanceAction(Bundle(orbitTargetAddress=GUARD_OBJECT_ITEM_ID, orbitRange=0, blocking=False, blockUntilRange=None, orbitRangeAddress=GUARD_OBJECT_ORBIT_RANGE))).AddSubTask(MonitorSpecificProximitySensor(Bundle(objectListAddress=COMBAT_TARGETS_SET, includedCategories=includedCategories, excludedGroups=[groupCapsule], proximitySensorAddress=GUARD_OBJECT_ITEM_ID, validOwnerIds=validOwnerIds, invalidOwnerIds=invalidOwnerIds))).AddSubTask(WaitAction(Bundle(name='Wait until disturbed')))).AddSubTask(WarpToNewLocation(Bundle(name='Warp to Guard Object', locationMessage=GUARD_OBJECT_POSITION, warpScrambledAddress=WARP_SCRAMBLED_ADDRESS)))
     20 
     21 
     22 def CreateGuardObjectEntityBehavior():
     23     return PrioritySelector(Bundle(name='Guard Object')).AddSubTask(Sequence(Bundle(name='Orbit Guard Object')).AddSubTask(IsBallPresentInMyBubbleCondition(Bundle(ballIdAddress=GUARD_OBJECT_ITEM_ID))).AddSubTask(OrbitAtDistanceAction(Bundle(orbitTargetAddress=GUARD_OBJECT_ITEM_ID, orbitRange=0, blocking=False, blockUntilRange=None, orbitRangeAddress=GUARD_OBJECT_ORBIT_RANGE))).AddSubTask(WaitAction(Bundle(name='Wait until disturbed')))).AddSubTask(WarpToNewLocation(Bundle(name='Warp to Guard Object', locationMessage=GUARD_OBJECT_POSITION, warpScrambledAddress=WARP_SCRAMBLED_ADDRESS)))
     24 
     25 
     26 def CreateGuardCurrentLocationBehavior(guardRange = 1000000, guardReplacementRange = 10000):
     27     return ForceFailure(Bundle(name='Guard the current location')).AddSubTask(Sequence().AddSubTask(BlackboardSendMyItemIdMessageAction(Bundle(messageAddress=GUARD_OBJECT_ITEM_ID))).AddSubTask(BlackboardSetMessageToIntegerValueAction(Bundle(messageAddress=GUARD_OBJECT_ORBIT_RANGE, value=guardRange))).AddSubTask(PlaceProximitySensor(Bundle(itemIdAddress=GUARD_OBJECT_ITEM_ID, rangeAddress=GUARD_OBJECT_ORBIT_RANGE, sensorReplacementRange=guardReplacementRange, tags={DRIFTER_TAG}))))