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