awareness.py (1461B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\behaviors\conditions\awareness.py 2 from behaviors.const.combat import THREAT_MAX_DISTANCE_FROM_GUARD_OBJECT 3 from behaviors.tasks import Task 4 from behaviors.utility.ballparks import is_ball_in_park, is_ball_in_range, is_ball_cloaked 5 from ccpProfile import TimedFunction 6 7 class AreClusterTargetsUsable(Task): 8 9 @TimedFunction('behaviors::conditions::awareness::AreClusterTargetsUsable::OnEnter') 10 def OnEnter(self): 11 self.SetStatusToFailed() 12 guard_object_id = self._get_guard_object_id() 13 if guard_object_id is None: 14 return 15 target_item_ids = self._get_cluster_targets() 16 for item_id in target_item_ids: 17 if self._is_target_valid(item_id, guard_object_id): 18 self.SetStatusToSuccess() 19 break 20 21 def _get_cluster_targets(self): 22 return self.GetLastBlackboardValue(self.attributes.clusterTargetSetAddress) or [] 23 24 def _get_guard_object_id(self): 25 return self.GetLastBlackboardValue(self.attributes.guardObjectIdAddress) 26 27 def _is_target_valid(self, item_id, guard_object_id): 28 if not is_ball_in_park(self, item_id): 29 return False 30 if not is_ball_in_range(self, item_id, guard_object_id, THREAT_MAX_DISTANCE_FROM_GUARD_OBJECT): 31 return False 32 if is_ball_cloaked(self, item_id): 33 return False 34 return True