combattargets.py (2258B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\behaviors\monitors\combattargets.py 2 from ballpark.messenger.const import MESSAGE_TARGET_ADDED, MESSAGE_ON_DOGMA_ATTRIBUTE_VALUE_CHANGED 3 from behaviors.tasks import Task 4 from ccpProfile import TimedFunction 5 from dogma.const import attributeMaxRange, attributeMissileEntityVelocityMultiplier 6 BEHAVIOR_RANGE_ATTRIBUTES_FOR_RECALCULATION = [attributeMaxRange, attributeMissileEntityVelocityMultiplier] 7 8 class MonitorTargetAdded(Task): 9 10 @TimedFunction('behaviors::monitors::combattargets::MonitorTargetLockSuccess::OnEnter') 11 def OnEnter(self): 12 self.SubscribeItem(self.context.myItemId, MESSAGE_TARGET_ADDED, self._OnTargetAdded) 13 self.SetStatusToSuccess() 14 15 def CleanUp(self): 16 if not self.IsInvalid(): 17 self.UnsubscribeItem(self.context.myItemId, MESSAGE_TARGET_ADDED, self._OnTargetAdded) 18 super(MonitorTargetAdded, self).CleanUp() 19 20 @TimedFunction('behaviors::monitors::combattargets::MonitorTargetLockSuccess::_OnMaxLockedTargetsChanged') 21 def _OnTargetAdded(self, target_id): 22 if not self.IsInvalid() and self._is_my_pending_target(target_id): 23 self.behaviorTree.RequestReset(requestedBy=self) 24 25 def _is_my_pending_target(self, target_id): 26 return self.GetLastBlackboardValue(self.attributes.targetAddress) == target_id 27 28 29 class CombatRangeMonitor(Task): 30 31 def OnEnter(self): 32 self.SetStatusToSuccess() 33 self.SubscribeItem(self.context.myItemId, MESSAGE_ON_DOGMA_ATTRIBUTE_VALUE_CHANGED, self._on_dogma_attribute_value_changed) 34 35 @TimedFunction('behaviors::monitors::combattargets::CombatRangeMonitor::_on_dogma_attribute_value_changed') 36 def _on_dogma_attribute_value_changed(self, attribute_id): 37 if attribute_id in BEHAVIOR_RANGE_ATTRIBUTES_FOR_RECALCULATION: 38 self.SendBlackboardValue(self.attributes.combatRangeRecalculateAddress, None) 39 self.behaviorTree.RequestReset(requestedBy=self) 40 41 def CleanUp(self): 42 if not self.IsInvalid(): 43 self.UnsubscribeItem(self.context.myItemId, MESSAGE_ON_DOGMA_ATTRIBUTE_VALUE_CHANGED, self._on_dogma_attribute_value_changed) 44 super(CombatRangeMonitor, self).CleanUp()