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

damage.py (1237B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\behaviors\monitors\damage.py
      2 import logging
      3 import dogma.attributes.health as health
      4 from ballpark.messenger.const import MESSAGE_ON_DAMAGE_CHANGED
      5 from behaviors.tasks import Task
      6 logger = logging.getLogger(__name__)
      7 
      8 class ArmorDamageThresholdMonitor(Task):
      9 
     10     def OnEnter(self):
     11         self.SubscribeItem(self.context.myItemId, MESSAGE_ON_DAMAGE_CHANGED, self._OnDamageReceived)
     12         self.SetStatusToSuccess()
     13 
     14     def CleanUp(self):
     15         if not self.IsInvalid():
     16             self.UnsubscribeItem(self.context.myItemId, MESSAGE_ON_DAMAGE_CHANGED, self._OnDamageReceived)
     17         super(ArmorDamageThresholdMonitor, self).CleanUp()
     18 
     19     def _OnDamageReceived(self, *args):
     20         if self.IsInvalid():
     21             return
     22         armorRatio = health.GetCurrentArmorRatio(self.context.dogmaLM, self.context.myItemId)
     23         if armorRatio < self.attributes.armorRatioThreshold:
     24             logger.debug('Damage received armor ratio=%s threshold=%s', armorRatio, self.attributes.armorRatioThreshold)
     25             self.SendBlackboardValue(self.attributes.thresholdReachedAddress, True)
     26             self.behaviorTree.RequestReset(requestedBy=self)