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

disappear.py (2557B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\behaviors\trees\drifters\disappear.py
      2 from behaviors.composites import Sequence
      3 from behaviors.actions.ballparks import GetItemIdByTypeId, ApproachObject, GetObjectSpaceLocation
      4 from behaviors.actions.ballparks import GetRandomDeepSpacePosition, TransferToLocation
      5 from behaviors.actions.effects import PlayOneShotShipEffectAction
      6 from behaviors.actions.timer import SucceedAfterTimeoutAction
      7 from behaviors.blackboards.scopes import ScopeTypes
      8 from behaviors.decorators.modifiers import Uninterruptible, Invulnerable, Cloaked
      9 from brennivin.itertoolsext import Bundle
     10 WORMHOLE_TYPE_IDS = [35650,
     11  35651,
     12  35652,
     13  35653,
     14  35654]
     15 WORMHOLE = (ScopeTypes.EntityGroup, 'WORMHOLE')
     16 WORMHOLE_LOCATION = (ScopeTypes.EntityGroup, 'WORMHOLE_LOCATION')
     17 DISAPPEAR_WORMHOLE = (ScopeTypes.EntityGroup, 'DISAPPEAR_WORMHOLE')
     18 DISAPPEAR_DURATION_SEC = 1800
     19 CLOAK_EFFECT_DELAY_SEC = 2
     20 INVULNERABILITY_REASON = 'Hideout'
     21 WORMHOLE_EFFECT = 'effects.WormholeActivity'
     22 WORMHOLE_DURATION_MSEC = 2000
     23 
     24 def CreateDisappearBehavior():
     25 
     26     def CreateApproachWormhole():
     27         node = Sequence(Bundle(name='Approach Wormhole'))
     28         node.AddSubTask(GetItemIdByTypeId(Bundle(typeIds=WORMHOLE_TYPE_IDS, itemIdAddress=WORMHOLE)))
     29         node.AddSubTask(ApproachObject(Bundle(itemIdAddress=WORMHOLE, notifyRange=2500, approachRange=500, blocking=True)))
     30         return node
     31 
     32     def CreateHideoutAndThenReturn():
     33         return Uninterruptible().AddSubTask(Invulnerable(attributes=Bundle(reason=INVULNERABILITY_REASON)).AddSubTask(Cloaked().AddSubTask(Sequence(Bundle(name='Go Hideout, then Return')).AddSubTask(GetRandomDeepSpacePosition(Bundle(locationAddress=DISAPPEAR_WORMHOLE))).AddSubTask(PlayOneShotShipEffectAction(Bundle(effectDuration=WORMHOLE_DURATION_MSEC, effectName=WORMHOLE_EFFECT, effectTargetAddress=WORMHOLE))).AddSubTask(SucceedAfterTimeoutAction(Bundle(timeoutSeconds=CLOAK_EFFECT_DELAY_SEC))).AddSubTask(TransferToLocation(Bundle(locationAddress=DISAPPEAR_WORMHOLE))).AddSubTask(SucceedAfterTimeoutAction(Bundle(timeoutSeconds=DISAPPEAR_DURATION_SEC))).AddSubTask(GetObjectSpaceLocation(Bundle(itemIdAddress=WORMHOLE, locationAddress=WORMHOLE_LOCATION))).AddSubTask(TransferToLocation(Bundle(locationAddress=WORMHOLE_LOCATION))).AddSubTask(SucceedAfterTimeoutAction(Bundle(timeoutSeconds=CLOAK_EFFECT_DELAY_SEC))))))
     34 
     35     root = Sequence(Bundle(name='Disappear'))
     36     root.AddSubTask(CreateApproachWormhole())
     37     root.AddSubTask(CreateHideoutAndThenReturn())
     38     return root