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

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)