modifiers.py (2928B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\behaviors\decorators\modifiers.py 2 from behaviors import status 3 from behaviors.decorators import Decorator 4 from ccpProfile import TimedFunction 5 6 class Not(Decorator): 7 8 def DoSubTaskCompleted(self, task): 9 if task.status is status.TaskSuccessStatus: 10 self.status = status.TaskFailureStatus 11 elif task.status is status.TaskFailureStatus: 12 self.status = status.TaskSuccessStatus 13 14 15 class ForceFailure(Decorator): 16 17 def DoSubTaskCompleted(self, task): 18 self.status = status.TaskFailureStatus 19 20 21 class ForceSuccess(Decorator): 22 23 def DoSubTaskCompleted(self, task): 24 self.status = status.TaskSuccessStatus 25 26 27 class Uninterruptible(Decorator): 28 29 @TimedFunction('behaviors::decorators::modifiers::Uninterruptible::OnEnter') 30 def OnEnter(self): 31 super(Uninterruptible, self).OnEnter() 32 self.status = status.TaskBlockingStatus 33 self.behaviorTree.BlockReset(self) 34 35 def OnExit(self): 36 self.behaviorTree.UnblockReset(self) 37 38 def DoSubTaskCompleted(self, task): 39 self.status = task.status 40 41 42 class Invulnerable(Decorator): 43 44 @TimedFunction('behaviors::decorators::modifiers::Invulnerable::OnEnter') 45 def OnEnter(self): 46 super(Invulnerable, self).OnEnter() 47 self.MakeSelfInvulnerable() 48 49 def MakeSelfInvulnerable(self): 50 self.context.ballpark.MakeInvulnerablePermanently(self.context.myBall.id, self.attributes.reason) 51 52 def OnExit(self): 53 self.CancelInvulnerabilityForSelf() 54 55 def CleanUp(self): 56 if not self.IsInvalid(): 57 self.CancelInvulnerabilityForSelf() 58 super(Invulnerable, self).CleanUp() 59 60 def CancelInvulnerabilityForSelf(self): 61 self.context.ballpark.CancelCurrentInvulnerability(self.context.myBall.id, self.attributes.reason) 62 63 64 class Cloaked(Decorator): 65 66 @TimedFunction('behaviors::decorators::modifiers::Cloaked::OnEnter') 67 def OnEnter(self): 68 super(Cloaked, self).OnEnter() 69 self.CloakShip() 70 71 def CloakShip(self): 72 self.context.ballpark.CloakShip(self.context.myItemId) 73 74 def OnExit(self): 75 self.UncloakShip() 76 77 def CleanUp(self): 78 if not self.IsInvalid(): 79 self.UncloakShip() 80 super(Cloaked, self).CleanUp() 81 82 def UncloakShip(self): 83 self.context.ballpark.UncloakShip(self.context.myItemId) 84 85 86 class OneShot(Decorator): 87 88 def OnEnter(self): 89 if self.GetLastBlackboardValue(self.attributes.oneShotTriggeredFlagAddress): 90 self.SetStatusToSuccess() 91 else: 92 self.set_one_shot_triggered() 93 super(OneShot, self).OnEnter() 94 95 def set_one_shot_triggered(self): 96 if not self.GetLastBlackboardValue(self.attributes.oneShotTriggeredFlagAddress): 97 self.SendBlackboardValue(self.attributes.oneShotTriggeredFlagAddress, True)