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

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)))