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

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