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

reinforcements.py (2174B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\behaviors\trees\reinforcements.py
      2 from behaviors.actions.ballparks import WarpToNewLocation
      3 from behaviors.behaviortree import BehaviorTree
      4 from behaviors.composites import Sequence
      5 from behaviors.conditions.ballparks import IsLocationWithinWarpDistance
      6 from behaviors.conditions.blackboards import IsBlackboardValueNotNone, BlackboardValueUpdatedRecentlyCondition
      7 from behaviors.const.blackboardchannels import LAST_REINFORCEMENT_REQUEST_COORDINATE_ADDRESS, WARP_SCRAMBLED_ADDRESS
      8 from behaviors.decorators.modifiers import ForceFailure
      9 from behaviors.monitors.reinforcements import AreReinforcementsAuthorizedMonitor, AreReinforcementAvailableMonitor
     10 from behaviors.actions.reinforcements import CallInReinforcementsAction
     11 from brennivin.itertoolsext import Bundle
     12 
     13 def CreateRequestReinforcements():
     14     root = ForceFailure(Bundle(name='Reinforcements'))
     15 
     16     def CreateSequence():
     17         seq = Sequence(Bundle())
     18         seq.AddSubTask(AreReinforcementsAuthorizedMonitor(Bundle()))
     19         seq.AddSubTask(AreReinforcementAvailableMonitor(Bundle()))
     20         seq.AddSubTask(CallInReinforcementsAction(Bundle()))
     21         return seq
     22 
     23     root.AddSubTask(CreateSequence())
     24     return root
     25 
     26 
     27 def CreateReinforcementTree():
     28     tree = BehaviorTree()
     29     tree.StartRootTask(CreateRequestReinforcements())
     30     return tree
     31 
     32 
     33 def CreateReinforceLocationBehavior():
     34     seq = Sequence(Bundle(name='Reinforce Group'))
     35     seq.AddSubTask(IsBlackboardValueNotNone(Bundle(name='Do we have a location to reinforce?', valueAddress=LAST_REINFORCEMENT_REQUEST_COORDINATE_ADDRESS)))
     36     seq.AddSubTask(BlackboardValueUpdatedRecentlyCondition(Bundle(name='Posted in the last minute?', address=LAST_REINFORCEMENT_REQUEST_COORDINATE_ADDRESS, timeInSeconds=60)))
     37     seq.AddSubTask(IsLocationWithinWarpDistance(Bundle(name='Far enough to warp?', coordinateAddress=LAST_REINFORCEMENT_REQUEST_COORDINATE_ADDRESS)))
     38     seq.AddSubTask(WarpToNewLocation(Bundle(name='Warp drive active!', locationMessage=LAST_REINFORCEMENT_REQUEST_COORDINATE_ADDRESS, warpScrambledAddress=WARP_SCRAMBLED_ADDRESS)))
     39     return seq