pursuit.py (2715B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\behaviors\trees\pursuit.py 2 from behaviors import composites 3 from behaviors.actions.ballparks import WarpToNewLocation 4 from behaviors.actions.blackboards import BlackboardSetMessageAsNoneAction 5 from behaviors.actions.combattargets import FindTarget 6 from behaviors.actions.timer import BlockWhileTimeout 7 from behaviors.blackboards.scopes import ScopeTypes 8 from behaviors.conditions.blackboards import BlackboardValueUpdatedRecentlyCondition, IsBlackboardValueNotNone 9 from behaviors.conditions.randomized import CachedRandomChanceCondition 10 from behaviors.const.blackboardchannels import WARP_SCRAMBLED_ADDRESS 11 from behaviors.trees.combat import GROUP_PRIMARY_TARGET, COMBAT_TARGETS_SET 12 from behaviors.trees.regroup import CreateGetBallPositionAfterWarpBehavior 13 from brennivin.itertoolsext import Bundle 14 PURSUIT_DELAY_TIMER_ADDRESS = (ScopeTypes.Item, 'PURSUIT_DELAY_TIMER') 15 PURSUIT_TARGET_ADDRESS = (ScopeTypes.Item, 'PURSUIT_TARGET') 16 PURSUIT_LOCATION_ADDRESS = (ScopeTypes.EntityGroup, 'PURSUIT_LOCATION') 17 PURSUIT_CHANCE_ADDRESS = (ScopeTypes.EntityGroup, 'PURSUIT_CHANCE') 18 19 def CreatePursuitBehavior(): 20 return composites.Sequence(Bundle(name='Enemy Pursuit root')).AddSubTask(composites.PrioritySelector(Bundle(name='do we have a usable location?')).AddSubTask(composites.Sequence().AddSubTask(BlackboardValueUpdatedRecentlyCondition(Bundle(address=PURSUIT_LOCATION_ADDRESS, timeInSeconds=10))).AddSubTask(IsBlackboardValueNotNone(Bundle(valueAddress=PURSUIT_LOCATION_ADDRESS)))).AddSubTask(composites.Sequence(Bundle(name='pick a location if appropriate?')).AddSubTask(BlackboardValueUpdatedRecentlyCondition(Bundle(address=GROUP_PRIMARY_TARGET, timeInSeconds=10))).AddSubTask(CachedRandomChanceCondition(Bundle(chance=0.5, randomValueAddress=PURSUIT_CHANCE_ADDRESS, cacheTimeInSeconds=10))).AddSubTask(BlackboardSetMessageAsNoneAction(Bundle(messageAddress=PURSUIT_TARGET_ADDRESS))).AddSubTask(FindTarget(Bundle(name='Find A Pursuit Target', selectedTargetAddress=PURSUIT_TARGET_ADDRESS, potentialTargetListAddress=COMBAT_TARGETS_SET, includedCategories=[], targetEvaluationFunction='threat', onlyCheckLocalBubble=False, primaryTargetIdAddress=COMBAT_TARGETS_SET))).AddSubTask(CreateGetBallPositionAfterWarpBehavior(ballIdAddress=PURSUIT_TARGET_ADDRESS, locationAddress=PURSUIT_LOCATION_ADDRESS)))).AddSubTask(BlockWhileTimeout(Bundle(timerAddress=PURSUIT_DELAY_TIMER_ADDRESS, timeoutSeconds=4.0))).AddSubTask(WarpToNewLocation(Bundle(locationMessage=PURSUIT_LOCATION_ADDRESS, warpScrambledAddress=WARP_SCRAMBLED_ADDRESS))).AddSubTask(BlockWhileTimeout(Bundle(timerAddress=PURSUIT_DELAY_TIMER_ADDRESS, timeoutSeconds=15.0)))