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